summaryrefslogtreecommitdiffstats
path: root/llvm/utils/TableGen
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@intel.com>2019-03-05 19:18:16 +0000
committerCraig Topper <craig.topper@intel.com>2019-03-05 19:18:16 +0000
commit57fd733140f6b90f395aec654f8dc69cb0e2e233 (patch)
tree20ac1d38fe1a4f440818f8a391386fceb35fd263 /llvm/utils/TableGen
parent7c03c58af62944cbc4f84142a066672d3b863673 (diff)
downloadbcm5719-llvm-57fd733140f6b90f395aec654f8dc69cb0e2e233.tar.gz
bcm5719-llvm-57fd733140f6b90f395aec654f8dc69cb0e2e233.zip
Revert r355224 "[TableGen][SelectionDAG][X86] Add specific isel matchers for immAllZerosV/immAllOnesV. Remove bitcasts from X86 patterns that are no longer necessary."
This caused the first matcher in the isel table for many targets to Opc_Scope instead of Opc_SwitchOpcode. This leads to a significant increase in isel match failures. llvm-svn: 355433
Diffstat (limited to 'llvm/utils/TableGen')
-rw-r--r--llvm/utils/TableGen/CodeGenDAGPatterns.cpp16
-rw-r--r--llvm/utils/TableGen/DAGISelMatcher.cpp10
-rw-r--r--llvm/utils/TableGen/DAGISelMatcher.h34
-rw-r--r--llvm/utils/TableGen/DAGISelMatcherEmitter.cpp10
-rw-r--r--llvm/utils/TableGen/DAGISelMatcherGen.cpp5
5 files changed, 1 insertions, 74 deletions
diff --git a/llvm/utils/TableGen/CodeGenDAGPatterns.cpp b/llvm/utils/TableGen/CodeGenDAGPatterns.cpp
index 0b1687d3e92..19a7874ee1f 100644
--- a/llvm/utils/TableGen/CodeGenDAGPatterns.cpp
+++ b/llvm/utils/TableGen/CodeGenDAGPatterns.cpp
@@ -1281,17 +1281,6 @@ std::string TreePredicateFn::getCodeToRunOnSDNode() const {
// PatternToMatch implementation
//
-static bool isImmAllOnesAllZerosMatch(const TreePatternNode *P) {
- if (!P->isLeaf())
- return false;
- DefInit *DI = dyn_cast<DefInit>(P->getLeafValue());
- if (!DI)
- return false;
-
- Record *R = DI->getDef();
- return R->getName() == "immAllOnesV" || R->getName() == "immAllZerosV";
-}
-
/// getPatternSize - Return the 'size' of this pattern. We want to match large
/// patterns before small ones. This is used to determine the size of a
/// pattern.
@@ -1331,8 +1320,6 @@ static unsigned getPatternSize(const TreePatternNode *P,
Size += 5; // Matches a ConstantSDNode (+3) and a specific value (+2).
else if (Child->getComplexPatternInfo(CGP))
Size += getPatternSize(Child, CGP);
- else if (isImmAllOnesAllZerosMatch(Child))
- Size += 4; // Matches a build_vector(+3) and a predicate (+1).
else if (!Child->getPredicateCalls().empty())
++Size;
}
@@ -2139,8 +2126,7 @@ static TypeSetByHwMode getImplicitType(Record *R, unsigned ResNo,
}
if (R->getName() == "node" || R->getName() == "srcvalue" ||
- R->getName() == "zero_reg" || R->getName() == "immAllOnesV" ||
- R->getName() == "immAllZerosV") {
+ R->getName() == "zero_reg") {
// Placeholder.
return TypeSetByHwMode(); // Unknown.
}
diff --git a/llvm/utils/TableGen/DAGISelMatcher.cpp b/llvm/utils/TableGen/DAGISelMatcher.cpp
index 0c45ff1353c..92b4c4222c3 100644
--- a/llvm/utils/TableGen/DAGISelMatcher.cpp
+++ b/llvm/utils/TableGen/DAGISelMatcher.cpp
@@ -237,16 +237,6 @@ void CheckFoldableChainNodeMatcher::printImpl(raw_ostream &OS,
OS.indent(indent) << "CheckFoldableChainNode\n";
}
-void CheckImmAllOnesVMatcher::printImpl(raw_ostream &OS,
- unsigned indent) const {
- OS.indent(indent) << "CheckAllOnesV\n";
-}
-
-void CheckImmAllZerosVMatcher::printImpl(raw_ostream &OS,
- unsigned indent) const {
- OS.indent(indent) << "CheckAllZerosV\n";
-}
-
void EmitIntegerMatcher::printImpl(raw_ostream &OS, unsigned indent) const {
OS.indent(indent) << "EmitInteger " << Val << " VT=" << getEnumName(VT)
<< '\n';
diff --git a/llvm/utils/TableGen/DAGISelMatcher.h b/llvm/utils/TableGen/DAGISelMatcher.h
index 24932e64cb4..9c45a3a0de7 100644
--- a/llvm/utils/TableGen/DAGISelMatcher.h
+++ b/llvm/utils/TableGen/DAGISelMatcher.h
@@ -71,8 +71,6 @@ public:
CheckComplexPat,
CheckAndImm,
CheckOrImm,
- CheckImmAllOnesV,
- CheckImmAllZerosV,
CheckFoldableChainNode,
// Node creation/emisssion.
@@ -128,8 +126,6 @@ public:
case CheckValueType:
case CheckAndImm:
case CheckOrImm:
- case CheckImmAllOnesV:
- case CheckImmAllZerosV:
case CheckFoldableChainNode:
return true;
}
@@ -757,36 +753,6 @@ private:
}
};
-/// CheckImmAllOnesVMatcher - This check if the current node is an build vector
-/// of all ones.
-class CheckImmAllOnesVMatcher : public Matcher {
-public:
- CheckImmAllOnesVMatcher() : Matcher(CheckImmAllOnesV) {}
-
- static bool classof(const Matcher *N) {
- return N->getKind() == CheckImmAllOnesV;
- }
-
-private:
- void printImpl(raw_ostream &OS, unsigned indent) const override;
- bool isEqualImpl(const Matcher *M) const override { return true; }
-};
-
-/// CheckImmAllZerosVMatcher - This check if the current node is an build vector
-/// of all zeros.
-class CheckImmAllZerosVMatcher : public Matcher {
-public:
- CheckImmAllZerosVMatcher() : Matcher(CheckImmAllZerosV) {}
-
- static bool classof(const Matcher *N) {
- return N->getKind() == CheckImmAllZerosV;
- }
-
-private:
- void printImpl(raw_ostream &OS, unsigned indent) const override;
- bool isEqualImpl(const Matcher *M) const override { return true; }
-};
-
/// CheckFoldableChainNodeMatcher - This checks to see if the current node
/// (which defines a chain operand) is safe to fold into a larger pattern.
class CheckFoldableChainNodeMatcher : public Matcher {
diff --git a/llvm/utils/TableGen/DAGISelMatcherEmitter.cpp b/llvm/utils/TableGen/DAGISelMatcherEmitter.cpp
index cecbc6cccdf..16daeb52065 100644
--- a/llvm/utils/TableGen/DAGISelMatcherEmitter.cpp
+++ b/llvm/utils/TableGen/DAGISelMatcherEmitter.cpp
@@ -601,14 +601,6 @@ EmitMatcher(const Matcher *N, unsigned Indent, unsigned CurrentIdx,
OS << "OPC_CheckFoldableChainNode,\n";
return 1;
- case Matcher::CheckImmAllOnesV:
- OS << "OPC_CheckImmAllOnesV,\n";
- return 1;
-
- case Matcher::CheckImmAllZerosV:
- OS << "OPC_CheckImmAllZerosV,\n";
- return 1;
-
case Matcher::EmitInteger: {
int64_t Val = cast<EmitIntegerMatcher>(N)->getValue();
OS << "OPC_EmitInteger, "
@@ -1015,8 +1007,6 @@ static StringRef getOpcodeString(Matcher::KindTy Kind) {
case Matcher::CheckOrImm: return "OPC_CheckOrImm"; break;
case Matcher::CheckFoldableChainNode:
return "OPC_CheckFoldableChainNode"; break;
- case Matcher::CheckImmAllOnesV: return "OPC_CheckImmAllOnesV"; break;
- case Matcher::CheckImmAllZerosV: return "OPC_CheckImmAllZerosV"; break;
case Matcher::EmitInteger: return "OPC_EmitInteger"; break;
case Matcher::EmitStringInteger: return "OPC_EmitStringInteger"; break;
case Matcher::EmitRegister: return "OPC_EmitRegister"; break;
diff --git a/llvm/utils/TableGen/DAGISelMatcherGen.cpp b/llvm/utils/TableGen/DAGISelMatcherGen.cpp
index ee5e864b6d8..1a0490507de 100644
--- a/llvm/utils/TableGen/DAGISelMatcherGen.cpp
+++ b/llvm/utils/TableGen/DAGISelMatcherGen.cpp
@@ -277,11 +277,6 @@ void MatcherGen::EmitLeafMatchCode(const TreePatternNode *N) {
return;
}
- if (LeafRec->getName() == "immAllOnesV")
- return AddMatcher(new CheckImmAllOnesVMatcher());
- if (LeafRec->getName() == "immAllZerosV")
- return AddMatcher(new CheckImmAllZerosVMatcher());
-
errs() << "Unknown leaf kind: " << *N << "\n";
abort();
}
OpenPOWER on IntegriCloud