[llvm] Add LoopVectorizer support for `llvm.vector.partial.reduce.fadd` (PR #163975)

Sander de Smalen via llvm-commits llvm-commits at lists.llvm.org
Fri Dec 12 05:16:02 PST 2025


================
@@ -5798,17 +5798,25 @@ InstructionCost AArch64TTIImpl::getPartialReductionCost(
       (!ST->isNeonAvailable() || !ST->hasDotProd()))
     return Invalid;
 
-  if ((Opcode != Instruction::Add && Opcode != Instruction::Sub) ||
+  if ((Opcode != Instruction::Add && Opcode != Instruction::Sub &&
+       Opcode != Instruction::FAdd) ||
       OpAExtend == TTI::PR_None)
     return Invalid;
 
+  // Floating-point partial reductions are invalid if `reassoc` and `contract`
+  // are not allowed.
+  if (Opcode == Instruction::FAdd &&
+      (!FMF->allowReassoc() || !FMF->allowContract()))
----------------
sdesmalen-arm wrote:

FMF should never be `nullptr` for `Instruction::FAdd` though.

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


More information about the llvm-commits mailing list