Pull DAG ISel generation nodes out of the PowerPC backend to where they
can be used by other targets. For those targets that want to use it,
have at. :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23680 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/Target.td b/lib/Target/Target.td
index 6eae93a..4e36223 100644
--- a/lib/Target/Target.td
+++ b/lib/Target/Target.td
@@ -241,94 +241,7 @@
list<AsmWriter> AssemblyWriters = [DefaultAsmWriter];
}
-
//===----------------------------------------------------------------------===//
-// DAG node definitions used by the instruction selector.
+// Pull in the common support for DAG isel generation
//
-// NOTE: all of this is a work-in-progress and should be ignored for now.
-//
-/*
-class Expander<dag pattern, list<dag> result> {
- dag Pattern = pattern;
- list<dag> Result = result;
-}
-
-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
-def DNVT_arg1 : DagNodeValType; // Tree node returns same type as Arg1
-def DNVT_ptr : DagNodeValType; // The target pointer type
-def DNVT_i8 : DagNodeValType; // Always have an i8 value
-
-class DagNode<DagNodeValType ret, list<DagNodeValType> args> {
- DagNodeValType RetType = ret;
- list<DagNodeValType> ArgTypes = args;
- string EnumName = ?;
-}
-
-// BuiltinDagNodes are built into the instruction selector and correspond to
-// enum values.
-class BuiltinDagNode<DagNodeValType Ret, list<DagNodeValType> Args,
- string Ename> : DagNode<Ret, Args> {
- let EnumName = Ename;
-}
-
-// Magic nodes...
-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">;
-def frameidx : BuiltinDagNode<DNVT_ptr, [], "FrameIndex">;
-def basicblock : BuiltinDagNode<DNVT_ptr, [], "BasicBlock">;
-
-// Arithmetic...
-def plus : BuiltinDagNode<DNVT_arg0, [DNVT_arg1, DNVT_arg0], "Plus">;
-def minus : BuiltinDagNode<DNVT_arg0, [DNVT_arg1, DNVT_arg0], "Minus">;
-def times : BuiltinDagNode<DNVT_arg0, [DNVT_arg1, DNVT_arg0], "Times">;
-def sdiv : BuiltinDagNode<DNVT_arg0, [DNVT_arg1, DNVT_arg0], "SDiv">;
-def udiv : BuiltinDagNode<DNVT_arg0, [DNVT_arg1, DNVT_arg0], "UDiv">;
-def srem : BuiltinDagNode<DNVT_arg0, [DNVT_arg1, DNVT_arg0], "SRem">;
-def urem : BuiltinDagNode<DNVT_arg0, [DNVT_arg1, DNVT_arg0], "URem">;
-def and : BuiltinDagNode<DNVT_arg0, [DNVT_arg1, DNVT_arg0], "And">;
-def or : BuiltinDagNode<DNVT_arg0, [DNVT_arg1, DNVT_arg0], "Or">;
-def xor : BuiltinDagNode<DNVT_arg0, [DNVT_arg1, DNVT_arg0], "Xor">;
-
-// Comparisons...
-def seteq : BuiltinDagNode<DNVT_i8 , [DNVT_arg1, DNVT_arg0], "SetEQ">;
-def setne : BuiltinDagNode<DNVT_i8 , [DNVT_arg1, DNVT_arg0], "SetNE">;
-def setlt : BuiltinDagNode<DNVT_i8 , [DNVT_arg1, DNVT_arg0], "SetLT">;
-def setle : BuiltinDagNode<DNVT_i8 , [DNVT_arg1, DNVT_arg0], "SetLE">;
-def setgt : BuiltinDagNode<DNVT_i8 , [DNVT_arg1, DNVT_arg0], "SetGT">;
-def setge : BuiltinDagNode<DNVT_i8 , [DNVT_arg1, DNVT_arg0], "SetGE">;
-
-def load : BuiltinDagNode<DNVT_val, [DNVT_ptr], "Load">;
-//def store : BuiltinDagNode<DNVT_Void, [DNVT_ptr, DNVT_val]>;
-
-// Other...
-def ret : BuiltinDagNode<DNVT_void, [DNVT_val], "Ret">;
-def retvoid : BuiltinDagNode<DNVT_void, [], "RetVoid">;
-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...
-//
-class Nonterminal<dag pattern> {
- dag Pattern = pattern;
- bit BuiltIn = 0;
-}
-
-*/
+include "../TargetSelectionDAG.td"