[llvm] [SelectionDAG][ARM] Add lowering for strict fp16 nodes on systems without fullfp16 (PR #173666)

Eli Friedman via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 21 14:47:34 PST 2026


================
@@ -3412,13 +3422,54 @@ void DAGTypeLegalizer::SoftPromoteHalfResult(SDNode *N, unsigned ResNo) {
   case ISD::FPOW:
   case ISD::FATAN2:
   case ISD::FREM:
-  case ISD::FSUB:        R = SoftPromoteHalfRes_BinOp(N); break;
+  case ISD::FSUB:
+  case ISD::STRICT_FADD:
+  case ISD::STRICT_FDIV:
+  case ISD::STRICT_FMUL:
+  case ISD::STRICT_FSUB:
+  case ISD::STRICT_FMAXIMUM:
+  case ISD::STRICT_FMINIMUM:
+    R = SoftPromoteHalfRes_BinOp(N);
+    break;
+    
+  // FIXME: we can't produce correct lowering for some strict f16
+  // operations, as promotion would violate the strict FP model
+  // and also there are no libcalls for them at the moment.
+  case ISD::STRICT_FPOW:
+  case ISD::STRICT_FATAN2:
+  case ISD::STRICT_FMAXNUM:
+  case ISD::STRICT_FMINNUM:
----------------
efriedma-quic wrote:

What makes STRICT_FMAXNUM different from STRICT_FMAXIMUM, in this context?  

https://github.com/llvm/llvm-project/pull/173666


More information about the llvm-commits mailing list