diff options
| author | River Riddle <riverriddle@google.com> | 2019-10-08 15:44:34 -0700 |
|---|---|---|
| committer | A. Unique TensorFlower <gardener@tensorflow.org> | 2019-10-08 15:45:08 -0700 |
| commit | 49b29dd18645e30deb49d25b5e618f628b2e96d6 (patch) | |
| tree | d23566763a0c368f779f0ceb52162eaa7bff59b2 /mlir/test/Transforms | |
| parent | 6136f33d5960a63961f2b471f82e5b7df583f8f2 (diff) | |
| download | bcm5719-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.mlir | 16 | ||||
| -rw-r--r-- | mlir/test/Transforms/test-legalizer.mlir | 13 |
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 |

