[llvm] [RISCV] Fold (fma (splat (fneg X)), Y, Z) -> (fma (fneg (splat X)), Y, Z) (PR #173808)

Craig Topper via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 6 08:00:14 PST 2026


================
@@ -21034,6 +21034,22 @@ SDValue RISCVTargetLowering::PerformDAGCombine(SDNode *N,
       return V;
     return SDValue();
   }
+  case ISD::FMA: {
+    SDValue N0 = N->getOperand(0);
+    SDValue N1 = N->getOperand(1);
+    if (N0.getOpcode() != ISD::SPLAT_VECTOR)
+      std::swap(N0, N1);
+    if (N0->getOpcode() != ISD::SPLAT_VECTOR)
----------------
topperc wrote:

```suggestion
    if (N0.getOpcode() != ISD::SPLAT_VECTOR)
```

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


More information about the llvm-commits mailing list