brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · 0ad5c43 Raw
61 lines · plain
1// RUN: cir-opt -cir-canonicalize -cir-simplify -o %t.cir %s2// RUN: FileCheck --input-file=%t.cir %s3 4!s32i = !cir.int<s, 32>5 6module {7  cir.func @fold_true(%arg0 : !s32i, %arg1 : !s32i) -> !s32i {8    %0 = cir.const #cir.bool<true> : !cir.bool9    %1 = cir.select if %0 then %arg0 else %arg1 : (!cir.bool, !s32i, !s32i) -> !s32i10    cir.return %1 : !s32i11  }12 13  //      CHECK: cir.func{{.*}} @fold_true(%[[ARG0:.+]]: !s32i, %[[ARG1:.+]]: !s32i) -> !s32i {14  // CHECK-NEXT:   cir.return %[[ARG0]] : !s32i15  // CHECK-NEXT: }16 17  cir.func @fold_false(%arg0 : !s32i, %arg1 : !s32i) -> !s32i {18    %0 = cir.const #cir.bool<false> : !cir.bool19    %1 = cir.select if %0 then %arg0 else %arg1 : (!cir.bool, !s32i, !s32i) -> !s32i20    cir.return %1 : !s32i21  }22 23  //      CHECK: cir.func{{.*}} @fold_false(%[[ARG0:.+]]: !s32i, %[[ARG1:.+]]: !s32i) -> !s32i {24  // CHECK-NEXT:   cir.return %[[ARG1]] : !s32i25  // CHECK-NEXT: }26 27  cir.func @fold_to_const(%arg0 : !cir.bool) -> !s32i {28    %0 = cir.const #cir.int<42> : !s32i29    %1 = cir.select if %arg0 then %0 else %0 : (!cir.bool, !s32i, !s32i) -> !s32i30    cir.return %1 : !s32i31  }32 33  //      CHECK: cir.func{{.*}} @fold_to_const(%{{.+}}: !cir.bool) -> !s32i {34  // CHECK-NEXT:   %[[#A:]] = cir.const #cir.int<42> : !s32i35  // CHECK-NEXT:   cir.return %[[#A]] : !s32i36  // CHECK-NEXT: }37 38  cir.func @simplify_1(%arg0 : !cir.bool) -> !cir.bool {39    %0 = cir.const #cir.bool<true> : !cir.bool40    %1 = cir.const #cir.bool<false> : !cir.bool41    %2 = cir.select if %arg0 then %0 else %1 : (!cir.bool, !cir.bool, !cir.bool) -> !cir.bool42    cir.return %2 : !cir.bool43  }44 45  //      CHECK: cir.func{{.*}} @simplify_1(%[[ARG0:.+]]: !cir.bool) -> !cir.bool {46  // CHECK-NEXT:   cir.return %[[ARG0]] : !cir.bool47  // CHECK-NEXT: }48 49  cir.func @simplify_2(%arg0 : !cir.bool) -> !cir.bool {50    %0 = cir.const #cir.bool<false> : !cir.bool51    %1 = cir.const #cir.bool<true> : !cir.bool52    %2 = cir.select if %arg0 then %0 else %1 : (!cir.bool, !cir.bool, !cir.bool) -> !cir.bool53    cir.return %2 : !cir.bool54  }55 56  //      CHECK: cir.func{{.*}} @simplify_2(%[[ARG0:.+]]: !cir.bool) -> !cir.bool {57  // CHECK-NEXT:   %[[#A:]] = cir.unary(not, %[[ARG0]]) : !cir.bool, !cir.bool58  // CHECK-NEXT:   cir.return %[[#A]] : !cir.bool59  // CHECK-NEXT: }60}61