[llvm] [LoopUnroll] Make the list of supported recurrence kinds inclusive. (PR #210957)
David Green via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 23 03:03:10 PDT 2026
================
@@ -1719,10 +1719,16 @@ llvm::canParallelizeReductionWhenUnrolling(PHINode &Phi, Loop *L,
if (RdxDesc.hasUsesOutsideReductionChain())
return std::nullopt;
RecurKind RK = RdxDesc.getRecurrenceKind();
- // Skip unsupported reductions.
- // TODO: Handle any-of and find-last reductions.
- if (RecurrenceDescriptor::isAnyOfRecurrenceKind(RK) ||
- RecurrenceDescriptor::isFindRecurrenceKind(RK))
+ // Skip unsupported reductions, including sub, any-of and find-last.
+ // TODO: Handle sub, any-of and find-last reductions.
+ if (RK != RecurKind::Add && RK != RecurKind::Mul && RK != RecurKind::Or &&
+ RK != RecurKind::And && RK != RecurKind::Xor && RK != RecurKind::SMin &&
+ RK != RecurKind::SMax && RK != RecurKind::UMin && RK != RecurKind::UMax &&
+ RK != RecurKind::FAdd && RK != RecurKind::FMul && RK != RecurKind::FMin &&
+ RK != RecurKind::FMax && RK != RecurKind::FMinNum &&
+ RK != RecurKind::FMaxNum && RK != RecurKind::FMinimum &&
+ RK != RecurKind::FMaximum && RK != RecurKind::FMinimumNum &&
+ RK != RecurKind::FMaximumNum && RK != RecurKind::FMulAdd)
return std::nullopt;
----------------
davemgreen wrote:
I've changed it to a any_of check, which is hopefully cleaner and less overhead than a separate function.
https://github.com/llvm/llvm-project/pull/210957
More information about the llvm-commits
mailing list