blob: a47166383608d169105c7ba9a7b36d14649c4e79 [file] [log] [blame]
// RUN: mlir-opt -convert-llvm-to-control-flow -split-input-file %s | FileCheck %s
// CHECK-LABEL: @branch
// CHECK-SAME: %[[VAL:[[:alnum:]]+]]: i32
llvm.func @branch(%val: i32) -> i32 {
// CHECK: cf.br ^[[BB1:.*]](%[[VAL]] : i32)
llvm.br ^bb1(%val : i32)
// CHECK: ^[[BB1]](%[[BB_ARG:.*]]: i32):
^bb1(%x: i32):
// CHECK: llvm.return %[[BB_ARG]] : i32
llvm.return %x : i32
}
// -----
// CHECK-LABEL: @cond_branch
// CHECK-SAME: %[[COND:[[:alnum:]]+]]: i1
// CHECK-SAME: %[[VAL1:[[:alnum:]]+]]: i32
// CHECK-SAME: %[[VAL2:[[:alnum:]]+]]: i32
llvm.func @cond_branch(%cond: i1, %val1: i32, %val2: i32) -> i32 {
// CHECK: cf.cond_br %[[COND]], ^[[BB1:.*]](%[[VAL1]] : i32), ^[[BB2:.*]](%[[VAL2]] : i32)
llvm.cond_br %cond, ^bb1(%val1 : i32), ^bb2(%val2 : i32)
// CHECK: ^[[BB1]](%[[BB1_ARG:.*]]: i32):
^bb1(%x: i32):
// CHECK: llvm.return %[[BB1_ARG]] : i32
llvm.return %x : i32
// CHECK: ^[[BB2]](%[[BB2_ARG:.*]]: i32):
^bb2(%y: i32):
// CHECK: llvm.return %[[BB2_ARG]] : i32
llvm.return %y : i32
}