mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-19 03:24:09 +00:00
finally remove the immAllOnesV_bc/immAllZerosV_bc patterns
and those derived from them. These are obnoxious because they were written as: PatLeaf<(bitconvert). Not having an argument was foiling adding better type checking for operand count matching up with what was required (in this case, bitconvert always requires an operand!) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99759 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -492,22 +492,15 @@ def vtFP : PatLeaf<(vt), [{ return N->getVT().isFloatingPoint(); }]>;
|
|||||||
def immAllOnesV: PatLeaf<(build_vector), [{
|
def immAllOnesV: PatLeaf<(build_vector), [{
|
||||||
return ISD::isBuildVectorAllOnes(N);
|
return ISD::isBuildVectorAllOnes(N);
|
||||||
}]>;
|
}]>;
|
||||||
def immAllOnesV_bc: PatLeaf<(bitconvert), [{
|
|
||||||
return ISD::isBuildVectorAllOnes(N);
|
|
||||||
}]>;
|
|
||||||
def immAllZerosV: PatLeaf<(build_vector), [{
|
def immAllZerosV: PatLeaf<(build_vector), [{
|
||||||
return ISD::isBuildVectorAllZeros(N);
|
return ISD::isBuildVectorAllZeros(N);
|
||||||
}]>;
|
}]>;
|
||||||
def immAllZerosV_bc: PatLeaf<(bitconvert), [{
|
|
||||||
return ISD::isBuildVectorAllZeros(N);
|
|
||||||
}]>;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Other helper fragments.
|
// Other helper fragments.
|
||||||
def not : PatFrag<(ops node:$in), (xor node:$in, -1)>;
|
def not : PatFrag<(ops node:$in), (xor node:$in, -1)>;
|
||||||
def vnot : PatFrag<(ops node:$in), (xor node:$in, immAllOnesV)>;
|
def vnot : PatFrag<(ops node:$in), (xor node:$in, immAllOnesV)>;
|
||||||
def vnot_conv : PatFrag<(ops node:$in), (xor node:$in, immAllOnesV_bc)>;
|
|
||||||
def ineg : PatFrag<(ops node:$in), (sub 0, node:$in)>;
|
def ineg : PatFrag<(ops node:$in), (sub 0, node:$in)>;
|
||||||
|
|
||||||
// load fragments.
|
// load fragments.
|
||||||
|
@ -1809,7 +1809,7 @@ MorphNode(SDNode *Node, unsigned TargetOpc, SDVTList VTList,
|
|||||||
// It is possible we're using MorphNodeTo to replace a node with no
|
// It is possible we're using MorphNodeTo to replace a node with no
|
||||||
// normal results with one that has a normal result (or we could be
|
// normal results with one that has a normal result (or we could be
|
||||||
// adding a chain) and the input could have flags and chains as well.
|
// adding a chain) and the input could have flags and chains as well.
|
||||||
// In this case we need to shifting the operands down.
|
// In this case we need to shift the operands down.
|
||||||
// FIXME: This is a horrible hack and broken in obscure cases, no worse
|
// FIXME: This is a horrible hack and broken in obscure cases, no worse
|
||||||
// than the old isel though.
|
// than the old isel though.
|
||||||
int OldFlagResultNo = -1, OldChainResultNo = -1;
|
int OldFlagResultNo = -1, OldChainResultNo = -1;
|
||||||
|
@ -1604,7 +1604,6 @@ static bool SimplifyTree(TreePatternNode *&N) {
|
|||||||
// If we have a bitconvert with a resolved type and if the source and
|
// If we have a bitconvert with a resolved type and if the source and
|
||||||
// destination types are the same, then the bitconvert is useless, remove it.
|
// destination types are the same, then the bitconvert is useless, remove it.
|
||||||
if (N->getOperator()->getName() == "bitconvert" &&
|
if (N->getOperator()->getName() == "bitconvert" &&
|
||||||
N->getNumChildren() > 0 && // FIXME
|
|
||||||
N->getExtType(0).isConcrete() &&
|
N->getExtType(0).isConcrete() &&
|
||||||
N->getExtType(0) == N->getChild(0)->getExtType(0) &&
|
N->getExtType(0) == N->getChild(0)->getExtType(0) &&
|
||||||
N->getName().empty()) {
|
N->getName().empty()) {
|
||||||
|
Reference in New Issue
Block a user