diff --git a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp --- a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp +++ b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp @@ -5948,6 +5948,9 @@ EVT LegalReqRetVT = ReqRetVT; if (!ReqRetVT.isVector()) { + if (!Data.getValueType().isInteger()) + Data = DAG.getNode(ISD::BITCAST, DL, + Data.getValueType().changeTypeToInteger(), Data); Data = DAG.getNode(ISD::TRUNCATE, DL, ReqRetVT.changeTypeToInteger(), Data); } else { // We need to widen the return vector to a legal type