diff options
| author | Craig Topper <craig.topper@intel.com> | 2019-03-05 19:18:16 +0000 |
|---|---|---|
| committer | Craig Topper <craig.topper@intel.com> | 2019-03-05 19:18:16 +0000 |
| commit | 57fd733140f6b90f395aec654f8dc69cb0e2e233 (patch) | |
| tree | 20ac1d38fe1a4f440818f8a391386fceb35fd263 /llvm/utils/TableGen | |
| parent | 7c03c58af62944cbc4f84142a066672d3b863673 (diff) | |
| download | bcm5719-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.cpp | 16 | ||||
| -rw-r--r-- | llvm/utils/TableGen/DAGISelMatcher.cpp | 10 | ||||
| -rw-r--r-- | llvm/utils/TableGen/DAGISelMatcher.h | 34 | ||||
| -rw-r--r-- | llvm/utils/TableGen/DAGISelMatcherEmitter.cpp | 10 | ||||
| -rw-r--r-- | llvm/utils/TableGen/DAGISelMatcherGen.cpp | 5 |
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(); } |

