[llvm] AMDGPU: Handle FP in integer in argument lowering (PR #175835)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Jan 13 13:02:30 PST 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-amdgpu
Author: Matt Arsenault (arsenm)
<details>
<summary>Changes</summary>
This avoids an assertion when softPromoteHalfType is
enabled.
---
Full diff: https://github.com/llvm/llvm-project/pull/175835.diff
1 Files Affected:
- (modified) llvm/lib/Target/AMDGPU/SIISelLowering.cpp (+10-3)
``````````diff
diff --git a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
index ed5988ee6efc3..94f71ab12c5d4 100644
--- a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+++ b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
@@ -2306,9 +2306,16 @@ SDValue SITargetLowering::convertArgType(SelectionDAG &DAG, EVT VT, EVT MemVT,
Val = DAG.getNode(Opc, SL, MemVT, Val, DAG.getValueType(VT));
}
- if (MemVT.isFloatingPoint())
- Val = getFPExtOrFPRound(DAG, Val, SL, VT);
- else if (Signed)
+ if (MemVT.isFloatingPoint()) {
+ if (VT.isFloatingPoint())
+ Val = getFPExtOrFPRound(DAG, Val, SL, VT);
+ else {
+ assert(!MemVT.isVector());
+ EVT IntVT = EVT::getIntegerVT(*DAG.getContext(), MemVT.getSizeInBits());
+ SDValue Cast = DAG.getBitcast(IntVT, Val);
+ Val = DAG.getAnyExtOrTrunc(Cast, SL, VT);
+ }
+ } else if (Signed)
Val = DAG.getSExtOrTrunc(Val, SL, VT);
else
Val = DAG.getZExtOrTrunc(Val, SL, VT);
``````````
</details>
https://github.com/llvm/llvm-project/pull/175835
More information about the llvm-commits
mailing list