31 lines · plain
1// RUN: cir-translate -cir-to-llvmir --disable-cc-lowering -o %t.ll %s2// RUN: FileCheck --input-file=%t.ll -check-prefix=LLVM %s3 4!u32i = !cir.int<u, 32>5 6module {7 cir.func @blue(%arg0: !cir.bool) -> !u32i {8 %0 = cir.ternary(%arg0, true {9 %a = cir.const #cir.int<0> : !u32i10 cir.yield %a : !u32i11 }, false {12 %b = cir.const #cir.int<1> : !u32i13 cir.yield %b : !u32i14 }) : (!cir.bool) -> !u32i15 cir.return %0 : !u32i16 }17}18 19// LLVM-LABEL: define i32 {{.*}}@blue(20// LLVM-SAME: i1 [[PRED:%[[:alnum:]]+]])21// LLVM: br i1 [[PRED]], label %[[B1:[[:alnum:]]+]], label %[[B2:[[:alnum:]]+]]22// LLVM: [[B1]]:23// LLVM: br label %[[M:[[:alnum:]]+]]24// LLVM: [[B2]]:25// LLVM: br label %[[M]]26// LLVM: [[M]]:27// LLVM: [[R:%[[:alnum:]]+]] = phi i32 [ 1, %[[B2]] ], [ 0, %[[B1]] ]28// LLVM: br label %[[B3:[[:alnum:]]+]]29// LLVM: [[B3]]:30// LLVM: ret i32 [[R]]31