diff --git a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp index fe095414e5172..b6d1c401507c2 100644 --- a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp +++ b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp @@ -16965,6 +16965,8 @@ SITargetLowering::getRegClassFor(MVT VT, bool isDivergent) const { if (RC == &AMDGPU::VReg_1RegClass && !isDivergent) return Subtarget->isWave64() ? &AMDGPU::SReg_64RegClass : &AMDGPU::SReg_32RegClass; + if (VT == MVT::f16 && TRI->isVGPRClass(RC)) + return RC; if (!TRI->isSGPRClass(RC) && !isDivergent) return TRI->getEquivalentSGPRClass(RC); if (TRI->isSGPRClass(RC) && isDivergent)