LLVM: lib/Target/LoongArch/LoongArchInstrInfo.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13#ifndef LLVM_LIB_TARGET_LOONGARCH_LOONGARCHINSTRINFO_H
14#define LLVM_LIB_TARGET_LOONGARCH_LOONGARCHINSTRINFO_H
15
18
19#define GET_INSTRINFO_HEADER
20#include "LoongArchGenInstrInfo.inc"
21
22namespace llvm {
23
24class LoongArchSubtarget;
25
28
29public:
31
33
35
38 bool KillSrc, bool RenamableDest = false,
39 bool RenamableSrc = false) const override;
40
49
50
54
56
58
60
64 bool AllowModify) const override;
65
67 int64_t BrOffset) const override;
68
71
75
77 int *BytesRemoved = nullptr) const override;
78
82 int *BytesAdded = nullptr) const override;
83
87 int64_t BrOffset, RegScavenger *RS) const override;
88
89 bool
91
92 std::pair<unsigned, unsigned>
94
97
100
106
107protected:
109};
110
112
113
115
116
127}
128
129}
130#endif
MachineBasicBlock MachineBasicBlock::iterator DebugLoc DL
MachineBasicBlock MachineBasicBlock::iterator MBBI
const SmallVectorImpl< MachineOperand > MachineBasicBlock * TBB
const SmallVectorImpl< MachineOperand > & Cond
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, const DebugLoc &DL, Register DstReg, Register SrcReg, bool KillSrc, bool RenamableDest=false, bool RenamableSrc=false) const override
ArrayRef< std::pair< unsigned, const char * > > getSerializableBitmaskMachineOperandTargetFlags() const override
const LoongArchSubtarget & STI
Definition LoongArchInstrInfo.h:108
bool reverseBranchCondition(SmallVectorImpl< MachineOperand > &Cond) const override
bool isSafeToMove(const MachineInstr &MI, const MachineBasicBlock *MBB, const MachineFunction &MF) const override
bool analyzeBranch(MachineBasicBlock &MBB, MachineBasicBlock *&TBB, MachineBasicBlock *&FBB, SmallVectorImpl< MachineOperand > &Cond, bool AllowModify) const override
const LoongArchRegisterInfo & getRegisterInfo() const
Definition LoongArchInstrInfo.h:32
void storeRegToStackSlot(MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, Register SrcReg, bool IsKill, int FrameIndex, const TargetRegisterClass *RC, Register VReg, MachineInstr::MIFlag Flags=MachineInstr::NoFlags) const override
void loadRegFromStackSlot(MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, Register DstReg, int FrameIndex, const TargetRegisterClass *RC, Register VReg, MachineInstr::MIFlag Flags=MachineInstr::NoFlags) const override
std::pair< unsigned, unsigned > decomposeMachineOperandsTargetFlags(unsigned TF) const override
bool isAsCheapAsAMove(const MachineInstr &MI) const override
MCInst getNop() const override
LoongArchInstrInfo(const LoongArchSubtarget &STI)
ArrayRef< std::pair< unsigned, const char * > > getSerializableDirectMachineOperandTargetFlags() const override
unsigned removeBranch(MachineBasicBlock &MBB, int *BytesRemoved=nullptr) const override
void movImm(MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, const DebugLoc &DL, Register DstReg, uint64_t Val, MachineInstr::MIFlag Flag=MachineInstr::NoFlags) const
unsigned insertBranch(MachineBasicBlock &MBB, MachineBasicBlock *TBB, MachineBasicBlock *FBB, ArrayRef< MachineOperand > Cond, const DebugLoc &dl, int *BytesAdded=nullptr) const override
void insertIndirectBranch(MachineBasicBlock &MBB, MachineBasicBlock &NewDestBB, MachineBasicBlock &RestoreBB, const DebugLoc &DL, int64_t BrOffset, RegScavenger *RS) const override
bool isSchedulingBoundary(const MachineInstr &MI, const MachineBasicBlock *MBB, const MachineFunction &MF) const override
bool isBranchOffsetInRange(unsigned BranchOpc, int64_t BrOffset) const override
bool canFoldIntoAddrMode(const MachineInstr &MemI, Register Reg, const MachineInstr &AddrI, ExtAddrMode &AM) const override
unsigned getInstSizeInBytes(const MachineInstr &MI) const override
MachineBasicBlock * getBranchDestBlock(const MachineInstr &MI) const override
MachineInstr * emitLdStWithAddr(MachineInstr &MemI, const ExtAddrMode &AM) const override
Instances of this class represent a single low-level machine instruction.
MachineInstrBundleIterator< MachineInstr > iterator
Representation of each machine instruction.
Wrapper class representing virtual and physical registers.
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
static constexpr unsigned FClassMaskSignalingNaN
Definition LoongArchInstrInfo.h:117
static constexpr unsigned FClassMaskNegativeSubnormal
Definition LoongArchInstrInfo.h:121
bool isSEXT_W(const MachineInstr &MI)
static constexpr unsigned FClassMaskPositiveInfinity
Definition LoongArchInstrInfo.h:123
static constexpr unsigned FClassMaskNegativeZero
Definition LoongArchInstrInfo.h:122
static constexpr unsigned FClassMaskNegativeNormal
Definition LoongArchInstrInfo.h:120
static constexpr unsigned FClassMaskQuietNaN
Definition LoongArchInstrInfo.h:118
static constexpr unsigned FClassMaskNegativeInfinity
Definition LoongArchInstrInfo.h:119
static constexpr unsigned FClassMaskPositiveNormal
Definition LoongArchInstrInfo.h:124
static constexpr unsigned FClassMaskPositiveZero
Definition LoongArchInstrInfo.h:126
static constexpr unsigned FClassMaskPositiveSubnormal
Definition LoongArchInstrInfo.h:125
This is an optimization pass for GlobalISel generic memory operations.
Used to describe addressing mode similar to ExtAddrMode in CodeGenPrepare.