From: Misha Brukman Date: Sat, 24 May 2003 00:08:39 +0000 (+0000) Subject: NOP instructions are pseudo-instructions. We should not have them explicitly in X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=00b05bd703b0d50133aecf4ce9f48e96d14504b3;p=oota-llvm.git NOP instructions are pseudo-instructions. We should not have them explicitly in our representation, since they are usually special cases of already-existing instructions. This abstracts away methods that let a pass create and verify a NOP instruction, without relying on a `NOP' enum to be in existence in the target's instruction info descriptor. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6319 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/Target/TargetInstrInfo.h b/include/llvm/Target/TargetInstrInfo.h index 4663cfd46bc..30843ea287e 100644 --- a/include/llvm/Target/TargetInstrInfo.h +++ b/include/llvm/Target/TargetInstrInfo.h @@ -273,6 +273,20 @@ public: return true; // safe but very conservative } + + /// createNOPinstr - returns the target's implementation of NOP, which is + /// usually a pseudo-instruction, implemented by a degenerate version of + /// another instruction, e.g. X86: xchg ax, ax; SparcV9: sethi g0, 0 + /// + virtual MachineInstr* createNOPinstr() const = 0; + + /// isNOPinstr - since we no longer have a special NOP opcode, we need to know + /// if a given instruction is interpreted as an `official' NOP instr, i.e., + /// there may be more than one way to `do nothing' but only one canonical + /// way to slack off. + /// + virtual bool isNOPinstr(const MachineInstr &MI) const = 0; + //------------------------------------------------------------------------- // Code generation support for creating individual machine instructions //