|
3 | 3 | ; RUN: llc -mtriple=aarch64-unknown-linux-gnu -global-isel -global-isel-abort=2 2>&1 < %s | FileCheck %s --check-prefixes=CHECK,CHECK-GI
|
4 | 4 |
|
5 | 5 | ; CHECK-GI: warning: Instruction selection used fallback path for freeze_v2i8
|
6 |
| -; CHECK-GI-NEXT: warning: Instruction selection used fallback path for freeze_v3p0 |
7 |
| -; CHECK-GI-NEXT: warning: Instruction selection used fallback path for freeze_v4p0 |
8 | 6 |
|
9 | 7 | %struct.T = type { i32, i32 }
|
10 | 8 |
|
@@ -294,29 +292,47 @@ define <2 x ptr> @freeze_v2p0() {
|
294 | 292 | }
|
295 | 293 |
|
296 | 294 | define <3 x ptr> @freeze_v3p0() {
|
297 |
| -; CHECK-LABEL: freeze_v3p0: |
298 |
| -; CHECK: // %bb.0: |
299 |
| -; CHECK-NEXT: mov w8, #4 // =0x4 |
300 |
| -; CHECK-NEXT: dup v2.2d, x8 |
301 |
| -; CHECK-NEXT: add v0.2d, v0.2d, v2.2d |
302 |
| -; CHECK-NEXT: add d2, d0, d2 |
303 |
| -; CHECK-NEXT: ext v1.16b, v0.16b, v0.16b, #8 |
304 |
| -; CHECK-NEXT: // kill: def $d0 killed $d0 killed $q0 |
305 |
| -; CHECK-NEXT: // kill: def $d1 killed $d1 killed $q1 |
306 |
| -; CHECK-NEXT: ret |
| 295 | +; CHECK-SD-LABEL: freeze_v3p0: |
| 296 | +; CHECK-SD: // %bb.0: |
| 297 | +; CHECK-SD-NEXT: mov w8, #4 // =0x4 |
| 298 | +; CHECK-SD-NEXT: dup v2.2d, x8 |
| 299 | +; CHECK-SD-NEXT: add v0.2d, v0.2d, v2.2d |
| 300 | +; CHECK-SD-NEXT: add d2, d0, d2 |
| 301 | +; CHECK-SD-NEXT: ext v1.16b, v0.16b, v0.16b, #8 |
| 302 | +; CHECK-SD-NEXT: // kill: def $d0 killed $d0 killed $q0 |
| 303 | +; CHECK-SD-NEXT: // kill: def $d1 killed $d1 killed $q1 |
| 304 | +; CHECK-SD-NEXT: ret |
| 305 | +; |
| 306 | +; CHECK-GI-LABEL: freeze_v3p0: |
| 307 | +; CHECK-GI: // %bb.0: |
| 308 | +; CHECK-GI-NEXT: adrp x8, .LCPI22_0 |
| 309 | +; CHECK-GI-NEXT: ldr q0, [x8, :lo12:.LCPI22_0] |
| 310 | +; CHECK-GI-NEXT: add x8, x8, #4 |
| 311 | +; CHECK-GI-NEXT: fmov d2, x8 |
| 312 | +; CHECK-GI-NEXT: add v0.2d, v0.2d, v0.2d |
| 313 | +; CHECK-GI-NEXT: mov d1, v0.d[1] |
| 314 | +; CHECK-GI-NEXT: ret |
307 | 315 | %y1 = freeze <3 x ptr> undef
|
308 | 316 | %t1 = getelementptr i32, <3 x ptr> %y1, i32 1
|
309 | 317 | ret <3 x ptr> %t1
|
310 | 318 | }
|
311 | 319 |
|
312 | 320 | define <4 x ptr> @freeze_v4p0() {
|
313 |
| -; CHECK-LABEL: freeze_v4p0: |
314 |
| -; CHECK: // %bb.0: |
315 |
| -; CHECK-NEXT: mov w8, #4 // =0x4 |
316 |
| -; CHECK-NEXT: dup v0.2d, x8 |
317 |
| -; CHECK-NEXT: add v0.2d, v0.2d, v0.2d |
318 |
| -; CHECK-NEXT: mov v1.16b, v0.16b |
319 |
| -; CHECK-NEXT: ret |
| 321 | +; CHECK-SD-LABEL: freeze_v4p0: |
| 322 | +; CHECK-SD: // %bb.0: |
| 323 | +; CHECK-SD-NEXT: mov w8, #4 // =0x4 |
| 324 | +; CHECK-SD-NEXT: dup v0.2d, x8 |
| 325 | +; CHECK-SD-NEXT: add v0.2d, v0.2d, v0.2d |
| 326 | +; CHECK-SD-NEXT: mov v1.16b, v0.16b |
| 327 | +; CHECK-SD-NEXT: ret |
| 328 | +; |
| 329 | +; CHECK-GI-LABEL: freeze_v4p0: |
| 330 | +; CHECK-GI: // %bb.0: |
| 331 | +; CHECK-GI-NEXT: adrp x8, .LCPI23_0 |
| 332 | +; CHECK-GI-NEXT: ldr q0, [x8, :lo12:.LCPI23_0] |
| 333 | +; CHECK-GI-NEXT: add v0.2d, v0.2d, v0.2d |
| 334 | +; CHECK-GI-NEXT: mov v1.16b, v0.16b |
| 335 | +; CHECK-GI-NEXT: ret |
320 | 336 | %y1 = freeze <4 x ptr> undef
|
321 | 337 | %t1 = getelementptr i32, <4 x ptr> %y1, i32 1
|
322 | 338 | ret <4 x ptr> %t1
|
|
0 commit comments