aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2005-10-14 04:53:53 +0000
committerChris Lattner <sabre@nondot.org>2005-10-14 04:53:53 +0000
commit03ebd802c7916e126c718ff49b4ebbe449a28c0a (patch)
tree9b5169a78bae93725b439fd510ef8c98d9cbc8aa
parent0ee7cff4fb9fceb88778f2f44876ce9716479d7f (diff)
downloadexternal_llvm-03ebd802c7916e126c718ff49b4ebbe449a28c0a.zip
external_llvm-03ebd802c7916e126c718ff49b4ebbe449a28c0a.tar.gz
external_llvm-03ebd802c7916e126c718ff49b4ebbe449a28c0a.tar.bz2
Add basic support for recognizing a new SDTCisOpSmallerThanOp type constraint
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23725 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--utils/TableGen/DAGISelEmitter.cpp8
-rw-r--r--utils/TableGen/DAGISelEmitter.h6
2 files changed, 13 insertions, 1 deletions
diff --git a/utils/TableGen/DAGISelEmitter.cpp b/utils/TableGen/DAGISelEmitter.cpp
index c67d010..8cbed47 100644
--- a/utils/TableGen/DAGISelEmitter.cpp
+++ b/utils/TableGen/DAGISelEmitter.cpp
@@ -40,6 +40,10 @@ SDTypeConstraint::SDTypeConstraint(Record *R) {
ConstraintType = SDTCisVTSmallerThanOp;
x.SDTCisVTSmallerThanOp_Info.OtherOperandNum =
R->getValueAsInt("OtherOperandNum");
+ } else if (R->isSubClassOf("SDTCisOpSmallerThanOp")) {
+ ConstraintType = SDTCisOpSmallerThanOp;
+ x.SDTCisOpSmallerThanOp_Info.BigOperandNum =
+ R->getValueAsInt("BigOperandNum");
} else {
std::cerr << "Unrecognized SDTypeConstraint '" << R->getName() << "'!\n";
exit(1);
@@ -157,6 +161,10 @@ bool SDTypeConstraint::ApplyTypeConstraint(TreePatternNode *N,
OtherNode->UpdateNodeType(MVT::Other, TP); // Throw an error.
return false;
}
+ case SDTCisOpSmallerThanOp: {
+ // TODO
+ return false;
+ }
}
return false;
}
diff --git a/utils/TableGen/DAGISelEmitter.h b/utils/TableGen/DAGISelEmitter.h
index 464edfd..4b2a2fb 100644
--- a/utils/TableGen/DAGISelEmitter.h
+++ b/utils/TableGen/DAGISelEmitter.h
@@ -34,7 +34,8 @@ namespace llvm {
unsigned OperandNo; // The operand # this constraint applies to.
enum {
- SDTCisVT, SDTCisInt, SDTCisFP, SDTCisSameAs, SDTCisVTSmallerThanOp
+ SDTCisVT, SDTCisInt, SDTCisFP, SDTCisSameAs, SDTCisVTSmallerThanOp,
+ SDTCisOpSmallerThanOp
} ConstraintType;
union { // The discriminated union.
@@ -47,6 +48,9 @@ namespace llvm {
struct {
unsigned OtherOperandNum;
} SDTCisVTSmallerThanOp_Info;
+ struct {
+ unsigned BigOperandNum;
+ } SDTCisOpSmallerThanOp_Info;
} x;
/// ApplyTypeConstraint - Given a node in a pattern, apply this type