diff options
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/Target.td | 17 | 
1 files changed, 16 insertions, 1 deletions
| diff --git a/llvm/lib/Target/Target.td b/llvm/lib/Target/Target.td index b55f174314f..fa040efb8ac 100644 --- a/llvm/lib/Target/Target.td +++ b/llvm/lib/Target/Target.td @@ -86,6 +86,10 @@ class RegisterClass<ValueType regType, int alignment, list<Register> regList> {    // 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 @@ class Target {  // 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 @@ class BuiltinDagNode<DagNodeValType Ret, list<DagNodeValType> Args,  }  // 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">; @@ -214,6 +226,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...  // | 

