Go to the documentation of this file.
15 #ifndef LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYINSTRINFO_H
16 #define LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYINSTRINFO_H
22 #define GET_INSTRINFO_HEADER
23 #include "WebAssemblyGenInstrInfo.inc"
25 #define GET_INSTRINFO_OPERAND_ENUM
26 #include "WebAssemblyGenInstrInfo.inc"
30 namespace WebAssembly {
36 class WebAssemblySubtarget;
51 bool KillSrc)
const override;
54 unsigned OpIdx2)
const override;
59 bool AllowModify =
false)
const override;
61 int *BytesRemoved =
nullptr)
const override;
65 int *BytesAdded =
nullptr)
const override;
WebAssemblyInstrInfo(const WebAssemblySubtarget &STI)
unsigned insertBranch(MachineBasicBlock &MBB, MachineBasicBlock *TBB, MachineBasicBlock *FBB, ArrayRef< MachineOperand > Cond, const DebugLoc &DL, int *BytesAdded=nullptr) const override
This is an optimization pass for GlobalISel generic memory operations.
MachineInstr * commuteInstructionImpl(MachineInstr &MI, bool NewMI, unsigned OpIdx1, unsigned OpIdx2) const override
void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, const DebugLoc &DL, MCRegister DestReg, MCRegister SrcReg, bool KillSrc) const override
MachineOperand class - Representation of each machine instruction operand.
bool isReallyTriviallyReMaterializable(const MachineInstr &MI, AAResults *AA) const override
Representation of each machine instruction.
bool reverseBranchCondition(SmallVectorImpl< MachineOperand > &Cond) const override
const MachineOperand & getCalleeOperand(const MachineInstr &MI) const override
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
SmallVector< MachineOperand, 4 > Cond
bool analyzeBranch(MachineBasicBlock &MBB, MachineBasicBlock *&TBB, MachineBasicBlock *&FBB, SmallVectorImpl< MachineOperand > &Cond, bool AllowModify=false) const override
MachineBasicBlock MachineBasicBlock::iterator DebugLoc DL
ArrayRef< std::pair< int, const char * > > getSerializableTargetIndices() const override
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
const WebAssemblyRegisterInfo & getRegisterInfo() const
int16_t getNamedOperandIdx(uint16_t Opcode, uint16_t NamedIndex)
unsigned removeBranch(MachineBasicBlock &MBB, int *BytesRemoved=nullptr) const override
Wrapper class representing physical registers. Should be passed by value.