[llvm] [SandboxVec] Move seed selection into its own separate pass (PR #127132)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Feb 13 14:05:10 PST 2025
https://github.com/vporpo created https://github.com/llvm/llvm-project/pull/127132
This patch moves the seed selection logic from the BottomUpVec pass into a new Sandbox IR Function pass. The new "seed-selection" pass collects the seeds, builds a region and runs the region pass pipeline.
>From f20dc7ac5b04b3989f5d58270c5ebfe92847fbc3 Mon Sep 17 00:00:00 2001
From: Vasileios Porpodas <vporpodas at google.com>
Date: Wed, 29 Jan 2025 09:53:39 -0800
Subject: [PATCH] [SandboxVec] Move seed selection into its own separate pass
This patch moves the seed selection logic from the BottomUpVec pass into
a new Sandbox IR Function pass. The new "seed-selection" pass collects the
seeds, builds a region and runs the region pass pipeline.
---
.../SandboxVectorizer/Passes/BottomUpVec.h | 14 +--
.../SandboxVectorizer/Passes/SeedSelection.h | 36 +++++++
llvm/lib/Transforms/Vectorize/CMakeLists.txt | 1 +
.../SandboxVectorizer/Passes/BottomUpVec.cpp | 97 +++----------------
.../SandboxVectorizer/Passes/PassRegistry.def | 3 +-
.../Passes/SeedSelection.cpp | 97 +++++++++++++++++++
.../SandboxVectorizer/SandboxVectorizer.cpp | 6 +-
.../SandboxVectorizerPassBuilder.cpp | 1 +
.../SandboxVectorizer/bottomup_basic.ll | 2 +-
.../SandboxVectorizer/bottomup_seed_slice.ll | 2 +-
.../bottomup_seed_slice_pow2.ll | 4 +-
.../Transforms/SandboxVectorizer/cross_bbs.ll | 2 +-
.../default_pass_pipeline.ll | 3 +-
.../test/Transforms/SandboxVectorizer/pack.ll | 2 +-
.../SandboxVectorizer/user_pass_pipeline.ll | 8 +-
15 files changed, 167 insertions(+), 111 deletions(-)
create mode 100644 llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes/SeedSelection.h
create mode 100644 llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/SeedSelection.cpp
diff --git a/llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes/BottomUpVec.h b/llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes/BottomUpVec.h
index 147a86de4e34e..4712ea7eae29e 100644
--- a/llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes/BottomUpVec.h
+++ b/llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes/BottomUpVec.h
@@ -16,14 +16,13 @@
#include "llvm/ADT/StringRef.h"
#include "llvm/SandboxIR/Constant.h"
#include "llvm/SandboxIR/Pass.h"
-#include "llvm/SandboxIR/PassManager.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Transforms/Vectorize/SandboxVectorizer/InstrMaps.h"
#include "llvm/Transforms/Vectorize/SandboxVectorizer/Legality.h"
namespace llvm::sandboxir {
-class BottomUpVec final : public FunctionPass {
+class BottomUpVec final : public RegionPass {
bool Change = false;
std::unique_ptr<LegalityAnalysis> Legality;
/// The original instructions that are potentially dead after vectorization.
@@ -55,16 +54,9 @@ class BottomUpVec final : public FunctionPass {
/// Entry point for vectorization starting from \p Seeds.
bool tryVectorize(ArrayRef<Value *> Seeds);
- /// The PM containing the pipeline of region passes.
- RegionPassManager RPM;
-
public:
- BottomUpVec(StringRef Pipeline);
- bool runOnFunction(Function &F, const Analyses &A) final;
- void printPipeline(raw_ostream &OS) const final {
- OS << getName() << "\n";
- RPM.printPipeline(OS);
- }
+ BottomUpVec() : RegionPass("bottom-up-vec") {}
+ bool runOnRegion(Region &Rgn, const Analyses &A) final;
};
} // namespace llvm::sandboxir
diff --git a/llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes/SeedSelection.h b/llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes/SeedSelection.h
new file mode 100644
index 0000000000000..f93e3d6677fa5
--- /dev/null
+++ b/llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes/SeedSelection.h
@@ -0,0 +1,36 @@
+//===- SeedSelection.h ------------------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// The seed-selection pass of the bottom-up vectorizer
+//
+
+#ifndef LLVM_TRANSFORMS_VECTORIZE_SANDBOXVECTORIZER_PASSES_SEEDSELECTION_H
+#define LLVM_TRANSFORMS_VECTORIZE_SANDBOXVECTORIZER_PASSES_SEEDSELECTION_H
+
+#include "llvm/SandboxIR/Pass.h"
+#include "llvm/SandboxIR/PassManager.h"
+
+namespace llvm::sandboxir {
+
+class SeedSelection final : public FunctionPass {
+
+ /// The PM containing the pipeline of region passes.
+ RegionPassManager RPM;
+
+public:
+ SeedSelection(StringRef Pipeline);
+ bool runOnFunction(Function &F, const Analyses &A) final;
+ void printPipeline(raw_ostream &OS) const final {
+ OS << getName() << "\n";
+ RPM.printPipeline(OS);
+ }
+};
+
+} // namespace llvm::sandboxir
+
+#endif // LLVM_TRANSFORMS_VECTORIZE_SANDBOXVECTORIZER_PASSES_SEEDSELECTION_H
diff --git a/llvm/lib/Transforms/Vectorize/CMakeLists.txt b/llvm/lib/Transforms/Vectorize/CMakeLists.txt
index 872e055294d55..88e10402e5f65 100644
--- a/llvm/lib/Transforms/Vectorize/CMakeLists.txt
+++ b/llvm/lib/Transforms/Vectorize/CMakeLists.txt
@@ -9,6 +9,7 @@ add_llvm_component_library(LLVMVectorize
SandboxVectorizer/Legality.cpp
SandboxVectorizer/Passes/BottomUpVec.cpp
SandboxVectorizer/Passes/RegionsFromMetadata.cpp
+ SandboxVectorizer/Passes/SeedSelection.cpp
SandboxVectorizer/Passes/TransactionAcceptOrRevert.cpp
SandboxVectorizer/SandboxVectorizer.cpp
SandboxVectorizer/SandboxVectorizerPassBuilder.cpp
diff --git a/llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/BottomUpVec.cpp b/llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/BottomUpVec.cpp
index 0ccef5aecd28b..d57732090dcd6 100644
--- a/llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/BottomUpVec.cpp
+++ b/llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/BottomUpVec.cpp
@@ -14,20 +14,10 @@
#include "llvm/SandboxIR/Module.h"
#include "llvm/SandboxIR/Region.h"
#include "llvm/SandboxIR/Utils.h"
-#include "llvm/Transforms/Vectorize/SandboxVectorizer/SandboxVectorizerPassBuilder.h"
-#include "llvm/Transforms/Vectorize/SandboxVectorizer/SeedCollector.h"
#include "llvm/Transforms/Vectorize/SandboxVectorizer/VecUtils.h"
namespace llvm {
-static cl::opt<unsigned>
- OverrideVecRegBits("sbvec-vec-reg-bits", cl::init(0), cl::Hidden,
- cl::desc("Override the vector register size in bits, "
- "which is otherwise found by querying TTI."));
-static cl::opt<bool>
- AllowNonPow2("sbvec-allow-non-pow2", cl::init(false), cl::Hidden,
- cl::desc("Allow non-power-of-2 vectorization."));
-
#ifndef NDEBUG
static cl::opt<bool>
AlwaysVerify("sbvec-always-verify", cl::init(false), cl::Hidden,
@@ -37,10 +27,6 @@ static cl::opt<bool>
namespace sandboxir {
-BottomUpVec::BottomUpVec(StringRef Pipeline)
- : FunctionPass("bottom-up-vec"),
- RPM("rpm", Pipeline, SandboxVectorizerPassBuilder::createRegionPass) {}
-
static SmallVector<Value *, 4> getOperand(ArrayRef<Value *> Bndl,
unsigned OpIdx) {
SmallVector<Value *, 4> Operands;
@@ -413,6 +399,7 @@ Value *BottomUpVec::vectorizeRec(ArrayRef<Value *> Bndl,
}
bool BottomUpVec::tryVectorize(ArrayRef<Value *> Bndl) {
+ Change = false;
DeadInstrCandidates.clear();
Legality->clear();
vectorizeRec(Bndl, {}, /*Depth=*/0);
@@ -420,83 +407,21 @@ bool BottomUpVec::tryVectorize(ArrayRef<Value *> Bndl) {
return Change;
}
-bool BottomUpVec::runOnFunction(Function &F, const Analyses &A) {
+bool BottomUpVec::runOnRegion(Region &Rgn, const Analyses &A) {
+ const auto &SeedSlice = Rgn.getAux();
+ assert(SeedSlice.size() >= 2 && "Bad slice!");
+ Function &F = *SeedSlice[0]->getParent()->getParent();
IMaps = std::make_unique<InstrMaps>(F.getContext());
Legality = std::make_unique<LegalityAnalysis>(
A.getAA(), A.getScalarEvolution(), F.getParent()->getDataLayout(),
F.getContext(), *IMaps);
- Change = false;
- const auto &DL = F.getParent()->getDataLayout();
- unsigned VecRegBits =
- OverrideVecRegBits != 0
- ? OverrideVecRegBits
- : A.getTTI()
- .getRegisterBitWidth(TargetTransformInfo::RGK_FixedWidthVector)
- .getFixedValue();
-
- // TODO: Start from innermost BBs first
- for (auto &BB : F) {
- SeedCollector SC(&BB, A.getScalarEvolution());
- for (SeedBundle &Seeds : SC.getStoreSeeds()) {
- unsigned ElmBits =
- Utils::getNumBits(VecUtils::getElementType(Utils::getExpectedType(
- Seeds[Seeds.getFirstUnusedElementIdx()])),
- DL);
-
- auto DivideBy2 = [](unsigned Num) {
- auto Floor = VecUtils::getFloorPowerOf2(Num);
- if (Floor == Num)
- return Floor / 2;
- return Floor;
- };
- // Try to create the largest vector supported by the target. If it fails
- // reduce the vector size by half.
- for (unsigned SliceElms = std::min(VecRegBits / ElmBits,
- Seeds.getNumUnusedBits() / ElmBits);
- SliceElms >= 2u; SliceElms = DivideBy2(SliceElms)) {
- if (Seeds.allUsed())
- break;
- // Keep trying offsets after FirstUnusedElementIdx, until we vectorize
- // the slice. This could be quite expensive, so we enforce a limit.
- for (unsigned Offset = Seeds.getFirstUnusedElementIdx(),
- OE = Seeds.size();
- Offset + 1 < OE; Offset += 1) {
- // Seeds are getting used as we vectorize, so skip them.
- if (Seeds.isUsed(Offset))
- continue;
- if (Seeds.allUsed())
- break;
- auto SeedSlice =
- Seeds.getSlice(Offset, SliceElms * ElmBits, !AllowNonPow2);
- if (SeedSlice.empty())
- continue;
-
- assert(SeedSlice.size() >= 2 && "Should have been rejected!");
-
- // TODO: Refactor to remove the unnecessary copy to SeedSliceVals.
- SmallVector<Value *> SeedSliceVals(SeedSlice.begin(),
- SeedSlice.end());
- // Create an empty region. Instructions get added to the region
- // automatically by the callbacks.
- auto &Ctx = F.getContext();
- Region Rgn(Ctx, A.getTTI());
- // Save the state of the IR before we make any changes. The
- // transaction gets accepted/reverted by the tr-accept-or-revert pass.
- Ctx.save();
- // Try to vectorize starting from the seed slice. The returned value
- // is true if we found vectorizable code and generated some vector
- // code for it. It does not mean that the code is profitable.
- bool VecSuccess = tryVectorize(SeedSliceVals);
- if (VecSuccess)
- // WARNING: All passes should return false, except those that
- // accept/revert the state.
- Change |= RPM.runOnRegion(Rgn, A);
- }
- }
- }
- }
- return Change;
+ // TODO: Refactor to remove the unnecessary copy to SeedSliceVals.
+ SmallVector<Value *> SeedSliceVals(SeedSlice.begin(), SeedSlice.end());
+ // Try to vectorize starting from the seed slice. The returned value
+ // is true if we found vectorizable code and generated some vector
+ // code for it. It does not mean that the code is profitable.
+ return tryVectorize(SeedSliceVals);
}
} // namespace sandboxir
diff --git a/llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/PassRegistry.def b/llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/PassRegistry.def
index f3aa12729860f..384cd98e6a016 100644
--- a/llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/PassRegistry.def
+++ b/llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/PassRegistry.def
@@ -21,6 +21,7 @@ REGION_PASS("null", ::llvm::sandboxir::NullPass)
REGION_PASS("print-instruction-count", ::llvm::sandboxir::PrintInstructionCount)
REGION_PASS("tr-accept", ::llvm::sandboxir::TransactionAlwaysAccept)
REGION_PASS("tr-accept-or-revert", ::llvm::sandboxir::TransactionAcceptOrRevert)
+REGION_PASS("bottom-up-vec", ::llvm::sandboxir::BottomUpVec)
#undef REGION_PASS
@@ -28,7 +29,7 @@ REGION_PASS("tr-accept-or-revert", ::llvm::sandboxir::TransactionAcceptOrRevert)
#define FUNCTION_PASS_WITH_PARAMS(NAME, CLASS_NAME)
#endif
-FUNCTION_PASS_WITH_PARAMS("bottom-up-vec", ::llvm::sandboxir::BottomUpVec)
+FUNCTION_PASS_WITH_PARAMS("seed-selection", ::llvm::sandboxir::SeedSelection)
FUNCTION_PASS_WITH_PARAMS("regions-from-metadata", ::llvm::sandboxir::RegionsFromMetadata)
#undef FUNCTION_PASS_WITH_PARAMS
diff --git a/llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/SeedSelection.cpp b/llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/SeedSelection.cpp
new file mode 100644
index 0000000000000..fd2854f0426a3
--- /dev/null
+++ b/llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/SeedSelection.cpp
@@ -0,0 +1,97 @@
+//===- SeedSelection.cpp - Seed selection pass of the bottom-up vectorizer ===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/Analysis/TargetTransformInfo.h"
+#include "llvm/SandboxIR/Module.h"
+#include "llvm/SandboxIR/Region.h"
+#include "llvm/Transforms/Vectorize/SandboxVectorizer/Passes/SeedSelection.h"
+#include "llvm/Transforms/Vectorize/SandboxVectorizer/SandboxVectorizerPassBuilder.h"
+#include "llvm/Transforms/Vectorize/SandboxVectorizer/SeedCollector.h"
+#include "llvm/Transforms/Vectorize/SandboxVectorizer/VecUtils.h"
+
+namespace llvm {
+
+static cl::opt<unsigned>
+ OverrideVecRegBits("sbvec-vec-reg-bits", cl::init(0), cl::Hidden,
+ cl::desc("Override the vector register size in bits, "
+ "which is otherwise found by querying TTI."));
+static cl::opt<bool>
+ AllowNonPow2("sbvec-allow-non-pow2", cl::init(false), cl::Hidden,
+ cl::desc("Allow non-power-of-2 vectorization."));
+
+namespace sandboxir {
+SeedSelection::SeedSelection(StringRef Pipeline)
+ : FunctionPass("seed-selection"),
+ RPM("rpm", Pipeline, SandboxVectorizerPassBuilder::createRegionPass) {}
+
+bool SeedSelection::runOnFunction(Function &F, const Analyses &A) {
+ bool Change = false;
+ const auto &DL = F.getParent()->getDataLayout();
+ unsigned VecRegBits =
+ OverrideVecRegBits != 0
+ ? OverrideVecRegBits
+ : A.getTTI()
+ .getRegisterBitWidth(TargetTransformInfo::RGK_FixedWidthVector)
+ .getFixedValue();
+
+ // TODO: Start from innermost BBs first
+ for (auto &BB : F) {
+ SeedCollector SC(&BB, A.getScalarEvolution());
+ for (SeedBundle &Seeds : SC.getStoreSeeds()) {
+ unsigned ElmBits =
+ Utils::getNumBits(VecUtils::getElementType(Utils::getExpectedType(
+ Seeds[Seeds.getFirstUnusedElementIdx()])),
+ DL);
+
+ auto DivideBy2 = [](unsigned Num) {
+ auto Floor = VecUtils::getFloorPowerOf2(Num);
+ if (Floor == Num)
+ return Floor / 2;
+ return Floor;
+ };
+ // Try to create the largest vector supported by the target. If it fails
+ // reduce the vector size by half.
+ for (unsigned SliceElms = std::min(VecRegBits / ElmBits,
+ Seeds.getNumUnusedBits() / ElmBits);
+ SliceElms >= 2u; SliceElms = DivideBy2(SliceElms)) {
+ if (Seeds.allUsed())
+ break;
+ // Keep trying offsets after FirstUnusedElementIdx, until we vectorize
+ // the slice. This could be quite expensive, so we enforce a limit.
+ for (unsigned Offset = Seeds.getFirstUnusedElementIdx(),
+ OE = Seeds.size();
+ Offset + 1 < OE; Offset += 1) {
+ // Seeds are getting used as we vectorize, so skip them.
+ if (Seeds.isUsed(Offset))
+ continue;
+ if (Seeds.allUsed())
+ break;
+
+ auto SeedSlice =
+ Seeds.getSlice(Offset, SliceElms * ElmBits, !AllowNonPow2);
+ if (SeedSlice.empty())
+ continue;
+
+ assert(SeedSlice.size() >= 2 && "Should have been rejected!");
+
+ // Create a region containing the seed slice.
+ auto &Ctx = F.getContext();
+ Region Rgn(Ctx, A.getTTI());
+ // TODO: Replace save() with a save pass in the pass pipeline.
+ Ctx.save();
+ Rgn.setAux(SeedSlice);
+ // Run the region pass pipeline.
+ Change |= RPM.runOnRegion(Rgn, A);
+ }
+ }
+ }
+ }
+ return Change;
+}
+} // namespace sandboxir
+} // namespace llvm
diff --git a/llvm/lib/Transforms/Vectorize/SandboxVectorizer/SandboxVectorizer.cpp b/llvm/lib/Transforms/Vectorize/SandboxVectorizer/SandboxVectorizer.cpp
index b233d35212f94..cade41b00f4e3 100644
--- a/llvm/lib/Transforms/Vectorize/SandboxVectorizer/SandboxVectorizer.cpp
+++ b/llvm/lib/Transforms/Vectorize/SandboxVectorizer/SandboxVectorizer.cpp
@@ -32,9 +32,11 @@ static cl::opt<std::string> UserDefinedPassPipeline(
SandboxVectorizerPass::SandboxVectorizerPass() : FPM("fpm") {
if (UserDefinedPassPipeline == DefaultPipelineMagicStr) {
// TODO: Add passes to the default pipeline. It currently contains:
- // - the bottom-up-vectorizer pass
+ // - Seed selection, which creates seed regions and runs the pipeline
+ // - Bottom-up Vectorizer pass that starts from a seed
+ // - Accept or revert IR state pass
FPM.setPassPipeline(
- "bottom-up-vec<tr-accept-or-revert>",
+ "seed-selection<bottom-up-vec,tr-accept-or-revert>",
sandboxir::SandboxVectorizerPassBuilder::createFunctionPass);
} else {
// Create the user-defined pipeline.
diff --git a/llvm/lib/Transforms/Vectorize/SandboxVectorizer/SandboxVectorizerPassBuilder.cpp b/llvm/lib/Transforms/Vectorize/SandboxVectorizer/SandboxVectorizerPassBuilder.cpp
index 0c1ab55e91a5c..f3d044cad62fd 100644
--- a/llvm/lib/Transforms/Vectorize/SandboxVectorizer/SandboxVectorizerPassBuilder.cpp
+++ b/llvm/lib/Transforms/Vectorize/SandboxVectorizer/SandboxVectorizerPassBuilder.cpp
@@ -4,6 +4,7 @@
#include "llvm/Transforms/Vectorize/SandboxVectorizer/Passes/NullPass.h"
#include "llvm/Transforms/Vectorize/SandboxVectorizer/Passes/PrintInstructionCount.h"
#include "llvm/Transforms/Vectorize/SandboxVectorizer/Passes/RegionsFromMetadata.h"
+#include "llvm/Transforms/Vectorize/SandboxVectorizer/Passes/SeedSelection.h"
#include "llvm/Transforms/Vectorize/SandboxVectorizer/Passes/TransactionAcceptOrRevert.h"
#include "llvm/Transforms/Vectorize/SandboxVectorizer/Passes/TransactionAlwaysAccept.h"
diff --git a/llvm/test/Transforms/SandboxVectorizer/bottomup_basic.ll b/llvm/test/Transforms/SandboxVectorizer/bottomup_basic.ll
index 6b18d4069e0ae..bbc6ab069b307 100644
--- a/llvm/test/Transforms/SandboxVectorizer/bottomup_basic.ll
+++ b/llvm/test/Transforms/SandboxVectorizer/bottomup_basic.ll
@@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
-; RUN: opt -passes=sandbox-vectorizer -sbvec-vec-reg-bits=1024 -sbvec-allow-non-pow2 -sbvec-passes="bottom-up-vec<tr-accept>" %s -S | FileCheck %s
+; RUN: opt -passes=sandbox-vectorizer -sbvec-vec-reg-bits=1024 -sbvec-allow-non-pow2 -sbvec-passes="seed-selection<bottom-up-vec,tr-accept>" %s -S | FileCheck %s
define void @store_load(ptr %ptr) {
; CHECK-LABEL: define void @store_load(
diff --git a/llvm/test/Transforms/SandboxVectorizer/bottomup_seed_slice.ll b/llvm/test/Transforms/SandboxVectorizer/bottomup_seed_slice.ll
index 202b5a6fbd6c9..219cc7b73027a 100644
--- a/llvm/test/Transforms/SandboxVectorizer/bottomup_seed_slice.ll
+++ b/llvm/test/Transforms/SandboxVectorizer/bottomup_seed_slice.ll
@@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
-; RUN: opt -passes=sandbox-vectorizer -sbvec-vec-reg-bits=1024 -sbvec-allow-non-pow2 -sbvec-passes="bottom-up-vec<tr-accept>" %s -S | FileCheck %s
+; RUN: opt -passes=sandbox-vectorizer -sbvec-vec-reg-bits=1024 -sbvec-allow-non-pow2 -sbvec-passes="seed-selection<bottom-up-vec,tr-accept>" %s -S | FileCheck %s
declare void @foo()
diff --git a/llvm/test/Transforms/SandboxVectorizer/bottomup_seed_slice_pow2.ll b/llvm/test/Transforms/SandboxVectorizer/bottomup_seed_slice_pow2.ll
index 1b189831569f5..6eed3b5cb234e 100644
--- a/llvm/test/Transforms/SandboxVectorizer/bottomup_seed_slice_pow2.ll
+++ b/llvm/test/Transforms/SandboxVectorizer/bottomup_seed_slice_pow2.ll
@@ -1,6 +1,6 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
-; RUN: opt -passes=sandbox-vectorizer -sbvec-vec-reg-bits=1024 -sbvec-allow-non-pow2=false -sbvec-passes="bottom-up-vec<tr-accept>" %s -S | FileCheck %s --check-prefix=POW2
-; RUN: opt -passes=sandbox-vectorizer -sbvec-vec-reg-bits=1024 -sbvec-allow-non-pow2=true -sbvec-passes="bottom-up-vec<tr-accept>" %s -S | FileCheck %s --check-prefix=NON-POW2
+; RUN: opt -passes=sandbox-vectorizer -sbvec-vec-reg-bits=1024 -sbvec-allow-non-pow2=false -sbvec-passes="seed-selection<bottom-up-vec,tr-accept>" %s -S | FileCheck %s --check-prefix=POW2
+; RUN: opt -passes=sandbox-vectorizer -sbvec-vec-reg-bits=1024 -sbvec-allow-non-pow2=true -sbvec-passes="seed-selection<bottom-up-vec,tr-accept>" %s -S | FileCheck %s --check-prefix=NON-POW2
define void @pow2(ptr %ptr, float %val) {
; POW2-LABEL: define void @pow2(
diff --git a/llvm/test/Transforms/SandboxVectorizer/cross_bbs.ll b/llvm/test/Transforms/SandboxVectorizer/cross_bbs.ll
index ff1604173c317..9a2ea4d613435 100644
--- a/llvm/test/Transforms/SandboxVectorizer/cross_bbs.ll
+++ b/llvm/test/Transforms/SandboxVectorizer/cross_bbs.ll
@@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
-; RUN: opt -passes=sandbox-vectorizer -sbvec-vec-reg-bits=1024 -sbvec-allow-non-pow2 -sbvec-passes="bottom-up-vec<tr-accept>" %s -S | FileCheck %s
+; RUN: opt -passes=sandbox-vectorizer -sbvec-vec-reg-bits=1024 -sbvec-allow-non-pow2 -sbvec-passes="seed-selection<bottom-up-vec,tr-accept>" %s -S | FileCheck %s
define void @cross_bbs(ptr %ptr) {
; CHECK-LABEL: define void @cross_bbs(
diff --git a/llvm/test/Transforms/SandboxVectorizer/default_pass_pipeline.ll b/llvm/test/Transforms/SandboxVectorizer/default_pass_pipeline.ll
index 10de4338caf23..f0740d41fc508 100644
--- a/llvm/test/Transforms/SandboxVectorizer/default_pass_pipeline.ll
+++ b/llvm/test/Transforms/SandboxVectorizer/default_pass_pipeline.ll
@@ -5,8 +5,9 @@
; This checks the default pass pipeline for the sandbox vectorizer.
define void @pipeline() {
; CHECK: fpm
-; CHECK: bottom-up-vec
+; CHECK: seed-selection
; CHECK: rpm
+; CHECK: bottom-up-vec
; CHECK: tr-accept-or-revert
; CHECK-EMPTY:
ret void
diff --git a/llvm/test/Transforms/SandboxVectorizer/pack.ll b/llvm/test/Transforms/SandboxVectorizer/pack.ll
index da41036e3a58b..3843bd5d8161e 100644
--- a/llvm/test/Transforms/SandboxVectorizer/pack.ll
+++ b/llvm/test/Transforms/SandboxVectorizer/pack.ll
@@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
-; RUN: opt -passes=sandbox-vectorizer -sbvec-vec-reg-bits=1024 -sbvec-allow-non-pow2 -sbvec-passes="bottom-up-vec<tr-accept>" %s -S | FileCheck %s
+; RUN: opt -passes=sandbox-vectorizer -sbvec-vec-reg-bits=1024 -sbvec-allow-non-pow2 -sbvec-passes="seed-selection<bottom-up-vec,tr-accept>" %s -S | FileCheck %s
define void @pack_constants(ptr %ptr) {
; CHECK-LABEL: define void @pack_constants(
diff --git a/llvm/test/Transforms/SandboxVectorizer/user_pass_pipeline.ll b/llvm/test/Transforms/SandboxVectorizer/user_pass_pipeline.ll
index b11b55ed96019..4a24b85725dbc 100644
--- a/llvm/test/Transforms/SandboxVectorizer/user_pass_pipeline.ll
+++ b/llvm/test/Transforms/SandboxVectorizer/user_pass_pipeline.ll
@@ -1,9 +1,9 @@
; RUN: opt -passes=sandbox-vectorizer -sbvec-print-pass-pipeline \
-; RUN: -disable-output -sbvec-passes="bottom-up-vec<null,null>" %s \
+; RUN: -disable-output -sbvec-passes="seed-selection<null,null>" %s \
; RUN: | FileCheck %s
;
; RUN: opt -passes=sandbox-vectorizer -sbvec-print-pass-pipeline \
-; RUN: -disable-output -sbvec-passes="bottom-up-vec<>,regions-from-metadata<>" %s \
+; RUN: -disable-output -sbvec-passes="seed-selection<>,regions-from-metadata<>" %s \
; RUN: | FileCheck --check-prefix CHECK-MULTIPLE-FUNCTION-PASSES %s
; !!!WARNING!!! This won't get updated by update_test_checks.py !
@@ -14,14 +14,14 @@ define void @pipeline() {
}
; CHECK: fpm
-; CHECK: bottom-up-vec
+; CHECK: seed-selection
; CHECK: rpm
; CHECK: null
; CHECK: null
; CHECK-EMPTY:
; CHECK-MULTIPLE-FUNCTION-PASSES: fpm
-; CHECK-MULTIPLE-FUNCTION-PASSES: bottom-up-vec
+; CHECK-MULTIPLE-FUNCTION-PASSES: seed-selection
; CHECK-MULTIPLE-FUNCTION-PASSES: rpm
; CHECK-MULTIPLE-FUNCTION-PASSES: regions-from-metadata
; CHECK-MULTIPLE-FUNCTION-PASSES: rpm
More information about the llvm-commits
mailing list