[llvm-readobj] - Simplify stack-sizes.test test case.
[llvm-complete.git] / test / MC / AArch64 / armv8.4a-ldst.s
blob8d05c6acc5fc601657ce98635c96beff5c5b80b3
1 // RUN: llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+v8.4a -o - %s | FileCheck %s
2 // RUN: llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=-v8.4a,+rcpc-immo -o - %s 2>&1 | FileCheck %s
3 // RUN: not llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+v8.4a,-rcpc-immo -o - %s 2>&1 | FileCheck %s --check-prefix=CHECK-NO-V84
4 // RUN: not llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=-v8.4a -o - %s 2>&1 | FileCheck %s --check-prefix=CHECK-NO-V84
5 // RUN: not llvm-mc -triple aarch64-none-linux-gnu -show-encoding -o - %s 2>&1 | FileCheck %s --check-prefix=CHECK-NO-V84
7 //------------------------------------------------------------------------------
8 // Armv8.4-A LDAPR and STLR instructions with immediate offsets
9 //------------------------------------------------------------------------------
11 STLURB WZR, [X10]
12 STLURB W1, [X10]
13 STLURB W1, [X10, #-256]
14 stlurb w2, [x11, #255]
15 STLURB W3, [SP, #-3]
17 //CHECK: stlurb w1, [x10] // encoding: [0x41,0x01,0x00,0x19]
18 //CHECK-NEXT: stlurb w1, [x10, #-256] // encoding: [0x41,0x01,0x10,0x19]
19 //CHECK-NEXT: stlurb w2, [x11, #255] // encoding: [0x62,0xf1,0x0f,0x19]
20 //CHECK-NEXT: stlurb w3, [sp, #-3] // encoding: [0xe3,0xd3,0x1f,0x19]
22 ldapurb wzr, [x12]
23 ldapurb w4, [x12]
24 ldapurb w4, [x12, #-256]
25 LDAPURB W5, [X13, #255]
26 LDAPURB W6, [SP, #-2]
28 //CHECK: ldapurb wzr, [x12] // encoding: [0x9f,0x01,0x40,0x19]
29 //CHECK-NEXT: ldapurb w4, [x12] // encoding: [0x84,0x01,0x40,0x19]
30 //CHECK-NEXT: ldapurb w4, [x12, #-256] // encoding: [0x84,0x01,0x50,0x19]
31 //CHECK-NEXT: ldapurb w5, [x13, #255] // encoding: [0xa5,0xf1,0x4f,0x19]
32 //CHECK-NEXT: ldapurb w6, [sp, #-2] // encoding: [0xe6,0xe3,0x5f,0x19]
34 LDAPURSB W7, [X14]
35 LDAPURSB W7, [X14, #-256]
36 ldapursb w8, [x15, #255]
37 ldapursb w9, [sp, #-1]
39 //CHECK: ldapursb w7, [x14] // encoding: [0xc7,0x01,0xc0,0x19]
40 //CHECK-NEXT: ldapursb w7, [x14, #-256] // encoding: [0xc7,0x01,0xd0,0x19]
41 //CHECK-NEXT: ldapursb w8, [x15, #255] // encoding: [0xe8,0xf1,0xcf,0x19]
42 //CHECK-NEXT: ldapursb w9, [sp, #-1] // encoding: [0xe9,0xf3,0xdf,0x19]
44 LDAPURSB X0, [X16]
45 LDAPURSB X0, [X16, #-256]
46 LDAPURSB X1, [X17, #255]
47 ldapursb x2, [sp, #0]
48 ldapursb x2, [sp]
50 //CHECK: ldapursb x0, [x16] // encoding: [0x00,0x02,0x80,0x19]
51 //CHECK-NEXT: ldapursb x0, [x16, #-256] // encoding: [0x00,0x02,0x90,0x19]
52 //CHECK-NEXT: ldapursb x1, [x17, #255] // encoding: [0x21,0xf2,0x8f,0x19]
53 //CHECK-NEXT: ldapursb x2, [sp] // encoding: [0xe2,0x03,0x80,0x19]
54 //CHECK-NEXT: ldapursb x2, [sp] // encoding: [0xe2,0x03,0x80,0x19]
56 stlurh w10, [x18]
57 stlurh w10, [x18, #-256]
58 STLURH W11, [X19, #255]
59 STLURH W12, [SP, #1]
61 //CHECK: stlurh w10, [x18] // encoding: [0x4a,0x02,0x00,0x59]
62 //CHECK-NEXT: stlurh w10, [x18, #-256] // encoding: [0x4a,0x02,0x10,0x59]
63 //CHECK-NEXT: stlurh w11, [x19, #255] // encoding: [0x6b,0xf2,0x0f,0x59]
64 //CHECK-NEXT: stlurh w12, [sp, #1] // encoding: [0xec,0x13,0x00,0x59]
66 LDAPURH W13, [X20]
67 LDAPURH W13, [X20, #-256]
68 ldapurh w14, [x21, #255]
69 LDAPURH W15, [SP, #2]
71 //CHECK: ldapurh w13, [x20] // encoding: [0x8d,0x02,0x40,0x59]
72 //CHECK-NEXT: ldapurh w13, [x20, #-256] // encoding: [0x8d,0x02,0x50,0x59]
73 //CHECK-NEXT: ldapurh w14, [x21, #255] // encoding: [0xae,0xf2,0x4f,0x59]
74 //CHECK-NEXT: ldapurh w15, [sp, #2] // encoding: [0xef,0x23,0x40,0x59]
76 LDAPURSH W16, [X22]
77 LDAPURSH W16, [X22, #-256]
78 LDAPURSH W17, [X23, #255]
79 ldapursh w18, [sp, #3]
81 //CHECK: ldapursh w16, [x22] // encoding: [0xd0,0x02,0xc0,0x59]
82 //CHECK-NEXT: ldapursh w16, [x22, #-256] // encoding: [0xd0,0x02,0xd0,0x59]
83 //CHECK-NEXT: ldapursh w17, [x23, #255] // encoding: [0xf1,0xf2,0xcf,0x59]
84 //CHECK-NEXT: ldapursh w18, [sp, #3] // encoding: [0xf2,0x33,0xc0,0x59]
86 ldapursh x3, [x24]
87 ldapursh x3, [x24, #-256]
88 LDAPURSH X4, [X25, #255]
89 LDAPURSH X5, [SP, #4]
91 //CHECK: ldapursh x3, [x24] // encoding: [0x03,0x03,0x80,0x59]
92 //CHECK-NEXT: ldapursh x3, [x24, #-256] // encoding: [0x03,0x03,0x90,0x59]
93 //CHECK-NEXT: ldapursh x4, [x25, #255] // encoding: [0x24,0xf3,0x8f,0x59]
94 //CHECK-NEXT: ldapursh x5, [sp, #4] // encoding: [0xe5,0x43,0x80,0x59]
96 STLUR W19, [X26]
97 STLUR W19, [X26, #-256]
98 stlur w20, [x27, #255]
99 STLUR W21, [SP, #5]
101 //CHECK: stlur w19, [x26] // encoding: [0x53,0x03,0x00,0x99]
102 //CHECK-NEXT: stlur w19, [x26, #-256] // encoding: [0x53,0x03,0x10,0x99]
103 //CHECK-NEXT: stlur w20, [x27, #255] // encoding: [0x74,0xf3,0x0f,0x99]
104 //CHECK-NEXT: stlur w21, [sp, #5] // encoding: [0xf5,0x53,0x00,0x99]
106 LDAPUR W22, [X28]
107 LDAPUR W22, [X28, #-256]
108 LDAPUR W23, [X29, #255]
109 ldapur w24, [sp, #6]
111 //CHECK: ldapur w22, [x28] // encoding: [0x96,0x03,0x40,0x99]
112 //CHECK-NEXT: ldapur w22, [x28, #-256] // encoding: [0x96,0x03,0x50,0x99]
113 //CHECK-NEXT: ldapur w23, [x29, #255] // encoding: [0xb7,0xf3,0x4f,0x99]
114 //CHECK-NEXT: ldapur w24, [sp, #6] // encoding: [0xf8,0x63,0x40,0x99]
116 ldapursw x6, [x30]
117 ldapursw x6, [x30, #-256]
118 LDAPURSW X7, [X0, #255]
119 LDAPURSW X8, [SP, #7]
121 //CHECK: ldapursw x6, [x30] // encoding: [0xc6,0x03,0x80,0x99]
122 //CHECK-NEXT: ldapursw x6, [x30, #-256] // encoding: [0xc6,0x03,0x90,0x99]
123 //CHECK-NEXT: ldapursw x7, [x0, #255] // encoding: [0x07,0xf0,0x8f,0x99]
124 //CHECK-NEXT: ldapursw x8, [sp, #7] // encoding: [0xe8,0x73,0x80,0x99]
126 STLUR X9, [X1]
127 STLUR X9, [X1, #-256]
128 stlur x10, [x2, #255]
129 STLUR X11, [SP, #8]
131 //CHECK: stlur x9, [x1] // encoding: [0x29,0x00,0x00,0xd9]
132 //CHECK-NEXT: stlur x9, [x1, #-256] // encoding: [0x29,0x00,0x10,0xd9]
133 //CHECK-NEXT: stlur x10, [x2, #255] // encoding: [0x4a,0xf0,0x0f,0xd9]
134 //CHECK-NEXT: stlur x11, [sp, #8] // encoding: [0xeb,0x83,0x00,0xd9]
136 LDAPUR X12, [X3]
137 LDAPUR X12, [X3, #-256]
138 LDAPUR X13, [X4, #255]
139 ldapur x14, [sp, #9]
141 //CHECK: ldapur x12, [x3] // encoding: [0x6c,0x00,0x40,0xd9]
142 //CHECK-NEXT: ldapur x12, [x3, #-256] // encoding: [0x6c,0x00,0x50,0xd9]
143 //CHECK-NEXT: ldapur x13, [x4, #255] // encoding: [0x8d,0xf0,0x4f,0xd9]
144 //CHECK-NEXT: ldapur x14, [sp, #9] // encoding: [0xee,0x93,0x40,0xd9]
146 //CHECK-NO-V84: error: instruction requires: rcpc-immo
147 //CHECK-NO-V84-NEXT: STLURB WZR, [X10]
148 //CHECK-NO-V84-NEXT: ^
149 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
150 //CHECK-NO-V84-NEXT: STLURB W1, [X10]
151 //CHECK-NO-V84-NEXT: ^
152 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
153 //CHECK-NO-V84-NEXT: STLURB W1, [X10, #-256]
154 //CHECK-NO-V84-NEXT: ^
155 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
156 //CHECK-NO-V84-NEXT: stlurb w2, [x11, #255]
157 //CHECK-NO-V84-NEXT: ^
158 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
159 //CHECK-NO-V84-NEXT: STLURB W3, [SP, #-3]
160 //CHECK-NO-V84-NEXT: ^
161 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
162 //CHECK-NO-V84-NEXT: ldapurb wzr, [x12]
163 //CHECK-NO-V84-NEXT: ^
164 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
165 //CHECK-NO-V84-NEXT: ldapurb w4, [x12]
166 //CHECK-NO-V84-NEXT: ^
167 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
168 //CHECK-NO-V84-NEXT: ldapurb w4, [x12, #-256]
169 //CHECK-NO-V84-NEXT: ^
170 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
171 //CHECK-NO-V84-NEXT: LDAPURB W5, [X13, #255]
172 //CHECK-NO-V84-NEXT: ^
173 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
174 //CHECK-NO-V84-NEXT: LDAPURB W6, [SP, #-2]
175 //CHECK-NO-V84-NEXT: ^
176 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
177 //CHECK-NO-V84-NEXT: LDAPURSB W7, [X14]
178 //CHECK-NO-V84-NEXT: ^
179 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
180 //CHECK-NO-V84-NEXT: LDAPURSB W7, [X14, #-256]
181 //CHECK-NO-V84-NEXT: ^
182 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
183 //CHECK-NO-V84-NEXT: ldapursb w8, [x15, #255]
184 //CHECK-NO-V84-NEXT: ^
185 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
186 //CHECK-NO-V84-NEXT: ldapursb w9, [sp, #-1]
187 //CHECK-NO-V84-NEXT: ^
188 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
189 //CHECK-NO-V84-NEXT: LDAPURSB X0, [X16]
190 //CHECK-NO-V84-NEXT: ^
191 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
192 //CHECK-NO-V84-NEXT: LDAPURSB X0, [X16, #-256]
193 //CHECK-NO-V84-NEXT: ^
194 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
195 //CHECK-NO-V84-NEXT: LDAPURSB X1, [X17, #255]
196 //CHECK-NO-V84-NEXT: ^
197 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
198 //CHECK-NO-V84-NEXT: ldapursb x2, [sp, #0]
199 //CHECK-NO-V84-NEXT: ^
200 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
201 //CHECK-NO-V84-NEXT: ldapursb x2, [sp]
202 //CHECK-NO-V84-NEXT: ^
203 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
204 //CHECK-NO-V84-NEXT: stlurh w10, [x18]
205 //CHECK-NO-V84-NEXT: ^
206 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
207 //CHECK-NO-V84-NEXT: stlurh w10, [x18, #-256]
208 //CHECK-NO-V84-NEXT: ^
209 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
210 //CHECK-NO-V84-NEXT: STLURH W11, [X19, #255]
211 //CHECK-NO-V84-NEXT: ^
212 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
213 //CHECK-NO-V84-NEXT: STLURH W12, [SP, #1]
214 //CHECK-NO-V84-NEXT: ^
215 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
216 //CHECK-NO-V84-NEXT: LDAPURH W13, [X20]
217 //CHECK-NO-V84-NEXT: ^
218 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
219 //CHECK-NO-V84-NEXT: LDAPURH W13, [X20, #-256]
220 //CHECK-NO-V84-NEXT: ^
221 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
222 //CHECK-NO-V84-NEXT: ldapurh w14, [x21, #255]
223 //CHECK-NO-V84-NEXT: ^
224 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
225 //CHECK-NO-V84-NEXT: LDAPURH W15, [SP, #2]
226 //CHECK-NO-V84-NEXT: ^
227 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
228 //CHECK-NO-V84-NEXT: LDAPURSH W16, [X22]
229 //CHECK-NO-V84-NEXT: ^
230 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
231 //CHECK-NO-V84-NEXT: LDAPURSH W16, [X22, #-256]
232 //CHECK-NO-V84-NEXT: ^
233 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
234 //CHECK-NO-V84-NEXT: LDAPURSH W17, [X23, #255]
235 //CHECK-NO-V84-NEXT: ^
236 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
237 //CHECK-NO-V84-NEXT: ldapursh w18, [sp, #3]
238 //CHECK-NO-V84-NEXT: ^
239 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
240 //CHECK-NO-V84-NEXT: ldapursh x3, [x24]
241 //CHECK-NO-V84-NEXT: ^
242 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
243 //CHECK-NO-V84-NEXT: ldapursh x3, [x24, #-256]
244 //CHECK-NO-V84-NEXT: ^
245 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
246 //CHECK-NO-V84-NEXT: LDAPURSH X4, [X25, #255]
247 //CHECK-NO-V84-NEXT: ^
248 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
249 //CHECK-NO-V84-NEXT: LDAPURSH X5, [SP, #4]
250 //CHECK-NO-V84-NEXT: ^
251 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
252 //CHECK-NO-V84-NEXT: STLUR W19, [X26]
253 //CHECK-NO-V84-NEXT: ^
254 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
255 //CHECK-NO-V84-NEXT: STLUR W19, [X26, #-256]
256 //CHECK-NO-V84-NEXT: ^
257 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
258 //CHECK-NO-V84-NEXT: stlur w20, [x27, #255]
259 //CHECK-NO-V84-NEXT: ^
260 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
261 //CHECK-NO-V84-NEXT: STLUR W21, [SP, #5]
262 //CHECK-NO-V84-NEXT: ^
263 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
264 //CHECK-NO-V84-NEXT: LDAPUR W22, [X28]
265 //CHECK-NO-V84-NEXT: ^
266 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
267 //CHECK-NO-V84-NEXT: LDAPUR W22, [X28, #-256]
268 //CHECK-NO-V84-NEXT: ^
269 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
270 //CHECK-NO-V84-NEXT: LDAPUR W23, [X29, #255]
271 //CHECK-NO-V84-NEXT: ^
272 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
273 //CHECK-NO-V84-NEXT: ldapur w24, [sp, #6]
274 //CHECK-NO-V84-NEXT: ^
275 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
276 //CHECK-NO-V84-NEXT: ldapursw x6, [x30]
277 //CHECK-NO-V84-NEXT: ^
278 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
279 //CHECK-NO-V84-NEXT: ldapursw x6, [x30, #-256]
280 //CHECK-NO-V84-NEXT: ^
281 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
282 //CHECK-NO-V84-NEXT: LDAPURSW X7, [X0, #255]
283 //CHECK-NO-V84-NEXT: ^
284 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
285 //CHECK-NO-V84-NEXT: LDAPURSW X8, [SP, #7]
286 //CHECK-NO-V84-NEXT: ^
287 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
288 //CHECK-NO-V84-NEXT: STLUR X9, [X1]
289 //CHECK-NO-V84-NEXT: ^
290 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
291 //CHECK-NO-V84-NEXT: STLUR X9, [X1, #-256]
292 //CHECK-NO-V84-NEXT: ^
293 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
294 //CHECK-NO-V84-NEXT: stlur x10, [x2, #255]
295 //CHECK-NO-V84-NEXT: ^
296 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
297 //CHECK-NO-V84-NEXT: STLUR X11, [SP, #8]
298 //CHECK-NO-V84-NEXT: ^
299 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
300 //CHECK-NO-V84-NEXT: LDAPUR X12, [X3]
301 //CHECK-NO-V84-NEXT: ^
302 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
303 //CHECK-NO-V84-NEXT: LDAPUR X12, [X3, #-256]
304 //CHECK-NO-V84-NEXT: ^
305 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
306 //CHECK-NO-V84-NEXT: LDAPUR X13, [X4, #255]
307 //CHECK-NO-V84-NEXT: ^
308 //CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo
309 //CHECK-NO-V84-NEXT: ldapur x14, [sp, #9]
310 //CHECK-NO-V84-NEXT: ^