|
| 1 | +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 |
| 2 | +; RUN: llc < %s -mtriple=aarch64-unknown-linux-gnu | FileCheck %s |
| 3 | + |
| 4 | +define <4 x float> @f(ptr %0) { |
| 5 | +; CHECK-LABEL: f: |
| 6 | +; CHECK: // %bb.0: |
| 7 | +; CHECK-NEXT: sub sp, sp, #32 |
| 8 | +; CHECK-NEXT: str x30, [sp, #16] // 8-byte Folded Spill |
| 9 | +; CHECK-NEXT: .cfi_def_cfa_offset 32 |
| 10 | +; CHECK-NEXT: .cfi_offset w30, -16 |
| 11 | +; CHECK-NEXT: ldr q1, [x0, #56]! |
| 12 | +; CHECK-NEXT: ldr d0, [x0, #16] |
| 13 | +; CHECK-NEXT: mov v1.d[1], v0.d[0] |
| 14 | +; CHECK-NEXT: str q1, [sp] // 16-byte Folded Spill |
| 15 | +; CHECK-NEXT: bl use |
| 16 | +; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload |
| 17 | +; CHECK-NEXT: ldr x30, [sp, #16] // 8-byte Folded Reload |
| 18 | +; CHECK-NEXT: add sp, sp, #32 |
| 19 | +; CHECK-NEXT: ret |
| 20 | + %2 = getelementptr inbounds nuw i8, ptr %0, i64 56 |
| 21 | + %3 = load <6 x float>, ptr %2, align 4 |
| 22 | + %4 = shufflevector <6 x float> %3, <6 x float> poison, <4 x i32> <i32 0, i32 1, i32 4, i32 5> |
| 23 | + tail call void @use(ptr %2) |
| 24 | + ret <4 x float> %4 |
| 25 | +} |
| 26 | + |
| 27 | +declare void @use(ptr) |
0 commit comments