[Mlir-commits] [llvm] [mlir] Add llvm::min/max_element and use it in llvm/ and mlir/ directories. (PR #84678)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Sun Mar 10 08:05:25 PDT 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-amdgpu
Author: Justin Lebar (jlebar)
<details>
<summary>Changes</summary>
For some reason this was missing from STLExtras.
---
Patch is 37.36 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/84678.diff
42 Files Affected:
- (modified) llvm/include/llvm/ADT/STLExtras.h (+16)
- (modified) llvm/include/llvm/CodeGen/RegAllocPBQP.h (+1-3)
- (modified) llvm/lib/Analysis/ScalarEvolution.cpp (+3-4)
- (modified) llvm/lib/DebugInfo/PDB/Native/PDBFile.cpp (+1-2)
- (modified) llvm/lib/IR/DataLayout.cpp (+1-1)
- (modified) llvm/lib/ObjCopy/MachO/MachOWriter.cpp (+1-1)
- (modified) llvm/lib/ProfileData/GCOV.cpp (+1-1)
- (modified) llvm/lib/Target/AArch64/SVEIntrinsicOpts.cpp (+2-2)
- (modified) llvm/lib/Target/AMDGPU/GCNILPSched.cpp (+5-5)
- (modified) llvm/lib/Target/AMDGPU/SIFixSGPRCopies.cpp (+2-3)
- (modified) llvm/lib/Target/AMDGPU/SIMachineScheduler.cpp (+2-4)
- (modified) llvm/lib/Target/Hexagon/HexagonCommonGEP.cpp (+1-1)
- (modified) llvm/lib/Target/Hexagon/HexagonConstExtenders.cpp (+4-5)
- (modified) llvm/lib/Target/Hexagon/HexagonGenInsert.cpp (+1-1)
- (modified) llvm/lib/Target/Hexagon/HexagonVectorCombine.cpp (+3-3)
- (modified) llvm/lib/Transforms/Scalar/GVNSink.cpp (+1-2)
- (modified) llvm/lib/Transforms/Scalar/JumpThreading.cpp (+3-5)
- (modified) llvm/lib/Transforms/Scalar/LoopLoadElimination.cpp (+12-11)
- (modified) llvm/lib/Transforms/Utils/SimplifyCFG.cpp (+1-1)
- (modified) llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp (+4-5)
- (modified) llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp (+4-5)
- (modified) llvm/tools/llvm-exegesis/lib/LatencyBenchmarkRunner.cpp (+2-2)
- (modified) llvm/tools/llvm-mca/Views/BottleneckAnalysis.cpp (+4-3)
- (modified) llvm/tools/llvm-mca/Views/SchedulerStatistics.cpp (+1-2)
- (modified) llvm/tools/llvm-pdbutil/DumpOutputStyle.cpp (+4-5)
- (modified) llvm/tools/llvm-pdbutil/MinimalTypeDumper.cpp (+3-3)
- (modified) llvm/tools/llvm-rc/ResourceFileWriter.cpp (+4-5)
- (modified) llvm/utils/FileCheck/FileCheck.cpp (+4-9)
- (modified) llvm/utils/TableGen/CodeGenSchedule.cpp (+1-1)
- (modified) llvm/utils/TableGen/RegisterInfoEmitter.cpp (+2-2)
- (modified) mlir/examples/toy/Ch5/mlir/LowerToAffineLoops.cpp (+1-2)
- (modified) mlir/examples/toy/Ch6/mlir/LowerToAffineLoops.cpp (+1-2)
- (modified) mlir/examples/toy/Ch7/mlir/LowerToAffineLoops.cpp (+1-2)
- (modified) mlir/lib/Conversion/PDLToPDLInterp/PredicateTree.cpp (+1-2)
- (modified) mlir/lib/Dialect/Affine/IR/AffineOps.cpp (+2-2)
- (modified) mlir/lib/Dialect/Affine/Utils/LoopUtils.cpp (+1-1)
- (modified) mlir/lib/Dialect/GPU/TransformOps/GPUTransformOps.cpp (+2-3)
- (modified) mlir/lib/Dialect/Linalg/Transforms/ConvertToDestinationStyle.cpp (+1-1)
- (modified) mlir/lib/Dialect/SPIRV/Transforms/UnifyAliasedResourcePass.cpp (+2-2)
- (modified) mlir/lib/Dialect/Tensor/Transforms/BufferizableOpInterfaceImpl.cpp (+1-1)
- (modified) mlir/lib/IR/AffineMap.cpp (+1-1)
- (modified) mlir/lib/Reducer/ReductionNode.cpp (+2-2)
``````````diff
diff --git a/llvm/include/llvm/ADT/STLExtras.h b/llvm/include/llvm/ADT/STLExtras.h
index 15845dd9333c75..5ac549c4475605 100644
--- a/llvm/include/llvm/ADT/STLExtras.h
+++ b/llvm/include/llvm/ADT/STLExtras.h
@@ -1971,6 +1971,22 @@ auto upper_bound(R &&Range, T &&Value, Compare C) {
std::forward<T>(Value), C);
}
+template <typename R> auto min_element(R &&Range) {
+ return std::min_element(adl_begin(Range), adl_end(Range));
+}
+
+template <typename R, typename Compare> auto min_element(R &&Range, Compare C) {
+ return std::min_element(adl_begin(Range), adl_end(Range), C);
+}
+
+template <typename R> auto max_element(R &&Range) {
+ return std::max_element(adl_begin(Range), adl_end(Range));
+}
+
+template <typename R, typename Compare> auto max_element(R &&Range, Compare C) {
+ return std::max_element(adl_begin(Range), adl_end(Range), C);
+}
+
template <typename R>
void stable_sort(R &&Range) {
std::stable_sort(adl_begin(Range), adl_end(Range));
diff --git a/llvm/include/llvm/CodeGen/RegAllocPBQP.h b/llvm/include/llvm/CodeGen/RegAllocPBQP.h
index 1ea8840947bc88..2f059453bff29d 100644
--- a/llvm/include/llvm/CodeGen/RegAllocPBQP.h
+++ b/llvm/include/llvm/CodeGen/RegAllocPBQP.h
@@ -463,9 +463,7 @@ class RegAllocSolverImpl {
G.disconnectAllNeighborsFromNode(NId);
} else if (!NotProvablyAllocatableNodes.empty()) {
NodeSet::iterator NItr =
- std::min_element(NotProvablyAllocatableNodes.begin(),
- NotProvablyAllocatableNodes.end(),
- SpillCostComparator(G));
+ llvm::min_element(NotProvablyAllocatableNodes, SpillCostComparator(G));
NodeId NId = *NItr;
NotProvablyAllocatableNodes.erase(NItr);
NodeStack.push_back(NId);
diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp
index acc0aa23107bb5..515b9d0744f6e3 100644
--- a/llvm/lib/Analysis/ScalarEvolution.cpp
+++ b/llvm/lib/Analysis/ScalarEvolution.cpp
@@ -10839,10 +10839,9 @@ bool ScalarEvolution::isKnownViaInduction(ICmpInst::Predicate Pred,
#endif
const Loop *MDL =
- *std::max_element(LoopsUsed.begin(), LoopsUsed.end(),
- [&](const Loop *L1, const Loop *L2) {
- return DT.properlyDominates(L1->getHeader(), L2->getHeader());
- });
+ *llvm::max_element(LoopsUsed, [&](const Loop *L1, const Loop *L2) {
+ return DT.properlyDominates(L1->getHeader(), L2->getHeader());
+ });
// Get init and post increment value for LHS.
auto SplitLHS = SplitIntoInitAndPostInc(MDL, LHS);
diff --git a/llvm/lib/DebugInfo/PDB/Native/PDBFile.cpp b/llvm/lib/DebugInfo/PDB/Native/PDBFile.cpp
index 471d183a5f539f..0232cae6e38979 100644
--- a/llvm/lib/DebugInfo/PDB/Native/PDBFile.cpp
+++ b/llvm/lib/DebugInfo/PDB/Native/PDBFile.cpp
@@ -86,8 +86,7 @@ uint32_t PDBFile::getNumStreams() const {
}
uint32_t PDBFile::getMaxStreamSize() const {
- return *std::max_element(ContainerLayout.StreamSizes.begin(),
- ContainerLayout.StreamSizes.end());
+ return *llvm::max_element(ContainerLayout.StreamSizes);
}
uint32_t PDBFile::getStreamByteSize(uint32_t StreamIndex) const {
diff --git a/llvm/lib/IR/DataLayout.cpp b/llvm/lib/IR/DataLayout.cpp
index a2f5714c706874..27411653324874 100644
--- a/llvm/lib/IR/DataLayout.cpp
+++ b/llvm/lib/IR/DataLayout.cpp
@@ -898,7 +898,7 @@ Type *DataLayout::getSmallestLegalIntType(LLVMContext &C, unsigned Width) const
}
unsigned DataLayout::getLargestLegalIntTypeSizeInBits() const {
- auto Max = std::max_element(LegalIntWidths.begin(), LegalIntWidths.end());
+ auto Max = llvm::max_element(LegalIntWidths);
return Max != LegalIntWidths.end() ? *Max : 0;
}
diff --git a/llvm/lib/ObjCopy/MachO/MachOWriter.cpp b/llvm/lib/ObjCopy/MachO/MachOWriter.cpp
index f416796496e9dd..1ff741c830bdb4 100644
--- a/llvm/lib/ObjCopy/MachO/MachOWriter.cpp
+++ b/llvm/lib/ObjCopy/MachO/MachOWriter.cpp
@@ -126,7 +126,7 @@ size_t MachOWriter::totalSize() const {
}
if (!Ends.empty())
- return *std::max_element(Ends.begin(), Ends.end());
+ return *llvm::max_element(Ends);
// Otherwise, we have only Mach header and load commands.
return headerSize() + loadCommandsSize();
diff --git a/llvm/lib/ProfileData/GCOV.cpp b/llvm/lib/ProfileData/GCOV.cpp
index fcfeb5b0f5844c..ee61784abade58 100644
--- a/llvm/lib/ProfileData/GCOV.cpp
+++ b/llvm/lib/ProfileData/GCOV.cpp
@@ -703,7 +703,7 @@ void Context::collectFunction(GCOVFunction &f, Summary &summary) {
for (const GCOVBlock &b : f.blocksRange()) {
if (b.lines.empty())
continue;
- uint32_t maxLineNum = *std::max_element(b.lines.begin(), b.lines.end());
+ uint32_t maxLineNum = *llvm::max_element(b.lines);
if (maxLineNum >= si.lines.size())
si.lines.resize(maxLineNum + 1);
for (uint32_t lineNum : b.lines) {
diff --git a/llvm/lib/Target/AArch64/SVEIntrinsicOpts.cpp b/llvm/lib/Target/AArch64/SVEIntrinsicOpts.cpp
index 880ff8498b876e..fe68203ad5392d 100644
--- a/llvm/lib/Target/AArch64/SVEIntrinsicOpts.cpp
+++ b/llvm/lib/Target/AArch64/SVEIntrinsicOpts.cpp
@@ -138,8 +138,8 @@ bool SVEIntrinsicOpts::coalescePTrueIntrinsicCalls(
return false;
// Find the ptrue with the most lanes.
- auto *MostEncompassingPTrue = *std::max_element(
- PTrues.begin(), PTrues.end(), [](auto *PTrue1, auto *PTrue2) {
+ auto *MostEncompassingPTrue =
+ *llvm::max_element(PTrues, [](auto *PTrue1, auto *PTrue2) {
auto *PTrue1VTy = cast<ScalableVectorType>(PTrue1->getType());
auto *PTrue2VTy = cast<ScalableVectorType>(PTrue2->getType());
return PTrue1VTy->getElementCount().getKnownMinValue() <
diff --git a/llvm/lib/Target/AMDGPU/GCNILPSched.cpp b/llvm/lib/Target/AMDGPU/GCNILPSched.cpp
index 8629db2e2563ee..559dd0ed0c4134 100644
--- a/llvm/lib/Target/AMDGPU/GCNILPSched.cpp
+++ b/llvm/lib/Target/AMDGPU/GCNILPSched.cpp
@@ -313,11 +313,11 @@ GCNILPScheduler::schedule(ArrayRef<const SUnit*> BotRoots,
Schedule.reserve(SUnits.size());
while (true) {
if (AvailQueue.empty() && !PendingQueue.empty()) {
- auto EarliestSU = std::min_element(
- PendingQueue.begin(), PendingQueue.end(),
- [=](const Candidate& C1, const Candidate& C2) {
- return C1.SU->getHeight() < C2.SU->getHeight();
- })->SU;
+ auto EarliestSU =
+ llvm::min_element(PendingQueue, [=](const Candidate &C1,
+ const Candidate &C2) {
+ return C1.SU->getHeight() < C2.SU->getHeight();
+ })->SU;
advanceToCycle(std::max(CurCycle + 1, EarliestSU->getHeight()));
}
if (AvailQueue.empty())
diff --git a/llvm/lib/Target/AMDGPU/SIFixSGPRCopies.cpp b/llvm/lib/Target/AMDGPU/SIFixSGPRCopies.cpp
index 86980ee851bb1f..8b21c22b449710 100644
--- a/llvm/lib/Target/AMDGPU/SIFixSGPRCopies.cpp
+++ b/llvm/lib/Target/AMDGPU/SIFixSGPRCopies.cpp
@@ -973,9 +973,8 @@ bool SIFixSGPRCopies::needToBeConvertedToVALU(V2SCopyInfo *Info) {
Info->Score = 0;
return true;
}
- Info->Siblings = SiblingPenalty[*std::max_element(
- Info->SChain.begin(), Info->SChain.end(),
- [&](MachineInstr *A, MachineInstr *B) -> bool {
+ Info->Siblings = SiblingPenalty[*llvm::max_element(
+ Info->SChain, [&](MachineInstr *A, MachineInstr *B) -> bool {
return SiblingPenalty[A].size() < SiblingPenalty[B].size();
})];
Info->Siblings.remove_if([&](unsigned ID) { return ID == Info->ID; });
diff --git a/llvm/lib/Target/AMDGPU/SIMachineScheduler.cpp b/llvm/lib/Target/AMDGPU/SIMachineScheduler.cpp
index 677f1590287eb4..4476adf95f8d37 100644
--- a/llvm/lib/Target/AMDGPU/SIMachineScheduler.cpp
+++ b/llvm/lib/Target/AMDGPU/SIMachineScheduler.cpp
@@ -904,10 +904,8 @@ void SIScheduleBlockCreator::colorEndsAccordingToDependencies() {
CurrentTopDownReservedDependencyColoring.size() == DAGSize);
// If there is no reserved block at all, do nothing. We don't want
// everything in one block.
- if (*std::max_element(CurrentBottomUpReservedDependencyColoring.begin(),
- CurrentBottomUpReservedDependencyColoring.end()) == 0 &&
- *std::max_element(CurrentTopDownReservedDependencyColoring.begin(),
- CurrentTopDownReservedDependencyColoring.end()) == 0)
+ if (*llvm::max_element(CurrentBottomUpReservedDependencyColoring) == 0 &&
+ *llvm::max_element(CurrentTopDownReservedDependencyColoring) == 0)
return;
for (unsigned SUNum : DAG->BottomUpIndex2SU) {
diff --git a/llvm/lib/Target/Hexagon/HexagonCommonGEP.cpp b/llvm/lib/Target/Hexagon/HexagonCommonGEP.cpp
index 5ad749074a8e29..4ead8c68cb9014 100644
--- a/llvm/lib/Target/Hexagon/HexagonCommonGEP.cpp
+++ b/llvm/lib/Target/Hexagon/HexagonCommonGEP.cpp
@@ -593,7 +593,7 @@ void HexagonCommonGEP::common() {
using ProjMap = std::map<const NodeSet *, GepNode *>;
ProjMap PM;
for (const NodeSet &S : EqRel) {
- GepNode *Min = *std::min_element(S.begin(), S.end(), NodeOrder);
+ GepNode *Min = *llvm::min_element(S, NodeOrder);
std::pair<ProjMap::iterator,bool> Ins = PM.insert(std::make_pair(&S, Min));
(void)Ins;
assert(Ins.second && "Cannot add minimal element");
diff --git a/llvm/lib/Target/Hexagon/HexagonConstExtenders.cpp b/llvm/lib/Target/Hexagon/HexagonConstExtenders.cpp
index 400bb6cfc7319b..f2a02fe9540bfa 100644
--- a/llvm/lib/Target/Hexagon/HexagonConstExtenders.cpp
+++ b/llvm/lib/Target/Hexagon/HexagonConstExtenders.cpp
@@ -1388,11 +1388,10 @@ void HCE::assignInits(const ExtRoot &ER, unsigned Begin, unsigned End,
break;
// Find the best candidate with respect to the number of extenders covered.
- auto BestIt = std::max_element(Counts.begin(), Counts.end(),
- [](const CMap::value_type &A, const CMap::value_type &B) {
- return A.second < B.second ||
- (A.second == B.second && A < B);
- });
+ auto BestIt = llvm::max_element(
+ Counts, [](const CMap::value_type &A, const CMap::value_type &B) {
+ return A.second < B.second || (A.second == B.second && A < B);
+ });
int32_t Best = BestIt->first;
ExtValue BestV(ER, Best);
for (RangeTree::Node *N : Tree.nodesWith(Best)) {
diff --git a/llvm/lib/Target/Hexagon/HexagonGenInsert.cpp b/llvm/lib/Target/Hexagon/HexagonGenInsert.cpp
index 44f21dbacd3c2c..1e373f6061bbfc 100644
--- a/llvm/lib/Target/Hexagon/HexagonGenInsert.cpp
+++ b/llvm/lib/Target/Hexagon/HexagonGenInsert.cpp
@@ -1314,7 +1314,7 @@ void HexagonGenInsert::selectCandidates() {
// element found is adequate, we will put it back on the list, other-
// wise the list will remain empty, and the entry for this register
// will be removed (i.e. this register will not be replaced by insert).
- IFListType::iterator MinI = std::min_element(LL.begin(), LL.end(), IFO);
+ IFListType::iterator MinI = llvm::min_element(LL, IFO);
assert(MinI != LL.end());
IFRecordWithRegSet M = *MinI;
LL.clear();
diff --git a/llvm/lib/Target/Hexagon/HexagonVectorCombine.cpp b/llvm/lib/Target/Hexagon/HexagonVectorCombine.cpp
index 7231388445d515..797b798520aa15 100644
--- a/llvm/lib/Target/Hexagon/HexagonVectorCombine.cpp
+++ b/llvm/lib/Target/Hexagon/HexagonVectorCombine.cpp
@@ -1411,9 +1411,9 @@ auto AlignVectors::realignGroup(const MoveGroup &Move) const -> bool {
// Return the element with the maximum alignment from Range,
// where GetValue obtains the value to compare from an element.
auto getMaxOf = [](auto Range, auto GetValue) {
- return *std::max_element(
- Range.begin(), Range.end(),
- [&GetValue](auto &A, auto &B) { return GetValue(A) < GetValue(B); });
+ return *llvm::max_element(Range, [&GetValue](auto &A, auto &B) {
+ return GetValue(A) < GetValue(B);
+ });
};
const AddrList &BaseInfos = AddrGroups.at(Move.Base);
diff --git a/llvm/lib/Transforms/Scalar/GVNSink.cpp b/llvm/lib/Transforms/Scalar/GVNSink.cpp
index 2b38831139a580..d4907326eb0a5a 100644
--- a/llvm/lib/Transforms/Scalar/GVNSink.cpp
+++ b/llvm/lib/Transforms/Scalar/GVNSink.cpp
@@ -655,8 +655,7 @@ GVNSink::analyzeInstructionForSinking(LockstepReverseIterator &LRI,
return std::nullopt;
VNums[N]++;
}
- unsigned VNumToSink =
- std::max_element(VNums.begin(), VNums.end(), llvm::less_second())->first;
+ unsigned VNumToSink = llvm::max_element(VNums, llvm::less_second())->first;
if (VNums[VNumToSink] == 1)
// Can't sink anything!
diff --git a/llvm/lib/Transforms/Scalar/JumpThreading.cpp b/llvm/lib/Transforms/Scalar/JumpThreading.cpp
index a04987ce66241b..221b122caba202 100644
--- a/llvm/lib/Transforms/Scalar/JumpThreading.cpp
+++ b/llvm/lib/Transforms/Scalar/JumpThreading.cpp
@@ -1488,7 +1488,7 @@ findMostPopularDest(BasicBlock *BB,
// Populate DestPopularity with the successors in the order they appear in the
// successor list. This way, we ensure determinism by iterating it in the
- // same order in std::max_element below. We map nullptr to 0 so that we can
+ // same order in llvm::max_element below. We map nullptr to 0 so that we can
// return nullptr when PredToDestList contains nullptr only.
DestPopularity[nullptr] = 0;
for (auto *SuccBB : successors(BB))
@@ -1499,8 +1499,7 @@ findMostPopularDest(BasicBlock *BB,
DestPopularity[PredToDest.second]++;
// Find the most popular dest.
- auto MostPopular = std::max_element(
- DestPopularity.begin(), DestPopularity.end(), llvm::less_second());
+ auto MostPopular = llvm::max_element(DestPopularity, llvm::less_second());
// Okay, we have finally picked the most popular destination.
return MostPopular->first;
@@ -2553,8 +2552,7 @@ void JumpThreadingPass::updateBlockFreqAndEdgeWeight(BasicBlock *PredBB,
BBSuccFreq.push_back(SuccFreq.getFrequency());
}
- uint64_t MaxBBSuccFreq =
- *std::max_element(BBSuccFreq.begin(), BBSuccFreq.end());
+ uint64_t MaxBBSuccFreq = *llvm::max_element(BBSuccFreq);
SmallVector<BranchProbability, 4> BBSuccProbs;
if (MaxBBSuccFreq == 0)
diff --git a/llvm/lib/Transforms/Scalar/LoopLoadElimination.cpp b/llvm/lib/Transforms/Scalar/LoopLoadElimination.cpp
index 914cf6e21028ae..edddfb1b92402f 100644
--- a/llvm/lib/Transforms/Scalar/LoopLoadElimination.cpp
+++ b/llvm/lib/Transforms/Scalar/LoopLoadElimination.cpp
@@ -349,19 +349,20 @@ class LoadEliminationForLoop {
// ld0.
LoadInst *LastLoad =
- std::max_element(Candidates.begin(), Candidates.end(),
- [&](const StoreToLoadForwardingCandidate &A,
- const StoreToLoadForwardingCandidate &B) {
- return getInstrIndex(A.Load) < getInstrIndex(B.Load);
- })
+ llvm::max_element(Candidates,
+ [&](const StoreToLoadForwardingCandidate &A,
+ const StoreToLoadForwardingCandidate &B) {
+ return getInstrIndex(A.Load) <
+ getInstrIndex(B.Load);
+ })
->Load;
StoreInst *FirstStore =
- std::min_element(Candidates.begin(), Candidates.end(),
- [&](const StoreToLoadForwardingCandidate &A,
- const StoreToLoadForwardingCandidate &B) {
- return getInstrIndex(A.Store) <
- getInstrIndex(B.Store);
- })
+ llvm::min_element(Candidates,
+ [&](const StoreToLoadForwardingCandidate &A,
+ const StoreToLoadForwardingCandidate &B) {
+ return getInstrIndex(A.Store) <
+ getInstrIndex(B.Store);
+ })
->Store;
// We're looking for stores after the first forwarding store until the end
diff --git a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
index fe65e52110f97a..5b9a38c0b74ec7 100644
--- a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
+++ b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
@@ -1084,7 +1084,7 @@ static void GetBranchWeights(Instruction *TI,
/// Keep halving the weights until all can fit in uint32_t.
static void FitWeights(MutableArrayRef<uint64_t> Weights) {
- uint64_t Max = *std::max_element(Weights.begin(), Weights.end());
+ uint64_t Max = *llvm::max_element(Weights);
if (Max > UINT_MAX) {
unsigned Offset = 32 - llvm::countl_zero(Max);
for (uint64_t &I : Weights)
diff --git a/llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp b/llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp
index 1f11d4894f775c..6ba278794b7fb4 100644
--- a/llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp
+++ b/llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp
@@ -892,7 +892,7 @@ bool Vectorizer::vectorizeChain(Chain &C) {
// Loads get hoisted to the location of the first load in the chain. We may
// also need to hoist the (transitive) operands of the loads.
Builder.SetInsertPoint(
- std::min_element(C.begin(), C.end(), [](const auto &A, const auto &B) {
+ llvm::min_element(C, [](const auto &A, const auto &B) {
return A.Inst->comesBefore(B.Inst);
})->Inst);
@@ -944,10 +944,9 @@ bool Vectorizer::vectorizeChain(Chain &C) {
reorder(VecInst);
} else {
// Stores get sunk to the location of the last store in the chain.
- Builder.SetInsertPoint(
- std::max_element(C.begin(), C.end(), [](auto &A, auto &B) {
- return A.Inst->comesBefore(B.Inst);
- })->Inst);
+ Builder.SetInsertPoint(llvm::max_element(C, [](auto &A, auto &B) {
+ return A.Inst->comesBefore(B.Inst);
+ })->Inst);
// Build the vector to store.
Value *Vec = PoisonValue::get(VecTy);
diff --git a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
index 36dc9094538ae9..7b99c3ac8c55a5 100644
--- a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+++ b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
@@ -10172,11 +10172,10 @@ BoUpSLP::isGatherShuffledSingleRegisterEntry(
// No 2 source vectors with the same vector factor - just choose 2 with max
// index.
if (Entries.empty()) {
- Entries.push_back(
- *std::max_element(UsedTEs.front().begin(), UsedTEs.front().end(),
- [](const TreeEntry *TE1, const TreeEntry *TE2) {
- return TE1->Idx < TE2->Idx;
- }));
+ Entries.push_back(*llvm::max_element(
+ UsedTEs.front(), [](const TreeEntry *TE1, const TreeEntry *TE2) {
+ return TE1->Idx < TE2->Idx;
+ }));
Entries.push_back(SecondEntries.front());
VF = std::max(Entries.front()->getVectorFactor(),
Entries.back()->getVectorFactor());
diff --git a/llvm/tools/llvm-exegesis/lib/LatencyBenchmarkRunner.cpp b/llvm/tools/llvm-exegesis/lib/LatencyBenchmarkRunner.cpp
index de61fff6432944..684868cf23e8f8 100644
--- a/llvm/tools/llvm-exegesis/lib/LatencyBenchmarkRunner.cpp
+++ b/llvm/tools/llvm-exegesis/lib/LatencyBenchmarkRunner.cpp
@@ -52,13 +52,13 @@ static double computeVariance(const SmallVector<int64_t, 4> &Values) {
static int64_t findMin(const SmallVector<int64_t, 4> &Values) {
if (Values.empty())
return 0;
- return *std::min_element(Values.begin(), Values.end());
+ return *llvm::min_element(Values);
}
static int64_t findMax(const SmallVector<int64_t, 4> &Values) {
if (Values.empty())
return 0;
- return *std::max_element(Values.begin(), Values.end());
+ return *llvm::max_element(Values);
}
static int64_t findMean(const SmallVector<int64_t, 4> &Values) {
diff --git a/llvm/tools/llvm-mca/Views/BottleneckAnalysis.cpp b/llvm/tools/llvm-mca/Views/BottleneckAnalysis.cpp
index b702113b39617a..409a7010b80c8d 100644
--- a/llvm/tools/llvm-mca/Views/BottleneckAnalysis.cpp
+++ b/llvm/tools/llvm-mca/Views/BottleneckAnalysis.cpp
@@ -270,9 +270,10 @@ void DependencyGraph::getCriticalSequence(
// To obtain the sequence of critical edges, we simply follow the chain of
// critical predecessors starting from node N (field
// DGNode::CriticalPredecessor).
- const auto It = st...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/84678
More information about the Mlir-commits
mailing list