diff --git a/llvm/lib/Target/AMDGPU/SIFoldOperands.cpp b/llvm/lib/Target/AMDGPU/SIFoldOperands.cpp index 3ee4b99e69cdd..45294da5df591 100644 --- a/llvm/lib/Target/AMDGPU/SIFoldOperands.cpp +++ b/llvm/lib/Target/AMDGPU/SIFoldOperands.cpp @@ -565,13 +565,10 @@ bool SIFoldOperands::tryToFoldACImm( if (UseOpIdx >= Desc.getNumOperands()) return false; - uint8_t OpTy = Desc.operands()[UseOpIdx].OperandType; - if ((OpTy < AMDGPU::OPERAND_REG_INLINE_AC_FIRST || - OpTy > AMDGPU::OPERAND_REG_INLINE_AC_LAST) && - (OpTy < AMDGPU::OPERAND_REG_INLINE_C_FIRST || - OpTy > AMDGPU::OPERAND_REG_INLINE_C_LAST)) + if (!AMDGPU::isSISrcInlinableOperand(Desc, UseOpIdx)) return false; + uint8_t OpTy = Desc.operands()[UseOpIdx].OperandType; if (OpToFold.isImm() && TII->isInlineConstant(OpToFold, OpTy) && TII->isOperandLegal(*UseMI, UseOpIdx, &OpToFold)) { UseMI->getOperand(UseOpIdx).ChangeToImmediate(OpToFold.getImm()); diff --git a/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp b/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp index d0c84f7bf2574..a09abc639d759 100644 --- a/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp +++ b/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp @@ -2239,8 +2239,10 @@ bool isSISrcFPOperand(const MCInstrDesc &Desc, unsigned OpNo) { bool isSISrcInlinableOperand(const MCInstrDesc &Desc, unsigned OpNo) { assert(OpNo < Desc.NumOperands); unsigned OpType = Desc.operands()[OpNo].OperandType; - return OpType >= AMDGPU::OPERAND_REG_INLINE_C_FIRST && - OpType <= AMDGPU::OPERAND_REG_INLINE_C_LAST; + return (OpType >= AMDGPU::OPERAND_REG_INLINE_C_FIRST && + OpType <= AMDGPU::OPERAND_REG_INLINE_C_LAST) || + (OpType >= AMDGPU::OPERAND_REG_INLINE_AC_FIRST && + OpType <= AMDGPU::OPERAND_REG_INLINE_AC_LAST); } // Avoid using MCRegisterClass::getSize, since that function will go away