#ifndef LLVM_LIB_TARGET_AMDGPU_SIINSTRINFO_H
#define LLVM_LIB_TARGET_AMDGPU_SIINSTRINFO_H
#include "AMDGPUMIRFormatter.h"
#include "MCTargetDesc/AMDGPUMCTargetDesc.h"
#include "SIRegisterInfo.h"
#include "Utils/AMDGPUBaseInfo.h"
#include "llvm/ADT/SetVector.h"
#include "llvm/CodeGen/TargetInstrInfo.h"
#include "llvm/CodeGen/TargetSchedule.h"
#define GET_INSTRINFO_HEADER
#include "AMDGPUGenInstrInfo.inc"
namespace llvm {
class APInt;
class GCNSubtarget;
class LiveVariables;
class MachineDominatorTree;
class MachineRegisterInfo;
class RegScavenger;
class TargetRegisterClass;
class ScheduleHazardRecognizer;
static const MachineMemOperand::Flags MONoClobber = …;
static const MachineMemOperand::Flags MOLastUse = …;
struct SIInstrWorklist { … };
class SIInstrInfo final : public AMDGPUGenInstrInfo { … };
inline bool isOfRegClass(const TargetInstrInfo::RegSubRegPair &P,
const TargetRegisterClass &TRC,
MachineRegisterInfo &MRI) { … }
inline
TargetInstrInfo::RegSubRegPair getRegSubRegPair(const MachineOperand &O) { … }
TargetInstrInfo::RegSubRegPair getRegSequenceSubReg(MachineInstr &MI,
unsigned SubReg);
MachineInstr *getVRegSubRegDef(const TargetInstrInfo::RegSubRegPair &P,
MachineRegisterInfo &MRI);
bool execMayBeModifiedBeforeUse(const MachineRegisterInfo &MRI,
Register VReg,
const MachineInstr &DefMI,
const MachineInstr &UseMI);
bool execMayBeModifiedBeforeAnyUse(const MachineRegisterInfo &MRI,
Register VReg,
const MachineInstr &DefMI);
namespace AMDGPU {
LLVM_READONLY
int getVOPe64(uint16_t Opcode);
LLVM_READONLY
int getVOPe32(uint16_t Opcode);
LLVM_READONLY
int getSDWAOp(uint16_t Opcode);
LLVM_READONLY
int getDPPOp32(uint16_t Opcode);
LLVM_READONLY
int getDPPOp64(uint16_t Opcode);
LLVM_READONLY
int getBasicFromSDWAOp(uint16_t Opcode);
LLVM_READONLY
int getCommuteRev(uint16_t Opcode);
LLVM_READONLY
int getCommuteOrig(uint16_t Opcode);
LLVM_READONLY
int getAddr64Inst(uint16_t Opcode);
LLVM_READONLY
int getIfAddr64Inst(uint16_t Opcode);
LLVM_READONLY
int getSOPKOp(uint16_t Opcode);
LLVM_READONLY
int getGlobalSaddrOp(uint16_t Opcode);
LLVM_READONLY
int getGlobalVaddrOp(uint16_t Opcode);
LLVM_READONLY
int getVCMPXNoSDstOp(uint16_t Opcode);
LLVM_READONLY
int getFlatScratchInstSTfromSS(uint16_t Opcode);
LLVM_READONLY
int getFlatScratchInstSVfromSVS(uint16_t Opcode);
LLVM_READONLY
int getFlatScratchInstSSfromSV(uint16_t Opcode);
LLVM_READONLY
int getFlatScratchInstSVfromSS(uint16_t Opcode);
LLVM_READONLY
int getMFMAEarlyClobberOp(uint16_t Opcode);
LLVM_READONLY
int getVCMPXOpFromVCMP(uint16_t Opcode);
const uint64_t RSRC_DATA_FORMAT = …;
const uint64_t RSRC_ELEMENT_SIZE_SHIFT = …;
const uint64_t RSRC_INDEX_STRIDE_SHIFT = …;
const uint64_t RSRC_TID_ENABLE = …1) << (32 + 23);
}
namespace AMDGPU {
enum AsmComments { … };
}
namespace SI {
namespace KernelInputOffsets {
enum Offsets { … };
}
}
}
#endif