[llvm-commits] CVS: llvm/lib/Target/Target.td TargetSelectionDAG.td
Evan Cheng
evan.cheng at apple.com
Wed Dec 14 14:03:10 PST 2005
Changes in directory llvm/lib/Target:
Target.td updated: 1.64 -> 1.65
TargetSelectionDAG.td updated: 1.23 -> 1.24
---
Log message:
Added support to specify predicates.
---
Diffs of the changes: (+17 -2)
Target.td | 14 ++++++++++++++
TargetSelectionDAG.td | 5 +++--
2 files changed, 17 insertions(+), 2 deletions(-)
Index: llvm/lib/Target/Target.td
diff -u llvm/lib/Target/Target.td:1.64 llvm/lib/Target/Target.td:1.65
--- llvm/lib/Target/Target.td:1.64 Sun Dec 4 02:13:17 2005
+++ llvm/lib/Target/Target.td Wed Dec 14 16:02:59 2005
@@ -127,6 +127,7 @@
//
include "../TargetSchedule.td"
+class Predicate; // Forward def
//===----------------------------------------------------------------------===//
// Instruction set description - These classes correspond to the C++ classes in
@@ -149,6 +150,10 @@
list<Register> Uses = []; // Default to using no non-operand registers
list<Register> Defs = []; // Default to modifying no non-operand registers
+ // Predicates - List of predicates which will be turned into isel matching
+ // code.
+ list<Predicate> Predicates = [];
+
// These bits capture information about the high-level semantics of the
// instruction.
bit isReturn = 0; // Is this instruction a return instruction?
@@ -168,6 +173,15 @@
InstrItinClass Itinerary; // Execution steps used for scheduling.
}
+/// Predicates - These are extra conditionals which are turned into instruction
+/// selector matching code. Currently each predicate is just a string.
+class Predicate<string cond> {
+ string CondString = cond;
+}
+
+class Requires<list<Predicate> preds> {
+ list<Predicate> Predicates = preds;
+}
/// ops definition - This is just a simple marker used to identify the operands
/// list for an instruction. This should be used like this:
Index: llvm/lib/Target/TargetSelectionDAG.td
diff -u llvm/lib/Target/TargetSelectionDAG.td:1.23 llvm/lib/Target/TargetSelectionDAG.td:1.24
--- llvm/lib/Target/TargetSelectionDAG.td:1.23 Wed Dec 14 13:40:54 2005
+++ llvm/lib/Target/TargetSelectionDAG.td Wed Dec 14 16:02:59 2005
@@ -382,8 +382,9 @@
//
class Pattern<dag patternToMatch, list<dag> resultInstrs> {
- dag PatternToMatch = patternToMatch;
- list<dag> ResultInstrs = resultInstrs;
+ dag PatternToMatch = patternToMatch;
+ list<dag> ResultInstrs = resultInstrs;
+ list<Predicate> Predicates = []; // See class Instruction in Target.td.
}
// Pat - A simple (but common) form of a pattern, which produces a simple result
More information about the llvm-commits
mailing list