summaryrefslogtreecommitdiffstats
path: root/mlir/test/Transforms
diff options
context:
space:
mode:
authorRiver Riddle <riverriddle@google.com>2019-10-08 15:44:34 -0700
committerA. Unique TensorFlower <gardener@tensorflow.org>2019-10-08 15:45:08 -0700
commit49b29dd18645e30deb49d25b5e618f628b2e96d6 (patch)
treed23566763a0c368f779f0ceb52162eaa7bff59b2 /mlir/test/Transforms
parent6136f33d5960a63961f2b471f82e5b7df583f8f2 (diff)
downloadbcm5719-llvm-49b29dd18645e30deb49d25b5e618f628b2e96d6.tar.gz
bcm5719-llvm-49b29dd18645e30deb49d25b5e618f628b2e96d6.zip
Add a PatternRewriter hook for cloning a region into another.
This is similar to the `inlineRegionBefore` hook, except the original blocks are unchanged. The region to be cloned *must* not have been modified during the conversion process at the point of cloning, i.e. it must belong an operation that has yet to be converted, or the operation that is currently being converted. PiperOrigin-RevId: 273622533
Diffstat (limited to 'mlir/test/Transforms')
-rw-r--r--mlir/test/Transforms/test-legalizer-full.mlir16
-rw-r--r--mlir/test/Transforms/test-legalizer.mlir13
2 files changed, 28 insertions, 1 deletions
diff --git a/mlir/test/Transforms/test-legalizer-full.mlir b/mlir/test/Transforms/test-legalizer-full.mlir
index 6973eea095e..8d0ba3e89ce 100644
--- a/mlir/test/Transforms/test-legalizer-full.mlir
+++ b/mlir/test/Transforms/test-legalizer-full.mlir
@@ -1,4 +1,4 @@
-// RUN: mlir-opt -test-legalize-patterns -test-legalize-mode=full %s | FileCheck %s
+// RUN: mlir-opt -test-legalize-patterns -test-legalize-mode=full -split-input-file -verify-diagnostics %s | FileCheck %s
// CHECK-LABEL: func @multi_level_mapping
func @multi_level_mapping() {
@@ -8,3 +8,17 @@ func @multi_level_mapping() {
"test.type_consumer"(%result) : (i32) -> ()
"test.return"() : () -> ()
}
+
+// -----
+
+// Test that region cloning can be properly undone.
+func @test_undo_region_clone() {
+ "test.region"() ({
+ ^bb1(%i0: i64):
+ "test.invalid"(%i0) : (i64) -> ()
+ }) {legalizer.should_clone} : () -> ()
+
+ // expected-error@+1 {{failed to legalize operation 'test.illegal_op_f'}}
+ %ignored = "test.illegal_op_f"() : () -> (i32)
+ "test.return"() : () -> ()
+}
diff --git a/mlir/test/Transforms/test-legalizer.mlir b/mlir/test/Transforms/test-legalizer.mlir
index c44e489b649..36901450545 100644
--- a/mlir/test/Transforms/test-legalizer.mlir
+++ b/mlir/test/Transforms/test-legalizer.mlir
@@ -74,6 +74,19 @@ func @remap_moved_region_args() {
return
}
+// CHECK-LABEL: func @remap_cloned_region_args
+func @remap_cloned_region_args() {
+ // CHECK-NEXT: return
+ // CHECK-NEXT: ^bb1(%{{.*}}: f64, %{{.*}}: f64, %{{.*}}: f16, %{{.*}}: f16):
+ // CHECK-NEXT: "test.cast"{{.*}} : (f16, f16) -> f32
+ // CHECK-NEXT: "test.valid"{{.*}} : (f64, f64, f32)
+ "test.region"() ({
+ ^bb1(%i0: i64, %unused: i16, %i1: i64, %2: f32):
+ "test.invalid"(%i0, %i1, %2) : (i64, i64, f32) -> ()
+ }) {legalizer.should_clone} : () -> ()
+ return
+}
+
// CHECK-LABEL: func @remap_drop_region
func @remap_drop_region() {
// CHECK-NEXT: return
OpenPOWER on IntegriCloud