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 //------------------------------------------------------------------------------
16 // CHECK
: st1
{ v0.16
b }, [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.8
b }, [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.16
b, v1.16
b }, [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.8
b, v1.8
b }, [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.16
b, v1.16
b }, [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.8
b, v1.8
b }, [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.16
b }, [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.8
b }, [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.16
b, v1.16
b }, [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.8
b, v1.8
b }, [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.16
b, v1.16
b, v2.16
b }, [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.8
b, v1.8
b, v2.8
b }, [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.16
b, v1.16
b, v2.16
b }, [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.8
b, v1.8
b, v2.8
b }, [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.16
b }, [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.8
b }, [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.16
b, v1.16
b, v2.16
b }, [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.8
b, v1.8
b, v2.8
b }, [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.16
b, v1.16
b, v2.16
b, v3.16
b }, [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.8
b, v1.8
b, v2.8
b, v3.8
b }, [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.16
b, v1.16
b, v2.16
b, v3.16
b }, [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.8
b, v1.8
b, v2.8
b, v3.8
b }, [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.16
b }, [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.8
b }, [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.16
b, v1.16
b, v2.16
b, v3.16
b }, [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.8
b, v1.8
b, v2.8
b, v3.8
b }, [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.16
b, v1.16
b }, [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.8
b, v1.8
b }, [x0
]
144 st2
{ v15.4h
, v16.4h
}, [x15
]
145 st2
{ v31.2s
, v0.2s
}, [sp
]
146 // CHECK
: st2
{ v0.16
b, v1.16
b }, [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.8
b, v1.8
b }, [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.16
b }, [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.8
b }, [x0
]
159 st2
{ v15.4h-v16.4h
}, [x15
]
160 st2
{ v31.2s-v0.2s
}, [sp
]
161 // CHECK
: st2
{ v0.16
b, v1.16
b }, [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.8
b, v1.8
b }, [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.16
b, v1.16
b, v2.16
b }, [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.8
b, v1.8
b, v2.8
b }, [x0
]
177 st3
{ v15.4h
, v16.4h
, v17.4h
}, [x15
]
178 st3
{ v31.2s
, v0.2s
, v1.2s
}, [sp
]
179 // CHECK
: st3
{ v0.16
b, v1.16
b, v2.16
b }, [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.8
b, v1.8
b, v2.8
b }, [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.16
b }, [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.8
b }, [x0
]
192 st3
{ v15.4h-v17.4h
}, [x15
]
193 st3
{ v31.2s-v1.2s
}, [sp
]
194 // CHECK
: st3
{ v0.16
b, v1.16
b, v2.16
b }, [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.8
b, v1.8
b, v2.8
b }, [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.16
b, v1.16
b, v2.16
b, v3.16
b }, [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.8
b, v1.8
b, v2.8
b, v3.8
b }, [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.16
b, v1.16
b, v2.16
b, v3.16
b }, [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.8
b, v1.8
b, v2.8
b, v3.8
b }, [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.16
b }, [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.8
b }, [x0
]
225 st4
{ v15.4h-v18.4h
}, [x15
]
226 st4
{ v31.2s-v2.2s
}, [sp
]
227 // CHECK
: st4
{ v0.16
b, v1.16
b, v2.16
b, v3.16
b }, [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.8
b, v1.8
b, v2.8
b, v3.8
b }, [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 //------------------------------------------------------------------------------
239 ld1
{ v15.8h
}, [x15
]
243 ld1
{ v15.4h
}, [x15
]
246 // CHECK
: ld1
{ v0.16
b }, [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.8
b }, [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.16
b, v1.16
b }, [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.8
b, v1.8
b }, [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.16
b, v1.16
b }, [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.8
b, v1.8
b }, [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.16
b }, [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.8
b }, [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.16
b, v1.16
b }, [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.8
b, v1.8
b }, [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.16
b, v1.16
b, v2.16
b }, [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.8
b, v1.8
b, v2.8
b }, [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.16
b, v1.16
b, v2.16
b }, [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.8
b, v1.8
b, v2.8
b }, [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.16
b }, [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.8
b }, [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.16
b, v1.16
b, v2.16
b }, [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.8
b, v1.8
b, v2.8
b }, [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.16
b, v1.16
b, v2.16
b, v3.16
b }, [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.8
b, v1.8
b, v2.8
b, v3.8
b }, [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.16
b, v1.16
b, v2.16
b, v3.16
b }, [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.8
b, v1.8
b, v2.8
b, v3.8
b }, [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.16
b }, [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.8
b }, [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.16
b, v1.16
b, v2.16
b, v3.16
b }, [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.8
b, v1.8
b, v2.8
b, v3.8
b }, [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.16
b, v1.16
b }, [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.8
b, v1.8
b }, [x0
]
374 ld2
{ v15.4h
, v16.4h
}, [x15
]
375 ld2
{ v31.2s
, v0.2s
}, [sp
]
376 // CHECK
: ld2
{ v0.16
b, v1.16
b }, [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.8
b, v1.8
b }, [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.16
b }, [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.8
b }, [x0
]
389 ld2
{ v15.4h-v16.4h
}, [x15
]
390 ld2
{ v31.2s-v0.2s
}, [sp
]
391 // CHECK
: ld2
{ v0.16
b, v1.16
b }, [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.8
b, v1.8
b }, [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.16
b, v1.16
b, v2.16
b }, [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.8
b, v1.8
b, v2.8
b }, [x0
]
407 ld3
{ v15.4h
, v16.4h
, v17.4h
}, [x15
]
408 ld3
{ v31.2s
, v0.2s
, v1.2s
}, [sp
]
409 // CHECK
: ld3
{ v0.16
b, v1.16
b, v2.16
b }, [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.8
b, v1.8
b, v2.8
b }, [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.16
b }, [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.8
b }, [x0
]
422 ld3
{ v15.4h-v17.4h
}, [x15
]
423 ld3
{ v31.2s-v1.2s
}, [sp
]
424 // CHECK
: ld3
{ v0.16
b, v1.16
b, v2.16
b }, [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.8
b, v1.8
b, v2.8
b }, [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.16
b, v1.16
b, v2.16
b, v3.16
b }, [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.8
b, v1.8
b, v2.8
b, v3.8
b }, [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.16
b, v1.16
b, v2.16
b, v3.16
b }, [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.8
b, v1.8
b, v2.8
b, v3.8
b }, [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.16
b }, [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.8
b }, [x0
]
455 ld4
{ v15.4h-v18.4h
}, [x15
]
456 ld4
{ v31.2s-v2.2s
}, [sp
]
457 // CHECK
: ld4
{ v0.16
b, v1.16
b, v2.16
b, v3.16
b }, [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.8
b, v1.8
b, v2.8
b, v3.8
b }, [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]