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 a273338670164..b7f22e7d34ea7 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; @@ -745,8 +744,7 @@ RecurrenceDescriptor::isFindLastIVPattern(Loop *TheLoop, PHINode *OrigPhi, if (!IsIncreasingLoopInduction(NonRdxPhi)) return InstDesc(false, I); - return InstDesc(I, isa(I->getOperand(0)) ? RecurKind::IFindLastIV - : RecurKind::FFindLastIV); + return InstDesc(I, RecurKind::FindLastIV); } RecurrenceDescriptor::InstDesc @@ -993,13 +991,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, @@ -1156,6 +1150,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: @@ -1171,7 +1166,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: @@ -1179,7 +1173,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 fcb9da637dd37..fc0b735e07d07 100644 --- a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp +++ b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp @@ -23071,8 +23071,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: @@ -23207,8 +23206,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: @@ -23308,8 +23306,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: