mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-12 18:33:22 +00:00
R600/SI: improve vector interpolation
Prevent loading M0 multiple times. Signed-off-by: Christian König <christian.koenig@amd.com> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178023 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a55e36584a
commit
3851e9869f
@ -65,6 +65,26 @@ SIInstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||
unsigned Opcode;
|
||||
const int16_t *SubIndices;
|
||||
|
||||
if (AMDGPU::M0 == DestReg) {
|
||||
// Check if M0 isn't already set to this value
|
||||
for (MachineBasicBlock::reverse_iterator E = MBB.rend(),
|
||||
I = MachineBasicBlock::reverse_iterator(MI); I != E; ++I) {
|
||||
|
||||
if (!I->definesRegister(AMDGPU::M0))
|
||||
continue;
|
||||
|
||||
unsigned Opc = I->getOpcode();
|
||||
if (Opc != TargetOpcode::COPY && Opc != AMDGPU::S_MOV_B32)
|
||||
break;
|
||||
|
||||
if (!I->readsRegister(SrcReg))
|
||||
break;
|
||||
|
||||
// The copy isn't necessary
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (AMDGPU::SReg_32RegClass.contains(DestReg)) {
|
||||
assert(AMDGPU::SReg_32RegClass.contains(SrcReg));
|
||||
BuildMI(MBB, MI, DL, get(AMDGPU::S_MOV_B32), DestReg)
|
||||
|
Loading…
x
Reference in New Issue
Block a user