diff options
Diffstat (limited to 'llvm/lib/Target/AMDGPU/SIInstrInfo.cpp')
| -rw-r--r-- | llvm/lib/Target/AMDGPU/SIInstrInfo.cpp | 6 | 
1 files changed, 5 insertions, 1 deletions
| diff --git a/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp b/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp index 075717e1f8b..b2fbcce66d5 100644 --- a/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp +++ b/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp @@ -2174,8 +2174,12 @@ MachineInstr *SIInstrInfo::convertToThreeAddress(MachineFunction::iterator &MBB,      int Src0Idx = AMDGPU::getNamedOperandIdx(MI.getOpcode(),                                               AMDGPU::OpName::src0);      const MachineOperand *Src0 = &MI.getOperand(Src0Idx); +    if (!Src0->isReg() && !Src0->isImm()) +      return nullptr; +      if (Src0->isImm() && !isInlineConstant(MI, Src0Idx, *Src0))        return nullptr; +      break;    }    } @@ -2193,7 +2197,7 @@ MachineInstr *SIInstrInfo::convertToThreeAddress(MachineFunction::iterator &MBB,    if (!Src0Mods && !Src1Mods && !Clamp && !Omod &&        // If we have an SGPR input, we will violate the constant bus restriction. -      !RI.isSGPRReg(MBB->getParent()->getRegInfo(), Src0->getReg())) { +      (!Src0->isReg() || !RI.isSGPRReg(MBB->getParent()->getRegInfo(), Src0->getReg()))) {      if (auto Imm = getFoldableImm(Src2)) {        return BuildMI(*MBB, MI, MI.getDebugLoc(),                       get(IsF16 ? AMDGPU::V_MADAK_F16 : AMDGPU::V_MADAK_F32)) | 

