[llvm-readobj] - Simplify stack-sizes.test test case.
[llvm-complete.git] / test / MC / AArch64 / neon-simd-ldst-multi-elem.s
blobb8b3e72ff77741b68da245742a262c53d032a5c4
1 // RUN: llvm-mc -triple=arm64 -mattr=+neon -show-encoding < %s | FileCheck %s
3 // Check that the assembler can handle the documented syntax for AArch64
5 //------------------------------------------------------------------------------
6 // Store multiple 1-element structures from one register
7 //------------------------------------------------------------------------------
8 st1 { v0.16b }, [x0]
9 st1 { v15.8h }, [x15]
10 st1 { v31.4s }, [sp]
11 st1 { v0.2d }, [x0]
12 st1 { v0.8b }, [x0]
13 st1 { v15.4h }, [x15]
14 st1 { v31.2s }, [sp]
15 st1 { v0.1d }, [x0]
16 // CHECK: st1 { v0.16b }, [x0] // encoding: [0x00,0x70,0x00,0x4c]
17 // CHECK: st1 { v15.8h }, [x15] // encoding: [0xef,0x75,0x00,0x4c]
18 // CHECK: st1 { v31.4s }, [sp] // encoding: [0xff,0x7b,0x00,0x4c]
19 // CHECK: st1 { v0.2d }, [x0] // encoding: [0x00,0x7c,0x00,0x4c]
20 // CHECK: st1 { v0.8b }, [x0] // encoding: [0x00,0x70,0x00,0x0c]
21 // CHECK: st1 { v15.4h }, [x15] // encoding: [0xef,0x75,0x00,0x0c]
22 // CHECK: st1 { v31.2s }, [sp] // encoding: [0xff,0x7b,0x00,0x0c]
23 // CHECK: st1 { v0.1d }, [x0] // encoding: [0x00,0x7c,0x00,0x0c]
25 //------------------------------------------------------------------------------
26 // Store multiple 1-element structures from two consecutive registers
27 //------------------------------------------------------------------------------
28 st1 { v0.16b, v1.16b }, [x0]
29 st1 { v15.8h, v16.8h }, [x15]
30 st1 { v31.4s, v0.4s }, [sp]
31 st1 { v0.2d, v1.2d }, [x0]
32 st1 { v0.8b, v1.8b }, [x0]
33 st1 { v15.4h, v16.4h }, [x15]
34 st1 { v31.2s, v0.2s }, [sp]
35 st1 { v0.1d, v1.1d }, [x0]
36 // CHECK: st1 { v0.16b, v1.16b }, [x0] // encoding: [0x00,0xa0,0x00,0x4c]
37 // CHECK: st1 { v15.8h, v16.8h }, [x15] // encoding: [0xef,0xa5,0x00,0x4c]
38 // CHECK: st1 { v31.4s, v0.4s }, [sp] // encoding: [0xff,0xab,0x00,0x4c]
39 // CHECK: st1 { v0.2d, v1.2d }, [x0] // encoding: [0x00,0xac,0x00,0x4c]
40 // CHECK: st1 { v0.8b, v1.8b }, [x0] // encoding: [0x00,0xa0,0x00,0x0c]
41 // CHECK: st1 { v15.4h, v16.4h }, [x15] // encoding: [0xef,0xa5,0x00,0x0c]
42 // CHECK: st1 { v31.2s, v0.2s }, [sp] // encoding: [0xff,0xab,0x00,0x0c]
43 // CHECK: st1 { v0.1d, v1.1d }, [x0] // encoding: [0x00,0xac,0x00,0x0c]
45 st1 { v0.16b-v1.16b }, [x0]
46 st1 { v15.8h-v16.8h }, [x15]
47 st1 { v31.4s-v0.4s }, [sp]
48 st1 { v0.2d-v1.2d }, [x0]
49 st1 { v0.8b-v1.8b }, [x0]
50 st1 { v15.4h-v16.4h }, [x15]
51 st1 { v31.2s-v0.2s }, [sp]
52 st1 { v0.1d-v1.1d }, [x0]
53 // CHECK: st1 { v0.16b, v1.16b }, [x0] // encoding: [0x00,0xa0,0x00,0x4c]
54 // CHECK: st1 { v15.8h, v16.8h }, [x15] // encoding: [0xef,0xa5,0x00,0x4c]
55 // CHECK: st1 { v31.4s, v0.4s }, [sp] // encoding: [0xff,0xab,0x00,0x4c]
56 // CHECK: st1 { v0.2d, v1.2d }, [x0] // encoding: [0x00,0xac,0x00,0x4c]
57 // CHECK: st1 { v0.8b, v1.8b }, [x0] // encoding: [0x00,0xa0,0x00,0x0c]
58 // CHECK: st1 { v15.4h, v16.4h }, [x15] // encoding: [0xef,0xa5,0x00,0x0c]
59 // CHECK: st1 { v31.2s, v0.2s }, [sp] // encoding: [0xff,0xab,0x00,0x0c]
60 // CHECK: st1 { v0.1d, v1.1d }, [x0] // encoding: [0x00,0xac,0x00,0x0c]
62 //------------------------------------------------------------------------------
63 // Store multiple 1-element structures from three consecutive registers
64 //------------------------------------------------------------------------------
65 st1 { v0.16b, v1.16b, v2.16b }, [x0]
66 st1 { v15.8h, v16.8h, v17.8h }, [x15]
67 st1 { v31.4s, v0.4s, v1.4s }, [sp]
68 st1 { v0.2d, v1.2d, v2.2d }, [x0]
69 st1 { v0.8b, v1.8b, v2.8b }, [x0]
70 st1 { v15.4h, v16.4h, v17.4h }, [x15]
71 st1 { v31.2s, v0.2s, v1.2s }, [sp]
72 st1 { v0.1d, v1.1d, v2.1d }, [x0]
73 // CHECK: st1 { v0.16b, v1.16b, v2.16b }, [x0] // encoding: [0x00,0x60,0x00,0x4c]
74 // CHECK: st1 { v15.8h, v16.8h, v17.8h }, [x15] // encoding: [0xef,0x65,0x00,0x4c]
75 // CHECK: st1 { v31.4s, v0.4s, v1.4s }, [sp] // encoding: [0xff,0x6b,0x00,0x4c]
76 // CHECK: st1 { v0.2d, v1.2d, v2.2d }, [x0] // encoding: [0x00,0x6c,0x00,0x4c]
77 // CHECK: st1 { v0.8b, v1.8b, v2.8b }, [x0] // encoding: [0x00,0x60,0x00,0x0c]
78 // CHECK: st1 { v15.4h, v16.4h, v17.4h }, [x15] // encoding: [0xef,0x65,0x00,0x0c]
79 // CHECK: st1 { v31.2s, v0.2s, v1.2s }, [sp] // encoding: [0xff,0x6b,0x00,0x0c]
80 // CHECK: st1 { v0.1d, v1.1d, v2.1d }, [x0] // encoding: [0x00,0x6c,0x00,0x0c]
82 st1 { v0.16b-v2.16b }, [x0]
83 st1 { v15.8h-v17.8h }, [x15]
84 st1 { v31.4s-v1.4s }, [sp]
85 st1 { v0.2d-v2.2d }, [x0]
86 st1 { v0.8b-v2.8b }, [x0]
87 st1 { v15.4h-v17.4h }, [x15]
88 st1 { v31.2s-v1.2s }, [sp]
89 st1 { v0.1d-v2.1d }, [x0]
90 // CHECK: st1 { v0.16b, v1.16b, v2.16b }, [x0] // encoding: [0x00,0x60,0x00,0x4c]
91 // CHECK: st1 { v15.8h, v16.8h, v17.8h }, [x15] // encoding: [0xef,0x65,0x00,0x4c]
92 // CHECK: st1 { v31.4s, v0.4s, v1.4s }, [sp] // encoding: [0xff,0x6b,0x00,0x4c]
93 // CHECK: st1 { v0.2d, v1.2d, v2.2d }, [x0] // encoding: [0x00,0x6c,0x00,0x4c]
94 // CHECK: st1 { v0.8b, v1.8b, v2.8b }, [x0] // encoding: [0x00,0x60,0x00,0x0c]
95 // CHECK: st1 { v15.4h, v16.4h, v17.4h }, [x15] // encoding: [0xef,0x65,0x00,0x0c]
96 // CHECK: st1 { v31.2s, v0.2s, v1.2s }, [sp] // encoding: [0xff,0x6b,0x00,0x0c]
97 // CHECK: st1 { v0.1d, v1.1d, v2.1d }, [x0] // encoding: [0x00,0x6c,0x00,0x0c]
99 //------------------------------------------------------------------------------
100 // Store multiple 1-element structures from four consecutive registers
101 //------------------------------------------------------------------------------
102 st1 { v0.16b, v1.16b, v2.16b, v3.16b }, [x0]
103 st1 { v15.8h, v16.8h, v17.8h, v18.8h }, [x15]
104 st1 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp]
105 st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0]
106 st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0]
107 st1 { v15.4h, v16.4h, v17.4h, v18.4h }, [x15]
108 st1 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp]
109 st1 { v0.1d, v1.1d, v2.1d, v3.1d }, [x0]
110 // CHECK: st1 { v0.16b, v1.16b, v2.16b, v3.16b }, [x0] // encoding: [0x00,0x20,0x00,0x4c]
111 // CHECK: st1 { v15.8h, v16.8h, v17.8h, v18.8h }, [x15] // encoding: [0xef,0x25,0x00,0x4c]
112 // CHECK: st1 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp] // encoding: [0xff,0x2b,0x00,0x4c]
113 // CHECK: st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] // encoding: [0x00,0x2c,0x00,0x4c]
114 // CHECK: st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0] // encoding: [0x00,0x20,0x00,0x0c]
115 // CHECK: st1 { v15.4h, v16.4h, v17.4h, v18.4h }, [x15] // encoding: [0xef,0x25,0x00,0x0c]
116 // CHECK: st1 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp] // encoding: [0xff,0x2b,0x00,0x0c]
117 // CHECK: st1 { v0.1d, v1.1d, v2.1d, v3.1d }, [x0] // encoding: [0x00,0x2c,0x00,0x0c]
119 st1 { v0.16b-v3.16b }, [x0]
120 st1 { v15.8h-v18.8h }, [x15]
121 st1 { v31.4s-v2.4s }, [sp]
122 st1 { v0.2d-v3.2d }, [x0]
123 st1 { v0.8b-v3.8b }, [x0]
124 st1 { v15.4h-v18.4h }, [x15]
125 st1 { v31.2s-v2.2s }, [sp]
126 st1 { v0.1d-v3.1d }, [x0]
127 // CHECK: st1 { v0.16b, v1.16b, v2.16b, v3.16b }, [x0] // encoding: [0x00,0x20,0x00,0x4c]
128 // CHECK: st1 { v15.8h, v16.8h, v17.8h, v18.8h }, [x15] // encoding: [0xef,0x25,0x00,0x4c]
129 // CHECK: st1 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp] // encoding: [0xff,0x2b,0x00,0x4c]
130 // CHECK: st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] // encoding: [0x00,0x2c,0x00,0x4c]
131 // CHECK: st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0] // encoding: [0x00,0x20,0x00,0x0c]
132 // CHECK: st1 { v15.4h, v16.4h, v17.4h, v18.4h }, [x15] // encoding: [0xef,0x25,0x00,0x0c]
133 // CHECK: st1 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp] // encoding: [0xff,0x2b,0x00,0x0c]
134 // CHECK: st1 { v0.1d, v1.1d, v2.1d, v3.1d }, [x0] // encoding: [0x00,0x2c,0x00,0x0c]
136 //------------------------------------------------------------------------------
137 // Store multiple 2-element structures from two consecutive registers
138 //------------------------------------------------------------------------------
139 st2 { v0.16b, v1.16b }, [x0]
140 st2 { v15.8h, v16.8h }, [x15]
141 st2 { v31.4s, v0.4s }, [sp]
142 st2 { v0.2d, v1.2d }, [x0]
143 st2 { v0.8b, v1.8b }, [x0]
144 st2 { v15.4h, v16.4h }, [x15]
145 st2 { v31.2s, v0.2s }, [sp]
146 // CHECK: st2 { v0.16b, v1.16b }, [x0] // encoding: [0x00,0x80,0x00,0x4c]
147 // CHECK: st2 { v15.8h, v16.8h }, [x15] // encoding: [0xef,0x85,0x00,0x4c]
148 // CHECK: st2 { v31.4s, v0.4s }, [sp] // encoding: [0xff,0x8b,0x00,0x4c]
149 // CHECK: st2 { v0.2d, v1.2d }, [x0] // encoding: [0x00,0x8c,0x00,0x4c]
150 // CHECK: st2 { v0.8b, v1.8b }, [x0] // encoding: [0x00,0x80,0x00,0x0c]
151 // CHECK: st2 { v15.4h, v16.4h }, [x15] // encoding: [0xef,0x85,0x00,0x0c]
152 // CHECK: st2 { v31.2s, v0.2s }, [sp] // encoding: [0xff,0x8b,0x00,0x0c]
154 st2 { v0.16b-v1.16b }, [x0]
155 st2 { v15.8h-v16.8h }, [x15]
156 st2 { v31.4s-v0.4s }, [sp]
157 st2 { v0.2d-v1.2d }, [x0]
158 st2 { v0.8b-v1.8b }, [x0]
159 st2 { v15.4h-v16.4h }, [x15]
160 st2 { v31.2s-v0.2s }, [sp]
161 // CHECK: st2 { v0.16b, v1.16b }, [x0] // encoding: [0x00,0x80,0x00,0x4c]
162 // CHECK: st2 { v15.8h, v16.8h }, [x15] // encoding: [0xef,0x85,0x00,0x4c]
163 // CHECK: st2 { v31.4s, v0.4s }, [sp] // encoding: [0xff,0x8b,0x00,0x4c]
164 // CHECK: st2 { v0.2d, v1.2d }, [x0] // encoding: [0x00,0x8c,0x00,0x4c]
165 // CHECK: st2 { v0.8b, v1.8b }, [x0] // encoding: [0x00,0x80,0x00,0x0c]
166 // CHECK: st2 { v15.4h, v16.4h }, [x15] // encoding: [0xef,0x85,0x00,0x0c]
167 // CHECK: st2 { v31.2s, v0.2s }, [sp] // encoding: [0xff,0x8b,0x00,0x0c]
169 //------------------------------------------------------------------------------
170 // Store multiple 3-element structures from three consecutive registers
171 //------------------------------------------------------------------------------
172 st3 { v0.16b, v1.16b, v2.16b }, [x0]
173 st3 { v15.8h, v16.8h, v17.8h }, [x15]
174 st3 { v31.4s, v0.4s, v1.4s }, [sp]
175 st3 { v0.2d, v1.2d, v2.2d }, [x0]
176 st3 { v0.8b, v1.8b, v2.8b }, [x0]
177 st3 { v15.4h, v16.4h, v17.4h }, [x15]
178 st3 { v31.2s, v0.2s, v1.2s }, [sp]
179 // CHECK: st3 { v0.16b, v1.16b, v2.16b }, [x0] // encoding: [0x00,0x40,0x00,0x4c]
180 // CHECK: st3 { v15.8h, v16.8h, v17.8h }, [x15] // encoding: [0xef,0x45,0x00,0x4c]
181 // CHECK: st3 { v31.4s, v0.4s, v1.4s }, [sp] // encoding: [0xff,0x4b,0x00,0x4c]
182 // CHECK: st3 { v0.2d, v1.2d, v2.2d }, [x0] // encoding: [0x00,0x4c,0x00,0x4c]
183 // CHECK: st3 { v0.8b, v1.8b, v2.8b }, [x0] // encoding: [0x00,0x40,0x00,0x0c]
184 // CHECK: st3 { v15.4h, v16.4h, v17.4h }, [x15] // encoding: [0xef,0x45,0x00,0x0c]
185 // CHECK: st3 { v31.2s, v0.2s, v1.2s }, [sp] // encoding: [0xff,0x4b,0x00,0x0c]
187 st3 { v0.16b-v2.16b }, [x0]
188 st3 { v15.8h-v17.8h }, [x15]
189 st3 { v31.4s-v1.4s }, [sp]
190 st3 { v0.2d-v2.2d }, [x0]
191 st3 { v0.8b-v2.8b }, [x0]
192 st3 { v15.4h-v17.4h }, [x15]
193 st3 { v31.2s-v1.2s }, [sp]
194 // CHECK: st3 { v0.16b, v1.16b, v2.16b }, [x0] // encoding: [0x00,0x40,0x00,0x4c]
195 // CHECK: st3 { v15.8h, v16.8h, v17.8h }, [x15] // encoding: [0xef,0x45,0x00,0x4c]
196 // CHECK: st3 { v31.4s, v0.4s, v1.4s }, [sp] // encoding: [0xff,0x4b,0x00,0x4c]
197 // CHECK: st3 { v0.2d, v1.2d, v2.2d }, [x0] // encoding: [0x00,0x4c,0x00,0x4c]
198 // CHECK: st3 { v0.8b, v1.8b, v2.8b }, [x0] // encoding: [0x00,0x40,0x00,0x0c]
199 // CHECK: st3 { v15.4h, v16.4h, v17.4h }, [x15] // encoding: [0xef,0x45,0x00,0x0c]
200 // CHECK: st3 { v31.2s, v0.2s, v1.2s }, [sp] // encoding: [0xff,0x4b,0x00,0x0c]
202 //------------------------------------------------------------------------------
203 // Store multiple 4-element structures from four consecutive registers
204 //------------------------------------------------------------------------------
205 st4 { v0.16b, v1.16b, v2.16b, v3.16b }, [x0]
206 st4 { v15.8h, v16.8h, v17.8h, v18.8h }, [x15]
207 st4 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp]
208 st4 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0]
209 st4 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0]
210 st4 { v15.4h, v16.4h, v17.4h, v18.4h }, [x15]
211 st4 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp]
212 // CHECK: st4 { v0.16b, v1.16b, v2.16b, v3.16b }, [x0] // encoding: [0x00,0x00,0x00,0x4c]
213 // CHECK: st4 { v15.8h, v16.8h, v17.8h, v18.8h }, [x15] // encoding: [0xef,0x05,0x00,0x4c]
214 // CHECK: st4 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp] // encoding: [0xff,0x0b,0x00,0x4c]
215 // CHECK: st4 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] // encoding: [0x00,0x0c,0x00,0x4c]
216 // CHECK: st4 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0] // encoding: [0x00,0x00,0x00,0x0c]
217 // CHECK: st4 { v15.4h, v16.4h, v17.4h, v18.4h }, [x15] // encoding: [0xef,0x05,0x00,0x0c]
218 // CHECK: st4 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp] // encoding: [0xff,0x0b,0x00,0x0c]
220 st4 { v0.16b-v3.16b }, [x0]
221 st4 { v15.8h-v18.8h }, [x15]
222 st4 { v31.4s-v2.4s }, [sp]
223 st4 { v0.2d-v3.2d }, [x0]
224 st4 { v0.8b-v3.8b }, [x0]
225 st4 { v15.4h-v18.4h }, [x15]
226 st4 { v31.2s-v2.2s }, [sp]
227 // CHECK: st4 { v0.16b, v1.16b, v2.16b, v3.16b }, [x0] // encoding: [0x00,0x00,0x00,0x4c]
228 // CHECK: st4 { v15.8h, v16.8h, v17.8h, v18.8h }, [x15] // encoding: [0xef,0x05,0x00,0x4c]
229 // CHECK: st4 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp] // encoding: [0xff,0x0b,0x00,0x4c]
230 // CHECK: st4 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] // encoding: [0x00,0x0c,0x00,0x4c]
231 // CHECK: st4 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0] // encoding: [0x00,0x00,0x00,0x0c]
232 // CHECK: st4 { v15.4h, v16.4h, v17.4h, v18.4h }, [x15] // encoding: [0xef,0x05,0x00,0x0c]
233 // CHECK: st4 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp] // encoding: [0xff,0x0b,0x00,0x0c]
235 //------------------------------------------------------------------------------
236 // Load multiple 1-element structures to one register
237 //------------------------------------------------------------------------------
238 ld1 { v0.16b }, [x0]
239 ld1 { v15.8h }, [x15]
240 ld1 { v31.4s }, [sp]
241 ld1 { v0.2d }, [x0]
242 ld1 { v0.8b }, [x0]
243 ld1 { v15.4h }, [x15]
244 ld1 { v31.2s }, [sp]
245 ld1 { v0.1d }, [x0]
246 // CHECK: ld1 { v0.16b }, [x0] // encoding: [0x00,0x70,0x40,0x4c]
247 // CHECK: ld1 { v15.8h }, [x15] // encoding: [0xef,0x75,0x40,0x4c]
248 // CHECK: ld1 { v31.4s }, [sp] // encoding: [0xff,0x7b,0x40,0x4c]
249 // CHECK: ld1 { v0.2d }, [x0] // encoding: [0x00,0x7c,0x40,0x4c]
250 // CHECK: ld1 { v0.8b }, [x0] // encoding: [0x00,0x70,0x40,0x0c]
251 // CHECK: ld1 { v15.4h }, [x15] // encoding: [0xef,0x75,0x40,0x0c]
252 // CHECK: ld1 { v31.2s }, [sp] // encoding: [0xff,0x7b,0x40,0x0c]
253 // CHECK: ld1 { v0.1d }, [x0] // encoding: [0x00,0x7c,0x40,0x0c]
255 //------------------------------------------------------------------------------
256 // Load multiple 1-element structures to two consecutive registers
257 //------------------------------------------------------------------------------
258 ld1 { v0.16b, v1.16b }, [x0]
259 ld1 { v15.8h, v16.8h }, [x15]
260 ld1 { v31.4s, v0.4s }, [sp]
261 ld1 { v0.2d, v1.2d }, [x0]
262 ld1 { v0.8b, v1.8b }, [x0]
263 ld1 { v15.4h, v16.4h }, [x15]
264 ld1 { v31.2s, v0.2s }, [sp]
265 ld1 { v0.1d, v1.1d }, [x0]
266 // CHECK: ld1 { v0.16b, v1.16b }, [x0] // encoding: [0x00,0xa0,0x40,0x4c]
267 // CHECK: ld1 { v15.8h, v16.8h }, [x15] // encoding: [0xef,0xa5,0x40,0x4c]
268 // CHECK: ld1 { v31.4s, v0.4s }, [sp] // encoding: [0xff,0xab,0x40,0x4c]
269 // CHECK: ld1 { v0.2d, v1.2d }, [x0] // encoding: [0x00,0xac,0x40,0x4c]
270 // CHECK: ld1 { v0.8b, v1.8b }, [x0] // encoding: [0x00,0xa0,0x40,0x0c]
271 // CHECK: ld1 { v15.4h, v16.4h }, [x15] // encoding: [0xef,0xa5,0x40,0x0c]
272 // CHECK: ld1 { v31.2s, v0.2s }, [sp] // encoding: [0xff,0xab,0x40,0x0c]
273 // CHECK: ld1 { v0.1d, v1.1d }, [x0] // encoding: [0x00,0xac,0x40,0x0c]
275 ld1 { v0.16b-v1.16b }, [x0]
276 ld1 { v15.8h-v16.8h }, [x15]
277 ld1 { v31.4s-v0.4s }, [sp]
278 ld1 { v0.2d-v1.2d }, [x0]
279 ld1 { v0.8b-v1.8b }, [x0]
280 ld1 { v15.4h-v16.4h }, [x15]
281 ld1 { v31.2s-v0.2s }, [sp]
282 ld1 { v0.1d-v1.1d }, [x0]
283 // CHECK: ld1 { v0.16b, v1.16b }, [x0] // encoding: [0x00,0xa0,0x40,0x4c]
284 // CHECK: ld1 { v15.8h, v16.8h }, [x15] // encoding: [0xef,0xa5,0x40,0x4c]
285 // CHECK: ld1 { v31.4s, v0.4s }, [sp] // encoding: [0xff,0xab,0x40,0x4c]
286 // CHECK: ld1 { v0.2d, v1.2d }, [x0] // encoding: [0x00,0xac,0x40,0x4c]
287 // CHECK: ld1 { v0.8b, v1.8b }, [x0] // encoding: [0x00,0xa0,0x40,0x0c]
288 // CHECK: ld1 { v15.4h, v16.4h }, [x15] // encoding: [0xef,0xa5,0x40,0x0c]
289 // CHECK: ld1 { v31.2s, v0.2s }, [sp] // encoding: [0xff,0xab,0x40,0x0c]
290 // CHECK: ld1 { v0.1d, v1.1d }, [x0] // encoding: [0x00,0xac,0x40,0x0c]
292 //------------------------------------------------------------------------------
293 // Load multiple 1-element structures to three consecutive registers
294 //------------------------------------------------------------------------------
295 ld1 { v0.16b, v1.16b, v2.16b }, [x0]
296 ld1 { v15.8h, v16.8h, v17.8h }, [x15]
297 ld1 { v31.4s, v0.4s, v1.4s }, [sp]
298 ld1 { v0.2d, v1.2d, v2.2d }, [x0]
299 ld1 { v0.8b, v1.8b, v2.8b }, [x0]
300 ld1 { v15.4h, v16.4h, v17.4h }, [x15]
301 ld1 { v31.2s, v0.2s, v1.2s }, [sp]
302 ld1 { v0.1d, v1.1d, v2.1d }, [x0]
303 // CHECK: ld1 { v0.16b, v1.16b, v2.16b }, [x0] // encoding: [0x00,0x60,0x40,0x4c]
304 // CHECK: ld1 { v15.8h, v16.8h, v17.8h }, [x15] // encoding: [0xef,0x65,0x40,0x4c]
305 // CHECK: ld1 { v31.4s, v0.4s, v1.4s }, [sp] // encoding: [0xff,0x6b,0x40,0x4c]
306 // CHECK: ld1 { v0.2d, v1.2d, v2.2d }, [x0] // encoding: [0x00,0x6c,0x40,0x4c]
307 // CHECK: ld1 { v0.8b, v1.8b, v2.8b }, [x0] // encoding: [0x00,0x60,0x40,0x0c]
308 // CHECK: ld1 { v15.4h, v16.4h, v17.4h }, [x15] // encoding: [0xef,0x65,0x40,0x0c]
309 // CHECK: ld1 { v31.2s, v0.2s, v1.2s }, [sp] // encoding: [0xff,0x6b,0x40,0x0c]
310 // CHECK: ld1 { v0.1d, v1.1d, v2.1d }, [x0] // encoding: [0x00,0x6c,0x40,0x0c]
312 ld1 { v0.16b-v2.16b }, [x0]
313 ld1 { v15.8h-v17.8h }, [x15]
314 ld1 { v31.4s-v1.4s }, [sp]
315 ld1 { v0.2d-v2.2d }, [x0]
316 ld1 { v0.8b-v2.8b }, [x0]
317 ld1 { v15.4h-v17.4h }, [x15]
318 ld1 { v31.2s-v1.2s }, [sp]
319 ld1 { v0.1d-v2.1d }, [x0]
320 // CHECK: ld1 { v0.16b, v1.16b, v2.16b }, [x0] // encoding: [0x00,0x60,0x40,0x4c]
321 // CHECK: ld1 { v15.8h, v16.8h, v17.8h }, [x15] // encoding: [0xef,0x65,0x40,0x4c]
322 // CHECK: ld1 { v31.4s, v0.4s, v1.4s }, [sp] // encoding: [0xff,0x6b,0x40,0x4c]
323 // CHECK: ld1 { v0.2d, v1.2d, v2.2d }, [x0] // encoding: [0x00,0x6c,0x40,0x4c]
324 // CHECK: ld1 { v0.8b, v1.8b, v2.8b }, [x0] // encoding: [0x00,0x60,0x40,0x0c]
325 // CHECK: ld1 { v15.4h, v16.4h, v17.4h }, [x15] // encoding: [0xef,0x65,0x40,0x0c]
326 // CHECK: ld1 { v31.2s, v0.2s, v1.2s }, [sp] // encoding: [0xff,0x6b,0x40,0x0c]
327 // CHECK: ld1 { v0.1d, v1.1d, v2.1d }, [x0] // encoding: [0x00,0x6c,0x40,0x0c]
329 //------------------------------------------------------------------------------
330 // Load multiple 1-element structures to four consecutive registers
331 //------------------------------------------------------------------------------
332 ld1 { v0.16b, v1.16b, v2.16b, v3.16b }, [x0]
333 ld1 { v15.8h, v16.8h, v17.8h, v18.8h }, [x15]
334 ld1 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp]
335 ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0]
336 ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0]
337 ld1 { v15.4h, v16.4h, v17.4h, v18.4h }, [x15]
338 ld1 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp]
339 ld1 { v0.1d, v1.1d, v2.1d, v3.1d }, [x0]
340 // CHECK: ld1 { v0.16b, v1.16b, v2.16b, v3.16b }, [x0] // encoding: [0x00,0x20,0x40,0x4c]
341 // CHECK: ld1 { v15.8h, v16.8h, v17.8h, v18.8h }, [x15] // encoding: [0xef,0x25,0x40,0x4c]
342 // CHECK: ld1 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp] // encoding: [0xff,0x2b,0x40,0x4c]
343 // CHECK: ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] // encoding: [0x00,0x2c,0x40,0x4c]
344 // CHECK: ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0] // encoding: [0x00,0x20,0x40,0x0c]
345 // CHECK: ld1 { v15.4h, v16.4h, v17.4h, v18.4h }, [x15] // encoding: [0xef,0x25,0x40,0x0c]
346 // CHECK: ld1 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp] // encoding: [0xff,0x2b,0x40,0x0c]
347 // CHECK: ld1 { v0.1d, v1.1d, v2.1d, v3.1d }, [x0] // encoding: [0x00,0x2c,0x40,0x0c]
349 ld1 { v0.16b-v3.16b }, [x0]
350 ld1 { v15.8h-v18.8h }, [x15]
351 ld1 { v31.4s-v2.4s }, [sp]
352 ld1 { v0.2d-v3.2d }, [x0]
353 ld1 { v0.8b-v3.8b }, [x0]
354 ld1 { v15.4h-v18.4h }, [x15]
355 ld1 { v31.2s-v2.2s }, [sp]
356 ld1 { v0.1d-v3.1d }, [x0]
357 // CHECK: ld1 { v0.16b, v1.16b, v2.16b, v3.16b }, [x0] // encoding: [0x00,0x20,0x40,0x4c]
358 // CHECK: ld1 { v15.8h, v16.8h, v17.8h, v18.8h }, [x15] // encoding: [0xef,0x25,0x40,0x4c]
359 // CHECK: ld1 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp] // encoding: [0xff,0x2b,0x40,0x4c]
360 // CHECK: ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] // encoding: [0x00,0x2c,0x40,0x4c]
361 // CHECK: ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0] // encoding: [0x00,0x20,0x40,0x0c]
362 // CHECK: ld1 { v15.4h, v16.4h, v17.4h, v18.4h }, [x15] // encoding: [0xef,0x25,0x40,0x0c]
363 // CHECK: ld1 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp] // encoding: [0xff,0x2b,0x40,0x0c]
364 // CHECK: ld1 { v0.1d, v1.1d, v2.1d, v3.1d }, [x0] // encoding: [0x00,0x2c,0x40,0x0c]
366 //------------------------------------------------------------------------------
367 // Load multiple 4-element structures to two consecutive registers
368 //------------------------------------------------------------------------------
369 ld2 { v0.16b, v1.16b }, [x0]
370 ld2 { v15.8h, v16.8h }, [x15]
371 ld2 { v31.4s, v0.4s }, [sp]
372 ld2 { v0.2d, v1.2d }, [x0]
373 ld2 { v0.8b, v1.8b }, [x0]
374 ld2 { v15.4h, v16.4h }, [x15]
375 ld2 { v31.2s, v0.2s }, [sp]
376 // CHECK: ld2 { v0.16b, v1.16b }, [x0] // encoding: [0x00,0x80,0x40,0x4c]
377 // CHECK: ld2 { v15.8h, v16.8h }, [x15] // encoding: [0xef,0x85,0x40,0x4c]
378 // CHECK: ld2 { v31.4s, v0.4s }, [sp] // encoding: [0xff,0x8b,0x40,0x4c]
379 // CHECK: ld2 { v0.2d, v1.2d }, [x0] // encoding: [0x00,0x8c,0x40,0x4c]
380 // CHECK: ld2 { v0.8b, v1.8b }, [x0] // encoding: [0x00,0x80,0x40,0x0c]
381 // CHECK: ld2 { v15.4h, v16.4h }, [x15] // encoding: [0xef,0x85,0x40,0x0c]
382 // CHECK: ld2 { v31.2s, v0.2s }, [sp] // encoding: [0xff,0x8b,0x40,0x0c]
384 ld2 { v0.16b-v1.16b }, [x0]
385 ld2 { v15.8h-v16.8h }, [x15]
386 ld2 { v31.4s-v0.4s }, [sp]
387 ld2 { v0.2d-v1.2d }, [x0]
388 ld2 { v0.8b-v1.8b }, [x0]
389 ld2 { v15.4h-v16.4h }, [x15]
390 ld2 { v31.2s-v0.2s }, [sp]
391 // CHECK: ld2 { v0.16b, v1.16b }, [x0] // encoding: [0x00,0x80,0x40,0x4c]
392 // CHECK: ld2 { v15.8h, v16.8h }, [x15] // encoding: [0xef,0x85,0x40,0x4c]
393 // CHECK: ld2 { v31.4s, v0.4s }, [sp] // encoding: [0xff,0x8b,0x40,0x4c]
394 // CHECK: ld2 { v0.2d, v1.2d }, [x0] // encoding: [0x00,0x8c,0x40,0x4c]
395 // CHECK: ld2 { v0.8b, v1.8b }, [x0] // encoding: [0x00,0x80,0x40,0x0c]
396 // CHECK: ld2 { v15.4h, v16.4h }, [x15] // encoding: [0xef,0x85,0x40,0x0c]
397 // CHECK: ld2 { v31.2s, v0.2s }, [sp] // encoding: [0xff,0x8b,0x40,0x0c]
399 //------------------------------------------------------------------------------
400 // Load multiple 3-element structures to three consecutive registers
401 //------------------------------------------------------------------------------
402 ld3 { v0.16b, v1.16b, v2.16b }, [x0]
403 ld3 { v15.8h, v16.8h, v17.8h }, [x15]
404 ld3 { v31.4s, v0.4s, v1.4s }, [sp]
405 ld3 { v0.2d, v1.2d, v2.2d }, [x0]
406 ld3 { v0.8b, v1.8b, v2.8b }, [x0]
407 ld3 { v15.4h, v16.4h, v17.4h }, [x15]
408 ld3 { v31.2s, v0.2s, v1.2s }, [sp]
409 // CHECK: ld3 { v0.16b, v1.16b, v2.16b }, [x0] // encoding: [0x00,0x40,0x40,0x4c]
410 // CHECK: ld3 { v15.8h, v16.8h, v17.8h }, [x15] // encoding: [0xef,0x45,0x40,0x4c]
411 // CHECK: ld3 { v31.4s, v0.4s, v1.4s }, [sp] // encoding: [0xff,0x4b,0x40,0x4c]
412 // CHECK: ld3 { v0.2d, v1.2d, v2.2d }, [x0] // encoding: [0x00,0x4c,0x40,0x4c]
413 // CHECK: ld3 { v0.8b, v1.8b, v2.8b }, [x0] // encoding: [0x00,0x40,0x40,0x0c]
414 // CHECK: ld3 { v15.4h, v16.4h, v17.4h }, [x15] // encoding: [0xef,0x45,0x40,0x0c]
415 // CHECK: ld3 { v31.2s, v0.2s, v1.2s }, [sp] // encoding: [0xff,0x4b,0x40,0x0c]
417 ld3 { v0.16b-v2.16b }, [x0]
418 ld3 { v15.8h-v17.8h }, [x15]
419 ld3 { v31.4s-v1.4s }, [sp]
420 ld3 { v0.2d-v2.2d }, [x0]
421 ld3 { v0.8b-v2.8b }, [x0]
422 ld3 { v15.4h-v17.4h }, [x15]
423 ld3 { v31.2s-v1.2s }, [sp]
424 // CHECK: ld3 { v0.16b, v1.16b, v2.16b }, [x0] // encoding: [0x00,0x40,0x40,0x4c]
425 // CHECK: ld3 { v15.8h, v16.8h, v17.8h }, [x15] // encoding: [0xef,0x45,0x40,0x4c]
426 // CHECK: ld3 { v31.4s, v0.4s, v1.4s }, [sp] // encoding: [0xff,0x4b,0x40,0x4c]
427 // CHECK: ld3 { v0.2d, v1.2d, v2.2d }, [x0] // encoding: [0x00,0x4c,0x40,0x4c]
428 // CHECK: ld3 { v0.8b, v1.8b, v2.8b }, [x0] // encoding: [0x00,0x40,0x40,0x0c]
429 // CHECK: ld3 { v15.4h, v16.4h, v17.4h }, [x15] // encoding: [0xef,0x45,0x40,0x0c]
430 // CHECK: ld3 { v31.2s, v0.2s, v1.2s }, [sp] // encoding: [0xff,0x4b,0x40,0x0c]
432 //------------------------------------------------------------------------------
433 // Load multiple 4-element structures to four consecutive registers
434 //------------------------------------------------------------------------------
435 ld4 { v0.16b, v1.16b, v2.16b, v3.16b }, [x0]
436 ld4 { v15.8h, v16.8h, v17.8h, v18.8h }, [x15]
437 ld4 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp]
438 ld4 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0]
439 ld4 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0]
440 ld4 { v15.4h, v16.4h, v17.4h, v18.4h }, [x15]
441 ld4 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp]
442 // CHECK: ld4 { v0.16b, v1.16b, v2.16b, v3.16b }, [x0] // encoding: [0x00,0x00,0x40,0x4c]
443 // CHECK: ld4 { v15.8h, v16.8h, v17.8h, v18.8h }, [x15] // encoding: [0xef,0x05,0x40,0x4c]
444 // CHECK: ld4 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp] // encoding: [0xff,0x0b,0x40,0x4c]
445 // CHECK: ld4 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] // encoding: [0x00,0x0c,0x40,0x4c]
446 // CHECK: ld4 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0] // encoding: [0x00,0x00,0x40,0x0c]
447 // CHECK: ld4 { v15.4h, v16.4h, v17.4h, v18.4h }, [x15] // encoding: [0xef,0x05,0x40,0x0c]
448 // CHECK: ld4 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp] // encoding: [0xff,0x0b,0x40,0x0c]
450 ld4 { v0.16b-v3.16b }, [x0]
451 ld4 { v15.8h-v18.8h }, [x15]
452 ld4 { v31.4s-v2.4s }, [sp]
453 ld4 { v0.2d-v3.2d }, [x0]
454 ld4 { v0.8b-v3.8b }, [x0]
455 ld4 { v15.4h-v18.4h }, [x15]
456 ld4 { v31.2s-v2.2s }, [sp]
457 // CHECK: ld4 { v0.16b, v1.16b, v2.16b, v3.16b }, [x0] // encoding: [0x00,0x00,0x40,0x4c]
458 // CHECK: ld4 { v15.8h, v16.8h, v17.8h, v18.8h }, [x15] // encoding: [0xef,0x05,0x40,0x4c]
459 // CHECK: ld4 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp] // encoding: [0xff,0x0b,0x40,0x4c]
460 // CHECK: ld4 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] // encoding: [0x00,0x0c,0x40,0x4c]
461 // CHECK: ld4 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0] // encoding: [0x00,0x00,0x40,0x0c]
462 // CHECK: ld4 { v15.4h, v16.4h, v17.4h, v18.4h }, [x15] // encoding: [0xef,0x05,0x40,0x0c]
463 // CHECK: ld4 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp] // encoding: [0xff,0x0b,0x40,0x0c]