forked from OSchip/llvm-project
parent
152e7c8b12
commit
95c7897555
|
@ -1455,14 +1455,13 @@ MachineInstr *SIInstrInfo::convertToThreeAddress(MachineFunction::iterator &MBB,
|
||||||
bool SIInstrInfo::isSchedulingBoundary(const MachineInstr &MI,
|
bool SIInstrInfo::isSchedulingBoundary(const MachineInstr &MI,
|
||||||
const MachineBasicBlock *MBB,
|
const MachineBasicBlock *MBB,
|
||||||
const MachineFunction &MF) const {
|
const MachineFunction &MF) const {
|
||||||
|
// XXX - Do we want the SP check in the base implementation?
|
||||||
|
|
||||||
// Target-independent instructions do not have an implicit-use of EXEC, even
|
// Target-independent instructions do not have an implicit-use of EXEC, even
|
||||||
// when they operate on VGPRs. Treating EXEC modifications as scheduling
|
// when they operate on VGPRs. Treating EXEC modifications as scheduling
|
||||||
// boundaries prevents incorrect movements of such instructions.
|
// boundaries prevents incorrect movements of such instructions.
|
||||||
const SIRegisterInfo *TRI = MF.getSubtarget<SISubtarget>().getRegisterInfo();
|
return TargetInstrInfo::isSchedulingBoundary(MI, MBB, MF) ||
|
||||||
if (MI.modifiesRegister(AMDGPU::EXEC, TRI))
|
MI.modifiesRegister(AMDGPU::EXEC, &RI);
|
||||||
return true;
|
|
||||||
|
|
||||||
return AMDGPUInstrInfo::isSchedulingBoundary(MI, MBB, MF);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SIInstrInfo::isInlineConstant(const APInt &Imm) const {
|
bool SIInstrInfo::isInlineConstant(const APInt &Imm) const {
|
||||||
|
|
Loading…
Reference in New Issue