1; RUN: llc < %s -asm-verbose=0 -mtriple=arm64-eabi | FileCheck %s
2; RUN: llc < %s -asm-verbose=0 -mtriple=aarch64-eabi | FileCheck %s
3
4; test argument passing and simple load/store
5
6define bfloat @test_load(bfloat* %p) nounwind {
7; CHECK-LABEL: test_load:
8; CHECK-NEXT: ldr h0, [x0]
9; CHECK-NEXT: ret
10  %tmp1 = load bfloat, bfloat* %p, align 16
11  ret bfloat %tmp1
12}
13
14define <4 x bfloat> @test_vec_load(<4 x bfloat>* %p) nounwind {
15; CHECK-LABEL: test_vec_load:
16; CHECK-NEXT: ldr d0, [x0]
17; CHECK-NEXT: ret
18  %tmp1 = load <4 x bfloat>, <4 x bfloat>* %p, align 16
19  ret <4 x bfloat> %tmp1
20}
21
22define void @test_store(bfloat* %a, bfloat %b) nounwind {
23; CHECK-LABEL: test_store:
24; CHECK-NEXT: str h0, [x0]
25; CHECK-NEXT: ret
26  store bfloat %b, bfloat* %a, align 16
27  ret void
28}
29
30; Simple store of v4bf16
31define void @test_vec_store(<4 x bfloat>* %a, <4 x bfloat> %b) nounwind {
32; CHECK-LABEL: test_vec_store:
33; CHECK-NEXT: str d0, [x0]
34; CHECK-NEXT: ret
35entry:
36  store <4 x bfloat> %b, <4 x bfloat>* %a, align 16
37  ret void
38}
39