14 #ifndef LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZINSTRINFO_H
15 #define LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZINSTRINFO_H
21 #define GET_INSTRINFO_HEADER
22 #include "SystemZGenInstrInfo.inc"
26 class SystemZTargetMachine;
116 class SystemZSubtarget;
123 void expandRIPseudo(
MachineInstr *MI,
unsigned LowOpcode,
124 unsigned HighOpcode,
bool ConvertHigh)
const;
125 void expandRIEPseudo(
MachineInstr *MI,
unsigned LowOpcode,
126 unsigned LowOpcodeK,
unsigned HighOpcode)
const;
127 void expandRXYPseudo(
MachineInstr *MI,
unsigned LowOpcode,
128 unsigned HighOpcode)
const;
129 void expandZExtPseudo(
MachineInstr *MI,
unsigned LowOpcode,
130 unsigned Size)
const;
132 DebugLoc DL,
unsigned DestReg,
unsigned SrcReg,
133 unsigned LowLowOpcode,
unsigned Size,
bool KillSrc)
const;
134 virtual void anchor();
143 int &FrameIndex)
const override;
144 bool isStackSlotCopy(
const MachineInstr *MI,
int &DestFrameIndex,
145 int &SrcFrameIndex)
const override;
149 bool AllowModify)
const override;
154 bool analyzeCompare(
const MachineInstr *MI,
unsigned &SrcReg,
155 unsigned &SrcReg2,
int &Mask,
int &
Value)
const override;
156 bool optimizeCompareInstr(
MachineInstr *CmpInstr,
unsigned SrcReg,
157 unsigned SrcReg2,
int Mask,
int Value,
161 unsigned ExtraPredCycles,
164 unsigned NumCyclesT,
unsigned ExtraPredCyclesT,
166 unsigned NumCyclesF,
unsigned ExtraPredCyclesF,
171 DebugLoc DL,
unsigned DestReg,
unsigned SrcReg,
172 bool KillSrc)
const override;
175 unsigned SrcReg,
bool isKill,
int FrameIndex,
180 unsigned DestReg,
int FrameIdx,
189 int FrameIndex)
const override;
202 uint64_t getInstSizeInBytes(
const MachineInstr *MI)
const;
213 unsigned &LoadOpcode,
unsigned &StoreOpcode)
const;
220 unsigned getOpcodeForOffset(
unsigned Opcode, int64_t Offset)
const;
224 unsigned getLoadAndTest(
unsigned Opcode)
const;
229 bool isRxSBGMask(uint64_t Mask,
unsigned BitSize,
230 unsigned &Start,
unsigned &End)
const;
235 unsigned getCompareAndBranch(
unsigned Opcode,
242 unsigned Reg, uint64_t Value)
const;
const SystemZRegisterInfo & getRegisterInfo() const
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
Reg
All possible values of the reg field in the ModR/M byte.
Branch(BranchType type, unsigned ccValid, unsigned ccMask, const MachineOperand *target)
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory)...
const MachineOperand * Target
bundle_iterator< MachineInstr, instr_iterator > iterator
The instances of the Type class are immutable: once they are created, they are never changed...
static unsigned getAccessSize(unsigned int Flags)
bundle_iterator - MachineBasicBlock iterator that automatically skips over MIs that are inside bundle...
TargetRegisterInfo base class - We assume that the target defines a static array of TargetRegisterDes...
static unsigned getCompareZeroCCMask(unsigned int Flags)
MachineOperand class - Representation of each machine instruction operand.
Target - Wrapper for Target specific information.
MachineRegisterInfo - Keep track of information for virtual and physical registers, including vreg register classes, use/def chains for registers, etc.
Representation of each machine instruction.
static unsigned getCCValues(unsigned int Flags)
LLVM Value Representation.
BasicBlockListType::iterator iterator