26#define DEBUG_TYPE "nvptx-reg-info"
30 if (RC == &NVPTX::Float32RegsRegClass)
32 if (RC == &NVPTX::Float64RegsRegClass)
34 if (RC == &NVPTX::Int64RegsRegClass)
54 if (RC == &NVPTX::Int32RegsRegClass)
56 if (RC == &NVPTX::Int16RegsRegClass)
58 if (RC == &NVPTX::Int1RegsRegClass)
60 if (RC == &NVPTX::SpecialRegsRegClass)
66 if (RC == &NVPTX::Float32RegsRegClass)
68 if (RC == &NVPTX::Float64RegsRegClass)
70 if (RC == &NVPTX::Int64RegsRegClass)
72 if (RC == &NVPTX::Int32RegsRegClass)
74 if (RC == &NVPTX::Int16RegsRegClass)
76 if (RC == &NVPTX::Int1RegsRegClass)
78 if (RC == &NVPTX::SpecialRegsRegClass)
87#define GET_REGINFO_TARGET_DESC
88#include "NVPTXGenRegisterInfo.inc"
93 static const MCPhysReg CalleeSavedRegs[] = { 0 };
94 return CalleeSavedRegs;
99 for (
unsigned Reg = NVPTX::ENVREG0; Reg <= NVPTX::ENVREG31; ++Reg) {
102 markSuperRegs(
Reserved, NVPTX::VRFrame32);
103 markSuperRegs(
Reserved, NVPTX::VRFrameLocal32);
104 markSuperRegs(
Reserved, NVPTX::VRFrame64);
105 markSuperRegs(
Reserved, NVPTX::VRFrameLocal64);
106 markSuperRegs(
Reserved, NVPTX::VRDepot);
111 int SPAdj,
unsigned FIOperandNum,
113 assert(SPAdj == 0 &&
"Unexpected");
116 int FrameIndex =
MI.getOperand(FIOperandNum).getIndex();
120 MI.getOperand(FIOperandNum + 1).getImm();
124 MI.getOperand(FIOperandNum + 1).ChangeToImmediate(
Offset);
131 return TM.is64Bit() ? NVPTX::VRFrame64 : NVPTX::VRFrame32;
138 return TM.is64Bit() ? NVPTX::VRFrameLocal64 : NVPTX::VRFrameLocal32;
This file implements the BitVector class.
const char LLVMTargetMachineRef TM
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
int64_t getObjectOffset(int ObjectIdx) const
Return the assigned stack offset of the specified object from the incoming stack pointer.
MachineFrameInfo & getFrameInfo()
getFrameInfo - Return the frame info object for the current function.
const LLVMTargetMachine & getTarget() const
getTarget - Return the target machine this machine code is compiled with
Representation of each machine instruction.
Register getFrameLocalRegister(const MachineFunction &MF) const
const MCPhysReg * getCalleeSavedRegs(const MachineFunction *MF) const override
NVPTX Callee Saved Registers.
bool eliminateFrameIndex(MachineBasicBlock::iterator MI, int SPAdj, unsigned FIOperandNum, RegScavenger *RS=nullptr) const override
BitVector getReservedRegs(const MachineFunction &MF) const override
Register getFrameRegister(const MachineFunction &MF) const override
Wrapper class representing virtual and physical registers.
This is an optimization pass for GlobalISel generic memory operations.
std::string getNVPTXRegClassName(TargetRegisterClass const *RC)
std::string getNVPTXRegClassStr(TargetRegisterClass const *RC)