Update test to use llvm-readobj. NFC.
[oota-llvm.git] / test / MC / AArch64 / neon-simd-ldst-multi-elem.s
1 // RUN: llvm-mc -triple=arm64 -mattr=+neon -show-encoding < %s | FileCheck %s
2
3 // Check that the assembler can handle the documented syntax for AArch64
4
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]
24
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]
44
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]
61
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]
81
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]
98
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]
118
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]
135
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]
153
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]
168
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]
186
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]
201
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]
219
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]
234
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]
254
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]
274
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]
291
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]
311
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]
328
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]
348
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]
365
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]
383
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]
398
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]
416
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]
431
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]
449
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]