brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.8 KiB · 4ca74ae Raw
158 lines · plain
1// RUN: mlir-opt -test-generic-ir-visitors-interrupt -allow-unregistered-dialect -split-input-file %s | FileCheck %s2 3// Walk is interrupted before visiting "foo"4func.func @main(%arg0: f32) -> f32 {5  %v1 = "foo"() {interrupt_before_all = true} : () -> f326  %v2 = arith.addf %v1, %arg0 : f327  return %v2 : f328}9 10// CHECK: step 0 op 'builtin.module' before all regions11// CHECK: step 1 op 'func.func' before all regions12// CHECK: step 2 walk was interrupted13 14// -----15 16// Walk is interrupted after visiting "foo" (which has a single empty region)17func.func @main(%arg0: f32) -> f32 {18  %v1 = "foo"() ({ "bar"() : ()-> () }) {interrupt_after_all = true} : () -> f3219  %v2 = arith.addf %v1, %arg0 : f3220  return %v2 : f3221}22 23// CHECK: step 0 op 'builtin.module' before all regions24// CHECK: step 1 op 'func.func' before all regions25// CHECK: step 2 op 'foo' before all regions26// CHECK: step 3 op 'bar' before all regions27// CHECK: step 4 walk was interrupted28 29// -----30 31// Walk is interrupted after visiting "foo"'s 1st region.32func.func @main(%arg0: f32) -> f32 {33  %v1 = "foo"() ({34    "bar0"() : () -> ()35  }, {36    "bar1"() : () -> ()37  }) {interrupt_after_region = 0} : () -> f3238  %v2 = arith.addf %v1, %arg0 : f3239  return %v2 : f3240}41 42// CHECK: step 0 op 'builtin.module' before all regions43// CHECK: step 1 op 'func.func' before all regions44// CHECK: step 2 op 'foo' before all regions45// CHECK: step 3 op 'bar0' before all regions46// CHECK: step 4 walk was interrupted47 48 49// -----50 51// Test static filtering.52func.func @main() {53  "foo"() : () -> ()54  "test.two_region_op"()(55    {"work"() : () -> ()},56    {"work"() : () -> ()}57  ) {interrupt_after_all = true} : () -> ()58  return59}60 61// CHECK: step 0 op 'builtin.module' before all regions62// CHECK: step 1 op 'func.func' before all regions63// CHECK: step 2 op 'foo' before all regions64// CHECK: step 3 op 'test.two_region_op' before all regions65// CHECK: step 4 op 'work' before all regions66// CHECK: step 5 op 'test.two_region_op' before region #167// CHECK: step 6 op 'work' before all regions68// CHECK: step 7 walk was interrupted69// CHECK: step 8 op 'test.two_region_op' before all regions70// CHECK: step 9 op 'test.two_region_op' before region #171// CHECK: step 10 walk was interrupted72 73// -----74 75// Test static filtering.76func.func @main() {77  "foo"() : () -> ()78  "test.two_region_op"()(79    {"work"() : () -> ()},80    {"work"() : () -> ()}81  ) {interrupt_after_region = 0} : () -> ()82  return83}84 85// CHECK: step 0 op 'builtin.module' before all regions86// CHECK: step 1 op 'func.func' before all regions87// CHECK: step 2 op 'foo' before all regions88// CHECK: step 3 op 'test.two_region_op' before all regions89// CHECK: step 4 op 'work' before all regions90// CHECK: step 5 walk was interrupted91// CHECK: step 6 op 'test.two_region_op' before all regions92// CHECK: step 7 walk was interrupted93 94// -----95// Test skipping.96 97// Walk is skipped before visiting "foo".98func.func @main(%arg0: f32) -> f32 {99  %v1 = "foo"() ({100    "bar0"() : () -> ()101  }, {102    "bar1"() : () -> ()103  }) {skip_before_all = true} : () -> f32104  %v2 = arith.addf %v1, %arg0 : f32105  return %v2 : f32106}107 108// CHECK: step 0 op 'builtin.module' before all regions109// CHECK: step 1 op 'func.func' before all regions110// CHECK: step 2 op 'arith.addf' before all regions111// CHECK: step 3 op 'func.return' before all regions112// CHECK: step 4 op 'func.func' after all regions113// CHECK: step 5 op 'builtin.module' after all regions114 115// -----116// Walk is skipped after visiting all regions of "foo".117func.func @main(%arg0: f32) -> f32 {118  %v1 = "foo"() ({119    "bar0"() : () -> ()120  }, {121    "bar1"() : () -> ()122  }) {skip_after_all = true} : () -> f32123  %v2 = arith.addf %v1, %arg0 : f32124  return %v2 : f32125}126 127// CHECK: step 0 op 'builtin.module' before all regions128// CHECK: step 1 op 'func.func' before all regions129// CHECK: step 2 op 'foo' before all regions130// CHECK: step 3 op 'bar0' before all regions131// CHECK: step 4 op 'foo' before region #1132// CHECK: step 5 op 'bar1' before all regions133// CHECK: step 6 op 'arith.addf' before all regions134// CHECK: step 7 op 'func.return' before all regions135// CHECK: step 8 op 'func.func' after all regions136// CHECK: step 9 op 'builtin.module' after all regions137 138// -----139// Walk is skipped after visiting first region of "foo".140func.func @main(%arg0: f32) -> f32 {141  %v1 = "foo"() ({142    "bar0"() : () -> ()143  }, {144    "bar1"() : () -> ()145  }) {skip_after_region = 0} : () -> f32146  %v2 = arith.addf %v1, %arg0 : f32147  return %v2 : f32148}149 150// CHECK: step 0 op 'builtin.module' before all regions151// CHECK: step 1 op 'func.func' before all regions152// CHECK: step 2 op 'foo' before all regions153// CHECK: step 3 op 'bar0' before all regions154// CHECK: step 4 op 'arith.addf' before all regions155// CHECK: step 5 op 'func.return' before all regions156// CHECK: step 6 op 'func.func' after all regions157// CHECK: step 7 op 'builtin.module' after all regions158