1 // RUN
: llvm-mc
-triple aarch64-none-linux-gnu
-show-encoding
-mattr
=+v8.3
a -o
- %s
2>&1 | \
2 // RUN
: FileCheck
--check-prefixes
=CHECK
,ALL
%s
4 // RUN
: not llvm-mc
-triple aarch64-none-linux-gnu
-show-encoding
%s
-o
- > %t.1
2>%t.2
5 // RUN
: FileCheck
--check-prefixes
=NO83
,ALL
%s
< %t.1
6 // RUN
: FileCheck
--check-prefix
=CHECK-REQ
%s
< %t.2
21 // CHECK-NEXT
: mrs x0
, APIAKeyLo_EL1
// encoding
: [0x00,0x21,0x38,0xd5]
22 // CHECK-NEXT
: mrs x0
, APIAKeyHi_EL1
// encoding
: [0x20,0x21,0x38,0xd5]
23 // CHECK-NEXT
: mrs x0
, APIBKeyLo_EL1
// encoding
: [0x40,0x21,0x38,0xd5]
24 // CHECK-NEXT
: mrs x0
, APIBKeyHi_EL1
// encoding
: [0x60,0x21,0x38,0xd5]
25 // CHECK-NEXT
: mrs x0
, APDAKeyLo_EL1
// encoding
: [0x00,0x22,0x38,0xd5]
26 // CHECK-NEXT
: mrs x0
, APDAKeyHi_EL1
// encoding
: [0x20,0x22,0x38,0xd5]
27 // CHECK-NEXT
: mrs x0
, APDBKeyLo_EL1
// encoding
: [0x40,0x22,0x38,0xd5]
28 // CHECK-NEXT
: mrs x0
, APDBKeyHi_EL1
// encoding
: [0x60,0x22,0x38,0xd5]
29 // CHECK-NEXT
: mrs x0
, APGAKeyLo_EL1
// encoding
: [0x00,0x23,0x38,0xd5]
30 // CHECK-NEXT
: mrs x0
, APGAKeyHi_EL1
// encoding
: [0x20,0x23,0x38,0xd5]
32 // CHECK-REQ
: error
: expected readable system register
33 // CHECK-REQ-NEXT
: mrs x0
, apiakeylo_el1
34 // CHECK-REQ
: error
: expected readable system register
35 // CHECK-REQ-NEXT
: mrs x0
, apiakeyhi_el1
36 // CHECK-REQ
: error
: expected readable system register
37 // CHECK-REQ-NEXT
: mrs x0
, apibkeylo_el1
38 // CHECK-REQ
: error
: expected readable system register
39 // CHECK-REQ-NEXT
: mrs x0
, apibkeyhi_el1
40 // CHECK-REQ
: error
: expected readable system register
41 // CHECK-REQ-NEXT
: mrs x0
, apdakeylo_el1
42 // CHECK-REQ
: error
: expected readable system register
43 // CHECK-REQ-NEXT
: mrs x0
, apdakeyhi_el1
44 // CHECK-REQ
: error
: expected readable system register
45 // CHECK-REQ-NEXT
: mrs x0
, apdbkeylo_el1
46 // CHECK-REQ
: error
: expected readable system register
47 // CHECK-REQ-NEXT
: mrs x0
, apdbkeyhi_el1
48 // CHECK-REQ
: error
: expected readable system register
49 // CHECK-REQ-NEXT
: mrs x0
, apgakeylo_el1
50 // CHECK-REQ
: error
: expected readable system register
51 // CHECK-REQ-NEXT
: mrs x0
, apgakeyhi_el1
65 // CHECK-NEXT
: msr APIAKeyLo_EL1
, x0
// encoding
: [0x00,0x21,0x18,0xd5]
66 // CHECK-NEXT
: msr APIAKeyHi_EL1
, x0
// encoding
: [0x20,0x21,0x18,0xd5]
67 // CHECK-NEXT
: msr APIBKeyLo_EL1
, x0
// encoding
: [0x40,0x21,0x18,0xd5]
68 // CHECK-NEXT
: msr APIBKeyHi_EL1
, x0
// encoding
: [0x60,0x21,0x18,0xd5]
69 // CHECK-NEXT
: msr APDAKeyLo_EL1
, x0
// encoding
: [0x00,0x22,0x18,0xd5]
70 // CHECK-NEXT
: msr APDAKeyHi_EL1
, x0
// encoding
: [0x20,0x22,0x18,0xd5]
71 // CHECK-NEXT
: msr APDBKeyLo_EL1
, x0
// encoding
: [0x40,0x22,0x18,0xd5]
72 // CHECK-NEXT
: msr APDBKeyHi_EL1
, x0
// encoding
: [0x60,0x22,0x18,0xd5]
73 // CHECK-NEXT
: msr APGAKeyLo_EL1
, x0
// encoding
: [0x00,0x23,0x18,0xd5]
74 // CHECK-NEXT
: msr APGAKeyHi_EL1
, x0
// encoding
: [0x20,0x23,0x18,0xd5]
76 // CHECK-REQ
: error
: expected writable system register
or pstate
77 // CHECK-REQ-NEXT
: msr apiakeylo_el1
, x0
78 // CHECK-REQ
: error
: expected writable system register
or pstate
79 // CHECK-REQ-NEXT
: msr apiakeyhi_el1
, x0
80 // CHECK-REQ
: error
: expected writable system register
or pstate
81 // CHECK-REQ-NEXT
: msr apibkeylo_el1
, x0
82 // CHECK-REQ
: error
: expected writable system register
or pstate
83 // CHECK-REQ-NEXT
: msr apibkeyhi_el1
, x0
84 // CHECK-REQ
: error
: expected writable system register
or pstate
85 // CHECK-REQ-NEXT
: msr apdakeylo_el1
, x0
86 // CHECK-REQ
: error
: expected writable system register
or pstate
87 // CHECK-REQ-NEXT
: msr apdakeyhi_el1
, x0
88 // CHECK-REQ
: error
: expected writable system register
or pstate
89 // CHECK-REQ-NEXT
: msr apdbkeylo_el1
, x0
90 // CHECK-REQ
: error
: expected writable system register
or pstate
91 // CHECK-REQ-NEXT
: msr apdbkeyhi_el1
, x0
92 // CHECK-REQ
: error
: expected writable system register
or pstate
93 // CHECK-REQ-NEXT
: msr apgakeylo_el1
, x0
94 // CHECK-REQ
: error
: expected writable system register
or pstate
95 // CHECK-REQ-NEXT
: msr apgakeyhi_el1
, x0
101 // CHECK-NEXT
: xpaclri
// encoding
: [0xff,0x20,0x03,0xd5]
102 // CHECK-NEXT
: xpaclri
// encoding
: [0xff,0x20,0x03,0xd5]
103 // NO83-NEXT
: hint
#7 // encoding: [0xff,0x20,0x03,0xd5]
104 // NO83-NEXT
: hint
#7 // encoding: [0xff,0x20,0x03,0xd5]
107 // CHECK-NEXT
: pacia1716
// encoding
: [0x1f,0x21,0x03,0xd5]
108 // CHECK-NEXT
: pacia1716
// encoding
: [0x1f,0x21,0x03,0xd5]
109 // NO83-NEXT
: hint
#8 // encoding: [0x1f,0x21,0x03,0xd5]
110 // NO83-NEXT
: hint
#8 // encoding: [0x1f,0x21,0x03,0xd5]
113 // CHECK-NEXT
: pacib1716
// encoding
: [0x5f,0x21,0x03,0xd5]
114 // CHECK-NEXT
: pacib1716
// encoding
: [0x5f,0x21,0x03,0xd5]
115 // NO83-NEXT
: hint
#10 // encoding: [0x5f,0x21,0x03,0xd5]
116 // NO83-NEXT
: hint
#10 // encoding: [0x5f,0x21,0x03,0xd5]
119 // CHECK-NEXT
: autia1716
// encoding
: [0x9f,0x21,0x03,0xd5]
120 // CHECK-NEXT
: autia1716
// encoding
: [0x9f,0x21,0x03,0xd5]
121 // NO83-NEXT
: hint
#12 // encoding: [0x9f,0x21,0x03,0xd5]
122 // NO83-NEXT
: hint
#12 // encoding: [0x9f,0x21,0x03,0xd5]
125 // CHECK-NEXT
: autib1716
// encoding
: [0xdf,0x21,0x03,0xd5]
126 // CHECK-NEXT
: autib1716
// encoding
: [0xdf,0x21,0x03,0xd5]
127 // NO83-NEXT
: hint
#14 // encoding: [0xdf,0x21,0x03,0xd5]
128 // NO83-NEXT
: hint
#14 // encoding: [0xdf,0x21,0x03,0xd5]
131 // CHECK-NEXT
: paciaz
// encoding
: [0x1f,0x23,0x03,0xd5]
132 // CHECK-NEXT
: paciaz
// encoding
: [0x1f,0x23,0x03,0xd5]
133 // NO83-NEXT
: hint
#24 // encoding: [0x1f,0x23,0x03,0xd5]
134 // NO83-NEXT
: hint
#24 // encoding: [0x1f,0x23,0x03,0xd5]
137 // CHECK-NEXT
: paciasp
// encoding
: [0x3f,0x23,0x03,0xd5]
138 // CHECK-NEXT
: paciasp
// encoding
: [0x3f,0x23,0x03,0xd5]
139 // NO83-NEXT
: hint
#25 // encoding: [0x3f,0x23,0x03,0xd5]
140 // NO83-NEXT
: hint
#25 // encoding: [0x3f,0x23,0x03,0xd5]
143 // CHECK-NEXT
: pacibz
// encoding
: [0x5f,0x23,0x03,0xd5]
144 // CHECK-NEXT
: pacibz
// encoding
: [0x5f,0x23,0x03,0xd5]
145 // NO83-NEXT
: hint
#26 // encoding: [0x5f,0x23,0x03,0xd5]
146 // NO83-NEXT
: hint
#26 // encoding: [0x5f,0x23,0x03,0xd5]
149 // CHECK-NEXT
: pacibsp
// encoding
: [0x7f,0x23,0x03,0xd5]
150 // CHECK-NEXT
: pacibsp
// encoding
: [0x7f,0x23,0x03,0xd5]
151 // NO83-NEXT
: hint
#27 // encoding: [0x7f,0x23,0x03,0xd5]
152 // NO83-NEXT
: hint
#27 // encoding: [0x7f,0x23,0x03,0xd5]
155 // CHECK-NEXT
: autiaz
// encoding
: [0x9f,0x23,0x03,0xd5]
156 // CHECK-NEXT
: autiaz
// encoding
: [0x9f,0x23,0x03,0xd5]
157 // NO83-NEXT
: hint
#28 // encoding: [0x9f,0x23,0x03,0xd5]
158 // NO83-NEXT
: hint
#28 // encoding: [0x9f,0x23,0x03,0xd5]
161 // CHECK-NEXT
: autiasp
// encoding
: [0xbf,0x23,0x03,0xd5]
162 // CHECK-NEXT
: autiasp
// encoding
: [0xbf,0x23,0x03,0xd5]
163 // NO83-NEXT
: hint
#29 // encoding: [0xbf,0x23,0x03,0xd5]
164 // NO83-NEXT
: hint
#29 // encoding: [0xbf,0x23,0x03,0xd5]
167 // CHECK-NEXT
: autibz
// encoding
: [0xdf,0x23,0x03,0xd5]
168 // CHECK-NEXT
: autibz
// encoding
: [0xdf,0x23,0x03,0xd5]
169 // NO83-NEXT
: hint
#30 // encoding: [0xdf,0x23,0x03,0xd5]
170 // NO83-NEXT
: hint
#30 // encoding: [0xdf,0x23,0x03,0xd5]
173 // CHECK-NEXT
: autibsp
// encoding
: [0xff,0x23,0x03,0xd5]
174 // CHECK-NEXT
: autibsp
// encoding
: [0xff,0x23,0x03,0xd5]
175 // NO83-NEXT
: hint
#31 // encoding: [0xff,0x23,0x03,0xd5]
176 // NO83-NEXT
: hint
#31 // encoding: [0xff,0x23,0x03,0xd5]
180 // CHECK-NEXT
: pacia x0
, x1
// encoding
: [0x20,0x00,0xc1,0xda]
182 // CHECK-REQ-NEXT
: error
: instruction requires
: pa
183 // CHECK-REQ-NEXT
: pacia x0
, x1
185 // CHECK-NEXT
: autia x0
, x1
// encoding
: [0x20,0x10,0xc1,0xda]
186 // CHECK-REQ
: error
: instruction requires
: pa
187 // CHECK-REQ-NEXT
: autia x0
, x1
189 // CHECK-NEXT
: pacda x0
, x1
// encoding
: [0x20,0x08,0xc1,0xda]
190 // CHECK-REQ
: error
: instruction requires
: pa
191 // CHECK-REQ-NEXT
: pacda x0
, x1
193 // CHECK-NEXT
: autda x0
, x1
// encoding
: [0x20,0x18,0xc1,0xda]
194 // CHECK-REQ
: error
: instruction requires
: pa
195 // CHECK-REQ-NEXT
: autda x0
, x1
197 // CHECK-NEXT
: pacib x0
, x1
// encoding
: [0x20,0x04,0xc1,0xda]
198 // CHECK-REQ
: error
: instruction requires
: pa
199 // CHECK-REQ-NEXT
: pacib x0
, x1
201 // CHECK-NEXT
: autib x0
, x1
// encoding
: [0x20,0x14,0xc1,0xda]
202 // CHECK-REQ
: error
: instruction requires
: pa
203 // CHECK-REQ-NEXT
: autib x0
, x1
205 // CHECK-NEXT
: pacdb x0
, x1
// encoding
: [0x20,0x0c,0xc1,0xda]
206 // CHECK-REQ
: error
: instruction requires
: pa
207 // CHECK-REQ-NEXT
: pacdb x0
, x1
209 // CHECK-NEXT
: autdb x0
, x1
// encoding
: [0x20,0x1c,0xc1,0xda]
210 // CHECK-REQ
: error
: instruction requires
: pa
211 // CHECK-REQ-NEXT
: autdb x0
, x1
213 // CHECK-NEXT
: pacga x0
, x1
, x2
// encoding
: [0x20,0x30,0xc2,0x9a]
214 // CHECK-REQ
: error
: instruction requires
: pa
215 // CHECK-REQ-NEXT
: pacga x0
, x1
, x2
217 // CHECK-NEXT
: paciza x0
// encoding
: [0xe0,0x23,0xc1,0xda]
218 // CHECK-REQ
: error
: instruction requires
: pa
219 // CHECK-REQ-NEXT
: paciza x0
221 // CHECK-NEXT
: autiza x0
// encoding
: [0xe0,0x33,0xc1,0xda]
222 // CHECK-REQ
: error
: instruction requires
: pa
223 // CHECK-REQ-NEXT
: autiza x0
225 // CHECK-NEXT
: pacdza x0
// encoding
: [0xe0,0x2b,0xc1,0xda]
226 // CHECK-REQ
: error
: instruction requires
: pa
227 // CHECK-REQ-NEXT
: pacdza x0
229 // CHECK-NEXT
: autdza x0
// encoding
: [0xe0,0x3b,0xc1,0xda]
230 // CHECK-REQ
: error
: instruction requires
: pa
231 // CHECK-REQ-NEXT
: autdza x0
233 // CHECK-NEXT
: pacizb x0
// encoding
: [0xe0,0x27,0xc1,0xda]
234 // CHECK-REQ
: error
: instruction requires
: pa
235 // CHECK-REQ-NEXT
: pacizb x0
237 // CHECK-NEXT
: autizb x0
// encoding
: [0xe0,0x37,0xc1,0xda]
238 // CHECK-REQ
: error
: instruction requires
: pa
239 // CHECK-REQ-NEXT
: autizb x0
241 // CHECK-NEXT
: pacdzb x0
// encoding
: [0xe0,0x2f,0xc1,0xda]
242 // CHECK-REQ
: error
: instruction requires
: pa
243 // CHECK-REQ-NEXT
: pacdzb x0
245 // CHECK-NEXT
: autdzb x0
// encoding
: [0xe0,0x3f,0xc1,0xda]
246 // CHECK-REQ
: error
: instruction requires
: pa
247 // CHECK-REQ-NEXT
: autdzb x0
249 // CHECK-NEXT
: xpaci x0
// encoding
: [0xe0,0x43,0xc1,0xda]
250 // CHECK-REQ
: error
: instruction requires
: pa
251 // CHECK-REQ-NEXT
: xpaci x0
253 // CHECK-NEXT
: xpacd x0
// encoding
: [0xe0,0x47,0xc1,0xda]
254 // CHECK-REQ
: error
: instruction requires
: pa
255 // CHECK-REQ-NEXT
: xpacd x0
259 // CHECK-NEXT
: braa x0
, x1
// encoding
: [0x01,0x08,0x1f,0xd7]
260 // CHECK-REQ
: error
: instruction requires
: pa
261 // CHECK-REQ-NEXT
: braa x0
, x1
263 // CHECK-NEXT
: brab x0
, x1
// encoding
: [0x01,0x0c,0x1f,0xd7]
264 // CHECK-REQ
: error
: instruction requires
: pa
265 // CHECK-REQ-NEXT
: brab x0
, x1
267 // CHECK-NEXT
: blraa x0
, x1
// encoding
: [0x01,0x08,0x3f,0xd7]
268 // CHECK-REQ
: error
: instruction requires
: pa
269 // CHECK-REQ-NEXT
: blraa x0
, x1
271 // CHECK-NEXT
: blrab x0
, x1
// encoding
: [0x01,0x0c,0x3f,0xd7]
272 // CHECK-REQ
: error
: instruction requires
: pa
273 // CHECK-REQ-NEXT
: blrab x0
, x1
277 // CHECK-NEXT
: braaz x0
// encoding
: [0x1f,0x08,0x1f,0xd6]
278 // CHECK-REQ
: error
: instruction requires
: pa
279 // CHECK-REQ-NEXT
: braaz x0
281 // CHECK-NEXT
: brabz x0
// encoding
: [0x1f,0x0c,0x1f,0xd6]
282 // CHECK-REQ
: error
: instruction requires
: pa
283 // CHECK-REQ-NEXT
: brabz x0
285 // CHECK-NEXT
: blraaz x0
// encoding
: [0x1f,0x08,0x3f,0xd6]
286 // CHECK-REQ
: error
: instruction requires
: pa
287 // CHECK-REQ-NEXT
: blraaz x0
289 // CHECK-NEXT
: blrabz x0
// encoding
: [0x1f,0x0c,0x3f,0xd6]
290 // CHECK-REQ
: error
: instruction requires
: pa
291 // CHECK-REQ-NEXT
: blrabz x0
293 // CHECK-NEXT
: retaa
// encoding
: [0xff,0x0b,0x5f,0xd6]
294 // CHECK-REQ
: error
: instruction requires
: pa
295 // CHECK-REQ-NEXT
: retaa
297 // CHECK-NEXT
: retab
// encoding
: [0xff,0x0f,0x5f,0xd6]
298 // CHECK-REQ
: error
: instruction requires
: pa
299 // CHECK-REQ-NEXT
: retab
301 // CHECK-NEXT
: eretaa
// encoding
: [0xff,0x0b,0x9f,0xd6]
302 // CHECK-REQ
: error
: instruction requires
: pa
303 // CHECK-REQ-NEXT
: eretaa
305 // CHECK-NEXT
: eretab
// encoding
: [0xff,0x0f,0x9f,0xd6]
306 // CHECK-REQ
: error
: instruction requires
: pa
307 // CHECK-REQ-NEXT
: eretab
309 // CHECK-NEXT
: ldraa x0
, [x1
, #4088] // encoding: [0x20,0xf4,0x3f,0xf8]
310 // CHECK-REQ
: error
: instruction requires
: pa
311 // CHECK-REQ-NEXT
: ldraa x0
, [x1
, 4088]
312 ldraa x0
, [x1
, -4096]
313 // CHECK-NEXT
: ldraa x0
, [x1
, #-4096] // encoding: [0x20,0x04,0x60,0xf8]
314 // CHECK-REQ
: error
: instruction requires
: pa
315 // CHECK-REQ-NEXT
: ldraa x0
, [x1
, -4096]
317 // CHECK-NEXT
: ldrab x0
, [x1
, #4088] // encoding: [0x20,0xf4,0xbf,0xf8]
318 // CHECK-REQ
: error
: instruction requires
: pa
319 // CHECK-REQ-NEXT
: ldrab x0
, [x1
, 4088]
320 ldrab x0
, [x1
, -4096]
321 // CHECK-NEXT
: ldrab x0
, [x1
, #-4096] // encoding: [0x20,0x04,0xe0,0xf8]
322 // CHECK-REQ
: error
: instruction requires
: pa
323 // CHECK-REQ-NEXT
: ldrab x0
, [x1
, -4096]
324 ldraa x0
, [x1
, 4088]!
325 // CHECK-NEXT
: ldraa x0
, [x1
, #4088]! // encoding: [0x20,0xfc,0x3f,0xf8]
326 // CHECK-REQ
: error
: instruction requires
: pa
327 // CHECK-REQ-NEXT
: ldraa x0
, [x1
, 4088]!
328 ldraa x0
, [x1
, -4096]!
329 // CHECK-NEXT
: ldraa x0
, [x1
, #-4096]! // encoding: [0x20,0x0c,0x60,0xf8]
330 // CHECK-REQ
: error
: instruction requires
: pa
331 // CHECK-REQ-NEXT
: ldraa x0
, [x1
, -4096]!
332 ldrab x0
, [x1
, 4088]!
333 // CHECK-NEXT
: ldrab x0
, [x1
, #4088]! // encoding: [0x20,0xfc,0xbf,0xf8]
334 // CHECK-REQ
: error
: instruction requires
: pa
335 // CHECK-REQ-NEXT
: ldrab x0
, [x1
, 4088]!
336 ldrab x0
, [x1
, -4096]!
337 // CHECK-NEXT
: ldrab x0
, [x1
, #-4096]! // encoding: [0x20,0x0c,0xe0,0xf8]
338 // CHECK-REQ
: error
: instruction requires
: pa
339 // CHECK-REQ-NEXT
: ldrab x0
, [x1
, -4096]!
341 // CHECK-NEXT
: ldraa x0
, [x1
] // encoding
: [0x20,0x04,0x20,0xf8]
342 // CHECK-REQ
: error
: instruction requires
: pa
343 // CHECK-REQ-NEXT
: ldraa x0
, [x1
]
345 // CHECK-NEXT
: ldrab x0
, [x1
] // encoding
: [0x20,0x04,0xa0,0xf8]
346 // CHECK-REQ
: error
: instruction requires
: pa
347 // CHECK-REQ-NEXT
: ldrab x0
, [x1
]
349 // CHECK-NEXT
: ldraa x0
, [x1
, #0]! // encoding: [0x20,0x0c,0x20,0xf8]
350 // CHECK-REQ
: error
: instruction requires
: pa
351 // CHECK-REQ-NEXT
: ldraa x0
, [x1
]!
353 // CHECK-NEXT
: ldrab x0
, [x1
, #0]! // encoding: [0x20,0x0c,0xa0,0xf8]
354 // CHECK-REQ
: error
: instruction requires
: pa
355 // CHECK-REQ-NEXT
: ldrab x0
, [x1
]!
356 ldraa xzr
, [sp
, -4096]!
357 // CHECK-NEXT
: ldraa xzr
, [sp
, #-4096]! // encoding: [0xff,0x0f,0x60,0xf8]
358 // CHECK-REQ
: error
: instruction requires
: pa
359 // CHECK-REQ-NEXT
: ldraa xzr
, [sp
, -4096]!
360 ldrab xzr
, [sp
, -4096]!
361 // CHECK-NEXT
: ldrab xzr
, [sp
, #-4096]! // encoding: [0xff,0x0f,0xe0,0xf8]
362 // CHECK-REQ
: error
: instruction requires
: pa
363 // CHECK-REQ-NEXT
: ldrab xzr
, [sp
, -4096]!