diff options
author | vporpo <vporpodas@google.com> | 2025-03-29 10:42:51 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-03-29 10:42:51 -0700 |
commit | 3db5be79d24bb48a38e844fafc3db054f8d8cc58 (patch) | |
tree | d9bca93f7dca1ffdb5a01a4d41d0b9e86f1a53c5 | |
parent | 1ff74917b56e9e57dd13286123144b5f13e9a517 (diff) | |
download | llvm-3db5be79d24bb48a38e844fafc3db054f8d8cc58.zip llvm-3db5be79d24bb48a38e844fafc3db054f8d8cc58.tar.gz llvm-3db5be79d24bb48a38e844fafc3db054f8d8cc58.tar.bz2 |
[SandboxVec] Add print-region pass (#131019)
This patch implements a simple printing pass for regions. This is meant
to be used in tests and for debugging.
4 files changed, 57 insertions, 0 deletions
diff --git a/llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes/PrintRegion.h b/llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes/PrintRegion.h new file mode 100644 index 0000000..34ed8c5 --- /dev/null +++ b/llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes/PrintRegion.h @@ -0,0 +1,29 @@ +#ifndef LLVM_TRANSFORMS_VECTORIZE_SANDBOXVECTORIZER_PASSES_PRINTREGION_H +#define LLVM_TRANSFORMS_VECTORIZE_SANDBOXVECTORIZER_PASSES_PRINTREGION_H + +#include "llvm/SandboxIR/Pass.h" +#include "llvm/SandboxIR/Region.h" + +namespace llvm::sandboxir { + +/// A Region pass that does nothing, for use as a placeholder in tests. +class PrintRegion final : public RegionPass { +public: + PrintRegion() : RegionPass("print-region") {} + bool runOnRegion(Region &R, const Analyses &A) final { + raw_ostream &OS = outs(); +#ifndef NDEBUG + OS << "-- Region --\n"; + OS << R << "\n"; +#else + // TODO: Make this available in all builds, depends on enabling SandboxIR + // dumps in non-debug builds. + OS << "Region dump only available in DEBUG build!"; +#endif + return false; + } +}; + +} // namespace llvm::sandboxir + +#endif // LLVM_TRANSFORMS_VECTORIZE_SANDBOXVECTORIZER_PASSES_PRINTREGION_H diff --git a/llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/PassRegistry.def b/llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/PassRegistry.def index c525608..f2eb769 100644 --- a/llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/PassRegistry.def +++ b/llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/PassRegistry.def @@ -19,6 +19,7 @@ REGION_PASS("null", ::llvm::sandboxir::NullPass) REGION_PASS("print-instruction-count", ::llvm::sandboxir::PrintInstructionCount) +REGION_PASS("print-region", ::llvm::sandboxir::PrintRegion) REGION_PASS("tr-save", ::llvm::sandboxir::TransactionSave) REGION_PASS("tr-accept", ::llvm::sandboxir::TransactionAlwaysAccept) REGION_PASS("tr-accept-or-revert", ::llvm::sandboxir::TransactionAcceptOrRevert) diff --git a/llvm/lib/Transforms/Vectorize/SandboxVectorizer/SandboxVectorizerPassBuilder.cpp b/llvm/lib/Transforms/Vectorize/SandboxVectorizer/SandboxVectorizerPassBuilder.cpp index 013ccf6..5918cfd 100644 --- a/llvm/lib/Transforms/Vectorize/SandboxVectorizer/SandboxVectorizerPassBuilder.cpp +++ b/llvm/lib/Transforms/Vectorize/SandboxVectorizer/SandboxVectorizerPassBuilder.cpp @@ -3,6 +3,7 @@ #include "llvm/Transforms/Vectorize/SandboxVectorizer/Passes/BottomUpVec.h" #include "llvm/Transforms/Vectorize/SandboxVectorizer/Passes/NullPass.h" #include "llvm/Transforms/Vectorize/SandboxVectorizer/Passes/PrintInstructionCount.h" +#include "llvm/Transforms/Vectorize/SandboxVectorizer/Passes/PrintRegion.h" #include "llvm/Transforms/Vectorize/SandboxVectorizer/Passes/RegionsFromBBs.h" #include "llvm/Transforms/Vectorize/SandboxVectorizer/Passes/RegionsFromMetadata.h" #include "llvm/Transforms/Vectorize/SandboxVectorizer/Passes/SeedCollection.h" diff --git a/llvm/test/Transforms/SandboxVectorizer/print_region_pass.ll b/llvm/test/Transforms/SandboxVectorizer/print_region_pass.ll new file mode 100644 index 0000000..0b808d6 --- /dev/null +++ b/llvm/test/Transforms/SandboxVectorizer/print_region_pass.ll @@ -0,0 +1,26 @@ +; RUN: opt -disable-output -passes=sandbox-vectorizer -sbvec-passes="regions-from-metadata<print-region>" %s | FileCheck %s +; REQUIRES: asserts + +define void @foo(i8 %v) { +; CHECK: -- Region -- +; CHECK-NEXT: %add0 = add i8 %v, 0, !sandboxvec !0 {{.*}} +; CHECK: -- Region -- +; CHECK-NEXT: %add1 = add i8 %v, 1, !sandboxvec !1 {{.*}} +; CHECK-NEXT: %add2 = add i8 %v, 2, !sandboxvec !1 {{.*}} +; CHECK-NEXT: %add3 = add i8 %v, 3, !sandboxvec !1, !sandboxaux !2 {{.*}} +; CHECK-NEXT: %add4 = add i8 %v, 4, !sandboxvec !1, !sandboxaux !3 {{.*}} +; CHECK: Aux: +; CHECK-NEXT: %add3 = add i8 %v, 3, !sandboxvec !1, !sandboxaux !2 {{.*}} +; CHECK-NEXT: %add4 = add i8 %v, 4, !sandboxvec !1, !sandboxaux !3 {{.*}} + %add0 = add i8 %v, 0, !sandboxvec !0 + %add1 = add i8 %v, 1, !sandboxvec !1 + %add2 = add i8 %v, 2, !sandboxvec !1 + %add3 = add i8 %v, 3, !sandboxvec !1, !sandboxaux !2 + %add4 = add i8 %v, 4, !sandboxvec !1, !sandboxaux !3 + ret void +} + +!0 = distinct !{!"sandboxregion"} +!1 = distinct !{!"sandboxregion"} +!2 = !{i32 0} +!3 = !{i32 1} |