1169689Skan# mach: aarch64
2169689Skan
3169689Skan# Check the load single 1-element structure to one lane instructions:
4169689Skan# ld1, ld2, ld3, ld4.
5169689Skan# Check the addressing modes: no offset, post-index immediate offset,
6169689Skan# post-index register offset.
7169689Skan
8169689Skan.include "testutils.inc"
9169689Skan
10169689Skan	.data
11169689Skan	.align 4
12169689Skaninput:
13169689Skan	.word 0x04030201
14169689Skan	.word 0x08070605
15169689Skan	.word 0x0c0b0a09
16169689Skan	.word 0x100f0e0d
17169689Skan	.word 0x14131211
18169689Skan	.word 0x18171615
19169689Skan	.word 0x1c1b1a19
20169689Skan	.word 0x201f1e1d
21169689Skan
22169689Skan	start
23169689Skan	adrp x0, input
24169689Skan	add x0, x0, :lo12:input
25169689Skan
26169689Skan	mov x2, x0
27169689Skan	mov x3, #1
28169689Skan	mov x4, #4
29169689Skan	ld1 {v0.b}[0], [x2], 1
30169689Skan	ld1 {v0.b}[1], [x2], x3
31169689Skan	ld1 {v0.h}[1], [x2], 2
32169689Skan	ld1 {v0.s}[1], [x2], x4
33169689Skan	ld1 {v0.d}[1], [x2]
34169689Skan	addv b1, v0.16b
35169689Skan	mov x5, v1.d[0]
36169689Skan	cmp x5, #136
37169689Skan	bne .Lfailure
38169689Skan
39169689Skan	mov x2, x0
40169689Skan	mov x3, #16
41169689Skan	mov x4, #4
42169689Skan	ld2 {v0.d, v1.d}[0], [x2], x3
43169689Skan	ld2 {v0.s, v1.s}[2], [x2], 8
44169689Skan	ld2 {v0.h, v1.h}[6], [x2], x4
45169689Skan	ld2 {v0.b, v1.b}[14], [x2], 2
46169689Skan	ld2 {v0.b, v1.b}[15], [x2]
47169689Skan	addv b2, v0.16b
48169689Skan	addv b3, v1.16b
49169689Skan	mov x5, v2.d[0]
50169689Skan	mov x6, v3.d[0]
51169689Skan	cmp x5, #221
52169689Skan	bne .Lfailure
53169689Skan	cmp x6, #51
54169689Skan	bne .Lfailure
55169689Skan
56169689Skan	mov x2, x0
57169689Skan	ld3 {v0.s, v1.s, v2.s}[0], [x2], 12
58169689Skan	ld3 {v0.s, v1.s, v2.s}[1], [x2]
59169689Skan	mov x2, x0
60169689Skan	mov x3, #12
61169689Skan	ld3 {v0.s, v1.s, v2.s}[2], [x2], x3
62169689Skan	ld3 {v0.s, v1.s, v2.s}[3], [x2]
63169689Skan	addv b3, v0.16b
64169689Skan	addv b4, v1.16b
65169689Skan	addv b5, v2.16b
66169689Skan	mov x4, v3.d[0]
67169689Skan	mov x5, v4.d[0]
68169689Skan	mov x6, v5.d[0]
69169689Skan	cmp x4, #136
70169689Skan	bne .Lfailure
71169689Skan	cmp x5, #200
72169689Skan	bne .Lfailure
73169689Skan	cmp x6, #8
74169689Skan	bne .Lfailure
75169689Skan
76169689Skan	mov x2, x0
77169689Skan	ld4 {v0.s, v1.s, v2.s, v3.s}[0], [x2], 16
78169689Skan	ld4 {v0.s, v1.s, v2.s, v3.s}[1], [x2]
79169689Skan	mov x2, x0
80169689Skan	mov x3, #16
81169689Skan	ld4 {v0.s, v1.s, v2.s, v3.s}[2], [x2], x3
82169689Skan	ld4 {v0.s, v1.s, v2.s, v3.s}[3], [x2]
83169689Skan	addv b4, v0.16b
84169689Skan	addv b5, v1.16b
85169689Skan	addv b6, v2.16b
86169689Skan	addv b7, v3.16b
87169689Skan	mov x4, v4.d[0]
88169689Skan	mov x5, v5.d[0]
89169689Skan	mov x6, v6.d[0]
90169689Skan	mov x7, v7.d[0]
91169689Skan	cmp x4, #168
92169689Skan	bne .Lfailure
93169689Skan	cmp x5, #232
94169689Skan	bne .Lfailure
95169689Skan	cmp x6, #40
96169689Skan	bne .Lfailure
97169689Skan	cmp x7, #104
98169689Skan	bne .Lfailure
99169689Skan
100169689Skan	pass
101169689Skan.Lfailure:
102169689Skan	fail
103169689Skan