From bbe664c8fb35a436313614a73f44d1801e31137d Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 1 Aug 2004 03:23:34 +0000 Subject: [PATCH 1/1] 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 --- lib/Target/Target.td | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/lib/Target/Target.td b/lib/Target/Target.td index 2aaa6f75d9d..0ee5c37f81d 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 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 Uses = []; // Default to using no non-operand registers - list 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 Pattern; + + // The follow state will eventually be inferred automatically from the + // instruction pattern. + + list Uses = []; // Default to using no non-operand registers + list 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 result> { - dag Pattern = pattern; - list 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 result> { + dag Pattern = pattern; + list Result = result; +} + class DagNodeValType; def DNVT_any : DagNodeValType; // No constraint on tree node def DNVT_void : DagNodeValType; // Tree node always returns void -- 2.34.1