[llvm] [PowerPC] set libcall lowering for fp setcc ops on SPE boards (PR #153238)

Erik Enikeev via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 8 04:24:11 PDT 2025


================
@@ -550,8 +550,22 @@ PPCTargetLowering::PPCTargetLowering(const PPCTargetMachine &TM,
     setOperationAction(ISD::UINT_TO_FP, MVT::i32, Legal);
 
     // SPE supports signaling compare of f32/f64.
-    setOperationAction(ISD::STRICT_FSETCCS, MVT::f32, Legal);
-    setOperationAction(ISD::STRICT_FSETCCS, MVT::f64, Legal);
+    // But it doesn't comply IEEE-754 rules for comparing
+    // special values like NaNs, Infs.
+    if (!getTargetMachine().Options.NoNaNsFPMath) {
+      setOperationAction(ISD::SETCC, MVT::f32, Custom);
----------------
Varnike wrote:

As far as i understand, this situation, when it is necessary to replace the existing comparison instructions with libcalls because they do not meet the standard, is rather a feature of PowerPC SPE and not a common practice. Therefore, it seems logical to handle these operations within that target, where functionality already exists (i.e., mark them as custom).

If this still cannot be done, could you please explain in a little more detail what the issue is with this approach and where exactly the lowering needs to be changed?

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


More information about the llvm-commits mailing list