diff options
author | Chris Lattner <sabre@nondot.org> | 2008-01-07 03:13:06 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2008-01-07 03:13:06 +0000 |
commit | 0c2a4f39ad5cdb32a2c4e20f787798d8af645393 (patch) | |
tree | bc7819e296dc7afa567f6fc31691d31f16381d48 /include | |
parent | 99aa33745d9f0a255da9e56315993e68997e1e21 (diff) | |
download | external_llvm-0c2a4f39ad5cdb32a2c4e20f787798d8af645393.zip external_llvm-0c2a4f39ad5cdb32a2c4e20f787798d8af645393.tar.gz external_llvm-0c2a4f39ad5cdb32a2c4e20f787798d8af645393.tar.bz2 |
Move a bunch more accessors from TargetInstrInfo to TargetInstrDescriptor
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45680 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r-- | include/llvm/Target/TargetInstrInfo.h | 105 |
1 files changed, 49 insertions, 56 deletions
diff --git a/include/llvm/Target/TargetInstrInfo.h b/include/llvm/Target/TargetInstrInfo.h index d8aff40..1046e98 100644 --- a/include/llvm/Target/TargetInstrInfo.h +++ b/include/llvm/Target/TargetInstrInfo.h @@ -169,8 +169,8 @@ public: class TargetInstrDescriptor { public: unsigned short Opcode; // The opcode. - unsigned short numOperands; // Num of args (may be more if variable_ops). - unsigned short numDefs; // Num of args that are definitions. + unsigned short NumOperands; // Num of args (may be more if variable_ops). + unsigned short NumDefs; // Num of args that are definitions. const char * Name; // Assembly language mnemonic for the opcode. unsigned SchedClass; // enum identifying instr sched class unsigned Flags; // flags identifying machine instr class @@ -183,9 +183,9 @@ public: /// it is set. Returns -1 if it is not set. int getOperandConstraint(unsigned OpNum, TOI::OperandConstraint Constraint) const { - assert((OpNum < numOperands || (Flags & M_VARIABLE_OPS)) && + assert((OpNum < NumOperands || hasVariableOperands()) && "Invalid operand # of TargetInstrInfo"); - if (OpNum < numOperands && + if (OpNum < NumOperands && (OpInfo[OpNum].Constraints & (1 << Constraint))) { unsigned Pos = 16 + Constraint * 4; return (int)(OpInfo[OpNum].Constraints >> Pos) & 0xf; @@ -197,18 +197,50 @@ public: /// dest operand. Returns -1 if there isn't one. int findTiedToSrcOperand(unsigned OpNum) const; - bool isCall() const { - return Flags & M_CALL_FLAG; + const char *getName() const { + return Name; } - bool isBranch() const { - return Flags & M_BRANCH_FLAG; + unsigned getNumOperands() const { + return NumOperands; + } + + unsigned getNumDefs() const { + return NumDefs; + } + + bool hasVariableOperands() const { + return Flags & M_VARIABLE_OPS; + } + + bool hasOptionalDef() const { + return Flags & M_HAS_OPTIONAL_DEF; + } + + const unsigned *getImplicitUses() const { + return ImplicitUses; + } + + const unsigned *getImplicitDefs() const { + return ImplicitDefs; + } + + bool isReturn() const { + return Flags & M_RET_FLAG; + } + + bool isCall() const { + return Flags & M_CALL_FLAG; } bool isTerminator() const { return Flags & M_TERMINATOR_FLAG; } + bool isBranch() const { + return Flags & M_BRANCH_FLAG; + } + bool isIndirectBranch() const { return Flags & M_INDIRECT_FLAG; } @@ -221,7 +253,16 @@ public: return Flags & M_NOT_DUPLICABLE; } + bool isCommutableInstr() const { + return Flags & M_COMMUTABLE; + } + /// usesCustomDAGSchedInsertionHook - Return true if this instruction requires + /// custom insertion support when the DAG scheduler is inserting it into a + /// machine basic block. + bool usesCustomDAGSchedInsertionHook() const { + return Flags & M_USES_CUSTOM_DAG_SCHED_INSERTION; + } /// isSimpleLoad - Return true for instructions that are simple loads from /// memory. This should only be set on instructions that load a value from @@ -293,54 +334,6 @@ public: return desc[Opcode]; } - const char *getName(unsigned Opcode) const { - return get(Opcode).Name; - } - - int getNumOperands(unsigned Opcode) const { - return get(Opcode).numOperands; - } - - int getNumDefs(unsigned Opcode) const { - return get(Opcode).numDefs; - } - - const unsigned *getImplicitUses(unsigned Opcode) const { - return get(Opcode).ImplicitUses; - } - - const unsigned *getImplicitDefs(unsigned Opcode) const { - return get(Opcode).ImplicitDefs; - } - - - // - // Query instruction class flags according to the machine-independent - // flags listed above. - // - bool isReturn(unsigned Opcode) const { - return get(Opcode).Flags & M_RET_FLAG; - } - - bool isCommutableInstr(unsigned Opcode) const { - return get(Opcode).Flags & M_COMMUTABLE; - } - - /// usesCustomDAGSchedInsertionHook - Return true if this instruction requires - /// custom insertion support when the DAG scheduler is inserting it into a - /// machine basic block. - bool usesCustomDAGSchedInsertionHook(unsigned Opcode) const { - return get(Opcode).Flags & M_USES_CUSTOM_DAG_SCHED_INSERTION; - } - - bool hasVariableOperands(unsigned Opcode) const { - return get(Opcode).Flags & M_VARIABLE_OPS; - } - - bool hasOptionalDef(unsigned Opcode) const { - return get(Opcode).Flags & M_HAS_OPTIONAL_DEF; - } - /// isTriviallyReMaterializable - Return true if the instruction is trivially /// rematerializable, meaning it has no side effects and requires no operands /// that aren't always available. |