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
%s
-o
- > %t.1
2>%t.2
5 // RUN
: FileCheck
--check-prefixes
=ALL
,NOENC
%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
100 // CHECK-NEXT
: paciasp
// encoding
: [0x3f,0x23,0x03,0xd5]
101 // NOENC-NEXT
: paciasp
103 // CHECK-NEXT
: autiasp
// encoding
: [0xbf,0x23,0x03,0xd5]
104 // NOENC-NEXT
: autiasp
106 // CHECK-NEXT
: paciaz
// encoding
: [0x1f,0x23,0x03,0xd5]
107 // NOENC-NEXT
: paciaz
109 // CHECK-NEXT
: autiaz
// encoding
: [0x9f,0x23,0x03,0xd5]
110 // NOENC-NEXT
: autiaz
112 // CHECK-NEXT
: pacia1716
// encoding
: [0x1f,0x21,0x03,0xd5]
113 // NOENC-NEXT
: pacia1716
115 // CHECK-NEXT
: autia1716
// encoding
: [0x9f,0x21,0x03,0xd5]
116 // NOENC-NEXT
: autia1716
118 // CHECK-NEXT
: pacibsp
// encoding
: [0x7f,0x23,0x03,0xd5]
119 // NOENC-NEXT
: pacibsp
121 // CHECK-NEXT
: autibsp
// encoding
: [0xff,0x23,0x03,0xd5]
122 // NOENC-NEXT
: autibsp
124 // CHECK-NEXT
: pacibz
// encoding
: [0x5f,0x23,0x03,0xd5]
125 // NOENC-NEXT
: pacibz
127 // CHECK-NEXT
: autibz
// encoding
: [0xdf,0x23,0x03,0xd5]
128 // NOENC-NEXT
: autibz
130 // CHECK-NEXT
: pacib1716
// encoding
: [0x5f,0x21,0x03,0xd5]
131 // NOENC-NEXT
: pacib1716
133 // CHECK-NEXT
: autib1716
// encoding
: [0xdf,0x21,0x03,0xd5]
134 // NOENC-NEXT
: autib1716
136 // CHECK-NEXT
: xpaclri
// encoding
: [0xff,0x20,0x03,0xd5]
137 // NOENC-NEXT
: xpaclri
141 // CHECK-NEXT
: pacia x0
, x1
// encoding
: [0x20,0x00,0xc1,0xda]
143 // CHECK-REQ-NEXT
: error
: instruction requires
: pa
144 // CHECK-REQ-NEXT
: pacia x0
, x1
146 // CHECK-NEXT
: autia x0
, x1
// encoding
: [0x20,0x10,0xc1,0xda]
147 // CHECK-REQ
: error
: instruction requires
: pa
148 // CHECK-REQ-NEXT
: autia x0
, x1
150 // CHECK-NEXT
: pacda x0
, x1
// encoding
: [0x20,0x08,0xc1,0xda]
151 // CHECK-REQ
: error
: instruction requires
: pa
152 // CHECK-REQ-NEXT
: pacda x0
, x1
154 // CHECK-NEXT
: autda x0
, x1
// encoding
: [0x20,0x18,0xc1,0xda]
155 // CHECK-REQ
: error
: instruction requires
: pa
156 // CHECK-REQ-NEXT
: autda x0
, x1
158 // CHECK-NEXT
: pacib x0
, x1
// encoding
: [0x20,0x04,0xc1,0xda]
159 // CHECK-REQ
: error
: instruction requires
: pa
160 // CHECK-REQ-NEXT
: pacib x0
, x1
162 // CHECK-NEXT
: autib x0
, x1
// encoding
: [0x20,0x14,0xc1,0xda]
163 // CHECK-REQ
: error
: instruction requires
: pa
164 // CHECK-REQ-NEXT
: autib x0
, x1
166 // CHECK-NEXT
: pacdb x0
, x1
// encoding
: [0x20,0x0c,0xc1,0xda]
167 // CHECK-REQ
: error
: instruction requires
: pa
168 // CHECK-REQ-NEXT
: pacdb x0
, x1
170 // CHECK-NEXT
: autdb x0
, x1
// encoding
: [0x20,0x1c,0xc1,0xda]
171 // CHECK-REQ
: error
: instruction requires
: pa
172 // CHECK-REQ-NEXT
: autdb x0
, x1
174 // CHECK-NEXT
: pacga x0
, x1
, x2
// encoding
: [0x20,0x30,0xc2,0x9a]
175 // CHECK-REQ
: error
: instruction requires
: pa
176 // CHECK-REQ-NEXT
: pacga x0
, x1
, x2
178 // CHECK-NEXT
: paciza x0
// encoding
: [0xe0,0x23,0xc1,0xda]
179 // CHECK-REQ
: error
: instruction requires
: pa
180 // CHECK-REQ-NEXT
: paciza x0
182 // CHECK-NEXT
: autiza x0
// encoding
: [0xe0,0x33,0xc1,0xda]
183 // CHECK-REQ
: error
: instruction requires
: pa
184 // CHECK-REQ-NEXT
: autiza x0
186 // CHECK-NEXT
: pacdza x0
// encoding
: [0xe0,0x2b,0xc1,0xda]
187 // CHECK-REQ
: error
: instruction requires
: pa
188 // CHECK-REQ-NEXT
: pacdza x0
190 // CHECK-NEXT
: autdza x0
// encoding
: [0xe0,0x3b,0xc1,0xda]
191 // CHECK-REQ
: error
: instruction requires
: pa
192 // CHECK-REQ-NEXT
: autdza x0
194 // CHECK-NEXT
: pacizb x0
// encoding
: [0xe0,0x27,0xc1,0xda]
195 // CHECK-REQ
: error
: instruction requires
: pa
196 // CHECK-REQ-NEXT
: pacizb x0
198 // CHECK-NEXT
: autizb x0
// encoding
: [0xe0,0x37,0xc1,0xda]
199 // CHECK-REQ
: error
: instruction requires
: pa
200 // CHECK-REQ-NEXT
: autizb x0
202 // CHECK-NEXT
: pacdzb x0
// encoding
: [0xe0,0x2f,0xc1,0xda]
203 // CHECK-REQ
: error
: instruction requires
: pa
204 // CHECK-REQ-NEXT
: pacdzb x0
206 // CHECK-NEXT
: autdzb x0
// encoding
: [0xe0,0x3f,0xc1,0xda]
207 // CHECK-REQ
: error
: instruction requires
: pa
208 // CHECK-REQ-NEXT
: autdzb x0
210 // CHECK-NEXT
: xpaci x0
// encoding
: [0xe0,0x43,0xc1,0xda]
211 // CHECK-REQ
: error
: instruction requires
: pa
212 // CHECK-REQ-NEXT
: xpaci x0
214 // CHECK-NEXT
: xpacd x0
// encoding
: [0xe0,0x47,0xc1,0xda]
215 // CHECK-REQ
: error
: instruction requires
: pa
216 // CHECK-REQ-NEXT
: xpacd x0
220 // CHECK-NEXT
: braa x0
, x1
// encoding
: [0x01,0x08,0x1f,0xd7]
221 // CHECK-REQ
: error
: instruction requires
: pa
222 // CHECK-REQ-NEXT
: braa x0
, x1
224 // CHECK-NEXT
: brab x0
, x1
// encoding
: [0x01,0x0c,0x1f,0xd7]
225 // CHECK-REQ
: error
: instruction requires
: pa
226 // CHECK-REQ-NEXT
: brab x0
, x1
228 // CHECK-NEXT
: blraa x0
, x1
// encoding
: [0x01,0x08,0x3f,0xd7]
229 // CHECK-REQ
: error
: instruction requires
: pa
230 // CHECK-REQ-NEXT
: blraa x0
, x1
232 // CHECK-NEXT
: blrab x0
, x1
// encoding
: [0x01,0x0c,0x3f,0xd7]
233 // CHECK-REQ
: error
: instruction requires
: pa
234 // CHECK-REQ-NEXT
: blrab x0
, x1
238 // CHECK-NEXT
: braaz x0
// encoding
: [0x1f,0x08,0x1f,0xd6]
239 // CHECK-REQ
: error
: instruction requires
: pa
240 // CHECK-REQ-NEXT
: braaz x0
242 // CHECK-NEXT
: brabz x0
// encoding
: [0x1f,0x0c,0x1f,0xd6]
243 // CHECK-REQ
: error
: instruction requires
: pa
244 // CHECK-REQ-NEXT
: brabz x0
246 // CHECK-NEXT
: blraaz x0
// encoding
: [0x1f,0x08,0x3f,0xd6]
247 // CHECK-REQ
: error
: instruction requires
: pa
248 // CHECK-REQ-NEXT
: blraaz x0
250 // CHECK-NEXT
: blrabz x0
// encoding
: [0x1f,0x0c,0x3f,0xd6]
251 // CHECK-REQ
: error
: instruction requires
: pa
252 // CHECK-REQ-NEXT
: blrabz x0
254 // CHECK-NEXT
: retaa
// encoding
: [0xff,0x0b,0x5f,0xd6]
255 // CHECK-REQ
: error
: instruction requires
: pa
256 // CHECK-REQ-NEXT
: retaa
258 // CHECK-NEXT
: retab
// encoding
: [0xff,0x0f,0x5f,0xd6]
259 // CHECK-REQ
: error
: instruction requires
: pa
260 // CHECK-REQ-NEXT
: retab
262 // CHECK-NEXT
: eretaa
// encoding
: [0xff,0x0b,0x9f,0xd6]
263 // CHECK-REQ
: error
: instruction requires
: pa
264 // CHECK-REQ-NEXT
: eretaa
266 // CHECK-NEXT
: eretab
// encoding
: [0xff,0x0f,0x9f,0xd6]
267 // CHECK-REQ
: error
: instruction requires
: pa
268 // CHECK-REQ-NEXT
: eretab
270 // CHECK-NEXT
: ldraa x0
, [x1
, #4088] // encoding: [0x20,0xf4,0x3f,0xf8]
271 // CHECK-REQ
: error
: instruction requires
: pa
272 // CHECK-REQ-NEXT
: ldraa x0
, [x1
, 4088]
273 ldraa x0
, [x1
, -4096]
274 // CHECK-NEXT
: ldraa x0
, [x1
, #-4096] // encoding: [0x20,0x04,0x60,0xf8]
275 // CHECK-REQ
: error
: instruction requires
: pa
276 // CHECK-REQ-NEXT
: ldraa x0
, [x1
, -4096]
278 // CHECK-NEXT
: ldrab x0
, [x1
, #4088] // encoding: [0x20,0xf4,0xbf,0xf8]
279 // CHECK-REQ
: error
: instruction requires
: pa
280 // CHECK-REQ-NEXT
: ldrab x0
, [x1
, 4088]
281 ldrab x0
, [x1
, -4096]
282 // CHECK-NEXT
: ldrab x0
, [x1
, #-4096] // encoding: [0x20,0x04,0xe0,0xf8]
283 // CHECK-REQ
: error
: instruction requires
: pa
284 // CHECK-REQ-NEXT
: ldrab x0
, [x1
, -4096]
285 ldraa x0
, [x1
, 4088]!
286 // CHECK-NEXT
: ldraa x0
, [x1
, #4088]! // encoding: [0x20,0xfc,0x3f,0xf8]
287 // CHECK-REQ
: error
: instruction requires
: pa
288 // CHECK-REQ-NEXT
: ldraa x0
, [x1
, 4088]!
289 ldraa x0
, [x1
, -4096]!
290 // CHECK-NEXT
: ldraa x0
, [x1
, #-4096]! // encoding: [0x20,0x0c,0x60,0xf8]
291 // CHECK-REQ
: error
: instruction requires
: pa
292 // CHECK-REQ-NEXT
: ldraa x0
, [x1
, -4096]!
293 ldrab x0
, [x1
, 4088]!
294 // CHECK-NEXT
: ldrab x0
, [x1
, #4088]! // encoding: [0x20,0xfc,0xbf,0xf8]
295 // CHECK-REQ
: error
: instruction requires
: pa
296 // CHECK-REQ-NEXT
: ldrab x0
, [x1
, 4088]!
297 ldrab x0
, [x1
, -4096]!
298 // CHECK-NEXT
: ldrab x0
, [x1
, #-4096]! // encoding: [0x20,0x0c,0xe0,0xf8]
299 // CHECK-REQ
: error
: instruction requires
: pa
300 // CHECK-REQ-NEXT
: ldrab x0
, [x1
, -4096]!
302 // CHECK-NEXT
: ldraa x0
, [x1
] // encoding
: [0x20,0x04,0x20,0xf8]
303 // CHECK-REQ
: error
: instruction requires
: pa
304 // CHECK-REQ-NEXT
: ldraa x0
, [x1
]
306 // CHECK-NEXT
: ldrab x0
, [x1
] // encoding
: [0x20,0x04,0xa0,0xf8]
307 // CHECK-REQ
: error
: instruction requires
: pa
308 // CHECK-REQ-NEXT
: ldrab x0
, [x1
]