diff options
author | Chris Lattner <sabre@nondot.org> | 2004-08-01 03:23:34 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2004-08-01 03:23:34 +0000 |
commit | bbe664c8fb35a436313614a73f44d1801e31137d (patch) | |
tree | e0af2e8b9aca2414fd1c256e2f73ec943bd84dec | |
parent | bb737edcc330c10bdd30a4ff50025bc82dab2aac (diff) | |
download | external_llvm-bbe664c8fb35a436313614a73f44d1801e31137d.zip external_llvm-bbe664c8fb35a436313614a73f44d1801e31137d.tar.gz external_llvm-bbe664c8fb35a436313614a73f44d1801e31137d.tar.bz2 |
Move the 'Expander' node to later in the file, with the other experimental
stuff. The pattern becomes a list, add some stuff, add some comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15378 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/Target.td | 38 |
1 files changed, 23 insertions, 15 deletions
diff --git a/lib/Target/Target.td b/lib/Target/Target.td index 2aaa6f7..0ee5c37 100644 --- a/lib/Target/Target.td +++ b/lib/Target/Target.td @@ -1,4 +1,4 @@ -//===- Target.td - Target Independent TableGen interface --------*- C++ -*-===// +//===- Target.td - Target Independent TableGen interface ---*- tablegen -*-===// // // The LLVM Compiler Infrastructure // @@ -105,13 +105,22 @@ class RegisterClass<ValueType regType, int alignment, list<Register> regList> { // Instruction set description - These classes correspond to the C++ classes in // the Target/TargetInstrInfo.h file. // - class Instruction { - string Name; // The opcode string for this instruction + string Name; // The opcode string for this instruction string Namespace = ""; - list<Register> Uses = []; // Default to using no non-operand registers - list<Register> Defs = []; // Default to modifying no non-operand registers + dag OperandList; // An dag containing the MI operand list. + string AsmString; // The .s format to print the instruction with. + + // Pattern - Set to the DAG pattern for this instruction, if we know of one, + // otherwise, uninitialized. + list<dag> Pattern; + + // The follow state will eventually be inferred automatically from the + // instruction pattern. + + list<Register> Uses = []; // Default to using no non-operand registers + list<Register> Defs = []; // Default to modifying no non-operand registers // These bits capture information about the high-level semantics of the // instruction. @@ -121,15 +130,6 @@ class Instruction { bit isCall = 0; // Is this instruction a call instruction? bit isTwoAddress = 0; // Is this a two address instruction? bit isTerminator = 0; // Is this part of the terminator for a basic block? - - // Pattern - Set to the DAG pattern for this instruction, if we know of one, - // otherwise, uninitialized. - dag Pattern; -} - -class Expander<dag pattern, list<dag> result> { - dag Pattern = pattern; - list<dag> Result = result; } @@ -166,8 +166,16 @@ class Target { //===----------------------------------------------------------------------===// -// DAG node definitions used by the instruction selector... +// DAG node definitions used by the instruction selector. // +// 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 |