AMDGPU: Also track whether SGPRs were spilled
llvm-svn: 252145
This commit is contained in:
parent
d41c0dbff0
commit
5b22dfa65d
|
@ -484,6 +484,8 @@ void SIInstrInfo::storeRegToStackSlot(MachineBasicBlock &MBB,
|
||||||
int Opcode = -1;
|
int Opcode = -1;
|
||||||
|
|
||||||
if (RI.isSGPRClass(RC)) {
|
if (RI.isSGPRClass(RC)) {
|
||||||
|
MFI->setHasSpilledSGPRs();
|
||||||
|
|
||||||
// We are only allowed to create one new instruction when spilling
|
// We are only allowed to create one new instruction when spilling
|
||||||
// registers, so we need to use pseudo instruction for spilling
|
// registers, so we need to use pseudo instruction for spilling
|
||||||
// SGPRs.
|
// SGPRs.
|
||||||
|
|
|
@ -29,6 +29,7 @@ void SIMachineFunctionInfo::anchor() {}
|
||||||
SIMachineFunctionInfo::SIMachineFunctionInfo(const MachineFunction &MF)
|
SIMachineFunctionInfo::SIMachineFunctionInfo(const MachineFunction &MF)
|
||||||
: AMDGPUMachineFunction(MF),
|
: AMDGPUMachineFunction(MF),
|
||||||
TIDReg(AMDGPU::NoRegister),
|
TIDReg(AMDGPU::NoRegister),
|
||||||
|
HasSpilledSGPRs(false),
|
||||||
HasSpilledVGPRs(false),
|
HasSpilledVGPRs(false),
|
||||||
PSInputAddr(0),
|
PSInputAddr(0),
|
||||||
NumUserSGPRs(0),
|
NumUserSGPRs(0),
|
||||||
|
|
|
@ -29,6 +29,7 @@ class SIMachineFunctionInfo : public AMDGPUMachineFunction {
|
||||||
void anchor() override;
|
void anchor() override;
|
||||||
|
|
||||||
unsigned TIDReg;
|
unsigned TIDReg;
|
||||||
|
bool HasSpilledSGPRs;
|
||||||
bool HasSpilledVGPRs;
|
bool HasSpilledVGPRs;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -54,8 +55,22 @@ public:
|
||||||
bool hasCalculatedTID() const { return TIDReg != AMDGPU::NoRegister; };
|
bool hasCalculatedTID() const { return TIDReg != AMDGPU::NoRegister; };
|
||||||
unsigned getTIDReg() const { return TIDReg; };
|
unsigned getTIDReg() const { return TIDReg; };
|
||||||
void setTIDReg(unsigned Reg) { TIDReg = Reg; }
|
void setTIDReg(unsigned Reg) { TIDReg = Reg; }
|
||||||
bool hasSpilledVGPRs() const { return HasSpilledVGPRs; }
|
|
||||||
void setHasSpilledVGPRs(bool Spill = true) { HasSpilledVGPRs = Spill; }
|
bool hasSpilledSGPRs() const {
|
||||||
|
return HasSpilledSGPRs;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setHasSpilledSGPRs(bool Spill = true) {
|
||||||
|
HasSpilledSGPRs = Spill;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool hasSpilledVGPRs() const {
|
||||||
|
return HasSpilledVGPRs;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setHasSpilledVGPRs(bool Spill = true) {
|
||||||
|
HasSpilledVGPRs = Spill;
|
||||||
|
}
|
||||||
|
|
||||||
unsigned getMaximumWorkGroupSize(const MachineFunction &MF) const;
|
unsigned getMaximumWorkGroupSize(const MachineFunction &MF) const;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue