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;
132 class SystemZSubtarget;
139 void expandRIPseudo(
MachineInstr &MI,
unsigned LowOpcode,
unsigned HighOpcode,
140 bool ConvertHigh)
const;
141 void expandRIEPseudo(
MachineInstr &MI,
unsigned LowOpcode,
142 unsigned LowOpcodeK,
unsigned HighOpcode)
const;
143 void expandRXYPseudo(
MachineInstr &MI,
unsigned LowOpcode,
144 unsigned HighOpcode)
const;
145 void expandLOCPseudo(
MachineInstr &MI,
unsigned LowOpcode,
146 unsigned HighOpcode)
const;
147 void expandLOCRPseudo(
MachineInstr &MI,
unsigned LowOpcode,
148 unsigned HighOpcode)
const;
149 void expandZExtPseudo(
MachineInstr &MI,
unsigned LowOpcode,
150 unsigned Size)
const;
153 const DebugLoc &DL,
unsigned DestReg,
unsigned SrcReg,
154 unsigned LowLowOpcode,
unsigned Size,
bool KillSrc)
const;
155 virtual void anchor();
170 unsigned CommuteOpIdx1,
171 unsigned CommuteOpIdx2)
const override;
180 int &FrameIndex)
const override;
181 bool isStackSlotCopy(
const MachineInstr &MI,
int &DestFrameIndex,
182 int &SrcFrameIndex)
const override;
186 bool AllowModify)
const override;
188 int *BytesRemoved =
nullptr)
const override;
192 int *BytesAdded =
nullptr)
const override;
193 bool analyzeCompare(
const MachineInstr &MI,
unsigned &SrcReg,
194 unsigned &SrcReg2,
int &
Mask,
int &
Value)
const override;
195 bool optimizeCompareInstr(
MachineInstr &CmpInstr,
unsigned SrcReg,
196 unsigned SrcReg2,
int Mask,
int Value,
199 unsigned,
unsigned,
int&,
int&,
int&)
const override;
201 const DebugLoc &DL,
unsigned DstReg,
203 unsigned FalseReg)
const override;
208 unsigned ExtraPredCycles,
211 unsigned NumCyclesT,
unsigned ExtraPredCyclesT,
213 unsigned NumCyclesF,
unsigned ExtraPredCyclesF,
220 const DebugLoc &DL,
unsigned DestReg,
unsigned SrcReg,
221 bool KillSrc)
const override;
224 unsigned SrcReg,
bool isKill,
int FrameIndex,
229 unsigned DestReg,
int FrameIdx,
244 bool expandPostRAPseudo(
MachineInstr &MBBI)
const override;
252 unsigned getInstSizeInBytes(
const MachineInstr &MI)
const override;
263 unsigned &LoadOpcode,
unsigned &StoreOpcode)
const;
270 unsigned getOpcodeForOffset(
unsigned Opcode, int64_t
Offset)
const;
274 unsigned getLoadAndTest(
unsigned Opcode)
const;
279 bool isRxSBGMask(uint64_t Mask,
unsigned BitSize,
280 unsigned &Start,
unsigned &
End)
const;
285 unsigned getFusedCompare(
unsigned Opcode,
291 unsigned getLoadAndTrap(
unsigned Opcode)
const;
297 unsigned Reg, uint64_t Value)
const;
const SystemZRegisterInfo & getRegisterInfo() const
struct fuzzer::@269 Flags
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
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)
static const unsigned End
TargetRegisterInfo base class - We assume that the target defines a static array of TargetRegisterDes...
static unsigned getCompareZeroCCMask(unsigned int Flags)
Iterator for intrusive lists based on ilist_node.
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.
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.