14 #ifndef LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZINSTRINFO_H 15 #define LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZINSTRINFO_H 26 #define GET_INSTRINFO_HEADER 27 #include "SystemZGenInstrInfo.inc" 31 class SystemZSubtarget;
123 : Type(type), CCValid(ccValid), CCMask(ccMask), Target(target) {}
151 void expandRIPseudo(
MachineInstr &MI,
unsigned LowOpcode,
unsigned HighOpcode,
152 bool ConvertHigh)
const;
153 void expandRIEPseudo(
MachineInstr &MI,
unsigned LowOpcode,
154 unsigned LowOpcodeK,
unsigned HighOpcode)
const;
155 void expandRXYPseudo(
MachineInstr &MI,
unsigned LowOpcode,
156 unsigned HighOpcode)
const;
157 void expandLOCPseudo(
MachineInstr &MI,
unsigned LowOpcode,
158 unsigned HighOpcode)
const;
159 void expandLOCRPseudo(
MachineInstr &MI,
unsigned LowOpcode,
160 unsigned HighOpcode)
const;
161 void expandZExtPseudo(
MachineInstr &MI,
unsigned LowOpcode,
162 unsigned Size)
const;
167 const DebugLoc &DL,
unsigned DestReg,
unsigned SrcReg,
168 unsigned LowLowOpcode,
unsigned Size,
bool KillSrc,
169 bool UndefSrc)
const;
171 virtual void anchor();
186 unsigned CommuteOpIdx1,
187 unsigned CommuteOpIdx2)
const override;
196 int &FrameIndex)
const override;
197 bool isStackSlotCopy(
const MachineInstr &MI,
int &DestFrameIndex,
198 int &SrcFrameIndex)
const override;
202 bool AllowModify)
const override;
204 int *BytesRemoved =
nullptr)
const override;
208 int *BytesAdded =
nullptr)
const override;
209 bool analyzeCompare(
const MachineInstr &MI,
unsigned &SrcReg,
210 unsigned &SrcReg2,
int &
Mask,
int &
Value)
const override;
212 unsigned,
unsigned,
int&,
int&,
int&)
const override;
214 const DebugLoc &DL,
unsigned DstReg,
216 unsigned FalseReg)
const override;
219 bool isPredicable(
const MachineInstr &MI)
const override;
221 unsigned ExtraPredCycles,
224 unsigned NumCyclesT,
unsigned ExtraPredCyclesT,
226 unsigned NumCyclesF,
unsigned ExtraPredCyclesF,
233 const DebugLoc &DL,
unsigned DestReg,
unsigned SrcReg,
234 bool KillSrc)
const override;
237 unsigned SrcReg,
bool isKill,
int FrameIndex,
242 unsigned DestReg,
int FrameIdx,
257 bool expandPostRAPseudo(
MachineInstr &MBBI)
const override;
265 unsigned getInstSizeInBytes(
const MachineInstr &MI)
const override;
276 unsigned &LoadOpcode,
unsigned &StoreOpcode)
const;
283 unsigned getOpcodeForOffset(
unsigned Opcode, int64_t
Offset)
const;
287 unsigned getLoadAndTest(
unsigned Opcode)
const;
292 bool isRxSBGMask(uint64_t Mask,
unsigned BitSize,
293 unsigned &Start,
unsigned &End)
const;
298 unsigned getFusedCompare(
unsigned Opcode,
304 unsigned getLoadAndTrap(
unsigned Opcode)
const;
310 unsigned Reg, uint64_t Value)
const;
323 #endif // LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZINSTRINFO_H const SystemZRegisterInfo & getRegisterInfo() const
This class represents lattice values for constants.
unsigned const TargetRegisterInfo * TRI
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
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
BasicBlockListType::iterator iterator
unsigned const MachineRegisterInfo * MRI
The instances of the Type class are immutable: once they are created, they are never changed...
static unsigned getAccessSize(unsigned int Flags)
MachineInstrBuilder & UseMI
static void expandLoadStackGuard(MachineInstrBuilder &MIB, const TargetInstrInfo &TII)
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.
MachineInstrBuilder MachineInstrBuilder & DefMI
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.
std::underlying_type< E >::type Mask()
Get a bitmask with 1s in all places up to the high-order bit of E's largest value.