mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
AMDGPU: Verify that flat offsets aren't used pre-GFX9
For convenience the operand is always present in the instruction, but it isn't valid to use except on GFX9. llvm-svn: 305200
This commit is contained in:
parent
20d2f0ba58
commit
a57541fa02
@ -2331,11 +2331,12 @@ static bool isSubRegOf(const SIRegisterInfo &TRI,
|
||||
bool SIInstrInfo::verifyInstruction(const MachineInstr &MI,
|
||||
StringRef &ErrInfo) const {
|
||||
uint16_t Opcode = MI.getOpcode();
|
||||
|
||||
if (SIInstrInfo::isGenericOpcode(MI.getOpcode()))
|
||||
return true;
|
||||
|
||||
const MachineRegisterInfo &MRI = MI.getParent()->getParent()->getRegInfo();
|
||||
const MachineFunction *MF = MI.getParent()->getParent();
|
||||
const MachineRegisterInfo &MRI = MF->getRegInfo();
|
||||
|
||||
int Src0Idx = AMDGPU::getNamedOperandIdx(Opcode, AMDGPU::OpName::src0);
|
||||
int Src1Idx = AMDGPU::getNamedOperandIdx(Opcode, AMDGPU::OpName::src1);
|
||||
int Src2Idx = AMDGPU::getNamedOperandIdx(Opcode, AMDGPU::OpName::src2);
|
||||
@ -2565,6 +2566,14 @@ bool SIInstrInfo::verifyInstruction(const MachineInstr &MI,
|
||||
}
|
||||
}
|
||||
|
||||
if (isFLAT(MI) && !MF->getSubtarget<SISubtarget>().hasFlatInstOffsets()) {
|
||||
const MachineOperand *Offset = getNamedOperand(MI, AMDGPU::OpName::offset);
|
||||
if (Offset->getImm() != 0) {
|
||||
ErrInfo = "subtarget does not support offsets in flat instructions";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user