[llvm] [DAGCombiner] Eliminate fp casts if we have the right fast math flags (PR #131345)
John Brawn via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 15 05:26:20 PDT 2025
================
@@ -18455,7 +18455,45 @@ SDValue DAGCombiner::visitFP_ROUND(SDNode *N) {
return SDValue();
}
+// Eliminate a floating-point widening of a narrowed value if the fast math
+// flags allow it.
+static SDValue eliminateFPCastPair(SDNode *N) {
+ SDValue N0 = N->getOperand(0);
+ EVT VT = N->getValueType(0);
+
+ unsigned NarrowingOp;
+ switch (N->getOpcode()) {
+ case ISD::FP16_TO_FP:
+ NarrowingOp = ISD::FP_TO_FP16;
+ break;
+ case ISD::BF16_TO_FP:
+ NarrowingOp = ISD::FP_TO_BF16;
+ break;
----------------
john-brawn-arm wrote:
FP16_TO_FP is tested in llvm/test/CodeGen/ARM/fp16_fast_math.ll - ARM uses FP16_TO_FP for fp16-to-float conversion as it doesn't have registers for fp16 types, AArch64 uses FP_EXTEND as it does have such registers. We don't have any BF16 tests though, so I've now added these.
https://github.com/llvm/llvm-project/pull/131345
More information about the llvm-commits
mailing list