aboutsummaryrefslogtreecommitdiff
path: root/llvm/test/CodeGen/AArch64/pr135821.ll
blob: cfd6cd086e1306bfb71a0fef7cab09ca0649ab2a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
; RUN: llc < %s -mtriple=aarch64-unknown-linux-gnu  | FileCheck %s

define <4 x float> @f(ptr  %0) {
; CHECK-LABEL: f:
; CHECK:       // %bb.0:
; CHECK-NEXT:    sub sp, sp, #32
; CHECK-NEXT:    str x30, [sp, #16] // 8-byte Folded Spill
; CHECK-NEXT:    .cfi_def_cfa_offset 32
; CHECK-NEXT:    .cfi_offset w30, -16
; CHECK-NEXT:    ldr q1, [x0, #56]!
; CHECK-NEXT:    ldr d0, [x0, #16]
; CHECK-NEXT:    mov v1.d[1], v0.d[0]
; CHECK-NEXT:    str q1, [sp] // 16-byte Folded Spill
; CHECK-NEXT:    bl use
; CHECK-NEXT:    ldr q0, [sp] // 16-byte Folded Reload
; CHECK-NEXT:    ldr x30, [sp, #16] // 8-byte Folded Reload
; CHECK-NEXT:    add sp, sp, #32
; CHECK-NEXT:    ret
  %2 = getelementptr inbounds nuw i8, ptr %0, i64 56
  %3 = load <6 x float>, ptr %2, align 4
  %4 = shufflevector <6 x float> %3, <6 x float> poison, <4 x i32> <i32 0, i32 1, i32 4, i32 5>
  tail call void @use(ptr %2)
  ret <4 x float> %4
}

declare void @use(ptr)