mirror of
https://github.com/intel/llvm.git
synced 2026-01-23 16:06:39 +08:00
AMDGPU: Fix getMemOpBaseRegImmOfs for flat with offsets
llvm-svn: 308762
This commit is contained in:
@@ -305,9 +305,19 @@ bool SIInstrInfo::getMemOpBaseRegImmOfs(MachineInstr &LdSt, unsigned &BaseReg,
|
||||
}
|
||||
|
||||
if (isFLAT(LdSt)) {
|
||||
const MachineOperand *AddrReg = getNamedOperand(LdSt, AMDGPU::OpName::vaddr);
|
||||
BaseReg = AddrReg->getReg();
|
||||
Offset = 0;
|
||||
const MachineOperand *VAddr = getNamedOperand(LdSt, AMDGPU::OpName::vaddr);
|
||||
if (VAddr) {
|
||||
// Can't analyze 2 offsets.
|
||||
if (getNamedOperand(LdSt, AMDGPU::OpName::saddr))
|
||||
return false;
|
||||
|
||||
BaseReg = VAddr->getReg();
|
||||
} else {
|
||||
// scratch instructions have either vaddr or saddr.
|
||||
BaseReg = getNamedOperand(LdSt, AMDGPU::OpName::saddr)->getReg();
|
||||
}
|
||||
|
||||
Offset = getNamedOperand(LdSt, AMDGPU::OpName::offset)->getImm();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user