aboutsummaryrefslogtreecommitdiff
path: root/sim/testsuite/aarch64/ldn_multiple.s
blob: 285ef7e1471a1836381112df446ef0212db7df8b (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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# mach: aarch64

# Check the load multiple structure instructions: ld1, ld2, ld3, ld4.
# Check the addressing modes: no offset, post-index immediate offset,
# post-index register offset.

.include "testutils.inc"

	.data
	.align 4
input:
	.word 0x04030201
	.word 0x08070605
	.word 0x0c0b0a09
	.word 0x100f0e0d
	.word 0xfcfdfeff
	.word 0xf8f9fafb
	.word 0xf4f5f6f7
	.word 0xf0f1f2f3

	start
	adrp x0, input
	add x0, x0, :lo12:input

	mov x2, x0
	mov x3, #16
	ld1 {v0.16b}, [x2], 16
	ld1 {v1.8h}, [x2], x3
	addv b4, v0.16b
	addv b5, v1.16b
	mov x4, v4.d[0]
	cmp x4, #136
	bne .Lfailure
	mov x5, v5.d[0]
	cmp x5, #120
	bne .Lfailure

	mov x2, x0
	mov x3, #16
	ld2 {v0.8b, v1.8b}, [x2], x3
	ld2 {v2.4h, v3.4h}, [x2], 16
	addv b4, v0.8b
	addv b5, v1.8b
	addv b6, v2.8b
	addv b7, v3.8b
	mov x4, v4.d[0]
	cmp x4, #64
	bne .Lfailure
	mov x5, v5.d[0]
	cmp x5, #72
	bne .Lfailure
	mov x6, v6.d[0]
	cmp x6, #196
	bne .Lfailure
	mov x7, v7.d[0]
	cmp x7, #180
	bne .Lfailure

	mov x2, x0
	ld3 {v0.2s, v1.2s, v2.2s}, [x2]
	addv b4, v0.8b
	addv b5, v1.8b
	addv b6, v2.8b
	mov x4, v4.d[0]
	cmp x4, #68
	bne .Lfailure
	mov x5, v5.d[0]
	cmp x5, #16
	bne .Lfailure
	mov x6, v6.d[0]
	cmp x6, #16
	bne .Lfailure

	mov x2, x0
	ld4 {v0.4h, v1.4h, v2.4h, v3.4h}, [x2]
	addv b4, v0.8b
	addv b5, v1.8b
	addv b6, v2.8b
	addv b7, v3.8b
	mov x4, v4.d[0]
	cmp x4, #0
	bne .Lfailure
	mov x5, v5.d[0]
	cmp x5, #0
	bne .Lfailure
	mov x6, v6.d[0]
	cmp x6, #0
	bne .Lfailure
	mov x7, v7.d[0]
	cmp x7, #0
	bne .Lfailure

	mov x2, x0
	ld1 {v0.4s, v1.4s}, [x2]
	addv b4, v0.16b
	addv b5, v1.16b
	mov x4, v4.d[0]
	cmp x4, #136
	bne .Lfailure
	mov x5, v5.d[0]
	cmp x5, #120
	bne .Lfailure

	mov x2, x0
	ld1 {v0.1d, v1.1d, v2.1d}, [x2]
	addv b4, v0.8b
	addv b5, v1.8b
	addv b6, v2.8b
	mov x4, v4.d[0]
	cmp x4, #36
	bne .Lfailure
	mov x5, v5.d[0]
	cmp x5, #100
	bne .Lfailure
	mov x6, v6.d[0]
	cmp x6, #220
	bne .Lfailure

	mov x2, x0
	ld1 {v0.1d, v1.1d, v2.1d, v3.1d}, [x2]
	addv b4, v0.8b
	addv b5, v1.8b
	addv b6, v2.8b
	mov x4, v4.d[0]
	cmp x4, #36
	bne .Lfailure
	mov x5, v5.d[0]
	cmp x5, #100
	bne .Lfailure
	mov x6, v6.d[0]
	cmp x6, #220
	bne .Lfailure

	pass
.Lfailure:
	fail