[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