| // 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]] |