[llvm-branch-commits] [llvm] e210421 - Revert "[SandboxVec] Add barebones Region class. (#108899)"

via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Tue Sep 17 15:45:00 PDT 2024


Author: Jorge Gorbe Moya
Date: 2024-09-17T15:44:57-07:00
New Revision: e210421f51e99694bd26c58be2525bc2db8c3146

URL: https://github.com/llvm/llvm-project/commit/e210421f51e99694bd26c58be2525bc2db8c3146
DIFF: https://github.com/llvm/llvm-project/commit/e210421f51e99694bd26c58be2525bc2db8c3146.diff

LOG: Revert "[SandboxVec] Add barebones Region class. (#108899)"

This reverts commit 3aecf41c2b384ab65a327db91632ff0c148df721.

Added: 
    

Modified: 
    llvm/lib/Transforms/Vectorize/CMakeLists.txt
    llvm/unittests/Transforms/Vectorize/SandboxVectorizer/CMakeLists.txt

Removed: 
    llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Region.h
    llvm/lib/Transforms/Vectorize/SandboxVectorizer/Region.cpp
    llvm/unittests/Transforms/Vectorize/SandboxVectorizer/RegionTest.cpp


################################################################################
diff  --git a/llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Region.h b/llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Region.h
deleted file mode 100644
index 71d9ab58250993..00000000000000
--- a/llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Region.h
+++ /dev/null
@@ -1,106 +0,0 @@
-//===- Region.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
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_TRANSFORMS_VECTORIZE_SANDBOXVECTORIZER_REGION_H
-#define LLVM_TRANSFORMS_VECTORIZE_SANDBOXVECTORIZER_REGION_H
-
-#include "llvm/ADT/SetVector.h"
-#include "llvm/ADT/iterator_range.h"
-#include "llvm/SandboxIR/SandboxIR.h"
-#include "llvm/Support/InstructionCost.h"
-#include "llvm/Support/raw_ostream.h"
-
-namespace llvm::sandboxir {
-
-/// The main job of the Region is to point to new instructions generated by
-/// vectorization passes. It is the unit that RegionPasses operate on with their
-/// runOnRegion() function.
-///
-/// The region allows us to stack transformations horizontally, meaning that
-/// each transformation operates on a single region and the resulting region is
-/// the input to the next transformation, as opposed to vertically, which is the
-/// common way of applying a transformation across the whole BB. This enables us
-/// to check for profitability and decide whether we accept or rollback at a
-/// region granularity, which is much better than doing this at the BB level.
-///
-//  Traditional approach: transformations applied vertically for the whole BB
-//    BB
-//  +----+
-//  |    |
-//  |    |
-//  |    | -> Transform1 ->  ... -> TransformN -> Check Cost
-//  |    |
-//  |    |
-//  +----+
-//
-//  Region-based approach: transformations applied horizontally, for each Region
-//    BB
-//  +----+
-//  |Rgn1| -> Transform1 ->  ... -> TransformN -> Check Cost
-//  |    |
-//  |Rgn2| -> Transform1 ->  ... -> TransformN -> Check Cost
-//  |    |
-//  |Rgn3| -> Transform1 ->  ... -> TransformN -> Check Cost
-//  +----+
-
-class Region {
-  /// All the instructions in the Region. Only new instructions generated during
-  /// vectorization are part of the Region.
-  SetVector<Instruction *> Insts;
-
-  /// A unique ID, used for debugging.
-  unsigned RegionID = 0;
-
-  Context &Ctx;
-
-  /// The basic block containing this region.
-  BasicBlock &BB;
-
-  // TODO: Add cost modeling.
-  // TODO: Add a way to encode/decode region info to/from metadata.
-
-public:
-  Region(Context &Ctx, BasicBlock &BB);
-  ~Region();
-
-  BasicBlock *getParent() const { return &BB; }
-  Context &getContext() const { return Ctx; }
-  /// Returns the region's unique ID.
-  unsigned getID() const { return RegionID; }
-
-  /// Adds I to the set.
-  void add(Instruction *I);
-  /// Removes I from the set.
-  void remove(Instruction *I);
-  /// Returns true if I is in the Region.
-  bool contains(Instruction *I) const { return Insts.contains(I); }
-  /// Returns true if the Region has no instructions.
-  bool empty() const { return Insts.empty(); }
-
-  using iterator = decltype(Insts.begin());
-  iterator begin() { return Insts.begin(); }
-  iterator end() { return Insts.end(); }
-  iterator_range<iterator> insts() { return make_range(begin(), end()); }
-
-#ifndef NDEBUG
-  /// This is an expensive check, meant for testing.
-  bool operator==(const Region &Other) const;
-  bool operator!=(const Region &other) const { return !(*this == other); }
-
-  void dump(raw_ostream &OS) const;
-  void dump() const;
-  friend raw_ostream &operator<<(raw_ostream &OS, const Region &Rgn) {
-    Rgn.dump(OS);
-    return OS;
-  }
-#endif
-};
-
-} // namespace llvm::sandboxir
-
-#endif // LLVM_TRANSFORMS_VECTORIZE_SANDBOXVECTORIZER_REGION_H

