[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / test / Transforms / SimplifyCFG / switch-to-select-two-case.ll
blob8abcfd54ffb790418c0e5a2abbfcce073ba844bd
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt < %s -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -S | FileCheck %s
4 ; int foo1_with_default(int a) {
5 ;   switch(a) {
6 ;     case 10:
7 ;       return 10;
8 ;     case 20:
9 ;       return 2;
10 ;   }
11 ;   return 4;
12 ; }
14 define i32 @foo1_with_default(i32 %a) {
15 ; CHECK-LABEL: @foo1_with_default(
16 ; CHECK-NEXT:  entry:
17 ; CHECK-NEXT:    [[SWITCH_SELECTCMP:%.*]] = icmp eq i32 [[A:%.*]], 20
18 ; CHECK-NEXT:    [[SWITCH_SELECT:%.*]] = select i1 [[SWITCH_SELECTCMP]], i32 2, i32 4
19 ; CHECK-NEXT:    [[SWITCH_SELECTCMP1:%.*]] = icmp eq i32 [[A]], 10
20 ; CHECK-NEXT:    [[SWITCH_SELECT2:%.*]] = select i1 [[SWITCH_SELECTCMP1]], i32 10, i32 [[SWITCH_SELECT]]
21 ; CHECK-NEXT:    ret i32 [[SWITCH_SELECT2]]
23 entry:
24   switch i32 %a, label %sw.epilog [
25   i32 10, label %sw.bb
26   i32 20, label %sw.bb1
27   ]
29 sw.bb:
30   br label %return
32 sw.bb1:
33   br label %return
35 sw.epilog:
36   br label %return
38 return:
39   %retval.0 = phi i32 [ 4, %sw.epilog ], [ 2, %sw.bb1 ], [ 10, %sw.bb ]
40   ret i32 %retval.0
43 ; Same as above, but both cases have the same value.
44 define i32 @same_value(i32 %a) {
45 ; CHECK-LABEL: @same_value(
46 ; CHECK-NEXT:  entry:
47 ; CHECK-NEXT:    [[SWITCH_SELECTCMP_CASE1:%.*]] = icmp eq i32 [[A:%.*]], 10
48 ; CHECK-NEXT:    [[SWITCH_SELECTCMP_CASE2:%.*]] = icmp eq i32 [[A]], 20
49 ; CHECK-NEXT:    [[SWITCH_SELECTCMP:%.*]] = or i1 [[SWITCH_SELECTCMP_CASE1]], [[SWITCH_SELECTCMP_CASE2]]
50 ; CHECK-NEXT:    [[TMP0:%.*]] = select i1 [[SWITCH_SELECTCMP]], i32 10, i32 4
51 ; CHECK-NEXT:    ret i32 [[TMP0]]
53 entry:
54   switch i32 %a, label %sw.epilog [
55   i32 10, label %sw.bb
56   i32 20, label %sw.bb
57   ]
59 sw.bb:
60   br label %return
62 sw.epilog:
63   br label %return
65 return:
66   %retval.0 = phi i32 [ 4, %sw.epilog ], [ 10, %sw.bb ]
67   ret i32 %retval.0