1 ; RUN: llc -mtriple=aarch64-none-linux-gnu -mattr=+neon < %s | FileCheck %s
2 ; not relevant for arm64: <1 x iN> isn't legal
4 ; This file tests the spill of FPR8/FPR16. The volatile loads/stores force the
5 ; allocator to keep the value live until it's needed.
7 %bigtype_v1i8 = type [20 x <1 x i8>]
9 define void @spill_fpr8(%bigtype_v1i8* %addr) {
10 ; CHECK-LABEL: spill_fpr8:
11 ; CHECK: 1-byte Folded Spill
12 ; CHECK: 1-byte Folded Reload
13 %val1 = load volatile %bigtype_v1i8* %addr
14 %val2 = load volatile %bigtype_v1i8* %addr
15 store volatile %bigtype_v1i8 %val1, %bigtype_v1i8* %addr
16 store volatile %bigtype_v1i8 %val2, %bigtype_v1i8* %addr
20 %bigtype_v1i16 = type [20 x <1 x i16>]
22 define void @spill_fpr16(%bigtype_v1i16* %addr) {
23 ; CHECK-LABEL: spill_fpr16:
24 ; CHECK: 2-byte Folded Spill
25 ; CHECK: 2-byte Folded Reload
26 %val1 = load volatile %bigtype_v1i16* %addr
27 %val2 = load volatile %bigtype_v1i16* %addr
28 store volatile %bigtype_v1i16 %val1, %bigtype_v1i16* %addr
29 store volatile %bigtype_v1i16 %val2, %bigtype_v1i16* %addr