[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