Skip to content

Commit 4ff126c

Browse files
committed
Pre-commit test cases
1 parent 3e6589f commit 4ff126c

File tree

1 file changed

+254
-0
lines changed

1 file changed

+254
-0
lines changed
Lines changed: 254 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,254 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 4
2+
; RUN: llc -mtriple=x86_64-unknown-linux-gnu -stop-after=early-tailduplication < %s | FileCheck %s -check-prefix=LIMIT
3+
; RUN: llc -mtriple=x86_64-unknown-linux-gnu -stop-after=early-tailduplication < %s | FileCheck %s -check-prefix=NOLIMIT
4+
5+
define i32 @foo(ptr %0, i32 %1) {
6+
; LIMIT-LABEL: name: foo
7+
; LIMIT: bb.0 (%ir-block.2):
8+
; LIMIT-NEXT: successors: %bb.1(0x20000000), %bb.2(0x20000000), %bb.3(0x20000000), %bb.4(0x20000000)
9+
; LIMIT-NEXT: liveins: $rdi, $esi
10+
; LIMIT-NEXT: {{ $}}
11+
; LIMIT-NEXT: [[COPY:%[0-9]+]]:gr32 = COPY $esi
12+
; LIMIT-NEXT: [[COPY1:%[0-9]+]]:gr64 = COPY $rdi
13+
; LIMIT-NEXT: [[SHR32ri:%[0-9]+]]:gr32 = SHR32ri [[COPY]], 1, implicit-def dead $eflags
14+
; LIMIT-NEXT: [[AND32ri:%[0-9]+]]:gr32 = AND32ri [[SHR32ri]], 7, implicit-def dead $eflags
15+
; LIMIT-NEXT: [[SUBREG_TO_REG:%[0-9]+]]:gr64_nosp = SUBREG_TO_REG 0, killed [[AND32ri]], %subreg.sub_32bit
16+
; LIMIT-NEXT: JMP64m $noreg, 8, [[SUBREG_TO_REG]], %jump-table.0, $noreg :: (load (s64) from jump-table)
17+
; LIMIT-NEXT: {{ $}}
18+
; LIMIT-NEXT: bb.1 (%ir-block.5):
19+
; LIMIT-NEXT: successors: %bb.7(0x20000000), %bb.8(0x20000000), %bb.9(0x20000000), %bb.10(0x20000000)
20+
; LIMIT-NEXT: {{ $}}
21+
; LIMIT-NEXT: [[MOV32rm:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg :: (load (s32) from %ir.0)
22+
; LIMIT-NEXT: [[SHR32ri1:%[0-9]+]]:gr32 = SHR32ri [[COPY]], 2, implicit-def dead $eflags
23+
; LIMIT-NEXT: [[AND32ri1:%[0-9]+]]:gr32 = AND32ri [[SHR32ri1]], 7, implicit-def dead $eflags
24+
; LIMIT-NEXT: [[SUBREG_TO_REG1:%[0-9]+]]:gr64_nosp = SUBREG_TO_REG 0, [[AND32ri1]], %subreg.sub_32bit
25+
; LIMIT-NEXT: JMP64m $noreg, 8, [[SUBREG_TO_REG1]], %jump-table.1, $noreg :: (load (s64) from jump-table)
26+
; LIMIT-NEXT: {{ $}}
27+
; LIMIT-NEXT: bb.2 (%ir-block.7):
28+
; LIMIT-NEXT: successors: %bb.7(0x20000000), %bb.8(0x20000000), %bb.9(0x20000000), %bb.10(0x20000000)
29+
; LIMIT-NEXT: {{ $}}
30+
; LIMIT-NEXT: [[MOV32rm1:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg :: (load (s32) from %ir.0)
31+
; LIMIT-NEXT: [[SHR32ri2:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm1]], 1, implicit-def dead $eflags
32+
; LIMIT-NEXT: [[SHR32ri3:%[0-9]+]]:gr32 = SHR32ri [[COPY]], 2, implicit-def dead $eflags
33+
; LIMIT-NEXT: [[AND32ri2:%[0-9]+]]:gr32 = AND32ri [[SHR32ri3]], 7, implicit-def dead $eflags
34+
; LIMIT-NEXT: [[SUBREG_TO_REG2:%[0-9]+]]:gr64_nosp = SUBREG_TO_REG 0, [[AND32ri2]], %subreg.sub_32bit
35+
; LIMIT-NEXT: JMP64m $noreg, 8, [[SUBREG_TO_REG2]], %jump-table.1, $noreg :: (load (s64) from jump-table)
36+
; LIMIT-NEXT: {{ $}}
37+
; LIMIT-NEXT: bb.3 (%ir-block.10):
38+
; LIMIT-NEXT: successors: %bb.7(0x20000000), %bb.8(0x20000000), %bb.9(0x20000000), %bb.10(0x20000000)
39+
; LIMIT-NEXT: {{ $}}
40+
; LIMIT-NEXT: [[MOV32rm2:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg :: (load (s32) from %ir.0)
41+
; LIMIT-NEXT: [[SHR32ri4:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm2]], 2, implicit-def dead $eflags
42+
; LIMIT-NEXT: [[SHR32ri5:%[0-9]+]]:gr32 = SHR32ri [[COPY]], 2, implicit-def dead $eflags
43+
; LIMIT-NEXT: [[AND32ri3:%[0-9]+]]:gr32 = AND32ri [[SHR32ri5]], 7, implicit-def dead $eflags
44+
; LIMIT-NEXT: [[SUBREG_TO_REG3:%[0-9]+]]:gr64_nosp = SUBREG_TO_REG 0, [[AND32ri3]], %subreg.sub_32bit
45+
; LIMIT-NEXT: JMP64m $noreg, 8, [[SUBREG_TO_REG3]], %jump-table.1, $noreg :: (load (s64) from jump-table)
46+
; LIMIT-NEXT: {{ $}}
47+
; LIMIT-NEXT: bb.4 (%ir-block.13):
48+
; LIMIT-NEXT: successors: %bb.7(0x20000000), %bb.8(0x20000000), %bb.9(0x20000000), %bb.10(0x20000000)
49+
; LIMIT-NEXT: {{ $}}
50+
; LIMIT-NEXT: [[MOV32rm3:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg :: (load (s32) from %ir.0)
51+
; LIMIT-NEXT: [[SHR32ri6:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm3]], 3, implicit-def dead $eflags
52+
; LIMIT-NEXT: [[SHR32ri7:%[0-9]+]]:gr32 = SHR32ri [[COPY]], 2, implicit-def dead $eflags
53+
; LIMIT-NEXT: [[AND32ri4:%[0-9]+]]:gr32 = AND32ri [[SHR32ri7]], 7, implicit-def dead $eflags
54+
; LIMIT-NEXT: [[SUBREG_TO_REG4:%[0-9]+]]:gr64_nosp = SUBREG_TO_REG 0, [[AND32ri4]], %subreg.sub_32bit
55+
; LIMIT-NEXT: JMP64m $noreg, 8, [[SUBREG_TO_REG4]], %jump-table.1, $noreg :: (load (s64) from jump-table)
56+
; LIMIT-NEXT: {{ $}}
57+
; LIMIT-NEXT: bb.5.default.unreachable2:
58+
; LIMIT-NEXT: successors:
59+
; LIMIT-NEXT: {{ $}}
60+
; LIMIT-NEXT: {{ $}}
61+
; LIMIT-NEXT: bb.7 (%ir-block.20):
62+
; LIMIT-NEXT: successors: %bb.11(0x80000000)
63+
; LIMIT-NEXT: {{ $}}
64+
; LIMIT-NEXT: [[PHI:%[0-9]+]]:gr32 = PHI [[SHR32ri6]], %bb.4, [[SHR32ri4]], %bb.3, [[SHR32ri2]], %bb.2, [[MOV32rm]], %bb.1
65+
; LIMIT-NEXT: [[MOV32rm4:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg :: (load (s32) from %ir.0)
66+
; LIMIT-NEXT: JMP_1 %bb.11
67+
; LIMIT-NEXT: {{ $}}
68+
; LIMIT-NEXT: bb.8 (%ir-block.22):
69+
; LIMIT-NEXT: successors: %bb.11(0x80000000)
70+
; LIMIT-NEXT: {{ $}}
71+
; LIMIT-NEXT: [[PHI1:%[0-9]+]]:gr32 = PHI [[SHR32ri6]], %bb.4, [[SHR32ri4]], %bb.3, [[SHR32ri2]], %bb.2, [[MOV32rm]], %bb.1
72+
; LIMIT-NEXT: [[MOV32rm5:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg :: (load (s32) from %ir.0)
73+
; LIMIT-NEXT: [[SHR32ri8:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm5]], 1, implicit-def dead $eflags
74+
; LIMIT-NEXT: JMP_1 %bb.11
75+
; LIMIT-NEXT: {{ $}}
76+
; LIMIT-NEXT: bb.9 (%ir-block.25):
77+
; LIMIT-NEXT: successors: %bb.11(0x80000000)
78+
; LIMIT-NEXT: {{ $}}
79+
; LIMIT-NEXT: [[PHI2:%[0-9]+]]:gr32 = PHI [[SHR32ri6]], %bb.4, [[SHR32ri4]], %bb.3, [[SHR32ri2]], %bb.2, [[MOV32rm]], %bb.1
80+
; LIMIT-NEXT: [[MOV32rm6:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg :: (load (s32) from %ir.0)
81+
; LIMIT-NEXT: [[SHR32ri9:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm6]], 2, implicit-def dead $eflags
82+
; LIMIT-NEXT: JMP_1 %bb.11
83+
; LIMIT-NEXT: {{ $}}
84+
; LIMIT-NEXT: bb.10 (%ir-block.28):
85+
; LIMIT-NEXT: successors: %bb.11(0x80000000)
86+
; LIMIT-NEXT: {{ $}}
87+
; LIMIT-NEXT: [[PHI3:%[0-9]+]]:gr32 = PHI [[SHR32ri6]], %bb.4, [[SHR32ri4]], %bb.3, [[SHR32ri2]], %bb.2, [[MOV32rm]], %bb.1
88+
; LIMIT-NEXT: [[MOV32rm7:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg :: (load (s32) from %ir.0)
89+
; LIMIT-NEXT: [[SHR32ri10:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm7]], 6, implicit-def dead $eflags
90+
; LIMIT-NEXT: {{ $}}
91+
; LIMIT-NEXT: bb.11 (%ir-block.31):
92+
; LIMIT-NEXT: [[PHI4:%[0-9]+]]:gr32 = PHI [[PHI3]], %bb.10, [[PHI2]], %bb.9, [[PHI1]], %bb.8, [[PHI]], %bb.7
93+
; LIMIT-NEXT: [[PHI5:%[0-9]+]]:gr32 = PHI [[SHR32ri10]], %bb.10, [[SHR32ri9]], %bb.9, [[SHR32ri8]], %bb.8, [[MOV32rm4]], %bb.7
94+
; LIMIT-NEXT: [[OR32rr:%[0-9]+]]:gr32 = OR32rr [[PHI5]], [[PHI4]], implicit-def dead $eflags
95+
; LIMIT-NEXT: $eax = COPY [[OR32rr]]
96+
; LIMIT-NEXT: RET 0, $eax
97+
;
98+
; NOLIMIT-LABEL: name: foo
99+
; NOLIMIT: bb.0 (%ir-block.2):
100+
; NOLIMIT-NEXT: successors: %bb.1(0x20000000), %bb.2(0x20000000), %bb.3(0x20000000), %bb.4(0x20000000)
101+
; NOLIMIT-NEXT: liveins: $rdi, $esi
102+
; NOLIMIT-NEXT: {{ $}}
103+
; NOLIMIT-NEXT: [[COPY:%[0-9]+]]:gr32 = COPY $esi
104+
; NOLIMIT-NEXT: [[COPY1:%[0-9]+]]:gr64 = COPY $rdi
105+
; NOLIMIT-NEXT: [[SHR32ri:%[0-9]+]]:gr32 = SHR32ri [[COPY]], 1, implicit-def dead $eflags
106+
; NOLIMIT-NEXT: [[AND32ri:%[0-9]+]]:gr32 = AND32ri [[SHR32ri]], 7, implicit-def dead $eflags
107+
; NOLIMIT-NEXT: [[SUBREG_TO_REG:%[0-9]+]]:gr64_nosp = SUBREG_TO_REG 0, killed [[AND32ri]], %subreg.sub_32bit
108+
; NOLIMIT-NEXT: JMP64m $noreg, 8, [[SUBREG_TO_REG]], %jump-table.0, $noreg :: (load (s64) from jump-table)
109+
; NOLIMIT-NEXT: {{ $}}
110+
; NOLIMIT-NEXT: bb.1 (%ir-block.5):
111+
; NOLIMIT-NEXT: successors: %bb.7(0x20000000), %bb.8(0x20000000), %bb.9(0x20000000), %bb.10(0x20000000)
112+
; NOLIMIT-NEXT: {{ $}}
113+
; NOLIMIT-NEXT: [[MOV32rm:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg :: (load (s32) from %ir.0)
114+
; NOLIMIT-NEXT: [[SHR32ri1:%[0-9]+]]:gr32 = SHR32ri [[COPY]], 2, implicit-def dead $eflags
115+
; NOLIMIT-NEXT: [[AND32ri1:%[0-9]+]]:gr32 = AND32ri [[SHR32ri1]], 7, implicit-def dead $eflags
116+
; NOLIMIT-NEXT: [[SUBREG_TO_REG1:%[0-9]+]]:gr64_nosp = SUBREG_TO_REG 0, [[AND32ri1]], %subreg.sub_32bit
117+
; NOLIMIT-NEXT: JMP64m $noreg, 8, [[SUBREG_TO_REG1]], %jump-table.1, $noreg :: (load (s64) from jump-table)
118+
; NOLIMIT-NEXT: {{ $}}
119+
; NOLIMIT-NEXT: bb.2 (%ir-block.7):
120+
; NOLIMIT-NEXT: successors: %bb.7(0x20000000), %bb.8(0x20000000), %bb.9(0x20000000), %bb.10(0x20000000)
121+
; NOLIMIT-NEXT: {{ $}}
122+
; NOLIMIT-NEXT: [[MOV32rm1:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg :: (load (s32) from %ir.0)
123+
; NOLIMIT-NEXT: [[SHR32ri2:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm1]], 1, implicit-def dead $eflags
124+
; NOLIMIT-NEXT: [[SHR32ri3:%[0-9]+]]:gr32 = SHR32ri [[COPY]], 2, implicit-def dead $eflags
125+
; NOLIMIT-NEXT: [[AND32ri2:%[0-9]+]]:gr32 = AND32ri [[SHR32ri3]], 7, implicit-def dead $eflags
126+
; NOLIMIT-NEXT: [[SUBREG_TO_REG2:%[0-9]+]]:gr64_nosp = SUBREG_TO_REG 0, [[AND32ri2]], %subreg.sub_32bit
127+
; NOLIMIT-NEXT: JMP64m $noreg, 8, [[SUBREG_TO_REG2]], %jump-table.1, $noreg :: (load (s64) from jump-table)
128+
; NOLIMIT-NEXT: {{ $}}
129+
; NOLIMIT-NEXT: bb.3 (%ir-block.10):
130+
; NOLIMIT-NEXT: successors: %bb.7(0x20000000), %bb.8(0x20000000), %bb.9(0x20000000), %bb.10(0x20000000)
131+
; NOLIMIT-NEXT: {{ $}}
132+
; NOLIMIT-NEXT: [[MOV32rm2:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg :: (load (s32) from %ir.0)
133+
; NOLIMIT-NEXT: [[SHR32ri4:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm2]], 2, implicit-def dead $eflags
134+
; NOLIMIT-NEXT: [[SHR32ri5:%[0-9]+]]:gr32 = SHR32ri [[COPY]], 2, implicit-def dead $eflags
135+
; NOLIMIT-NEXT: [[AND32ri3:%[0-9]+]]:gr32 = AND32ri [[SHR32ri5]], 7, implicit-def dead $eflags
136+
; NOLIMIT-NEXT: [[SUBREG_TO_REG3:%[0-9]+]]:gr64_nosp = SUBREG_TO_REG 0, [[AND32ri3]], %subreg.sub_32bit
137+
; NOLIMIT-NEXT: JMP64m $noreg, 8, [[SUBREG_TO_REG3]], %jump-table.1, $noreg :: (load (s64) from jump-table)
138+
; NOLIMIT-NEXT: {{ $}}
139+
; NOLIMIT-NEXT: bb.4 (%ir-block.13):
140+
; NOLIMIT-NEXT: successors: %bb.7(0x20000000), %bb.8(0x20000000), %bb.9(0x20000000), %bb.10(0x20000000)
141+
; NOLIMIT-NEXT: {{ $}}
142+
; NOLIMIT-NEXT: [[MOV32rm3:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg :: (load (s32) from %ir.0)
143+
; NOLIMIT-NEXT: [[SHR32ri6:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm3]], 3, implicit-def dead $eflags
144+
; NOLIMIT-NEXT: [[SHR32ri7:%[0-9]+]]:gr32 = SHR32ri [[COPY]], 2, implicit-def dead $eflags
145+
; NOLIMIT-NEXT: [[AND32ri4:%[0-9]+]]:gr32 = AND32ri [[SHR32ri7]], 7, implicit-def dead $eflags
146+
; NOLIMIT-NEXT: [[SUBREG_TO_REG4:%[0-9]+]]:gr64_nosp = SUBREG_TO_REG 0, [[AND32ri4]], %subreg.sub_32bit
147+
; NOLIMIT-NEXT: JMP64m $noreg, 8, [[SUBREG_TO_REG4]], %jump-table.1, $noreg :: (load (s64) from jump-table)
148+
; NOLIMIT-NEXT: {{ $}}
149+
; NOLIMIT-NEXT: bb.5.default.unreachable2:
150+
; NOLIMIT-NEXT: successors:
151+
; NOLIMIT-NEXT: {{ $}}
152+
; NOLIMIT-NEXT: {{ $}}
153+
; NOLIMIT-NEXT: bb.7 (%ir-block.20):
154+
; NOLIMIT-NEXT: successors: %bb.11(0x80000000)
155+
; NOLIMIT-NEXT: {{ $}}
156+
; NOLIMIT-NEXT: [[PHI:%[0-9]+]]:gr32 = PHI [[SHR32ri6]], %bb.4, [[SHR32ri4]], %bb.3, [[SHR32ri2]], %bb.2, [[MOV32rm]], %bb.1
157+
; NOLIMIT-NEXT: [[MOV32rm4:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg :: (load (s32) from %ir.0)
158+
; NOLIMIT-NEXT: JMP_1 %bb.11
159+
; NOLIMIT-NEXT: {{ $}}
160+
; NOLIMIT-NEXT: bb.8 (%ir-block.22):
161+
; NOLIMIT-NEXT: successors: %bb.11(0x80000000)
162+
; NOLIMIT-NEXT: {{ $}}
163+
; NOLIMIT-NEXT: [[PHI1:%[0-9]+]]:gr32 = PHI [[SHR32ri6]], %bb.4, [[SHR32ri4]], %bb.3, [[SHR32ri2]], %bb.2, [[MOV32rm]], %bb.1
164+
; NOLIMIT-NEXT: [[MOV32rm5:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg :: (load (s32) from %ir.0)
165+
; NOLIMIT-NEXT: [[SHR32ri8:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm5]], 1, implicit-def dead $eflags
166+
; NOLIMIT-NEXT: JMP_1 %bb.11
167+
; NOLIMIT-NEXT: {{ $}}
168+
; NOLIMIT-NEXT: bb.9 (%ir-block.25):
169+
; NOLIMIT-NEXT: successors: %bb.11(0x80000000)
170+
; NOLIMIT-NEXT: {{ $}}
171+
; NOLIMIT-NEXT: [[PHI2:%[0-9]+]]:gr32 = PHI [[SHR32ri6]], %bb.4, [[SHR32ri4]], %bb.3, [[SHR32ri2]], %bb.2, [[MOV32rm]], %bb.1
172+
; NOLIMIT-NEXT: [[MOV32rm6:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg :: (load (s32) from %ir.0)
173+
; NOLIMIT-NEXT: [[SHR32ri9:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm6]], 2, implicit-def dead $eflags
174+
; NOLIMIT-NEXT: JMP_1 %bb.11
175+
; NOLIMIT-NEXT: {{ $}}
176+
; NOLIMIT-NEXT: bb.10 (%ir-block.28):
177+
; NOLIMIT-NEXT: successors: %bb.11(0x80000000)
178+
; NOLIMIT-NEXT: {{ $}}
179+
; NOLIMIT-NEXT: [[PHI3:%[0-9]+]]:gr32 = PHI [[SHR32ri6]], %bb.4, [[SHR32ri4]], %bb.3, [[SHR32ri2]], %bb.2, [[MOV32rm]], %bb.1
180+
; NOLIMIT-NEXT: [[MOV32rm7:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg :: (load (s32) from %ir.0)
181+
; NOLIMIT-NEXT: [[SHR32ri10:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm7]], 6, implicit-def dead $eflags
182+
; NOLIMIT-NEXT: {{ $}}
183+
; NOLIMIT-NEXT: bb.11 (%ir-block.31):
184+
; NOLIMIT-NEXT: [[PHI4:%[0-9]+]]:gr32 = PHI [[PHI3]], %bb.10, [[PHI2]], %bb.9, [[PHI1]], %bb.8, [[PHI]], %bb.7
185+
; NOLIMIT-NEXT: [[PHI5:%[0-9]+]]:gr32 = PHI [[SHR32ri10]], %bb.10, [[SHR32ri9]], %bb.9, [[SHR32ri8]], %bb.8, [[MOV32rm4]], %bb.7
186+
; NOLIMIT-NEXT: [[OR32rr:%[0-9]+]]:gr32 = OR32rr [[PHI5]], [[PHI4]], implicit-def dead $eflags
187+
; NOLIMIT-NEXT: $eax = COPY [[OR32rr]]
188+
; NOLIMIT-NEXT: RET 0, $eax
189+
%3 = lshr i32 %1, 1
190+
%4 = and i32 %3, 7
191+
switch i32 %4, label %default.unreachable2 [
192+
i32 0, label %5
193+
i32 1, label %7
194+
i32 2, label %10
195+
i32 3, label %13
196+
]
197+
198+
5: ; preds = %2
199+
%6 = load i32, ptr %0, align 4
200+
br label %16
201+
202+
7: ; preds = %2
203+
%8 = load i32, ptr %0, align 4
204+
%9 = lshr i32 %8, 1
205+
br label %16
206+
207+
10: ; preds = %2
208+
%11 = load i32, ptr %0, align 4
209+
%12 = lshr i32 %11, 2
210+
br label %16
211+
212+
13: ; preds = %2
213+
%14 = load i32, ptr %0, align 4
214+
%15 = lshr i32 %14, 3
215+
br label %16
216+
217+
default.unreachable2: ; preds = %16, %2
218+
unreachable
219+
220+
16: ; preds = %13, %10, %7, %5
221+
%17 = phi i32 [ %15, %13 ], [ %12, %10 ], [ %9, %7 ], [ %6, %5 ]
222+
%18 = lshr i32 %1, 2
223+
%19 = and i32 %18, 7
224+
switch i32 %19, label %default.unreachable2 [
225+
i32 0, label %20
226+
i32 1, label %22
227+
i32 2, label %25
228+
i32 3, label %28
229+
]
230+
231+
20: ; preds = %16
232+
%21 = load i32, ptr %0, align 4
233+
br label %31
234+
235+
22: ; preds = %16
236+
%23 = load i32, ptr %0, align 4
237+
%24 = lshr i32 %23, 1
238+
br label %31
239+
240+
25: ; preds = %16
241+
%26 = load i32, ptr %0, align 4
242+
%27 = lshr i32 %26, 2
243+
br label %31
244+
245+
28: ; preds = %16
246+
%29 = load i32, ptr %0, align 4
247+
%30 = lshr i32 %29, 6
248+
br label %31
249+
250+
31: ; preds = %28, %25, %22, %20
251+
%32 = phi i32 [ %30, %28 ], [ %27, %25 ], [ %24, %22 ], [ %21, %20 ]
252+
%33 = or i32 %32, %17
253+
ret i32 %33
254+
}

0 commit comments

Comments
 (0)