25 lines · plain
1// RUN: mlir-opt -allow-unregistered-dialect %s -test-inline-callback | FileCheck %s2 3// Test inlining with multiple blocks and scf.execute_region transformation4// CHECK-LABEL: func @test_inline_multiple_blocks5func.func @test_inline_multiple_blocks(%arg0: i32) -> i32 {6 // CHECK: %[[RES:.*]] = scf.execute_region -> i327 // CHECK-NEXT: %[[ADD1:.*]] = arith.addi %arg0, %arg08 // CHECK-NEXT: cf.br ^bb1(%[[ADD1]] : i32)9 // CHECK: ^bb1(%[[ARG:.*]]: i32):10 // CHECK-NEXT: %[[ADD2:.*]] = arith.addi %[[ARG]], %[[ARG]]11 // CHECK-NEXT: scf.yield %[[ADD2]]12 // CHECK: return %[[RES]]13 %fn = "test.functional_region_op"() ({14 ^bb0(%a : i32):15 %b = arith.addi %a, %a : i3216 cf.br ^bb1(%b: i32)17 ^bb1(%c: i32):18 %d = arith.addi %c, %c : i3219 "test.return"(%d) : (i32) -> ()20 }) : () -> ((i32) -> i32)21 22 %0 = call_indirect %fn(%arg0) : (i32) -> i3223 return %0 : i3224}25