xref: /llvm-project/mlir/test/Dialect/ControlFlow/ops.mlir (revision 7e87d03b45f3ca0f6d9c09e8e9090329cc84592e)
1ace01605SRiver Riddle// RUN: mlir-opt %s | mlir-opt | FileCheck %s
2ace01605SRiver Riddle// RUN: mlir-opt %s --mlir-print-op-generic | mlir-opt | FileCheck %s
3ace01605SRiver Riddle
4ace01605SRiver Riddle// CHECK-LABEL: @assert
5412b8850SRiver Riddlefunc.func @assert(%arg : i1) {
6ace01605SRiver Riddle  cf.assert %arg, "Some message in case this assertion fails."
7ace01605SRiver Riddle  return
8ace01605SRiver Riddle}
9ace01605SRiver Riddle
10ace01605SRiver Riddle// CHECK-LABEL: func @switch(
11412b8850SRiver Riddlefunc.func @switch(%flag : i32, %caseOperand : i32) {
12ace01605SRiver Riddle  cf.switch %flag : i32, [
13ace01605SRiver Riddle    default: ^bb1(%caseOperand : i32),
14ace01605SRiver Riddle    42: ^bb2(%caseOperand : i32),
15ace01605SRiver Riddle    43: ^bb3(%caseOperand : i32)
16ace01605SRiver Riddle  ]
17ace01605SRiver Riddle
18ace01605SRiver Riddle  ^bb1(%bb1arg : i32):
19ace01605SRiver Riddle    return
20ace01605SRiver Riddle  ^bb2(%bb2arg : i32):
21ace01605SRiver Riddle    return
22ace01605SRiver Riddle  ^bb3(%bb3arg : i32):
23ace01605SRiver Riddle    return
24ace01605SRiver Riddle}
25ace01605SRiver Riddle
26ace01605SRiver Riddle// CHECK-LABEL: func @switch_i64(
27412b8850SRiver Riddlefunc.func @switch_i64(%flag : i64, %caseOperand : i32) {
28ace01605SRiver Riddle  cf.switch %flag : i64, [
29ace01605SRiver Riddle    default: ^bb1(%caseOperand : i32),
30ace01605SRiver Riddle    42: ^bb2(%caseOperand : i32),
31ace01605SRiver Riddle    43: ^bb3(%caseOperand : i32)
32ace01605SRiver Riddle  ]
33ace01605SRiver Riddle
34ace01605SRiver Riddle  ^bb1(%bb1arg : i32):
35ace01605SRiver Riddle    return
36ace01605SRiver Riddle  ^bb2(%bb2arg : i32):
37ace01605SRiver Riddle    return
38ace01605SRiver Riddle  ^bb3(%bb3arg : i32):
39ace01605SRiver Riddle    return
40ace01605SRiver Riddle}
41*7e87d03bSKeyi Zhang
42*7e87d03bSKeyi Zhang// CHECK-LABEL: func @switch_result_number
43*7e87d03bSKeyi Zhangfunc.func @switch_result_number(%arg0: i32) {
44*7e87d03bSKeyi Zhang  %0:2 = "test.op_with_two_results"() : () -> (i32, i32)
45*7e87d03bSKeyi Zhang  cf.switch %arg0 : i32, [
46*7e87d03bSKeyi Zhang    default: ^bb2,
47*7e87d03bSKeyi Zhang    0: ^bb1(%0#0 : i32)
48*7e87d03bSKeyi Zhang  ]
49*7e87d03bSKeyi Zhang  ^bb1(%1: i32):
50*7e87d03bSKeyi Zhang    return
51*7e87d03bSKeyi Zhang  ^bb2:
52*7e87d03bSKeyi Zhang    return
53*7e87d03bSKeyi Zhang}
54