[llvm-commits] CVS: llvm/lib/Target/Target.td

Chris Lattner lattner at cs.uiuc.edu
Thu Aug 14 23:36:01 PDT 2003


Changes in directory llvm/lib/Target:

Target.td updated: 1.22 -> 1.23

---
Log message:

Add a bunch of new node types, including a new Void dummy register class


---
Diffs of the changes:

Index: llvm/lib/Target/Target.td
diff -u llvm/lib/Target/Target.td:1.22 llvm/lib/Target/Target.td:1.23
--- llvm/lib/Target/Target.td:1.22	Mon Aug 11 23:28:21 2003
+++ llvm/lib/Target/Target.td	Thu Aug 14 23:35:14 2003
@@ -86,6 +86,10 @@
   // Methods - This member can be used to insert arbitrary code into a generated
   // register class.   The normal usage of this is to overload virtual methods.
   code Methods = [{}];
+
+  // isDummyClass - If this is set to true, this register class is not really
+  // part of the target, it is just used for other purposes.
+  bit isDummyClass = 0;
 }
 
 
@@ -156,6 +160,7 @@
 // DAG node definitions used by the instruction selector...
 //
 class DagNodeValType;
+def DNVT_any   : DagNodeValType;  // No constraint on tree node
 def DNVT_void  : DagNodeValType;  // Tree node always returns void
 def DNVT_val   : DagNodeValType;  // A non-void type
 def DNVT_arg0  : DagNodeValType;  // Tree node returns same type as Arg0
@@ -177,7 +182,14 @@
 }
 
 // Magic nodes...
-def set     : DagNode<DNVT_void, [DNVT_val, DNVT_arg0]>;
+def Void       : RegisterClass<isVoid,0,[]> { let isDummyClass = 1; }
+def set        : DagNode<DNVT_void, [DNVT_val, DNVT_arg0]>;
+def chain      : BuiltinDagNode<DNVT_void, [DNVT_void, DNVT_void], "ChainNode">;
+def blockchain : BuiltinDagNode<DNVT_void, [DNVT_void, DNVT_void],
+                                "BlockChainNode">;
+def ChainExpander      : Expander<(chain Void, Void), []>;
+def BlockChainExpander : Expander<(blockchain Void, Void), []>;
+
 
 // Terminals...
 def imm        : BuiltinDagNode<DNVT_val, [], "Constant">;
@@ -213,6 +225,9 @@
 def br      : BuiltinDagNode<DNVT_void, [DNVT_ptr], "Br">;
 def brcond  : BuiltinDagNode<DNVT_void, [DNVT_i8, DNVT_ptr, DNVT_ptr],
                              "BrCond">;
+
+def unspec1 : BuiltinDagNode<DNVT_any , [DNVT_val], "Unspec1">;
+def unspec2 : BuiltinDagNode<DNVT_any , [DNVT_val, DNVT_val], "Unspec2">;
 
 //===----------------------------------------------------------------------===//
 // DAG nonterminals definitions used by the instruction selector...





More information about the llvm-commits mailing list