• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \
3; RUN:     -mcpu=pwr10 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr < %s | \
4; RUN:     FileCheck %s
5; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \
6; RUN:     -mcpu=pwr10 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr < %s | \
7; RUN:     FileCheck %s --check-prefix=CHECK-BE
8
9; This test case tests spilling the CR GT bit on Power10. On Power10, this is
10; achieved by setb %reg, %CRREG (gt bit) -> stw %reg, $FI instead of:
11; mfocrf %reg, %CRREG -> rlwinm %reg1, %reg, $SH, 0, 0 -> stw %reg1, $FI.
12
13; Without fine-grained control over clobbering individual CR bits,
14; it is difficult to produce a concise test case that will ensure a specific
15; bit of any CR field is spilled. We need to test the spilling of a CR bit
16; other than the LT bit. Hence this test case is rather complex.
17
18define dso_local fastcc void @P10_Spill_CR_GT() unnamed_addr {
19; CHECK-LABEL: P10_Spill_CR_GT:
20; CHECK:         .localentry P10_Spill_CR_GT, 1
21; CHECK-NEXT:  # %bb.0: # %bb
22; CHECK-NEXT:    mflr r0
23; CHECK-NEXT:    mfcr r12
24; CHECK-NEXT:    std r0, 16(r1)
25; CHECK-NEXT:    stw r12, 8(r1)
26; CHECK-NEXT:    stdu r1, -80(r1)
27; CHECK-NEXT:    .cfi_def_cfa_offset 80
28; CHECK-NEXT:    .cfi_offset lr, 16
29; CHECK-NEXT:    .cfi_offset r29, -24
30; CHECK-NEXT:    .cfi_offset r30, -16
31; CHECK-NEXT:    .cfi_offset cr2, 8
32; CHECK-NEXT:    .cfi_offset cr3, 8
33; CHECK-NEXT:    .cfi_offset cr4, 8
34; CHECK-NEXT:    lwz r3, 0(r3)
35; CHECK-NEXT:    std r29, 56(r1) # 8-byte Folded Spill
36; CHECK-NEXT:    std r30, 64(r1) # 8-byte Folded Spill
37; CHECK-NEXT:    paddi r29, 0, .LJTI0_0@PCREL, 1
38; CHECK-NEXT:    srwi r4, r3, 4
39; CHECK-NEXT:    srwi r3, r3, 5
40; CHECK-NEXT:    andi. r4, r4, 1
41; CHECK-NEXT:    li r4, 0
42; CHECK-NEXT:    crmove 4*cr4+lt, gt
43; CHECK-NEXT:    andi. r3, r3, 1
44; CHECK-NEXT:    setnbc r3, gt
45; CHECK-NEXT:    stw r3, 52(r1)
46; CHECK-NEXT:    cmplwi cr3, r3, 336
47; CHECK-NEXT:    li r3, 0
48; CHECK-NEXT:    sldi r30, r3, 2
49; CHECK-NEXT:    b .LBB0_2
50; CHECK-NEXT:    .p2align 4
51; CHECK-NEXT:  .LBB0_1: # %bb43
52; CHECK-NEXT:    #
53; CHECK-NEXT:    bl call_1@notoc
54; CHECK-NEXT:    li r4, 0
55; CHECK-NEXT:    setnbc r3, 4*cr2+eq
56; CHECK-NEXT:    stb r4, 0(r3)
57; CHECK-NEXT:    li r4, 0
58; CHECK-NEXT:  .LBB0_2: # %bb5
59; CHECK-NEXT:    #
60; CHECK-NEXT:    bc 12, 4*cr4+lt, .LBB0_31
61; CHECK-NEXT:  # %bb.3: # %bb10
62; CHECK-NEXT:    #
63; CHECK-NEXT:    bgt cr3, .LBB0_5
64; CHECK-NEXT:  # %bb.4: # %bb10
65; CHECK-NEXT:    #
66; CHECK-NEXT:    mr r3, r4
67; CHECK-NEXT:    lwz r5, 0(r3)
68; CHECK-NEXT:    rlwinm r4, r5, 0, 21, 22
69; CHECK-NEXT:    cmpwi cr2, r4, 512
70; CHECK-NEXT:    lwax r4, r30, r29
71; CHECK-NEXT:    add r4, r4, r29
72; CHECK-NEXT:    mtctr r4
73; CHECK-NEXT:    li r4, 0
74; CHECK-NEXT:    bctr
75; CHECK-NEXT:  .LBB0_5: # %bb13
76; CHECK-NEXT:    #
77; CHECK-NEXT:    li r4, 16
78; CHECK-NEXT:    b .LBB0_2
79; CHECK-NEXT:    .p2align 4
80; CHECK-NEXT:  .LBB0_6: # %bb22
81; CHECK-NEXT:    #
82; CHECK-NEXT:    b .LBB0_6
83; CHECK-NEXT:    .p2align 4
84; CHECK-NEXT:  .LBB0_7: # %bb28
85; CHECK-NEXT:    #
86; CHECK-NEXT:    b .LBB0_7
87; CHECK-NEXT:    .p2align 4
88; CHECK-NEXT:  .LBB0_8: # %bb52
89; CHECK-NEXT:    #
90; CHECK-NEXT:    b .LBB0_8
91; CHECK-NEXT:    .p2align 4
92; CHECK-NEXT:  .LBB0_9: # %bb17
93; CHECK-NEXT:    #
94; CHECK-NEXT:    b .LBB0_9
95; CHECK-NEXT:    .p2align 4
96; CHECK-NEXT:  .LBB0_10: # %bb26
97; CHECK-NEXT:    #
98; CHECK-NEXT:    b .LBB0_10
99; CHECK-NEXT:    .p2align 4
100; CHECK-NEXT:  .LBB0_11: # %bb42
101; CHECK-NEXT:    #
102; CHECK-NEXT:    b .LBB0_11
103; CHECK-NEXT:    .p2align 4
104; CHECK-NEXT:  .LBB0_12: # %bb54
105; CHECK-NEXT:    #
106; CHECK-NEXT:    b .LBB0_12
107; CHECK-NEXT:    .p2align 4
108; CHECK-NEXT:  .LBB0_13: # %bb47
109; CHECK-NEXT:    #
110; CHECK-NEXT:    b .LBB0_13
111; CHECK-NEXT:    .p2align 4
112; CHECK-NEXT:  .LBB0_14: # %bb58
113; CHECK-NEXT:    #
114; CHECK-NEXT:    b .LBB0_14
115; CHECK-NEXT:    .p2align 4
116; CHECK-NEXT:  .LBB0_15: # %bb24
117; CHECK-NEXT:    #
118; CHECK-NEXT:    b .LBB0_15
119; CHECK-NEXT:    .p2align 4
120; CHECK-NEXT:  .LBB0_16: # %bb19
121; CHECK-NEXT:    #
122; CHECK-NEXT:    b .LBB0_16
123; CHECK-NEXT:    .p2align 4
124; CHECK-NEXT:  .LBB0_17: # %bb23
125; CHECK-NEXT:    #
126; CHECK-NEXT:    b .LBB0_17
127; CHECK-NEXT:    .p2align 4
128; CHECK-NEXT:  .LBB0_18: # %bb60
129; CHECK-NEXT:    #
130; CHECK-NEXT:    b .LBB0_18
131; CHECK-NEXT:    .p2align 4
132; CHECK-NEXT:  .LBB0_19: # %bb59
133; CHECK-NEXT:    #
134; CHECK-NEXT:    b .LBB0_19
135; CHECK-NEXT:    .p2align 4
136; CHECK-NEXT:  .LBB0_20: # %bb46
137; CHECK-NEXT:    #
138; CHECK-NEXT:    b .LBB0_20
139; CHECK-NEXT:    .p2align 4
140; CHECK-NEXT:  .LBB0_21: # %bb49
141; CHECK-NEXT:    #
142; CHECK-NEXT:    b .LBB0_21
143; CHECK-NEXT:    .p2align 4
144; CHECK-NEXT:  .LBB0_22: # %bb57
145; CHECK-NEXT:    #
146; CHECK-NEXT:    b .LBB0_22
147; CHECK-NEXT:    .p2align 4
148; CHECK-NEXT:  .LBB0_23: # %bb56
149; CHECK-NEXT:    #
150; CHECK-NEXT:    b .LBB0_23
151; CHECK-NEXT:    .p2align 4
152; CHECK-NEXT:  .LBB0_24: # %bb20
153; CHECK-NEXT:    #
154; CHECK-NEXT:    b .LBB0_24
155; CHECK-NEXT:    .p2align 4
156; CHECK-NEXT:  .LBB0_25: # %bb18
157; CHECK-NEXT:    #
158; CHECK-NEXT:    b .LBB0_25
159; CHECK-NEXT:    .p2align 4
160; CHECK-NEXT:  .LBB0_26: # %bb61
161; CHECK-NEXT:    #
162; CHECK-NEXT:    b .LBB0_26
163; CHECK-NEXT:    .p2align 4
164; CHECK-NEXT:  .LBB0_27: # %bb55
165; CHECK-NEXT:    #
166; CHECK-NEXT:    b .LBB0_27
167; CHECK-NEXT:    .p2align 4
168; CHECK-NEXT:  .LBB0_28: # %bb62
169; CHECK-NEXT:    #
170; CHECK-NEXT:    b .LBB0_28
171; CHECK-NEXT:    .p2align 4
172; CHECK-NEXT:  .LBB0_29: # %bb50
173; CHECK-NEXT:    #
174; CHECK-NEXT:    b .LBB0_29
175; CHECK-NEXT:    .p2align 4
176; CHECK-NEXT:  .LBB0_30: # %bb48
177; CHECK-NEXT:    #
178; CHECK-NEXT:    b .LBB0_30
179; CHECK-NEXT:  .LBB0_31: # %bb9
180; CHECK-NEXT:    ld r30, 64(r1) # 8-byte Folded Reload
181; CHECK-NEXT:    ld r29, 56(r1) # 8-byte Folded Reload
182; CHECK-NEXT:    addi r1, r1, 80
183; CHECK-NEXT:    ld r0, 16(r1)
184; CHECK-NEXT:    lwz r12, 8(r1)
185; CHECK-NEXT:    mtlr r0
186; CHECK-NEXT:    mtocrf 32, r12
187; CHECK-NEXT:    mtocrf 16, r12
188; CHECK-NEXT:    mtocrf 8, r12
189; CHECK-NEXT:    blr
190; CHECK-NEXT:  .LBB0_32: # %bb29
191; CHECK-NEXT:    lwz r4, 52(r1)
192; CHECK-NEXT:    cmpwi cr4, r3, 0
193; CHECK-NEXT:    setnbc r30, 4*cr2+eq
194; CHECK-NEXT:    # implicit-def: $cr2lt
195; CHECK-NEXT:    mfocrf r3, 32
196; CHECK-NEXT:    cmpwi cr3, r5, 366
197; CHECK-NEXT:    li r29, 0
198; CHECK-NEXT:    rlwimi r3, r4, 24, 8, 8
199; CHECK-NEXT:    mtocrf 32, r3
200; CHECK-NEXT:    .p2align 5
201; CHECK-NEXT:  .LBB0_33: # %bb32
202; CHECK-NEXT:    #
203; CHECK-NEXT:    bc 4, 4*cr2+lt, .LBB0_35
204; CHECK-NEXT:  # %bb.34: # %bb33
205; CHECK-NEXT:    #
206; CHECK-NEXT:    stb r29, 0(r30)
207; CHECK-NEXT:  .LBB0_35: # %bb36
208; CHECK-NEXT:    #
209; CHECK-NEXT:    bc 4, 4*cr4+eq, .LBB0_33
210; CHECK-NEXT:  # %bb.36: # %bb39
211; CHECK-NEXT:    #
212; CHECK-NEXT:    bl call_2@notoc
213; CHECK-NEXT:    b .LBB0_33
214;
215; CHECK-BE-LABEL: P10_Spill_CR_GT:
216; CHECK-BE:       # %bb.0: # %bb
217; CHECK-BE-NEXT:    mflr r0
218; CHECK-BE-NEXT:    mfcr r12
219; CHECK-BE-NEXT:    std r0, 16(r1)
220; CHECK-BE-NEXT:    stw r12, 8(r1)
221; CHECK-BE-NEXT:    stdu r1, -160(r1)
222; CHECK-BE-NEXT:    .cfi_def_cfa_offset 160
223; CHECK-BE-NEXT:    .cfi_offset lr, 16
224; CHECK-BE-NEXT:    .cfi_offset r29, -24
225; CHECK-BE-NEXT:    .cfi_offset r30, -16
226; CHECK-BE-NEXT:    .cfi_offset cr2, 8
227; CHECK-BE-NEXT:    .cfi_offset cr2, 8
228; CHECK-BE-NEXT:    .cfi_offset cr2, 8
229; CHECK-BE-NEXT:    lwz r3, 0(r3)
230; CHECK-BE-NEXT:    std r29, 136(r1) # 8-byte Folded Spill
231; CHECK-BE-NEXT:    std r30, 144(r1) # 8-byte Folded Spill
232; CHECK-BE-NEXT:    srwi r4, r3, 4
233; CHECK-BE-NEXT:    srwi r3, r3, 5
234; CHECK-BE-NEXT:    andi. r4, r4, 1
235; CHECK-BE-NEXT:    li r4, 0
236; CHECK-BE-NEXT:    crmove 4*cr4+lt, gt
237; CHECK-BE-NEXT:    andi. r3, r3, 1
238; CHECK-BE-NEXT:    setnbc r3, gt
239; CHECK-BE-NEXT:    stw r3, 132(r1)
240; CHECK-BE-NEXT:    cmplwi cr3, r3, 336
241; CHECK-BE-NEXT:    li r3, 0
242; CHECK-BE-NEXT:    sldi r30, r3, 2
243; CHECK-BE-NEXT:    addis r3, r2, .LC0@toc@ha
244; CHECK-BE-NEXT:    ld r29, .LC0@toc@l(r3)
245; CHECK-BE-NEXT:    b .LBB0_2
246; CHECK-BE-NEXT:    .p2align 4
247; CHECK-BE-NEXT:  .LBB0_1: # %bb43
248; CHECK-BE-NEXT:    #
249; CHECK-BE-NEXT:    bl call_1
250; CHECK-BE-NEXT:    nop
251; CHECK-BE-NEXT:    li r4, 0
252; CHECK-BE-NEXT:    setnbc r3, 4*cr2+eq
253; CHECK-BE-NEXT:    stb r4, 0(r3)
254; CHECK-BE-NEXT:    li r4, 0
255; CHECK-BE-NEXT:  .LBB0_2: # %bb5
256; CHECK-BE-NEXT:    #
257; CHECK-BE-NEXT:    bc 12, 4*cr4+lt, .LBB0_31
258; CHECK-BE-NEXT:  # %bb.3: # %bb10
259; CHECK-BE-NEXT:    #
260; CHECK-BE-NEXT:    bgt cr3, .LBB0_5
261; CHECK-BE-NEXT:  # %bb.4: # %bb10
262; CHECK-BE-NEXT:    #
263; CHECK-BE-NEXT:    mr r3, r4
264; CHECK-BE-NEXT:    lwz r5, 0(r3)
265; CHECK-BE-NEXT:    rlwinm r4, r5, 0, 21, 22
266; CHECK-BE-NEXT:    cmpwi cr2, r4, 512
267; CHECK-BE-NEXT:    lwax r4, r30, r29
268; CHECK-BE-NEXT:    add r4, r4, r29
269; CHECK-BE-NEXT:    mtctr r4
270; CHECK-BE-NEXT:    li r4, 0
271; CHECK-BE-NEXT:    bctr
272; CHECK-BE-NEXT:  .LBB0_5: # %bb13
273; CHECK-BE-NEXT:    #
274; CHECK-BE-NEXT:    li r4, 16
275; CHECK-BE-NEXT:    b .LBB0_2
276; CHECK-BE-NEXT:    .p2align 4
277; CHECK-BE-NEXT:  .LBB0_6: # %bb22
278; CHECK-BE-NEXT:    #
279; CHECK-BE-NEXT:    b .LBB0_6
280; CHECK-BE-NEXT:    .p2align 4
281; CHECK-BE-NEXT:  .LBB0_7: # %bb28
282; CHECK-BE-NEXT:    #
283; CHECK-BE-NEXT:    b .LBB0_7
284; CHECK-BE-NEXT:    .p2align 4
285; CHECK-BE-NEXT:  .LBB0_8: # %bb52
286; CHECK-BE-NEXT:    #
287; CHECK-BE-NEXT:    b .LBB0_8
288; CHECK-BE-NEXT:    .p2align 4
289; CHECK-BE-NEXT:  .LBB0_9: # %bb17
290; CHECK-BE-NEXT:    #
291; CHECK-BE-NEXT:    b .LBB0_9
292; CHECK-BE-NEXT:    .p2align 4
293; CHECK-BE-NEXT:  .LBB0_10: # %bb26
294; CHECK-BE-NEXT:    #
295; CHECK-BE-NEXT:    b .LBB0_10
296; CHECK-BE-NEXT:    .p2align 4
297; CHECK-BE-NEXT:  .LBB0_11: # %bb42
298; CHECK-BE-NEXT:    #
299; CHECK-BE-NEXT:    b .LBB0_11
300; CHECK-BE-NEXT:    .p2align 4
301; CHECK-BE-NEXT:  .LBB0_12: # %bb54
302; CHECK-BE-NEXT:    #
303; CHECK-BE-NEXT:    b .LBB0_12
304; CHECK-BE-NEXT:    .p2align 4
305; CHECK-BE-NEXT:  .LBB0_13: # %bb47
306; CHECK-BE-NEXT:    #
307; CHECK-BE-NEXT:    b .LBB0_13
308; CHECK-BE-NEXT:    .p2align 4
309; CHECK-BE-NEXT:  .LBB0_14: # %bb58
310; CHECK-BE-NEXT:    #
311; CHECK-BE-NEXT:    b .LBB0_14
312; CHECK-BE-NEXT:    .p2align 4
313; CHECK-BE-NEXT:  .LBB0_15: # %bb24
314; CHECK-BE-NEXT:    #
315; CHECK-BE-NEXT:    b .LBB0_15
316; CHECK-BE-NEXT:    .p2align 4
317; CHECK-BE-NEXT:  .LBB0_16: # %bb19
318; CHECK-BE-NEXT:    #
319; CHECK-BE-NEXT:    b .LBB0_16
320; CHECK-BE-NEXT:    .p2align 4
321; CHECK-BE-NEXT:  .LBB0_17: # %bb23
322; CHECK-BE-NEXT:    #
323; CHECK-BE-NEXT:    b .LBB0_17
324; CHECK-BE-NEXT:    .p2align 4
325; CHECK-BE-NEXT:  .LBB0_18: # %bb60
326; CHECK-BE-NEXT:    #
327; CHECK-BE-NEXT:    b .LBB0_18
328; CHECK-BE-NEXT:    .p2align 4
329; CHECK-BE-NEXT:  .LBB0_19: # %bb59
330; CHECK-BE-NEXT:    #
331; CHECK-BE-NEXT:    b .LBB0_19
332; CHECK-BE-NEXT:    .p2align 4
333; CHECK-BE-NEXT:  .LBB0_20: # %bb46
334; CHECK-BE-NEXT:    #
335; CHECK-BE-NEXT:    b .LBB0_20
336; CHECK-BE-NEXT:    .p2align 4
337; CHECK-BE-NEXT:  .LBB0_21: # %bb49
338; CHECK-BE-NEXT:    #
339; CHECK-BE-NEXT:    b .LBB0_21
340; CHECK-BE-NEXT:    .p2align 4
341; CHECK-BE-NEXT:  .LBB0_22: # %bb57
342; CHECK-BE-NEXT:    #
343; CHECK-BE-NEXT:    b .LBB0_22
344; CHECK-BE-NEXT:    .p2align 4
345; CHECK-BE-NEXT:  .LBB0_23: # %bb56
346; CHECK-BE-NEXT:    #
347; CHECK-BE-NEXT:    b .LBB0_23
348; CHECK-BE-NEXT:    .p2align 4
349; CHECK-BE-NEXT:  .LBB0_24: # %bb20
350; CHECK-BE-NEXT:    #
351; CHECK-BE-NEXT:    b .LBB0_24
352; CHECK-BE-NEXT:    .p2align 4
353; CHECK-BE-NEXT:  .LBB0_25: # %bb18
354; CHECK-BE-NEXT:    #
355; CHECK-BE-NEXT:    b .LBB0_25
356; CHECK-BE-NEXT:    .p2align 4
357; CHECK-BE-NEXT:  .LBB0_26: # %bb61
358; CHECK-BE-NEXT:    #
359; CHECK-BE-NEXT:    b .LBB0_26
360; CHECK-BE-NEXT:    .p2align 4
361; CHECK-BE-NEXT:  .LBB0_27: # %bb55
362; CHECK-BE-NEXT:    #
363; CHECK-BE-NEXT:    b .LBB0_27
364; CHECK-BE-NEXT:    .p2align 4
365; CHECK-BE-NEXT:  .LBB0_28: # %bb62
366; CHECK-BE-NEXT:    #
367; CHECK-BE-NEXT:    b .LBB0_28
368; CHECK-BE-NEXT:    .p2align 4
369; CHECK-BE-NEXT:  .LBB0_29: # %bb50
370; CHECK-BE-NEXT:    #
371; CHECK-BE-NEXT:    b .LBB0_29
372; CHECK-BE-NEXT:    .p2align 4
373; CHECK-BE-NEXT:  .LBB0_30: # %bb48
374; CHECK-BE-NEXT:    #
375; CHECK-BE-NEXT:    b .LBB0_30
376; CHECK-BE-NEXT:  .LBB0_31: # %bb9
377; CHECK-BE-NEXT:    ld r30, 144(r1) # 8-byte Folded Reload
378; CHECK-BE-NEXT:    ld r29, 136(r1) # 8-byte Folded Reload
379; CHECK-BE-NEXT:    addi r1, r1, 160
380; CHECK-BE-NEXT:    ld r0, 16(r1)
381; CHECK-BE-NEXT:    lwz r12, 8(r1)
382; CHECK-BE-NEXT:    mtlr r0
383; CHECK-BE-NEXT:    mtocrf 32, r12
384; CHECK-BE-NEXT:    mtocrf 16, r12
385; CHECK-BE-NEXT:    mtocrf 8, r12
386; CHECK-BE-NEXT:    blr
387; CHECK-BE-NEXT:  .LBB0_32: # %bb29
388; CHECK-BE-NEXT:    lwz r4, 132(r1)
389; CHECK-BE-NEXT:    cmpwi cr4, r3, 0
390; CHECK-BE-NEXT:    setnbc r30, 4*cr2+eq
391; CHECK-BE-NEXT:    # implicit-def: $cr2lt
392; CHECK-BE-NEXT:    mfocrf r3, 32
393; CHECK-BE-NEXT:    cmpwi cr3, r5, 366
394; CHECK-BE-NEXT:    li r29, 0
395; CHECK-BE-NEXT:    rlwimi r3, r4, 24, 8, 8
396; CHECK-BE-NEXT:    mtocrf 32, r3
397; CHECK-BE-NEXT:    .p2align 5
398; CHECK-BE-NEXT:  .LBB0_33: # %bb32
399; CHECK-BE-NEXT:    #
400; CHECK-BE-NEXT:    bc 4, 4*cr2+lt, .LBB0_35
401; CHECK-BE-NEXT:  # %bb.34: # %bb33
402; CHECK-BE-NEXT:    #
403; CHECK-BE-NEXT:    stb r29, 0(r30)
404; CHECK-BE-NEXT:  .LBB0_35: # %bb36
405; CHECK-BE-NEXT:    #
406; CHECK-BE-NEXT:    bc 4, 4*cr4+eq, .LBB0_33
407; CHECK-BE-NEXT:  # %bb.36: # %bb39
408; CHECK-BE-NEXT:    #
409; CHECK-BE-NEXT:    bl call_2
410; CHECK-BE-NEXT:    nop
411; CHECK-BE-NEXT:    b .LBB0_33
412bb:
413  %tmp = load i32, i32* undef, align 8
414  %tmp1 = and i32 %tmp, 16
415  %tmp2 = icmp ne i32 %tmp1, 0
416  %tmp3 = and i32 %tmp, 32
417  %tmp4 = icmp ne i32 %tmp3, 0
418  br label %bb5
419
420bb5:                                              ; preds = %bb63, %bb
421  %tmp6 = phi i32 [ 0, %bb ], [ %tmp64, %bb63 ]
422  %tmp7 = phi i1 [ %tmp4, %bb ], [ undef, %bb63 ]
423  %tmp8 = load i32, i32* undef, align 8
424  br i1 %tmp2, label %bb9, label %bb10
425
426bb9:                                              ; preds = %bb5
427  ret void
428
429bb10:                                             ; preds = %bb5
430  %tmp11 = and i32 %tmp8, 1536
431  %tmp12 = icmp eq i32 %tmp11, 512
432  switch i32 undef, label %bb13 [
433    i32 117, label %bb62
434    i32 40, label %bb63
435    i32 302, label %bb63
436    i32 46, label %bb63
437    i32 320, label %bb16
438    i32 64, label %bb16
439    i32 344, label %bb18
440    i32 88, label %bb19
441    i32 376, label %bb63
442    i32 120, label %bb20
443    i32 47, label %bb21
444    i32 65, label %bb21
445    i32 90, label %bb21
446    i32 97, label %bb21
447    i32 66, label %bb63
448    i32 98, label %bb63
449    i32 72, label %bb63
450    i32 104, label %bb63
451    i32 67, label %bb63
452    i32 99, label %bb23
453    i32 87, label %bb24
454    i32 85, label %bb63
455    i32 371, label %bb25
456    i32 115, label %bb25
457    i32 339, label %bb27
458    i32 118, label %bb27
459    i32 110, label %bb27
460    i32 83, label %bb27
461    i32 374, label %bb29
462    i32 366, label %bb29
463    i32 105, label %bb41
464    i32 361, label %bb41
465    i32 73, label %bb43
466    i32 329, label %bb43
467    i32 106, label %bb46
468    i32 74, label %bb47
469    i32 364, label %bb48
470    i32 108, label %bb49
471    i32 332, label %bb50
472    i32 86, label %bb51
473    i32 78, label %bb51
474    i32 76, label %bb51
475    i32 342, label %bb53
476    i32 334, label %bb53
477    i32 112, label %bb55
478    i32 119, label %bb56
479    i32 80, label %bb63
480    i32 113, label %bb57
481    i32 81, label %bb58
482    i32 102, label %bb59
483    i32 100, label %bb60
484    i32 70, label %bb61
485  ]
486
487bb13:                                             ; preds = %bb10
488  %tmp14 = icmp eq i32 0, 0
489  %tmp15 = select i1 %tmp14, i32 16, i32 undef
490  br label %bb63
491
492bb16:                                             ; preds = %bb10, %bb10
493  br label %bb17
494
495bb17:                                             ; preds = %bb17, %bb16
496  br label %bb17
497
498bb18:                                             ; preds = %bb18, %bb10
499  br label %bb18
500
501bb19:                                             ; preds = %bb19, %bb10
502  br label %bb19
503
504bb20:                                             ; preds = %bb20, %bb10
505  br label %bb20
506
507bb21:                                             ; preds = %bb10, %bb10, %bb10, %bb10
508  br label %bb22
509
510bb22:                                             ; preds = %bb22, %bb21
511  br label %bb22
512
513bb23:                                             ; preds = %bb23, %bb10
514  br label %bb23
515
516bb24:                                             ; preds = %bb24, %bb10
517  br label %bb24
518
519bb25:                                             ; preds = %bb10, %bb10
520  br label %bb26
521
522bb26:                                             ; preds = %bb26, %bb25
523  br label %bb26
524
525bb27:                                             ; preds = %bb10, %bb10, %bb10, %bb10
526  br label %bb28
527
528bb28:                                             ; preds = %bb28, %bb27
529  br label %bb28
530
531bb29:                                             ; preds = %bb10, %bb10
532  %tmp30 = icmp eq i32 %tmp8, 366
533  %tmp31 = icmp eq i32 %tmp6, 0
534  br label %bb32
535
536bb32:                                             ; preds = %bb40, %bb29
537  br i1 %tmp7, label %bb33, label %bb36
538
539bb33:                                             ; preds = %bb32
540  %tmp34 = getelementptr inbounds i8, i8* null, i64 -1
541  %tmp35 = select i1 %tmp12, i8* %tmp34, i8* null
542  store i8 0, i8* %tmp35, align 1
543  br label %bb36
544
545bb36:                                             ; preds = %bb33, %bb32
546  br i1 %tmp30, label %bb37, label %bb38
547
548bb37:                                             ; preds = %bb36
549  store i16 undef, i16* null, align 2
550  br label %bb38
551
552bb38:                                             ; preds = %bb37, %bb36
553  br i1 %tmp31, label %bb39, label %bb40
554
555bb39:                                             ; preds = %bb38
556  call void @call_2()
557  br label %bb40
558
559bb40:                                             ; preds = %bb39, %bb38
560  br label %bb32
561
562bb41:                                             ; preds = %bb10, %bb10
563  br label %bb42
564
565bb42:                                             ; preds = %bb42, %bb41
566  br label %bb42
567
568bb43:                                             ; preds = %bb10, %bb10
569  call void @call_1()
570  %tmp44 = getelementptr inbounds i8, i8* null, i64 -1
571  %tmp45 = select i1 %tmp12, i8* %tmp44, i8* null
572  store i8 0, i8* %tmp45, align 1
573  br label %bb63
574
575bb46:                                             ; preds = %bb46, %bb10
576  br label %bb46
577
578bb47:                                             ; preds = %bb47, %bb10
579  br label %bb47
580
581bb48:                                             ; preds = %bb48, %bb10
582  br label %bb48
583
584bb49:                                             ; preds = %bb49, %bb10
585  br label %bb49
586
587bb50:                                             ; preds = %bb50, %bb10
588  br label %bb50
589
590bb51:                                             ; preds = %bb10, %bb10, %bb10
591  br label %bb52
592
593bb52:                                             ; preds = %bb52, %bb51
594  br label %bb52
595
596bb53:                                             ; preds = %bb10, %bb10
597  br label %bb54
598
599bb54:                                             ; preds = %bb54, %bb53
600  br label %bb54
601
602bb55:                                             ; preds = %bb55, %bb10
603  br label %bb55
604
605bb56:                                             ; preds = %bb56, %bb10
606  br label %bb56
607
608bb57:                                             ; preds = %bb57, %bb10
609  br label %bb57
610
611bb58:                                             ; preds = %bb58, %bb10
612  br label %bb58
613
614bb59:                                             ; preds = %bb59, %bb10
615  br label %bb59
616
617bb60:                                             ; preds = %bb60, %bb10
618  br label %bb60
619
620bb61:                                             ; preds = %bb61, %bb10
621  br label %bb61
622
623bb62:                                             ; preds = %bb62, %bb10
624  br label %bb62
625
626bb63:                                             ; preds = %bb43, %bb13, %bb10, %bb10, %bb10, %bb10, %bb10, %bb10, %bb10, %bb10, %bb10, %bb10, %bb10
627  %tmp64 = phi i32 [ %tmp15, %bb13 ], [ 0, %bb43 ], [ 0, %bb10 ], [ 0, %bb10 ], [ 0, %bb10 ], [ 0, %bb10 ], [ 0, %bb10 ], [ 0, %bb10 ], [ 0, %bb10 ], [ 0, %bb10 ], [ 0, %bb10 ], [ 0, %bb10 ], [ 0, %bb10 ]
628  br label %bb5
629}
630
631declare void @call_1() local_unnamed_addr
632
633declare void @call_2() local_unnamed_addr
634