[llvm] [DAGCombiner] Fold select into partial.reduce.add operands. (PR #167857)

Sander de Smalen via llvm-commits llvm-commits at lists.llvm.org
Mon Nov 17 06:21:48 PST 2025


================
@@ -13152,7 +13182,18 @@ SDValue DAGCombiner::foldPartialReduceAdd(SDNode *N) {
   if (!llvm::isOneOrOneSplat(Op2) && !llvm::isOneOrOneSplatFP(Op2))
     return SDValue();
 
+  SDValue Pred;
   unsigned Op1Opcode = Op1.getOpcode();
+  if (Op1Opcode == ISD::VSELECT) {
+    APInt C;
+    if (!ISD::isConstantSplatVector(Op1->getOperand(2).getNode(), C) ||
+        !C.isZero())
+      return SDValue();
----------------
sdesmalen-arm wrote:

It seems `isNullOrNullSplat` does not recognise FP constants, so I've added a similar FP variant (similar to what was done for `isOneOrOneSplatFP`)

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


More information about the llvm-commits mailing list