brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · fffafa9 Raw
69 lines · plain
1// RUN: cir-opt %s -cir-flatten-cfg -o - | FileCheck %s2 3!s32i = !cir.int<s, 32>4 5module {6  cir.func @foo(%arg0: !s32i) -> !s32i {7    %0 = cir.alloca !s32i, !cir.ptr<!s32i>, ["y", init] {alignment = 4 : i64}8    %1 = cir.alloca !s32i, !cir.ptr<!s32i>, ["__retval"] {alignment = 4 : i64}9    cir.store %arg0, %0 : !s32i, !cir.ptr<!s32i>10    %2 = cir.load %0 : !cir.ptr<!s32i>, !s32i11    %3 = cir.const #cir.int<0> : !s32i12    %4 = cir.cmp(gt, %2, %3) : !s32i, !cir.bool13    %5 = cir.ternary(%4, true {14      %7 = cir.const #cir.int<3> : !s32i15      cir.yield %7 : !s32i16    }, false {17      %7 = cir.const #cir.int<5> : !s32i18      cir.yield %7 : !s32i19    }) : (!cir.bool) -> !s32i20    cir.store %5, %1 : !s32i, !cir.ptr<!s32i>21    %6 = cir.load %1 : !cir.ptr<!s32i>, !s32i22    cir.return %6 : !s32i23  }24 25// CHECK: cir.func{{.*}} @foo(%arg0: !s32i) -> !s32i {26// CHECK:   %0 = cir.alloca !s32i, !cir.ptr<!s32i>, ["y", init] {alignment = 4 : i64}27// CHECK:   %1 = cir.alloca !s32i, !cir.ptr<!s32i>, ["__retval"] {alignment = 4 : i64}28// CHECK:   cir.store %arg0, %0 : !s32i, !cir.ptr<!s32i>29// CHECK:   %2 = cir.load %0 : !cir.ptr<!s32i>, !s32i30// CHECK:   %3 = cir.const #cir.int<0> : !s32i31// CHECK:   %4 = cir.cmp(gt, %2, %3) : !s32i, !cir.bool32// CHECK:    cir.brcond %4 ^bb1, ^bb233// CHECK:  ^bb1:  // pred: ^bb034// CHECK:    %5 = cir.const #cir.int<3> : !s32i35// CHECK:    cir.br ^bb3(%5 : !s32i)36// CHECK:  ^bb2:  // pred: ^bb037// CHECK:    %6 = cir.const #cir.int<5> : !s32i38// CHECK:    cir.br ^bb3(%6 : !s32i)39// CHECK:  ^bb3(%7: !s32i):  // 2 preds: ^bb1, ^bb240// CHECK:    cir.br ^bb441// CHECK:  ^bb4:  // pred: ^bb342// CHECK:    cir.store %7, %1 : !s32i, !cir.ptr<!s32i>43// CHECK:    %8 = cir.load %1 : !cir.ptr<!s32i>, !s32i44// CHECK:    cir.return %8 : !s32i45// CHECK:  }46 47  cir.func @foo2(%arg0: !cir.bool) {48    cir.ternary(%arg0, true {49      cir.yield50    }, false {51      cir.yield52    }) : (!cir.bool) -> ()53    cir.return54  }55 56// CHECK: cir.func{{.*}} @foo2(%arg0: !cir.bool) {57// CHECK:   cir.brcond %arg0 ^bb1, ^bb258// CHECK: ^bb1:  // pred: ^bb059// CHECK:   cir.br ^bb360// CHECK: ^bb2:  // pred: ^bb061// CHECK:   cir.br ^bb362// CHECK: ^bb3:  // 2 preds: ^bb1, ^bb263// CHECK:   cir.br ^bb464// CHECK: ^bb4:  // pred: ^bb365// CHECK:   cir.return66// CHECK: }67 68}69