From: Chris Lattner Date: Sun, 3 Aug 2003 18:18:31 +0000 (+0000) Subject: Remove the RegisterInfo class in favor of a general Target class. Add instrinfo... X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=a5100d91efaf7a0ccf87c1ef50ccf674bee7f236;p=oota-llvm.git Remove the RegisterInfo class in favor of a general Target class. Add instrinfo stuff git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7521 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/Target.td b/lib/Target/Target.td index 5ab6ed12ee7..948b2cec9a8 100644 --- a/lib/Target/Target.td +++ b/lib/Target/Target.td @@ -75,30 +75,10 @@ class RegisterClass regList> { code Methods = [{}]; } -// RegisterInfo - This class should only be instantiated once to provide -// parameters which are global to the the target machine, such as callee safed -// registers. -// -class RegisterInfo { - // ClassName - Specify the name of the class that should be generated by the - // register info emitter. This class may be further subclasses by custom - // target code to implement virtual methods as necessary. Targets must - // specify a value for this. - // - string ClassName; - - // CalleeSavedRegisters - As you might guess, this is a list of the callee - // saved registers for a target. - list CalleeSavedRegisters = []; - - // PointerType - Specify the value type to be used to represent pointers in - // this target. Typically this is an i32 or i64 type. - ValueType PointerType; -} - //===----------------------------------------------------------------------===// -// Instruction set description - +// Instruction set description - These classes correspond to the C++ classes in +// the Target/TargetInstrInfo.h file. // class Instruction { @@ -115,4 +95,35 @@ 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? + + // If the target wants to associate some target-specific information with each + // instruction, it should provide these two lists to indicate how to assemble + // the target specific information into the 32 bits available. + list TargetInfoFields = []; + list TargetInfoPositions = []; +} + +// InstrInfo - This class should only be instantiated once to provide parameters +// which are global to the the target machine. +// +class InstrInfo { + Instruction PHIInst; + Instruction NOOPInst; +} + + +//===----------------------------------------------------------------------===// +// Target - This class contains the "global" target information +// +class Target { + // CalleeSavedRegisters - As you might guess, this is a list of the callee + // saved registers for a target. + list CalleeSavedRegisters = []; + + // PointerType - Specify the value type to be used to represent pointers in + // this target. Typically this is an i32 or i64 type. + ValueType PointerType; + + // InstructionSet - Instruction set description for this target + InstrInfo InstructionSet; }