[AArch64]Add support for spilling FPR8/FPR16.
[oota-llvm.git] / test / CodeGen / AArch64 / neon-spill-fpr8-fpr16.ll
1 ; RUN: llc -mtriple=aarch64-none-linux-gnu -mattr=+neon < %s | FileCheck %s
2
3 ; This file tests the spill of FPR8/FPR16. The volatile loads/stores force the
4 ; allocator to keep the value live until it's needed.
5
6 %bigtype_v1i8 = type [20 x <1 x i8>]
7
8 define void @spill_fpr8(%bigtype_v1i8* %addr) {
9 ; CHECK-LABEL: spill_fpr8:
10 ; CHECK: 1-byte Folded Spill
11 ; CHECK: 1-byte Folded Reload
12   %val1 = load volatile %bigtype_v1i8* %addr
13   %val2 = load volatile %bigtype_v1i8* %addr
14   store volatile %bigtype_v1i8 %val1, %bigtype_v1i8* %addr
15   store volatile %bigtype_v1i8 %val2, %bigtype_v1i8* %addr
16   ret void
17 }
18
19 %bigtype_v1i16 = type [20 x <1 x i16>]
20
21 define void @spill_fpr16(%bigtype_v1i16* %addr) {
22 ; CHECK-LABEL: spill_fpr16:
23 ; CHECK: 2-byte Folded Spill
24 ; CHECK: 2-byte Folded Reload
25   %val1 = load volatile %bigtype_v1i16* %addr
26   %val2 = load volatile %bigtype_v1i16* %addr
27   store volatile %bigtype_v1i16 %val1, %bigtype_v1i16* %addr
28   store volatile %bigtype_v1i16 %val2, %bigtype_v1i16* %addr
29   ret void
30 }