blob: 8c11a74484d39b58d4cade21579c8e261ec5cbbb [file] [log] [blame]
// RUN: cir-opt %s | FileCheck %s
!s32i = !cir.int<s, 32>
cir.func @FlatSwitchWithoutDefault(%arg0: !s32i) {
cir.switch.flat %arg0 : !s32i, ^bb2 [
1: ^bb1
]
^bb1:
cir.br ^bb2
^bb2:
cir.return
}
// CHECK: cir.switch.flat %arg0 : !s32i, ^bb2 [
// CHECK-NEXT: 1: ^bb1
// CHECK-NEXT: ]
// CHECK-NEXT: ^bb1:
// CHECK-NEXT: cir.br ^bb2
// CHECK-NEXT: ^bb2:
// CHECK-NEXT: cir.return
cir.func @FlatSwitchWithDefault(%arg0: !s32i) {
cir.switch.flat %arg0 : !s32i, ^bb2 [
1: ^bb1
]
^bb1:
cir.br ^bb3
^bb2:
cir.br ^bb3
^bb3:
cir.return
}
// CHECK: cir.switch.flat %arg0 : !s32i, ^bb2 [
// CHECK-NEXT: 1: ^bb1
// CHECK-NEXT: ]
// CHECK-NEXT: ^bb1:
// CHECK-NEXT: cir.br ^bb3
// CHECK-NEXT: ^bb2:
// CHECK-NEXT: cir.br ^bb3
// CHECK-NEXT: ^bb3:
// CHECK-NEXT: cir.return
cir.func @switchWithOperands(%arg0: !s32i, %arg1: !s32i, %arg2: !s32i) {
cir.switch.flat %arg0 : !s32i, ^bb3 [
0: ^bb1(%arg1, %arg2 : !s32i, !s32i),
1: ^bb2(%arg2, %arg1 : !s32i, !s32i)
]
^bb1:
cir.br ^bb3
^bb2:
cir.br ^bb3
^bb3:
cir.return
}
// CHECK: cir.switch.flat %arg0 : !s32i, ^bb3 [
// CHECK-NEXT: 0: ^bb1(%arg1, %arg2 : !s32i, !s32i),
// CHECK-NEXT: 1: ^bb2(%arg2, %arg1 : !s32i, !s32i)
// CHECK-NEXT: ]
// CHECK-NEXT: ^bb1:
// CHECK-NEXT: cir.br ^bb3
// CHECK-NEXT: ^bb2:
// CHECK-NEXT: cir.br ^bb3
// CHECK-NEXT: ^bb3:
// CHECK-NEXT: cir.return