mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-21 21:29:41 +00:00
R600/SI: Add kill flag when copying scratch offset to a register
This allows us to re-use the same register for the scratch offset when accessing large private arrays. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@226585 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a978a481bb
commit
ad7a884efe
@ -289,7 +289,7 @@ void SIRegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator MI,
|
||||
BuildMI(*MBB, MI, MI->getDebugLoc(),
|
||||
TII->get(AMDGPU::V_MOV_B32_e32), TmpReg)
|
||||
.addImm(Offset);
|
||||
FIOp.ChangeToRegister(TmpReg, false);
|
||||
FIOp.ChangeToRegister(TmpReg, false, false, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3,9 +3,14 @@
|
||||
; When a frame index offset is more than 12-bits, make sure we don't store
|
||||
; it in mubuf's offset field.
|
||||
|
||||
; Also, make sure we use the same register for storing the scratch buffer addresss
|
||||
; for both stores. This register is allocated by the register scavenger, so we
|
||||
; should be able to reuse the same regiser for each scratch buffer access.
|
||||
|
||||
; CHECK-LABEL: {{^}}legal_offset_fi:
|
||||
; CHECK: buffer_store_dword v{{[0-9]+}}, v{{[0-9]+}}, s[{{[0-9]+}}:{{[0-9]+}}], s{{[0-9]+}} offen
|
||||
; CHECK: v_mov_b32_e32 [[OFFSET:v[0-9]+]], 0x8000
|
||||
; CHECK: v_mov_b32_e32 [[OFFSET:v[0-9]+]], 0{{$}}
|
||||
; CHECK: buffer_store_dword v{{[0-9]+}}, [[OFFSET]], s[{{[0-9]+}}:{{[0-9]+}}], s{{[0-9]+}} offen
|
||||
; CHECK: v_mov_b32_e32 [[OFFSET]], 0x8000
|
||||
; CHECK: buffer_store_dword v{{[0-9]+}}, [[OFFSET]], s[{{[0-9]+}}:{{[0-9]+}}], s{{[0-9]+}} offen{{$}}
|
||||
|
||||
define void @legal_offset_fi(i32 addrspace(1)* %out, i32 %cond, i32 %if_offset, i32 %else_offset) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user