blob: 247c6ae3a1e173d1d77fec8625f7135006423496 [file] [log] [blame]
// RUN: cir-translate -cir-to-llvmir --disable-cc-lowering -o %t.ll %s
// RUN: FileCheck --input-file=%t.ll -check-prefix=LLVM %s
!u32i = !cir.int<u, 32>
module {
cir.func @blue(%arg0: !cir.bool) -> !u32i {
%0 = cir.ternary(%arg0, true {
%a = cir.const #cir.int<0> : !u32i
cir.yield %a : !u32i
}, false {
%b = cir.const #cir.int<1> : !u32i
cir.yield %b : !u32i
}) : (!cir.bool) -> !u32i
cir.return %0 : !u32i
}
}
// LLVM-LABEL: define i32 {{.*}}@blue(
// LLVM-SAME: i1 [[PRED:%[[:alnum:]]+]])
// LLVM: br i1 [[PRED]], label %[[B1:[[:alnum:]]+]], label %[[B2:[[:alnum:]]+]]
// LLVM: [[B1]]:
// LLVM: br label %[[M:[[:alnum:]]+]]
// LLVM: [[B2]]:
// LLVM: br label %[[M]]
// LLVM: [[M]]:
// LLVM: [[R:%[[:alnum:]]+]] = phi i32 [ 1, %[[B2]] ], [ 0, %[[B1]] ]
// LLVM: br label %[[B3:[[:alnum:]]+]]
// LLVM: [[B3]]:
// LLVM: ret i32 [[R]]