aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2004-08-01 03:23:34 +0000
committerChris Lattner <sabre@nondot.org>2004-08-01 03:23:34 +0000
commitbbe664c8fb35a436313614a73f44d1801e31137d (patch)
treee0af2e8b9aca2414fd1c256e2f73ec943bd84dec
parentbb737edcc330c10bdd30a4ff50025bc82dab2aac (diff)
downloadexternal_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.td38
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