From 434f0e3548ef346ddce6214eb7aba6f363bcc704 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Tue, 22 Jul 2014 02:32:12 +0000 Subject: [PATCH] Revert of r213521. This change introduced a non-hermetic test (depending on a file not in the test/ area). Backing out now so that this test isn't part of the 3.5 branch. Original commit message: "TableGen: Allow AddedComplexity values to be negative [...]" git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@213596 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/TableGen/NegativeAddedComplexity.ll | 41 ------------------------ utils/TableGen/CodeGenDAGPatterns.cpp | 2 +- utils/TableGen/CodeGenDAGPatterns.h | 8 ++--- utils/TableGen/DAGISelEmitter.cpp | 4 +-- 4 files changed, 7 insertions(+), 48 deletions(-) delete mode 100644 test/TableGen/NegativeAddedComplexity.ll diff --git a/test/TableGen/NegativeAddedComplexity.ll b/test/TableGen/NegativeAddedComplexity.ll deleted file mode 100644 index 54c52ab3b64..00000000000 --- a/test/TableGen/NegativeAddedComplexity.ll +++ /dev/null @@ -1,41 +0,0 @@ -// RUN: llvm-tblgen -I../../include -gen-dag-isel %s | FileCheck %s -// XFAIL: vg_leak - -include "llvm/Target/Target.td" - -// Make sure the higher complexity pattern comes first -// CHECK: TARGET_VAL(::ADD0) -// CHECK: Complexity = {{[^-]}} -// Make sure the ADD1 pattern has a negative complexity -// CHECK: TARGET_VAL(::ADD1) -// CHECK: Complexity = -{{[0-9]+}} - -def TestRC : RegisterClass<"TEST", [i32], 32, (add)>; - -def TestInstrInfo : InstrInfo; - -def Test : Target { - let InstructionSet = TestInstrInfo; -} - -def ADD0 : Instruction { - let OutOperandList = (outs TestRC:$dst); - let InOperandList = (ins TestRC:$src0, TestRC:$src1); -} - -def ADD1 : Instruction { - let OutOperandList = (outs TestRC:$dst); - let InOperandList = (ins TestRC:$src0, TestRC:$src1); -} - -def : Pat < - (add i32:$src0, i32:$src1), - (ADD1 $src0, $src1) -> { - let AddedComplexity = -1000; -} - -def : Pat < - (add i32:$src0, i32:$src1), - (ADD0 $src0, $src1) ->; diff --git a/utils/TableGen/CodeGenDAGPatterns.cpp b/utils/TableGen/CodeGenDAGPatterns.cpp index d195ba823b5..2602bbcf6f6 100644 --- a/utils/TableGen/CodeGenDAGPatterns.cpp +++ b/utils/TableGen/CodeGenDAGPatterns.cpp @@ -771,7 +771,7 @@ static unsigned getPatternSize(const TreePatternNode *P, /// Compute the complexity metric for the input pattern. This roughly /// corresponds to the number of nodes that are covered. -int PatternToMatch:: +unsigned PatternToMatch:: getPatternComplexity(const CodeGenDAGPatterns &CGP) const { return getPatternSize(getSrcPattern(), CGP) + getAddedComplexity(); } diff --git a/utils/TableGen/CodeGenDAGPatterns.h b/utils/TableGen/CodeGenDAGPatterns.h index ef6c787c3e0..fb30cdd9485 100644 --- a/utils/TableGen/CodeGenDAGPatterns.h +++ b/utils/TableGen/CodeGenDAGPatterns.h @@ -667,7 +667,7 @@ public: PatternToMatch(Record *srcrecord, ListInit *preds, TreePatternNode *src, TreePatternNode *dst, const std::vector &dstregs, - int complexity, unsigned uid) + unsigned complexity, unsigned uid) : SrcRecord(srcrecord), Predicates(preds), SrcPattern(src), DstPattern(dst), Dstregs(dstregs), AddedComplexity(complexity), ID(uid) {} @@ -676,7 +676,7 @@ public: TreePatternNode *SrcPattern; // Source pattern to match. TreePatternNode *DstPattern; // Resulting pattern. std::vector Dstregs; // Physical register defs being matched. - int AddedComplexity; // Add to matching pattern complexity. + unsigned AddedComplexity; // Add to matching pattern complexity. unsigned ID; // Unique ID for the record. Record *getSrcRecord() const { return SrcRecord; } @@ -684,13 +684,13 @@ public: TreePatternNode *getSrcPattern() const { return SrcPattern; } TreePatternNode *getDstPattern() const { return DstPattern; } const std::vector &getDstRegs() const { return Dstregs; } - int getAddedComplexity() const { return AddedComplexity; } + unsigned getAddedComplexity() const { return AddedComplexity; } std::string getPredicateCheck() const; /// Compute the complexity metric for the input pattern. This roughly /// corresponds to the number of nodes that are covered. - int getPatternComplexity(const CodeGenDAGPatterns &CGP) const; + unsigned getPatternComplexity(const CodeGenDAGPatterns &CGP) const; }; class CodeGenDAGPatterns { diff --git a/utils/TableGen/DAGISelEmitter.cpp b/utils/TableGen/DAGISelEmitter.cpp index e2e6ab19cba..82682cd5a5a 100644 --- a/utils/TableGen/DAGISelEmitter.cpp +++ b/utils/TableGen/DAGISelEmitter.cpp @@ -94,8 +94,8 @@ struct PatternSortingPredicate { // Otherwise, if the patterns might both match, sort based on complexity, // which means that we prefer to match patterns that cover more nodes in the // input over nodes that cover fewer. - int LHSSize = LHS->getPatternComplexity(CGP); - int RHSSize = RHS->getPatternComplexity(CGP); + unsigned LHSSize = LHS->getPatternComplexity(CGP); + unsigned RHSSize = RHS->getPatternComplexity(CGP); if (LHSSize > RHSSize) return true; // LHS -> bigger -> less cost if (LHSSize < RHSSize) return false;