mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 10:42:39 +01:00
[AMDGPU] Fixed isLegalRegOperand() with physregs
This does not change anything at the moment, but needed for D89170. In that change I am probing a physical SGPR to see if it is legal. RC is SReg_32, but DRC for scratch instructions is SReg_32_XEXEC_HI and test fails. That is sufficient just to check if DRC contains a register here in case of physreg. Physregs also do not use subregs so the subreg handling below is irrelevant for these. Differential Revision: https://reviews.llvm.org/D90064
This commit is contained in:
parent
528517aa74
commit
270ab79b5a
@ -4303,10 +4303,13 @@ bool SIInstrInfo::isLegalRegOperand(const MachineRegisterInfo &MRI,
|
||||
return false;
|
||||
|
||||
Register Reg = MO.getReg();
|
||||
const TargetRegisterClass *RC =
|
||||
Reg.isVirtual() ? MRI.getRegClass(Reg) : RI.getPhysRegClass(Reg);
|
||||
|
||||
const TargetRegisterClass *DRC = RI.getRegClass(OpInfo.RegClass);
|
||||
if (Reg.isPhysical())
|
||||
return DRC->contains(Reg);
|
||||
|
||||
const TargetRegisterClass *RC = MRI.getRegClass(Reg);
|
||||
|
||||
if (MO.getSubReg()) {
|
||||
const MachineFunction *MF = MO.getParent()->getParent()->getParent();
|
||||
const TargetRegisterClass *SuperRC = RI.getLargestLegalSuperClass(RC, *MF);
|
||||
|
Loading…
Reference in New Issue
Block a user