[llvm] b81170e - [IVDesc] Unify RecurKinds [I|F]FindLastIV (NFC) (#141082)
via llvm-commits
llvm-commits at lists.llvm.org
Thu May 22 14:48:04 PDT 2025
Author: Ramkumar Ramachandra
Date: 2025-05-22T22:48:01+01:00
New Revision: b81170ecffb5f53d52eab5d3424ba6f1c8ef97d3
URL: https://github.com/llvm/llvm-project/commit/b81170ecffb5f53d52eab5d3424ba6f1c8ef97d3
DIFF: https://github.com/llvm/llvm-project/commit/b81170ecffb5f53d52eab5d3424ba6f1c8ef97d3.diff
LOG: [IVDesc] Unify RecurKinds [I|F]FindLastIV (NFC) (#141082)
Added:
Modified:
llvm/include/llvm/Analysis/IVDescriptors.h
llvm/lib/Analysis/IVDescriptors.cpp
llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm/Analysis/IVDescriptors.h b/llvm/include/llvm/Analysis/IVDescriptors.h
index 140edff13a67f..c1441de6d816e 100644
--- a/llvm/include/llvm/Analysis/IVDescriptors.h
+++ b/llvm/include/llvm/Analysis/IVDescriptors.h
@@ -31,6 +31,7 @@ class StoreInst;
/// These are the kinds of recurrences that we support.
enum class RecurKind {
+ // clang-format off
None, ///< Not a recurrence.
Add, ///< Sum of integers.
Mul, ///< Product of integers.
@@ -54,12 +55,10 @@ enum class RecurKind {
///< loop invariant, and both x and y are integer type.
FAnyOf, ///< Any_of reduction with select(fcmp(),x,y) where one of (x,y) is
///< loop invariant, and both x and y are integer type.
- IFindLastIV, ///< FindLast reduction with select(icmp(),x,y) where one of
- ///< (x,y) is increasing loop induction, and both x and y are
- ///< integer type.
- FFindLastIV ///< FindLast reduction with select(fcmp(),x,y) where one of (x,y)
- ///< is increasing loop induction, and both x and y are integer
- ///< type.
+ FindLastIV, ///< FindLast reduction with select(cmp(),x,y) where one of
+ ///< (x,y) is increasing loop induction, and both x and y are
+ ///< integer type.
+ // clang-format on
// TODO: Any_of and FindLast reduction need not be restricted to integer type
// only.
};
@@ -259,7 +258,7 @@ class RecurrenceDescriptor {
/// Returns true if the recurrence kind is of the form
/// select(cmp(),x,y) where one of (x,y) is increasing loop induction.
static bool isFindLastIVRecurrenceKind(RecurKind Kind) {
- return Kind == RecurKind::IFindLastIV || Kind == RecurKind::FFindLastIV;
+ return Kind == RecurKind::FindLastIV;
}
/// Returns the type of the recurrence. This type can be narrower than the
diff --git a/llvm/lib/Analysis/IVDescriptors.cpp b/llvm/lib/Analysis/IVDescriptors.cpp
index 6b7d31463d3a6..42d9e74e50174 100644
--- a/llvm/lib/Analysis/IVDescriptors.cpp
+++ b/llvm/lib/Analysis/IVDescriptors.cpp
@@ -51,8 +51,7 @@ bool RecurrenceDescriptor::isIntegerRecurrenceKind(RecurKind Kind) {
case RecurKind::UMin:
case RecurKind::IAnyOf:
case RecurKind::FAnyOf:
- case RecurKind::IFindLastIV:
- case RecurKind::FFindLastIV:
+ case RecurKind::FindLastIV:
return true;
}
return false;
@@ -743,8 +742,7 @@ RecurrenceDescriptor::isFindLastIVPattern(Loop *TheLoop, PHINode *OrigPhi,
if (!IsIncreasingLoopInduction(NonRdxPhi))
return InstDesc(false, I);
- return InstDesc(I, isa<ICmpInst>(I->getOperand(0)) ? RecurKind::IFindLastIV
- : RecurKind::FFindLastIV);
+ return InstDesc(I, RecurKind::FindLastIV);
}
RecurrenceDescriptor::InstDesc
@@ -989,13 +987,9 @@ bool RecurrenceDescriptor::isReductionPHI(PHINode *Phi, Loop *TheLoop,
<< *Phi << "\n");
return true;
}
- if (AddReductionVar(Phi, RecurKind::IFindLastIV, TheLoop, FMF, RedDes, DB, AC,
+ if (AddReductionVar(Phi, RecurKind::FindLastIV, TheLoop, FMF, RedDes, DB, AC,
DT, SE)) {
- LLVM_DEBUG(dbgs() << "Found a "
- << (RedDes.getRecurrenceKind() == RecurKind::FFindLastIV
- ? "F"
- : "I")
- << "FindLastIV reduction PHI." << *Phi << "\n");
+ LLVM_DEBUG(dbgs() << "Found a FindLastIV reduction PHI." << *Phi << "\n");
return true;
}
if (AddReductionVar(Phi, RecurKind::FMul, TheLoop, FMF, RedDes, DB, AC, DT,
@@ -1152,6 +1146,7 @@ unsigned RecurrenceDescriptor::getOpcode(RecurKind Kind) {
return Instruction::Mul;
case RecurKind::IAnyOf:
case RecurKind::FAnyOf:
+ case RecurKind::FindLastIV:
case RecurKind::Or:
return Instruction::Or;
case RecurKind::And:
@@ -1167,7 +1162,6 @@ unsigned RecurrenceDescriptor::getOpcode(RecurKind Kind) {
case RecurKind::SMin:
case RecurKind::UMax:
case RecurKind::UMin:
- case RecurKind::IFindLastIV:
return Instruction::ICmp;
case RecurKind::FMax:
case RecurKind::FMin:
@@ -1175,7 +1169,6 @@ unsigned RecurrenceDescriptor::getOpcode(RecurKind Kind) {
case RecurKind::FMinimum:
case RecurKind::FMaximumNum:
case RecurKind::FMinimumNum:
- case RecurKind::FFindLastIV:
return Instruction::FCmp;
default:
llvm_unreachable("Unknown recurrence operation");
diff --git a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
index 7df9ab039d887..3aefbd8e5e597 100644
--- a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+++ b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
@@ -23091,8 +23091,7 @@ class HorizontalReduction {
case RecurKind::FMulAdd:
case RecurKind::IAnyOf:
case RecurKind::FAnyOf:
- case RecurKind::IFindLastIV:
- case RecurKind::FFindLastIV:
+ case RecurKind::FindLastIV:
case RecurKind::FMaximumNum:
case RecurKind::FMinimumNum:
case RecurKind::None:
@@ -23227,8 +23226,7 @@ class HorizontalReduction {
case RecurKind::FMulAdd:
case RecurKind::IAnyOf:
case RecurKind::FAnyOf:
- case RecurKind::IFindLastIV:
- case RecurKind::FFindLastIV:
+ case RecurKind::FindLastIV:
case RecurKind::FMaximumNum:
case RecurKind::FMinimumNum:
case RecurKind::None:
@@ -23328,8 +23326,7 @@ class HorizontalReduction {
case RecurKind::FMulAdd:
case RecurKind::IAnyOf:
case RecurKind::FAnyOf:
- case RecurKind::IFindLastIV:
- case RecurKind::FFindLastIV:
+ case RecurKind::FindLastIV:
case RecurKind::FMaximumNum:
case RecurKind::FMinimumNum:
case RecurKind::None:
More information about the llvm-commits
mailing list