|
4 | 4 | define i32 @switch_with_matching_dests_0_and_pow2_3_cases(i8 %v) {
|
5 | 5 | ; CHECK-LABEL: switch_with_matching_dests_0_and_pow2_3_cases:
|
6 | 6 | ; CHECK: ; %bb.0: ; %entry
|
7 |
| -; CHECK-NEXT: mov w9, #100 ; =0x64 |
8 |
| -; CHECK-NEXT: mov w8, #20 ; =0x14 |
| 7 | +; CHECK-NEXT: mov w8, #100 ; =0x64 |
| 8 | +; CHECK-NEXT: mov w9, #223 ; =0xdf |
9 | 9 | ; CHECK-NEXT: LBB0_1: ; %loop.header
|
10 | 10 | ; CHECK-NEXT: ; =>This Inner Loop Header: Depth=1
|
11 |
| -; CHECK-NEXT: ands w10, w0, #0xff |
12 |
| -; CHECK-NEXT: b.eq LBB0_6 |
| 11 | +; CHECK-NEXT: tst w0, w9 |
| 12 | +; CHECK-NEXT: b.eq LBB0_4 |
13 | 13 | ; CHECK-NEXT: ; %bb.2: ; %loop.header
|
14 | 14 | ; CHECK-NEXT: ; in Loop: Header=BB0_1 Depth=1
|
15 |
| -; CHECK-NEXT: cmp w10, #32 |
16 |
| -; CHECK-NEXT: b.eq LBB0_6 |
17 |
| -; CHECK-NEXT: ; %bb.3: ; %loop.header |
18 |
| -; CHECK-NEXT: ; in Loop: Header=BB0_1 Depth=1 |
| 15 | +; CHECK-NEXT: and w10, w0, #0xff |
19 | 16 | ; CHECK-NEXT: cmp w10, #124
|
20 |
| -; CHECK-NEXT: b.eq LBB0_7 |
21 |
| -; CHECK-NEXT: ; %bb.4: ; %loop.latch |
| 17 | +; CHECK-NEXT: b.eq LBB0_5 |
| 18 | +; CHECK-NEXT: ; %bb.3: ; %loop.latch |
22 | 19 | ; CHECK-NEXT: ; in Loop: Header=BB0_1 Depth=1
|
23 |
| -; CHECK-NEXT: subs w9, w9, #1 |
| 20 | +; CHECK-NEXT: subs w8, w8, #1 |
24 | 21 | ; CHECK-NEXT: b.ne LBB0_1
|
25 |
| -; CHECK-NEXT: ; %bb.5: |
26 |
| -; CHECK-NEXT: mov w8, #20 ; =0x14 |
27 |
| -; CHECK-NEXT: LBB0_6: ; %common.ret |
28 |
| -; CHECK-NEXT: mov w0, w8 |
| 22 | +; CHECK-NEXT: LBB0_4: |
| 23 | +; CHECK-NEXT: mov w0, #20 ; =0x14 |
29 | 24 | ; CHECK-NEXT: ret
|
30 |
| -; CHECK-NEXT: LBB0_7: ; %e2 |
| 25 | +; CHECK-NEXT: LBB0_5: ; %e2 |
31 | 26 | ; CHECK-NEXT: mov w0, #30 ; =0x1e
|
32 | 27 | ; CHECK-NEXT: ret
|
33 | 28 | entry:
|
|
56 | 51 | define i32 @switch_with_matching_dests_0_and_pow2_3_cases_swapped(i8 %v) {
|
57 | 52 | ; CHECK-LABEL: switch_with_matching_dests_0_and_pow2_3_cases_swapped:
|
58 | 53 | ; CHECK: ; %bb.0: ; %entry
|
59 |
| -; CHECK-NEXT: mov w9, #100 ; =0x64 |
60 |
| -; CHECK-NEXT: mov w8, #20 ; =0x14 |
| 54 | +; CHECK-NEXT: mov w8, #100 ; =0x64 |
| 55 | +; CHECK-NEXT: mov w9, #223 ; =0xdf |
61 | 56 | ; CHECK-NEXT: LBB1_1: ; %loop.header
|
62 | 57 | ; CHECK-NEXT: ; =>This Inner Loop Header: Depth=1
|
63 |
| -; CHECK-NEXT: ands w10, w0, #0xff |
64 |
| -; CHECK-NEXT: b.eq LBB1_6 |
| 58 | +; CHECK-NEXT: tst w0, w9 |
| 59 | +; CHECK-NEXT: b.eq LBB1_5 |
65 | 60 | ; CHECK-NEXT: ; %bb.2: ; %loop.header
|
66 | 61 | ; CHECK-NEXT: ; in Loop: Header=BB1_1 Depth=1
|
67 |
| -; CHECK-NEXT: cmp w10, #32 |
68 |
| -; CHECK-NEXT: b.eq LBB1_6 |
69 |
| -; CHECK-NEXT: ; %bb.3: ; %loop.header |
70 |
| -; CHECK-NEXT: ; in Loop: Header=BB1_1 Depth=1 |
| 62 | +; CHECK-NEXT: and w10, w0, #0xff |
71 | 63 | ; CHECK-NEXT: cmp w10, #124
|
72 |
| -; CHECK-NEXT: b.eq LBB1_7 |
73 |
| -; CHECK-NEXT: ; %bb.4: ; %loop.latch |
| 64 | +; CHECK-NEXT: b.eq LBB1_6 |
| 65 | +; CHECK-NEXT: ; %bb.3: ; %loop.latch |
74 | 66 | ; CHECK-NEXT: ; in Loop: Header=BB1_1 Depth=1
|
75 |
| -; CHECK-NEXT: subs w9, w9, #1 |
| 67 | +; CHECK-NEXT: subs w8, w8, #1 |
76 | 68 | ; CHECK-NEXT: b.ne LBB1_1
|
77 |
| -; CHECK-NEXT: ; %bb.5: |
78 |
| -; CHECK-NEXT: mov w8, #10 ; =0xa |
79 |
| -; CHECK-NEXT: LBB1_6: ; %common.ret |
80 |
| -; CHECK-NEXT: mov w0, w8 |
| 69 | +; CHECK-NEXT: ; %bb.4: |
| 70 | +; CHECK-NEXT: mov w0, #10 ; =0xa |
81 | 71 | ; CHECK-NEXT: ret
|
82 |
| -; CHECK-NEXT: LBB1_7: ; %e2 |
| 72 | +; CHECK-NEXT: LBB1_5: |
| 73 | +; CHECK-NEXT: mov w0, #20 ; =0x14 |
| 74 | +; CHECK-NEXT: ret |
| 75 | +; CHECK-NEXT: LBB1_6: ; %e2 |
83 | 76 | ; CHECK-NEXT: mov w0, #30 ; =0x1e
|
84 | 77 | ; CHECK-NEXT: ret
|
85 | 78 | entry:
|
@@ -111,35 +104,33 @@ e2:
|
111 | 104 | define i32 @switch_with_matching_dests_0_and_pow2_3_cases_with_phi(i8 %v, i1 %c) {
|
112 | 105 | ; CHECK-LABEL: switch_with_matching_dests_0_and_pow2_3_cases_with_phi:
|
113 | 106 | ; CHECK: ; %bb.0: ; %entry
|
114 |
| -; CHECK-NEXT: tbz w1, #0, LBB2_8 |
| 107 | +; CHECK-NEXT: tbz w1, #0, LBB2_6 |
115 | 108 | ; CHECK-NEXT: ; %bb.1: ; %loop.header.preheader
|
116 |
| -; CHECK-NEXT: mov w9, #100 ; =0x64 |
117 |
| -; CHECK-NEXT: mov w8, #20 ; =0x14 |
| 109 | +; CHECK-NEXT: mov w8, #100 ; =0x64 |
| 110 | +; CHECK-NEXT: mov w9, #223 ; =0xdf |
118 | 111 | ; CHECK-NEXT: LBB2_2: ; %loop.header
|
119 | 112 | ; CHECK-NEXT: ; =>This Inner Loop Header: Depth=1
|
120 |
| -; CHECK-NEXT: ands w10, w0, #0xff |
| 113 | +; CHECK-NEXT: tst w0, w9 |
121 | 114 | ; CHECK-NEXT: b.eq LBB2_7
|
122 | 115 | ; CHECK-NEXT: ; %bb.3: ; %loop.header
|
123 | 116 | ; CHECK-NEXT: ; in Loop: Header=BB2_2 Depth=1
|
124 |
| -; CHECK-NEXT: cmp w10, #32 |
125 |
| -; CHECK-NEXT: b.eq LBB2_7 |
126 |
| -; CHECK-NEXT: ; %bb.4: ; %loop.header |
127 |
| -; CHECK-NEXT: ; in Loop: Header=BB2_2 Depth=1 |
| 117 | +; CHECK-NEXT: and w10, w0, #0xff |
128 | 118 | ; CHECK-NEXT: cmp w10, #124
|
129 |
| -; CHECK-NEXT: b.eq LBB2_9 |
130 |
| -; CHECK-NEXT: ; %bb.5: ; %loop.latch |
| 119 | +; CHECK-NEXT: b.eq LBB2_8 |
| 120 | +; CHECK-NEXT: ; %bb.4: ; %loop.latch |
131 | 121 | ; CHECK-NEXT: ; in Loop: Header=BB2_2 Depth=1
|
132 |
| -; CHECK-NEXT: subs w9, w9, #1 |
| 122 | +; CHECK-NEXT: subs w8, w8, #1 |
133 | 123 | ; CHECK-NEXT: b.ne LBB2_2
|
134 |
| -; CHECK-NEXT: ; %bb.6: |
135 |
| -; CHECK-NEXT: mov w8, #10 ; =0xa |
136 |
| -; CHECK-NEXT: LBB2_7: ; %common.ret |
137 |
| -; CHECK-NEXT: mov w0, w8 |
| 124 | +; CHECK-NEXT: ; %bb.5: |
| 125 | +; CHECK-NEXT: mov w0, #10 ; =0xa |
138 | 126 | ; CHECK-NEXT: ret
|
139 |
| -; CHECK-NEXT: LBB2_8: |
| 127 | +; CHECK-NEXT: LBB2_6: |
140 | 128 | ; CHECK-NEXT: mov w0, wzr
|
141 | 129 | ; CHECK-NEXT: ret
|
142 |
| -; CHECK-NEXT: LBB2_9: ; %e2 |
| 130 | +; CHECK-NEXT: LBB2_7: |
| 131 | +; CHECK-NEXT: mov w0, #20 ; =0x14 |
| 132 | +; CHECK-NEXT: ret |
| 133 | +; CHECK-NEXT: LBB2_8: ; %e2 |
143 | 134 | ; CHECK-NEXT: mov w0, #30 ; =0x1e
|
144 | 135 | ; CHECK-NEXT: ret
|
145 | 136 | entry:
|
@@ -240,21 +231,18 @@ define i32 @switch_in_loop_with_matching_dests_0_and_pow2_3_cases(ptr %start) {
|
240 | 231 | ; CHECK-NEXT: LBB4_1: ; %loop
|
241 | 232 | ; CHECK-NEXT: ; =>This Inner Loop Header: Depth=1
|
242 | 233 | ; CHECK-NEXT: ldrb w9, [x8], #1
|
243 |
| -; CHECK-NEXT: cbz w9, LBB4_4 |
| 234 | +; CHECK-NEXT: tst w9, #0xffffffdf |
| 235 | +; CHECK-NEXT: b.eq LBB4_4 |
244 | 236 | ; CHECK-NEXT: ; %bb.2: ; %loop
|
245 | 237 | ; CHECK-NEXT: ; in Loop: Header=BB4_1 Depth=1
|
246 | 238 | ; CHECK-NEXT: cmp w9, #124
|
247 |
| -; CHECK-NEXT: b.eq LBB4_5 |
248 |
| -; CHECK-NEXT: ; %bb.3: ; %loop |
249 |
| -; CHECK-NEXT: ; in Loop: Header=BB4_1 Depth=1 |
250 |
| -; CHECK-NEXT: cmp w9, #32 |
251 | 239 | ; CHECK-NEXT: b.ne LBB4_1
|
| 240 | +; CHECK-NEXT: ; %bb.3: ; %e2.loopexit |
| 241 | +; CHECK-NEXT: mov w0, wzr |
| 242 | +; CHECK-NEXT: ret |
252 | 243 | ; CHECK-NEXT: LBB4_4: ; %e1
|
253 | 244 | ; CHECK-NEXT: mov w0, #-1 ; =0xffffffff
|
254 | 245 | ; CHECK-NEXT: ret
|
255 |
| -; CHECK-NEXT: LBB4_5: ; %e2.loopexit |
256 |
| -; CHECK-NEXT: mov w0, wzr |
257 |
| -; CHECK-NEXT: ret |
258 | 246 | entry:
|
259 | 247 | br label %loop
|
260 | 248 |
|
@@ -376,8 +364,7 @@ define void @test_successor_with_loop_phi(ptr %A, ptr %B) {
|
376 | 364 | ; CHECK-NEXT: ldr w8, [x0]
|
377 | 365 | ; CHECK-NEXT: str wzr, [x0]
|
378 | 366 | ; CHECK-NEXT: mov x0, x1
|
379 |
| -; CHECK-NEXT: orr w8, w8, #0x4 |
380 |
| -; CHECK-NEXT: cmp w8, #4 |
| 367 | +; CHECK-NEXT: tst w8, #0xfffffffb |
381 | 368 | ; CHECK-NEXT: b.eq LBB7_1
|
382 | 369 | ; CHECK-NEXT: ; %bb.2: ; %exit
|
383 | 370 | ; CHECK-NEXT: ret
|
@@ -556,22 +543,21 @@ e1:
|
556 | 543 | define void @merge_with_stores(ptr %A, i16 %v) {
|
557 | 544 | ; CHECK-LABEL: merge_with_stores:
|
558 | 545 | ; CHECK: ; %bb.0: ; %entry
|
559 |
| -; CHECK-NEXT: and w8, w1, #0xffff |
560 |
| -; CHECK-NEXT: sub w9, w8, #10 |
561 |
| -; CHECK-NEXT: cmp w9, #2 |
562 |
| -; CHECK-NEXT: b.lo LBB11_4 |
| 546 | +; CHECK-NEXT: mov w8, #65533 ; =0xfffd |
| 547 | +; CHECK-NEXT: tst w1, w8 |
| 548 | +; CHECK-NEXT: b.eq LBB11_3 |
563 | 549 | ; CHECK-NEXT: ; %bb.1: ; %entry
|
564 |
| -; CHECK-NEXT: cbz w8, LBB11_5 |
565 |
| -; CHECK-NEXT: ; %bb.2: ; %entry |
| 550 | +; CHECK-NEXT: and w8, w1, #0xffff |
| 551 | +; CHECK-NEXT: sub w8, w8, #10 |
566 | 552 | ; CHECK-NEXT: cmp w8, #2
|
567 |
| -; CHECK-NEXT: b.eq LBB11_5 |
568 |
| -; CHECK-NEXT: ; %bb.3: ; %default.dst |
569 |
| -; CHECK-NEXT: strh wzr, [x0] |
570 |
| -; CHECK-NEXT: ret |
571 |
| -; CHECK-NEXT: LBB11_4: ; %other.dst |
| 553 | +; CHECK-NEXT: b.hs LBB11_4 |
| 554 | +; CHECK-NEXT: ; %bb.2: ; %other.dst |
572 | 555 | ; CHECK-NEXT: mov w8, #1 ; =0x1
|
573 | 556 | ; CHECK-NEXT: strh w8, [x0, #36]
|
574 |
| -; CHECK-NEXT: LBB11_5: ; %pow2.dst |
| 557 | +; CHECK-NEXT: LBB11_3: ; %pow2.dst |
| 558 | +; CHECK-NEXT: ret |
| 559 | +; CHECK-NEXT: LBB11_4: ; %default.dst |
| 560 | +; CHECK-NEXT: strh wzr, [x0] |
575 | 561 | ; CHECK-NEXT: ret
|
576 | 562 | entry:
|
577 | 563 | switch i16 %v, label %default.dst [
|
|
0 commit comments