diff --git a/llvm/include/llvm/Analysis/IVDescriptors.h b/llvm/include/llvm/Analysis/IVDescriptors.h index c1441de6d816e..d94ffa7287db3 100644 --- a/llvm/include/llvm/Analysis/IVDescriptors.h +++ b/llvm/include/llvm/Analysis/IVDescriptors.h @@ -51,9 +51,7 @@ enum class RecurKind { FMinimumNum, ///< FP min with llvm.minimumnum semantics FMaximumNum, ///< FP max with llvm.maximumnum semantics FMulAdd, ///< Sum of float products with llvm.fmuladd(a * b + sum). - IAnyOf, ///< Any_of reduction with select(icmp(),x,y) where one of (x,y) is - ///< 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 + AnyOf, ///< AnyOf reduction with select(cmp(),x,y) where one of (x,y) is ///< loop invariant, 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 @@ -252,7 +250,7 @@ class RecurrenceDescriptor { /// Returns true if the recurrence kind is of the form /// select(cmp(),x,y) where one of (x,y) is loop invariant. static bool isAnyOfRecurrenceKind(RecurKind Kind) { - return Kind == RecurKind::IAnyOf || Kind == RecurKind::FAnyOf; + return Kind == RecurKind::AnyOf; } /// Returns true if the recurrence kind is of the form diff --git a/llvm/lib/Analysis/IVDescriptors.cpp b/llvm/lib/Analysis/IVDescriptors.cpp index 42d9e74e50174..b7c7bcab168cc 100644 --- a/llvm/lib/Analysis/IVDescriptors.cpp +++ b/llvm/lib/Analysis/IVDescriptors.cpp @@ -49,8 +49,7 @@ bool RecurrenceDescriptor::isIntegerRecurrenceKind(RecurKind Kind) { case RecurKind::SMin: case RecurKind::UMax: case RecurKind::UMin: - case RecurKind::IAnyOf: - case RecurKind::FAnyOf: + case RecurKind::AnyOf: case RecurKind::FindLastIV: return true; } @@ -416,11 +415,11 @@ bool RecurrenceDescriptor::AddReductionVar( if (IsAPhi && Cur != Phi && !areAllUsesIn(Cur, VisitedInsts)) return false; - if ((isIntMinMaxRecurrenceKind(Kind) || Kind == RecurKind::IAnyOf) && - (isa(Cur) || isa(Cur))) + if (isIntMinMaxRecurrenceKind(Kind) && (isa(Cur) || IsASelect)) ++NumCmpSelectPatternInst; - if ((isFPMinMaxRecurrenceKind(Kind) || Kind == RecurKind::FAnyOf) && - (isa(Cur) || isa(Cur))) + if (isFPMinMaxRecurrenceKind(Kind) && (isa(Cur) || IsASelect)) + ++NumCmpSelectPatternInst; + if (isAnyOfRecurrenceKind(Kind) && IsASelect) ++NumCmpSelectPatternInst; // Check whether we found a reduction operator. @@ -653,8 +652,7 @@ RecurrenceDescriptor::isAnyOfPattern(Loop *Loop, PHINode *OrigPhi, if (!Loop->isLoopInvariant(NonPhi)) return InstDesc(false, I); - return InstDesc(I, isa(I->getOperand(0)) ? RecurKind::IAnyOf - : RecurKind::FAnyOf); + return InstDesc(I, RecurKind::AnyOf); } // We are looking for loops that do something like this: @@ -981,10 +979,10 @@ bool RecurrenceDescriptor::isReductionPHI(PHINode *Phi, Loop *TheLoop, LLVM_DEBUG(dbgs() << "Found a UMIN reduction PHI." << *Phi << "\n"); return true; } - if (AddReductionVar(Phi, RecurKind::IAnyOf, TheLoop, FMF, RedDes, DB, AC, DT, + if (AddReductionVar(Phi, RecurKind::AnyOf, TheLoop, FMF, RedDes, DB, AC, DT, SE)) { - LLVM_DEBUG(dbgs() << "Found an integer conditional select reduction PHI." - << *Phi << "\n"); + LLVM_DEBUG(dbgs() << "Found a conditional select reduction PHI." << *Phi + << "\n"); return true; } if (AddReductionVar(Phi, RecurKind::FindLastIV, TheLoop, FMF, RedDes, DB, AC, @@ -1012,12 +1010,6 @@ bool RecurrenceDescriptor::isReductionPHI(PHINode *Phi, Loop *TheLoop, LLVM_DEBUG(dbgs() << "Found a float MIN reduction PHI." << *Phi << "\n"); return true; } - if (AddReductionVar(Phi, RecurKind::FAnyOf, TheLoop, FMF, RedDes, DB, AC, DT, - SE)) { - LLVM_DEBUG(dbgs() << "Found a float conditional select reduction PHI." - << " PHI." << *Phi << "\n"); - return true; - } if (AddReductionVar(Phi, RecurKind::FMulAdd, TheLoop, FMF, RedDes, DB, AC, DT, SE)) { LLVM_DEBUG(dbgs() << "Found an FMulAdd reduction PHI." << *Phi << "\n"); @@ -1144,8 +1136,7 @@ unsigned RecurrenceDescriptor::getOpcode(RecurKind Kind) { return Instruction::Add; case RecurKind::Mul: return Instruction::Mul; - case RecurKind::IAnyOf: - case RecurKind::FAnyOf: + case RecurKind::AnyOf: case RecurKind::FindLastIV: case RecurKind::Or: return Instruction::Or; diff --git a/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp b/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp index 3f10da23b3494..68aec80f07e1d 100644 --- a/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp +++ b/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp @@ -5072,8 +5072,7 @@ bool AArch64TTIImpl::isLegalToVectorizeReduction( case RecurKind::FMin: case RecurKind::FMax: case RecurKind::FMulAdd: - case RecurKind::IAnyOf: - case RecurKind::FAnyOf: + case RecurKind::AnyOf: return true; default: return false; diff --git a/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.h b/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.h index 53529d077fd54..dd0d764463d07 100644 --- a/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.h +++ b/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.h @@ -372,11 +372,10 @@ class RISCVTTIImpl : public BasicTTIImplBase { case RecurKind::SMax: case RecurKind::UMin: case RecurKind::UMax: - case RecurKind::IAnyOf: case RecurKind::FMin: case RecurKind::FMax: return true; - case RecurKind::FAnyOf: + case RecurKind::AnyOf: case RecurKind::FAdd: case RecurKind::FMulAdd: // We can't promote f16/bf16 fadd reductions and scalable vectors can't be diff --git a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp index 3aefbd8e5e597..0f86c572639ca 100644 --- a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp +++ b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp @@ -23089,8 +23089,7 @@ class HorizontalReduction { case RecurKind::Mul: case RecurKind::FMul: case RecurKind::FMulAdd: - case RecurKind::IAnyOf: - case RecurKind::FAnyOf: + case RecurKind::AnyOf: case RecurKind::FindLastIV: case RecurKind::FMaximumNum: case RecurKind::FMinimumNum: @@ -23224,8 +23223,7 @@ class HorizontalReduction { case RecurKind::Mul: case RecurKind::FMul: case RecurKind::FMulAdd: - case RecurKind::IAnyOf: - case RecurKind::FAnyOf: + case RecurKind::AnyOf: case RecurKind::FindLastIV: case RecurKind::FMaximumNum: case RecurKind::FMinimumNum: @@ -23324,8 +23322,7 @@ class HorizontalReduction { case RecurKind::Mul: case RecurKind::FMul: case RecurKind::FMulAdd: - case RecurKind::IAnyOf: - case RecurKind::FAnyOf: + case RecurKind::AnyOf: case RecurKind::FindLastIV: case RecurKind::FMaximumNum: case RecurKind::FMinimumNum: