[llvm] [SandboxVectorizer] Add MemSeed bundle types (PR #111584)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 8 14:59:03 PDT 2024
================
@@ -123,5 +123,35 @@ class SeedBundle {
}
#endif // NDEBUG
};
+
+template <typename LoadOrStoreT> class MemSeedBundle : public SeedBundle {
+public:
+ explicit MemSeedBundle(SmallVector<Instruction *> &&SV, ScalarEvolution &SE)
+ : SeedBundle(std::move(SV)) {
+ assert(all_of(Seeds, [](auto *S) { return isa<LoadOrStoreT>(S); }) &&
+ "Expected Load or Store instructions!");
+ auto Cmp = [&SE](Instruction *I0, Instruction *I1) {
+ return Utils::atLowerAddress(cast<LoadOrStoreT>(I0),
+ cast<LoadOrStoreT>(I1), SE);
+ };
+ std::sort(Seeds.begin(), Seeds.end(), Cmp);
+ }
+ explicit MemSeedBundle(LoadOrStoreT *MemI) : SeedBundle(MemI) {
+ assert(isa<LoadOrStoreT>(MemI) && "Expected Load or Store!");
+ }
+ void insert(sandboxir::Instruction *I, ScalarEvolution &SE) {
+ assert(isa<LoadOrStoreT>(I) && "Expected a Store or a Load!");
----------------
Sterling-Augustine wrote:
Done
https://github.com/llvm/llvm-project/pull/111584
More information about the llvm-commits
mailing list