From 250f26f06627a1b76ac31ea736141c88600d6eaf Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 15 Aug 2003 04:35:14 +0000 Subject: [PATCH] Add a bunch of new node types, including a new Void dummy register class llvm-svn: 7870 --- lib/Target/Target.td | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/Target/Target.td b/lib/Target/Target.td index b55f174314f..fa040efb8ac 100644 --- a/lib/Target/Target.td +++ b/lib/Target/Target.td @@ -86,6 +86,10 @@ class RegisterClass 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 Args, } // Magic nodes... -def set : DagNode; +def Void : RegisterClass { let isDummyClass = 1; } +def set : DagNode; +def chain : BuiltinDagNode; +def blockchain : BuiltinDagNode; +def ChainExpander : Expander<(chain Void, Void), []>; +def BlockChainExpander : Expander<(blockchain Void, Void), []>; + // Terminals... def imm : BuiltinDagNode; @@ -214,6 +226,9 @@ def br : BuiltinDagNode; def brcond : BuiltinDagNode; +def unspec1 : BuiltinDagNode; +def unspec2 : BuiltinDagNode; + //===----------------------------------------------------------------------===// // DAG nonterminals definitions used by the instruction selector... //