forked from OSchip/llvm-project
[AMDGPU] getMemOperandsWithOffset: add resource operand for BUF instructions
Summary: This prevents unwanted clustering of BUF instructions with the same vaddr but different resource descriptors. Reviewers: rampitec, arsenm, nhaehnle Subscribers: kzhuravl, jvesely, wdng, yaxunl, dstuttard, tpr, t-tye, hiraditya, kerbowa, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D73867
This commit is contained in:
parent
b2e884bee7
commit
05297b7cbe
|
@ -331,26 +331,24 @@ bool SIInstrInfo::getMemOperandsWithOffset(
|
|||
|
||||
const MachineOperand *OffsetImm =
|
||||
getNamedOperand(LdSt, AMDGPU::OpName::offset);
|
||||
BaseOps.push_back(RSrc);
|
||||
BaseOps.push_back(SOffset);
|
||||
Offset = OffsetImm->getImm();
|
||||
return true;
|
||||
}
|
||||
|
||||
const MachineOperand *AddrReg = getNamedOperand(LdSt, AMDGPU::OpName::vaddr);
|
||||
if (!AddrReg)
|
||||
BaseOp = getNamedOperand(LdSt, AMDGPU::OpName::vaddr);
|
||||
if (!BaseOp)
|
||||
return false;
|
||||
const MachineOperand *RSrc = getNamedOperand(LdSt, AMDGPU::OpName::srsrc);
|
||||
BaseOps.push_back(RSrc);
|
||||
BaseOps.push_back(BaseOp);
|
||||
|
||||
const MachineOperand *OffsetImm =
|
||||
getNamedOperand(LdSt, AMDGPU::OpName::offset);
|
||||
BaseOp = AddrReg;
|
||||
Offset = OffsetImm->getImm();
|
||||
if (SOffset) // soffset can be an inline immediate.
|
||||
Offset += SOffset->getImm();
|
||||
|
||||
if (!BaseOp->isReg())
|
||||
return false;
|
||||
|
||||
BaseOps.push_back(BaseOp);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -482,8 +482,8 @@ main_body:
|
|||
|
||||
; SMRD load with a non-const non-uniform offset of > 4 dwords (requires splitting)
|
||||
; GCN-LABEL: {{^}}smrd_load_nonconst2:
|
||||
; SIVIGFX9_10: buffer_load_dword v{{[0-9]+}}, v{{[0-9]+}}, s[{{[0-9]+:[0-9]+}}], 0 offen
|
||||
; SIVIGFX9_10: buffer_load_dwordx4 v[{{[0-9]+:[0-9]+}}], v{{[0-9]+}}, s[{{[0-9]+:[0-9]+}}], 0 offen
|
||||
; SIVIGFX9_10-DAG: buffer_load_dword v{{[0-9]+}}, v{{[0-9]+}}, s[{{[0-9]+:[0-9]+}}], 0 offen
|
||||
; SIVIGFX9_10-DAG: buffer_load_dwordx4 v[{{[0-9]+:[0-9]+}}], v{{[0-9]+}}, s[{{[0-9]+:[0-9]+}}], 0 offen
|
||||
; CI: buffer_load_dword v{{[0-9]+}}, v{{[0-9]+}}, s[{{[0-9]+:[0-9]+}}], 0 offen
|
||||
; CI: buffer_load_dwordx4 v[{{[0-9]+:[0-9]+}}], v{{[0-9]+}}, s[{{[0-9]+:[0-9]+}}], 0 offen
|
||||
; GCN: s_endpgm
|
||||
|
|
Loading…
Reference in New Issue