diff  --git a/llvm/lib/Transforms/Vectorize/CMakeLists.txt b/llvm/lib/Transforms/Vectorize/CMakeLists.txt
index f33906b05fedd1..59d04ac3cecd00 100644
--- a/llvm/lib/Transforms/Vectorize/CMakeLists.txt
+++ b/llvm/lib/Transforms/Vectorize/CMakeLists.txt
@@ -5,7 +5,6 @@ add_llvm_component_library(LLVMVectorize
   LoopVectorize.cpp
   SandboxVectorizer/DependencyGraph.cpp
   SandboxVectorizer/Passes/BottomUpVec.cpp
-  SandboxVectorizer/Region.cpp
   SandboxVectorizer/SandboxVectorizer.cpp
   SLPVectorizer.cpp
   Vectorize.cpp

diff  --git a/llvm/lib/Transforms/Vectorize/SandboxVectorizer/Region.cpp b/llvm/lib/Transforms/Vectorize/SandboxVectorizer/Region.cpp
deleted file mode 100644
index 0c5d66cdeb8f40..00000000000000
--- a/llvm/lib/Transforms/Vectorize/SandboxVectorizer/Region.cpp
+++ /dev/null
@@ -1,46 +0,0 @@
-//===- Region.cpp ---------------------------------------------------------===//
-//
-// 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/Transforms/Vectorize/SandboxVectorizer/Region.h"
-
-namespace llvm::sandboxir {
-
-Region::Region(Context &Ctx, BasicBlock &BB) : Ctx(Ctx), BB(BB) {
-  static unsigned StaticRegionID;
-  RegionID = StaticRegionID++;
-}
-
-Region::~Region() {}
-
-void Region::add(Instruction *I) { Insts.insert(I); }
-
-void Region::remove(Instruction *I) { Insts.remove(I); }
-
-#ifndef NDEBUG
-bool Region::operator==(const Region &Other) const {
-  if (Insts.size() != Other.Insts.size())
-    return false;
-  if (!std::is_permutation(Insts.begin(), Insts.end(), Other.Insts.begin()))
-    return false;
-  return true;
-}
-
-void Region::dump(raw_ostream &OS) const {
-  OS << "RegionID: " << getID() << "\n";
-  for (auto *I : Insts)
-    OS << *I << "\n";
-}
-
-void Region::dump() const {
-  dump(dbgs());
-  dbgs() << "\n";
-}
-
-} // namespace llvm::sandboxir
-
-#endif // NDEBUG

diff  --git a/llvm/unittests/Transforms/Vectorize/SandboxVectorizer/CMakeLists.txt b/llvm/unittests/Transforms/Vectorize/SandboxVectorizer/CMakeLists.txt
index 23dbe7f46bc995..488c9c2344b56c 100644
--- a/llvm/unittests/Transforms/Vectorize/SandboxVectorizer/CMakeLists.txt
+++ b/llvm/unittests/Transforms/Vectorize/SandboxVectorizer/CMakeLists.txt
@@ -9,5 +9,4 @@ set(LLVM_LINK_COMPONENTS
 
 add_llvm_unittest(SandboxVectorizerTests
   DependencyGraphTest.cpp
-  RegionTest.cpp
   )

diff  --git a/llvm/unittests/Transforms/Vectorize/SandboxVectorizer/RegionTest.cpp b/llvm/unittests/Transforms/Vectorize/SandboxVectorizer/RegionTest.cpp
deleted file mode 100644
index 85b567ed51cd8a..00000000000000
--- a/llvm/unittests/Transforms/Vectorize/SandboxVectorizer/RegionTest.cpp
+++ /dev/null
@@ -1,82 +0,0 @@
-//===- RegionTest.cpp -----------------------------------------------------===//
-//
-// 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/Transforms/Vectorize/SandboxVectorizer/Region.h"
-#include "llvm/AsmParser/Parser.h"
-#include "llvm/SandboxIR/SandboxIR.h"
-#include "llvm/Support/SourceMgr.h"
-#include "gmock/gmock-matchers.h"
-#include "gtest/gtest.h"
-
-using namespace llvm;
-
-struct RegionTest : public testing::Test {
-  LLVMContext C;
-  std::unique_ptr<Module> M;
-
-  void parseIR(LLVMContext &C, const char *IR) {
-    SMDiagnostic Err;
-    M = parseAssemblyString(IR, Err, C);
-    if (!M)
-      Err.print("RegionTest", errs());
-  }
-};
-
-TEST_F(RegionTest, Basic) {
-  parseIR(C, R"IR(
-define i8 @foo(i8 %v0, i8 %v1) {
-  %t0 = add i8 %v0, 1
-  %t1 = add i8 %t0, %v1
-  ret i8 %t1
-}
-)IR");
-  llvm::Function *LLVMF = &*M->getFunction("foo");
-  sandboxir::Context Ctx(C);
-  auto *F = Ctx.createFunction(LLVMF);
-  auto *BB = &*F->begin();
-  auto It = BB->begin();
-  auto *T0 = cast<sandboxir::Instruction>(&*It++);
-  auto *T1 = cast<sandboxir::Instruction>(&*It++);
-  auto *Ret = cast<sandboxir::Instruction>(&*It++);
-  sandboxir::Region Rgn(Ctx, *BB);
-
-  // Check getters
-  EXPECT_EQ(BB, Rgn.getParent());
-  EXPECT_EQ(&Ctx, &Rgn.getContext());
-  EXPECT_EQ(0U, Rgn.getID());
-
-  // Check add / remove / empty.
-  EXPECT_TRUE(Rgn.empty());
-  Rgn.add(T0);
-  EXPECT_FALSE(Rgn.empty());
-  Rgn.remove(T0);
-  EXPECT_TRUE(Rgn.empty());
-
-  // Check iteration.
-  Rgn.add(T0);
-  Rgn.add(T1);
-  Rgn.add(Ret);
-  // Use an ordered matcher because we're supposed to preserve the insertion
-  // order for determinism.
-  EXPECT_THAT(Rgn.insts(), testing::ElementsAre(T0, T1, Ret));
-
-  // Check contains
-  EXPECT_TRUE(Rgn.contains(T0));
-  Rgn.remove(T0);
-  EXPECT_FALSE(Rgn.contains(T0));
-
-#ifndef NDEBUG
-  // Check equality comparison. Insert in reverse order into `Other` to check
-  // that comparison is order-independent.
-  sandboxir::Region Other(Ctx, *BB);
-  Other.add(Ret);
-  EXPECT_NE(Rgn, Other);
-  Other.add(T1);
-  EXPECT_EQ(Rgn, Other);
-#endif
-}


        


More information about the llvm-branch-commits mailing list