Skip to content

Commit 2c45ec9

Browse files
antoniofrighettodvbuka
authored andcommitted
[SimplifyCFG] Precommit tests for PR161807 (NFC)
1 parent d83044c commit 2c45ec9

File tree

1 file changed

+100
-0
lines changed

1 file changed

+100
-0
lines changed

llvm/test/Transforms/SimplifyCFG/X86/switch-of-powers-of-two.ll

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,103 @@ return:
3434
%phi = phi i32 [ 3, %bb1 ], [ 2, %bb2 ], [ 1, %bb3 ], [ 0, %bb4 ], [ 42, %bb5 ]
3535
ret i32 %phi
3636
}
37+
38+
define i32 @switch_of_powers_two_default_reachable(i32 %arg) {
39+
; CHECK-LABEL: define i32 @switch_of_powers_two_default_reachable(
40+
; CHECK-SAME: i32 [[ARG:%.*]]) {
41+
; CHECK-NEXT: [[ENTRY:.*]]:
42+
; CHECK-NEXT: switch i32 [[ARG]], label %[[RETURN:.*]] [
43+
; CHECK-NEXT: i32 1, label %[[BB1:.*]]
44+
; CHECK-NEXT: i32 8, label %[[BB2:.*]]
45+
; CHECK-NEXT: i32 16, label %[[BB3:.*]]
46+
; CHECK-NEXT: i32 32, label %[[BB4:.*]]
47+
; CHECK-NEXT: i32 64, label %[[BB5:.*]]
48+
; CHECK-NEXT: ]
49+
; CHECK: [[BB1]]:
50+
; CHECK-NEXT: br label %[[RETURN]]
51+
; CHECK: [[BB2]]:
52+
; CHECK-NEXT: br label %[[RETURN]]
53+
; CHECK: [[BB3]]:
54+
; CHECK-NEXT: br label %[[RETURN]]
55+
; CHECK: [[BB4]]:
56+
; CHECK-NEXT: br label %[[RETURN]]
57+
; CHECK: [[BB5]]:
58+
; CHECK-NEXT: br label %[[RETURN]]
59+
; CHECK: [[RETURN]]:
60+
; CHECK-NEXT: [[PHI:%.*]] = phi i32 [ 3, %[[BB1]] ], [ 2, %[[BB2]] ], [ 1, %[[BB3]] ], [ 0, %[[BB4]] ], [ 42, %[[BB5]] ], [ 5, %[[ENTRY]] ]
61+
; CHECK-NEXT: ret i32 [[PHI]]
62+
;
63+
entry:
64+
switch i32 %arg, label %default_case [
65+
i32 1, label %bb1
66+
i32 8, label %bb2
67+
i32 16, label %bb3
68+
i32 32, label %bb4
69+
i32 64, label %bb5
70+
]
71+
72+
default_case: br label %return
73+
bb1: br label %return
74+
bb2: br label %return
75+
bb3: br label %return
76+
bb4: br label %return
77+
bb5: br label %return
78+
79+
return:
80+
%phi = phi i32 [ 3, %bb1 ], [ 2, %bb2 ], [ 1, %bb3 ], [ 0, %bb4 ], [ 42, %bb5 ], [ 5, %default_case ]
81+
ret i32 %phi
82+
}
83+
84+
define i32 @switch_of_powers_two_default_reachable_multipreds(i32 %arg, i1 %cond) {
85+
; CHECK-LABEL: define i32 @switch_of_powers_two_default_reachable_multipreds(
86+
; CHECK-SAME: i32 [[ARG:%.*]], i1 [[COND:%.*]]) {
87+
; CHECK-NEXT: [[ENTRY:.*]]:
88+
; CHECK-NEXT: br i1 [[COND]], label %[[SWITCH:.*]], label %[[RETURN:.*]]
89+
; CHECK: [[SWITCH]]:
90+
; CHECK-NEXT: switch i32 [[ARG]], label %[[RETURN]] [
91+
; CHECK-NEXT: i32 1, label %[[BB1:.*]]
92+
; CHECK-NEXT: i32 8, label %[[BB2:.*]]
93+
; CHECK-NEXT: i32 16, label %[[BB3:.*]]
94+
; CHECK-NEXT: i32 32, label %[[BB4:.*]]
95+
; CHECK-NEXT: i32 64, label %[[BB5:.*]]
96+
; CHECK-NEXT: ]
97+
; CHECK: [[BB1]]:
98+
; CHECK-NEXT: br label %[[RETURN]]
99+
; CHECK: [[BB2]]:
100+
; CHECK-NEXT: br label %[[RETURN]]
101+
; CHECK: [[BB3]]:
102+
; CHECK-NEXT: br label %[[RETURN]]
103+
; CHECK: [[BB4]]:
104+
; CHECK-NEXT: br label %[[RETURN]]
105+
; CHECK: [[BB5]]:
106+
; CHECK-NEXT: br label %[[RETURN]]
107+
; CHECK: [[RETURN]]:
108+
; CHECK-NEXT: [[PHI:%.*]] = phi i32 [ 3, %[[BB1]] ], [ 2, %[[BB2]] ], [ 1, %[[BB3]] ], [ 0, %[[BB4]] ], [ 42, %[[BB5]] ], [ 0, %[[ENTRY]] ], [ [[ARG]], %[[SWITCH]] ]
109+
; CHECK-NEXT: ret i32 [[PHI]]
110+
;
111+
entry:
112+
br i1 %cond, label %switch, label %default_case
113+
114+
switch:
115+
switch i32 %arg, label %default_case [
116+
i32 1, label %bb1
117+
i32 8, label %bb2
118+
i32 16, label %bb3
119+
i32 32, label %bb4
120+
i32 64, label %bb5
121+
]
122+
123+
default_case:
124+
%pn = phi i32 [ 0, %entry ], [ %arg, %switch ]
125+
br label %return
126+
127+
bb1: br label %return
128+
bb2: br label %return
129+
bb3: br label %return
130+
bb4: br label %return
131+
bb5: br label %return
132+
133+
return:
134+
%phi = phi i32 [ 3, %bb1 ], [ 2, %bb2 ], [ 1, %bb3 ], [ 0, %bb4 ], [ 42, %bb5 ], [ %pn, %default_case ]
135+
ret i32 %phi
136+
}

0 commit comments

Comments
 (0)