14 #ifndef LLVM_TARGET_SYSTEMZINSTRINFO_H
15 #define LLVM_TARGET_SYSTEMZINSTRINFO_H
21 #define GET_INSTRINFO_HEADER
22 #include "SystemZGenInstrInfo.inc"
26 class SystemZTargetMachine;
119 void expandRIPseudo(
MachineInstr *MI,
unsigned LowOpcode,
120 unsigned HighOpcode,
bool ConvertHigh)
const;
121 void expandRIEPseudo(
MachineInstr *MI,
unsigned LowOpcode,
122 unsigned LowOpcodeK,
unsigned HighOpcode)
const;
123 void expandRXYPseudo(
MachineInstr *MI,
unsigned LowOpcode,
124 unsigned HighOpcode)
const;
125 void expandZExtPseudo(
MachineInstr *MI,
unsigned LowOpcode,
126 unsigned Size)
const;
128 DebugLoc DL,
unsigned DestReg,
unsigned SrcReg,
129 unsigned LowLowOpcode,
unsigned Size,
bool KillSrc)
const;
130 virtual void anchor();
136 virtual unsigned isLoadFromStackSlot(
const MachineInstr *MI,
138 virtual unsigned isStoreToStackSlot(
const MachineInstr *MI,
140 virtual bool isStackSlotCopy(
const MachineInstr *MI,
int &DestFrameIndex,
152 bool analyzeCompare(
const MachineInstr *MI,
unsigned &SrcReg,
153 unsigned &SrcReg2,
int &Mask,
int &
Value)
const
155 bool optimizeCompareInstr(
MachineInstr *CmpInstr,
unsigned SrcReg,
156 unsigned SrcReg2,
int Mask,
int Value,
160 unsigned ExtraPredCycles,
165 unsigned ExtraPredCyclesT,
168 unsigned ExtraPredCyclesF,
177 unsigned DestReg,
unsigned SrcReg,
182 unsigned SrcReg,
bool isKill,
int FrameIndex,
188 unsigned DestReg,
int FrameIdx,
198 int FrameIndex)
const;
213 uint64_t getInstSizeInBytes(
const MachineInstr *MI)
const;
224 unsigned &LoadOpcode,
unsigned &StoreOpcode)
const;
231 unsigned getOpcodeForOffset(
unsigned Opcode, int64_t Offset)
const;
235 unsigned getLoadAndTest(
unsigned Opcode)
const;
240 bool isRxSBGMask(uint64_t Mask,
unsigned BitSize,
241 unsigned &Start,
unsigned &End)
const;
246 unsigned getCompareAndBranch(
unsigned Opcode,
253 unsigned Reg, uint64_t Value)
const;
const SystemZRegisterInfo & getRegisterInfo() const
Branch(BranchType type, unsigned ccValid, unsigned ccMask, const MachineOperand *target)
const MachineOperand * Target
bundle_iterator< MachineInstr, instr_iterator > iterator
static unsigned getAccessSize(unsigned int Flags)
static unsigned getCompareZeroCCMask(unsigned int Flags)
static unsigned getCCValues(unsigned int Flags)
LLVM Value Representation.
BasicBlockListType::iterator iterator
const MCRegisterInfo & MRI