[ARM] Better OR's for MVE compares
[llvm-core.git] / test / MC / AArch64 / basic-a64-instructions.s
blob07afdba8c378da9d0c1a5e2062c4215491dae4f5
1 // RUN: llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+fp-armv8 < %s | FileCheck %s
2 .globl _func
4 // Check that the assembler can handle the documented syntax from the ARM ARM.
5 // For complex constructs like shifter operands, check more thoroughly for them
6 // once then spot check that following instructions accept the form generally.
7 // This gives us good coverage while keeping the overall size of the test
8 // more reasonable.
11 _func:
12 // CHECK: _func
14 //------------------------------------------------------------------------------
15 // Add/sub (extended register)
16 //------------------------------------------------------------------------------
17 // Basic extends 64-bit ops
18 add x2, x4, w5, uxtb
19 add x20, sp, w19, uxth
20 add x12, x1, w20, uxtw
21 add x20, x3, x13, uxtx
22 add x17, x25, w20, sxtb
23 add x18, x13, w19, sxth
24 add sp, x2, w3, sxtw
25 add x3, x5, x9, sxtx
26 // CHECK: add x2, x4, w5, uxtb // encoding: [0x82,0x00,0x25,0x8b]
27 // CHECK: add x20, sp, w19, uxth // encoding: [0xf4,0x23,0x33,0x8b]
28 // CHECK: add x12, x1, w20, uxtw // encoding: [0x2c,0x40,0x34,0x8b]
29 // CHECK: add x20, x3, x13, uxtx // encoding: [0x74,0x60,0x2d,0x8b]
30 // CHECK: add x17, x25, w20, sxtb // encoding: [0x31,0x83,0x34,0x8b]
31 // CHECK: add x18, x13, w19, sxth // encoding: [0xb2,0xa1,0x33,0x8b]
32 // CHECK: add sp, x2, w3, sxtw // encoding: [0x5f,0xc0,0x23,0x8b]
33 // CHECK: add x3, x5, x9, sxtx // encoding: [0xa3,0xe0,0x29,0x8b]
35 // Basic extends, 32-bit ops
36 add w2, w5, w7, uxtb
37 add w21, w15, w17, uxth
38 add w30, w29, wzr, uxtw
39 add w19, w17, w1, uxtx // Goodness knows what this means
40 add w2, w5, w1, sxtb
41 add w26, w17, w19, sxth
42 add w0, w2, w3, sxtw
43 add w2, w3, w5, sxtx
44 // CHECK: add w2, w5, w7, uxtb // encoding: [0xa2,0x00,0x27,0x0b]
45 // CHECK: add w21, w15, w17, uxth // encoding: [0xf5,0x21,0x31,0x0b]
46 // CHECK: add w30, w29, wzr, uxtw // encoding: [0xbe,0x43,0x3f,0x0b]
47 // CHECK: add w19, w17, w1, uxtx // encoding: [0x33,0x62,0x21,0x0b]
48 // CHECK: add w2, w5, w1, sxtb // encoding: [0xa2,0x80,0x21,0x0b]
49 // CHECK: add w26, w17, w19, sxth // encoding: [0x3a,0xa2,0x33,0x0b]
50 // CHECK: add w0, w2, w3, sxtw // encoding: [0x40,0xc0,0x23,0x0b]
51 // CHECK: add w2, w3, w5, sxtx // encoding: [0x62,0xe0,0x25,0x0b]
53 // Nonzero shift amounts
54 add x2, x3, w5, sxtb #0
55 add x7, x11, w13, uxth #4
56 add w17, w19, w23, uxtw #2
57 add w29, w23, w17, uxtx #1
58 // CHECK: add x2, x3, w5, sxtb // encoding: [0x62,0x80,0x25,0x8b]
59 // CHECK: add x7, x11, w13, uxth #4 // encoding: [0x67,0x31,0x2d,0x8b]
60 // CHECK: add w17, w19, w23, uxtw #2 // encoding: [0x71,0x4a,0x37,0x0b]
61 // CHECK: add w29, w23, w17, uxtx #1 // encoding: [0xfd,0x66,0x31,0x0b]
63 // Sub
64 sub x2, x4, w5, uxtb #2
65 sub x20, sp, w19, uxth #4
66 sub x12, x1, w20, uxtw
67 sub x20, x3, x13, uxtx #0
68 sub x17, x25, w20, sxtb
69 sub x18, x13, w19, sxth
70 sub sp, x2, w3, sxtw
71 sub x3, x5, x9, sxtx
72 // CHECK: sub x2, x4, w5, uxtb #2 // encoding: [0x82,0x08,0x25,0xcb]
73 // CHECK: sub x20, sp, w19, uxth #4 // encoding: [0xf4,0x33,0x33,0xcb]
74 // CHECK: sub x12, x1, w20, uxtw // encoding: [0x2c,0x40,0x34,0xcb]
75 // CHECK: sub x20, x3, x13, uxtx // encoding: [0x74,0x60,0x2d,0xcb]
76 // CHECK: sub x17, x25, w20, sxtb // encoding: [0x31,0x83,0x34,0xcb]
77 // CHECK: sub x18, x13, w19, sxth // encoding: [0xb2,0xa1,0x33,0xcb]
78 // CHECK: sub sp, x2, w3, sxtw // encoding: [0x5f,0xc0,0x23,0xcb]
79 // CHECK: sub x3, x5, x9, sxtx // encoding: [0xa3,0xe0,0x29,0xcb]
81 sub w2, w5, w7, uxtb
82 sub w21, w15, w17, uxth
83 sub w30, w29, wzr, uxtw
84 sub w19, w17, w1, uxtx // Goodness knows what this means
85 sub w2, w5, w1, sxtb
86 sub w26, wsp, w19, sxth
87 sub wsp, w2, w3, sxtw
88 sub w2, w3, w5, sxtx
89 // CHECK: sub w2, w5, w7, uxtb // encoding: [0xa2,0x00,0x27,0x4b]
90 // CHECK: sub w21, w15, w17, uxth // encoding: [0xf5,0x21,0x31,0x4b]
91 // CHECK: sub w30, w29, wzr, uxtw // encoding: [0xbe,0x43,0x3f,0x4b]
92 // CHECK: sub w19, w17, w1, uxtx // encoding: [0x33,0x62,0x21,0x4b]
93 // CHECK: sub w2, w5, w1, sxtb // encoding: [0xa2,0x80,0x21,0x4b]
94 // CHECK: sub w26, wsp, w19, sxth // encoding: [0xfa,0xa3,0x33,0x4b]
95 // CHECK: sub wsp, w2, w3, sxtw // encoding: [0x5f,0xc0,0x23,0x4b]
96 // CHECK: sub w2, w3, w5, sxtx // encoding: [0x62,0xe0,0x25,0x4b]
98 // Adds
99 adds x2, x4, w5, uxtb #2
100 adds x20, sp, w19, uxth #4
101 adds x12, x1, w20, uxtw
102 adds x20, x3, x13, uxtx #0
103 adds xzr, x25, w20, sxtb #3
104 adds x18, sp, w19, sxth
105 adds xzr, x2, w3, sxtw
106 adds x3, x5, x9, sxtx #2
107 // CHECK: adds x2, x4, w5, uxtb #2 // encoding: [0x82,0x08,0x25,0xab]
108 // CHECK: adds x20, sp, w19, uxth #4 // encoding: [0xf4,0x33,0x33,0xab]
109 // CHECK: adds x12, x1, w20, uxtw // encoding: [0x2c,0x40,0x34,0xab]
110 // CHECK: adds x20, x3, x13, uxtx // encoding: [0x74,0x60,0x2d,0xab]
111 // CHECK: {{adds xzr,|cmn}} x25, w20, sxtb #3 // encoding: [0x3f,0x8f,0x34,0xab]
112 // CHECK: adds x18, sp, w19, sxth // encoding: [0xf2,0xa3,0x33,0xab]
113 // CHECK: {{adds xzr,|cmn}} x2, w3, sxtw // encoding: [0x5f,0xc0,0x23,0xab]
114 // CHECK: adds x3, x5, x9, sxtx #2 // encoding: [0xa3,0xe8,0x29,0xab]
116 adds w2, w5, w7, uxtb
117 adds w21, w15, w17, uxth
118 adds w30, w29, wzr, uxtw
119 adds w19, w17, w1, uxtx // Goodness knows what this means
120 adds w2, w5, w1, sxtb #1
121 adds w26, wsp, w19, sxth
122 adds wzr, w2, w3, sxtw
123 adds w2, w3, w5, sxtx
124 // CHECK: adds w2, w5, w7, uxtb // encoding: [0xa2,0x00,0x27,0x2b]
125 // CHECK: adds w21, w15, w17, uxth // encoding: [0xf5,0x21,0x31,0x2b]
126 // CHECK: adds w30, w29, wzr, uxtw // encoding: [0xbe,0x43,0x3f,0x2b]
127 // CHECK: adds w19, w17, w1, uxtx // encoding: [0x33,0x62,0x21,0x2b]
128 // CHECK: adds w2, w5, w1, sxtb #1 // encoding: [0xa2,0x84,0x21,0x2b]
129 // CHECK: adds w26, wsp, w19, sxth // encoding: [0xfa,0xa3,0x33,0x2b]
130 // CHECK: cmn w2, w3, sxtw // encoding: [0x5f,0xc0,0x23,0x2b]
131 // CHECK: adds w2, w3, w5, sxtx // encoding: [0x62,0xe0,0x25,0x2b]
133 // subs
134 subs x2, x4, w5, uxtb #2
135 subs x20, sp, w19, uxth #4
136 subs x12, x1, w20, uxtw
137 subs x20, x3, x13, uxtx #0
138 subs xzr, x25, w20, sxtb #3
139 subs x18, sp, w19, sxth
140 subs xzr, x2, w3, sxtw
141 subs x3, x5, x9, sxtx #2
142 // CHECK: subs x2, x4, w5, uxtb #2 // encoding: [0x82,0x08,0x25,0xeb]
143 // CHECK: subs x20, sp, w19, uxth #4 // encoding: [0xf4,0x33,0x33,0xeb]
144 // CHECK: subs x12, x1, w20, uxtw // encoding: [0x2c,0x40,0x34,0xeb]
145 // CHECK: subs x20, x3, x13, uxtx // encoding: [0x74,0x60,0x2d,0xeb]
146 // CHECK: {{subs xzr,|cmp}} x25, w20, sxtb #3 // encoding: [0x3f,0x8f,0x34,0xeb]
147 // CHECK: subs x18, sp, w19, sxth // encoding: [0xf2,0xa3,0x33,0xeb]
148 // CHECK: {{subs xzr,|cmp}} x2, w3, sxtw // encoding: [0x5f,0xc0,0x23,0xeb]
149 // CHECK: subs x3, x5, x9, sxtx #2 // encoding: [0xa3,0xe8,0x29,0xeb]
151 subs w2, w5, w7, uxtb
152 subs w21, w15, w17, uxth
153 subs w30, w29, wzr, uxtw
154 subs w19, w17, w1, uxtx // Goodness knows what this means
155 subs w2, w5, w1, sxtb #1
156 subs w26, wsp, w19, sxth
157 subs wzr, w2, w3, sxtw
158 subs w2, w3, w5, sxtx
159 // CHECK: subs w2, w5, w7, uxtb // encoding: [0xa2,0x00,0x27,0x6b]
160 // CHECK: subs w21, w15, w17, uxth // encoding: [0xf5,0x21,0x31,0x6b]
161 // CHECK: subs w30, w29, wzr, uxtw // encoding: [0xbe,0x43,0x3f,0x6b]
162 // CHECK: subs w19, w17, w1, uxtx // encoding: [0x33,0x62,0x21,0x6b]
163 // CHECK: subs w2, w5, w1, sxtb #1 // encoding: [0xa2,0x84,0x21,0x6b]
164 // CHECK: subs w26, wsp, w19, sxth // encoding: [0xfa,0xa3,0x33,0x6b]
165 // CHECK: {{subs wzr,|cmp}} w2, w3, sxtw // encoding: [0x5f,0xc0,0x23,0x6b]
166 // CHECK: subs w2, w3, w5, sxtx // encoding: [0x62,0xe0,0x25,0x6b]
168 // cmp
169 cmp x4, w5, uxtb #2
170 cmp sp, w19, uxth #4
171 cmp x1, w20, uxtw
172 cmp x3, x13, uxtx #0
173 cmp x25, w20, sxtb #3
174 cmp sp, w19, sxth
175 cmp x2, w3, sxtw
176 cmp x5, x9, sxtx #2
177 // CHECK: cmp x4, w5, uxtb #2 // encoding: [0x9f,0x08,0x25,0xeb]
178 // CHECK: cmp sp, w19, uxth #4 // encoding: [0xff,0x33,0x33,0xeb]
179 // CHECK: cmp x1, w20, uxtw // encoding: [0x3f,0x40,0x34,0xeb]
180 // CHECK: cmp x3, x13, uxtx // encoding: [0x7f,0x60,0x2d,0xeb]
181 // CHECK: cmp x25, w20, sxtb #3 // encoding: [0x3f,0x8f,0x34,0xeb]
182 // CHECK: cmp sp, w19, sxth // encoding: [0xff,0xa3,0x33,0xeb]
183 // CHECK: cmp x2, w3, sxtw // encoding: [0x5f,0xc0,0x23,0xeb]
184 // CHECK: cmp x5, x9, sxtx #2 // encoding: [0xbf,0xe8,0x29,0xeb]
186 cmp w5, w7, uxtb
187 cmp w15, w17, uxth
188 cmp w29, wzr, uxtw
189 cmp w17, w1, uxtx // Goodness knows what this means
190 cmp w5, w1, sxtb #1
191 cmp wsp, w19, sxth
192 cmp w2, w3, sxtw
193 cmp w3, w5, sxtx
194 // CHECK: cmp w5, w7, uxtb // encoding: [0xbf,0x00,0x27,0x6b]
195 // CHECK: cmp w15, w17, uxth // encoding: [0xff,0x21,0x31,0x6b]
196 // CHECK: cmp w29, wzr, uxtw // encoding: [0xbf,0x43,0x3f,0x6b]
197 // CHECK: cmp w17, w1, uxtx // encoding: [0x3f,0x62,0x21,0x6b]
198 // CHECK: cmp w5, w1, sxtb #1 // encoding: [0xbf,0x84,0x21,0x6b]
199 // CHECK: cmp wsp, w19, sxth // encoding: [0xff,0xa3,0x33,0x6b]
200 // CHECK: cmp w2, w3, sxtw // encoding: [0x5f,0xc0,0x23,0x6b]
201 // CHECK: cmp w3, w5, sxtx // encoding: [0x7f,0xe0,0x25,0x6b]
204 // cmn
205 cmn x4, w5, uxtb #2
206 cmn sp, w19, uxth #4
207 cmn x1, w20, uxtw
208 cmn x3, x13, uxtx #0
209 cmn x25, w20, sxtb #3
210 cmn sp, w19, sxth
211 cmn x2, w3, sxtw
212 cmn x5, x9, sxtx #2
213 // CHECK: cmn x4, w5, uxtb #2 // encoding: [0x9f,0x08,0x25,0xab]
214 // CHECK: cmn sp, w19, uxth #4 // encoding: [0xff,0x33,0x33,0xab]
215 // CHECK: cmn x1, w20, uxtw // encoding: [0x3f,0x40,0x34,0xab]
216 // CHECK: cmn x3, x13, uxtx // encoding: [0x7f,0x60,0x2d,0xab]
217 // CHECK: cmn x25, w20, sxtb #3 // encoding: [0x3f,0x8f,0x34,0xab]
218 // CHECK: cmn sp, w19, sxth // encoding: [0xff,0xa3,0x33,0xab]
219 // CHECK: cmn x2, w3, sxtw // encoding: [0x5f,0xc0,0x23,0xab]
220 // CHECK: cmn x5, x9, sxtx #2 // encoding: [0xbf,0xe8,0x29,0xab]
222 cmn w5, w7, uxtb
223 cmn w15, w17, uxth
224 cmn w29, wzr, uxtw
225 cmn w17, w1, uxtx // Goodness knows what this means
226 cmn w5, w1, sxtb #1
227 cmn wsp, w19, sxth
228 cmn w2, w3, sxtw
229 cmn w3, w5, sxtx
230 // CHECK: {{cmn|adds wzr,}} w5, w7, uxtb // encoding: [0xbf,0x00,0x27,0x2b]
231 // CHECK: {{cmn|adds wzr,}} w15, w17, uxth // encoding: [0xff,0x21,0x31,0x2b]
232 // CHECK: {{cmn|adds wzr,}} w29, wzr, uxtw // encoding: [0xbf,0x43,0x3f,0x2b]
233 // CHECK: {{cmn|adds wzr,}} w17, w1, uxtx // encoding: [0x3f,0x62,0x21,0x2b]
234 // CHECK: {{cmn|adds wzr,}} w5, w1, sxtb #1 // encoding: [0xbf,0x84,0x21,0x2b]
235 // CHECK: {{cmn|adds wzr,}} wsp, w19, sxth // encoding: [0xff,0xa3,0x33,0x2b]
236 // CHECK: {{cmn|adds wzr,}} w2, w3, sxtw // encoding: [0x5f,0xc0,0x23,0x2b]
237 // CHECK: {{cmn|adds wzr,}} w3, w5, sxtx // encoding: [0x7f,0xe0,0x25,0x2b]
239 // operands for cmp
240 cmp x20, w29, uxtb #3
241 cmp x12, x13, uxtx #4
242 cmp wsp, w1, uxtb
243 cmn wsp, wzr, sxtw
244 // CHECK: cmp x20, w29, uxtb #3 // encoding: [0x9f,0x0e,0x3d,0xeb]
245 // CHECK: cmp x12, x13, uxtx #4 // encoding: [0x9f,0x71,0x2d,0xeb]
246 // CHECK: cmp wsp, w1, uxtb // encoding: [0xff,0x03,0x21,0x6b]
247 // CHECK: {{cmn|adds wzr,}} wsp, wzr, sxtw // encoding: [0xff,0xc3,0x3f,0x2b]
249 // LSL variant if sp involved
250 sub sp, x3, x7, lsl #4
251 add w2, wsp, w3, lsl #1
252 cmp wsp, w9, lsl #0
253 adds wzr, wsp, w3, lsl #4
254 subs x3, sp, x9, lsl #2
255 // CHECK: sub sp, x3, x7, lsl #4 // encoding: [0x7f,0x70,0x27,0xcb]
256 // CHECK: add w2, wsp, w3, lsl #1 // encoding: [0xe2,0x47,0x23,0x0b]
257 // CHECK: cmp wsp, w9 // encoding: [0xff,0x43,0x29,0x6b]
258 // CHECK: cmn wsp, w3, lsl #4 // encoding: [0xff,0x53,0x23,0x2b]
259 // CHECK: subs x3, sp, x9, lsl #2 // encoding: [0xe3,0x6b,0x29,0xeb]
261 //------------------------------------------------------------------------------
262 // Add/sub (immediate)
263 //------------------------------------------------------------------------------
265 // Check basic immediate values: an unsigned 12-bit immediate, optionally
266 // shifted left by 12 bits.
267 add w4, w5, #0x0
268 add w2, w3, #4095
269 add w30, w29, #1, lsl #12
270 add w13, w5, #4095, lsl #12
271 add x5, x7, #1638
272 // CHECK: add w4, w5, #0 // encoding: [0xa4,0x00,0x00,0x11]
273 // CHECK: add w2, w3, #4095 // encoding: [0x62,0xfc,0x3f,0x11]
274 // CHECK: add w30, w29, #1, lsl #12 // encoding: [0xbe,0x07,0x40,0x11]
275 // CHECK: add w13, w5, #4095, lsl #12 // encoding: [0xad,0xfc,0x7f,0x11]
276 // CHECK: add x5, x7, #1638 // encoding: [0xe5,0x98,0x19,0x91]
278 // All registers involved in the non-S variants have 31 encoding sp rather than zr
279 add w20, wsp, #801, lsl #0
280 add wsp, wsp, #1104
281 add wsp, w30, #4084
282 // CHECK: add w20, wsp, #801 // encoding: [0xf4,0x87,0x0c,0x11]
283 // CHECK: add wsp, wsp, #1104 // encoding: [0xff,0x43,0x11,0x11]
284 // CHECK: add wsp, w30, #4084 // encoding: [0xdf,0xd3,0x3f,0x11]
286 // A few checks on the sanity of 64-bit versions
287 add x0, x24, #291
288 add x3, x24, #4095, lsl #12
289 add x8, sp, #1074
290 add sp, x29, #3816
291 // CHECK: add x0, x24, #291 // encoding: [0x00,0x8f,0x04,0x91]
292 // CHECK: add x3, x24, #4095, lsl #12 // encoding: [0x03,0xff,0x7f,0x91]
293 // CHECK: add x8, sp, #1074 // encoding: [0xe8,0xcb,0x10,0x91]
294 // CHECK: add sp, x29, #3816 // encoding: [0xbf,0xa3,0x3b,0x91]
296 // And on sub
297 sub w0, wsp, #4077
298 sub w4, w20, #546, lsl #12
299 sub sp, sp, #288
300 sub wsp, w19, #16
301 // CHECK: sub w0, wsp, #4077 // encoding: [0xe0,0xb7,0x3f,0x51]
302 // CHECK: sub w4, w20, #546, lsl #12 // encoding: [0x84,0x8a,0x48,0x51]
303 // CHECK: sub sp, sp, #288 // encoding: [0xff,0x83,0x04,0xd1]
304 // CHECK: sub wsp, w19, #16 // encoding: [0x7f,0x42,0x00,0x51]
306 // ADDS/SUBS accept zr in the Rd position but sp in the Rn position
307 adds w13, w23, #291, lsl #12
308 adds wzr, w2, #4095 // FIXME: canonically should be cmn
309 adds w20, wsp, #0x0
310 adds xzr, x3, #0x1, lsl #12 // FIXME: canonically should be cmn
311 // CHECK: adds w13, w23, #291, lsl #12 // encoding: [0xed,0x8e,0x44,0x31]
312 // CHECK: {{adds wzr,|cmn}} w2, #4095 // encoding: [0x5f,0xfc,0x3f,0x31]
313 // CHECK: adds w20, wsp, #0 // encoding: [0xf4,0x03,0x00,0x31]
314 // CHECK: {{adds xzr,|cmn}} x3, #1, lsl #12 // encoding: [0x7f,0x04,0x40,0xb1]
316 // Checks for subs
317 subs xzr, sp, #20, lsl #12 // FIXME: canonically should be cmp
318 subs xzr, x30, #4095, lsl #0 // FIXME: canonically should be cmp
319 subs x4, sp, #3822
320 // CHECK: {{subs xzr,|cmp}} sp, #20, lsl #12 // encoding: [0xff,0x53,0x40,0xf1]
321 // CHECK: {{subs xzr,|cmp}} x30, #4095 // encoding: [0xdf,0xff,0x3f,0xf1]
322 // CHECK: subs x4, sp, #3822 // encoding: [0xe4,0xbb,0x3b,0xf1]
324 // cmn is an alias for adds zr, ...
325 cmn w3, #291, lsl #12
326 cmn wsp, #1365, lsl #0
327 cmn sp, #1092, lsl #12
328 // CHECK: cmn w3, #291, lsl #12 // encoding: [0x7f,0x8c,0x44,0x31]
329 // CHECK: cmn wsp, #1365 // encoding: [0xff,0x57,0x15,0x31]
330 // CHECK: cmn sp, #1092, lsl #12 // encoding: [0xff,0x13,0x51,0xb1]
332 // cmp is an alias for subs zr, ... (FIXME: should always disassemble as such too).
333 cmp x4, #300, lsl #12
334 cmp wsp, #500
335 cmp sp, #200, lsl #0
336 // CHECK: cmp x4, #300, lsl #12 // encoding: [0x9f,0xb0,0x44,0xf1]
337 // CHECK: cmp wsp, #500 // encoding: [0xff,0xd3,0x07,0x71]
338 // CHECK: cmp sp, #200 // encoding: [0xff,0x23,0x03,0xf1]
340 // A "MOV" involving sp is encoded in this manner: add Reg, Reg, #0
341 mov sp, x30
342 mov wsp, w20
343 mov x11, sp
344 mov w24, wsp
345 // CHECK: mov sp, x30 // encoding: [0xdf,0x03,0x00,0x91]
346 // CHECK: mov wsp, w20 // encoding: [0x9f,0x02,0x00,0x11]
347 // CHECK: mov x11, sp // encoding: [0xeb,0x03,0x00,0x91]
348 // CHECK: mov w24, wsp // encoding: [0xf8,0x03,0x00,0x11]
350 // A relocation check (default to lo12, which is the only sane relocation anyway really)
351 add x0, x4, #:lo12:var
352 // CHECK: add x0, x4, :lo12:var // encoding: [0x80,0bAAAAAA00,0b00AAAAAA,0x91]
353 // CHECK: // fixup A - offset: 0, value: :lo12:var, kind: fixup_aarch64_add_imm12
355 //------------------------------------------------------------------------------
356 // Add-sub (shifted register)
357 //------------------------------------------------------------------------------
359 // As usual, we don't print the canonical forms of many instructions.
361 add w3, w5, w7
362 add wzr, w3, w5
363 add w20, wzr, w4
364 add w4, w6, wzr
365 // CHECK: add w3, w5, w7 // encoding: [0xa3,0x00,0x07,0x0b]
366 // CHECK: add wzr, w3, w5 // encoding: [0x7f,0x00,0x05,0x0b]
367 // CHECK: add w20, wzr, w4 // encoding: [0xf4,0x03,0x04,0x0b]
368 // CHECK: add w4, w6, wzr // encoding: [0xc4,0x00,0x1f,0x0b]
370 add w11, w13, w15, lsl #0
371 add w9, w3, wzr, lsl #10
372 add w17, w29, w20, lsl #31
373 add w17, w29, w20, lsl #(31-2)
374 // CHECK: add w11, w13, w15 // encoding: [0xab,0x01,0x0f,0x0b]
375 // CHECK: add w9, w3, wzr, lsl #10 // encoding: [0x69,0x28,0x1f,0x0b]
376 // CHECK: add w17, w29, w20, lsl #31 // encoding: [0xb1,0x7f,0x14,0x0b]
377 // CHECK: add w17, w29, w20, lsl #29 // encoding: [0xb1,0x77,0x14,0x0b]
379 add w21, w22, w23, lsr #0
380 add w24, w25, w26, lsr #18
381 add w27, w28, w29, lsr #31
382 add w27, w28, w29, lsr #(31-2)
383 // CHECK: add w21, w22, w23, lsr #0 // encoding: [0xd5,0x02,0x57,0x0b]
384 // CHECK: add w24, w25, w26, lsr #18 // encoding: [0x38,0x4b,0x5a,0x0b]
385 // CHECK: add w27, w28, w29, lsr #31 // encoding: [0x9b,0x7f,0x5d,0x0b]
386 // CHECK: add w27, w28, w29, lsr #29 // encoding: [0x9b,0x77,0x5d,0x0b]
388 add w2, w3, w4, asr #0
389 add w5, w6, w7, asr #21
390 add w8, w9, w10, asr #31
391 add w8, w9, w10, asr #(31-2)
392 // CHECK: add w2, w3, w4, asr #0 // encoding: [0x62,0x00,0x84,0x0b]
393 // CHECK: add w5, w6, w7, asr #21 // encoding: [0xc5,0x54,0x87,0x0b]
394 // CHECK: add w8, w9, w10, asr #31 // encoding: [0x28,0x7d,0x8a,0x0b]
395 // CHECK: add w8, w9, w10, asr #29 // encoding: [0x28,0x75,0x8a,0x0b]
397 add x3, x5, x7
398 add xzr, x3, x5
399 add x20, xzr, x4
400 add x4, x6, xzr
401 // CHECK: add x3, x5, x7 // encoding: [0xa3,0x00,0x07,0x8b]
402 // CHECK: add xzr, x3, x5 // encoding: [0x7f,0x00,0x05,0x8b]
403 // CHECK: add x20, xzr, x4 // encoding: [0xf4,0x03,0x04,0x8b]
404 // CHECK: add x4, x6, xzr // encoding: [0xc4,0x00,0x1f,0x8b]
406 add x11, x13, x15, lsl #0
407 add x9, x3, xzr, lsl #10
408 add x17, x29, x20, lsl #63
409 add x17, x29, x20, lsl #(63-5)
410 // CHECK: add x11, x13, x15 // encoding: [0xab,0x01,0x0f,0x8b]
411 // CHECK: add x9, x3, xzr, lsl #10 // encoding: [0x69,0x28,0x1f,0x8b]
412 // CHECK: add x17, x29, x20, lsl #63 // encoding: [0xb1,0xff,0x14,0x8b]
413 // CHECK: add x17, x29, x20, lsl #58 // encoding: [0xb1,0xeb,0x14,0x8b]
415 add x21, x22, x23, lsr #0
416 add x24, x25, x26, lsr #18
417 add x27, x28, x29, lsr #63
418 add x17, x29, x20, lsr #(63-5)
419 // CHECK: add x21, x22, x23, lsr #0 // encoding: [0xd5,0x02,0x57,0x8b]
420 // CHECK: add x24, x25, x26, lsr #18 // encoding: [0x38,0x4b,0x5a,0x8b]
421 // CHECK: add x27, x28, x29, lsr #63 // encoding: [0x9b,0xff,0x5d,0x8b]
422 // CHECK: add x17, x29, x20, lsr #58 // encoding: [0xb1,0xeb,0x54,0x8b]
424 add x2, x3, x4, asr #0
425 add x5, x6, x7, asr #21
426 add x8, x9, x10, asr #63
427 add x17, x29, x20, asr #(63-5)
428 // CHECK: add x2, x3, x4, asr #0 // encoding: [0x62,0x00,0x84,0x8b]
429 // CHECK: add x5, x6, x7, asr #21 // encoding: [0xc5,0x54,0x87,0x8b]
430 // CHECK: add x8, x9, x10, asr #63 // encoding: [0x28,0xfd,0x8a,0x8b]
431 // CHECK: add x17, x29, x20, asr #58 // encoding: [0xb1,0xeb,0x94,0x8b]
433 adds w3, w5, w7
434 adds wzr, w3, w5
435 adds w20, wzr, w4
436 adds w4, w6, wzr
437 // CHECK: adds w3, w5, w7 // encoding: [0xa3,0x00,0x07,0x2b]
438 // CHECK: {{adds wzr,|cmn}} w3, w5 // encoding: [0x7f,0x00,0x05,0x2b]
439 // CHECK: adds w20, wzr, w4 // encoding: [0xf4,0x03,0x04,0x2b]
440 // CHECK: adds w4, w6, wzr // encoding: [0xc4,0x00,0x1f,0x2b]
442 adds w11, w13, w15, lsl #0
443 adds w9, w3, wzr, lsl #10
444 adds w17, w29, w20, lsl #31
445 // CHECK: adds w11, w13, w15 // encoding: [0xab,0x01,0x0f,0x2b]
446 // CHECK: adds w9, w3, wzr, lsl #10 // encoding: [0x69,0x28,0x1f,0x2b]
447 // CHECK: adds w17, w29, w20, lsl #31 // encoding: [0xb1,0x7f,0x14,0x2b]
449 adds w21, w22, w23, lsr #0
450 adds w24, w25, w26, lsr #18
451 adds w27, w28, w29, lsr #31
452 // CHECK: adds w21, w22, w23, lsr #0 // encoding: [0xd5,0x02,0x57,0x2b]
453 // CHECK: adds w24, w25, w26, lsr #18 // encoding: [0x38,0x4b,0x5a,0x2b]
454 // CHECK: adds w27, w28, w29, lsr #31 // encoding: [0x9b,0x7f,0x5d,0x2b]
456 adds w2, w3, w4, asr #0
457 adds w5, w6, w7, asr #21
458 adds w8, w9, w10, asr #31
459 // CHECK: adds w2, w3, w4, asr #0 // encoding: [0x62,0x00,0x84,0x2b]
460 // CHECK: adds w5, w6, w7, asr #21 // encoding: [0xc5,0x54,0x87,0x2b]
461 // CHECK: adds w8, w9, w10, asr #31 // encoding: [0x28,0x7d,0x8a,0x2b]
463 adds x3, x5, x7
464 adds xzr, x3, x5
465 adds x20, xzr, x4
466 adds x4, x6, xzr
467 // CHECK: adds x3, x5, x7 // encoding: [0xa3,0x00,0x07,0xab]
468 // CHECK: {{adds xzr,|cmn}} x3, x5 // encoding: [0x7f,0x00,0x05,0xab]
469 // CHECK: adds x20, xzr, x4 // encoding: [0xf4,0x03,0x04,0xab]
470 // CHECK: adds x4, x6, xzr // encoding: [0xc4,0x00,0x1f,0xab]
472 adds x11, x13, x15, lsl #0
473 adds x9, x3, xzr, lsl #10
474 adds x17, x29, x20, lsl #63
475 // CHECK: adds x11, x13, x15 // encoding: [0xab,0x01,0x0f,0xab]
476 // CHECK: adds x9, x3, xzr, lsl #10 // encoding: [0x69,0x28,0x1f,0xab]
477 // CHECK: adds x17, x29, x20, lsl #63 // encoding: [0xb1,0xff,0x14,0xab]
479 adds x21, x22, x23, lsr #0
480 adds x24, x25, x26, lsr #18
481 adds x27, x28, x29, lsr #63
482 // CHECK: adds x21, x22, x23, lsr #0 // encoding: [0xd5,0x02,0x57,0xab]
483 // CHECK: adds x24, x25, x26, lsr #18 // encoding: [0x38,0x4b,0x5a,0xab]
484 // CHECK: adds x27, x28, x29, lsr #63 // encoding: [0x9b,0xff,0x5d,0xab]
486 adds x2, x3, x4, asr #0
487 adds x5, x6, x7, asr #21
488 adds x8, x9, x10, asr #63
489 // CHECK: adds x2, x3, x4, asr #0 // encoding: [0x62,0x00,0x84,0xab]
490 // CHECK: adds x5, x6, x7, asr #21 // encoding: [0xc5,0x54,0x87,0xab]
491 // CHECK: adds x8, x9, x10, asr #63 // encoding: [0x28,0xfd,0x8a,0xab]
493 sub w3, w5, w7
494 sub wzr, w3, w5
495 sub w20, wzr, w4
496 sub w4, w6, wzr
497 // CHECK: sub w3, w5, w7 // encoding: [0xa3,0x00,0x07,0x4b]
498 // CHECK: sub wzr, w3, w5 // encoding: [0x7f,0x00,0x05,0x4b]
499 // CHECK: neg w20, w4 // encoding: [0xf4,0x03,0x04,0x4b]
500 // CHECK: sub w4, w6, wzr // encoding: [0xc4,0x00,0x1f,0x4b]
502 sub w11, w13, w15, lsl #0
503 sub w9, w3, wzr, lsl #10
504 sub w17, w29, w20, lsl #31
505 // CHECK: sub w11, w13, w15 // encoding: [0xab,0x01,0x0f,0x4b]
506 // CHECK: sub w9, w3, wzr, lsl #10 // encoding: [0x69,0x28,0x1f,0x4b]
507 // CHECK: sub w17, w29, w20, lsl #31 // encoding: [0xb1,0x7f,0x14,0x4b]
509 sub w21, w22, w23, lsr #0
510 sub w24, w25, w26, lsr #18
511 sub w27, w28, w29, lsr #31
512 // CHECK: sub w21, w22, w23, lsr #0 // encoding: [0xd5,0x02,0x57,0x4b]
513 // CHECK: sub w24, w25, w26, lsr #18 // encoding: [0x38,0x4b,0x5a,0x4b]
514 // CHECK: sub w27, w28, w29, lsr #31 // encoding: [0x9b,0x7f,0x5d,0x4b]
516 sub w2, w3, w4, asr #0
517 sub w5, w6, w7, asr #21
518 sub w8, w9, w10, asr #31
519 // CHECK: sub w2, w3, w4, asr #0 // encoding: [0x62,0x00,0x84,0x4b]
520 // CHECK: sub w5, w6, w7, asr #21 // encoding: [0xc5,0x54,0x87,0x4b]
521 // CHECK: sub w8, w9, w10, asr #31 // encoding: [0x28,0x7d,0x8a,0x4b]
523 sub x3, x5, x7
524 sub xzr, x3, x5
525 sub x20, xzr, x4
526 sub x4, x6, xzr
527 // CHECK: sub x3, x5, x7 // encoding: [0xa3,0x00,0x07,0xcb]
528 // CHECK: sub xzr, x3, x5 // encoding: [0x7f,0x00,0x05,0xcb]
529 // CHECK: neg x20, x4 // encoding: [0xf4,0x03,0x04,0xcb]
530 // CHECK: sub x4, x6, xzr // encoding: [0xc4,0x00,0x1f,0xcb]
532 sub x11, x13, x15, lsl #0
533 sub x9, x3, xzr, lsl #10
534 sub x17, x29, x20, lsl #63
535 // CHECK: sub x11, x13, x15 // encoding: [0xab,0x01,0x0f,0xcb]
536 // CHECK: sub x9, x3, xzr, lsl #10 // encoding: [0x69,0x28,0x1f,0xcb]
537 // CHECK: sub x17, x29, x20, lsl #63 // encoding: [0xb1,0xff,0x14,0xcb]
539 sub x21, x22, x23, lsr #0
540 sub x24, x25, x26, lsr #18
541 sub x27, x28, x29, lsr #63
542 // CHECK: sub x21, x22, x23, lsr #0 // encoding: [0xd5,0x02,0x57,0xcb]
543 // CHECK: sub x24, x25, x26, lsr #18 // encoding: [0x38,0x4b,0x5a,0xcb]
544 // CHECK: sub x27, x28, x29, lsr #63 // encoding: [0x9b,0xff,0x5d,0xcb]
546 sub x2, x3, x4, asr #0
547 sub x5, x6, x7, asr #21
548 sub x8, x9, x10, asr #63
549 // CHECK: sub x2, x3, x4, asr #0 // encoding: [0x62,0x00,0x84,0xcb]
550 // CHECK: sub x5, x6, x7, asr #21 // encoding: [0xc5,0x54,0x87,0xcb]
551 // CHECK: sub x8, x9, x10, asr #63 // encoding: [0x28,0xfd,0x8a,0xcb]
553 subs w3, w5, w7
554 subs wzr, w3, w5
555 subs w20, wzr, w4
556 subs w4, w6, wzr
557 // CHECK: subs w3, w5, w7 // encoding: [0xa3,0x00,0x07,0x6b]
558 // CHECK: {{subs wzr,|cmp}} w3, w5 // encoding: [0x7f,0x00,0x05,0x6b]
559 // CHECK: negs w20, w4 // encoding: [0xf4,0x03,0x04,0x6b]
560 // CHECK: subs w4, w6, wzr // encoding: [0xc4,0x00,0x1f,0x6b]
562 subs w11, w13, w15, lsl #0
563 subs w9, w3, wzr, lsl #10
564 subs w17, w29, w20, lsl #31
565 // CHECK: subs w11, w13, w15 // encoding: [0xab,0x01,0x0f,0x6b]
566 // CHECK: subs w9, w3, wzr, lsl #10 // encoding: [0x69,0x28,0x1f,0x6b]
567 // CHECK: subs w17, w29, w20, lsl #31 // encoding: [0xb1,0x7f,0x14,0x6b]
569 subs w21, w22, w23, lsr #0
570 subs w24, w25, w26, lsr #18
571 subs w27, w28, w29, lsr #31
572 // CHECK: subs w21, w22, w23, lsr #0 // encoding: [0xd5,0x02,0x57,0x6b]
573 // CHECK: subs w24, w25, w26, lsr #18 // encoding: [0x38,0x4b,0x5a,0x6b]
574 // CHECK: subs w27, w28, w29, lsr #31 // encoding: [0x9b,0x7f,0x5d,0x6b]
576 subs w2, w3, w4, asr #0
577 subs w5, w6, w7, asr #21
578 subs w8, w9, w10, asr #31
579 // CHECK: subs w2, w3, w4, asr #0 // encoding: [0x62,0x00,0x84,0x6b]
580 // CHECK: subs w5, w6, w7, asr #21 // encoding: [0xc5,0x54,0x87,0x6b]
581 // CHECK: subs w8, w9, w10, asr #31 // encoding: [0x28,0x7d,0x8a,0x6b]
583 subs x3, x5, x7
584 subs xzr, x3, x5
585 subs x20, xzr, x4
586 subs x4, x6, xzr
587 // CHECK: subs x3, x5, x7 // encoding: [0xa3,0x00,0x07,0xeb]
588 // CHECK: {{subs xzr,|cmp}} x3, x5 // encoding: [0x7f,0x00,0x05,0xeb]
589 // CHECK: negs x20, x4 // encoding: [0xf4,0x03,0x04,0xeb]
590 // CHECK: subs x4, x6, xzr // encoding: [0xc4,0x00,0x1f,0xeb]
592 subs x11, x13, x15, lsl #0
593 subs x9, x3, xzr, lsl #10
594 subs x17, x29, x20, lsl #63
595 // CHECK: subs x11, x13, x15 // encoding: [0xab,0x01,0x0f,0xeb]
596 // CHECK: subs x9, x3, xzr, lsl #10 // encoding: [0x69,0x28,0x1f,0xeb]
597 // CHECK: subs x17, x29, x20, lsl #63 // encoding: [0xb1,0xff,0x14,0xeb]
599 subs x21, x22, x23, lsr #0
600 subs x24, x25, x26, lsr #18
601 subs x27, x28, x29, lsr #63
602 // CHECK: subs x21, x22, x23, lsr #0 // encoding: [0xd5,0x02,0x57,0xeb]
603 // CHECK: subs x24, x25, x26, lsr #18 // encoding: [0x38,0x4b,0x5a,0xeb]
604 // CHECK: subs x27, x28, x29, lsr #63 // encoding: [0x9b,0xff,0x5d,0xeb]
606 subs x2, x3, x4, asr #0
607 subs x5, x6, x7, asr #21
608 subs x8, x9, x10, asr #63
609 // CHECK: subs x2, x3, x4, asr #0 // encoding: [0x62,0x00,0x84,0xeb]
610 // CHECK: subs x5, x6, x7, asr #21 // encoding: [0xc5,0x54,0x87,0xeb]
611 // CHECK: subs x8, x9, x10, asr #63 // encoding: [0x28,0xfd,0x8a,0xeb]
613 cmn w0, w3
614 cmn wzr, w4
615 cmn w5, wzr
616 cmn wsp, w6
617 // CHECK: cmn w0, w3 // encoding: [0x1f,0x00,0x03,0x2b]
618 // CHECK: cmn wzr, w4 // encoding: [0xff,0x03,0x04,0x2b]
619 // CHECK: cmn w5, wzr // encoding: [0xbf,0x00,0x1f,0x2b]
620 // CHECK: cmn wsp, w6 // encoding: [0xff,0x43,0x26,0x2b]
622 cmn w6, w7, lsl #0
623 cmn w8, w9, lsl #15
624 cmn w10, w11, lsl #31
625 // CHECK: cmn w6, w7 // encoding: [0xdf,0x00,0x07,0x2b]
626 // CHECK: cmn w8, w9, lsl #15 // encoding: [0x1f,0x3d,0x09,0x2b]
627 // CHECK: cmn w10, w11, lsl #31 // encoding: [0x5f,0x7d,0x0b,0x2b]
629 cmn w12, w13, lsr #0
630 cmn w14, w15, lsr #21
631 cmn w16, w17, lsr #31
632 // CHECK: cmn w12, w13, lsr #0 // encoding: [0x9f,0x01,0x4d,0x2b]
633 // CHECK: cmn w14, w15, lsr #21 // encoding: [0xdf,0x55,0x4f,0x2b]
634 // CHECK: cmn w16, w17, lsr #31 // encoding: [0x1f,0x7e,0x51,0x2b]
636 cmn w18, w19, asr #0
637 cmn w20, w21, asr #22
638 cmn w22, w23, asr #31
639 // CHECK: cmn w18, w19, asr #0 // encoding: [0x5f,0x02,0x93,0x2b]
640 // CHECK: cmn w20, w21, asr #22 // encoding: [0x9f,0x5a,0x95,0x2b]
641 // CHECK: cmn w22, w23, asr #31 // encoding: [0xdf,0x7e,0x97,0x2b]
643 cmn x0, x3
644 cmn xzr, x4
645 cmn x5, xzr
646 cmn sp, x6
647 // CHECK: cmn x0, x3 // encoding: [0x1f,0x00,0x03,0xab]
648 // CHECK: cmn xzr, x4 // encoding: [0xff,0x03,0x04,0xab]
649 // CHECK: cmn x5, xzr // encoding: [0xbf,0x00,0x1f,0xab]
650 // CHECK: cmn sp, x6 // encoding: [0xff,0x63,0x26,0xab]
652 cmn x6, x7, lsl #0
653 cmn x8, x9, lsl #15
654 cmn x10, x11, lsl #63
655 // CHECK: cmn x6, x7 // encoding: [0xdf,0x00,0x07,0xab]
656 // CHECK: cmn x8, x9, lsl #15 // encoding: [0x1f,0x3d,0x09,0xab]
657 // CHECK: cmn x10, x11, lsl #63 // encoding: [0x5f,0xfd,0x0b,0xab]
659 cmn x12, x13, lsr #0
660 cmn x14, x15, lsr #41
661 cmn x16, x17, lsr #63
662 // CHECK: cmn x12, x13, lsr #0 // encoding: [0x9f,0x01,0x4d,0xab]
663 // CHECK: cmn x14, x15, lsr #41 // encoding: [0xdf,0xa5,0x4f,0xab]
664 // CHECK: cmn x16, x17, lsr #63 // encoding: [0x1f,0xfe,0x51,0xab]
666 cmn x18, x19, asr #0
667 cmn x20, x21, asr #55
668 cmn x22, x23, asr #63
669 // CHECK: cmn x18, x19, asr #0 // encoding: [0x5f,0x02,0x93,0xab]
670 // CHECK: cmn x20, x21, asr #55 // encoding: [0x9f,0xde,0x95,0xab]
671 // CHECK: cmn x22, x23, asr #63 // encoding: [0xdf,0xfe,0x97,0xab]
673 cmp w0, w3
674 cmp wzr, w4
675 cmp w5, wzr
676 cmp wsp, w6
677 // CHECK: cmp w0, w3 // encoding: [0x1f,0x00,0x03,0x6b]
678 // CHECK: cmp wzr, w4 // encoding: [0xff,0x03,0x04,0x6b]
679 // CHECK: cmp w5, wzr // encoding: [0xbf,0x00,0x1f,0x6b]
680 // CHECK: cmp wsp, w6 // encoding: [0xff,0x43,0x26,0x6b]
682 cmp w6, w7, lsl #0
683 cmp w8, w9, lsl #15
684 cmp w10, w11, lsl #31
685 // CHECK: cmp w6, w7 // encoding: [0xdf,0x00,0x07,0x6b]
686 // CHECK: cmp w8, w9, lsl #15 // encoding: [0x1f,0x3d,0x09,0x6b]
687 // CHECK: cmp w10, w11, lsl #31 // encoding: [0x5f,0x7d,0x0b,0x6b]
689 cmp w12, w13, lsr #0
690 cmp w14, w15, lsr #21
691 cmp w16, w17, lsr #31
692 // CHECK: cmp w12, w13, lsr #0 // encoding: [0x9f,0x01,0x4d,0x6b]
693 // CHECK: cmp w14, w15, lsr #21 // encoding: [0xdf,0x55,0x4f,0x6b]
694 // CHECK: cmp w16, w17, lsr #31 // encoding: [0x1f,0x7e,0x51,0x6b]
696 cmp w18, w19, asr #0
697 cmp w20, w21, asr #22
698 cmp w22, w23, asr #31
699 // CHECK: cmp w18, w19, asr #0 // encoding: [0x5f,0x02,0x93,0x6b]
700 // CHECK: cmp w20, w21, asr #22 // encoding: [0x9f,0x5a,0x95,0x6b]
701 // CHECK: cmp w22, w23, asr #31 // encoding: [0xdf,0x7e,0x97,0x6b]
703 cmp x0, x3
704 cmp xzr, x4
705 cmp x5, xzr
706 cmp sp, x6
707 // CHECK: cmp x0, x3 // encoding: [0x1f,0x00,0x03,0xeb]
708 // CHECK: cmp xzr, x4 // encoding: [0xff,0x03,0x04,0xeb]
709 // CHECK: cmp x5, xzr // encoding: [0xbf,0x00,0x1f,0xeb]
710 // CHECK: cmp sp, x6 // encoding: [0xff,0x63,0x26,0xeb]
712 cmp x6, x7, lsl #0
713 cmp x8, x9, lsl #15
714 cmp x10, x11, lsl #63
715 // CHECK: cmp x6, x7 // encoding: [0xdf,0x00,0x07,0xeb]
716 // CHECK: cmp x8, x9, lsl #15 // encoding: [0x1f,0x3d,0x09,0xeb]
717 // CHECK: cmp x10, x11, lsl #63 // encoding: [0x5f,0xfd,0x0b,0xeb]
719 cmp x12, x13, lsr #0
720 cmp x14, x15, lsr #41
721 cmp x16, x17, lsr #63
722 // CHECK: cmp x12, x13, lsr #0 // encoding: [0x9f,0x01,0x4d,0xeb]
723 // CHECK: cmp x14, x15, lsr #41 // encoding: [0xdf,0xa5,0x4f,0xeb]
724 // CHECK: cmp x16, x17, lsr #63 // encoding: [0x1f,0xfe,0x51,0xeb]
726 cmp x18, x19, asr #0
727 cmp x20, x21, asr #55
728 cmp x22, x23, asr #63
729 // CHECK: cmp x18, x19, asr #0 // encoding: [0x5f,0x02,0x93,0xeb]
730 // CHECK: cmp x20, x21, asr #55 // encoding: [0x9f,0xde,0x95,0xeb]
731 // CHECK: cmp x22, x23, asr #63 // encoding: [0xdf,0xfe,0x97,0xeb]
733 neg w29, w30
734 neg w30, wzr
735 neg wzr, w0
736 // CHECK: neg w29, w30 // encoding: [0xfd,0x03,0x1e,0x4b]
737 // CHECK: neg w30, wzr // encoding: [0xfe,0x03,0x1f,0x4b]
738 // CHECK: neg wzr, w0 // encoding: [0xff,0x03,0x00,0x4b]
740 neg w28, w27, lsl #0
741 neg w26, w25, lsl #29
742 neg w24, w23, lsl #31
744 // CHECK: neg w28, w27 // encoding: [0xfc,0x03,0x1b,0x4b]
745 // CHECK: neg w26, w25, lsl #29 // encoding: [0xfa,0x77,0x19,0x4b]
746 // CHECK: neg w24, w23, lsl #31 // encoding: [0xf8,0x7f,0x17,0x4b]
748 neg w22, w21, lsr #0
749 neg w20, w19, lsr #1
750 neg w18, w17, lsr #31
751 // CHECK: neg w22, w21, lsr #0 // encoding: [0xf6,0x03,0x55,0x4b]
752 // CHECK: neg w20, w19, lsr #1 // encoding: [0xf4,0x07,0x53,0x4b]
753 // CHECK: neg w18, w17, lsr #31 // encoding: [0xf2,0x7f,0x51,0x4b]
755 neg w16, w15, asr #0
756 neg w14, w13, asr #12
757 neg w12, w11, asr #31
758 // CHECK: neg w16, w15, asr #0 // encoding: [0xf0,0x03,0x8f,0x4b]
759 // CHECK: neg w14, w13, asr #12 // encoding: [0xee,0x33,0x8d,0x4b]
760 // CHECK: neg w12, w11, asr #31 // encoding: [0xec,0x7f,0x8b,0x4b]
762 neg x29, x30
763 neg x30, xzr
764 neg xzr, x0
765 // CHECK: neg x29, x30 // encoding: [0xfd,0x03,0x1e,0xcb]
766 // CHECK: neg x30, xzr // encoding: [0xfe,0x03,0x1f,0xcb]
767 // CHECK: neg xzr, x0 // encoding: [0xff,0x03,0x00,0xcb]
769 neg x28, x27, lsl #0
770 neg x26, x25, lsl #29
771 neg x24, x23, lsl #31
773 // CHECK: neg x28, x27 // encoding: [0xfc,0x03,0x1b,0xcb]
774 // CHECK: neg x26, x25, lsl #29 // encoding: [0xfa,0x77,0x19,0xcb]
775 // CHECK: neg x24, x23, lsl #31 // encoding: [0xf8,0x7f,0x17,0xcb]
777 neg x22, x21, lsr #0
778 neg x20, x19, lsr #1
779 neg x18, x17, lsr #31
780 // CHECK: neg x22, x21, lsr #0 // encoding: [0xf6,0x03,0x55,0xcb]
781 // CHECK: neg x20, x19, lsr #1 // encoding: [0xf4,0x07,0x53,0xcb]
782 // CHECK: neg x18, x17, lsr #31 // encoding: [0xf2,0x7f,0x51,0xcb]
784 neg x16, x15, asr #0
785 neg x14, x13, asr #12
786 neg x12, x11, asr #31
787 // CHECK: neg x16, x15, asr #0 // encoding: [0xf0,0x03,0x8f,0xcb]
788 // CHECK: neg x14, x13, asr #12 // encoding: [0xee,0x33,0x8d,0xcb]
789 // CHECK: neg x12, x11, asr #31 // encoding: [0xec,0x7f,0x8b,0xcb]
791 negs w29, w30
792 negs w30, wzr
793 negs wzr, w0
794 // CHECK: negs w29, w30 // encoding: [0xfd,0x03,0x1e,0x6b]
795 // CHECK: negs w30, wzr // encoding: [0xfe,0x03,0x1f,0x6b]
796 // CHECK: cmp wzr, w0 // encoding: [0xff,0x03,0x00,0x6b]
798 negs w28, w27, lsl #0
799 negs w26, w25, lsl #29
800 negs w24, w23, lsl #31
802 // CHECK: negs w28, w27 // encoding: [0xfc,0x03,0x1b,0x6b]
803 // CHECK: negs w26, w25, lsl #29 // encoding: [0xfa,0x77,0x19,0x6b]
804 // CHECK: negs w24, w23, lsl #31 // encoding: [0xf8,0x7f,0x17,0x6b]
806 negs w22, w21, lsr #0
807 negs w20, w19, lsr #1
808 negs w18, w17, lsr #31
809 // CHECK: negs w22, w21, lsr #0 // encoding: [0xf6,0x03,0x55,0x6b]
810 // CHECK: negs w20, w19, lsr #1 // encoding: [0xf4,0x07,0x53,0x6b]
811 // CHECK: negs w18, w17, lsr #31 // encoding: [0xf2,0x7f,0x51,0x6b]
813 negs w16, w15, asr #0
814 negs w14, w13, asr #12
815 negs w12, w11, asr #31
816 // CHECK: negs w16, w15, asr #0 // encoding: [0xf0,0x03,0x8f,0x6b]
817 // CHECK: negs w14, w13, asr #12 // encoding: [0xee,0x33,0x8d,0x6b]
818 // CHECK: negs w12, w11, asr #31 // encoding: [0xec,0x7f,0x8b,0x6b]
820 negs x29, x30
821 negs x30, xzr
822 negs xzr, x0
823 // CHECK: negs x29, x30 // encoding: [0xfd,0x03,0x1e,0xeb]
824 // CHECK: negs x30, xzr // encoding: [0xfe,0x03,0x1f,0xeb]
825 // CHECK: cmp xzr, x0 // encoding: [0xff,0x03,0x00,0xeb]
827 negs x28, x27, lsl #0
828 negs x26, x25, lsl #29
829 negs x24, x23, lsl #31
831 // CHECK: negs x28, x27 // encoding: [0xfc,0x03,0x1b,0xeb]
832 // CHECK: negs x26, x25, lsl #29 // encoding: [0xfa,0x77,0x19,0xeb]
833 // CHECK: negs x24, x23, lsl #31 // encoding: [0xf8,0x7f,0x17,0xeb]
835 negs x22, x21, lsr #0
836 negs x20, x19, lsr #1
837 negs x18, x17, lsr #31
838 // CHECK: negs x22, x21, lsr #0 // encoding: [0xf6,0x03,0x55,0xeb]
839 // CHECK: negs x20, x19, lsr #1 // encoding: [0xf4,0x07,0x53,0xeb]
840 // CHECK: negs x18, x17, lsr #31 // encoding: [0xf2,0x7f,0x51,0xeb]
842 negs x16, x15, asr #0
843 negs x14, x13, asr #12
844 negs x12, x11, asr #31
845 // CHECK: negs x16, x15, asr #0 // encoding: [0xf0,0x03,0x8f,0xeb]
846 // CHECK: negs x14, x13, asr #12 // encoding: [0xee,0x33,0x8d,0xeb]
847 // CHECK: negs x12, x11, asr #31 // encoding: [0xec,0x7f,0x8b,0xeb]
849 //------------------------------------------------------------------------------
850 // Add-sub (shifted register)
851 //------------------------------------------------------------------------------
852 adc w29, w27, w25
853 adc wzr, w3, w4
854 adc w9, wzr, w10
855 adc w20, w0, wzr
856 // CHECK: adc w29, w27, w25 // encoding: [0x7d,0x03,0x19,0x1a]
857 // CHECK: adc wzr, w3, w4 // encoding: [0x7f,0x00,0x04,0x1a]
858 // CHECK: adc w9, wzr, w10 // encoding: [0xe9,0x03,0x0a,0x1a]
859 // CHECK: adc w20, w0, wzr // encoding: [0x14,0x00,0x1f,0x1a]
861 adc x29, x27, x25
862 adc xzr, x3, x4
863 adc x9, xzr, x10
864 adc x20, x0, xzr
865 // CHECK: adc x29, x27, x25 // encoding: [0x7d,0x03,0x19,0x9a]
866 // CHECK: adc xzr, x3, x4 // encoding: [0x7f,0x00,0x04,0x9a]
867 // CHECK: adc x9, xzr, x10 // encoding: [0xe9,0x03,0x0a,0x9a]
868 // CHECK: adc x20, x0, xzr // encoding: [0x14,0x00,0x1f,0x9a]
870 adcs w29, w27, w25
871 adcs wzr, w3, w4
872 adcs w9, wzr, w10
873 adcs w20, w0, wzr
874 // CHECK: adcs w29, w27, w25 // encoding: [0x7d,0x03,0x19,0x3a]
875 // CHECK: adcs wzr, w3, w4 // encoding: [0x7f,0x00,0x04,0x3a]
876 // CHECK: adcs w9, wzr, w10 // encoding: [0xe9,0x03,0x0a,0x3a]
877 // CHECK: adcs w20, w0, wzr // encoding: [0x14,0x00,0x1f,0x3a]
879 adcs x29, x27, x25
880 adcs xzr, x3, x4
881 adcs x9, xzr, x10
882 adcs x20, x0, xzr
883 // CHECK: adcs x29, x27, x25 // encoding: [0x7d,0x03,0x19,0xba]
884 // CHECK: adcs xzr, x3, x4 // encoding: [0x7f,0x00,0x04,0xba]
885 // CHECK: adcs x9, xzr, x10 // encoding: [0xe9,0x03,0x0a,0xba]
886 // CHECK: adcs x20, x0, xzr // encoding: [0x14,0x00,0x1f,0xba]
888 sbc w29, w27, w25
889 sbc wzr, w3, w4
890 sbc w9, wzr, w10
891 sbc w20, w0, wzr
892 // CHECK: sbc w29, w27, w25 // encoding: [0x7d,0x03,0x19,0x5a]
893 // CHECK: sbc wzr, w3, w4 // encoding: [0x7f,0x00,0x04,0x5a]
894 // CHECK: ngc w9, w10 // encoding: [0xe9,0x03,0x0a,0x5a]
895 // CHECK: sbc w20, w0, wzr // encoding: [0x14,0x00,0x1f,0x5a]
897 sbc x29, x27, x25
898 sbc xzr, x3, x4
899 sbc x9, xzr, x10
900 sbc x20, x0, xzr
901 // CHECK: sbc x29, x27, x25 // encoding: [0x7d,0x03,0x19,0xda]
902 // CHECK: sbc xzr, x3, x4 // encoding: [0x7f,0x00,0x04,0xda]
903 // CHECK: ngc x9, x10 // encoding: [0xe9,0x03,0x0a,0xda]
904 // CHECK: sbc x20, x0, xzr // encoding: [0x14,0x00,0x1f,0xda]
906 sbcs w29, w27, w25
907 sbcs wzr, w3, w4
908 sbcs w9, wzr, w10
909 sbcs w20, w0, wzr
910 // CHECK: sbcs w29, w27, w25 // encoding: [0x7d,0x03,0x19,0x7a]
911 // CHECK: sbcs wzr, w3, w4 // encoding: [0x7f,0x00,0x04,0x7a]
912 // CHECK: ngcs w9, w10 // encoding: [0xe9,0x03,0x0a,0x7a]
913 // CHECK: sbcs w20, w0, wzr // encoding: [0x14,0x00,0x1f,0x7a]
915 sbcs x29, x27, x25
916 sbcs xzr, x3, x4
917 sbcs x9, xzr, x10
918 sbcs x20, x0, xzr
919 // CHECK: sbcs x29, x27, x25 // encoding: [0x7d,0x03,0x19,0xfa]
920 // CHECK: sbcs xzr, x3, x4 // encoding: [0x7f,0x00,0x04,0xfa]
921 // CHECK: ngcs x9, x10 // encoding: [0xe9,0x03,0x0a,0xfa]
922 // CHECK: sbcs x20, x0, xzr // encoding: [0x14,0x00,0x1f,0xfa]
924 ngc w3, w12
925 ngc wzr, w9
926 ngc w23, wzr
927 // CHECK: ngc w3, w12 // encoding: [0xe3,0x03,0x0c,0x5a]
928 // CHECK: ngc wzr, w9 // encoding: [0xff,0x03,0x09,0x5a]
929 // CHECK: ngc w23, wzr // encoding: [0xf7,0x03,0x1f,0x5a]
931 ngc x29, x30
932 ngc xzr, x0
933 ngc x0, xzr
934 // CHECK: ngc x29, x30 // encoding: [0xfd,0x03,0x1e,0xda]
935 // CHECK: ngc xzr, x0 // encoding: [0xff,0x03,0x00,0xda]
936 // CHECK: ngc x0, xzr // encoding: [0xe0,0x03,0x1f,0xda]
938 ngcs w3, w12
939 ngcs wzr, w9
940 ngcs w23, wzr
941 // CHECK: ngcs w3, w12 // encoding: [0xe3,0x03,0x0c,0x7a]
942 // CHECK: ngcs wzr, w9 // encoding: [0xff,0x03,0x09,0x7a]
943 // CHECK: ngcs w23, wzr // encoding: [0xf7,0x03,0x1f,0x7a]
945 ngcs x29, x30
946 ngcs xzr, x0
947 ngcs x0, xzr
948 // CHECK: ngcs x29, x30 // encoding: [0xfd,0x03,0x1e,0xfa]
949 // CHECK: ngcs xzr, x0 // encoding: [0xff,0x03,0x00,0xfa]
950 // CHECK: ngcs x0, xzr // encoding: [0xe0,0x03,0x1f,0xfa]
952 //------------------------------------------------------------------------------
953 // Bitfield
954 //------------------------------------------------------------------------------
956 sbfm x1, x2, #3, #4
957 sbfm x3, x4, #63, #63
958 sbfm wzr, wzr, #31, #31
959 sbfm w12, w9, #0, #0
961 // CHECK: sbfx x1, x2, #3, #2 // encoding: [0x41,0x10,0x43,0x93]
962 // CHECK: asr x3, x4, #63 // encoding: [0x83,0xfc,0x7f,0x93]
963 // CHECK: asr wzr, wzr, #31 // encoding: [0xff,0x7f,0x1f,0x13]
964 // CHECK: sbfx w12, w9, #0, #1 // encoding: [0x2c,0x01,0x00,0x13]
966 ubfm x4, x5, #12, #10
967 ubfm xzr, x4, #0, #0
968 ubfm x4, xzr, #63, #5
969 ubfm x5, x6, #12, #63
970 // CHECK: ubfiz x4, x5, #52, #11 // encoding: [0xa4,0x28,0x4c,0xd3]
971 // CHECK: ubfx xzr, x4, #0, #1 // encoding: [0x9f,0x00,0x40,0xd3]
972 // CHECK: ubfiz x4, xzr, #1, #6 // encoding: [0xe4,0x17,0x7f,0xd3]
973 // CHECK: lsr x5, x6, #12 // encoding: [0xc5,0xfc,0x4c,0xd3]
975 bfm x4, x5, #12, #10
976 bfm xzr, x4, #0, #0
977 bfm x4, xzr, #63, #5
978 bfm x5, x6, #12, #63
979 // CHECK: bfi x4, x5, #52, #11 // encoding: [0xa4,0x28,0x4c,0xb3]
980 // CHECK: bfxil xzr, x4, #0, #1 // encoding: [0x9f,0x00,0x40,0xb3]
981 // CHECK: bfc x4, #1, #6 // encoding: [0xe4,0x17,0x7f,0xb3]
982 // CHECK: bfxil x5, x6, #12, #52 // encoding: [0xc5,0xfc,0x4c,0xb3]
984 sxtb w1, w2
985 sxtb xzr, w3
986 sxth w9, w10
987 sxth x0, w1
988 sxtw x3, w30
989 // CHECK: sxtb w1, w2 // encoding: [0x41,0x1c,0x00,0x13]
990 // CHECK: sxtb xzr, w3 // encoding: [0x7f,0x1c,0x40,0x93]
991 // CHECK: sxth w9, w10 // encoding: [0x49,0x3d,0x00,0x13]
992 // CHECK: sxth x0, w1 // encoding: [0x20,0x3c,0x40,0x93]
993 // CHECK: sxtw x3, w30 // encoding: [0xc3,0x7f,0x40,0x93]
995 uxtb w1, w2
996 uxtb xzr, w3
997 uxth w9, w10
998 uxth x0, w1
999 // CHECK: uxtb w1, w2 // encoding: [0x41,0x1c,0x00,0x53]
1000 // CHECK: uxtb {{[wx]}}zr, w3 // encoding: [0x7f,0x1c,0x00,0x53]
1001 // CHECK: uxth w9, w10 // encoding: [0x49,0x3d,0x00,0x53]
1002 // CHECK: uxth {{[wx]}}0, w1 // encoding: [0x20,0x3c,0x00,0x53]
1004 asr w3, w2, #0
1005 asr w9, w10, #31
1006 asr x20, x21, #63
1007 asr w1, wzr, #3
1008 // CHECK: asr w3, w2, #0 // encoding: [0x43,0x7c,0x00,0x13]
1009 // CHECK: asr w9, w10, #31 // encoding: [0x49,0x7d,0x1f,0x13]
1010 // CHECK: asr x20, x21, #63 // encoding: [0xb4,0xfe,0x7f,0x93]
1011 // CHECK: asr w1, wzr, #3 // encoding: [0xe1,0x7f,0x03,0x13]
1013 lsr w3, w2, #0
1014 lsr w9, w10, #31
1015 lsr x20, x21, #63
1016 lsr wzr, wzr, #3
1017 // CHECK: lsr w3, w2, #0 // encoding: [0x43,0x7c,0x00,0x53]
1018 // CHECK: lsr w9, w10, #31 // encoding: [0x49,0x7d,0x1f,0x53]
1019 // CHECK: lsr x20, x21, #63 // encoding: [0xb4,0xfe,0x7f,0xd3]
1020 // CHECK: lsr wzr, wzr, #3 // encoding: [0xff,0x7f,0x03,0x53]
1022 lsl w3, w2, #0
1023 lsl w9, w10, #31
1024 lsl x20, x21, #63
1025 lsl w1, wzr, #3
1026 // CHECK: {{lsl|lsr}} w3, w2, #0 // encoding: [0x43,0x7c,0x00,0x53]
1027 // CHECK: lsl w9, w10, #31 // encoding: [0x49,0x01,0x01,0x53]
1028 // CHECK: lsl x20, x21, #63 // encoding: [0xb4,0x02,0x41,0xd3]
1029 // CHECK: lsl w1, wzr, #3 // encoding: [0xe1,0x73,0x1d,0x53]
1031 sbfiz w9, w10, #0, #1
1032 sbfiz x2, x3, #63, #1
1033 sbfiz x19, x20, #0, #64
1034 sbfiz x9, x10, #5, #59
1035 sbfiz w9, w10, #0, #32
1036 sbfiz w11, w12, #31, #1
1037 sbfiz w13, w14, #29, #3
1038 sbfiz xzr, xzr, #10, #11
1039 // CHECK: {{sbfiz|sbfx}} w9, w10, #0, #1 // encoding: [0x49,0x01,0x00,0x13]
1040 // CHECK: sbfiz x2, x3, #63, #1 // encoding: [0x62,0x00,0x41,0x93]
1041 // CHECK: asr x19, x20, #0 // encoding: [0x93,0xfe,0x40,0x93]
1042 // CHECK: sbfiz x9, x10, #5, #59 // encoding: [0x49,0xe9,0x7b,0x93]
1043 // CHECK: asr w9, w10, #0 // encoding: [0x49,0x7d,0x00,0x13]
1044 // CHECK: sbfiz w11, w12, #31, #1 // encoding: [0x8b,0x01,0x01,0x13]
1045 // CHECK: sbfiz w13, w14, #29, #3 // encoding: [0xcd,0x09,0x03,0x13]
1046 // CHECK: sbfiz xzr, xzr, #10, #11 // encoding: [0xff,0x2b,0x76,0x93]
1048 sbfx w9, w10, #0, #1
1049 sbfx x2, x3, #63, #1
1050 sbfx x19, x20, #0, #64
1051 sbfx x9, x10, #5, #59
1052 sbfx w9, w10, #0, #32
1053 sbfx w11, w12, #31, #1
1054 sbfx w13, w14, #29, #3
1055 sbfx xzr, xzr, #10, #11
1056 // CHECK: sbfx w9, w10, #0, #1 // encoding: [0x49,0x01,0x00,0x13]
1057 // CHECK: asr x2, x3, #63 // encoding: [0x62,0xfc,0x7f,0x93]
1058 // CHECK: asr x19, x20, #0 // encoding: [0x93,0xfe,0x40,0x93]
1059 // CHECK: asr x9, x10, #5 // encoding: [0x49,0xfd,0x45,0x93]
1060 // CHECK: asr w9, w10, #0 // encoding: [0x49,0x7d,0x00,0x13]
1061 // CHECK: asr w11, w12, #31 // encoding: [0x8b,0x7d,0x1f,0x13]
1062 // CHECK: asr w13, w14, #29 // encoding: [0xcd,0x7d,0x1d,0x13]
1063 // CHECK: sbfx xzr, xzr, #10, #11 // encoding: [0xff,0x53,0x4a,0x93]
1065 bfi w9, w10, #0, #1
1066 bfi x2, x3, #63, #1
1067 bfi x19, x20, #0, #64
1068 bfi x9, x10, #5, #59
1069 bfi w9, w10, #0, #32
1070 bfi w11, w12, #31, #1
1071 bfi w13, w14, #29, #3
1072 bfi xzr, xzr, #10, #11
1074 // CHECK: bfxil w9, w10, #0, #1 // encoding: [0x49,0x01,0x00,0x33]
1075 // CHECK: bfi x2, x3, #63, #1 // encoding: [0x62,0x00,0x41,0xb3]
1076 // CHECK: bfxil x19, x20, #0, #64 // encoding: [0x93,0xfe,0x40,0xb3]
1077 // CHECK: bfi x9, x10, #5, #59 // encoding: [0x49,0xe9,0x7b,0xb3]
1078 // CHECK: bfxil w9, w10, #0, #32 // encoding: [0x49,0x7d,0x00,0x33]
1079 // CHECK: bfi w11, w12, #31, #1 // encoding: [0x8b,0x01,0x01,0x33]
1080 // CHECK: bfi w13, w14, #29, #3 // encoding: [0xcd,0x09,0x03,0x33]
1081 // CHECK: bfc xzr, #10, #11 // encoding: [0xff,0x2b,0x76,0xb3]
1083 bfxil w9, w10, #0, #1
1084 bfxil x2, x3, #63, #1
1085 bfxil x19, x20, #0, #64
1086 bfxil x9, x10, #5, #59
1087 bfxil w9, w10, #0, #32
1088 bfxil w11, w12, #31, #1
1089 bfxil w13, w14, #29, #3
1090 bfxil xzr, xzr, #10, #11
1091 // CHECK: bfxil w9, w10, #0, #1 // encoding: [0x49,0x01,0x00,0x33]
1092 // CHECK: bfxil x2, x3, #63, #1 // encoding: [0x62,0xfc,0x7f,0xb3]
1093 // CHECK: bfxil x19, x20, #0, #64 // encoding: [0x93,0xfe,0x40,0xb3]
1094 // CHECK: bfxil x9, x10, #5, #59 // encoding: [0x49,0xfd,0x45,0xb3]
1095 // CHECK: bfxil w9, w10, #0, #32 // encoding: [0x49,0x7d,0x00,0x33]
1096 // CHECK: bfxil w11, w12, #31, #1 // encoding: [0x8b,0x7d,0x1f,0x33]
1097 // CHECK: bfxil w13, w14, #29, #3 // encoding: [0xcd,0x7d,0x1d,0x33]
1098 // CHECK: bfxil xzr, xzr, #10, #11 // encoding: [0xff,0x53,0x4a,0xb3]
1100 ubfiz w9, w10, #0, #1
1101 ubfiz x2, x3, #63, #1
1102 ubfiz x19, x20, #0, #64
1103 ubfiz x9, x10, #5, #59
1104 ubfiz w9, w10, #0, #32
1105 ubfiz w11, w12, #31, #1
1106 ubfiz w13, w14, #29, #3
1107 ubfiz xzr, xzr, #10, #11
1109 // CHECK: ubfx w9, w10, #0, #1 // encoding: [0x49,0x01,0x00,0x53]
1110 // CHECK: lsl x2, x3, #63 // encoding: [0x62,0x00,0x41,0xd3]
1111 // CHECK: lsr x19, x20, #0 // encoding: [0x93,0xfe,0x40,0xd3]
1112 // CHECK: lsl x9, x10, #5 // encoding: [0x49,0xe9,0x7b,0xd3]
1113 // CHECK: lsr w9, w10, #0 // encoding: [0x49,0x7d,0x00,0x53]
1114 // CHECK: lsl w11, w12, #31 // encoding: [0x8b,0x01,0x01,0x53]
1115 // CHECK: lsl w13, w14, #29 // encoding: [0xcd,0x09,0x03,0x53]
1116 // CHECK: ubfiz xzr, xzr, #10, #11 // encoding: [0xff,0x2b,0x76,0xd3]
1118 ubfx w9, w10, #0, #1
1119 ubfx x2, x3, #63, #1
1120 ubfx x19, x20, #0, #64
1121 ubfx x9, x10, #5, #59
1122 ubfx w9, w10, #0, #32
1123 ubfx w11, w12, #31, #1
1124 ubfx w13, w14, #29, #3
1125 ubfx xzr, xzr, #10, #11
1127 // CHECK: ubfx w9, w10, #0, #1 // encoding: [0x49,0x01,0x00,0x53]
1128 // CHECK: lsr x2, x3, #63 // encoding: [0x62,0xfc,0x7f,0xd3]
1129 // CHECK: lsr x19, x20, #0 // encoding: [0x93,0xfe,0x40,0xd3]
1130 // CHECK: lsr x9, x10, #5 // encoding: [0x49,0xfd,0x45,0xd3]
1131 // CHECK: lsr w9, w10, #0 // encoding: [0x49,0x7d,0x00,0x53]
1132 // CHECK: lsr w11, w12, #31 // encoding: [0x8b,0x7d,0x1f,0x53]
1133 // CHECK: lsr w13, w14, #29 // encoding: [0xcd,0x7d,0x1d,0x53]
1134 // CHECK: ubfx xzr, xzr, #10, #11 // encoding: [0xff,0x53,0x4a,0xd3]
1136 bfc w3, #0, #32
1137 bfc wzr, #31, #1
1138 bfc x0, #5, #9
1139 bfc xzr, #63, #1
1140 // CHECK: bfc w3, #0, #32 // encoding: [0xe3,0x7f,0x00,0x33]
1141 // CHECK: bfc wzr, #31, #1 // encoding: [0xff,0x03,0x01,0x33]
1142 // CHECK: bfc x0, #5, #9 // encoding: [0xe0,0x23,0x7b,0xb3]
1143 // CHECK: bfc xzr, #63, #1 // encoding: [0xff,0x03,0x41,0xb3]
1145 //------------------------------------------------------------------------------
1146 // Compare & branch (immediate)
1147 //------------------------------------------------------------------------------
1149 cbz w5, lbl
1150 cbz x5, lbl
1151 cbnz x2, lbl
1152 cbnz x26, lbl
1153 // CHECK: cbz w5, lbl // encoding: [0bAAA00101,A,A,0x34]
1154 // CHECK: // fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
1155 // CHECK: cbz x5, lbl // encoding: [0bAAA00101,A,A,0xb4]
1156 // CHECK: // fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
1157 // CHECK: cbnz x2, lbl // encoding: [0bAAA00010,A,A,0xb5]
1158 // CHECK: // fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
1159 // CHECK: cbnz x26, lbl // encoding: [0bAAA11010,A,A,0xb5]
1160 // CHECK: // fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
1162 cbz wzr, lbl
1163 cbnz xzr, lbl
1165 // CHECK: cbz wzr, lbl // encoding: [0bAAA11111,A,A,0x34]
1166 // CHECK: // fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
1167 // CHECK: cbnz xzr, lbl // encoding: [0bAAA11111,A,A,0xb5]
1168 // CHECK: // fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
1170 cbz w5, #0
1171 cbnz x3, #-4
1172 cbz w20, #1048572
1173 cbnz xzr, #-1048576
1174 // CHECK: cbz w5, #0 // encoding: [0x05,0x00,0x00,0x34]
1175 // CHECK: cbnz x3, #-4 // encoding: [0xe3,0xff,0xff,0xb5]
1176 // CHECK: cbz w20, #1048572 // encoding: [0xf4,0xff,0x7f,0x34]
1177 // CHECK: cbnz xzr, #-1048576 // encoding: [0x1f,0x00,0x80,0xb5]
1179 //------------------------------------------------------------------------------
1180 // Conditional branch (immediate)
1181 //------------------------------------------------------------------------------
1183 b.eq lbl
1184 b.ne lbl
1185 b.cs lbl
1186 b.hs lbl
1187 b.lo lbl
1188 b.cc lbl
1189 b.mi lbl
1190 b.pl lbl
1191 b.vs lbl
1192 b.vc lbl
1193 b.hi lbl
1194 b.ls lbl
1195 b.ge lbl
1196 b.lt lbl
1197 b.gt lbl
1198 b.le lbl
1199 b.al lbl
1201 // CHECK: b.eq lbl // encoding: [0bAAA00000,A,A,0x54]
1202 // CHECK: // fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
1203 // CHECK: b.ne lbl // encoding: [0bAAA00001,A,A,0x54]
1204 // CHECK: // fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
1205 // CHECK: b.hs lbl // encoding: [0bAAA00010,A,A,0x54]
1206 // CHECK: // fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
1207 // CHECK: b.hs lbl // encoding: [0bAAA00010,A,A,0x54]
1208 // CHECK: // fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
1209 // CHECK: b.lo lbl // encoding: [0bAAA00011,A,A,0x54]
1210 // CHECK: // fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
1211 // CHECK: b.lo lbl // encoding: [0bAAA00011,A,A,0x54]
1212 // CHECK: // fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
1213 // CHECK: b.mi lbl // encoding: [0bAAA00100,A,A,0x54]
1214 // CHECK: // fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
1215 // CHECK: b.pl lbl // encoding: [0bAAA00101,A,A,0x54]
1216 // CHECK: // fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
1217 // CHECK: b.vs lbl // encoding: [0bAAA00110,A,A,0x54]
1218 // CHECK: // fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
1219 // CHECK: b.vc lbl // encoding: [0bAAA00111,A,A,0x54]
1220 // CHECK: // fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
1221 // CHECK: b.hi lbl // encoding: [0bAAA01000,A,A,0x54]
1222 // CHECK: // fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
1223 // CHECK: b.ls lbl // encoding: [0bAAA01001,A,A,0x54]
1224 // CHECK: // fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
1225 // CHECK: b.ge lbl // encoding: [0bAAA01010,A,A,0x54]
1226 // CHECK: // fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
1227 // CHECK: b.lt lbl // encoding: [0bAAA01011,A,A,0x54]
1228 // CHECK: // fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
1229 // CHECK: b.gt lbl // encoding: [0bAAA01100,A,A,0x54]
1230 // CHECK: // fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
1231 // CHECK: b.le lbl // encoding: [0bAAA01101,A,A,0x54]
1232 // CHECK: // fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
1233 // CHECK: b.al lbl // encoding: [0bAAA01110,A,A,0x54]
1234 // CHECK: // fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
1236 // ARM64 has these in a separate file
1237 beq lbl
1238 bne lbl
1239 bcs lbl
1240 bhs lbl
1241 blo lbl
1242 bcc lbl
1243 bmi lbl
1244 bpl lbl
1245 bvs lbl
1246 bvc lbl
1247 bhi lbl
1248 bls lbl
1249 bge lbl
1250 blt lbl
1251 bgt lbl
1252 ble lbl
1253 bal lbl
1255 b.eq #0
1256 b.lt #-4
1257 b.cc #1048572
1258 // CHECK: b.eq #0 // encoding: [0x00,0x00,0x00,0x54]
1259 // CHECK: b.lt #-4 // encoding: [0xeb,0xff,0xff,0x54]
1260 // CHECK: b.lo #1048572 // encoding: [0xe3,0xff,0x7f,0x54]
1262 //------------------------------------------------------------------------------
1263 // Conditional compare (immediate)
1264 //------------------------------------------------------------------------------
1266 ccmp w1, #31, #0, eq
1267 ccmp w3, #0, #15, hs
1268 ccmp wzr, #15, #13, cs
1269 // CHECK: ccmp w1, #31, #0, eq // encoding: [0x20,0x08,0x5f,0x7a]
1270 // CHECK: ccmp w3, #0, #15, hs // encoding: [0x6f,0x28,0x40,0x7a]
1271 // CHECK: ccmp wzr, #15, #13, hs // encoding: [0xed,0x2b,0x4f,0x7a]
1273 ccmp x9, #31, #0, le
1274 ccmp x3, #0, #15, gt
1275 ccmp xzr, #5, #7, ne
1276 // CHECK: ccmp x9, #31, #0, le // encoding: [0x20,0xd9,0x5f,0xfa]
1277 // CHECK: ccmp x3, #0, #15, gt // encoding: [0x6f,0xc8,0x40,0xfa]
1278 // CHECK: ccmp xzr, #5, #7, ne // encoding: [0xe7,0x1b,0x45,0xfa]
1280 ccmn w1, #31, #0, eq
1281 ccmn w3, #0, #15, hs
1282 ccmn wzr, #15, #13, cs
1283 // CHECK: ccmn w1, #31, #0, eq // encoding: [0x20,0x08,0x5f,0x3a]
1284 // CHECK: ccmn w3, #0, #15, hs // encoding: [0x6f,0x28,0x40,0x3a]
1285 // CHECK: ccmn wzr, #15, #13, hs // encoding: [0xed,0x2b,0x4f,0x3a]
1287 ccmn x9, #31, #0, le
1288 ccmn x3, #0, #15, gt
1289 ccmn xzr, #5, #7, ne
1290 // CHECK: ccmn x9, #31, #0, le // encoding: [0x20,0xd9,0x5f,0xba]
1291 // CHECK: ccmn x3, #0, #15, gt // encoding: [0x6f,0xc8,0x40,0xba]
1292 // CHECK: ccmn xzr, #5, #7, ne // encoding: [0xe7,0x1b,0x45,0xba]
1294 //------------------------------------------------------------------------------
1295 // Conditional compare (register)
1296 //------------------------------------------------------------------------------
1298 ccmp w1, wzr, #0, eq
1299 ccmp w3, w0, #15, hs
1300 ccmp wzr, w15, #13, cs
1301 // CHECK: ccmp w1, wzr, #0, eq // encoding: [0x20,0x00,0x5f,0x7a]
1302 // CHECK: ccmp w3, w0, #15, hs // encoding: [0x6f,0x20,0x40,0x7a]
1303 // CHECK: ccmp wzr, w15, #13, hs // encoding: [0xed,0x23,0x4f,0x7a]
1305 ccmp x9, xzr, #0, le
1306 ccmp x3, x0, #15, gt
1307 ccmp xzr, x5, #7, ne
1308 // CHECK: ccmp x9, xzr, #0, le // encoding: [0x20,0xd1,0x5f,0xfa]
1309 // CHECK: ccmp x3, x0, #15, gt // encoding: [0x6f,0xc0,0x40,0xfa]
1310 // CHECK: ccmp xzr, x5, #7, ne // encoding: [0xe7,0x13,0x45,0xfa]
1312 ccmn w1, wzr, #0, eq
1313 ccmn w3, w0, #15, hs
1314 ccmn wzr, w15, #13, cs
1315 // CHECK: ccmn w1, wzr, #0, eq // encoding: [0x20,0x00,0x5f,0x3a]
1316 // CHECK: ccmn w3, w0, #15, hs // encoding: [0x6f,0x20,0x40,0x3a]
1317 // CHECK: ccmn wzr, w15, #13, hs // encoding: [0xed,0x23,0x4f,0x3a]
1319 ccmn x9, xzr, #0, le
1320 ccmn x3, x0, #15, gt
1321 ccmn xzr, x5, #7, ne
1322 // CHECK: ccmn x9, xzr, #0, le // encoding: [0x20,0xd1,0x5f,0xba]
1323 // CHECK: ccmn x3, x0, #15, gt // encoding: [0x6f,0xc0,0x40,0xba]
1324 // CHECK: ccmn xzr, x5, #7, ne // encoding: [0xe7,0x13,0x45,0xba]
1326 //------------------------------------------------------------------------------
1327 // Conditional select
1328 //------------------------------------------------------------------------------
1329 csel w1, w0, w19, ne
1330 csel wzr, w5, w9, eq
1331 csel w9, wzr, w30, gt
1332 csel w1, w28, wzr, mi
1333 // CHECK: csel w1, w0, w19, ne // encoding: [0x01,0x10,0x93,0x1a]
1334 // CHECK: csel wzr, w5, w9, eq // encoding: [0xbf,0x00,0x89,0x1a]
1335 // CHECK: csel w9, wzr, w30, gt // encoding: [0xe9,0xc3,0x9e,0x1a]
1336 // CHECK: csel w1, w28, wzr, mi // encoding: [0x81,0x43,0x9f,0x1a]
1338 csel x19, x23, x29, lt
1339 csel xzr, x3, x4, ge
1340 csel x5, xzr, x6, cs
1341 csel x7, x8, xzr, cc
1342 // CHECK: csel x19, x23, x29, lt // encoding: [0xf3,0xb2,0x9d,0x9a]
1343 // CHECK: csel xzr, x3, x4, ge // encoding: [0x7f,0xa0,0x84,0x9a]
1344 // CHECK: csel x5, xzr, x6, hs // encoding: [0xe5,0x23,0x86,0x9a]
1345 // CHECK: csel x7, x8, xzr, lo // encoding: [0x07,0x31,0x9f,0x9a]
1347 csinc w1, w0, w19, ne
1348 csinc wzr, w5, w9, eq
1349 csinc w9, wzr, w30, gt
1350 csinc w1, w28, wzr, mi
1351 // CHECK: csinc w1, w0, w19, ne // encoding: [0x01,0x14,0x93,0x1a]
1352 // CHECK: csinc wzr, w5, w9, eq // encoding: [0xbf,0x04,0x89,0x1a]
1353 // CHECK: csinc w9, wzr, w30, gt // encoding: [0xe9,0xc7,0x9e,0x1a]
1354 // CHECK: csinc w1, w28, wzr, mi // encoding: [0x81,0x47,0x9f,0x1a]
1356 csinc x19, x23, x29, lt
1357 csinc xzr, x3, x4, ge
1358 csinc x5, xzr, x6, cs
1359 csinc x7, x8, xzr, cc
1360 // CHECK: csinc x19, x23, x29, lt // encoding: [0xf3,0xb6,0x9d,0x9a]
1361 // CHECK: csinc xzr, x3, x4, ge // encoding: [0x7f,0xa4,0x84,0x9a]
1362 // CHECK: csinc x5, xzr, x6, hs // encoding: [0xe5,0x27,0x86,0x9a]
1363 // CHECK: csinc x7, x8, xzr, lo // encoding: [0x07,0x35,0x9f,0x9a]
1365 csinv w1, w0, w19, ne
1366 csinv wzr, w5, w9, eq
1367 csinv w9, wzr, w30, gt
1368 csinv w1, w28, wzr, mi
1369 // CHECK: csinv w1, w0, w19, ne // encoding: [0x01,0x10,0x93,0x5a]
1370 // CHECK: csinv wzr, w5, w9, eq // encoding: [0xbf,0x00,0x89,0x5a]
1371 // CHECK: csinv w9, wzr, w30, gt // encoding: [0xe9,0xc3,0x9e,0x5a]
1372 // CHECK: csinv w1, w28, wzr, mi // encoding: [0x81,0x43,0x9f,0x5a]
1374 csinv x19, x23, x29, lt
1375 csinv xzr, x3, x4, ge
1376 csinv x5, xzr, x6, cs
1377 csinv x7, x8, xzr, cc
1378 // CHECK: csinv x19, x23, x29, lt // encoding: [0xf3,0xb2,0x9d,0xda]
1379 // CHECK: csinv xzr, x3, x4, ge // encoding: [0x7f,0xa0,0x84,0xda]
1380 // CHECK: csinv x5, xzr, x6, hs // encoding: [0xe5,0x23,0x86,0xda]
1381 // CHECK: csinv x7, x8, xzr, lo // encoding: [0x07,0x31,0x9f,0xda]
1383 csneg w1, w0, w19, ne
1384 csneg wzr, w5, w9, eq
1385 csneg w9, wzr, w30, gt
1386 csneg w1, w28, wzr, mi
1387 // CHECK: csneg w1, w0, w19, ne // encoding: [0x01,0x14,0x93,0x5a]
1388 // CHECK: csneg wzr, w5, w9, eq // encoding: [0xbf,0x04,0x89,0x5a]
1389 // CHECK: csneg w9, wzr, w30, gt // encoding: [0xe9,0xc7,0x9e,0x5a]
1390 // CHECK: csneg w1, w28, wzr, mi // encoding: [0x81,0x47,0x9f,0x5a]
1392 csneg x19, x23, x29, lt
1393 csneg xzr, x3, x4, ge
1394 csneg x5, xzr, x6, cs
1395 csneg x7, x8, xzr, cc
1396 // CHECK: csneg x19, x23, x29, lt // encoding: [0xf3,0xb6,0x9d,0xda]
1397 // CHECK: csneg xzr, x3, x4, ge // encoding: [0x7f,0xa4,0x84,0xda]
1398 // CHECK: csneg x5, xzr, x6, hs // encoding: [0xe5,0x27,0x86,0xda]
1399 // CHECK: csneg x7, x8, xzr, lo // encoding: [0x07,0x35,0x9f,0xda]
1401 cset w3, eq
1402 cset x9, pl
1403 // CHECK: cset w3, eq // encoding: [0xe3,0x17,0x9f,0x1a]
1404 // CHECK: cset x9, pl // encoding: [0xe9,0x47,0x9f,0x9a]
1406 csetm w20, ne
1407 csetm x30, ge
1408 // CHECK: csetm w20, ne // encoding: [0xf4,0x03,0x9f,0x5a]
1409 // CHECK: csetm x30, ge // encoding: [0xfe,0xb3,0x9f,0xda]
1411 cinc w3, w5, gt
1412 cinc wzr, w4, le
1413 cinc w9, wzr, lt
1414 // CHECK: cinc w3, w5, gt // encoding: [0xa3,0xd4,0x85,0x1a]
1415 // CHECK: cinc wzr, w4, le // encoding: [0x9f,0xc4,0x84,0x1a]
1416 // CHECK: cset w9, lt // encoding: [0xe9,0xa7,0x9f,0x1a]
1418 cinc x3, x5, gt
1419 cinc xzr, x4, le
1420 cinc x9, xzr, lt
1421 // CHECK: cinc x3, x5, gt // encoding: [0xa3,0xd4,0x85,0x9a]
1422 // CHECK: cinc xzr, x4, le // encoding: [0x9f,0xc4,0x84,0x9a]
1423 // CHECK: cset x9, lt // encoding: [0xe9,0xa7,0x9f,0x9a]
1425 cinv w3, w5, gt
1426 cinv wzr, w4, le
1427 cinv w9, wzr, lt
1428 // CHECK: cinv w3, w5, gt // encoding: [0xa3,0xd0,0x85,0x5a]
1429 // CHECK: cinv wzr, w4, le // encoding: [0x9f,0xc0,0x84,0x5a]
1430 // CHECK: csetm w9, lt // encoding: [0xe9,0xa3,0x9f,0x5a]
1432 cinv x3, x5, gt
1433 cinv xzr, x4, le
1434 cinv x9, xzr, lt
1435 // CHECK: cinv x3, x5, gt // encoding: [0xa3,0xd0,0x85,0xda]
1436 // CHECK: cinv xzr, x4, le // encoding: [0x9f,0xc0,0x84,0xda]
1437 // CHECK: csetm x9, lt // encoding: [0xe9,0xa3,0x9f,0xda]
1439 cneg w3, w5, gt
1440 cneg wzr, w4, le
1441 cneg w9, wzr, lt
1442 // CHECK: cneg w3, w5, gt // encoding: [0xa3,0xd4,0x85,0x5a]
1443 // CHECK: cneg wzr, w4, le // encoding: [0x9f,0xc4,0x84,0x5a]
1444 // CHECK: cneg w9, wzr, lt // encoding: [0xe9,0xa7,0x9f,0x5a]
1446 cneg x3, x5, gt
1447 cneg xzr, x4, le
1448 cneg x9, xzr, lt
1449 // CHECK: cneg x3, x5, gt // encoding: [0xa3,0xd4,0x85,0xda]
1450 // CHECK: cneg xzr, x4, le // encoding: [0x9f,0xc4,0x84,0xda]
1451 // CHECK: cneg x9, xzr, lt // encoding: [0xe9,0xa7,0x9f,0xda]
1453 //------------------------------------------------------------------------------
1454 // Data-processing (1 source)
1455 //------------------------------------------------------------------------------
1457 rbit w0, w7
1458 rbit x18, x3
1459 rev16 w17, w1
1460 rev16 x5, x2
1461 rev w18, w0
1462 rev32 x20, x1
1463 rev32 x20, xzr
1464 // CHECK: rbit w0, w7 // encoding: [0xe0,0x00,0xc0,0x5a]
1465 // CHECK: rbit x18, x3 // encoding: [0x72,0x00,0xc0,0xda]
1466 // CHECK: rev16 w17, w1 // encoding: [0x31,0x04,0xc0,0x5a]
1467 // CHECK: rev16 x5, x2 // encoding: [0x45,0x04,0xc0,0xda]
1468 // CHECK: rev w18, w0 // encoding: [0x12,0x08,0xc0,0x5a]
1469 // CHECK: rev32 x20, x1 // encoding: [0x34,0x08,0xc0,0xda]
1470 // CHECK: rev32 x20, xzr // encoding: [0xf4,0x0b,0xc0,0xda]
1472 rev x22, x2
1473 rev x18, xzr
1474 rev w7, wzr
1475 clz w24, w3
1476 clz x26, x4
1477 cls w3, w5
1478 cls x20, x5
1479 // CHECK: rev x22, x2 // encoding: [0x56,0x0c,0xc0,0xda]
1480 // CHECK: rev x18, xzr // encoding: [0xf2,0x0f,0xc0,0xda]
1481 // CHECK: rev w7, wzr // encoding: [0xe7,0x0b,0xc0,0x5a]
1482 // CHECK: clz w24, w3 // encoding: [0x78,0x10,0xc0,0x5a]
1483 // CHECK: clz x26, x4 // encoding: [0x9a,0x10,0xc0,0xda]
1484 // CHECK: cls w3, w5 // encoding: [0xa3,0x14,0xc0,0x5a]
1485 // CHECK: cls x20, x5 // encoding: [0xb4,0x14,0xc0,0xda]
1487 clz w24, wzr
1488 rev x22, xzr
1489 // CHECK: clz w24, wzr // encoding: [0xf8,0x13,0xc0,0x5a]
1490 // CHECK: rev x22, xzr // encoding: [0xf6,0x0f,0xc0,0xda]
1492 rev64 x13, x12
1493 // CHECK: rev x13, x12 // encoding: [0x8d,0x0d,0xc0,0xda]
1495 //------------------------------------------------------------------------------
1496 // Data-processing (2 source)
1497 //------------------------------------------------------------------------------
1499 udiv w0, w7, w10
1500 udiv x9, x22, x4
1501 sdiv w12, w21, w0
1502 sdiv x13, x2, x1
1503 lslv w11, w12, w13
1504 lslv x14, x15, x16
1505 lsrv w17, w18, w19
1506 lsrv x20, x21, x22
1507 asrv w23, w24, w25
1508 asrv x26, x27, x28
1509 rorv w0, w1, w2
1510 rorv x3, x4, x5
1513 // CHECK: udiv w0, w7, w10 // encoding: [0xe0,0x08,0xca,0x1a]
1514 // CHECK: udiv x9, x22, x4 // encoding: [0xc9,0x0a,0xc4,0x9a]
1515 // CHECK: sdiv w12, w21, w0 // encoding: [0xac,0x0e,0xc0,0x1a]
1516 // CHECK: sdiv x13, x2, x1 // encoding: [0x4d,0x0c,0xc1,0x9a]
1517 // CHECK: lsl w11, w12, w13 // encoding: [0x8b,0x21,0xcd,0x1a]
1518 // CHECK: lsl x14, x15, x16 // encoding: [0xee,0x21,0xd0,0x9a]
1519 // CHECK: lsr w17, w18, w19 // encoding: [0x51,0x26,0xd3,0x1a]
1520 // CHECK: lsr x20, x21, x22 // encoding: [0xb4,0x26,0xd6,0x9a]
1521 // CHECK: asr w23, w24, w25 // encoding: [0x17,0x2b,0xd9,0x1a]
1522 // CHECK: asr x26, x27, x28 // encoding: [0x7a,0x2b,0xdc,0x9a]
1523 // CHECK: ror w0, w1, w2 // encoding: [0x20,0x2c,0xc2,0x1a]
1524 // CHECK: ror x3, x4, x5 // encoding: [0x83,0x2c,0xc5,0x9a]
1527 lsl w6, w7, w8
1528 lsl x9, x10, x11
1529 lsr w12, w13, w14
1530 lsr x15, x16, x17
1531 asr w18, w19, w20
1532 asr x21, x22, x23
1533 ror w24, w25, w26
1534 ror x27, x28, x29
1535 // CHECK: lsl w6, w7, w8 // encoding: [0xe6,0x20,0xc8,0x1a]
1536 // CHECK: lsl x9, x10, x11 // encoding: [0x49,0x21,0xcb,0x9a]
1537 // CHECK: lsr w12, w13, w14 // encoding: [0xac,0x25,0xce,0x1a]
1538 // CHECK: lsr x15, x16, x17 // encoding: [0x0f,0x26,0xd1,0x9a]
1539 // CHECK: asr w18, w19, w20 // encoding: [0x72,0x2a,0xd4,0x1a]
1540 // CHECK: asr x21, x22, x23 // encoding: [0xd5,0x2a,0xd7,0x9a]
1541 // CHECK: ror w24, w25, w26 // encoding: [0x38,0x2f,0xda,0x1a]
1542 // CHECK: ror x27, x28, x29 // encoding: [0x9b,0x2f,0xdd,0x9a]
1544 madd w1, w3, w7, w4
1545 madd wzr, w0, w9, w11
1546 madd w13, wzr, w4, w4
1547 madd w19, w30, wzr, w29
1548 madd w4, w5, w6, wzr
1549 // CHECK: madd w1, w3, w7, w4 // encoding: [0x61,0x10,0x07,0x1b]
1550 // CHECK: madd wzr, w0, w9, w11 // encoding: [0x1f,0x2c,0x09,0x1b]
1551 // CHECK: madd w13, wzr, w4, w4 // encoding: [0xed,0x13,0x04,0x1b]
1552 // CHECK: madd w19, w30, wzr, w29 // encoding: [0xd3,0x77,0x1f,0x1b]
1553 // CHECK: mul w4, w5, w6 // encoding: [0xa4,0x7c,0x06,0x1b]
1555 madd x1, x3, x7, x4
1556 madd xzr, x0, x9, x11
1557 madd x13, xzr, x4, x4
1558 madd x19, x30, xzr, x29
1559 madd x4, x5, x6, xzr
1560 // CHECK: madd x1, x3, x7, x4 // encoding: [0x61,0x10,0x07,0x9b]
1561 // CHECK: madd xzr, x0, x9, x11 // encoding: [0x1f,0x2c,0x09,0x9b]
1562 // CHECK: madd x13, xzr, x4, x4 // encoding: [0xed,0x13,0x04,0x9b]
1563 // CHECK: madd x19, x30, xzr, x29 // encoding: [0xd3,0x77,0x1f,0x9b]
1564 // CHECK: mul x4, x5, x6 // encoding: [0xa4,0x7c,0x06,0x9b]
1566 msub w1, w3, w7, w4
1567 msub wzr, w0, w9, w11
1568 msub w13, wzr, w4, w4
1569 msub w19, w30, wzr, w29
1570 msub w4, w5, w6, wzr
1571 // CHECK: msub w1, w3, w7, w4 // encoding: [0x61,0x90,0x07,0x1b]
1572 // CHECK: msub wzr, w0, w9, w11 // encoding: [0x1f,0xac,0x09,0x1b]
1573 // CHECK: msub w13, wzr, w4, w4 // encoding: [0xed,0x93,0x04,0x1b]
1574 // CHECK: msub w19, w30, wzr, w29 // encoding: [0xd3,0xf7,0x1f,0x1b]
1575 // CHECK: mneg w4, w5, w6 // encoding: [0xa4,0xfc,0x06,0x1b]
1577 msub x1, x3, x7, x4
1578 msub xzr, x0, x9, x11
1579 msub x13, xzr, x4, x4
1580 msub x19, x30, xzr, x29
1581 msub x4, x5, x6, xzr
1582 // CHECK: msub x1, x3, x7, x4 // encoding: [0x61,0x90,0x07,0x9b]
1583 // CHECK: msub xzr, x0, x9, x11 // encoding: [0x1f,0xac,0x09,0x9b]
1584 // CHECK: msub x13, xzr, x4, x4 // encoding: [0xed,0x93,0x04,0x9b]
1585 // CHECK: msub x19, x30, xzr, x29 // encoding: [0xd3,0xf7,0x1f,0x9b]
1586 // CHECK: mneg x4, x5, x6 // encoding: [0xa4,0xfc,0x06,0x9b]
1588 smaddl x3, w5, w2, x9
1589 smaddl xzr, w10, w11, x12
1590 smaddl x13, wzr, w14, x15
1591 smaddl x16, w17, wzr, x18
1592 smaddl x19, w20, w21, xzr
1593 // CHECK: smaddl x3, w5, w2, x9 // encoding: [0xa3,0x24,0x22,0x9b]
1594 // CHECK: smaddl xzr, w10, w11, x12 // encoding: [0x5f,0x31,0x2b,0x9b]
1595 // CHECK: smaddl x13, wzr, w14, x15 // encoding: [0xed,0x3f,0x2e,0x9b]
1596 // CHECK: smaddl x16, w17, wzr, x18 // encoding: [0x30,0x4a,0x3f,0x9b]
1597 // CHECK: smull x19, w20, w21 // encoding: [0x93,0x7e,0x35,0x9b]
1599 smsubl x3, w5, w2, x9
1600 smsubl xzr, w10, w11, x12
1601 smsubl x13, wzr, w14, x15
1602 smsubl x16, w17, wzr, x18
1603 smsubl x19, w20, w21, xzr
1604 // CHECK: smsubl x3, w5, w2, x9 // encoding: [0xa3,0xa4,0x22,0x9b]
1605 // CHECK: smsubl xzr, w10, w11, x12 // encoding: [0x5f,0xb1,0x2b,0x9b]
1606 // CHECK: smsubl x13, wzr, w14, x15 // encoding: [0xed,0xbf,0x2e,0x9b]
1607 // CHECK: smsubl x16, w17, wzr, x18 // encoding: [0x30,0xca,0x3f,0x9b]
1608 // CHECK: smnegl x19, w20, w21 // encoding: [0x93,0xfe,0x35,0x9b]
1610 umaddl x3, w5, w2, x9
1611 umaddl xzr, w10, w11, x12
1612 umaddl x13, wzr, w14, x15
1613 umaddl x16, w17, wzr, x18
1614 umaddl x19, w20, w21, xzr
1615 // CHECK: umaddl x3, w5, w2, x9 // encoding: [0xa3,0x24,0xa2,0x9b]
1616 // CHECK: umaddl xzr, w10, w11, x12 // encoding: [0x5f,0x31,0xab,0x9b]
1617 // CHECK: umaddl x13, wzr, w14, x15 // encoding: [0xed,0x3f,0xae,0x9b]
1618 // CHECK: umaddl x16, w17, wzr, x18 // encoding: [0x30,0x4a,0xbf,0x9b]
1619 // CHECK: umull x19, w20, w21 // encoding: [0x93,0x7e,0xb5,0x9b]
1623 umsubl x3, w5, w2, x9
1624 umsubl xzr, w10, w11, x12
1625 umsubl x13, wzr, w14, x15
1626 umsubl x16, w17, wzr, x18
1627 umsubl x19, w20, w21, xzr
1628 // CHECK: umsubl x3, w5, w2, x9 // encoding: [0xa3,0xa4,0xa2,0x9b]
1629 // CHECK: umsubl xzr, w10, w11, x12 // encoding: [0x5f,0xb1,0xab,0x9b]
1630 // CHECK: umsubl x13, wzr, w14, x15 // encoding: [0xed,0xbf,0xae,0x9b]
1631 // CHECK: umsubl x16, w17, wzr, x18 // encoding: [0x30,0xca,0xbf,0x9b]
1632 // CHECK: umnegl x19, w20, w21 // encoding: [0x93,0xfe,0xb5,0x9b]
1634 smulh x30, x29, x28
1635 smulh xzr, x27, x26
1636 smulh x25, xzr, x24
1637 smulh x23, x22, xzr
1638 // CHECK: smulh x30, x29, x28 // encoding: [0xbe,0x7f,0x5c,0x9b]
1639 // CHECK: smulh xzr, x27, x26 // encoding: [0x7f,0x7f,0x5a,0x9b]
1640 // CHECK: smulh x25, xzr, x24 // encoding: [0xf9,0x7f,0x58,0x9b]
1641 // CHECK: smulh x23, x22, xzr // encoding: [0xd7,0x7e,0x5f,0x9b]
1643 umulh x30, x29, x28
1644 umulh xzr, x27, x26
1645 umulh x25, xzr, x24
1646 umulh x23, x22, xzr
1647 // CHECK: umulh x30, x29, x28 // encoding: [0xbe,0x7f,0xdc,0x9b]
1648 // CHECK: umulh xzr, x27, x26 // encoding: [0x7f,0x7f,0xda,0x9b]
1649 // CHECK: umulh x25, xzr, x24 // encoding: [0xf9,0x7f,0xd8,0x9b]
1650 // CHECK: umulh x23, x22, xzr // encoding: [0xd7,0x7e,0xdf,0x9b]
1652 mul w3, w4, w5
1653 mul wzr, w6, w7
1654 mul w8, wzr, w9
1655 mul w10, w11, wzr
1657 mul x12, x13, x14
1658 mul xzr, x15, x16
1659 mul x17, xzr, x18
1660 mul x19, x20, xzr
1662 mneg w21, w22, w23
1663 mneg wzr, w24, w25
1664 mneg w26, wzr, w27
1665 mneg w28, w29, wzr
1667 smull x11, w13, w17
1668 umull x11, w13, w17
1669 smnegl x11, w13, w17
1670 umnegl x11, w13, w17
1671 // CHECK: mul w3, w4, w5 // encoding: [0x83,0x7c,0x05,0x1b]
1672 // CHECK: mul wzr, w6, w7 // encoding: [0xdf,0x7c,0x07,0x1b]
1673 // CHECK: mul w8, wzr, w9 // encoding: [0xe8,0x7f,0x09,0x1b]
1674 // CHECK: mul w10, w11, wzr // encoding: [0x6a,0x7d,0x1f,0x1b]
1675 // CHECK: mul x12, x13, x14 // encoding: [0xac,0x7d,0x0e,0x9b]
1676 // CHECK: mul xzr, x15, x16 // encoding: [0xff,0x7d,0x10,0x9b]
1677 // CHECK: mul x17, xzr, x18 // encoding: [0xf1,0x7f,0x12,0x9b]
1678 // CHECK: mul x19, x20, xzr // encoding: [0x93,0x7e,0x1f,0x9b]
1679 // CHECK: mneg w21, w22, w23 // encoding: [0xd5,0xfe,0x17,0x1b]
1680 // CHECK: mneg wzr, w24, w25 // encoding: [0x1f,0xff,0x19,0x1b]
1681 // CHECK: mneg w26, wzr, w27 // encoding: [0xfa,0xff,0x1b,0x1b]
1682 // CHECK: mneg w28, w29, wzr // encoding: [0xbc,0xff,0x1f,0x1b]
1683 // CHECK: smull x11, w13, w17 // encoding: [0xab,0x7d,0x31,0x9b]
1684 // CHECK: umull x11, w13, w17 // encoding: [0xab,0x7d,0xb1,0x9b]
1685 // CHECK: smnegl x11, w13, w17 // encoding: [0xab,0xfd,0x31,0x9b]
1686 // CHECK: umnegl x11, w13, w17 // encoding: [0xab,0xfd,0xb1,0x9b]
1688 //------------------------------------------------------------------------------
1689 // Exception generation
1690 //------------------------------------------------------------------------------
1691 svc #0
1692 svc #65535
1693 // CHECK: svc #0 // encoding: [0x01,0x00,0x00,0xd4]
1694 // CHECK: svc #{{65535|0xffff}} // encoding: [0xe1,0xff,0x1f,0xd4]
1696 hvc #1
1697 smc #12000
1698 brk #12
1699 hlt #123
1700 // CHECK: hvc #{{1|0x1}} // encoding: [0x22,0x00,0x00,0xd4]
1701 // CHECK: smc #{{12000|0x2ee0}} // encoding: [0x03,0xdc,0x05,0xd4]
1702 // CHECK: brk #{{12|0xc}} // encoding: [0x80,0x01,0x20,0xd4]
1703 // CHECK: hlt #{{123|0x7b}} // encoding: [0x60,0x0f,0x40,0xd4]
1705 dcps1 #42
1706 dcps2 #9
1707 dcps3 #1000
1708 // CHECK: dcps1 #{{42|0x2a}} // encoding: [0x41,0x05,0xa0,0xd4]
1709 // CHECK: dcps2 #{{9|0x9}} // encoding: [0x22,0x01,0xa0,0xd4]
1710 // CHECK: dcps3 #{{1000|0x3e8}} // encoding: [0x03,0x7d,0xa0,0xd4]
1712 dcps1
1713 dcps2
1714 dcps3
1715 // CHECK: dcps1 // encoding: [0x01,0x00,0xa0,0xd4]
1716 // CHECK: dcps2 // encoding: [0x02,0x00,0xa0,0xd4]
1717 // CHECK: dcps3 // encoding: [0x03,0x00,0xa0,0xd4]
1719 //------------------------------------------------------------------------------
1720 // Extract (immediate)
1721 //------------------------------------------------------------------------------
1723 extr w3, w5, w7, #0
1724 extr w11, w13, w17, #31
1725 // CHECK: extr w3, w5, w7, #0 // encoding: [0xa3,0x00,0x87,0x13]
1726 // CHECK: extr w11, w13, w17, #31 // encoding: [0xab,0x7d,0x91,0x13]
1728 extr x3, x5, x7, #15
1729 extr x11, x13, x17, #63
1730 // CHECK: extr x3, x5, x7, #15 // encoding: [0xa3,0x3c,0xc7,0x93]
1731 // CHECK: extr x11, x13, x17, #63 // encoding: [0xab,0xfd,0xd1,0x93]
1733 ror x19, x23, #24
1734 ror x29, xzr, #63
1735 // CHECK: ror x19, x23, #24 // encoding: [0xf3,0x62,0xd7,0x93]
1736 // CHECK: ror x29, xzr, #63 // encoding: [0xfd,0xff,0xdf,0x93]
1738 ror w9, w13, #31
1739 // CHECK: ror w9, w13, #31 // encoding: [0xa9,0x7d,0x8d,0x13]
1741 //------------------------------------------------------------------------------
1742 // Floating-point compare
1743 //------------------------------------------------------------------------------
1745 fcmp s3, s5
1746 fcmp s31, #0.0
1747 // CHECK: fcmp s3, s5 // encoding: [0x60,0x20,0x25,0x1e]
1748 // CHECK: fcmp s31, #0.0 // encoding: [0xe8,0x23,0x20,0x1e]
1750 fcmpe s29, s30
1751 fcmpe s15, #0.0
1752 // CHECK: fcmpe s29, s30 // encoding: [0xb0,0x23,0x3e,0x1e]
1753 // CHECK: fcmpe s15, #0.0 // encoding: [0xf8,0x21,0x20,0x1e]
1755 fcmp d4, d12
1756 fcmp d23, #0.0
1757 // CHECK: fcmp d4, d12 // encoding: [0x80,0x20,0x6c,0x1e]
1758 // CHECK: fcmp d23, #0.0 // encoding: [0xe8,0x22,0x60,0x1e]
1760 fcmpe d26, d22
1761 fcmpe d29, #0.0
1762 // CHECK: fcmpe d26, d22 // encoding: [0x50,0x23,0x76,0x1e]
1763 // CHECK: fcmpe d29, #0.0 // encoding: [0xb8,0x23,0x60,0x1e]
1765 //------------------------------------------------------------------------------
1766 // Floating-point conditional compare
1767 //------------------------------------------------------------------------------
1769 fccmp s1, s31, #0, eq
1770 fccmp s3, s0, #15, hs
1771 fccmp s31, s15, #13, cs
1772 // CHECK: fccmp s1, s31, #0, eq // encoding: [0x20,0x04,0x3f,0x1e]
1773 // CHECK: fccmp s3, s0, #15, hs // encoding: [0x6f,0x24,0x20,0x1e]
1774 // CHECK: fccmp s31, s15, #13, hs // encoding: [0xed,0x27,0x2f,0x1e]
1776 fccmp d9, d31, #0, le
1777 fccmp d3, d0, #15, gt
1778 fccmp d31, d5, #7, ne
1779 // CHECK: fccmp d9, d31, #0, le // encoding: [0x20,0xd5,0x7f,0x1e]
1780 // CHECK: fccmp d3, d0, #15, gt // encoding: [0x6f,0xc4,0x60,0x1e]
1781 // CHECK: fccmp d31, d5, #7, ne // encoding: [0xe7,0x17,0x65,0x1e]
1783 fccmpe s1, s31, #0, eq
1784 fccmpe s3, s0, #15, hs
1785 fccmpe s31, s15, #13, cs
1786 // CHECK: fccmpe s1, s31, #0, eq // encoding: [0x30,0x04,0x3f,0x1e]
1787 // CHECK: fccmpe s3, s0, #15, hs // encoding: [0x7f,0x24,0x20,0x1e]
1788 // CHECK: fccmpe s31, s15, #13, hs // encoding: [0xfd,0x27,0x2f,0x1e]
1790 fccmpe d9, d31, #0, le
1791 fccmpe d3, d0, #15, gt
1792 fccmpe d31, d5, #7, ne
1793 // CHECK: fccmpe d9, d31, #0, le // encoding: [0x30,0xd5,0x7f,0x1e]
1794 // CHECK: fccmpe d3, d0, #15, gt // encoding: [0x7f,0xc4,0x60,0x1e]
1795 // CHECK: fccmpe d31, d5, #7, ne // encoding: [0xf7,0x17,0x65,0x1e]
1797 //------------------------------------------------------------------------------
1798 // Floating-point conditional compare
1799 //------------------------------------------------------------------------------
1801 fcsel s3, s20, s9, pl
1802 fcsel d9, d10, d11, mi
1803 // CHECK: fcsel s3, s20, s9, pl // encoding: [0x83,0x5e,0x29,0x1e]
1804 // CHECK: fcsel d9, d10, d11, mi // encoding: [0x49,0x4d,0x6b,0x1e]
1806 //------------------------------------------------------------------------------
1807 // Floating-point data-processing (1 source)
1808 //------------------------------------------------------------------------------
1810 fmov s0, s1
1811 fabs s2, s3
1812 fneg s4, s5
1813 fsqrt s6, s7
1814 fcvt d8, s9
1815 fcvt h10, s11
1816 frintn s12, s13
1817 frintp s14, s15
1818 frintm s16, s17
1819 frintz s18, s19
1820 frinta s20, s21
1821 frintx s22, s23
1822 frinti s24, s25
1823 // CHECK: fmov s0, s1 // encoding: [0x20,0x40,0x20,0x1e]
1824 // CHECK: fabs s2, s3 // encoding: [0x62,0xc0,0x20,0x1e]
1825 // CHECK: fneg s4, s5 // encoding: [0xa4,0x40,0x21,0x1e]
1826 // CHECK: fsqrt s6, s7 // encoding: [0xe6,0xc0,0x21,0x1e]
1827 // CHECK: fcvt d8, s9 // encoding: [0x28,0xc1,0x22,0x1e]
1828 // CHECK: fcvt h10, s11 // encoding: [0x6a,0xc1,0x23,0x1e]
1829 // CHECK: frintn s12, s13 // encoding: [0xac,0x41,0x24,0x1e]
1830 // CHECK: frintp s14, s15 // encoding: [0xee,0xc1,0x24,0x1e]
1831 // CHECK: frintm s16, s17 // encoding: [0x30,0x42,0x25,0x1e]
1832 // CHECK: frintz s18, s19 // encoding: [0x72,0xc2,0x25,0x1e]
1833 // CHECK: frinta s20, s21 // encoding: [0xb4,0x42,0x26,0x1e]
1834 // CHECK: frintx s22, s23 // encoding: [0xf6,0x42,0x27,0x1e]
1835 // CHECK: frinti s24, s25 // encoding: [0x38,0xc3,0x27,0x1e]
1837 fmov d0, d1
1838 fabs d2, d3
1839 fneg d4, d5
1840 fsqrt d6, d7
1841 fcvt s8, d9
1842 fcvt h10, d11
1843 frintn d12, d13
1844 frintp d14, d15
1845 frintm d16, d17
1846 frintz d18, d19
1847 frinta d20, d21
1848 frintx d22, d23
1849 frinti d24, d25
1850 // CHECK: fmov d0, d1 // encoding: [0x20,0x40,0x60,0x1e]
1851 // CHECK: fabs d2, d3 // encoding: [0x62,0xc0,0x60,0x1e]
1852 // CHECK: fneg d4, d5 // encoding: [0xa4,0x40,0x61,0x1e]
1853 // CHECK: fsqrt d6, d7 // encoding: [0xe6,0xc0,0x61,0x1e]
1854 // CHECK: fcvt s8, d9 // encoding: [0x28,0x41,0x62,0x1e]
1855 // CHECK: fcvt h10, d11 // encoding: [0x6a,0xc1,0x63,0x1e]
1856 // CHECK: frintn d12, d13 // encoding: [0xac,0x41,0x64,0x1e]
1857 // CHECK: frintp d14, d15 // encoding: [0xee,0xc1,0x64,0x1e]
1858 // CHECK: frintm d16, d17 // encoding: [0x30,0x42,0x65,0x1e]
1859 // CHECK: frintz d18, d19 // encoding: [0x72,0xc2,0x65,0x1e]
1860 // CHECK: frinta d20, d21 // encoding: [0xb4,0x42,0x66,0x1e]
1861 // CHECK: frintx d22, d23 // encoding: [0xf6,0x42,0x67,0x1e]
1862 // CHECK: frinti d24, d25 // encoding: [0x38,0xc3,0x67,0x1e]
1864 fcvt s26, h27
1865 fcvt d28, h29
1866 // CHECK: fcvt s26, h27 // encoding: [0x7a,0x43,0xe2,0x1e]
1867 // CHECK: fcvt d28, h29 // encoding: [0xbc,0xc3,0xe2,0x1e]
1869 //------------------------------------------------------------------------------
1870 // Floating-point data-processing (2 sources)
1871 //------------------------------------------------------------------------------
1873 fmul s20, s19, s17
1874 fdiv s1, s2, s3
1875 fadd s4, s5, s6
1876 fsub s7, s8, s9
1877 fmax s10, s11, s12
1878 fmin s13, s14, s15
1879 fmaxnm s16, s17, s18
1880 fminnm s19, s20, s21
1881 fnmul s22, s23, s24
1882 // CHECK: fmul s20, s19, s17 // encoding: [0x74,0x0a,0x31,0x1e]
1883 // CHECK: fdiv s1, s2, s3 // encoding: [0x41,0x18,0x23,0x1e]
1884 // CHECK: fadd s4, s5, s6 // encoding: [0xa4,0x28,0x26,0x1e]
1885 // CHECK: fsub s7, s8, s9 // encoding: [0x07,0x39,0x29,0x1e]
1886 // CHECK: fmax s10, s11, s12 // encoding: [0x6a,0x49,0x2c,0x1e]
1887 // CHECK: fmin s13, s14, s15 // encoding: [0xcd,0x59,0x2f,0x1e]
1888 // CHECK: fmaxnm s16, s17, s18 // encoding: [0x30,0x6a,0x32,0x1e]
1889 // CHECK: fminnm s19, s20, s21 // encoding: [0x93,0x7a,0x35,0x1e]
1890 // CHECK: fnmul s22, s23, s24 // encoding: [0xf6,0x8a,0x38,0x1e]
1892 fmul d20, d19, d17
1893 fdiv d1, d2, d3
1894 fadd d4, d5, d6
1895 fsub d7, d8, d9
1896 fmax d10, d11, d12
1897 fmin d13, d14, d15
1898 fmaxnm d16, d17, d18
1899 fminnm d19, d20, d21
1900 fnmul d22, d23, d24
1901 // CHECK: fmul d20, d19, d17 // encoding: [0x74,0x0a,0x71,0x1e]
1902 // CHECK: fdiv d1, d2, d3 // encoding: [0x41,0x18,0x63,0x1e]
1903 // CHECK: fadd d4, d5, d6 // encoding: [0xa4,0x28,0x66,0x1e]
1904 // CHECK: fsub d7, d8, d9 // encoding: [0x07,0x39,0x69,0x1e]
1905 // CHECK: fmax d10, d11, d12 // encoding: [0x6a,0x49,0x6c,0x1e]
1906 // CHECK: fmin d13, d14, d15 // encoding: [0xcd,0x59,0x6f,0x1e]
1907 // CHECK: fmaxnm d16, d17, d18 // encoding: [0x30,0x6a,0x72,0x1e]
1908 // CHECK: fminnm d19, d20, d21 // encoding: [0x93,0x7a,0x75,0x1e]
1909 // CHECK: fnmul d22, d23, d24 // encoding: [0xf6,0x8a,0x78,0x1e]
1911 //------------------------------------------------------------------------------
1912 // Floating-point data-processing (3 sources)
1913 //------------------------------------------------------------------------------
1915 fmadd s3, s5, s6, s31
1916 fmadd d3, d13, d0, d23
1917 fmsub s3, s5, s6, s31
1918 fmsub d3, d13, d0, d23
1919 fnmadd s3, s5, s6, s31
1920 fnmadd d3, d13, d0, d23
1921 fnmsub s3, s5, s6, s31
1922 fnmsub d3, d13, d0, d23
1923 // CHECK: fmadd s3, s5, s6, s31 // encoding: [0xa3,0x7c,0x06,0x1f]
1924 // CHECK: fmadd d3, d13, d0, d23 // encoding: [0xa3,0x5d,0x40,0x1f]
1925 // CHECK: fmsub s3, s5, s6, s31 // encoding: [0xa3,0xfc,0x06,0x1f]
1926 // CHECK: fmsub d3, d13, d0, d23 // encoding: [0xa3,0xdd,0x40,0x1f]
1927 // CHECK: fnmadd s3, s5, s6, s31 // encoding: [0xa3,0x7c,0x26,0x1f]
1928 // CHECK: fnmadd d3, d13, d0, d23 // encoding: [0xa3,0x5d,0x60,0x1f]
1929 // CHECK: fnmsub s3, s5, s6, s31 // encoding: [0xa3,0xfc,0x26,0x1f]
1930 // CHECK: fnmsub d3, d13, d0, d23 // encoding: [0xa3,0xdd,0x60,0x1f]
1932 //------------------------------------------------------------------------------
1933 // Floating-point <-> fixed-point conversion
1934 //------------------------------------------------------------------------------
1936 fcvtzs w3, s5, #1
1937 fcvtzs wzr, s20, #13
1938 fcvtzs w19, s0, #32
1939 // CHECK: fcvtzs w3, s5, #1 // encoding: [0xa3,0xfc,0x18,0x1e]
1940 // CHECK: fcvtzs wzr, s20, #13 // encoding: [0x9f,0xce,0x18,0x1e]
1941 // CHECK: fcvtzs w19, s0, #32 // encoding: [0x13,0x80,0x18,0x1e]
1943 fcvtzs x3, s5, #1
1944 fcvtzs x12, s30, #45
1945 fcvtzs x19, s0, #64
1946 // CHECK: fcvtzs x3, s5, #1 // encoding: [0xa3,0xfc,0x18,0x9e]
1947 // CHECK: fcvtzs x12, s30, #45 // encoding: [0xcc,0x4f,0x18,0x9e]
1948 // CHECK: fcvtzs x19, s0, #64 // encoding: [0x13,0x00,0x18,0x9e]
1950 fcvtzs w3, d5, #1
1951 fcvtzs wzr, d20, #13
1952 fcvtzs w19, d0, #32
1953 // CHECK: fcvtzs w3, d5, #1 // encoding: [0xa3,0xfc,0x58,0x1e]
1954 // CHECK: fcvtzs wzr, d20, #13 // encoding: [0x9f,0xce,0x58,0x1e]
1955 // CHECK: fcvtzs w19, d0, #32 // encoding: [0x13,0x80,0x58,0x1e]
1957 fcvtzs x3, d5, #1
1958 fcvtzs x12, d30, #45
1959 fcvtzs x19, d0, #64
1960 // CHECK: fcvtzs x3, d5, #1 // encoding: [0xa3,0xfc,0x58,0x9e]
1961 // CHECK: fcvtzs x12, d30, #45 // encoding: [0xcc,0x4f,0x58,0x9e]
1962 // CHECK: fcvtzs x19, d0, #64 // encoding: [0x13,0x00,0x58,0x9e]
1964 fcvtzu w3, s5, #1
1965 fcvtzu wzr, s20, #13
1966 fcvtzu w19, s0, #32
1967 // CHECK: fcvtzu w3, s5, #1 // encoding: [0xa3,0xfc,0x19,0x1e]
1968 // CHECK: fcvtzu wzr, s20, #13 // encoding: [0x9f,0xce,0x19,0x1e]
1969 // CHECK: fcvtzu w19, s0, #32 // encoding: [0x13,0x80,0x19,0x1e]
1971 fcvtzu x3, s5, #1
1972 fcvtzu x12, s30, #45
1973 fcvtzu x19, s0, #64
1974 // CHECK: fcvtzu x3, s5, #1 // encoding: [0xa3,0xfc,0x19,0x9e]
1975 // CHECK: fcvtzu x12, s30, #45 // encoding: [0xcc,0x4f,0x19,0x9e]
1976 // CHECK: fcvtzu x19, s0, #64 // encoding: [0x13,0x00,0x19,0x9e]
1978 fcvtzu w3, d5, #1
1979 fcvtzu wzr, d20, #13
1980 fcvtzu w19, d0, #32
1981 // CHECK: fcvtzu w3, d5, #1 // encoding: [0xa3,0xfc,0x59,0x1e]
1982 // CHECK: fcvtzu wzr, d20, #13 // encoding: [0x9f,0xce,0x59,0x1e]
1983 // CHECK: fcvtzu w19, d0, #32 // encoding: [0x13,0x80,0x59,0x1e]
1985 fcvtzu x3, d5, #1
1986 fcvtzu x12, d30, #45
1987 fcvtzu x19, d0, #64
1988 // CHECK: fcvtzu x3, d5, #1 // encoding: [0xa3,0xfc,0x59,0x9e]
1989 // CHECK: fcvtzu x12, d30, #45 // encoding: [0xcc,0x4f,0x59,0x9e]
1990 // CHECK: fcvtzu x19, d0, #64 // encoding: [0x13,0x00,0x59,0x9e]
1992 scvtf s23, w19, #1
1993 scvtf s31, wzr, #20
1994 scvtf s14, w0, #32
1995 // CHECK: scvtf s23, w19, #1 // encoding: [0x77,0xfe,0x02,0x1e]
1996 // CHECK: scvtf s31, wzr, #20 // encoding: [0xff,0xb3,0x02,0x1e]
1997 // CHECK: scvtf s14, w0, #32 // encoding: [0x0e,0x80,0x02,0x1e]
1999 scvtf s23, x19, #1
2000 scvtf s31, xzr, #20
2001 scvtf s14, x0, #64
2002 // CHECK: scvtf s23, x19, #1 // encoding: [0x77,0xfe,0x02,0x9e]
2003 // CHECK: scvtf s31, xzr, #20 // encoding: [0xff,0xb3,0x02,0x9e]
2004 // CHECK: scvtf s14, x0, #64 // encoding: [0x0e,0x00,0x02,0x9e]
2006 scvtf d23, w19, #1
2007 scvtf d31, wzr, #20
2008 scvtf d14, w0, #32
2009 // CHECK: scvtf d23, w19, #1 // encoding: [0x77,0xfe,0x42,0x1e]
2010 // CHECK: scvtf d31, wzr, #20 // encoding: [0xff,0xb3,0x42,0x1e]
2011 // CHECK: scvtf d14, w0, #32 // encoding: [0x0e,0x80,0x42,0x1e]
2013 scvtf d23, x19, #1
2014 scvtf d31, xzr, #20
2015 scvtf d14, x0, #64
2016 // CHECK: scvtf d23, x19, #1 // encoding: [0x77,0xfe,0x42,0x9e]
2017 // CHECK: scvtf d31, xzr, #20 // encoding: [0xff,0xb3,0x42,0x9e]
2018 // CHECK: scvtf d14, x0, #64 // encoding: [0x0e,0x00,0x42,0x9e]
2020 ucvtf s23, w19, #1
2021 ucvtf s31, wzr, #20
2022 ucvtf s14, w0, #32
2023 // CHECK: ucvtf s23, w19, #1 // encoding: [0x77,0xfe,0x03,0x1e]
2024 // CHECK: ucvtf s31, wzr, #20 // encoding: [0xff,0xb3,0x03,0x1e]
2025 // CHECK: ucvtf s14, w0, #32 // encoding: [0x0e,0x80,0x03,0x1e]
2027 ucvtf s23, x19, #1
2028 ucvtf s31, xzr, #20
2029 ucvtf s14, x0, #64
2030 // CHECK: ucvtf s23, x19, #1 // encoding: [0x77,0xfe,0x03,0x9e]
2031 // CHECK: ucvtf s31, xzr, #20 // encoding: [0xff,0xb3,0x03,0x9e]
2032 // CHECK: ucvtf s14, x0, #64 // encoding: [0x0e,0x00,0x03,0x9e]
2034 ucvtf d23, w19, #1
2035 ucvtf d31, wzr, #20
2036 ucvtf d14, w0, #32
2037 // CHECK: ucvtf d23, w19, #1 // encoding: [0x77,0xfe,0x43,0x1e]
2038 // CHECK: ucvtf d31, wzr, #20 // encoding: [0xff,0xb3,0x43,0x1e]
2039 // CHECK: ucvtf d14, w0, #32 // encoding: [0x0e,0x80,0x43,0x1e]
2041 ucvtf d23, x19, #1
2042 ucvtf d31, xzr, #20
2043 ucvtf d14, x0, #64
2044 // CHECK: ucvtf d23, x19, #1 // encoding: [0x77,0xfe,0x43,0x9e]
2045 // CHECK: ucvtf d31, xzr, #20 // encoding: [0xff,0xb3,0x43,0x9e]
2046 // CHECK: ucvtf d14, x0, #64 // encoding: [0x0e,0x00,0x43,0x9e]
2048 //------------------------------------------------------------------------------
2049 // Floating-point <-> integer conversion
2050 //------------------------------------------------------------------------------
2051 fcvtns w3, s31
2052 fcvtns xzr, s12
2053 fcvtnu wzr, s12
2054 fcvtnu x0, s0
2055 // CHECK: fcvtns w3, s31 // encoding: [0xe3,0x03,0x20,0x1e]
2056 // CHECK: fcvtns xzr, s12 // encoding: [0x9f,0x01,0x20,0x9e]
2057 // CHECK: fcvtnu wzr, s12 // encoding: [0x9f,0x01,0x21,0x1e]
2058 // CHECK: fcvtnu x0, s0 // encoding: [0x00,0x00,0x21,0x9e]
2060 fcvtps wzr, s9
2061 fcvtps x12, s20
2062 fcvtpu w30, s23
2063 fcvtpu x29, s3
2064 // CHECK: fcvtps wzr, s9 // encoding: [0x3f,0x01,0x28,0x1e]
2065 // CHECK: fcvtps x12, s20 // encoding: [0x8c,0x02,0x28,0x9e]
2066 // CHECK: fcvtpu w30, s23 // encoding: [0xfe,0x02,0x29,0x1e]
2067 // CHECK: fcvtpu x29, s3 // encoding: [0x7d,0x00,0x29,0x9e]
2069 fcvtms w2, s3
2070 fcvtms x4, s5
2071 fcvtmu w6, s7
2072 fcvtmu x8, s9
2073 // CHECK: fcvtms w2, s3 // encoding: [0x62,0x00,0x30,0x1e]
2074 // CHECK: fcvtms x4, s5 // encoding: [0xa4,0x00,0x30,0x9e]
2075 // CHECK: fcvtmu w6, s7 // encoding: [0xe6,0x00,0x31,0x1e]
2076 // CHECK: fcvtmu x8, s9 // encoding: [0x28,0x01,0x31,0x9e]
2078 fcvtzs w10, s11
2079 fcvtzs x12, s13
2080 fcvtzu w14, s15
2081 fcvtzu x15, s16
2082 // CHECK: fcvtzs w10, s11 // encoding: [0x6a,0x01,0x38,0x1e]
2083 // CHECK: fcvtzs x12, s13 // encoding: [0xac,0x01,0x38,0x9e]
2084 // CHECK: fcvtzu w14, s15 // encoding: [0xee,0x01,0x39,0x1e]
2085 // CHECK: fcvtzu x15, s16 // encoding: [0x0f,0x02,0x39,0x9e]
2087 scvtf s17, w18
2088 scvtf s19, x20
2089 ucvtf s21, w22
2090 scvtf s23, x24
2091 // CHECK: scvtf s17, w18 // encoding: [0x51,0x02,0x22,0x1e]
2092 // CHECK: scvtf s19, x20 // encoding: [0x93,0x02,0x22,0x9e]
2093 // CHECK: ucvtf s21, w22 // encoding: [0xd5,0x02,0x23,0x1e]
2094 // CHECK: scvtf s23, x24 // encoding: [0x17,0x03,0x22,0x9e]
2096 fcvtas w25, s26
2097 fcvtas x27, s28
2098 fcvtau w29, s30
2099 fcvtau xzr, s0
2100 // CHECK: fcvtas w25, s26 // encoding: [0x59,0x03,0x24,0x1e]
2101 // CHECK: fcvtas x27, s28 // encoding: [0x9b,0x03,0x24,0x9e]
2102 // CHECK: fcvtau w29, s30 // encoding: [0xdd,0x03,0x25,0x1e]
2103 // CHECK: fcvtau xzr, s0 // encoding: [0x1f,0x00,0x25,0x9e]
2105 fcvtns w3, d31
2106 fcvtns xzr, d12
2107 fcvtnu wzr, d12
2108 fcvtnu x0, d0
2109 // CHECK: fcvtns w3, d31 // encoding: [0xe3,0x03,0x60,0x1e]
2110 // CHECK: fcvtns xzr, d12 // encoding: [0x9f,0x01,0x60,0x9e]
2111 // CHECK: fcvtnu wzr, d12 // encoding: [0x9f,0x01,0x61,0x1e]
2112 // CHECK: fcvtnu x0, d0 // encoding: [0x00,0x00,0x61,0x9e]
2114 fcvtps wzr, d9
2115 fcvtps x12, d20
2116 fcvtpu w30, d23
2117 fcvtpu x29, d3
2118 // CHECK: fcvtps wzr, d9 // encoding: [0x3f,0x01,0x68,0x1e]
2119 // CHECK: fcvtps x12, d20 // encoding: [0x8c,0x02,0x68,0x9e]
2120 // CHECK: fcvtpu w30, d23 // encoding: [0xfe,0x02,0x69,0x1e]
2121 // CHECK: fcvtpu x29, d3 // encoding: [0x7d,0x00,0x69,0x9e]
2123 fcvtms w2, d3
2124 fcvtms x4, d5
2125 fcvtmu w6, d7
2126 fcvtmu x8, d9
2127 // CHECK: fcvtms w2, d3 // encoding: [0x62,0x00,0x70,0x1e]
2128 // CHECK: fcvtms x4, d5 // encoding: [0xa4,0x00,0x70,0x9e]
2129 // CHECK: fcvtmu w6, d7 // encoding: [0xe6,0x00,0x71,0x1e]
2130 // CHECK: fcvtmu x8, d9 // encoding: [0x28,0x01,0x71,0x9e]
2132 fcvtzs w10, d11
2133 fcvtzs x12, d13
2134 fcvtzu w14, d15
2135 fcvtzu x15, d16
2136 // CHECK: fcvtzs w10, d11 // encoding: [0x6a,0x01,0x78,0x1e]
2137 // CHECK: fcvtzs x12, d13 // encoding: [0xac,0x01,0x78,0x9e]
2138 // CHECK: fcvtzu w14, d15 // encoding: [0xee,0x01,0x79,0x1e]
2139 // CHECK: fcvtzu x15, d16 // encoding: [0x0f,0x02,0x79,0x9e]
2141 scvtf d17, w18
2142 scvtf d19, x20
2143 ucvtf d21, w22
2144 ucvtf d23, x24
2145 // CHECK: scvtf d17, w18 // encoding: [0x51,0x02,0x62,0x1e]
2146 // CHECK: scvtf d19, x20 // encoding: [0x93,0x02,0x62,0x9e]
2147 // CHECK: ucvtf d21, w22 // encoding: [0xd5,0x02,0x63,0x1e]
2148 // CHECK: ucvtf d23, x24 // encoding: [0x17,0x03,0x63,0x9e]
2150 fcvtas w25, d26
2151 fcvtas x27, d28
2152 fcvtau w29, d30
2153 fcvtau xzr, d0
2154 // CHECK: fcvtas w25, d26 // encoding: [0x59,0x03,0x64,0x1e]
2155 // CHECK: fcvtas x27, d28 // encoding: [0x9b,0x03,0x64,0x9e]
2156 // CHECK: fcvtau w29, d30 // encoding: [0xdd,0x03,0x65,0x1e]
2157 // CHECK: fcvtau xzr, d0 // encoding: [0x1f,0x00,0x65,0x9e]
2159 fmov w3, s9
2160 fmov s9, w3
2161 // CHECK: fmov w3, s9 // encoding: [0x23,0x01,0x26,0x1e]
2162 // CHECK: fmov s9, w3 // encoding: [0x69,0x00,0x27,0x1e]
2164 fmov x20, d31
2165 fmov d1, x15
2166 // CHECK: fmov x20, d31 // encoding: [0xf4,0x03,0x66,0x9e]
2167 // CHECK: fmov d1, x15 // encoding: [0xe1,0x01,0x67,0x9e]
2169 fmov x3, v12.d[1]
2170 fmov v1.d[1], x19
2171 fmov v3.d[1], xzr
2172 // CHECK: fmov x3, v12.d[1] // encoding: [0x83,0x01,0xae,0x9e]
2173 // CHECK: fmov v1.d[1], x19 // encoding: [0x61,0x02,0xaf,0x9e]
2174 // CHECK: fmov v3.d[1], xzr // encoding: [0xe3,0x03,0xaf,0x9e]
2176 //------------------------------------------------------------------------------
2177 // Floating-point immediate
2178 //------------------------------------------------------------------------------
2180 fmov s2, #0.125
2181 fmov s3, #1.0
2182 fmov d30, #16.0
2183 // CHECK: fmov s2, #{{0.12500000|1.250*e-01}} // encoding: [0x02,0x10,0x28,0x1e]
2184 // CHECK: fmov s3, #{{1.00000000|1.0*e\+00}} // encoding: [0x03,0x10,0x2e,0x1e]
2185 // CHECK: fmov d30, #{{16.00000000|1.60*e\+01}} // encoding: [0x1e,0x10,0x66,0x1e]
2187 fmov s4, #1.0625
2188 fmov d10, #1.9375
2189 // CHECK: fmov s4, #{{1.06250*(e\+00)?}} // encoding: [0x04,0x30,0x2e,0x1e]
2190 // CHECK: fmov d10, #{{1.93750*(e\+00)?}} // encoding: [0x0a,0xf0,0x6f,0x1e]
2192 fmov s12, #-1.0
2193 // CHECK: fmov s12, #{{-1.0*(e\+00)?}} // encoding: [0x0c,0x10,0x3e,0x1e]
2195 fmov d16, #8.5
2196 // CHECK: fmov d16, #{{8.50*(e\+00)?}} // encoding: [0x10,0x30,0x64,0x1e]
2198 //------------------------------------------------------------------------------
2199 // Load-register (literal)
2200 //------------------------------------------------------------------------------
2201 ldr w3, here
2202 ldr x29, there
2203 ldrsw xzr, everywhere
2205 // CHECK: ldr w3, here // encoding: [0bAAA00011,A,A,0x18]
2206 // CHECK: // fixup A - offset: 0, value: here, kind: fixup_aarch64_ldr_pcrel_imm19
2207 // CHECK: ldr x29, there // encoding: [0bAAA11101,A,A,0x58]
2208 // CHECK: // fixup A - offset: 0, value: there, kind: fixup_aarch64_ldr_pcrel_imm19
2209 // CHECK: ldrsw xzr, everywhere // encoding: [0bAAA11111,A,A,0x98]
2210 // CHECK: // fixup A - offset: 0, value: everywhere, kind: fixup_aarch64_ldr_pcrel_imm19
2212 ldr s0, who_knows
2213 ldr d0, i_dont
2214 ldr q0, there_must_be_a_better_way
2216 // CHECK: ldr s0, who_knows // encoding: [0bAAA00000,A,A,0x1c]
2217 // CHECK: // fixup A - offset: 0, value: who_knows, kind: fixup_aarch64_ldr_pcrel_imm19
2218 // CHECK: ldr d0, i_dont // encoding: [0bAAA00000,A,A,0x5c]
2219 // CHECK: // fixup A - offset: 0, value: i_dont, kind: fixup_aarch64_ldr_pcrel_imm19
2220 // CHECK: ldr q0, there_must_be_a_better_way // encoding: [0bAAA00000,A,A,0x9c]
2221 // CHECK: // fixup A - offset: 0, value: there_must_be_a_better_way, kind: fixup_aarch64_ldr_pcrel_imm19
2223 ldr w0, #1048572
2224 ldr x10, #-1048576
2225 // CHECK: ldr w0, #1048572 // encoding: [0xe0,0xff,0x7f,0x18]
2226 // CHECK: ldr x10, #-1048576 // encoding: [0x0a,0x00,0x80,0x58]
2228 prfm pldl1strm, nowhere
2229 prfm #22, somewhere
2231 // CHECK: prfm pldl1strm, nowhere // encoding: [0bAAA00001,A,A,0xd8]
2232 // CHECK: // fixup A - offset: 0, value: nowhere, kind: fixup_aarch64_ldr_pcrel_imm19
2233 // CHECK: prfm #22, somewhere // encoding: [0bAAA10110,A,A,0xd8]
2234 // CHECK: // fixup A - offset: 0, value: somewhere, kind: fixup_aarch64_ldr_pcrel_imm19
2236 //------------------------------------------------------------------------------
2237 // Load/store exclusive
2238 //------------------------------------------------------------------------------
2240 stxrb w1, w2, [x3, #0]
2241 stxrh w2, w3, [x4]
2242 stxr wzr, w4, [sp]
2243 stxr w5, x6, [x7]
2244 // CHECK: stxrb w1, w2, [x3] // encoding: [0x62,0x7c,0x01,0x08]
2245 // CHECK: stxrh w2, w3, [x4] // encoding: [0x83,0x7c,0x02,0x48]
2246 // CHECK: stxr wzr, w4, [sp] // encoding: [0xe4,0x7f,0x1f,0x88]
2247 // CHECK: stxr w5, x6, [x7] // encoding: [0xe6,0x7c,0x05,0xc8]
2249 ldxrb w7, [x9]
2250 ldxrh wzr, [x10]
2251 ldxr w9, [sp]
2252 ldxr x10, [x11]
2253 // CHECK: ldxrb w7, [x9] // encoding: [0x27,0x7d,0x5f,0x08]
2254 // CHECK: ldxrh wzr, [x10] // encoding: [0x5f,0x7d,0x5f,0x48]
2255 // CHECK: ldxr w9, [sp] // encoding: [0xe9,0x7f,0x5f,0x88]
2256 // CHECK: ldxr x10, [x11] // encoding: [0x6a,0x7d,0x5f,0xc8]
2258 stxp w11, w12, w13, [x14]
2259 stxp wzr, x23, x14, [x15]
2260 // CHECK: stxp w11, w12, w13, [x14] // encoding: [0xcc,0x35,0x2b,0x88]
2261 // CHECK: stxp wzr, x23, x14, [x15] // encoding: [0xf7,0x39,0x3f,0xc8]
2263 ldxp w12, wzr, [sp]
2264 ldxp x13, x14, [x15]
2265 // CHECK: ldxp w12, wzr, [sp] // encoding: [0xec,0x7f,0x7f,0x88]
2266 // CHECK: ldxp x13, x14, [x15] // encoding: [0xed,0x39,0x7f,0xc8]
2268 stlxrb w14, w15, [x16]
2269 stlxrh w15, w16, [x17,#0]
2270 stlxr wzr, w17, [sp]
2271 stlxr w18, x19, [x20]
2272 // CHECK: stlxrb w14, w15, [x16] // encoding: [0x0f,0xfe,0x0e,0x08]
2273 // CHECK: stlxrh w15, w16, [x17] // encoding: [0x30,0xfe,0x0f,0x48]
2274 // CHECK: stlxr wzr, w17, [sp] // encoding: [0xf1,0xff,0x1f,0x88]
2275 // CHECK: stlxr w18, x19, [x20] // encoding: [0x93,0xfe,0x12,0xc8]
2277 ldaxrb w19, [x21]
2278 ldaxrh w20, [sp]
2279 ldaxr wzr, [x22]
2280 ldaxr x21, [x23]
2281 // CHECK: ldaxrb w19, [x21] // encoding: [0xb3,0xfe,0x5f,0x08]
2282 // CHECK: ldaxrh w20, [sp] // encoding: [0xf4,0xff,0x5f,0x48]
2283 // CHECK: ldaxr wzr, [x22] // encoding: [0xdf,0xfe,0x5f,0x88]
2284 // CHECK: ldaxr x21, [x23] // encoding: [0xf5,0xfe,0x5f,0xc8]
2286 stlxp wzr, w22, w23, [x24]
2287 stlxp w25, x26, x27, [sp]
2288 // CHECK: stlxp wzr, w22, w23, [x24] // encoding: [0x16,0xdf,0x3f,0x88]
2289 // CHECK: stlxp w25, x26, x27, [sp] // encoding: [0xfa,0xef,0x39,0xc8]
2291 ldaxp w26, wzr, [sp]
2292 ldaxp x27, x28, [x30]
2293 // CHECK: ldaxp w26, wzr, [sp] // encoding: [0xfa,0xff,0x7f,0x88]
2294 // CHECK: ldaxp x27, x28, [x30] // encoding: [0xdb,0xf3,0x7f,0xc8]
2296 stlrb w27, [sp]
2297 stlrh w28, [x0]
2298 stlr wzr, [x1]
2299 stlr x30, [x2]
2300 // CHECK: stlrb w27, [sp] // encoding: [0xfb,0xff,0x9f,0x08]
2301 // CHECK: stlrh w28, [x0] // encoding: [0x1c,0xfc,0x9f,0x48]
2302 // CHECK: stlr wzr, [x1] // encoding: [0x3f,0xfc,0x9f,0x88]
2303 // CHECK: stlr x30, [x2] // encoding: [0x5e,0xfc,0x9f,0xc8]
2305 ldarb w29, [sp]
2306 ldarh w30, [x0]
2307 ldar wzr, [x1]
2308 ldar x1, [x2]
2309 // CHECK: ldarb w29, [sp] // encoding: [0xfd,0xff,0xdf,0x08]
2310 // CHECK: ldarh w30, [x0] // encoding: [0x1e,0xfc,0xdf,0x48]
2311 // CHECK: ldar wzr, [x1] // encoding: [0x3f,0xfc,0xdf,0x88]
2312 // CHECK: ldar x1, [x2] // encoding: [0x41,0xfc,0xdf,0xc8]
2314 stlxp wzr, w22, w23, [x24,#0]
2315 // CHECK: stlxp wzr, w22, w23, [x24] // encoding: [0x16,0xdf,0x3f,0x88]
2317 //------------------------------------------------------------------------------
2318 // Load/store (unaligned immediate)
2319 //------------------------------------------------------------------------------
2321 sturb w9, [sp, #0]
2322 sturh wzr, [x12, #255]
2323 stur w16, [x0, #-256]
2324 stur x28, [x14, #1]
2325 // CHECK: sturb w9, [sp] // encoding: [0xe9,0x03,0x00,0x38]
2326 // CHECK: sturh wzr, [x12, #255] // encoding: [0x9f,0xf1,0x0f,0x78]
2327 // CHECK: stur w16, [x0, #-256] // encoding: [0x10,0x00,0x10,0xb8]
2328 // CHECK: stur x28, [x14, #1] // encoding: [0xdc,0x11,0x00,0xf8]
2330 ldurb w1, [x20, #255]
2331 ldurh w20, [x1, #255]
2332 ldur w12, [sp, #255]
2333 ldur xzr, [x12, #255]
2334 // CHECK: ldurb w1, [x20, #255] // encoding: [0x81,0xf2,0x4f,0x38]
2335 // CHECK: ldurh w20, [x1, #255] // encoding: [0x34,0xf0,0x4f,0x78]
2336 // CHECK: ldur w12, [sp, #255] // encoding: [0xec,0xf3,0x4f,0xb8]
2337 // CHECK: ldur xzr, [x12, #255] // encoding: [0x9f,0xf1,0x4f,0xf8]
2339 ldursb x9, [x7, #-256]
2340 ldursh x17, [x19, #-256]
2341 ldursw x20, [x15, #-256]
2342 ldursw x13, [x2]
2343 prfum pldl2keep, [sp, #-256]
2344 ldursb w19, [x1, #-256]
2345 ldursh w15, [x21, #-256]
2346 // CHECK: ldursb x9, [x7, #-256] // encoding: [0xe9,0x00,0x90,0x38]
2347 // CHECK: ldursh x17, [x19, #-256] // encoding: [0x71,0x02,0x90,0x78]
2348 // CHECK: ldursw x20, [x15, #-256] // encoding: [0xf4,0x01,0x90,0xb8]
2349 // CHECK: ldursw x13, [x2] // encoding: [0x4d,0x00,0x80,0xb8]
2350 // CHECK: prfum pldl2keep, [sp, #-256] // encoding: [0xe2,0x03,0x90,0xf8]
2351 // CHECK: ldursb w19, [x1, #-256] // encoding: [0x33,0x00,0xd0,0x38]
2352 // CHECK: ldursh w15, [x21, #-256] // encoding: [0xaf,0x02,0xd0,0x78]
2354 stur b0, [sp, #1]
2355 stur h12, [x12, #-1]
2356 stur s15, [x0, #255]
2357 stur d31, [x5, #25]
2358 stur q9, [x5]
2359 // CHECK: stur b0, [sp, #1] // encoding: [0xe0,0x13,0x00,0x3c]
2360 // CHECK: stur h12, [x12, #-1] // encoding: [0x8c,0xf1,0x1f,0x7c]
2361 // CHECK: stur s15, [x0, #255] // encoding: [0x0f,0xf0,0x0f,0xbc]
2362 // CHECK: stur d31, [x5, #25] // encoding: [0xbf,0x90,0x01,0xfc]
2363 // CHECK: stur q9, [x5] // encoding: [0xa9,0x00,0x80,0x3c]
2365 ldur b3, [sp]
2366 ldur h5, [x4, #-256]
2367 ldur s7, [x12, #-1]
2368 ldur d11, [x19, #4]
2369 ldur q13, [x1, #2]
2370 // CHECK: ldur b3, [sp] // encoding: [0xe3,0x03,0x40,0x3c]
2371 // CHECK: ldur h5, [x4, #-256] // encoding: [0x85,0x00,0x50,0x7c]
2372 // CHECK: ldur s7, [x12, #-1] // encoding: [0x87,0xf1,0x5f,0xbc]
2373 // CHECK: ldur d11, [x19, #4] // encoding: [0x6b,0x42,0x40,0xfc]
2374 // CHECK: ldur q13, [x1, #2] // encoding: [0x2d,0x20,0xc0,0x3c]
2376 //------------------------------------------------------------------------------
2377 // Load/store (unsigned immediate)
2378 //------------------------------------------------------------------------------
2380 //// Basic addressing mode limits: 8 byte access
2381 ldr x0, [x0]
2382 ldr x4, [x29, #0]
2383 ldr x30, [x12, #32760]
2384 ldr x20, [sp, #8]
2385 // CHECK: ldr x0, [x0] // encoding: [0x00,0x00,0x40,0xf9]
2386 // CHECK: ldr x4, [x29] // encoding: [0xa4,0x03,0x40,0xf9]
2387 // CHECK: ldr x30, [x12, #32760] // encoding: [0x9e,0xfd,0x7f,0xf9]
2388 // CHECK: ldr x20, [sp, #8] // encoding: [0xf4,0x07,0x40,0xf9]
2390 //// Rt treats 31 as zero-register
2391 ldr xzr, [sp]
2392 // CHECK: ldr xzr, [sp] // encoding: [0xff,0x03,0x40,0xf9]
2394 //// 4-byte load, check still 64-bit address, limits
2395 ldr w2, [sp]
2396 ldr w17, [sp, #16380]
2397 ldr w13, [x2, #4]
2398 // CHECK: ldr w2, [sp] // encoding: [0xe2,0x03,0x40,0xb9]
2399 // CHECK: ldr w17, [sp, #16380] // encoding: [0xf1,0xff,0x7f,0xb9]
2400 // CHECK: ldr w13, [x2, #4] // encoding: [0x4d,0x04,0x40,0xb9]
2402 //// Signed 4-byte load. Limits.
2403 ldrsw x2, [x5,#4]
2404 ldrsw x23, [sp, #16380]
2405 // CHECK: ldrsw x2, [x5, #4] // encoding: [0xa2,0x04,0x80,0xb9]
2406 // CHECK: ldrsw x23, [sp, #16380] // encoding: [0xf7,0xff,0xbf,0xb9]
2408 //// 2-byte loads
2409 ldrh w2, [x4]
2410 ldrsh w23, [x6, #8190]
2411 ldrsh wzr, [sp, #2]
2412 ldrsh x29, [x2, #2]
2413 // CHECK: ldrh w2, [x4] // encoding: [0x82,0x00,0x40,0x79]
2414 // CHECK: ldrsh w23, [x6, #8190] // encoding: [0xd7,0xfc,0xff,0x79]
2415 // CHECK: ldrsh wzr, [sp, #2] // encoding: [0xff,0x07,0xc0,0x79]
2416 // CHECK: ldrsh x29, [x2, #2] // encoding: [0x5d,0x04,0x80,0x79]
2418 //// 1-byte loads
2419 ldrb w26, [x3, #121]
2420 ldrb w12, [x2, #0]
2421 ldrsb w27, [sp, #4095]
2422 ldrsb xzr, [x15]
2423 // CHECK: ldrb w26, [x3, #121] // encoding: [0x7a,0xe4,0x41,0x39]
2424 // CHECK: ldrb w12, [x2] // encoding: [0x4c,0x00,0x40,0x39]
2425 // CHECK: ldrsb w27, [sp, #4095] // encoding: [0xfb,0xff,0xff,0x39]
2426 // CHECK: ldrsb xzr, [x15] // encoding: [0xff,0x01,0x80,0x39]
2428 //// Stores
2429 str x30, [sp]
2430 str w20, [x4, #16380]
2431 strh w20, [x10, #14]
2432 strh w17, [sp, #8190]
2433 strb w23, [x3, #4095]
2434 strb wzr, [x2]
2435 // CHECK: str x30, [sp] // encoding: [0xfe,0x03,0x00,0xf9]
2436 // CHECK: str w20, [x4, #16380] // encoding: [0x94,0xfc,0x3f,0xb9]
2437 // CHECK: strh w20, [x10, #14] // encoding: [0x54,0x1d,0x00,0x79]
2438 // CHECK: strh w17, [sp, #8190] // encoding: [0xf1,0xff,0x3f,0x79]
2439 // CHECK: strb w23, [x3, #4095] // encoding: [0x77,0xfc,0x3f,0x39]
2440 // CHECK: strb wzr, [x2] // encoding: [0x5f,0x00,0x00,0x39]
2442 //// Relocations
2443 str x15, [x5, #:lo12:sym]
2444 ldrb w15, [x5, #:lo12:sym]
2445 ldrsh x15, [x5, #:lo12:sym]
2446 ldrsw x15, [x5, #:lo12:sym]
2447 ldr x15, [x5, #:lo12:sym]
2448 ldr q3, [x2, #:lo12:sym]
2450 // CHECK: str x15, [x5, :lo12:sym] // encoding: [0xaf,0bAAAAAA00,0b00AAAAAA,0xf9]
2451 // CHECK: // fixup A - offset: 0, value: :lo12:sym, kind: fixup_aarch64_ldst_imm12_scale8
2452 // CHECK: ldrb w15, [x5, :lo12:sym] // encoding: [0xaf,0bAAAAAA00,0b01AAAAAA,0x39]
2453 // CHECK: // fixup A - offset: 0, value: :lo12:sym, kind: fixup_aarch64_ldst_imm12_scale1
2454 // CHECK: ldrsh x15, [x5, :lo12:sym] // encoding: [0xaf,0bAAAAAA00,0b10AAAAAA,0x79]
2455 // CHECK: // fixup A - offset: 0, value: :lo12:sym, kind: fixup_aarch64_ldst_imm12_scale2
2456 // CHECK: ldrsw x15, [x5, :lo12:sym] // encoding: [0xaf,0bAAAAAA00,0b10AAAAAA,0xb9]
2457 // CHECK: // fixup A - offset: 0, value: :lo12:sym, kind: fixup_aarch64_ldst_imm12_scale4
2458 // CHECK: ldr x15, [x5, :lo12:sym] // encoding: [0xaf,0bAAAAAA00,0b01AAAAAA,0xf9]
2459 // CHECK: // fixup A - offset: 0, value: :lo12:sym, kind: fixup_aarch64_ldst_imm12_scale8
2460 // CHECK: ldr q3, [x2, :lo12:sym] // encoding: [0x43,0bAAAAAA00,0b11AAAAAA,0x3d]
2461 // CHECK: // fixup A - offset: 0, value: :lo12:sym, kind: fixup_aarch64_ldst_imm12_scale16
2463 prfm pldl1keep, [sp, #8]
2464 prfm pldl1strm, [x3]
2465 prfm pldl2keep, [x5,#16]
2466 prfm pldl2strm, [x2]
2467 prfm pldl3keep, [x5]
2468 prfm pldl3strm, [x6]
2469 prfm plil1keep, [sp, #8]
2470 prfm plil1strm, [x3]
2471 prfm plil2keep, [x5,#16]
2472 prfm plil2strm, [x2]
2473 prfm plil3keep, [x5]
2474 prfm plil3strm, [x6]
2475 prfm pstl1keep, [sp, #8]
2476 prfm pstl1strm, [x3]
2477 prfm pstl2keep, [x5,#16]
2478 prfm pstl2strm, [x2]
2479 prfm pstl3keep, [x5]
2480 prfm pstl3strm, [x6]
2481 prfm #15, [sp]
2482 // CHECK: prfm pldl1keep, [sp, #8] // encoding: [0xe0,0x07,0x80,0xf9]
2483 // CHECK: prfm pldl1strm, [x3{{(, #0)?}}] // encoding: [0x61,0x00,0x80,0xf9]
2484 // CHECK: prfm pldl2keep, [x5, #16] // encoding: [0xa2,0x08,0x80,0xf9]
2485 // CHECK: prfm pldl2strm, [x2{{(, #0)?}}] // encoding: [0x43,0x00,0x80,0xf9]
2486 // CHECK: prfm pldl3keep, [x5{{(, #0)?}}] // encoding: [0xa4,0x00,0x80,0xf9]
2487 // CHECK: prfm pldl3strm, [x6{{(, #0)?}}] // encoding: [0xc5,0x00,0x80,0xf9]
2488 // CHECK: prfm plil1keep, [sp, #8] // encoding: [0xe8,0x07,0x80,0xf9]
2489 // CHECK: prfm plil1strm, [x3{{(, #0)?}}] // encoding: [0x69,0x00,0x80,0xf9]
2490 // CHECK: prfm plil2keep, [x5, #16] // encoding: [0xaa,0x08,0x80,0xf9]
2491 // CHECK: prfm plil2strm, [x2{{(, #0)?}}] // encoding: [0x4b,0x00,0x80,0xf9]
2492 // CHECK: prfm plil3keep, [x5{{(, #0)?}}] // encoding: [0xac,0x00,0x80,0xf9]
2493 // CHECK: prfm plil3strm, [x6{{(, #0)?}}] // encoding: [0xcd,0x00,0x80,0xf9]
2494 // CHECK: prfm pstl1keep, [sp, #8] // encoding: [0xf0,0x07,0x80,0xf9]
2495 // CHECK: prfm pstl1strm, [x3{{(, #0)?}}] // encoding: [0x71,0x00,0x80,0xf9]
2496 // CHECK: prfm pstl2keep, [x5, #16] // encoding: [0xb2,0x08,0x80,0xf9]
2497 // CHECK: prfm pstl2strm, [x2{{(, #0)?}}] // encoding: [0x53,0x00,0x80,0xf9]
2498 // CHECK: prfm pstl3keep, [x5{{(, #0)?}}] // encoding: [0xb4,0x00,0x80,0xf9]
2499 // CHECK: prfm pstl3strm, [x6{{(, #0)?}}] // encoding: [0xd5,0x00,0x80,0xf9]
2500 // CHECK: prfm #15, [sp{{(, #0)?}}] // encoding: [0xef,0x03,0x80,0xf9]
2502 //// Floating-point versions
2504 ldr b31, [sp, #4095]
2505 ldr h20, [x2, #8190]
2506 ldr s10, [x19, #16380]
2507 ldr d3, [x10, #32760]
2508 str q12, [sp, #65520]
2509 // CHECK: ldr b31, [sp, #4095] // encoding: [0xff,0xff,0x7f,0x3d]
2510 // CHECK: ldr h20, [x2, #8190] // encoding: [0x54,0xfc,0x7f,0x7d]
2511 // CHECK: ldr s10, [x19, #16380] // encoding: [0x6a,0xfe,0x7f,0xbd]
2512 // CHECK: ldr d3, [x10, #32760] // encoding: [0x43,0xfd,0x7f,0xfd]
2513 // CHECK: str q12, [sp, #65520] // encoding: [0xec,0xff,0xbf,0x3d]
2515 //------------------------------------------------------------------------------
2516 // Load/store register (register offset)
2517 //------------------------------------------------------------------------------
2519 ldrb w3, [sp, x5]
2520 ldrb w9, [x27, x6, lsl #0]
2521 ldrsb w10, [x30, x7]
2522 ldrb w11, [x29, x3, sxtx]
2523 strb w12, [x28, xzr, sxtx #0]
2524 ldrb w14, [x26, w6, uxtw]
2525 ldrsb w15, [x25, w7, uxtw #0]
2526 ldrb w17, [x23, w9, sxtw]
2527 ldrsb x18, [x22, w10, sxtw #0]
2528 // CHECK: ldrb w3, [sp, x5] // encoding: [0xe3,0x6b,0x65,0x38]
2529 // CHECK: ldrb w9, [x27, x6, lsl #0] // encoding: [0x69,0x7b,0x66,0x38]
2530 // CHECK: ldrsb w10, [x30, x7] // encoding: [0xca,0x6b,0xe7,0x38]
2531 // CHECK: ldrb w11, [x29, x3, sxtx] // encoding: [0xab,0xeb,0x63,0x38]
2532 // CHECK: strb w12, [x28, xzr, sxtx #0] // encoding: [0x8c,0xfb,0x3f,0x38]
2533 // CHECK: ldrb w14, [x26, w6, uxtw] // encoding: [0x4e,0x4b,0x66,0x38]
2534 // CHECK: ldrsb w15, [x25, w7, uxtw #0] // encoding: [0x2f,0x5b,0xe7,0x38]
2535 // CHECK: ldrb w17, [x23, w9, sxtw] // encoding: [0xf1,0xca,0x69,0x38]
2536 // CHECK: ldrsb x18, [x22, w10, sxtw #0] // encoding: [0xd2,0xda,0xaa,0x38]
2538 ldrsh w3, [sp, x5]
2539 ldrsh w9, [x27, x6, lsl #0]
2540 ldrh w10, [x30, x7, lsl #1]
2541 strh w11, [x29, x3, sxtx]
2542 ldrh w12, [x28, xzr, sxtx #0]
2543 ldrsh x13, [x27, x5, sxtx #1]
2544 ldrh w14, [x26, w6, uxtw]
2545 ldrh w15, [x25, w7, uxtw #0]
2546 ldrsh w16, [x24, w8, uxtw #1]
2547 ldrh w17, [x23, w9, sxtw]
2548 ldrh w18, [x22, w10, sxtw #0]
2549 strh w19, [x21, wzr, sxtw #1]
2550 // CHECK: ldrsh w3, [sp, x5] // encoding: [0xe3,0x6b,0xe5,0x78]
2551 // CHECK: ldrsh w9, [x27, x6] // encoding: [0x69,0x6b,0xe6,0x78]
2552 // CHECK: ldrh w10, [x30, x7, lsl #1] // encoding: [0xca,0x7b,0x67,0x78]
2553 // CHECK: strh w11, [x29, x3, sxtx] // encoding: [0xab,0xeb,0x23,0x78]
2554 // CHECK: ldrh w12, [x28, xzr, sxtx] // encoding: [0x8c,0xeb,0x7f,0x78]
2555 // CHECK: ldrsh x13, [x27, x5, sxtx #1] // encoding: [0x6d,0xfb,0xa5,0x78]
2556 // CHECK: ldrh w14, [x26, w6, uxtw] // encoding: [0x4e,0x4b,0x66,0x78]
2557 // CHECK: ldrh w15, [x25, w7, uxtw] // encoding: [0x2f,0x4b,0x67,0x78]
2558 // CHECK: ldrsh w16, [x24, w8, uxtw #1] // encoding: [0x10,0x5b,0xe8,0x78]
2559 // CHECK: ldrh w17, [x23, w9, sxtw] // encoding: [0xf1,0xca,0x69,0x78]
2560 // CHECK: ldrh w18, [x22, w10, sxtw] // encoding: [0xd2,0xca,0x6a,0x78]
2561 // CHECK: strh w19, [x21, wzr, sxtw #1] // encoding: [0xb3,0xda,0x3f,0x78]
2563 ldr w3, [sp, x5]
2564 ldr s9, [x27, x6, lsl #0]
2565 ldr w10, [x30, x7, lsl #2]
2566 ldr w11, [x29, x3, sxtx]
2567 str s12, [x28, xzr, sxtx #0]
2568 str w13, [x27, x5, sxtx #2]
2569 str w14, [x26, w6, uxtw]
2570 ldr w15, [x25, w7, uxtw #0]
2571 ldr w16, [x24, w8, uxtw #2]
2572 ldrsw x17, [x23, w9, sxtw]
2573 ldr w18, [x22, w10, sxtw #0]
2574 ldrsw x19, [x21, wzr, sxtw #2]
2575 // CHECK: ldr w3, [sp, x5] // encoding: [0xe3,0x6b,0x65,0xb8]
2576 // CHECK: ldr s9, [x27, x6] // encoding: [0x69,0x6b,0x66,0xbc]
2577 // CHECK: ldr w10, [x30, x7, lsl #2] // encoding: [0xca,0x7b,0x67,0xb8]
2578 // CHECK: ldr w11, [x29, x3, sxtx] // encoding: [0xab,0xeb,0x63,0xb8]
2579 // CHECK: str s12, [x28, xzr, sxtx] // encoding: [0x8c,0xeb,0x3f,0xbc]
2580 // CHECK: str w13, [x27, x5, sxtx #2] // encoding: [0x6d,0xfb,0x25,0xb8]
2581 // CHECK: str w14, [x26, w6, uxtw] // encoding: [0x4e,0x4b,0x26,0xb8]
2582 // CHECK: ldr w15, [x25, w7, uxtw] // encoding: [0x2f,0x4b,0x67,0xb8]
2583 // CHECK: ldr w16, [x24, w8, uxtw #2] // encoding: [0x10,0x5b,0x68,0xb8]
2584 // CHECK: ldrsw x17, [x23, w9, sxtw] // encoding: [0xf1,0xca,0xa9,0xb8]
2585 // CHECK: ldr w18, [x22, w10, sxtw] // encoding: [0xd2,0xca,0x6a,0xb8]
2586 // CHECK: ldrsw x19, [x21, wzr, sxtw #2] // encoding: [0xb3,0xda,0xbf,0xb8]
2588 ldr x3, [sp, x5]
2589 str x9, [x27, x6, lsl #0]
2590 ldr d10, [x30, x7, lsl #3]
2591 str x11, [x29, x3, sxtx]
2592 ldr x12, [x28, xzr, sxtx #0]
2593 ldr x13, [x27, x5, sxtx #3]
2594 prfm pldl1keep, [x26, w6, uxtw]
2595 ldr x15, [x25, w7, uxtw #0]
2596 ldr x16, [x24, w8, uxtw #3]
2597 ldr x17, [x23, w9, sxtw]
2598 ldr x18, [x22, w10, sxtw #0]
2599 str d19, [x21, wzr, sxtw #3]
2600 prfm #6, [x0, x5]
2601 // CHECK: ldr x3, [sp, x5] // encoding: [0xe3,0x6b,0x65,0xf8]
2602 // CHECK: str x9, [x27, x6] // encoding: [0x69,0x6b,0x26,0xf8]
2603 // CHECK: ldr d10, [x30, x7, lsl #3] // encoding: [0xca,0x7b,0x67,0xfc]
2604 // CHECK: str x11, [x29, x3, sxtx] // encoding: [0xab,0xeb,0x23,0xf8]
2605 // CHECK: ldr x12, [x28, xzr, sxtx] // encoding: [0x8c,0xeb,0x7f,0xf8]
2606 // CHECK: ldr x13, [x27, x5, sxtx #3] // encoding: [0x6d,0xfb,0x65,0xf8]
2607 // CHECK: prfm pldl1keep, [x26, w6, uxtw] // encoding: [0x40,0x4b,0xa6,0xf8]
2608 // CHECK: ldr x15, [x25, w7, uxtw] // encoding: [0x2f,0x4b,0x67,0xf8]
2609 // CHECK: ldr x16, [x24, w8, uxtw #3] // encoding: [0x10,0x5b,0x68,0xf8]
2610 // CHECK: ldr x17, [x23, w9, sxtw] // encoding: [0xf1,0xca,0x69,0xf8]
2611 // CHECK: ldr x18, [x22, w10, sxtw] // encoding: [0xd2,0xca,0x6a,0xf8]
2612 // CHECK: str d19, [x21, wzr, sxtw #3] // encoding: [0xb3,0xda,0x3f,0xfc]
2613 // CHECK: prfm #6, [x0, x5{{(, lsl #0)?}}] // encoding: [0x06,0x68,0xa5,0xf8]
2615 ldr q3, [sp, x5]
2616 ldr q9, [x27, x6, lsl #0]
2617 ldr q10, [x30, x7, lsl #4]
2618 str q11, [x29, x3, sxtx]
2619 str q12, [x28, xzr, sxtx #0]
2620 str q13, [x27, x5, sxtx #4]
2621 ldr q14, [x26, w6, uxtw]
2622 ldr q15, [x25, w7, uxtw #0]
2623 ldr q16, [x24, w8, uxtw #4]
2624 ldr q17, [x23, w9, sxtw]
2625 str q18, [x22, w10, sxtw #0]
2626 ldr q19, [x21, wzr, sxtw #4]
2627 // CHECK: ldr q3, [sp, x5] // encoding: [0xe3,0x6b,0xe5,0x3c]
2628 // CHECK: ldr q9, [x27, x6] // encoding: [0x69,0x6b,0xe6,0x3c]
2629 // CHECK: ldr q10, [x30, x7, lsl #4] // encoding: [0xca,0x7b,0xe7,0x3c]
2630 // CHECK: str q11, [x29, x3, sxtx] // encoding: [0xab,0xeb,0xa3,0x3c]
2631 // CHECK: str q12, [x28, xzr, sxtx] // encoding: [0x8c,0xeb,0xbf,0x3c]
2632 // CHECK: str q13, [x27, x5, sxtx #4] // encoding: [0x6d,0xfb,0xa5,0x3c]
2633 // CHECK: ldr q14, [x26, w6, uxtw] // encoding: [0x4e,0x4b,0xe6,0x3c]
2634 // CHECK: ldr q15, [x25, w7, uxtw] // encoding: [0x2f,0x4b,0xe7,0x3c]
2635 // CHECK: ldr q16, [x24, w8, uxtw #4] // encoding: [0x10,0x5b,0xe8,0x3c]
2636 // CHECK: ldr q17, [x23, w9, sxtw] // encoding: [0xf1,0xca,0xe9,0x3c]
2637 // CHECK: str q18, [x22, w10, sxtw] // encoding: [0xd2,0xca,0xaa,0x3c]
2638 // CHECK: ldr q19, [x21, wzr, sxtw #4] // encoding: [0xb3,0xda,0xff,0x3c]
2640 //------------------------------------------------------------------------------
2641 // Load/store register (immediate post-indexed)
2642 //------------------------------------------------------------------------------
2644 strb w9, [x2], #255
2645 strb w10, [x3], #1
2646 strb w10, [x3], #-256
2647 strh w9, [x2], #255
2648 strh w9, [x2], #1
2649 strh w10, [x3], #-256
2650 // CHECK: strb w9, [x2], #255 // encoding: [0x49,0xf4,0x0f,0x38]
2651 // CHECK: strb w10, [x3], #1 // encoding: [0x6a,0x14,0x00,0x38]
2652 // CHECK: strb w10, [x3], #-256 // encoding: [0x6a,0x04,0x10,0x38]
2653 // CHECK: strh w9, [x2], #255 // encoding: [0x49,0xf4,0x0f,0x78]
2654 // CHECK: strh w9, [x2], #1 // encoding: [0x49,0x14,0x00,0x78]
2655 // CHECK: strh w10, [x3], #-256 // encoding: [0x6a,0x04,0x10,0x78]
2657 str w19, [sp], #255
2658 str w20, [x30], #1
2659 str w21, [x12], #-256
2660 str xzr, [x9], #255
2661 str x2, [x3], #1
2662 str x19, [x12], #-256
2663 // CHECK: str w19, [sp], #255 // encoding: [0xf3,0xf7,0x0f,0xb8]
2664 // CHECK: str w20, [x30], #1 // encoding: [0xd4,0x17,0x00,0xb8]
2665 // CHECK: str w21, [x12], #-256 // encoding: [0x95,0x05,0x10,0xb8]
2666 // CHECK: str xzr, [x9], #255 // encoding: [0x3f,0xf5,0x0f,0xf8]
2667 // CHECK: str x2, [x3], #1 // encoding: [0x62,0x14,0x00,0xf8]
2668 // CHECK: str x19, [x12], #-256 // encoding: [0x93,0x05,0x10,0xf8]
2670 ldrb w9, [x2], #255
2671 ldrb w10, [x3], #1
2672 ldrb w10, [x3], #-256
2673 ldrh w9, [x2], #255
2674 ldrh w9, [x2], #1
2675 ldrh w10, [x3], #-256
2676 // CHECK: ldrb w9, [x2], #255 // encoding: [0x49,0xf4,0x4f,0x38]
2677 // CHECK: ldrb w10, [x3], #1 // encoding: [0x6a,0x14,0x40,0x38]
2678 // CHECK: ldrb w10, [x3], #-256 // encoding: [0x6a,0x04,0x50,0x38]
2679 // CHECK: ldrh w9, [x2], #255 // encoding: [0x49,0xf4,0x4f,0x78]
2680 // CHECK: ldrh w9, [x2], #1 // encoding: [0x49,0x14,0x40,0x78]
2681 // CHECK: ldrh w10, [x3], #-256 // encoding: [0x6a,0x04,0x50,0x78]
2683 ldr w19, [sp], #255
2684 ldr w20, [x30], #1
2685 ldr w21, [x12], #-256
2686 ldr xzr, [x9], #255
2687 ldr x2, [x3], #1
2688 ldr x19, [x12], #-256
2689 // CHECK: ldr w19, [sp], #255 // encoding: [0xf3,0xf7,0x4f,0xb8]
2690 // CHECK: ldr w20, [x30], #1 // encoding: [0xd4,0x17,0x40,0xb8]
2691 // CHECK: ldr w21, [x12], #-256 // encoding: [0x95,0x05,0x50,0xb8]
2692 // CHECK: ldr xzr, [x9], #255 // encoding: [0x3f,0xf5,0x4f,0xf8]
2693 // CHECK: ldr x2, [x3], #1 // encoding: [0x62,0x14,0x40,0xf8]
2694 // CHECK: ldr x19, [x12], #-256 // encoding: [0x93,0x05,0x50,0xf8]
2696 ldrsb xzr, [x9], #255
2697 ldrsb x2, [x3], #1
2698 ldrsb x19, [x12], #-256
2699 ldrsh xzr, [x9], #255
2700 ldrsh x2, [x3], #1
2701 ldrsh x19, [x12], #-256
2702 ldrsw xzr, [x9], #255
2703 ldrsw x2, [x3], #1
2704 ldrsw x19, [x12], #-256
2705 // CHECK: ldrsb xzr, [x9], #255 // encoding: [0x3f,0xf5,0x8f,0x38]
2706 // CHECK: ldrsb x2, [x3], #1 // encoding: [0x62,0x14,0x80,0x38]
2707 // CHECK: ldrsb x19, [x12], #-256 // encoding: [0x93,0x05,0x90,0x38]
2708 // CHECK: ldrsh xzr, [x9], #255 // encoding: [0x3f,0xf5,0x8f,0x78]
2709 // CHECK: ldrsh x2, [x3], #1 // encoding: [0x62,0x14,0x80,0x78]
2710 // CHECK: ldrsh x19, [x12], #-256 // encoding: [0x93,0x05,0x90,0x78]
2711 // CHECK: ldrsw xzr, [x9], #255 // encoding: [0x3f,0xf5,0x8f,0xb8]
2712 // CHECK: ldrsw x2, [x3], #1 // encoding: [0x62,0x14,0x80,0xb8]
2713 // CHECK: ldrsw x19, [x12], #-256 // encoding: [0x93,0x05,0x90,0xb8]
2715 ldrsb wzr, [x9], #255
2716 ldrsb w2, [x3], #1
2717 ldrsb w19, [x12], #-256
2718 ldrsh wzr, [x9], #255
2719 ldrsh w2, [x3], #1
2720 ldrsh w19, [x12], #-256
2721 // CHECK: ldrsb wzr, [x9], #255 // encoding: [0x3f,0xf5,0xcf,0x38]
2722 // CHECK: ldrsb w2, [x3], #1 // encoding: [0x62,0x14,0xc0,0x38]
2723 // CHECK: ldrsb w19, [x12], #-256 // encoding: [0x93,0x05,0xd0,0x38]
2724 // CHECK: ldrsh wzr, [x9], #255 // encoding: [0x3f,0xf5,0xcf,0x78]
2725 // CHECK: ldrsh w2, [x3], #1 // encoding: [0x62,0x14,0xc0,0x78]
2726 // CHECK: ldrsh w19, [x12], #-256 // encoding: [0x93,0x05,0xd0,0x78]
2728 str b0, [x0], #255
2729 str b3, [x3], #1
2730 str b5, [sp], #-256
2731 str h10, [x10], #255
2732 str h13, [x23], #1
2733 str h15, [sp], #-256
2734 str s20, [x20], #255
2735 str s23, [x23], #1
2736 str s25, [x0], #-256
2737 str d20, [x20], #255
2738 str d23, [x23], #1
2739 str d25, [x0], #-256
2740 // CHECK: str b0, [x0], #255 // encoding: [0x00,0xf4,0x0f,0x3c]
2741 // CHECK: str b3, [x3], #1 // encoding: [0x63,0x14,0x00,0x3c]
2742 // CHECK: str b5, [sp], #-256 // encoding: [0xe5,0x07,0x10,0x3c]
2743 // CHECK: str h10, [x10], #255 // encoding: [0x4a,0xf5,0x0f,0x7c]
2744 // CHECK: str h13, [x23], #1 // encoding: [0xed,0x16,0x00,0x7c]
2745 // CHECK: str h15, [sp], #-256 // encoding: [0xef,0x07,0x10,0x7c]
2746 // CHECK: str s20, [x20], #255 // encoding: [0x94,0xf6,0x0f,0xbc]
2747 // CHECK: str s23, [x23], #1 // encoding: [0xf7,0x16,0x00,0xbc]
2748 // CHECK: str s25, [x0], #-256 // encoding: [0x19,0x04,0x10,0xbc]
2749 // CHECK: str d20, [x20], #255 // encoding: [0x94,0xf6,0x0f,0xfc]
2750 // CHECK: str d23, [x23], #1 // encoding: [0xf7,0x16,0x00,0xfc]
2751 // CHECK: str d25, [x0], #-256 // encoding: [0x19,0x04,0x10,0xfc]
2753 ldr b0, [x0], #255
2754 ldr b3, [x3], #1
2755 ldr b5, [sp], #-256
2756 ldr h10, [x10], #255
2757 ldr h13, [x23], #1
2758 ldr h15, [sp], #-256
2759 ldr s20, [x20], #255
2760 ldr s23, [x23], #1
2761 ldr s25, [x0], #-256
2762 ldr d20, [x20], #255
2763 ldr d23, [x23], #1
2764 ldr d25, [x0], #-256
2765 // CHECK: ldr b0, [x0], #255 // encoding: [0x00,0xf4,0x4f,0x3c]
2766 // CHECK: ldr b3, [x3], #1 // encoding: [0x63,0x14,0x40,0x3c]
2767 // CHECK: ldr b5, [sp], #-256 // encoding: [0xe5,0x07,0x50,0x3c]
2768 // CHECK: ldr h10, [x10], #255 // encoding: [0x4a,0xf5,0x4f,0x7c]
2769 // CHECK: ldr h13, [x23], #1 // encoding: [0xed,0x16,0x40,0x7c]
2770 // CHECK: ldr h15, [sp], #-256 // encoding: [0xef,0x07,0x50,0x7c]
2771 // CHECK: ldr s20, [x20], #255 // encoding: [0x94,0xf6,0x4f,0xbc]
2772 // CHECK: ldr s23, [x23], #1 // encoding: [0xf7,0x16,0x40,0xbc]
2773 // CHECK: ldr s25, [x0], #-256 // encoding: [0x19,0x04,0x50,0xbc]
2774 // CHECK: ldr d20, [x20], #255 // encoding: [0x94,0xf6,0x4f,0xfc]
2775 // CHECK: ldr d23, [x23], #1 // encoding: [0xf7,0x16,0x40,0xfc]
2776 // CHECK: ldr d25, [x0], #-256 // encoding: [0x19,0x04,0x50,0xfc]
2778 ldr q20, [x1], #255
2779 ldr q23, [x9], #1
2780 ldr q25, [x20], #-256
2781 str q10, [x1], #255
2782 str q22, [sp], #1
2783 str q21, [x20], #-256
2784 // CHECK: ldr q20, [x1], #255 // encoding: [0x34,0xf4,0xcf,0x3c]
2785 // CHECK: ldr q23, [x9], #1 // encoding: [0x37,0x15,0xc0,0x3c]
2786 // CHECK: ldr q25, [x20], #-256 // encoding: [0x99,0x06,0xd0,0x3c]
2787 // CHECK: str q10, [x1], #255 // encoding: [0x2a,0xf4,0x8f,0x3c]
2788 // CHECK: str q22, [sp], #1 // encoding: [0xf6,0x17,0x80,0x3c]
2789 // CHECK: str q21, [x20], #-256 // encoding: [0x95,0x06,0x90,0x3c]
2791 //------------------------------------------------------------------------------
2792 // Load/store register (immediate pre-indexed)
2793 //------------------------------------------------------------------------------
2795 ldr x3, [x4, #0]!
2796 ldr xzr, [sp, #0]!
2797 // CHECK: ldr x3, [x4, #0]! // encoding: [0x83,0x0c,0x40,0xf8]
2798 // CHECK: ldr xzr, [sp, #0]! // encoding: [0xff,0x0f,0x40,0xf8]
2800 strb w9, [x2, #255]!
2801 strb w10, [x3, #1]!
2802 strb w10, [x3, #-256]!
2803 strh w9, [x2, #255]!
2804 strh w9, [x2, #1]!
2805 strh w10, [x3, #-256]!
2806 // CHECK: strb w9, [x2, #255]! // encoding: [0x49,0xfc,0x0f,0x38]
2807 // CHECK: strb w10, [x3, #1]! // encoding: [0x6a,0x1c,0x00,0x38]
2808 // CHECK: strb w10, [x3, #-256]! // encoding: [0x6a,0x0c,0x10,0x38]
2809 // CHECK: strh w9, [x2, #255]! // encoding: [0x49,0xfc,0x0f,0x78]
2810 // CHECK: strh w9, [x2, #1]! // encoding: [0x49,0x1c,0x00,0x78]
2811 // CHECK: strh w10, [x3, #-256]! // encoding: [0x6a,0x0c,0x10,0x78]
2813 str w19, [sp, #255]!
2814 str w20, [x30, #1]!
2815 str w21, [x12, #-256]!
2816 str xzr, [x9, #255]!
2817 str x2, [x3, #1]!
2818 str x19, [x12, #-256]!
2819 // CHECK: str w19, [sp, #255]! // encoding: [0xf3,0xff,0x0f,0xb8]
2820 // CHECK: str w20, [x30, #1]! // encoding: [0xd4,0x1f,0x00,0xb8]
2821 // CHECK: str w21, [x12, #-256]! // encoding: [0x95,0x0d,0x10,0xb8]
2822 // CHECK: str xzr, [x9, #255]! // encoding: [0x3f,0xfd,0x0f,0xf8]
2823 // CHECK: str x2, [x3, #1]! // encoding: [0x62,0x1c,0x00,0xf8]
2824 // CHECK: str x19, [x12, #-256]! // encoding: [0x93,0x0d,0x10,0xf8]
2826 ldrb w9, [x2, #255]!
2827 ldrb w10, [x3, #1]!
2828 ldrb w10, [x3, #-256]!
2829 ldrh w9, [x2, #255]!
2830 ldrh w9, [x2, #1]!
2831 ldrh w10, [x3, #-256]!
2832 // CHECK: ldrb w9, [x2, #255]! // encoding: [0x49,0xfc,0x4f,0x38]
2833 // CHECK: ldrb w10, [x3, #1]! // encoding: [0x6a,0x1c,0x40,0x38]
2834 // CHECK: ldrb w10, [x3, #-256]! // encoding: [0x6a,0x0c,0x50,0x38]
2835 // CHECK: ldrh w9, [x2, #255]! // encoding: [0x49,0xfc,0x4f,0x78]
2836 // CHECK: ldrh w9, [x2, #1]! // encoding: [0x49,0x1c,0x40,0x78]
2837 // CHECK: ldrh w10, [x3, #-256]! // encoding: [0x6a,0x0c,0x50,0x78]
2839 ldr w19, [sp, #255]!
2840 ldr w20, [x30, #1]!
2841 ldr w21, [x12, #-256]!
2842 ldr xzr, [x9, #255]!
2843 ldr x2, [x3, #1]!
2844 ldr x19, [x12, #-256]!
2845 // CHECK: ldr w19, [sp, #255]! // encoding: [0xf3,0xff,0x4f,0xb8]
2846 // CHECK: ldr w20, [x30, #1]! // encoding: [0xd4,0x1f,0x40,0xb8]
2847 // CHECK: ldr w21, [x12, #-256]! // encoding: [0x95,0x0d,0x50,0xb8]
2848 // CHECK: ldr xzr, [x9, #255]! // encoding: [0x3f,0xfd,0x4f,0xf8]
2849 // CHECK: ldr x2, [x3, #1]! // encoding: [0x62,0x1c,0x40,0xf8]
2850 // CHECK: ldr x19, [x12, #-256]! // encoding: [0x93,0x0d,0x50,0xf8]
2852 ldrsb xzr, [x9, #255]!
2853 ldrsb x2, [x3, #1]!
2854 ldrsb x19, [x12, #-256]!
2855 ldrsh xzr, [x9, #255]!
2856 ldrsh x2, [x3, #1]!
2857 ldrsh x19, [x12, #-256]!
2858 ldrsw xzr, [x9, #255]!
2859 ldrsw x2, [x3, #1]!
2860 ldrsw x19, [x12, #-256]!
2861 // CHECK: ldrsb xzr, [x9, #255]! // encoding: [0x3f,0xfd,0x8f,0x38]
2862 // CHECK: ldrsb x2, [x3, #1]! // encoding: [0x62,0x1c,0x80,0x38]
2863 // CHECK: ldrsb x19, [x12, #-256]! // encoding: [0x93,0x0d,0x90,0x38]
2864 // CHECK: ldrsh xzr, [x9, #255]! // encoding: [0x3f,0xfd,0x8f,0x78]
2865 // CHECK: ldrsh x2, [x3, #1]! // encoding: [0x62,0x1c,0x80,0x78]
2866 // CHECK: ldrsh x19, [x12, #-256]! // encoding: [0x93,0x0d,0x90,0x78]
2867 // CHECK: ldrsw xzr, [x9, #255]! // encoding: [0x3f,0xfd,0x8f,0xb8]
2868 // CHECK: ldrsw x2, [x3, #1]! // encoding: [0x62,0x1c,0x80,0xb8]
2869 // CHECK: ldrsw x19, [x12, #-256]! // encoding: [0x93,0x0d,0x90,0xb8]
2871 ldrsb wzr, [x9, #255]!
2872 ldrsb w2, [x3, #1]!
2873 ldrsb w19, [x12, #-256]!
2874 ldrsh wzr, [x9, #255]!
2875 ldrsh w2, [x3, #1]!
2876 ldrsh w19, [x12, #-256]!
2877 // CHECK: ldrsb wzr, [x9, #255]! // encoding: [0x3f,0xfd,0xcf,0x38]
2878 // CHECK: ldrsb w2, [x3, #1]! // encoding: [0x62,0x1c,0xc0,0x38]
2879 // CHECK: ldrsb w19, [x12, #-256]! // encoding: [0x93,0x0d,0xd0,0x38]
2880 // CHECK: ldrsh wzr, [x9, #255]! // encoding: [0x3f,0xfd,0xcf,0x78]
2881 // CHECK: ldrsh w2, [x3, #1]! // encoding: [0x62,0x1c,0xc0,0x78]
2882 // CHECK: ldrsh w19, [x12, #-256]! // encoding: [0x93,0x0d,0xd0,0x78]
2884 str b0, [x0, #255]!
2885 str b3, [x3, #1]!
2886 str b5, [sp, #-256]!
2887 str h10, [x10, #255]!
2888 str h13, [x23, #1]!
2889 str h15, [sp, #-256]!
2890 str s20, [x20, #255]!
2891 str s23, [x23, #1]!
2892 str s25, [x0, #-256]!
2893 str d20, [x20, #255]!
2894 str d23, [x23, #1]!
2895 str d25, [x0, #-256]!
2896 // CHECK: str b0, [x0, #255]! // encoding: [0x00,0xfc,0x0f,0x3c]
2897 // CHECK: str b3, [x3, #1]! // encoding: [0x63,0x1c,0x00,0x3c]
2898 // CHECK: str b5, [sp, #-256]! // encoding: [0xe5,0x0f,0x10,0x3c]
2899 // CHECK: str h10, [x10, #255]! // encoding: [0x4a,0xfd,0x0f,0x7c]
2900 // CHECK: str h13, [x23, #1]! // encoding: [0xed,0x1e,0x00,0x7c]
2901 // CHECK: str h15, [sp, #-256]! // encoding: [0xef,0x0f,0x10,0x7c]
2902 // CHECK: str s20, [x20, #255]! // encoding: [0x94,0xfe,0x0f,0xbc]
2903 // CHECK: str s23, [x23, #1]! // encoding: [0xf7,0x1e,0x00,0xbc]
2904 // CHECK: str s25, [x0, #-256]! // encoding: [0x19,0x0c,0x10,0xbc]
2905 // CHECK: str d20, [x20, #255]! // encoding: [0x94,0xfe,0x0f,0xfc]
2906 // CHECK: str d23, [x23, #1]! // encoding: [0xf7,0x1e,0x00,0xfc]
2907 // CHECK: str d25, [x0, #-256]! // encoding: [0x19,0x0c,0x10,0xfc]
2909 ldr b0, [x0, #255]!
2910 ldr b3, [x3, #1]!
2911 ldr b5, [sp, #-256]!
2912 ldr h10, [x10, #255]!
2913 ldr h13, [x23, #1]!
2914 ldr h15, [sp, #-256]!
2915 ldr s20, [x20, #255]!
2916 ldr s23, [x23, #1]!
2917 ldr s25, [x0, #-256]!
2918 ldr d20, [x20, #255]!
2919 ldr d23, [x23, #1]!
2920 ldr d25, [x0, #-256]!
2921 // CHECK: ldr b0, [x0, #255]! // encoding: [0x00,0xfc,0x4f,0x3c]
2922 // CHECK: ldr b3, [x3, #1]! // encoding: [0x63,0x1c,0x40,0x3c]
2923 // CHECK: ldr b5, [sp, #-256]! // encoding: [0xe5,0x0f,0x50,0x3c]
2924 // CHECK: ldr h10, [x10, #255]! // encoding: [0x4a,0xfd,0x4f,0x7c]
2925 // CHECK: ldr h13, [x23, #1]! // encoding: [0xed,0x1e,0x40,0x7c]
2926 // CHECK: ldr h15, [sp, #-256]! // encoding: [0xef,0x0f,0x50,0x7c]
2927 // CHECK: ldr s20, [x20, #255]! // encoding: [0x94,0xfe,0x4f,0xbc]
2928 // CHECK: ldr s23, [x23, #1]! // encoding: [0xf7,0x1e,0x40,0xbc]
2929 // CHECK: ldr s25, [x0, #-256]! // encoding: [0x19,0x0c,0x50,0xbc]
2930 // CHECK: ldr d20, [x20, #255]! // encoding: [0x94,0xfe,0x4f,0xfc]
2931 // CHECK: ldr d23, [x23, #1]! // encoding: [0xf7,0x1e,0x40,0xfc]
2932 // CHECK: ldr d25, [x0, #-256]! // encoding: [0x19,0x0c,0x50,0xfc]
2934 ldr q20, [x1, #255]!
2935 ldr q23, [x9, #1]!
2936 ldr q25, [x20, #-256]!
2937 str q10, [x1, #255]!
2938 str q22, [sp, #1]!
2939 str q21, [x20, #-256]!
2940 // CHECK: ldr q20, [x1, #255]! // encoding: [0x34,0xfc,0xcf,0x3c]
2941 // CHECK: ldr q23, [x9, #1]! // encoding: [0x37,0x1d,0xc0,0x3c]
2942 // CHECK: ldr q25, [x20, #-256]! // encoding: [0x99,0x0e,0xd0,0x3c]
2943 // CHECK: str q10, [x1, #255]! // encoding: [0x2a,0xfc,0x8f,0x3c]
2944 // CHECK: str q22, [sp, #1]! // encoding: [0xf6,0x1f,0x80,0x3c]
2945 // CHECK: str q21, [x20, #-256]! // encoding: [0x95,0x0e,0x90,0x3c]
2947 //------------------------------------------------------------------------------
2948 // Load/store (unprivileged)
2949 //------------------------------------------------------------------------------
2951 sttrb w9, [sp, #0]
2952 sttrh wzr, [x12, #255]
2953 sttr w16, [x0, #-256]
2954 sttr x28, [x14, #1]
2955 // CHECK: sttrb w9, [sp] // encoding: [0xe9,0x0b,0x00,0x38]
2956 // CHECK: sttrh wzr, [x12, #255] // encoding: [0x9f,0xf9,0x0f,0x78]
2957 // CHECK: sttr w16, [x0, #-256] // encoding: [0x10,0x08,0x10,0xb8]
2958 // CHECK: sttr x28, [x14, #1] // encoding: [0xdc,0x19,0x00,0xf8]
2960 ldtrb w1, [x20, #255]
2961 ldtrh w20, [x1, #255]
2962 ldtr w12, [sp, #255]
2963 ldtr xzr, [x12, #255]
2964 // CHECK: ldtrb w1, [x20, #255] // encoding: [0x81,0xfa,0x4f,0x38]
2965 // CHECK: ldtrh w20, [x1, #255] // encoding: [0x34,0xf8,0x4f,0x78]
2966 // CHECK: ldtr w12, [sp, #255] // encoding: [0xec,0xfb,0x4f,0xb8]
2967 // CHECK: ldtr xzr, [x12, #255] // encoding: [0x9f,0xf9,0x4f,0xf8]
2969 ldtrsb x9, [x7, #-256]
2970 ldtrsh x17, [x19, #-256]
2971 ldtrsw x20, [x15, #-256]
2972 ldtrsb w19, [x1, #-256]
2973 ldtrsh w15, [x21, #-256]
2974 // CHECK: ldtrsb x9, [x7, #-256] // encoding: [0xe9,0x08,0x90,0x38]
2975 // CHECK: ldtrsh x17, [x19, #-256] // encoding: [0x71,0x0a,0x90,0x78]
2976 // CHECK: ldtrsw x20, [x15, #-256] // encoding: [0xf4,0x09,0x90,0xb8]
2977 // CHECK: ldtrsb w19, [x1, #-256] // encoding: [0x33,0x08,0xd0,0x38]
2978 // CHECK: ldtrsh w15, [x21, #-256] // encoding: [0xaf,0x0a,0xd0,0x78]
2980 //------------------------------------------------------------------------------
2981 // Load/store register pair (offset)
2982 //------------------------------------------------------------------------------
2984 ldp w3, w5, [sp]
2985 stp wzr, w9, [sp, #252]
2986 ldp w2, wzr, [sp, #-256]
2987 ldp w9, w10, [sp, #4]
2988 // CHECK: ldp w3, w5, [sp] // encoding: [0xe3,0x17,0x40,0x29]
2989 // CHECK: stp wzr, w9, [sp, #252] // encoding: [0xff,0xa7,0x1f,0x29]
2990 // CHECK: ldp w2, wzr, [sp, #-256] // encoding: [0xe2,0x7f,0x60,0x29]
2991 // CHECK: ldp w9, w10, [sp, #4] // encoding: [0xe9,0xab,0x40,0x29]
2993 ldpsw x9, x10, [sp, #4]
2994 ldpsw x9, x10, [x2, #-256]
2995 ldpsw x20, x30, [sp, #252]
2996 // CHECK: ldpsw x9, x10, [sp, #4] // encoding: [0xe9,0xab,0x40,0x69]
2997 // CHECK: ldpsw x9, x10, [x2, #-256] // encoding: [0x49,0x28,0x60,0x69]
2998 // CHECK: ldpsw x20, x30, [sp, #252] // encoding: [0xf4,0xfb,0x5f,0x69]
3000 ldp x21, x29, [x2, #504]
3001 ldp x22, x23, [x3, #-512]
3002 ldp x24, x25, [x4, #8]
3003 // CHECK: ldp x21, x29, [x2, #504] // encoding: [0x55,0xf4,0x5f,0xa9]
3004 // CHECK: ldp x22, x23, [x3, #-512] // encoding: [0x76,0x5c,0x60,0xa9]
3005 // CHECK: ldp x24, x25, [x4, #8] // encoding: [0x98,0xe4,0x40,0xa9]
3007 ldp s29, s28, [sp, #252]
3008 stp s27, s26, [sp, #-256]
3009 ldp s1, s2, [x3, #44]
3010 // CHECK: ldp s29, s28, [sp, #252] // encoding: [0xfd,0xf3,0x5f,0x2d]
3011 // CHECK: stp s27, s26, [sp, #-256] // encoding: [0xfb,0x6b,0x20,0x2d]
3012 // CHECK: ldp s1, s2, [x3, #44] // encoding: [0x61,0x88,0x45,0x2d]
3014 stp d3, d5, [x9, #504]
3015 stp d7, d11, [x10, #-512]
3016 ldp d2, d3, [x30, #-8]
3017 // CHECK: stp d3, d5, [x9, #504] // encoding: [0x23,0x95,0x1f,0x6d]
3018 // CHECK: stp d7, d11, [x10, #-512] // encoding: [0x47,0x2d,0x20,0x6d]
3019 // CHECK: ldp d2, d3, [x30, #-8] // encoding: [0xc2,0x8f,0x7f,0x6d]
3021 stp q3, q5, [sp]
3022 stp q17, q19, [sp, #1008]
3023 ldp q23, q29, [x1, #-1024]
3024 // CHECK: stp q3, q5, [sp] // encoding: [0xe3,0x17,0x00,0xad]
3025 // CHECK: stp q17, q19, [sp, #1008] // encoding: [0xf1,0xcf,0x1f,0xad]
3026 // CHECK: ldp q23, q29, [x1, #-1024] // encoding: [0x37,0x74,0x60,0xad]
3028 //------------------------------------------------------------------------------
3029 // Load/store register pair (post-indexed)
3030 //------------------------------------------------------------------------------
3032 ldp w3, w5, [sp], #0
3033 stp wzr, w9, [sp], #252
3034 ldp w2, wzr, [sp], #-256
3035 ldp w9, w10, [sp], #4
3036 // CHECK: ldp w3, w5, [sp], #0 // encoding: [0xe3,0x17,0xc0,0x28]
3037 // CHECK: stp wzr, w9, [sp], #252 // encoding: [0xff,0xa7,0x9f,0x28]
3038 // CHECK: ldp w2, wzr, [sp], #-256 // encoding: [0xe2,0x7f,0xe0,0x28]
3039 // CHECK: ldp w9, w10, [sp], #4 // encoding: [0xe9,0xab,0xc0,0x28]
3041 ldpsw x9, x10, [sp], #4
3042 ldpsw x9, x10, [x2], #-256
3043 ldpsw x20, x30, [sp], #252
3044 // CHECK: ldpsw x9, x10, [sp], #4 // encoding: [0xe9,0xab,0xc0,0x68]
3045 // CHECK: ldpsw x9, x10, [x2], #-256 // encoding: [0x49,0x28,0xe0,0x68]
3046 // CHECK: ldpsw x20, x30, [sp], #252 // encoding: [0xf4,0xfb,0xdf,0x68]
3048 ldp x21, x29, [x2], #504
3049 ldp x22, x23, [x3], #-512
3050 ldp x24, x25, [x4], #8
3051 // CHECK: ldp x21, x29, [x2], #504 // encoding: [0x55,0xf4,0xdf,0xa8]
3052 // CHECK: ldp x22, x23, [x3], #-512 // encoding: [0x76,0x5c,0xe0,0xa8]
3053 // CHECK: ldp x24, x25, [x4], #8 // encoding: [0x98,0xe4,0xc0,0xa8]
3055 ldp s29, s28, [sp], #252
3056 stp s27, s26, [sp], #-256
3057 ldp s1, s2, [x3], #44
3058 // CHECK: ldp s29, s28, [sp], #252 // encoding: [0xfd,0xf3,0xdf,0x2c]
3059 // CHECK: stp s27, s26, [sp], #-256 // encoding: [0xfb,0x6b,0xa0,0x2c]
3060 // CHECK: ldp s1, s2, [x3], #44 // encoding: [0x61,0x88,0xc5,0x2c]
3062 stp d3, d5, [x9], #504
3063 stp d7, d11, [x10], #-512
3064 ldp d2, d3, [x30], #-8
3065 // CHECK: stp d3, d5, [x9], #504 // encoding: [0x23,0x95,0x9f,0x6c]
3066 // CHECK: stp d7, d11, [x10], #-512 // encoding: [0x47,0x2d,0xa0,0x6c]
3067 // CHECK: ldp d2, d3, [x30], #-8 // encoding: [0xc2,0x8f,0xff,0x6c]
3069 stp q3, q5, [sp], #0
3070 stp q17, q19, [sp], #1008
3071 ldp q23, q29, [x1], #-1024
3072 // CHECK: stp q3, q5, [sp], #0 // encoding: [0xe3,0x17,0x80,0xac]
3073 // CHECK: stp q17, q19, [sp], #1008 // encoding: [0xf1,0xcf,0x9f,0xac]
3074 // CHECK: ldp q23, q29, [x1], #-1024 // encoding: [0x37,0x74,0xe0,0xac]
3076 //------------------------------------------------------------------------------
3077 // Load/store register pair (pre-indexed)
3078 //------------------------------------------------------------------------------
3079 ldp w3, w5, [sp, #0]!
3080 stp wzr, w9, [sp, #252]!
3081 ldp w2, wzr, [sp, #-256]!
3082 ldp w9, w10, [sp, #4]!
3083 // CHECK: ldp w3, w5, [sp, #0]! // encoding: [0xe3,0x17,0xc0,0x29]
3084 // CHECK: stp wzr, w9, [sp, #252]! // encoding: [0xff,0xa7,0x9f,0x29]
3085 // CHECK: ldp w2, wzr, [sp, #-256]! // encoding: [0xe2,0x7f,0xe0,0x29]
3086 // CHECK: ldp w9, w10, [sp, #4]! // encoding: [0xe9,0xab,0xc0,0x29]
3088 ldpsw x9, x10, [sp, #4]!
3089 ldpsw x9, x10, [x2, #-256]!
3090 ldpsw x20, x30, [sp, #252]!
3091 // CHECK: ldpsw x9, x10, [sp, #4]! // encoding: [0xe9,0xab,0xc0,0x69]
3092 // CHECK: ldpsw x9, x10, [x2, #-256]! // encoding: [0x49,0x28,0xe0,0x69]
3093 // CHECK: ldpsw x20, x30, [sp, #252]! // encoding: [0xf4,0xfb,0xdf,0x69]
3095 ldp x21, x29, [x2, #504]!
3096 ldp x22, x23, [x3, #-512]!
3097 ldp x24, x25, [x4, #8]!
3098 // CHECK: ldp x21, x29, [x2, #504]! // encoding: [0x55,0xf4,0xdf,0xa9]
3099 // CHECK: ldp x22, x23, [x3, #-512]! // encoding: [0x76,0x5c,0xe0,0xa9]
3100 // CHECK: ldp x24, x25, [x4, #8]! // encoding: [0x98,0xe4,0xc0,0xa9]
3102 ldp s29, s28, [sp, #252]!
3103 stp s27, s26, [sp, #-256]!
3104 ldp s1, s2, [x3, #44]!
3105 // CHECK: ldp s29, s28, [sp, #252]! // encoding: [0xfd,0xf3,0xdf,0x2d]
3106 // CHECK: stp s27, s26, [sp, #-256]! // encoding: [0xfb,0x6b,0xa0,0x2d]
3107 // CHECK: ldp s1, s2, [x3, #44]! // encoding: [0x61,0x88,0xc5,0x2d]
3109 stp d3, d5, [x9, #504]!
3110 stp d7, d11, [x10, #-512]!
3111 ldp d2, d3, [x30, #-8]!
3112 // CHECK: stp d3, d5, [x9, #504]! // encoding: [0x23,0x95,0x9f,0x6d]
3113 // CHECK: stp d7, d11, [x10, #-512]! // encoding: [0x47,0x2d,0xa0,0x6d]
3114 // CHECK: ldp d2, d3, [x30, #-8]! // encoding: [0xc2,0x8f,0xff,0x6d]
3116 stp q3, q5, [sp, #0]!
3117 stp q17, q19, [sp, #1008]!
3118 ldp q23, q29, [x1, #-1024]!
3119 // CHECK: stp q3, q5, [sp, #0]! // encoding: [0xe3,0x17,0x80,0xad]
3120 // CHECK: stp q17, q19, [sp, #1008]! // encoding: [0xf1,0xcf,0x9f,0xad]
3121 // CHECK: ldp q23, q29, [x1, #-1024]! // encoding: [0x37,0x74,0xe0,0xad]
3123 //------------------------------------------------------------------------------
3124 // Load/store non-temporal register pair (offset)
3125 //------------------------------------------------------------------------------
3127 ldnp w3, w5, [sp]
3128 stnp wzr, w9, [sp, #252]
3129 ldnp w2, wzr, [sp, #-256]
3130 ldnp w9, w10, [sp, #4]
3131 // CHECK: ldnp w3, w5, [sp] // encoding: [0xe3,0x17,0x40,0x28]
3132 // CHECK: stnp wzr, w9, [sp, #252] // encoding: [0xff,0xa7,0x1f,0x28]
3133 // CHECK: ldnp w2, wzr, [sp, #-256] // encoding: [0xe2,0x7f,0x60,0x28]
3134 // CHECK: ldnp w9, w10, [sp, #4] // encoding: [0xe9,0xab,0x40,0x28]
3136 ldnp x21, x29, [x2, #504]
3137 ldnp x22, x23, [x3, #-512]
3138 ldnp x24, x25, [x4, #8]
3139 // CHECK: ldnp x21, x29, [x2, #504] // encoding: [0x55,0xf4,0x5f,0xa8]
3140 // CHECK: ldnp x22, x23, [x3, #-512] // encoding: [0x76,0x5c,0x60,0xa8]
3141 // CHECK: ldnp x24, x25, [x4, #8] // encoding: [0x98,0xe4,0x40,0xa8]
3143 ldnp s29, s28, [sp, #252]
3144 stnp s27, s26, [sp, #-256]
3145 ldnp s1, s2, [x3, #44]
3146 // CHECK: ldnp s29, s28, [sp, #252] // encoding: [0xfd,0xf3,0x5f,0x2c]
3147 // CHECK: stnp s27, s26, [sp, #-256] // encoding: [0xfb,0x6b,0x20,0x2c]
3148 // CHECK: ldnp s1, s2, [x3, #44] // encoding: [0x61,0x88,0x45,0x2c]
3150 stnp d3, d5, [x9, #504]
3151 stnp d7, d11, [x10, #-512]
3152 ldnp d2, d3, [x30, #-8]
3153 // CHECK: stnp d3, d5, [x9, #504] // encoding: [0x23,0x95,0x1f,0x6c]
3154 // CHECK: stnp d7, d11, [x10, #-512] // encoding: [0x47,0x2d,0x20,0x6c]
3155 // CHECK: ldnp d2, d3, [x30, #-8] // encoding: [0xc2,0x8f,0x7f,0x6c]
3157 stnp q3, q5, [sp]
3158 stnp q17, q19, [sp, #1008]
3159 ldnp q23, q29, [x1, #-1024]
3160 // CHECK: stnp q3, q5, [sp] // encoding: [0xe3,0x17,0x00,0xac]
3161 // CHECK: stnp q17, q19, [sp, #1008] // encoding: [0xf1,0xcf,0x1f,0xac]
3162 // CHECK: ldnp q23, q29, [x1, #-1024] // encoding: [0x37,0x74,0x60,0xac]
3164 //------------------------------------------------------------------------------
3165 // Logical (immediate)
3166 //------------------------------------------------------------------------------
3167 // 32 bit replication-width
3168 orr w3, w9, #0xffff0000
3169 orr wsp, w10, #0xe00000ff
3170 orr w9, w10, #0x000003ff
3171 // CHECK: orr w3, w9, #0xffff0000 // encoding: [0x23,0x3d,0x10,0x32]
3172 // CHECK: orr wsp, w10, #0xe00000ff // encoding: [0x5f,0x29,0x03,0x32]
3173 // CHECK: orr w9, w10, #0x3ff // encoding: [0x49,0x25,0x00,0x32]
3175 // 16 bit replication width
3176 and w14, w15, #0x80008000
3177 and w12, w13, #0xffc3ffc3
3178 and w11, wzr, #0x00030003
3179 // CHECK: and w14, w15, #0x80008000 // encoding: [0xee,0x81,0x01,0x12]
3180 // CHECK: and w12, w13, #0xffc3ffc3 // encoding: [0xac,0xad,0x0a,0x12]
3181 // CHECK: and w11, wzr, #0x30003 // encoding: [0xeb,0x87,0x00,0x12]
3183 // 8 bit replication width
3184 eor w3, w6, #0xe0e0e0e0
3185 eor wsp, wzr, #0x03030303
3186 eor w16, w17, #0x81818181
3187 // CHECK: eor w3, w6, #0xe0e0e0e0 // encoding: [0xc3,0xc8,0x03,0x52]
3188 // CHECK: eor wsp, wzr, #0x3030303 // encoding: [0xff,0xc7,0x00,0x52]
3189 // CHECK: eor w16, w17, #0x81818181 // encoding: [0x30,0xc6,0x01,0x52]
3191 // 4 bit replication width
3192 ands wzr, w18, #0xcccccccc
3193 ands w19, w20, #0x33333333
3194 ands w21, w22, #0x99999999
3195 // CHECK: {{ands wzr,|tst}} w18, #0xcccccccc // encoding: [0x5f,0xe6,0x02,0x72]
3196 // CHECK: ands w19, w20, #0x33333333 // encoding: [0x93,0xe6,0x00,0x72]
3197 // CHECK: ands w21, w22, #0x99999999 // encoding: [0xd5,0xe6,0x01,0x72]
3199 // 2 bit replication width
3200 tst w3, #0xaaaaaaaa
3201 tst wzr, #0x55555555
3202 // CHECK: {{ands wzr,|tst}} w3, #0xaaaaaaaa // encoding: [0x7f,0xf0,0x01,0x72]
3203 // CHECK: {{ands wzr,|tst}} wzr, #0x55555555 // encoding: [0xff,0xf3,0x00,0x72]
3205 // 64 bit replication-width
3206 eor x3, x5, #0xffffffffc000000
3207 and x9, x10, #0x00007fffffffffff
3208 orr x11, x12, #0x8000000000000fff
3209 // CHECK: eor x3, x5, #0xffffffffc000000 // encoding: [0xa3,0x84,0x66,0xd2]
3210 // CHECK: and x9, x10, #0x7fffffffffff // encoding: [0x49,0xb9,0x40,0x92]
3211 // CHECK: orr x11, x12, #0x8000000000000fff // encoding: [0x8b,0x31,0x41,0xb2]
3213 // 32 bit replication-width
3214 orr x3, x9, #0xffff0000ffff0000
3215 orr sp, x10, #0xe00000ffe00000ff
3216 orr x9, x10, #0x000003ff000003ff
3217 // CHECK: orr x3, x9, #0xffff0000ffff0000 // encoding: [0x23,0x3d,0x10,0xb2]
3218 // CHECK: orr sp, x10, #0xe00000ffe00000ff // encoding: [0x5f,0x29,0x03,0xb2]
3219 // CHECK: orr x9, x10, #0x3ff000003ff // encoding: [0x49,0x25,0x00,0xb2]
3221 // 16 bit replication-width
3222 and x14, x15, #0x8000800080008000
3223 and x12, x13, #0xffc3ffc3ffc3ffc3
3224 and x11, xzr, #0x0003000300030003
3225 // CHECK: and x14, x15, #0x8000800080008000 // encoding: [0xee,0x81,0x01,0x92]
3226 // CHECK: and x12, x13, #0xffc3ffc3ffc3ffc3 // encoding: [0xac,0xad,0x0a,0x92]
3227 // CHECK: and x11, xzr, #0x3000300030003 // encoding: [0xeb,0x87,0x00,0x92]
3229 // 8 bit replication-width
3230 eor x3, x6, #0xe0e0e0e0e0e0e0e0
3231 eor sp, xzr, #0x0303030303030303
3232 eor x16, x17, #0x8181818181818181
3233 // CHECK: eor x3, x6, #0xe0e0e0e0e0e0e0e0 // encoding: [0xc3,0xc8,0x03,0xd2]
3234 // CHECK: eor sp, xzr, #0x303030303030303 // encoding: [0xff,0xc7,0x00,0xd2]
3235 // CHECK: eor x16, x17, #0x8181818181818181 // encoding: [0x30,0xc6,0x01,0xd2]
3237 // 4 bit replication-width
3238 ands xzr, x18, #0xcccccccccccccccc
3239 ands x19, x20, #0x3333333333333333
3240 ands x21, x22, #0x9999999999999999
3241 // CHECK: {{ands xzr,|tst}} x18, #0xcccccccccccccccc // encoding: [0x5f,0xe6,0x02,0xf2]
3242 // CHECK: ands x19, x20, #0x3333333333333333 // encoding: [0x93,0xe6,0x00,0xf2]
3243 // CHECK: ands x21, x22, #0x9999999999999999 // encoding: [0xd5,0xe6,0x01,0xf2]
3245 // 2 bit replication-width
3246 tst x3, #0xaaaaaaaaaaaaaaaa
3247 tst xzr, #0x5555555555555555
3248 // CHECK: {{ands xzr,|tst}} x3, #0xaaaaaaaaaaaaaaaa // encoding: [0x7f,0xf0,0x01,0xf2]
3249 // CHECK: {{ands xzr,|tst}} xzr, #0x5555555555555555 // encoding: [0xff,0xf3,0x00,0xf2]
3251 mov w3, #0xf000f
3252 mov x10, #0xaaaaaaaaaaaaaaaa
3253 // CHECK: mov w3, #983055 // encoding: [0xe3,0x8f,0x00,0x32]
3254 // CHECK: mov x10, #-6148914691236517206 // encoding: [0xea,0xf3,0x01,0xb2]
3256 // The Imm field of logicalImm operations has to be truncated to the
3257 // register width, i.e. 32 bits
3258 and w2, w3, #-3
3259 orr w0, w1, #~2
3260 eor w16, w17, #-7
3261 ands w19, w20, #~15
3262 // CHECK: and w2, w3, #0xfffffffd // encoding: [0x62,0x78,0x1e,0x12]
3263 // CHECK: orr w0, w1, #0xfffffffd // encoding: [0x20,0x78,0x1e,0x32]
3264 // CHECK: eor w16, w17, #0xfffffff9 // encoding: [0x30,0x76,0x1d,0x52]
3265 // CHECK: ands w19, w20, #0xfffffff0 // encoding: [0x93,0x6e,0x1c,0x72]
3267 //------------------------------------------------------------------------------
3268 // Logical (shifted register)
3269 //------------------------------------------------------------------------------
3271 and w12, w23, w21
3272 and w16, w15, w1, lsl #1
3273 and w9, w4, w10, lsl #31
3274 and w3, w30, w11, lsl #0
3275 and x3, x5, x7, lsl #63
3276 // CHECK: and w12, w23, w21 // encoding: [0xec,0x02,0x15,0x0a]
3277 // CHECK: and w16, w15, w1, lsl #1 // encoding: [0xf0,0x05,0x01,0x0a]
3278 // CHECK: and w9, w4, w10, lsl #31 // encoding: [0x89,0x7c,0x0a,0x0a]
3279 // CHECK: and w3, w30, w11 // encoding: [0xc3,0x03,0x0b,0x0a]
3280 // CHECK: and x3, x5, x7, lsl #63 // encoding: [0xa3,0xfc,0x07,0x8a]
3282 and x5, x14, x19, asr #4
3283 and w3, w17, w19, ror #31
3284 and w0, w2, wzr, lsr #17
3285 and w3, w30, w11, asr #0
3286 // CHECK: and x5, x14, x19, asr #4 // encoding: [0xc5,0x11,0x93,0x8a]
3287 // CHECK: and w3, w17, w19, ror #31 // encoding: [0x23,0x7e,0xd3,0x0a]
3288 // CHECK: and w0, w2, wzr, lsr #17 // encoding: [0x40,0x44,0x5f,0x0a]
3289 // CHECK: and w3, w30, w11, asr #0 // encoding: [0xc3,0x03,0x8b,0x0a]
3291 and xzr, x4, x26, lsl #0
3292 and w3, wzr, w20, ror #0
3293 and x7, x20, xzr, asr #63
3294 // CHECK: and xzr, x4, x26 // encoding: [0x9f,0x00,0x1a,0x8a]
3295 // CHECK: and w3, wzr, w20, ror #0 // encoding: [0xe3,0x03,0xd4,0x0a]
3296 // CHECK: and x7, x20, xzr, asr #63 // encoding: [0x87,0xfe,0x9f,0x8a]
3298 bic x13, x20, x14, lsl #47
3299 bic w2, w7, w9
3300 orr w2, w7, w0, asr #31
3301 orr x8, x9, x10, lsl #12
3302 orn x3, x5, x7, asr #0
3303 orn w2, w5, w29
3304 // CHECK: bic x13, x20, x14, lsl #47 // encoding: [0x8d,0xbe,0x2e,0x8a]
3305 // CHECK: bic w2, w7, w9 // encoding: [0xe2,0x00,0x29,0x0a]
3306 // CHECK: orr w2, w7, w0, asr #31 // encoding: [0xe2,0x7c,0x80,0x2a]
3307 // CHECK: orr x8, x9, x10, lsl #12 // encoding: [0x28,0x31,0x0a,0xaa]
3308 // CHECK: orn x3, x5, x7, asr #0 // encoding: [0xa3,0x00,0xa7,0xaa]
3309 // CHECK: orn w2, w5, w29 // encoding: [0xa2,0x00,0x3d,0x2a]
3311 ands w7, wzr, w9, lsl #1
3312 ands x3, x5, x20, ror #63
3313 bics w3, w5, w7, lsl #0
3314 bics x3, xzr, x3, lsl #1
3315 // CHECK: ands w7, wzr, w9, lsl #1 // encoding: [0xe7,0x07,0x09,0x6a]
3316 // CHECK: ands x3, x5, x20, ror #63 // encoding: [0xa3,0xfc,0xd4,0xea]
3317 // CHECK: bics w3, w5, w7 // encoding: [0xa3,0x00,0x27,0x6a]
3318 // CHECK: bics x3, xzr, x3, lsl #1 // encoding: [0xe3,0x07,0x23,0xea]
3320 tst w3, w7, lsl #31
3321 tst x2, x20, asr #0
3322 // CHECK: tst w3, w7, lsl #31 // encoding: [0x7f,0x7c,0x07,0x6a]
3323 // CHECK: tst x2, x20, asr #0 // encoding: [0x5f,0x00,0x94,0xea]
3325 mov x3, x6
3326 mov x3, xzr
3327 mov wzr, w2
3328 mov w3, w5
3329 // CHECK: mov x3, x6 // encoding: [0xe3,0x03,0x06,0xaa]
3330 // CHECK: mov x3, xzr // encoding: [0xe3,0x03,0x1f,0xaa]
3331 // CHECK: mov wzr, w2 // encoding: [0xff,0x03,0x02,0x2a]
3332 // CHECK: mov w3, w5 // encoding: [0xe3,0x03,0x05,0x2a]
3334 //------------------------------------------------------------------------------
3335 // Move wide (immediate)
3336 //------------------------------------------------------------------------------
3338 movz w1, #65535, lsl #0
3339 movz w2, #0, lsl #16
3340 movn w2, #1234, lsl #0
3341 // CHECK: mov w1, #65535 // encoding: [0xe1,0xff,0x9f,0x52]
3342 // CHECK: movz w2, #0, lsl #16 // encoding: [0x02,0x00,0xa0,0x52]
3343 // CHECK: mov w2, #-1235 // encoding: [0x42,0x9a,0x80,0x12]
3345 movz x2, #1234, lsl #32
3346 movk xzr, #4321, lsl #48
3347 // CHECK: mov x2, #5299989643264 // encoding: [0x42,0x9a,0xc0,0xd2]
3348 // CHECK: movk xzr, #{{4321|0x10e1}}, lsl #48 // encoding: [0x3f,0x1c,0xe2,0xf2]
3350 movz x2, #:abs_g0:sym
3351 movk w3, #:abs_g0_nc:sym
3353 // CHECK: movz x2, #:abs_g0:sym // encoding: [0bAAA00010,A,0b100AAAAA,0xd2]
3354 // CHECK-NEXT: // fixup A - offset: 0, value: :abs_g0:sym, kind: fixup_aarch64_movw
3355 // CHECK: movk w3, #:abs_g0_nc:sym // encoding: [0bAAA00011,A,0b100AAAAA,0x72]
3356 // CHECK-NEXT: // fixup A - offset: 0, value: :abs_g0_nc:sym, kind: fixup_aarch64_movw
3358 movz x4, #:abs_g1:sym
3359 movk w5, #:abs_g1_nc:sym
3361 // CHECK: movz x4, #:abs_g1:sym // encoding: [0bAAA00100,A,0b101AAAAA,0xd2]
3362 // CHECK-NEXT: // fixup A - offset: 0, value: :abs_g1:sym, kind: fixup_aarch64_movw
3363 // CHECK: movk w5, #:abs_g1_nc:sym // encoding: [0bAAA00101,A,0b101AAAAA,0x72]
3364 // CHECK-NEXT: // fixup A - offset: 0, value: :abs_g1_nc:sym, kind: fixup_aarch64_movw
3366 movz x6, #:abs_g2:sym
3367 movk x7, #:abs_g2_nc:sym
3369 // CHECK: movz x6, #:abs_g2:sym // encoding: [0bAAA00110,A,0b110AAAAA,0xd2]
3370 // CHECK-NEXT: // fixup A - offset: 0, value: :abs_g2:sym, kind: fixup_aarch64_movw
3371 // CHECK: movk x7, #:abs_g2_nc:sym // encoding: [0bAAA00111,A,0b110AAAAA,0xf2]
3372 // CHECK-NEXT: // fixup A - offset: 0, value: :abs_g2_nc:sym, kind: fixup_aarch64_movw
3374 movz x8, #:abs_g3:sym
3375 movk x9, #:abs_g3:sym
3377 // CHECK: movz x8, #:abs_g3:sym // encoding: [0bAAA01000,A,0b111AAAAA,0xd2]
3378 // CHECK-NEXT: // fixup A - offset: 0, value: :abs_g3:sym, kind: fixup_aarch64_movw
3379 // CHECK: movk x9, #:abs_g3:sym // encoding: [0bAAA01001,A,0b111AAAAA,0xf2]
3380 // CHECK-NEXT: // fixup A - offset: 0, value: :abs_g3:sym, kind: fixup_aarch64_movw
3383 movn x30, #:abs_g0_s:sym
3384 movz x19, #:abs_g0_s:sym
3385 movn w10, #:abs_g0_s:sym
3386 movz w25, #:abs_g0_s:sym
3388 // CHECK: movn x30, #:abs_g0_s:sym // encoding: [0bAAA11110,A,0b100AAAAA,0x92]
3389 // CHECK-NEXT: // fixup A - offset: 0, value: :abs_g0_s:sym, kind: fixup_aarch64_movw
3390 // CHECK: movz x19, #:abs_g0_s:sym // encoding: [0bAAA10011,A,0b100AAAAA,0xd2]
3391 // CHECK-NEXT: // fixup A - offset: 0, value: :abs_g0_s:sym, kind: fixup_aarch64_movw
3392 // CHECK: movn w10, #:abs_g0_s:sym // encoding: [0bAAA01010,A,0b100AAAAA,0x12]
3393 // CHECK-NEXT: // fixup A - offset: 0, value: :abs_g0_s:sym, kind: fixup_aarch64_movw
3394 // CHECK: movz w25, #:abs_g0_s:sym // encoding: [0bAAA11001,A,0b100AAAAA,0x52]
3395 // CHECK-NEXT: // fixup A - offset: 0, value: :abs_g0_s:sym, kind: fixup_aarch64_movw
3397 movn x30, #:abs_g1_s:sym
3398 movz x19, #:abs_g1_s:sym
3399 movn w10, #:abs_g1_s:sym
3400 movz w25, #:abs_g1_s:sym
3402 // CHECK: movn x30, #:abs_g1_s:sym // encoding: [0bAAA11110,A,0b101AAAAA,0x92]
3403 // CHECK-NEXT: // fixup A - offset: 0, value: :abs_g1_s:sym, kind: fixup_aarch64_movw
3404 // CHECK: movz x19, #:abs_g1_s:sym // encoding: [0bAAA10011,A,0b101AAAAA,0xd2]
3405 // CHECK-NEXT: // fixup A - offset: 0, value: :abs_g1_s:sym, kind: fixup_aarch64_movw
3406 // CHECK: movn w10, #:abs_g1_s:sym // encoding: [0bAAA01010,A,0b101AAAAA,0x12]
3407 // CHECK-NEXT: // fixup A - offset: 0, value: :abs_g1_s:sym, kind: fixup_aarch64_movw
3408 // CHECK: movz w25, #:abs_g1_s:sym // encoding: [0bAAA11001,A,0b101AAAAA,0x52]
3409 // CHECK-NEXT: // fixup A - offset: 0, value: :abs_g1_s:sym, kind: fixup_aarch64_movw
3411 movn x30, #:abs_g2_s:sym
3412 movz x19, #:abs_g2_s:sym
3414 // CHECK: movn x30, #:abs_g2_s:sym // encoding: [0bAAA11110,A,0b110AAAAA,0x92]
3415 // CHECK-NEXT: // fixup A - offset: 0, value: :abs_g2_s:sym, kind: fixup_aarch64_movw
3416 // CHECK: movz x19, #:abs_g2_s:sym // encoding: [0bAAA10011,A,0b110AAAAA,0xd2]
3417 // CHECK-NEXT: // fixup A - offset: 0, value: :abs_g2_s:sym, kind: fixup_aarch64_movw
3419 //------------------------------------------------------------------------------
3420 // PC-relative addressing
3421 //------------------------------------------------------------------------------
3423 adr x2, loc
3424 adr xzr, loc
3426 // CHECK: adr x2, loc // encoding: [0x02'A',A,A,0x10'A']
3427 // CHECK: // fixup A - offset: 0, value: loc, kind: fixup_aarch64_pcrel_adr_imm21
3428 // CHECK: adr xzr, loc // encoding: [0x1f'A',A,A,0x10'A']
3429 // CHECK: // fixup A - offset: 0, value: loc, kind: fixup_aarch64_pcrel_adr_imm21
3431 adrp x29, loc
3433 // CHECK: adrp x29, loc // encoding: [0x1d'A',A,A,0x90'A']
3434 // CHECK: // fixup A - offset: 0, value: loc, kind: fixup_aarch64_pcrel_adrp_imm21
3435 adrp x30, #4096
3436 adr x20, #0
3437 adr x9, #-1
3438 adr x5, #1048575
3439 // CHECK: adrp x30, #4096 // encoding: [0x1e,0x00,0x00,0xb0]
3440 // CHECK: adr x20, #0 // encoding: [0x14,0x00,0x00,0x10]
3441 // CHECK: adr x9, #-1 // encoding: [0xe9,0xff,0xff,0x70]
3442 // CHECK: adr x5, #1048575 // encoding: [0xe5,0xff,0x7f,0x70]
3444 adr x9, #1048575
3445 adr x2, #-1048576
3446 adrp x9, #4294963200
3447 adrp x20, #-4294967296
3448 // CHECK: adr x9, #1048575 // encoding: [0xe9,0xff,0x7f,0x70]
3449 // CHECK: adr x2, #-1048576 // encoding: [0x02,0x00,0x80,0x10]
3450 // CHECK: adrp x9, #4294963200 // encoding: [0xe9,0xff,0x7f,0xf0]
3451 // CHECK: adrp x20, #-4294967296 // encoding: [0x14,0x00,0x80,0x90]
3453 //------------------------------------------------------------------------------
3454 // System
3455 //------------------------------------------------------------------------------
3457 hint #0
3458 hint #127
3459 // CHECK: nop // encoding: [0x1f,0x20,0x03,0xd5]
3460 // CHECK: hint #{{127|0x7f}} // encoding: [0xff,0x2f,0x03,0xd5]
3463 yield
3467 sevl
3468 // CHECK: nop // encoding: [0x1f,0x20,0x03,0xd5]
3469 // CHECK: yield // encoding: [0x3f,0x20,0x03,0xd5]
3470 // CHECK: wfe // encoding: [0x5f,0x20,0x03,0xd5]
3471 // CHECK: wfi // encoding: [0x7f,0x20,0x03,0xd5]
3472 // CHECK: sev // encoding: [0x9f,0x20,0x03,0xd5]
3473 // CHECK: sevl // encoding: [0xbf,0x20,0x03,0xd5]
3475 clrex
3476 clrex #0
3477 clrex #7
3478 clrex #15
3479 // CHECK: clrex // encoding: [0x5f,0x3f,0x03,0xd5]
3480 // CHECK: clrex #0 // encoding: [0x5f,0x30,0x03,0xd5]
3481 // CHECK: clrex #7 // encoding: [0x5f,0x37,0x03,0xd5]
3482 // CHECK: clrex // encoding: [0x5f,0x3f,0x03,0xd5]
3484 dsb #0
3485 dsb #4
3486 dsb #12
3487 dsb #15
3488 dsb oshld
3489 dsb oshst
3490 dsb osh
3491 dsb nshld
3492 dsb nshst
3493 dsb nsh
3494 dsb ishld
3495 dsb ishst
3496 dsb ish
3497 dsb ld
3498 dsb st
3499 dsb sy
3500 // CHECK: ssbb // encoding: [0x9f,0x30,0x03,0xd5]
3501 // CHECK: pssbb // encoding: [0x9f,0x34,0x03,0xd5]
3502 // CHECK: dsb #12 // encoding: [0x9f,0x3c,0x03,0xd5]
3503 // CHECK: dsb sy // encoding: [0x9f,0x3f,0x03,0xd5]
3504 // CHECK: dsb oshld // encoding: [0x9f,0x31,0x03,0xd5]
3505 // CHECK: dsb oshst // encoding: [0x9f,0x32,0x03,0xd5]
3506 // CHECK: dsb osh // encoding: [0x9f,0x33,0x03,0xd5]
3507 // CHECK: dsb nshld // encoding: [0x9f,0x35,0x03,0xd5]
3508 // CHECK: dsb nshst // encoding: [0x9f,0x36,0x03,0xd5]
3509 // CHECK: dsb nsh // encoding: [0x9f,0x37,0x03,0xd5]
3510 // CHECK: dsb ishld // encoding: [0x9f,0x39,0x03,0xd5]
3511 // CHECK: dsb ishst // encoding: [0x9f,0x3a,0x03,0xd5]
3512 // CHECK: dsb ish // encoding: [0x9f,0x3b,0x03,0xd5]
3513 // CHECK: dsb ld // encoding: [0x9f,0x3d,0x03,0xd5]
3514 // CHECK: dsb st // encoding: [0x9f,0x3e,0x03,0xd5]
3515 // CHECK: dsb sy // encoding: [0x9f,0x3f,0x03,0xd5]
3517 dmb #0
3518 dmb #12
3519 dmb #15
3520 dmb oshld
3521 dmb oshst
3522 dmb osh
3523 dmb nshld
3524 dmb nshst
3525 dmb nsh
3526 dmb ishld
3527 dmb ishst
3528 dmb ish
3529 dmb ld
3530 dmb st
3531 dmb sy
3532 // CHECK: dmb #0 // encoding: [0xbf,0x30,0x03,0xd5]
3533 // CHECK: dmb #12 // encoding: [0xbf,0x3c,0x03,0xd5]
3534 // CHECK: dmb sy // encoding: [0xbf,0x3f,0x03,0xd5]
3535 // CHECK: dmb oshld // encoding: [0xbf,0x31,0x03,0xd5]
3536 // CHECK: dmb oshst // encoding: [0xbf,0x32,0x03,0xd5]
3537 // CHECK: dmb osh // encoding: [0xbf,0x33,0x03,0xd5]
3538 // CHECK: dmb nshld // encoding: [0xbf,0x35,0x03,0xd5]
3539 // CHECK: dmb nshst // encoding: [0xbf,0x36,0x03,0xd5]
3540 // CHECK: dmb nsh // encoding: [0xbf,0x37,0x03,0xd5]
3541 // CHECK: dmb ishld // encoding: [0xbf,0x39,0x03,0xd5]
3542 // CHECK: dmb ishst // encoding: [0xbf,0x3a,0x03,0xd5]
3543 // CHECK: dmb ish // encoding: [0xbf,0x3b,0x03,0xd5]
3544 // CHECK: dmb ld // encoding: [0xbf,0x3d,0x03,0xd5]
3545 // CHECK: dmb st // encoding: [0xbf,0x3e,0x03,0xd5]
3546 // CHECK: dmb sy // encoding: [0xbf,0x3f,0x03,0xd5]
3548 isb sy
3550 isb #12
3551 // CHECK: isb // encoding: [0xdf,0x3f,0x03,0xd5]
3552 // CHECK: isb // encoding: [0xdf,0x3f,0x03,0xd5]
3553 // CHECK: isb #12 // encoding: [0xdf,0x3c,0x03,0xd5]
3556 msr spsel, #0
3557 msr daifset, #15
3558 msr daifclr, #12
3559 // CHECK: msr {{SPSel|SPSEL}}, #0 // encoding: [0xbf,0x40,0x00,0xd5]
3560 // CHECK: msr {{DAIFSet|DAIFSET}}, #15 // encoding: [0xdf,0x4f,0x03,0xd5]
3561 // CHECK: msr {{DAIFClr|DAIFCLR}}, #12 // encoding: [0xff,0x4c,0x03,0xd5]
3563 sys #7, c5, c9, #7, x5
3564 sys #0, c15, c15, #2
3565 // CHECK: sys #7, c5, c9, #7, x5 // encoding: [0xe5,0x59,0x0f,0xd5]
3566 // CHECK: sys #0, c15, c15, #2 // encoding: [0x5f,0xff,0x08,0xd5]
3568 sysl x9, #7, c5, c9, #7
3569 sysl x1, #0, c15, c15, #2
3570 // CHECK: sysl x9, #7, c5, c9, #7 // encoding: [0xe9,0x59,0x2f,0xd5]
3571 // CHECK: sysl x1, #0, c15, c15, #2 // encoding: [0x41,0xff,0x28,0xd5]
3573 ic ialluis
3574 ic iallu
3575 ic ivau, x9
3576 // CHECK: ic ialluis // encoding: [0x1f,0x71,0x08,0xd5]
3577 // CHECK: ic iallu // encoding: [0x1f,0x75,0x08,0xd5]
3578 // CHECK: ic ivau, x9 // encoding: [0x29,0x75,0x0b,0xd5]
3580 dc zva, x12
3581 dc ivac, xzr
3582 dc isw, x2
3583 dc cvac, x9
3584 dc csw, x10
3585 dc cvau, x0
3586 dc civac, x3
3587 dc cisw, x30
3588 // CHECK: dc zva, x12 // encoding: [0x2c,0x74,0x0b,0xd5]
3589 // CHECK: dc ivac, xzr // encoding: [0x3f,0x76,0x08,0xd5]
3590 // CHECK: dc isw, x2 // encoding: [0x42,0x76,0x08,0xd5]
3591 // CHECK: dc cvac, x9 // encoding: [0x29,0x7a,0x0b,0xd5]
3592 // CHECK: dc csw, x10 // encoding: [0x4a,0x7a,0x08,0xd5]
3593 // CHECK: dc cvau, x0 // encoding: [0x20,0x7b,0x0b,0xd5]
3594 // CHECK: dc civac, x3 // encoding: [0x23,0x7e,0x0b,0xd5]
3595 // CHECK: dc cisw, x30 // encoding: [0x5e,0x7e,0x08,0xd5]
3597 at S1E1R, x19
3598 at S1E2R, x19
3599 at S1E3R, x19
3600 at S1E1W, x19
3601 at S1E2W, x19
3602 at S1E3W, x19
3603 at S1E0R, x19
3604 at S1E0W, x19
3605 at S12E1R, x20
3606 at S12E1W, x20
3607 at S12E0R, x20
3608 at S12E0W, x20
3609 // CHECK: at s1e1r, x19 // encoding: [0x13,0x78,0x08,0xd5]
3610 // CHECK: at s1e2r, x19 // encoding: [0x13,0x78,0x0c,0xd5]
3611 // CHECK: at s1e3r, x19 // encoding: [0x13,0x78,0x0e,0xd5]
3612 // CHECK: at s1e1w, x19 // encoding: [0x33,0x78,0x08,0xd5]
3613 // CHECK: at s1e2w, x19 // encoding: [0x33,0x78,0x0c,0xd5]
3614 // CHECK: at s1e3w, x19 // encoding: [0x33,0x78,0x0e,0xd5]
3615 // CHECK: at s1e0r, x19 // encoding: [0x53,0x78,0x08,0xd5]
3616 // CHECK: at s1e0w, x19 // encoding: [0x73,0x78,0x08,0xd5]
3617 // CHECK: at s12e1r, x20 // encoding: [0x94,0x78,0x0c,0xd5]
3618 // CHECK: at s12e1w, x20 // encoding: [0xb4,0x78,0x0c,0xd5]
3619 // CHECK: at s12e0r, x20 // encoding: [0xd4,0x78,0x0c,0xd5]
3620 // CHECK: at s12e0w, x20 // encoding: [0xf4,0x78,0x0c,0xd5]
3622 tlbi IPAS2E1IS, x4
3623 tlbi IPAS2LE1IS, x9
3624 tlbi VMALLE1IS
3625 tlbi ALLE2IS
3626 tlbi ALLE3IS
3627 tlbi VAE1IS, x1
3628 tlbi VAE2IS, x2
3629 tlbi VAE3IS, x3
3630 tlbi ASIDE1IS, x5
3631 tlbi VAAE1IS, x9
3632 tlbi ALLE1IS
3633 tlbi VALE1IS, x10
3634 tlbi VALE2IS, x11
3635 tlbi VALE3IS, x13
3636 tlbi VMALLS12E1IS
3637 tlbi VAALE1IS, x14
3638 tlbi IPAS2E1, x15
3639 tlbi IPAS2LE1, x16
3640 tlbi VMALLE1
3641 tlbi ALLE2
3642 tlbi ALLE3
3643 tlbi VAE1, x17
3644 tlbi VAE2, x18
3645 tlbi VAE3, x19
3646 tlbi ASIDE1, x20
3647 tlbi VAAE1, x21
3648 tlbi ALLE1
3649 tlbi VALE1, x22
3650 tlbi VALE2, x23
3651 tlbi VALE3, x24
3652 tlbi VMALLS12E1
3653 tlbi VAALE1, x25
3654 // CHECK: tlbi ipas2e1is, x4 // encoding: [0x24,0x80,0x0c,0xd5]
3655 // CHECK: tlbi ipas2le1is, x9 // encoding: [0xa9,0x80,0x0c,0xd5]
3656 // CHECK: tlbi vmalle1is // encoding: [0x1f,0x83,0x08,0xd5]
3657 // CHECK: tlbi alle2is // encoding: [0x1f,0x83,0x0c,0xd5]
3658 // CHECK: tlbi alle3is // encoding: [0x1f,0x83,0x0e,0xd5]
3659 // CHECK: tlbi vae1is, x1 // encoding: [0x21,0x83,0x08,0xd5]
3660 // CHECK: tlbi vae2is, x2 // encoding: [0x22,0x83,0x0c,0xd5]
3661 // CHECK: tlbi vae3is, x3 // encoding: [0x23,0x83,0x0e,0xd5]
3662 // CHECK: tlbi aside1is, x5 // encoding: [0x45,0x83,0x08,0xd5]
3663 // CHECK: tlbi vaae1is, x9 // encoding: [0x69,0x83,0x08,0xd5]
3664 // CHECK: tlbi alle1is // encoding: [0x9f,0x83,0x0c,0xd5]
3665 // CHECK: tlbi vale1is, x10 // encoding: [0xaa,0x83,0x08,0xd5]
3666 // CHECK: tlbi vale2is, x11 // encoding: [0xab,0x83,0x0c,0xd5]
3667 // CHECK: tlbi vale3is, x13 // encoding: [0xad,0x83,0x0e,0xd5]
3668 // CHECK: tlbi vmalls12e1is // encoding: [0xdf,0x83,0x0c,0xd5]
3669 // CHECK: tlbi vaale1is, x14 // encoding: [0xee,0x83,0x08,0xd5]
3670 // CHECK: tlbi ipas2e1, x15 // encoding: [0x2f,0x84,0x0c,0xd5]
3671 // CHECK: tlbi ipas2le1, x16 // encoding: [0xb0,0x84,0x0c,0xd5]
3672 // CHECK: tlbi vmalle1 // encoding: [0x1f,0x87,0x08,0xd5]
3673 // CHECK: tlbi alle2 // encoding: [0x1f,0x87,0x0c,0xd5]
3674 // CHECK: tlbi alle3 // encoding: [0x1f,0x87,0x0e,0xd5]
3675 // CHECK: tlbi vae1, x17 // encoding: [0x31,0x87,0x08,0xd5]
3676 // CHECK: tlbi vae2, x18 // encoding: [0x32,0x87,0x0c,0xd5]
3677 // CHECK: tlbi vae3, x19 // encoding: [0x33,0x87,0x0e,0xd5]
3678 // CHECK: tlbi aside1, x20 // encoding: [0x54,0x87,0x08,0xd5]
3679 // CHECK: tlbi vaae1, x21 // encoding: [0x75,0x87,0x08,0xd5]
3680 // CHECK: tlbi alle1 // encoding: [0x9f,0x87,0x0c,0xd5]
3681 // CHECK: tlbi vale1, x22 // encoding: [0xb6,0x87,0x08,0xd5]
3682 // CHECK: tlbi vale2, x23 // encoding: [0xb7,0x87,0x0c,0xd5]
3683 // CHECK: tlbi vale3, x24 // encoding: [0xb8,0x87,0x0e,0xd5]
3684 // CHECK: tlbi vmalls12e1 // encoding: [0xdf,0x87,0x0c,0xd5]
3685 // CHECK: tlbi vaale1, x25 // encoding: [0xf9,0x87,0x08,0xd5]
3687 msr TEECR32_EL1, x12
3688 msr OSDTRRX_EL1, x12
3689 msr MDCCINT_EL1, x12
3690 msr MDSCR_EL1, x12
3691 msr OSDTRTX_EL1, x12
3692 msr DBGDTR_EL0, x12
3693 msr DBGDTRTX_EL0, x12
3694 msr OSECCR_EL1, x12
3695 msr DBGVCR32_EL2, x12
3696 msr DBGBVR0_EL1, x12
3697 msr DBGBVR1_EL1, x12
3698 msr DBGBVR2_EL1, x12
3699 msr DBGBVR3_EL1, x12
3700 msr DBGBVR4_EL1, x12
3701 msr DBGBVR5_EL1, x12
3702 msr DBGBVR6_EL1, x12
3703 msr DBGBVR7_EL1, x12
3704 msr DBGBVR8_EL1, x12
3705 msr DBGBVR9_EL1, x12
3706 msr DBGBVR10_EL1, x12
3707 msr DBGBVR11_EL1, x12
3708 msr DBGBVR12_EL1, x12
3709 msr DBGBVR13_EL1, x12
3710 msr DBGBVR14_EL1, x12
3711 msr DBGBVR15_EL1, x12
3712 msr DBGBCR0_EL1, x12
3713 msr DBGBCR1_EL1, x12
3714 msr DBGBCR2_EL1, x12
3715 msr DBGBCR3_EL1, x12
3716 msr DBGBCR4_EL1, x12
3717 msr DBGBCR5_EL1, x12
3718 msr DBGBCR6_EL1, x12
3719 msr DBGBCR7_EL1, x12
3720 msr DBGBCR8_EL1, x12
3721 msr DBGBCR9_EL1, x12
3722 msr DBGBCR10_EL1, x12
3723 msr DBGBCR11_EL1, x12
3724 msr DBGBCR12_EL1, x12
3725 msr DBGBCR13_EL1, x12
3726 msr DBGBCR14_EL1, x12
3727 msr DBGBCR15_EL1, x12
3728 msr DBGWVR0_EL1, x12
3729 msr DBGWVR1_EL1, x12
3730 msr DBGWVR2_EL1, x12
3731 msr DBGWVR3_EL1, x12
3732 msr DBGWVR4_EL1, x12
3733 msr DBGWVR5_EL1, x12
3734 msr DBGWVR6_EL1, x12
3735 msr DBGWVR7_EL1, x12
3736 msr DBGWVR8_EL1, x12
3737 msr DBGWVR9_EL1, x12
3738 msr DBGWVR10_EL1, x12
3739 msr DBGWVR11_EL1, x12
3740 msr DBGWVR12_EL1, x12
3741 msr DBGWVR13_EL1, x12
3742 msr DBGWVR14_EL1, x12
3743 msr DBGWVR15_EL1, x12
3744 msr DBGWCR0_EL1, x12
3745 msr DBGWCR1_EL1, x12
3746 msr DBGWCR2_EL1, x12
3747 msr DBGWCR3_EL1, x12
3748 msr DBGWCR4_EL1, x12
3749 msr DBGWCR5_EL1, x12
3750 msr DBGWCR6_EL1, x12
3751 msr DBGWCR7_EL1, x12
3752 msr DBGWCR8_EL1, x12
3753 msr DBGWCR9_EL1, x12
3754 msr DBGWCR10_EL1, x12
3755 msr DBGWCR11_EL1, x12
3756 msr DBGWCR12_EL1, x12
3757 msr DBGWCR13_EL1, x12
3758 msr DBGWCR14_EL1, x12
3759 msr DBGWCR15_EL1, x12
3760 msr TEEHBR32_EL1, x12
3761 msr OSLAR_EL1, x12
3762 msr OSDLR_EL1, x12
3763 msr DBGPRCR_EL1, x12
3764 msr DBGCLAIMSET_EL1, x12
3765 msr DBGCLAIMCLR_EL1, x12
3766 msr CSSELR_EL1, x12
3767 msr VPIDR_EL2, x12
3768 msr VMPIDR_EL2, x12
3769 msr SCTLR_EL1, x12
3770 msr SCTLR_EL2, x12
3771 msr SCTLR_EL3, x12
3772 msr ACTLR_EL1, x12
3773 msr ACTLR_EL2, x12
3774 msr ACTLR_EL3, x12
3775 msr CPACR_EL1, x12
3776 msr HCR_EL2, x12
3777 msr SCR_EL3, x12
3778 msr MDCR_EL2, x12
3779 msr SDER32_EL3, x12
3780 msr CPTR_EL2, x12
3781 msr CPTR_EL3, x12
3782 msr HSTR_EL2, x12
3783 msr HACR_EL2, x12
3784 msr MDCR_EL3, x12
3785 msr TTBR0_EL1, x12
3786 msr TTBR0_EL2, x12
3787 msr TTBR0_EL3, x12
3788 msr TTBR1_EL1, x12
3789 msr TCR_EL1, x12
3790 msr TCR_EL2, x12
3791 msr TCR_EL3, x12
3792 msr VTTBR_EL2, x12
3793 msr VTCR_EL2, x12
3794 msr DACR32_EL2, x12
3795 msr SPSR_EL1, x12
3796 msr SPSR_EL2, x12
3797 msr SPSR_EL3, x12
3798 msr ELR_EL1, x12
3799 msr ELR_EL2, x12
3800 msr ELR_EL3, x12
3801 msr SP_EL0, x12
3802 msr SP_EL1, x12
3803 msr SP_EL2, x12
3804 msr SPSel, x12
3805 msr NZCV, x12
3806 msr DAIF, x12
3807 msr CurrentEL, x12
3808 msr SPSR_irq, x12
3809 msr SPSR_abt, x12
3810 msr SPSR_und, x12
3811 msr SPSR_fiq, x12
3812 msr FPCR, x12
3813 msr FPSR, x12
3814 msr DSPSR_EL0, x12
3815 msr DLR_EL0, x12
3816 msr IFSR32_EL2, x12
3817 msr AFSR0_EL1, x12
3818 msr AFSR0_EL2, x12
3819 msr AFSR0_EL3, x12
3820 msr AFSR1_EL1, x12
3821 msr AFSR1_EL2, x12
3822 msr AFSR1_EL3, x12
3823 msr ESR_EL1, x12
3824 msr ESR_EL2, x12
3825 msr ESR_EL3, x12
3826 msr FPEXC32_EL2, x12
3827 msr FAR_EL1, x12
3828 msr FAR_EL2, x12
3829 msr FAR_EL3, x12
3830 msr HPFAR_EL2, x12
3831 msr PAR_EL1, x12
3832 msr PMCR_EL0, x12
3833 msr PMCNTENSET_EL0, x12
3834 msr PMCNTENCLR_EL0, x12
3835 msr PMOVSCLR_EL0, x12
3836 msr PMSELR_EL0, x12
3837 msr PMCCNTR_EL0, x12
3838 msr PMXEVTYPER_EL0, x12
3839 msr PMXEVCNTR_EL0, x12
3840 msr PMUSERENR_EL0, x12
3841 msr PMINTENSET_EL1, x12
3842 msr PMINTENCLR_EL1, x12
3843 msr PMOVSSET_EL0, x12
3844 msr MAIR_EL1, x12
3845 msr MAIR_EL2, x12
3846 msr MAIR_EL3, x12
3847 msr AMAIR_EL1, x12
3848 msr AMAIR_EL2, x12
3849 msr AMAIR_EL3, x12
3850 msr VBAR_EL1, x12
3851 msr VBAR_EL2, x12
3852 msr VBAR_EL3, x12
3853 msr RMR_EL1, x12
3854 msr RMR_EL2, x12
3855 msr RMR_EL3, x12
3856 msr CONTEXTIDR_EL1, x12
3857 msr TPIDR_EL0, x12
3858 msr TPIDR_EL2, x12
3859 msr TPIDR_EL3, x12
3860 msr TPIDRRO_EL0, x12
3861 msr TPIDR_EL1, x12
3862 msr CNTFRQ_EL0, x12
3863 msr CNTVOFF_EL2, x12
3864 msr CNTKCTL_EL1, x12
3865 msr CNTHCTL_EL2, x12
3866 msr CNTP_TVAL_EL0, x12
3867 msr CNTHP_TVAL_EL2, x12
3868 msr CNTPS_TVAL_EL1, x12
3869 msr CNTP_CTL_EL0, x12
3870 msr CNTHP_CTL_EL2, x12
3871 msr CNTPS_CTL_EL1, x12
3872 msr CNTP_CVAL_EL0, x12
3873 msr CNTHP_CVAL_EL2, x12
3874 msr CNTPS_CVAL_EL1, x12
3875 msr CNTV_TVAL_EL0, x12
3876 msr CNTV_CTL_EL0, x12
3877 msr CNTV_CVAL_EL0, x12
3878 msr PMEVCNTR0_EL0, x12
3879 msr PMEVCNTR1_EL0, x12
3880 msr PMEVCNTR2_EL0, x12
3881 msr PMEVCNTR3_EL0, x12
3882 msr PMEVCNTR4_EL0, x12
3883 msr PMEVCNTR5_EL0, x12
3884 msr PMEVCNTR6_EL0, x12
3885 msr PMEVCNTR7_EL0, x12
3886 msr PMEVCNTR8_EL0, x12
3887 msr PMEVCNTR9_EL0, x12
3888 msr PMEVCNTR10_EL0, x12
3889 msr PMEVCNTR11_EL0, x12
3890 msr PMEVCNTR12_EL0, x12
3891 msr PMEVCNTR13_EL0, x12
3892 msr PMEVCNTR14_EL0, x12
3893 msr PMEVCNTR15_EL0, x12
3894 msr PMEVCNTR16_EL0, x12
3895 msr PMEVCNTR17_EL0, x12
3896 msr PMEVCNTR18_EL0, x12
3897 msr PMEVCNTR19_EL0, x12
3898 msr PMEVCNTR20_EL0, x12
3899 msr PMEVCNTR21_EL0, x12
3900 msr PMEVCNTR22_EL0, x12
3901 msr PMEVCNTR23_EL0, x12
3902 msr PMEVCNTR24_EL0, x12
3903 msr PMEVCNTR25_EL0, x12
3904 msr PMEVCNTR26_EL0, x12
3905 msr PMEVCNTR27_EL0, x12
3906 msr PMEVCNTR28_EL0, x12
3907 msr PMEVCNTR29_EL0, x12
3908 msr PMEVCNTR30_EL0, x12
3909 msr PMCCFILTR_EL0, x12
3910 msr PMEVTYPER0_EL0, x12
3911 msr PMEVTYPER1_EL0, x12
3912 msr PMEVTYPER2_EL0, x12
3913 msr PMEVTYPER3_EL0, x12
3914 msr PMEVTYPER4_EL0, x12
3915 msr PMEVTYPER5_EL0, x12
3916 msr PMEVTYPER6_EL0, x12
3917 msr PMEVTYPER7_EL0, x12
3918 msr PMEVTYPER8_EL0, x12
3919 msr PMEVTYPER9_EL0, x12
3920 msr PMEVTYPER10_EL0, x12
3921 msr PMEVTYPER11_EL0, x12
3922 msr PMEVTYPER12_EL0, x12
3923 msr PMEVTYPER13_EL0, x12
3924 msr PMEVTYPER14_EL0, x12
3925 msr PMEVTYPER15_EL0, x12
3926 msr PMEVTYPER16_EL0, x12
3927 msr PMEVTYPER17_EL0, x12
3928 msr PMEVTYPER18_EL0, x12
3929 msr PMEVTYPER19_EL0, x12
3930 msr PMEVTYPER20_EL0, x12
3931 msr PMEVTYPER21_EL0, x12
3932 msr PMEVTYPER22_EL0, x12
3933 msr PMEVTYPER23_EL0, x12
3934 msr PMEVTYPER24_EL0, x12
3935 msr PMEVTYPER25_EL0, x12
3936 msr PMEVTYPER26_EL0, x12
3937 msr PMEVTYPER27_EL0, x12
3938 msr PMEVTYPER28_EL0, x12
3939 msr PMEVTYPER29_EL0, x12
3940 msr PMEVTYPER30_EL0, x12
3941 // CHECK: msr {{teecr32_el1|TEECR32_EL1}}, x12 // encoding: [0x0c,0x00,0x12,0xd5]
3942 // CHECK: msr {{osdtrrx_el1|OSDTRRX_EL1}}, x12 // encoding: [0x4c,0x00,0x10,0xd5]
3943 // CHECK: msr {{mdccint_el1|MDCCINT_EL1}}, x12 // encoding: [0x0c,0x02,0x10,0xd5]
3944 // CHECK: msr {{mdscr_el1|MDSCR_EL1}}, x12 // encoding: [0x4c,0x02,0x10,0xd5]
3945 // CHECK: msr {{osdtrtx_el1|OSDTRTX_EL1}}, x12 // encoding: [0x4c,0x03,0x10,0xd5]
3946 // CHECK: msr {{dbgdtr_el0|DBGDTR_EL0}}, x12 // encoding: [0x0c,0x04,0x13,0xd5]
3947 // CHECK: msr {{dbgdtrtx_el0|DBGDTRTX_EL0}}, x12 // encoding: [0x0c,0x05,0x13,0xd5]
3948 // CHECK: msr {{oseccr_el1|OSECCR_EL1}}, x12 // encoding: [0x4c,0x06,0x10,0xd5]
3949 // CHECK: msr {{dbgvcr32_el2|DBGVCR32_EL2}}, x12 // encoding: [0x0c,0x07,0x14,0xd5]
3950 // CHECK: msr {{dbgbvr0_el1|DBGBVR0_EL1}}, x12 // encoding: [0x8c,0x00,0x10,0xd5]
3951 // CHECK: msr {{dbgbvr1_el1|DBGBVR1_EL1}}, x12 // encoding: [0x8c,0x01,0x10,0xd5]
3952 // CHECK: msr {{dbgbvr2_el1|DBGBVR2_EL1}}, x12 // encoding: [0x8c,0x02,0x10,0xd5]
3953 // CHECK: msr {{dbgbvr3_el1|DBGBVR3_EL1}}, x12 // encoding: [0x8c,0x03,0x10,0xd5]
3954 // CHECK: msr {{dbgbvr4_el1|DBGBVR4_EL1}}, x12 // encoding: [0x8c,0x04,0x10,0xd5]
3955 // CHECK: msr {{dbgbvr5_el1|DBGBVR5_EL1}}, x12 // encoding: [0x8c,0x05,0x10,0xd5]
3956 // CHECK: msr {{dbgbvr6_el1|DBGBVR6_EL1}}, x12 // encoding: [0x8c,0x06,0x10,0xd5]
3957 // CHECK: msr {{dbgbvr7_el1|DBGBVR7_EL1}}, x12 // encoding: [0x8c,0x07,0x10,0xd5]
3958 // CHECK: msr {{dbgbvr8_el1|DBGBVR8_EL1}}, x12 // encoding: [0x8c,0x08,0x10,0xd5]
3959 // CHECK: msr {{dbgbvr9_el1|DBGBVR9_EL1}}, x12 // encoding: [0x8c,0x09,0x10,0xd5]
3960 // CHECK: msr {{dbgbvr10_el1|DBGBVR10_EL1}}, x12 // encoding: [0x8c,0x0a,0x10,0xd5]
3961 // CHECK: msr {{dbgbvr11_el1|DBGBVR11_EL1}}, x12 // encoding: [0x8c,0x0b,0x10,0xd5]
3962 // CHECK: msr {{dbgbvr12_el1|DBGBVR12_EL1}}, x12 // encoding: [0x8c,0x0c,0x10,0xd5]
3963 // CHECK: msr {{dbgbvr13_el1|DBGBVR13_EL1}}, x12 // encoding: [0x8c,0x0d,0x10,0xd5]
3964 // CHECK: msr {{dbgbvr14_el1|DBGBVR14_EL1}}, x12 // encoding: [0x8c,0x0e,0x10,0xd5]
3965 // CHECK: msr {{dbgbvr15_el1|DBGBVR15_EL1}}, x12 // encoding: [0x8c,0x0f,0x10,0xd5]
3966 // CHECK: msr {{dbgbcr0_el1|DBGBCR0_EL1}}, x12 // encoding: [0xac,0x00,0x10,0xd5]
3967 // CHECK: msr {{dbgbcr1_el1|DBGBCR1_EL1}}, x12 // encoding: [0xac,0x01,0x10,0xd5]
3968 // CHECK: msr {{dbgbcr2_el1|DBGBCR2_EL1}}, x12 // encoding: [0xac,0x02,0x10,0xd5]
3969 // CHECK: msr {{dbgbcr3_el1|DBGBCR3_EL1}}, x12 // encoding: [0xac,0x03,0x10,0xd5]
3970 // CHECK: msr {{dbgbcr4_el1|DBGBCR4_EL1}}, x12 // encoding: [0xac,0x04,0x10,0xd5]
3971 // CHECK: msr {{dbgbcr5_el1|DBGBCR5_EL1}}, x12 // encoding: [0xac,0x05,0x10,0xd5]
3972 // CHECK: msr {{dbgbcr6_el1|DBGBCR6_EL1}}, x12 // encoding: [0xac,0x06,0x10,0xd5]
3973 // CHECK: msr {{dbgbcr7_el1|DBGBCR7_EL1}}, x12 // encoding: [0xac,0x07,0x10,0xd5]
3974 // CHECK: msr {{dbgbcr8_el1|DBGBCR8_EL1}}, x12 // encoding: [0xac,0x08,0x10,0xd5]
3975 // CHECK: msr {{dbgbcr9_el1|DBGBCR9_EL1}}, x12 // encoding: [0xac,0x09,0x10,0xd5]
3976 // CHECK: msr {{dbgbcr10_el1|DBGBCR10_EL1}}, x12 // encoding: [0xac,0x0a,0x10,0xd5]
3977 // CHECK: msr {{dbgbcr11_el1|DBGBCR11_EL1}}, x12 // encoding: [0xac,0x0b,0x10,0xd5]
3978 // CHECK: msr {{dbgbcr12_el1|DBGBCR12_EL1}}, x12 // encoding: [0xac,0x0c,0x10,0xd5]
3979 // CHECK: msr {{dbgbcr13_el1|DBGBCR13_EL1}}, x12 // encoding: [0xac,0x0d,0x10,0xd5]
3980 // CHECK: msr {{dbgbcr14_el1|DBGBCR14_EL1}}, x12 // encoding: [0xac,0x0e,0x10,0xd5]
3981 // CHECK: msr {{dbgbcr15_el1|DBGBCR15_EL1}}, x12 // encoding: [0xac,0x0f,0x10,0xd5]
3982 // CHECK: msr {{dbgwvr0_el1|DBGWVR0_EL1}}, x12 // encoding: [0xcc,0x00,0x10,0xd5]
3983 // CHECK: msr {{dbgwvr1_el1|DBGWVR1_EL1}}, x12 // encoding: [0xcc,0x01,0x10,0xd5]
3984 // CHECK: msr {{dbgwvr2_el1|DBGWVR2_EL1}}, x12 // encoding: [0xcc,0x02,0x10,0xd5]
3985 // CHECK: msr {{dbgwvr3_el1|DBGWVR3_EL1}}, x12 // encoding: [0xcc,0x03,0x10,0xd5]
3986 // CHECK: msr {{dbgwvr4_el1|DBGWVR4_EL1}}, x12 // encoding: [0xcc,0x04,0x10,0xd5]
3987 // CHECK: msr {{dbgwvr5_el1|DBGWVR5_EL1}}, x12 // encoding: [0xcc,0x05,0x10,0xd5]
3988 // CHECK: msr {{dbgwvr6_el1|DBGWVR6_EL1}}, x12 // encoding: [0xcc,0x06,0x10,0xd5]
3989 // CHECK: msr {{dbgwvr7_el1|DBGWVR7_EL1}}, x12 // encoding: [0xcc,0x07,0x10,0xd5]
3990 // CHECK: msr {{dbgwvr8_el1|DBGWVR8_EL1}}, x12 // encoding: [0xcc,0x08,0x10,0xd5]
3991 // CHECK: msr {{dbgwvr9_el1|DBGWVR9_EL1}}, x12 // encoding: [0xcc,0x09,0x10,0xd5]
3992 // CHECK: msr {{dbgwvr10_el1|DBGWVR10_EL1}}, x12 // encoding: [0xcc,0x0a,0x10,0xd5]
3993 // CHECK: msr {{dbgwvr11_el1|DBGWVR11_EL1}}, x12 // encoding: [0xcc,0x0b,0x10,0xd5]
3994 // CHECK: msr {{dbgwvr12_el1|DBGWVR12_EL1}}, x12 // encoding: [0xcc,0x0c,0x10,0xd5]
3995 // CHECK: msr {{dbgwvr13_el1|DBGWVR13_EL1}}, x12 // encoding: [0xcc,0x0d,0x10,0xd5]
3996 // CHECK: msr {{dbgwvr14_el1|DBGWVR14_EL1}}, x12 // encoding: [0xcc,0x0e,0x10,0xd5]
3997 // CHECK: msr {{dbgwvr15_el1|DBGWVR15_EL1}}, x12 // encoding: [0xcc,0x0f,0x10,0xd5]
3998 // CHECK: msr {{dbgwcr0_el1|DBGWCR0_EL1}}, x12 // encoding: [0xec,0x00,0x10,0xd5]
3999 // CHECK: msr {{dbgwcr1_el1|DBGWCR1_EL1}}, x12 // encoding: [0xec,0x01,0x10,0xd5]
4000 // CHECK: msr {{dbgwcr2_el1|DBGWCR2_EL1}}, x12 // encoding: [0xec,0x02,0x10,0xd5]
4001 // CHECK: msr {{dbgwcr3_el1|DBGWCR3_EL1}}, x12 // encoding: [0xec,0x03,0x10,0xd5]
4002 // CHECK: msr {{dbgwcr4_el1|DBGWCR4_EL1}}, x12 // encoding: [0xec,0x04,0x10,0xd5]
4003 // CHECK: msr {{dbgwcr5_el1|DBGWCR5_EL1}}, x12 // encoding: [0xec,0x05,0x10,0xd5]
4004 // CHECK: msr {{dbgwcr6_el1|DBGWCR6_EL1}}, x12 // encoding: [0xec,0x06,0x10,0xd5]
4005 // CHECK: msr {{dbgwcr7_el1|DBGWCR7_EL1}}, x12 // encoding: [0xec,0x07,0x10,0xd5]
4006 // CHECK: msr {{dbgwcr8_el1|DBGWCR8_EL1}}, x12 // encoding: [0xec,0x08,0x10,0xd5]
4007 // CHECK: msr {{dbgwcr9_el1|DBGWCR9_EL1}}, x12 // encoding: [0xec,0x09,0x10,0xd5]
4008 // CHECK: msr {{dbgwcr10_el1|DBGWCR10_EL1}}, x12 // encoding: [0xec,0x0a,0x10,0xd5]
4009 // CHECK: msr {{dbgwcr11_el1|DBGWCR11_EL1}}, x12 // encoding: [0xec,0x0b,0x10,0xd5]
4010 // CHECK: msr {{dbgwcr12_el1|DBGWCR12_EL1}}, x12 // encoding: [0xec,0x0c,0x10,0xd5]
4011 // CHECK: msr {{dbgwcr13_el1|DBGWCR13_EL1}}, x12 // encoding: [0xec,0x0d,0x10,0xd5]
4012 // CHECK: msr {{dbgwcr14_el1|DBGWCR14_EL1}}, x12 // encoding: [0xec,0x0e,0x10,0xd5]
4013 // CHECK: msr {{dbgwcr15_el1|DBGWCR15_EL1}}, x12 // encoding: [0xec,0x0f,0x10,0xd5]
4014 // CHECK: msr {{teehbr32_el1|TEEHBR32_EL1}}, x12 // encoding: [0x0c,0x10,0x12,0xd5]
4015 // CHECK: msr {{oslar_el1|OSLAR_EL1}}, x12 // encoding: [0x8c,0x10,0x10,0xd5]
4016 // CHECK: msr {{osdlr_el1|OSDLR_EL1}}, x12 // encoding: [0x8c,0x13,0x10,0xd5]
4017 // CHECK: msr {{dbgprcr_el1|DBGPRCR_EL1}}, x12 // encoding: [0x8c,0x14,0x10,0xd5]
4018 // CHECK: msr {{dbgclaimset_el1|DBGCLAIMSET_EL1}}, x12 // encoding: [0xcc,0x78,0x10,0xd5]
4019 // CHECK: msr {{dbgclaimclr_el1|DBGCLAIMCLR_EL1}}, x12 // encoding: [0xcc,0x79,0x10,0xd5]
4020 // CHECK: msr {{csselr_el1|CSSELR_EL1}}, x12 // encoding: [0x0c,0x00,0x1a,0xd5]
4021 // CHECK: msr {{vpidr_el2|VPIDR_EL2}}, x12 // encoding: [0x0c,0x00,0x1c,0xd5]
4022 // CHECK: msr {{vmpidr_el2|VMPIDR_EL2}}, x12 // encoding: [0xac,0x00,0x1c,0xd5]
4023 // CHECK: msr {{sctlr_el1|SCTLR_EL1}}, x12 // encoding: [0x0c,0x10,0x18,0xd5]
4024 // CHECK: msr {{sctlr_el2|SCTLR_EL2}}, x12 // encoding: [0x0c,0x10,0x1c,0xd5]
4025 // CHECK: msr {{sctlr_el3|SCTLR_EL3}}, x12 // encoding: [0x0c,0x10,0x1e,0xd5]
4026 // CHECK: msr {{actlr_el1|ACTLR_EL1}}, x12 // encoding: [0x2c,0x10,0x18,0xd5]
4027 // CHECK: msr {{actlr_el2|ACTLR_EL2}}, x12 // encoding: [0x2c,0x10,0x1c,0xd5]
4028 // CHECK: msr {{actlr_el3|ACTLR_EL3}}, x12 // encoding: [0x2c,0x10,0x1e,0xd5]
4029 // CHECK: msr {{cpacr_el1|CPACR_EL1}}, x12 // encoding: [0x4c,0x10,0x18,0xd5]
4030 // CHECK: msr {{hcr_el2|HCR_EL2}}, x12 // encoding: [0x0c,0x11,0x1c,0xd5]
4031 // CHECK: msr {{scr_el3|SCR_EL3}}, x12 // encoding: [0x0c,0x11,0x1e,0xd5]
4032 // CHECK: msr {{mdcr_el2|MDCR_EL2}}, x12 // encoding: [0x2c,0x11,0x1c,0xd5]
4033 // CHECK: msr {{sder32_el3|SDER32_EL3}}, x12 // encoding: [0x2c,0x11,0x1e,0xd5]
4034 // CHECK: msr {{cptr_el2|CPTR_EL2}}, x12 // encoding: [0x4c,0x11,0x1c,0xd5]
4035 // CHECK: msr {{cptr_el3|CPTR_EL3}}, x12 // encoding: [0x4c,0x11,0x1e,0xd5]
4036 // CHECK: msr {{hstr_el2|HSTR_EL2}}, x12 // encoding: [0x6c,0x11,0x1c,0xd5]
4037 // CHECK: msr {{hacr_el2|HACR_EL2}}, x12 // encoding: [0xec,0x11,0x1c,0xd5]
4038 // CHECK: msr {{mdcr_el3|MDCR_EL3}}, x12 // encoding: [0x2c,0x13,0x1e,0xd5]
4039 // CHECK: msr {{ttbr0_el1|TTBR0_EL1}}, x12 // encoding: [0x0c,0x20,0x18,0xd5]
4040 // CHECK: msr {{ttbr0_el2|TTBR0_EL2}}, x12 // encoding: [0x0c,0x20,0x1c,0xd5]
4041 // CHECK: msr {{ttbr0_el3|TTBR0_EL3}}, x12 // encoding: [0x0c,0x20,0x1e,0xd5]
4042 // CHECK: msr {{ttbr1_el1|TTBR1_EL1}}, x12 // encoding: [0x2c,0x20,0x18,0xd5]
4043 // CHECK: msr {{tcr_el1|TCR_EL1}}, x12 // encoding: [0x4c,0x20,0x18,0xd5]
4044 // CHECK: msr {{tcr_el2|TCR_EL2}}, x12 // encoding: [0x4c,0x20,0x1c,0xd5]
4045 // CHECK: msr {{tcr_el3|TCR_EL3}}, x12 // encoding: [0x4c,0x20,0x1e,0xd5]
4046 // CHECK: msr {{vttbr_el2|VTTBR_EL2}}, x12 // encoding: [0x0c,0x21,0x1c,0xd5]
4047 // CHECK: msr {{vtcr_el2|VTCR_EL2}}, x12 // encoding: [0x4c,0x21,0x1c,0xd5]
4048 // CHECK: msr {{dacr32_el2|DACR32_EL2}}, x12 // encoding: [0x0c,0x30,0x1c,0xd5]
4049 // CHECK: msr {{spsr_el1|SPSR_EL1}}, x12 // encoding: [0x0c,0x40,0x18,0xd5]
4050 // CHECK: msr {{spsr_el2|SPSR_EL2}}, x12 // encoding: [0x0c,0x40,0x1c,0xd5]
4051 // CHECK: msr {{spsr_el3|SPSR_EL3}}, x12 // encoding: [0x0c,0x40,0x1e,0xd5]
4052 // CHECK: msr {{elr_el1|ELR_EL1}}, x12 // encoding: [0x2c,0x40,0x18,0xd5]
4053 // CHECK: msr {{elr_el2|ELR_EL2}}, x12 // encoding: [0x2c,0x40,0x1c,0xd5]
4054 // CHECK: msr {{elr_el3|ELR_EL3}}, x12 // encoding: [0x2c,0x40,0x1e,0xd5]
4055 // CHECK: msr {{sp_el0|SP_EL0}}, x12 // encoding: [0x0c,0x41,0x18,0xd5]
4056 // CHECK: msr {{sp_el1|SP_EL1}}, x12 // encoding: [0x0c,0x41,0x1c,0xd5]
4057 // CHECK: msr {{sp_el2|SP_EL2}}, x12 // encoding: [0x0c,0x41,0x1e,0xd5]
4058 // CHECK: msr {{SPSel|SPSEL}}, x12 // encoding: [0x0c,0x42,0x18,0xd5]
4059 // CHECK: msr {{nzcv|NZCV}}, x12 // encoding: [0x0c,0x42,0x1b,0xd5]
4060 // CHECK: msr {{daif|DAIF}}, x12 // encoding: [0x2c,0x42,0x1b,0xd5]
4061 // CHECK: msr {{CurrentEL|CURRENTEL}}, x12 // encoding: [0x4c,0x42,0x18,0xd5]
4062 // CHECK: msr {{SPSR_irq|SPSR_IRQ}}, x12 // encoding: [0x0c,0x43,0x1c,0xd5]
4063 // CHECK: msr {{SPSR_abt|SPSR_ABT}}, x12 // encoding: [0x2c,0x43,0x1c,0xd5]
4064 // CHECK: msr {{SPSR_und|SPSR_UND}}, x12 // encoding: [0x4c,0x43,0x1c,0xd5]
4065 // CHECK: msr {{SPSR_fiq|SPSR_FIQ}}, x12 // encoding: [0x6c,0x43,0x1c,0xd5]
4066 // CHECK: msr {{fpcr|FPCR}}, x12 // encoding: [0x0c,0x44,0x1b,0xd5]
4067 // CHECK: msr {{fpsr|FPSR}}, x12 // encoding: [0x2c,0x44,0x1b,0xd5]
4068 // CHECK: msr {{dspsr_el0|DSPSR_EL0}}, x12 // encoding: [0x0c,0x45,0x1b,0xd5]
4069 // CHECK: msr {{dlr_el0|DLR_EL0}}, x12 // encoding: [0x2c,0x45,0x1b,0xd5]
4070 // CHECK: msr {{ifsr32_el2|IFSR32_EL2}}, x12 // encoding: [0x2c,0x50,0x1c,0xd5]
4071 // CHECK: msr {{afsr0_el1|AFSR0_EL1}}, x12 // encoding: [0x0c,0x51,0x18,0xd5]
4072 // CHECK: msr {{afsr0_el2|AFSR0_EL2}}, x12 // encoding: [0x0c,0x51,0x1c,0xd5]
4073 // CHECK: msr {{afsr0_el3|AFSR0_EL3}}, x12 // encoding: [0x0c,0x51,0x1e,0xd5]
4074 // CHECK: msr {{afsr1_el1|AFSR1_EL1}}, x12 // encoding: [0x2c,0x51,0x18,0xd5]
4075 // CHECK: msr {{afsr1_el2|AFSR1_EL2}}, x12 // encoding: [0x2c,0x51,0x1c,0xd5]
4076 // CHECK: msr {{afsr1_el3|AFSR1_EL3}}, x12 // encoding: [0x2c,0x51,0x1e,0xd5]
4077 // CHECK: msr {{esr_el1|ESR_EL1}}, x12 // encoding: [0x0c,0x52,0x18,0xd5]
4078 // CHECK: msr {{esr_el2|ESR_EL2}}, x12 // encoding: [0x0c,0x52,0x1c,0xd5]
4079 // CHECK: msr {{esr_el3|ESR_EL3}}, x12 // encoding: [0x0c,0x52,0x1e,0xd5]
4080 // CHECK: msr {{fpexc32_el2|FPEXC32_EL2}}, x12 // encoding: [0x0c,0x53,0x1c,0xd5]
4081 // CHECK: msr {{far_el1|FAR_EL1}}, x12 // encoding: [0x0c,0x60,0x18,0xd5]
4082 // CHECK: msr {{far_el2|FAR_EL2}}, x12 // encoding: [0x0c,0x60,0x1c,0xd5]
4083 // CHECK: msr {{far_el3|FAR_EL3}}, x12 // encoding: [0x0c,0x60,0x1e,0xd5]
4084 // CHECK: msr {{hpfar_el2|HPFAR_EL2}}, x12 // encoding: [0x8c,0x60,0x1c,0xd5]
4085 // CHECK: msr {{par_el1|PAR_EL1}}, x12 // encoding: [0x0c,0x74,0x18,0xd5]
4086 // CHECK: msr {{pmcr_el0|PMCR_EL0}}, x12 // encoding: [0x0c,0x9c,0x1b,0xd5]
4087 // CHECK: msr {{pmcntenset_el0|PMCNTENSET_EL0}}, x12 // encoding: [0x2c,0x9c,0x1b,0xd5]
4088 // CHECK: msr {{pmcntenclr_el0|PMCNTENCLR_EL0}}, x12 // encoding: [0x4c,0x9c,0x1b,0xd5]
4089 // CHECK: msr {{pmovsclr_el0|PMOVSCLR_EL0}}, x12 // encoding: [0x6c,0x9c,0x1b,0xd5]
4090 // CHECK: msr {{pmselr_el0|PMSELR_EL0}}, x12 // encoding: [0xac,0x9c,0x1b,0xd5]
4091 // CHECK: msr {{pmccntr_el0|PMCCNTR_EL0}}, x12 // encoding: [0x0c,0x9d,0x1b,0xd5]
4092 // CHECK: msr {{pmxevtyper_el0|PMXEVTYPER_EL0}}, x12 // encoding: [0x2c,0x9d,0x1b,0xd5]
4093 // CHECK: msr {{pmxevcntr_el0|PMXEVCNTR_EL0}}, x12 // encoding: [0x4c,0x9d,0x1b,0xd5]
4094 // CHECK: msr {{pmuserenr_el0|PMUSERENR_EL0}}, x12 // encoding: [0x0c,0x9e,0x1b,0xd5]
4095 // CHECK: msr {{pmintenset_el1|PMINTENSET_EL1}}, x12 // encoding: [0x2c,0x9e,0x18,0xd5]
4096 // CHECK: msr {{pmintenclr_el1|PMINTENCLR_EL1}}, x12 // encoding: [0x4c,0x9e,0x18,0xd5]
4097 // CHECK: msr {{pmovsset_el0|PMOVSSET_EL0}}, x12 // encoding: [0x6c,0x9e,0x1b,0xd5]
4098 // CHECK: msr {{mair_el1|MAIR_EL1}}, x12 // encoding: [0x0c,0xa2,0x18,0xd5]
4099 // CHECK: msr {{mair_el2|MAIR_EL2}}, x12 // encoding: [0x0c,0xa2,0x1c,0xd5]
4100 // CHECK: msr {{mair_el3|MAIR_EL3}}, x12 // encoding: [0x0c,0xa2,0x1e,0xd5]
4101 // CHECK: msr {{amair_el1|AMAIR_EL1}}, x12 // encoding: [0x0c,0xa3,0x18,0xd5]
4102 // CHECK: msr {{amair_el2|AMAIR_EL2}}, x12 // encoding: [0x0c,0xa3,0x1c,0xd5]
4103 // CHECK: msr {{amair_el3|AMAIR_EL3}}, x12 // encoding: [0x0c,0xa3,0x1e,0xd5]
4104 // CHECK: msr {{vbar_el1|VBAR_EL1}}, x12 // encoding: [0x0c,0xc0,0x18,0xd5]
4105 // CHECK: msr {{vbar_el2|VBAR_EL2}}, x12 // encoding: [0x0c,0xc0,0x1c,0xd5]
4106 // CHECK: msr {{vbar_el3|VBAR_EL3}}, x12 // encoding: [0x0c,0xc0,0x1e,0xd5]
4107 // CHECK: msr {{rmr_el1|RMR_EL1}}, x12 // encoding: [0x4c,0xc0,0x18,0xd5]
4108 // CHECK: msr {{rmr_el2|RMR_EL2}}, x12 // encoding: [0x4c,0xc0,0x1c,0xd5]
4109 // CHECK: msr {{rmr_el3|RMR_EL3}}, x12 // encoding: [0x4c,0xc0,0x1e,0xd5]
4110 // CHECK: msr {{contextidr_el1|CONTEXTIDR_EL1}}, x12 // encoding: [0x2c,0xd0,0x18,0xd5]
4111 // CHECK: msr {{tpidr_el0|TPIDR_EL0}}, x12 // encoding: [0x4c,0xd0,0x1b,0xd5]
4112 // CHECK: msr {{tpidr_el2|TPIDR_EL2}}, x12 // encoding: [0x4c,0xd0,0x1c,0xd5]
4113 // CHECK: msr {{tpidr_el3|TPIDR_EL3}}, x12 // encoding: [0x4c,0xd0,0x1e,0xd5]
4114 // CHECK: msr {{tpidrro_el0|TPIDRRO_EL0}}, x12 // encoding: [0x6c,0xd0,0x1b,0xd5]
4115 // CHECK: msr {{tpidr_el1|TPIDR_EL1}}, x12 // encoding: [0x8c,0xd0,0x18,0xd5]
4116 // CHECK: msr {{cntfrq_el0|CNTFRQ_EL0}}, x12 // encoding: [0x0c,0xe0,0x1b,0xd5]
4117 // CHECK: msr {{cntvoff_el2|CNTVOFF_EL2}}, x12 // encoding: [0x6c,0xe0,0x1c,0xd5]
4118 // CHECK: msr {{cntkctl_el1|CNTKCTL_EL1}}, x12 // encoding: [0x0c,0xe1,0x18,0xd5]
4119 // CHECK: msr {{cnthctl_el2|CNTHCTL_EL2}}, x12 // encoding: [0x0c,0xe1,0x1c,0xd5]
4120 // CHECK: msr {{cntp_tval_el0|CNTP_TVAL_EL0}}, x12 // encoding: [0x0c,0xe2,0x1b,0xd5]
4121 // CHECK: msr {{cnthp_tval_el2|CNTHP_TVAL_EL2}}, x12 // encoding: [0x0c,0xe2,0x1c,0xd5]
4122 // CHECK: msr {{cntps_tval_el1|CNTPS_TVAL_EL1}}, x12 // encoding: [0x0c,0xe2,0x1f,0xd5]
4123 // CHECK: msr {{cntp_ctl_el0|CNTP_CTL_EL0}}, x12 // encoding: [0x2c,0xe2,0x1b,0xd5]
4124 // CHECK: msr {{cnthp_ctl_el2|CNTHP_CTL_EL2}}, x12 // encoding: [0x2c,0xe2,0x1c,0xd5]
4125 // CHECK: msr {{cntps_ctl_el1|CNTPS_CTL_EL1}}, x12 // encoding: [0x2c,0xe2,0x1f,0xd5]
4126 // CHECK: msr {{cntp_cval_el0|CNTP_CVAL_EL0}}, x12 // encoding: [0x4c,0xe2,0x1b,0xd5]
4127 // CHECK: msr {{cnthp_cval_el2|CNTHP_CVAL_EL2}}, x12 // encoding: [0x4c,0xe2,0x1c,0xd5]
4128 // CHECK: msr {{cntps_cval_el1|CNTPS_CVAL_EL1}}, x12 // encoding: [0x4c,0xe2,0x1f,0xd5]
4129 // CHECK: msr {{cntv_tval_el0|CNTV_TVAL_EL0}}, x12 // encoding: [0x0c,0xe3,0x1b,0xd5]
4130 // CHECK: msr {{cntv_ctl_el0|CNTV_CTL_EL0}}, x12 // encoding: [0x2c,0xe3,0x1b,0xd5]
4131 // CHECK: msr {{cntv_cval_el0|CNTV_CVAL_EL0}}, x12 // encoding: [0x4c,0xe3,0x1b,0xd5]
4132 // CHECK: msr {{pmevcntr0_el0|PMEVCNTR0_EL0}}, x12 // encoding: [0x0c,0xe8,0x1b,0xd5]
4133 // CHECK: msr {{pmevcntr1_el0|PMEVCNTR1_EL0}}, x12 // encoding: [0x2c,0xe8,0x1b,0xd5]
4134 // CHECK: msr {{pmevcntr2_el0|PMEVCNTR2_EL0}}, x12 // encoding: [0x4c,0xe8,0x1b,0xd5]
4135 // CHECK: msr {{pmevcntr3_el0|PMEVCNTR3_EL0}}, x12 // encoding: [0x6c,0xe8,0x1b,0xd5]
4136 // CHECK: msr {{pmevcntr4_el0|PMEVCNTR4_EL0}}, x12 // encoding: [0x8c,0xe8,0x1b,0xd5]
4137 // CHECK: msr {{pmevcntr5_el0|PMEVCNTR5_EL0}}, x12 // encoding: [0xac,0xe8,0x1b,0xd5]
4138 // CHECK: msr {{pmevcntr6_el0|PMEVCNTR6_EL0}}, x12 // encoding: [0xcc,0xe8,0x1b,0xd5]
4139 // CHECK: msr {{pmevcntr7_el0|PMEVCNTR7_EL0}}, x12 // encoding: [0xec,0xe8,0x1b,0xd5]
4140 // CHECK: msr {{pmevcntr8_el0|PMEVCNTR8_EL0}}, x12 // encoding: [0x0c,0xe9,0x1b,0xd5]
4141 // CHECK: msr {{pmevcntr9_el0|PMEVCNTR9_EL0}}, x12 // encoding: [0x2c,0xe9,0x1b,0xd5]
4142 // CHECK: msr {{pmevcntr10_el0|PMEVCNTR10_EL0}}, x12 // encoding: [0x4c,0xe9,0x1b,0xd5]
4143 // CHECK: msr {{pmevcntr11_el0|PMEVCNTR11_EL0}}, x12 // encoding: [0x6c,0xe9,0x1b,0xd5]
4144 // CHECK: msr {{pmevcntr12_el0|PMEVCNTR12_EL0}}, x12 // encoding: [0x8c,0xe9,0x1b,0xd5]
4145 // CHECK: msr {{pmevcntr13_el0|PMEVCNTR13_EL0}}, x12 // encoding: [0xac,0xe9,0x1b,0xd5]
4146 // CHECK: msr {{pmevcntr14_el0|PMEVCNTR14_EL0}}, x12 // encoding: [0xcc,0xe9,0x1b,0xd5]
4147 // CHECK: msr {{pmevcntr15_el0|PMEVCNTR15_EL0}}, x12 // encoding: [0xec,0xe9,0x1b,0xd5]
4148 // CHECK: msr {{pmevcntr16_el0|PMEVCNTR16_EL0}}, x12 // encoding: [0x0c,0xea,0x1b,0xd5]
4149 // CHECK: msr {{pmevcntr17_el0|PMEVCNTR17_EL0}}, x12 // encoding: [0x2c,0xea,0x1b,0xd5]
4150 // CHECK: msr {{pmevcntr18_el0|PMEVCNTR18_EL0}}, x12 // encoding: [0x4c,0xea,0x1b,0xd5]
4151 // CHECK: msr {{pmevcntr19_el0|PMEVCNTR19_EL0}}, x12 // encoding: [0x6c,0xea,0x1b,0xd5]
4152 // CHECK: msr {{pmevcntr20_el0|PMEVCNTR20_EL0}}, x12 // encoding: [0x8c,0xea,0x1b,0xd5]
4153 // CHECK: msr {{pmevcntr21_el0|PMEVCNTR21_EL0}}, x12 // encoding: [0xac,0xea,0x1b,0xd5]
4154 // CHECK: msr {{pmevcntr22_el0|PMEVCNTR22_EL0}}, x12 // encoding: [0xcc,0xea,0x1b,0xd5]
4155 // CHECK: msr {{pmevcntr23_el0|PMEVCNTR23_EL0}}, x12 // encoding: [0xec,0xea,0x1b,0xd5]
4156 // CHECK: msr {{pmevcntr24_el0|PMEVCNTR24_EL0}}, x12 // encoding: [0x0c,0xeb,0x1b,0xd5]
4157 // CHECK: msr {{pmevcntr25_el0|PMEVCNTR25_EL0}}, x12 // encoding: [0x2c,0xeb,0x1b,0xd5]
4158 // CHECK: msr {{pmevcntr26_el0|PMEVCNTR26_EL0}}, x12 // encoding: [0x4c,0xeb,0x1b,0xd5]
4159 // CHECK: msr {{pmevcntr27_el0|PMEVCNTR27_EL0}}, x12 // encoding: [0x6c,0xeb,0x1b,0xd5]
4160 // CHECK: msr {{pmevcntr28_el0|PMEVCNTR28_EL0}}, x12 // encoding: [0x8c,0xeb,0x1b,0xd5]
4161 // CHECK: msr {{pmevcntr29_el0|PMEVCNTR29_EL0}}, x12 // encoding: [0xac,0xeb,0x1b,0xd5]
4162 // CHECK: msr {{pmevcntr30_el0|PMEVCNTR30_EL0}}, x12 // encoding: [0xcc,0xeb,0x1b,0xd5]
4163 // CHECK: msr {{pmccfiltr_el0|PMCCFILTR_EL0}}, x12 // encoding: [0xec,0xef,0x1b,0xd5]
4164 // CHECK: msr {{pmevtyper0_el0|PMEVTYPER0_EL0}}, x12 // encoding: [0x0c,0xec,0x1b,0xd5]
4165 // CHECK: msr {{pmevtyper1_el0|PMEVTYPER1_EL0}}, x12 // encoding: [0x2c,0xec,0x1b,0xd5]
4166 // CHECK: msr {{pmevtyper2_el0|PMEVTYPER2_EL0}}, x12 // encoding: [0x4c,0xec,0x1b,0xd5]
4167 // CHECK: msr {{pmevtyper3_el0|PMEVTYPER3_EL0}}, x12 // encoding: [0x6c,0xec,0x1b,0xd5]
4168 // CHECK: msr {{pmevtyper4_el0|PMEVTYPER4_EL0}}, x12 // encoding: [0x8c,0xec,0x1b,0xd5]
4169 // CHECK: msr {{pmevtyper5_el0|PMEVTYPER5_EL0}}, x12 // encoding: [0xac,0xec,0x1b,0xd5]
4170 // CHECK: msr {{pmevtyper6_el0|PMEVTYPER6_EL0}}, x12 // encoding: [0xcc,0xec,0x1b,0xd5]
4171 // CHECK: msr {{pmevtyper7_el0|PMEVTYPER7_EL0}}, x12 // encoding: [0xec,0xec,0x1b,0xd5]
4172 // CHECK: msr {{pmevtyper8_el0|PMEVTYPER8_EL0}}, x12 // encoding: [0x0c,0xed,0x1b,0xd5]
4173 // CHECK: msr {{pmevtyper9_el0|PMEVTYPER9_EL0}}, x12 // encoding: [0x2c,0xed,0x1b,0xd5]
4174 // CHECK: msr {{pmevtyper10_el0|PMEVTYPER10_EL0}}, x12 // encoding: [0x4c,0xed,0x1b,0xd5]
4175 // CHECK: msr {{pmevtyper11_el0|PMEVTYPER11_EL0}}, x12 // encoding: [0x6c,0xed,0x1b,0xd5]
4176 // CHECK: msr {{pmevtyper12_el0|PMEVTYPER12_EL0}}, x12 // encoding: [0x8c,0xed,0x1b,0xd5]
4177 // CHECK: msr {{pmevtyper13_el0|PMEVTYPER13_EL0}}, x12 // encoding: [0xac,0xed,0x1b,0xd5]
4178 // CHECK: msr {{pmevtyper14_el0|PMEVTYPER14_EL0}}, x12 // encoding: [0xcc,0xed,0x1b,0xd5]
4179 // CHECK: msr {{pmevtyper15_el0|PMEVTYPER15_EL0}}, x12 // encoding: [0xec,0xed,0x1b,0xd5]
4180 // CHECK: msr {{pmevtyper16_el0|PMEVTYPER16_EL0}}, x12 // encoding: [0x0c,0xee,0x1b,0xd5]
4181 // CHECK: msr {{pmevtyper17_el0|PMEVTYPER17_EL0}}, x12 // encoding: [0x2c,0xee,0x1b,0xd5]
4182 // CHECK: msr {{pmevtyper18_el0|PMEVTYPER18_EL0}}, x12 // encoding: [0x4c,0xee,0x1b,0xd5]
4183 // CHECK: msr {{pmevtyper19_el0|PMEVTYPER19_EL0}}, x12 // encoding: [0x6c,0xee,0x1b,0xd5]
4184 // CHECK: msr {{pmevtyper20_el0|PMEVTYPER20_EL0}}, x12 // encoding: [0x8c,0xee,0x1b,0xd5]
4185 // CHECK: msr {{pmevtyper21_el0|PMEVTYPER21_EL0}}, x12 // encoding: [0xac,0xee,0x1b,0xd5]
4186 // CHECK: msr {{pmevtyper22_el0|PMEVTYPER22_EL0}}, x12 // encoding: [0xcc,0xee,0x1b,0xd5]
4187 // CHECK: msr {{pmevtyper23_el0|PMEVTYPER23_EL0}}, x12 // encoding: [0xec,0xee,0x1b,0xd5]
4188 // CHECK: msr {{pmevtyper24_el0|PMEVTYPER24_EL0}}, x12 // encoding: [0x0c,0xef,0x1b,0xd5]
4189 // CHECK: msr {{pmevtyper25_el0|PMEVTYPER25_EL0}}, x12 // encoding: [0x2c,0xef,0x1b,0xd5]
4190 // CHECK: msr {{pmevtyper26_el0|PMEVTYPER26_EL0}}, x12 // encoding: [0x4c,0xef,0x1b,0xd5]
4191 // CHECK: msr {{pmevtyper27_el0|PMEVTYPER27_EL0}}, x12 // encoding: [0x6c,0xef,0x1b,0xd5]
4192 // CHECK: msr {{pmevtyper28_el0|PMEVTYPER28_EL0}}, x12 // encoding: [0x8c,0xef,0x1b,0xd5]
4193 // CHECK: msr {{pmevtyper29_el0|PMEVTYPER29_EL0}}, x12 // encoding: [0xac,0xef,0x1b,0xd5]
4194 // CHECK: msr {{pmevtyper30_el0|PMEVTYPER30_EL0}}, x12 // encoding: [0xcc,0xef,0x1b,0xd5]
4196 mrs x9, TEECR32_EL1
4197 mrs x9, OSDTRRX_EL1
4198 mrs x9, MDCCSR_EL0
4199 mrs x9, MDCCINT_EL1
4200 mrs x9, MDSCR_EL1
4201 mrs x9, OSDTRTX_EL1
4202 mrs x9, DBGDTR_EL0
4203 mrs x9, DBGDTRRX_EL0
4204 mrs x9, OSECCR_EL1
4205 mrs x9, DBGVCR32_EL2
4206 mrs x9, DBGBVR0_EL1
4207 mrs x9, DBGBVR1_EL1
4208 mrs x9, DBGBVR2_EL1
4209 mrs x9, DBGBVR3_EL1
4210 mrs x9, DBGBVR4_EL1
4211 mrs x9, DBGBVR5_EL1
4212 mrs x9, DBGBVR6_EL1
4213 mrs x9, DBGBVR7_EL1
4214 mrs x9, DBGBVR8_EL1
4215 mrs x9, DBGBVR9_EL1
4216 mrs x9, DBGBVR10_EL1
4217 mrs x9, DBGBVR11_EL1
4218 mrs x9, DBGBVR12_EL1
4219 mrs x9, DBGBVR13_EL1
4220 mrs x9, DBGBVR14_EL1
4221 mrs x9, DBGBVR15_EL1
4222 mrs x9, DBGBCR0_EL1
4223 mrs x9, DBGBCR1_EL1
4224 mrs x9, DBGBCR2_EL1
4225 mrs x9, DBGBCR3_EL1
4226 mrs x9, DBGBCR4_EL1
4227 mrs x9, DBGBCR5_EL1
4228 mrs x9, DBGBCR6_EL1
4229 mrs x9, DBGBCR7_EL1
4230 mrs x9, DBGBCR8_EL1
4231 mrs x9, DBGBCR9_EL1
4232 mrs x9, DBGBCR10_EL1
4233 mrs x9, DBGBCR11_EL1
4234 mrs x9, DBGBCR12_EL1
4235 mrs x9, DBGBCR13_EL1
4236 mrs x9, DBGBCR14_EL1
4237 mrs x9, DBGBCR15_EL1
4238 mrs x9, DBGWVR0_EL1
4239 mrs x9, DBGWVR1_EL1
4240 mrs x9, DBGWVR2_EL1
4241 mrs x9, DBGWVR3_EL1
4242 mrs x9, DBGWVR4_EL1
4243 mrs x9, DBGWVR5_EL1
4244 mrs x9, DBGWVR6_EL1
4245 mrs x9, DBGWVR7_EL1
4246 mrs x9, DBGWVR8_EL1
4247 mrs x9, DBGWVR9_EL1
4248 mrs x9, DBGWVR10_EL1
4249 mrs x9, DBGWVR11_EL1
4250 mrs x9, DBGWVR12_EL1
4251 mrs x9, DBGWVR13_EL1
4252 mrs x9, DBGWVR14_EL1
4253 mrs x9, DBGWVR15_EL1
4254 mrs x9, DBGWCR0_EL1
4255 mrs x9, DBGWCR1_EL1
4256 mrs x9, DBGWCR2_EL1
4257 mrs x9, DBGWCR3_EL1
4258 mrs x9, DBGWCR4_EL1
4259 mrs x9, DBGWCR5_EL1
4260 mrs x9, DBGWCR6_EL1
4261 mrs x9, DBGWCR7_EL1
4262 mrs x9, DBGWCR8_EL1
4263 mrs x9, DBGWCR9_EL1
4264 mrs x9, DBGWCR10_EL1
4265 mrs x9, DBGWCR11_EL1
4266 mrs x9, DBGWCR12_EL1
4267 mrs x9, DBGWCR13_EL1
4268 mrs x9, DBGWCR14_EL1
4269 mrs x9, DBGWCR15_EL1
4270 mrs x9, MDRAR_EL1
4271 mrs x9, TEEHBR32_EL1
4272 mrs x9, OSLSR_EL1
4273 mrs x9, OSDLR_EL1
4274 mrs x9, DBGPRCR_EL1
4275 mrs x9, DBGCLAIMSET_EL1
4276 mrs x9, DBGCLAIMCLR_EL1
4277 mrs x9, DBGAUTHSTATUS_EL1
4278 mrs x9, MIDR_EL1
4279 mrs x9, CCSIDR_EL1
4280 mrs x9, CSSELR_EL1
4281 mrs x9, VPIDR_EL2
4282 mrs x9, CLIDR_EL1
4283 mrs x9, CTR_EL0
4284 mrs x9, MPIDR_EL1
4285 mrs x9, VMPIDR_EL2
4286 mrs x9, REVIDR_EL1
4287 mrs x9, AIDR_EL1
4288 mrs x9, DCZID_EL0
4289 mrs x9, ID_PFR0_EL1
4290 mrs x9, ID_PFR1_EL1
4291 mrs x9, ID_DFR0_EL1
4292 mrs x9, ID_AFR0_EL1
4293 mrs x9, ID_MMFR0_EL1
4294 mrs x9, ID_MMFR1_EL1
4295 mrs x9, ID_MMFR2_EL1
4296 mrs x9, ID_MMFR3_EL1
4297 mrs x9, ID_MMFR4_EL1
4298 mrs x9, ID_ISAR0_EL1
4299 mrs x9, ID_ISAR1_EL1
4300 mrs x9, ID_ISAR2_EL1
4301 mrs x9, ID_ISAR3_EL1
4302 mrs x9, ID_ISAR4_EL1
4303 mrs x9, ID_ISAR5_EL1
4304 mrs x9, MVFR0_EL1
4305 mrs x9, MVFR1_EL1
4306 mrs x9, MVFR2_EL1
4307 mrs x9, ID_AA64PFR0_EL1
4308 mrs x9, ID_AA64PFR1_EL1
4309 mrs x9, ID_AA64DFR0_EL1
4310 mrs x9, ID_AA64DFR1_EL1
4311 mrs x9, ID_AA64AFR0_EL1
4312 mrs x9, ID_AA64AFR1_EL1
4313 mrs x9, ID_AA64ISAR0_EL1
4314 mrs x9, ID_AA64ISAR1_EL1
4315 mrs x9, ID_AA64MMFR0_EL1
4316 mrs x9, ID_AA64MMFR1_EL1
4317 mrs x9, SCTLR_EL1
4318 mrs x9, SCTLR_EL2
4319 mrs x9, SCTLR_EL3
4320 mrs x9, ACTLR_EL1
4321 mrs x9, ACTLR_EL2
4322 mrs x9, ACTLR_EL3
4323 mrs x9, CPACR_EL1
4324 mrs x9, HCR_EL2
4325 mrs x9, SCR_EL3
4326 mrs x9, MDCR_EL2
4327 mrs x9, SDER32_EL3
4328 mrs x9, CPTR_EL2
4329 mrs x9, CPTR_EL3
4330 mrs x9, HSTR_EL2
4331 mrs x9, HACR_EL2
4332 mrs x9, MDCR_EL3
4333 mrs x9, TTBR0_EL1
4334 mrs x9, TTBR0_EL2
4335 mrs x9, TTBR0_EL3
4336 mrs x9, TTBR1_EL1
4337 mrs x9, TCR_EL1
4338 mrs x9, TCR_EL2
4339 mrs x9, TCR_EL3
4340 mrs x9, VTTBR_EL2
4341 mrs x9, VTCR_EL2
4342 mrs x9, DACR32_EL2
4343 mrs x9, SPSR_EL1
4344 mrs x9, SPSR_EL2
4345 mrs x9, SPSR_EL3
4346 mrs x9, ELR_EL1
4347 mrs x9, ELR_EL2
4348 mrs x9, ELR_EL3
4349 mrs x9, SP_EL0
4350 mrs x9, SP_EL1
4351 mrs x9, SP_EL2
4352 mrs x9, SPSel
4353 mrs x9, NZCV
4354 mrs x9, DAIF
4355 mrs x9, CurrentEL
4356 mrs x9, SPSR_irq
4357 mrs x9, SPSR_abt
4358 mrs x9, SPSR_und
4359 mrs x9, SPSR_fiq
4360 mrs x9, FPCR
4361 mrs x9, FPSR
4362 mrs x9, DSPSR_EL0
4363 mrs x9, DLR_EL0
4364 mrs x9, IFSR32_EL2
4365 mrs x9, AFSR0_EL1
4366 mrs x9, AFSR0_EL2
4367 mrs x9, AFSR0_EL3
4368 mrs x9, AFSR1_EL1
4369 mrs x9, AFSR1_EL2
4370 mrs x9, AFSR1_EL3
4371 mrs x9, ESR_EL1
4372 mrs x9, ESR_EL2
4373 mrs x9, ESR_EL3
4374 mrs x9, FPEXC32_EL2
4375 mrs x9, FAR_EL1
4376 mrs x9, FAR_EL2
4377 mrs x9, FAR_EL3
4378 mrs x9, HPFAR_EL2
4379 mrs x9, PAR_EL1
4380 mrs x9, PMCR_EL0
4381 mrs x9, PMCNTENSET_EL0
4382 mrs x9, PMCNTENCLR_EL0
4383 mrs x9, PMOVSCLR_EL0
4384 mrs x9, PMSELR_EL0
4385 mrs x9, PMCEID0_EL0
4386 mrs x9, PMCEID1_EL0
4387 mrs x9, PMCCNTR_EL0
4388 mrs x9, PMXEVTYPER_EL0
4389 mrs x9, PMXEVCNTR_EL0
4390 mrs x9, PMUSERENR_EL0
4391 mrs x9, PMINTENSET_EL1
4392 mrs x9, PMINTENCLR_EL1
4393 mrs x9, PMOVSSET_EL0
4394 mrs x9, MAIR_EL1
4395 mrs x9, MAIR_EL2
4396 mrs x9, MAIR_EL3
4397 mrs x9, AMAIR_EL1
4398 mrs x9, AMAIR_EL2
4399 mrs x9, AMAIR_EL3
4400 mrs x9, VBAR_EL1
4401 mrs x9, VBAR_EL2
4402 mrs x9, VBAR_EL3
4403 mrs x9, RVBAR_EL1
4404 mrs x9, RVBAR_EL2
4405 mrs x9, RVBAR_EL3
4406 mrs x9, RMR_EL1
4407 mrs x9, RMR_EL2
4408 mrs x9, RMR_EL3
4409 mrs x9, ISR_EL1
4410 mrs x9, CONTEXTIDR_EL1
4411 mrs x9, TPIDR_EL0
4412 mrs x9, TPIDR_EL2
4413 mrs x9, TPIDR_EL3
4414 mrs x9, TPIDRRO_EL0
4415 mrs x9, TPIDR_EL1
4416 mrs x9, CNTFRQ_EL0
4417 mrs x9, CNTPCT_EL0
4418 mrs x9, CNTVCT_EL0
4419 mrs x9, CNTVOFF_EL2
4420 mrs x9, CNTKCTL_EL1
4421 mrs x9, CNTHCTL_EL2
4422 mrs x9, CNTP_TVAL_EL0
4423 mrs x9, CNTHP_TVAL_EL2
4424 mrs x9, CNTPS_TVAL_EL1
4425 mrs x9, CNTP_CTL_EL0
4426 mrs x9, CNTHP_CTL_EL2
4427 mrs x9, CNTPS_CTL_EL1
4428 mrs x9, CNTP_CVAL_EL0
4429 mrs x9, CNTHP_CVAL_EL2
4430 mrs x9, CNTPS_CVAL_EL1
4431 mrs x9, CNTV_TVAL_EL0
4432 mrs x9, CNTV_CTL_EL0
4433 mrs x9, CNTV_CVAL_EL0
4434 mrs x9, PMEVCNTR0_EL0
4435 mrs x9, PMEVCNTR1_EL0
4436 mrs x9, PMEVCNTR2_EL0
4437 mrs x9, PMEVCNTR3_EL0
4438 mrs x9, PMEVCNTR4_EL0
4439 mrs x9, PMEVCNTR5_EL0
4440 mrs x9, PMEVCNTR6_EL0
4441 mrs x9, PMEVCNTR7_EL0
4442 mrs x9, PMEVCNTR8_EL0
4443 mrs x9, PMEVCNTR9_EL0
4444 mrs x9, PMEVCNTR10_EL0
4445 mrs x9, PMEVCNTR11_EL0
4446 mrs x9, PMEVCNTR12_EL0
4447 mrs x9, PMEVCNTR13_EL0
4448 mrs x9, PMEVCNTR14_EL0
4449 mrs x9, PMEVCNTR15_EL0
4450 mrs x9, PMEVCNTR16_EL0
4451 mrs x9, PMEVCNTR17_EL0
4452 mrs x9, PMEVCNTR18_EL0
4453 mrs x9, PMEVCNTR19_EL0
4454 mrs x9, PMEVCNTR20_EL0
4455 mrs x9, PMEVCNTR21_EL0
4456 mrs x9, PMEVCNTR22_EL0
4457 mrs x9, PMEVCNTR23_EL0
4458 mrs x9, PMEVCNTR24_EL0
4459 mrs x9, PMEVCNTR25_EL0
4460 mrs x9, PMEVCNTR26_EL0
4461 mrs x9, PMEVCNTR27_EL0
4462 mrs x9, PMEVCNTR28_EL0
4463 mrs x9, PMEVCNTR29_EL0
4464 mrs x9, PMEVCNTR30_EL0
4465 mrs x9, PMCCFILTR_EL0
4466 mrs x9, PMEVTYPER0_EL0
4467 mrs x9, PMEVTYPER1_EL0
4468 mrs x9, PMEVTYPER2_EL0
4469 mrs x9, PMEVTYPER3_EL0
4470 mrs x9, PMEVTYPER4_EL0
4471 mrs x9, PMEVTYPER5_EL0
4472 mrs x9, PMEVTYPER6_EL0
4473 mrs x9, PMEVTYPER7_EL0
4474 mrs x9, PMEVTYPER8_EL0
4475 mrs x9, PMEVTYPER9_EL0
4476 mrs x9, PMEVTYPER10_EL0
4477 mrs x9, PMEVTYPER11_EL0
4478 mrs x9, PMEVTYPER12_EL0
4479 mrs x9, PMEVTYPER13_EL0
4480 mrs x9, PMEVTYPER14_EL0
4481 mrs x9, PMEVTYPER15_EL0
4482 mrs x9, PMEVTYPER16_EL0
4483 mrs x9, PMEVTYPER17_EL0
4484 mrs x9, PMEVTYPER18_EL0
4485 mrs x9, PMEVTYPER19_EL0
4486 mrs x9, PMEVTYPER20_EL0
4487 mrs x9, PMEVTYPER21_EL0
4488 mrs x9, PMEVTYPER22_EL0
4489 mrs x9, PMEVTYPER23_EL0
4490 mrs x9, PMEVTYPER24_EL0
4491 mrs x9, PMEVTYPER25_EL0
4492 mrs x9, PMEVTYPER26_EL0
4493 mrs x9, PMEVTYPER27_EL0
4494 mrs x9, PMEVTYPER28_EL0
4495 mrs x9, PMEVTYPER29_EL0
4496 mrs x9, PMEVTYPER30_EL0
4497 // CHECK: mrs x9, {{teecr32_el1|TEECR32_EL1}} // encoding: [0x09,0x00,0x32,0xd5]
4498 // CHECK: mrs x9, {{osdtrrx_el1|OSDTRRX_EL1}} // encoding: [0x49,0x00,0x30,0xd5]
4499 // CHECK: mrs x9, {{mdccsr_el0|MDCCSR_EL0}} // encoding: [0x09,0x01,0x33,0xd5]
4500 // CHECK: mrs x9, {{mdccint_el1|MDCCINT_EL1}} // encoding: [0x09,0x02,0x30,0xd5]
4501 // CHECK: mrs x9, {{mdscr_el1|MDSCR_EL1}} // encoding: [0x49,0x02,0x30,0xd5]
4502 // CHECK: mrs x9, {{osdtrtx_el1|OSDTRTX_EL1}} // encoding: [0x49,0x03,0x30,0xd5]
4503 // CHECK: mrs x9, {{dbgdtr_el0|DBGDTR_EL0}} // encoding: [0x09,0x04,0x33,0xd5]
4504 // CHECK: mrs x9, {{dbgdtrrx_el0|DBGDTRRX_EL0}} // encoding: [0x09,0x05,0x33,0xd5]
4505 // CHECK: mrs x9, {{oseccr_el1|OSECCR_EL1}} // encoding: [0x49,0x06,0x30,0xd5]
4506 // CHECK: mrs x9, {{dbgvcr32_el2|DBGVCR32_EL2}} // encoding: [0x09,0x07,0x34,0xd5]
4507 // CHECK: mrs x9, {{dbgbvr0_el1|DBGBVR0_EL1}} // encoding: [0x89,0x00,0x30,0xd5]
4508 // CHECK: mrs x9, {{dbgbvr1_el1|DBGBVR1_EL1}} // encoding: [0x89,0x01,0x30,0xd5]
4509 // CHECK: mrs x9, {{dbgbvr2_el1|DBGBVR2_EL1}} // encoding: [0x89,0x02,0x30,0xd5]
4510 // CHECK: mrs x9, {{dbgbvr3_el1|DBGBVR3_EL1}} // encoding: [0x89,0x03,0x30,0xd5]
4511 // CHECK: mrs x9, {{dbgbvr4_el1|DBGBVR4_EL1}} // encoding: [0x89,0x04,0x30,0xd5]
4512 // CHECK: mrs x9, {{dbgbvr5_el1|DBGBVR5_EL1}} // encoding: [0x89,0x05,0x30,0xd5]
4513 // CHECK: mrs x9, {{dbgbvr6_el1|DBGBVR6_EL1}} // encoding: [0x89,0x06,0x30,0xd5]
4514 // CHECK: mrs x9, {{dbgbvr7_el1|DBGBVR7_EL1}} // encoding: [0x89,0x07,0x30,0xd5]
4515 // CHECK: mrs x9, {{dbgbvr8_el1|DBGBVR8_EL1}} // encoding: [0x89,0x08,0x30,0xd5]
4516 // CHECK: mrs x9, {{dbgbvr9_el1|DBGBVR9_EL1}} // encoding: [0x89,0x09,0x30,0xd5]
4517 // CHECK: mrs x9, {{dbgbvr10_el1|DBGBVR10_EL1}} // encoding: [0x89,0x0a,0x30,0xd5]
4518 // CHECK: mrs x9, {{dbgbvr11_el1|DBGBVR11_EL1}} // encoding: [0x89,0x0b,0x30,0xd5]
4519 // CHECK: mrs x9, {{dbgbvr12_el1|DBGBVR12_EL1}} // encoding: [0x89,0x0c,0x30,0xd5]
4520 // CHECK: mrs x9, {{dbgbvr13_el1|DBGBVR13_EL1}} // encoding: [0x89,0x0d,0x30,0xd5]
4521 // CHECK: mrs x9, {{dbgbvr14_el1|DBGBVR14_EL1}} // encoding: [0x89,0x0e,0x30,0xd5]
4522 // CHECK: mrs x9, {{dbgbvr15_el1|DBGBVR15_EL1}} // encoding: [0x89,0x0f,0x30,0xd5]
4523 // CHECK: mrs x9, {{dbgbcr0_el1|DBGBCR0_EL1}} // encoding: [0xa9,0x00,0x30,0xd5]
4524 // CHECK: mrs x9, {{dbgbcr1_el1|DBGBCR1_EL1}} // encoding: [0xa9,0x01,0x30,0xd5]
4525 // CHECK: mrs x9, {{dbgbcr2_el1|DBGBCR2_EL1}} // encoding: [0xa9,0x02,0x30,0xd5]
4526 // CHECK: mrs x9, {{dbgbcr3_el1|DBGBCR3_EL1}} // encoding: [0xa9,0x03,0x30,0xd5]
4527 // CHECK: mrs x9, {{dbgbcr4_el1|DBGBCR4_EL1}} // encoding: [0xa9,0x04,0x30,0xd5]
4528 // CHECK: mrs x9, {{dbgbcr5_el1|DBGBCR5_EL1}} // encoding: [0xa9,0x05,0x30,0xd5]
4529 // CHECK: mrs x9, {{dbgbcr6_el1|DBGBCR6_EL1}} // encoding: [0xa9,0x06,0x30,0xd5]
4530 // CHECK: mrs x9, {{dbgbcr7_el1|DBGBCR7_EL1}} // encoding: [0xa9,0x07,0x30,0xd5]
4531 // CHECK: mrs x9, {{dbgbcr8_el1|DBGBCR8_EL1}} // encoding: [0xa9,0x08,0x30,0xd5]
4532 // CHECK: mrs x9, {{dbgbcr9_el1|DBGBCR9_EL1}} // encoding: [0xa9,0x09,0x30,0xd5]
4533 // CHECK: mrs x9, {{dbgbcr10_el1|DBGBCR10_EL1}} // encoding: [0xa9,0x0a,0x30,0xd5]
4534 // CHECK: mrs x9, {{dbgbcr11_el1|DBGBCR11_EL1}} // encoding: [0xa9,0x0b,0x30,0xd5]
4535 // CHECK: mrs x9, {{dbgbcr12_el1|DBGBCR12_EL1}} // encoding: [0xa9,0x0c,0x30,0xd5]
4536 // CHECK: mrs x9, {{dbgbcr13_el1|DBGBCR13_EL1}} // encoding: [0xa9,0x0d,0x30,0xd5]
4537 // CHECK: mrs x9, {{dbgbcr14_el1|DBGBCR14_EL1}} // encoding: [0xa9,0x0e,0x30,0xd5]
4538 // CHECK: mrs x9, {{dbgbcr15_el1|DBGBCR15_EL1}} // encoding: [0xa9,0x0f,0x30,0xd5]
4539 // CHECK: mrs x9, {{dbgwvr0_el1|DBGWVR0_EL1}} // encoding: [0xc9,0x00,0x30,0xd5]
4540 // CHECK: mrs x9, {{dbgwvr1_el1|DBGWVR1_EL1}} // encoding: [0xc9,0x01,0x30,0xd5]
4541 // CHECK: mrs x9, {{dbgwvr2_el1|DBGWVR2_EL1}} // encoding: [0xc9,0x02,0x30,0xd5]
4542 // CHECK: mrs x9, {{dbgwvr3_el1|DBGWVR3_EL1}} // encoding: [0xc9,0x03,0x30,0xd5]
4543 // CHECK: mrs x9, {{dbgwvr4_el1|DBGWVR4_EL1}} // encoding: [0xc9,0x04,0x30,0xd5]
4544 // CHECK: mrs x9, {{dbgwvr5_el1|DBGWVR5_EL1}} // encoding: [0xc9,0x05,0x30,0xd5]
4545 // CHECK: mrs x9, {{dbgwvr6_el1|DBGWVR6_EL1}} // encoding: [0xc9,0x06,0x30,0xd5]
4546 // CHECK: mrs x9, {{dbgwvr7_el1|DBGWVR7_EL1}} // encoding: [0xc9,0x07,0x30,0xd5]
4547 // CHECK: mrs x9, {{dbgwvr8_el1|DBGWVR8_EL1}} // encoding: [0xc9,0x08,0x30,0xd5]
4548 // CHECK: mrs x9, {{dbgwvr9_el1|DBGWVR9_EL1}} // encoding: [0xc9,0x09,0x30,0xd5]
4549 // CHECK: mrs x9, {{dbgwvr10_el1|DBGWVR10_EL1}} // encoding: [0xc9,0x0a,0x30,0xd5]
4550 // CHECK: mrs x9, {{dbgwvr11_el1|DBGWVR11_EL1}} // encoding: [0xc9,0x0b,0x30,0xd5]
4551 // CHECK: mrs x9, {{dbgwvr12_el1|DBGWVR12_EL1}} // encoding: [0xc9,0x0c,0x30,0xd5]
4552 // CHECK: mrs x9, {{dbgwvr13_el1|DBGWVR13_EL1}} // encoding: [0xc9,0x0d,0x30,0xd5]
4553 // CHECK: mrs x9, {{dbgwvr14_el1|DBGWVR14_EL1}} // encoding: [0xc9,0x0e,0x30,0xd5]
4554 // CHECK: mrs x9, {{dbgwvr15_el1|DBGWVR15_EL1}} // encoding: [0xc9,0x0f,0x30,0xd5]
4555 // CHECK: mrs x9, {{dbgwcr0_el1|DBGWCR0_EL1}} // encoding: [0xe9,0x00,0x30,0xd5]
4556 // CHECK: mrs x9, {{dbgwcr1_el1|DBGWCR1_EL1}} // encoding: [0xe9,0x01,0x30,0xd5]
4557 // CHECK: mrs x9, {{dbgwcr2_el1|DBGWCR2_EL1}} // encoding: [0xe9,0x02,0x30,0xd5]
4558 // CHECK: mrs x9, {{dbgwcr3_el1|DBGWCR3_EL1}} // encoding: [0xe9,0x03,0x30,0xd5]
4559 // CHECK: mrs x9, {{dbgwcr4_el1|DBGWCR4_EL1}} // encoding: [0xe9,0x04,0x30,0xd5]
4560 // CHECK: mrs x9, {{dbgwcr5_el1|DBGWCR5_EL1}} // encoding: [0xe9,0x05,0x30,0xd5]
4561 // CHECK: mrs x9, {{dbgwcr6_el1|DBGWCR6_EL1}} // encoding: [0xe9,0x06,0x30,0xd5]
4562 // CHECK: mrs x9, {{dbgwcr7_el1|DBGWCR7_EL1}} // encoding: [0xe9,0x07,0x30,0xd5]
4563 // CHECK: mrs x9, {{dbgwcr8_el1|DBGWCR8_EL1}} // encoding: [0xe9,0x08,0x30,0xd5]
4564 // CHECK: mrs x9, {{dbgwcr9_el1|DBGWCR9_EL1}} // encoding: [0xe9,0x09,0x30,0xd5]
4565 // CHECK: mrs x9, {{dbgwcr10_el1|DBGWCR10_EL1}} // encoding: [0xe9,0x0a,0x30,0xd5]
4566 // CHECK: mrs x9, {{dbgwcr11_el1|DBGWCR11_EL1}} // encoding: [0xe9,0x0b,0x30,0xd5]
4567 // CHECK: mrs x9, {{dbgwcr12_el1|DBGWCR12_EL1}} // encoding: [0xe9,0x0c,0x30,0xd5]
4568 // CHECK: mrs x9, {{dbgwcr13_el1|DBGWCR13_EL1}} // encoding: [0xe9,0x0d,0x30,0xd5]
4569 // CHECK: mrs x9, {{dbgwcr14_el1|DBGWCR14_EL1}} // encoding: [0xe9,0x0e,0x30,0xd5]
4570 // CHECK: mrs x9, {{dbgwcr15_el1|DBGWCR15_EL1}} // encoding: [0xe9,0x0f,0x30,0xd5]
4571 // CHECK: mrs x9, {{mdrar_el1|MDRAR_EL1}} // encoding: [0x09,0x10,0x30,0xd5]
4572 // CHECK: mrs x9, {{teehbr32_el1|TEEHBR32_EL1}} // encoding: [0x09,0x10,0x32,0xd5]
4573 // CHECK: mrs x9, {{oslsr_el1|OSLSR_EL1}} // encoding: [0x89,0x11,0x30,0xd5]
4574 // CHECK: mrs x9, {{osdlr_el1|OSDLR_EL1}} // encoding: [0x89,0x13,0x30,0xd5]
4575 // CHECK: mrs x9, {{dbgprcr_el1|DBGPRCR_EL1}} // encoding: [0x89,0x14,0x30,0xd5]
4576 // CHECK: mrs x9, {{dbgclaimset_el1|DBGCLAIMSET_EL1}} // encoding: [0xc9,0x78,0x30,0xd5]
4577 // CHECK: mrs x9, {{dbgclaimclr_el1|DBGCLAIMCLR_EL1}} // encoding: [0xc9,0x79,0x30,0xd5]
4578 // CHECK: mrs x9, {{dbgauthstatus_el1|DBGAUTHSTATUS_EL1}} // encoding: [0xc9,0x7e,0x30,0xd5]
4579 // CHECK: mrs x9, {{midr_el1|MIDR_EL1}} // encoding: [0x09,0x00,0x38,0xd5]
4580 // CHECK: mrs x9, {{ccsidr_el1|CCSIDR_EL1}} // encoding: [0x09,0x00,0x39,0xd5]
4581 // CHECK: mrs x9, {{csselr_el1|CSSELR_EL1}} // encoding: [0x09,0x00,0x3a,0xd5]
4582 // CHECK: mrs x9, {{vpidr_el2|VPIDR_EL2}} // encoding: [0x09,0x00,0x3c,0xd5]
4583 // CHECK: mrs x9, {{clidr_el1|CLIDR_EL1}} // encoding: [0x29,0x00,0x39,0xd5]
4584 // CHECK: mrs x9, {{ctr_el0|CTR_EL0}} // encoding: [0x29,0x00,0x3b,0xd5]
4585 // CHECK: mrs x9, {{mpidr_el1|MPIDR_EL1}} // encoding: [0xa9,0x00,0x38,0xd5]
4586 // CHECK: mrs x9, {{vmpidr_el2|VMPIDR_EL2}} // encoding: [0xa9,0x00,0x3c,0xd5]
4587 // CHECK: mrs x9, {{revidr_el1|REVIDR_EL1}} // encoding: [0xc9,0x00,0x38,0xd5]
4588 // CHECK: mrs x9, {{aidr_el1|AIDR_EL1}} // encoding: [0xe9,0x00,0x39,0xd5]
4589 // CHECK: mrs x9, {{dczid_el0|DCZID_EL0}} // encoding: [0xe9,0x00,0x3b,0xd5]
4590 // CHECK: mrs x9, {{id_pfr0_el1|ID_PFR0_EL1}} // encoding: [0x09,0x01,0x38,0xd5]
4591 // CHECK: mrs x9, {{id_pfr1_el1|ID_PFR1_EL1}} // encoding: [0x29,0x01,0x38,0xd5]
4592 // CHECK: mrs x9, {{id_dfr0_el1|ID_DFR0_EL1}} // encoding: [0x49,0x01,0x38,0xd5]
4593 // CHECK: mrs x9, {{id_afr0_el1|ID_AFR0_EL1}} // encoding: [0x69,0x01,0x38,0xd5]
4594 // CHECK: mrs x9, {{id_mmfr0_el1|ID_MMFR0_EL1}} // encoding: [0x89,0x01,0x38,0xd5]
4595 // CHECK: mrs x9, {{id_mmfr1_el1|ID_MMFR1_EL1}} // encoding: [0xa9,0x01,0x38,0xd5]
4596 // CHECK: mrs x9, {{id_mmfr2_el1|ID_MMFR2_EL1}} // encoding: [0xc9,0x01,0x38,0xd5]
4597 // CHECK: mrs x9, {{id_mmfr3_el1|ID_MMFR3_EL1}} // encoding: [0xe9,0x01,0x38,0xd5]
4598 // CHECK: mrs x9, {{id_mmfr4_el1|ID_MMFR4_EL1}} // encoding: [0xc9,0x02,0x38,0xd5]
4599 // CHECK: mrs x9, {{id_isar0_el1|ID_ISAR0_EL1}} // encoding: [0x09,0x02,0x38,0xd5]
4600 // CHECK: mrs x9, {{id_isar1_el1|ID_ISAR1_EL1}} // encoding: [0x29,0x02,0x38,0xd5]
4601 // CHECK: mrs x9, {{id_isar2_el1|ID_ISAR2_EL1}} // encoding: [0x49,0x02,0x38,0xd5]
4602 // CHECK: mrs x9, {{id_isar3_el1|ID_ISAR3_EL1}} // encoding: [0x69,0x02,0x38,0xd5]
4603 // CHECK: mrs x9, {{id_isar4_el1|ID_ISAR4_EL1}} // encoding: [0x89,0x02,0x38,0xd5]
4604 // CHECK: mrs x9, {{id_isar5_el1|ID_ISAR5_EL1}} // encoding: [0xa9,0x02,0x38,0xd5]
4605 // CHECK: mrs x9, {{mvfr0_el1|MVFR0_EL1}} // encoding: [0x09,0x03,0x38,0xd5]
4606 // CHECK: mrs x9, {{mvfr1_el1|MVFR1_EL1}} // encoding: [0x29,0x03,0x38,0xd5]
4607 // CHECK: mrs x9, {{mvfr2_el1|MVFR2_EL1}} // encoding: [0x49,0x03,0x38,0xd5]
4608 // CHECK: mrs x9, {{id_aa64pfr0_el1|ID_AA64PFR0_EL1}} // encoding: [0x09,0x04,0x38,0xd5]
4609 // CHECK: mrs x9, {{id_aa64pfr1_el1|ID_AA64PFR1_EL1}} // encoding: [0x29,0x04,0x38,0xd5]
4610 // CHECK: mrs x9, {{id_aa64dfr0_el1|ID_AA64DFR0_EL1}} // encoding: [0x09,0x05,0x38,0xd5]
4611 // CHECK: mrs x9, {{id_aa64dfr1_el1|ID_AA64DFR1_EL1}} // encoding: [0x29,0x05,0x38,0xd5]
4612 // CHECK: mrs x9, {{id_aa64afr0_el1|ID_AA64AFR0_EL1}} // encoding: [0x89,0x05,0x38,0xd5]
4613 // CHECK: mrs x9, {{id_aa64afr1_el1|ID_AA64AFR1_EL1}} // encoding: [0xa9,0x05,0x38,0xd5]
4614 // CHECK: mrs x9, {{id_aa64isar0_el1|ID_AA64ISAR0_EL1}} // encoding: [0x09,0x06,0x38,0xd5]
4615 // CHECK: mrs x9, {{id_aa64isar1_el1|ID_AA64ISAR1_EL1}} // encoding: [0x29,0x06,0x38,0xd5]
4616 // CHECK: mrs x9, {{id_aa64mmfr0_el1|ID_AA64MMFR0_EL1}} // encoding: [0x09,0x07,0x38,0xd5]
4617 // CHECK: mrs x9, {{id_aa64mmfr1_el1|ID_AA64MMFR1_EL1}} // encoding: [0x29,0x07,0x38,0xd5]
4618 // CHECK: mrs x9, {{sctlr_el1|SCTLR_EL1}} // encoding: [0x09,0x10,0x38,0xd5]
4619 // CHECK: mrs x9, {{sctlr_el2|SCTLR_EL2}} // encoding: [0x09,0x10,0x3c,0xd5]
4620 // CHECK: mrs x9, {{sctlr_el3|SCTLR_EL3}} // encoding: [0x09,0x10,0x3e,0xd5]
4621 // CHECK: mrs x9, {{actlr_el1|ACTLR_EL1}} // encoding: [0x29,0x10,0x38,0xd5]
4622 // CHECK: mrs x9, {{actlr_el2|ACTLR_EL2}} // encoding: [0x29,0x10,0x3c,0xd5]
4623 // CHECK: mrs x9, {{actlr_el3|ACTLR_EL3}} // encoding: [0x29,0x10,0x3e,0xd5]
4624 // CHECK: mrs x9, {{cpacr_el1|CPACR_EL1}} // encoding: [0x49,0x10,0x38,0xd5]
4625 // CHECK: mrs x9, {{hcr_el2|HCR_EL2}} // encoding: [0x09,0x11,0x3c,0xd5]
4626 // CHECK: mrs x9, {{scr_el3|SCR_EL3}} // encoding: [0x09,0x11,0x3e,0xd5]
4627 // CHECK: mrs x9, {{mdcr_el2|MDCR_EL2}} // encoding: [0x29,0x11,0x3c,0xd5]
4628 // CHECK: mrs x9, {{sder32_el3|SDER32_EL3}} // encoding: [0x29,0x11,0x3e,0xd5]
4629 // CHECK: mrs x9, {{cptr_el2|CPTR_EL2}} // encoding: [0x49,0x11,0x3c,0xd5]
4630 // CHECK: mrs x9, {{cptr_el3|CPTR_EL3}} // encoding: [0x49,0x11,0x3e,0xd5]
4631 // CHECK: mrs x9, {{hstr_el2|HSTR_EL2}} // encoding: [0x69,0x11,0x3c,0xd5]
4632 // CHECK: mrs x9, {{hacr_el2|HACR_EL2}} // encoding: [0xe9,0x11,0x3c,0xd5]
4633 // CHECK: mrs x9, {{mdcr_el3|MDCR_EL3}} // encoding: [0x29,0x13,0x3e,0xd5]
4634 // CHECK: mrs x9, {{ttbr0_el1|TTBR0_EL1}} // encoding: [0x09,0x20,0x38,0xd5]
4635 // CHECK: mrs x9, {{ttbr0_el2|TTBR0_EL2}} // encoding: [0x09,0x20,0x3c,0xd5]
4636 // CHECK: mrs x9, {{ttbr0_el3|TTBR0_EL3}} // encoding: [0x09,0x20,0x3e,0xd5]
4637 // CHECK: mrs x9, {{ttbr1_el1|TTBR1_EL1}} // encoding: [0x29,0x20,0x38,0xd5]
4638 // CHECK: mrs x9, {{tcr_el1|TCR_EL1}} // encoding: [0x49,0x20,0x38,0xd5]
4639 // CHECK: mrs x9, {{tcr_el2|TCR_EL2}} // encoding: [0x49,0x20,0x3c,0xd5]
4640 // CHECK: mrs x9, {{tcr_el3|TCR_EL3}} // encoding: [0x49,0x20,0x3e,0xd5]
4641 // CHECK: mrs x9, {{vttbr_el2|VTTBR_EL2}} // encoding: [0x09,0x21,0x3c,0xd5]
4642 // CHECK: mrs x9, {{vtcr_el2|VTCR_EL2}} // encoding: [0x49,0x21,0x3c,0xd5]
4643 // CHECK: mrs x9, {{dacr32_el2|DACR32_EL2}} // encoding: [0x09,0x30,0x3c,0xd5]
4644 // CHECK: mrs x9, {{spsr_el1|SPSR_EL1}} // encoding: [0x09,0x40,0x38,0xd5]
4645 // CHECK: mrs x9, {{spsr_el2|SPSR_EL2}} // encoding: [0x09,0x40,0x3c,0xd5]
4646 // CHECK: mrs x9, {{spsr_el3|SPSR_EL3}} // encoding: [0x09,0x40,0x3e,0xd5]
4647 // CHECK: mrs x9, {{elr_el1|ELR_EL1}} // encoding: [0x29,0x40,0x38,0xd5]
4648 // CHECK: mrs x9, {{elr_el2|ELR_EL2}} // encoding: [0x29,0x40,0x3c,0xd5]
4649 // CHECK: mrs x9, {{elr_el3|ELR_EL3}} // encoding: [0x29,0x40,0x3e,0xd5]
4650 // CHECK: mrs x9, {{sp_el0|SP_EL0}} // encoding: [0x09,0x41,0x38,0xd5]
4651 // CHECK: mrs x9, {{sp_el1|SP_EL1}} // encoding: [0x09,0x41,0x3c,0xd5]
4652 // CHECK: mrs x9, {{sp_el2|SP_EL2}} // encoding: [0x09,0x41,0x3e,0xd5]
4653 // CHECK: mrs x9, {{SPSel|SPSEL}} // encoding: [0x09,0x42,0x38,0xd5]
4654 // CHECK: mrs x9, {{nzcv|NZCV}} // encoding: [0x09,0x42,0x3b,0xd5]
4655 // CHECK: mrs x9, {{daif|DAIF}} // encoding: [0x29,0x42,0x3b,0xd5]
4656 // CHECK: mrs x9, {{CurrentEL|CURRENTEL}} // encoding: [0x49,0x42,0x38,0xd5]
4657 // CHECK: mrs x9, {{SPSR_irq|SPSR_IRQ}} // encoding: [0x09,0x43,0x3c,0xd5]
4658 // CHECK: mrs x9, {{SPSR_abt|SPSR_ABT}} // encoding: [0x29,0x43,0x3c,0xd5]
4659 // CHECK: mrs x9, {{SPSR_und|SPSR_UND}} // encoding: [0x49,0x43,0x3c,0xd5]
4660 // CHECK: mrs x9, {{SPSR_fiq|SPSR_FIQ}} // encoding: [0x69,0x43,0x3c,0xd5]
4661 // CHECK: mrs x9, {{fpcr|FPCR}} // encoding: [0x09,0x44,0x3b,0xd5]
4662 // CHECK: mrs x9, {{fpsr|FPSR}} // encoding: [0x29,0x44,0x3b,0xd5]
4663 // CHECK: mrs x9, {{dspsr_el0|DSPSR_EL0}} // encoding: [0x09,0x45,0x3b,0xd5]
4664 // CHECK: mrs x9, {{dlr_el0|DLR_EL0}} // encoding: [0x29,0x45,0x3b,0xd5]
4665 // CHECK: mrs x9, {{ifsr32_el2|IFSR32_EL2}} // encoding: [0x29,0x50,0x3c,0xd5]
4666 // CHECK: mrs x9, {{afsr0_el1|AFSR0_EL1}} // encoding: [0x09,0x51,0x38,0xd5]
4667 // CHECK: mrs x9, {{afsr0_el2|AFSR0_EL2}} // encoding: [0x09,0x51,0x3c,0xd5]
4668 // CHECK: mrs x9, {{afsr0_el3|AFSR0_EL3}} // encoding: [0x09,0x51,0x3e,0xd5]
4669 // CHECK: mrs x9, {{afsr1_el1|AFSR1_EL1}} // encoding: [0x29,0x51,0x38,0xd5]
4670 // CHECK: mrs x9, {{afsr1_el2|AFSR1_EL2}} // encoding: [0x29,0x51,0x3c,0xd5]
4671 // CHECK: mrs x9, {{afsr1_el3|AFSR1_EL3}} // encoding: [0x29,0x51,0x3e,0xd5]
4672 // CHECK: mrs x9, {{esr_el1|ESR_EL1}} // encoding: [0x09,0x52,0x38,0xd5]
4673 // CHECK: mrs x9, {{esr_el2|ESR_EL2}} // encoding: [0x09,0x52,0x3c,0xd5]
4674 // CHECK: mrs x9, {{esr_el3|ESR_EL3}} // encoding: [0x09,0x52,0x3e,0xd5]
4675 // CHECK: mrs x9, {{fpexc32_el2|FPEXC32_EL2}} // encoding: [0x09,0x53,0x3c,0xd5]
4676 // CHECK: mrs x9, {{far_el1|FAR_EL1}} // encoding: [0x09,0x60,0x38,0xd5]
4677 // CHECK: mrs x9, {{far_el2|FAR_EL2}} // encoding: [0x09,0x60,0x3c,0xd5]
4678 // CHECK: mrs x9, {{far_el3|FAR_EL3}} // encoding: [0x09,0x60,0x3e,0xd5]
4679 // CHECK: mrs x9, {{hpfar_el2|HPFAR_EL2}} // encoding: [0x89,0x60,0x3c,0xd5]
4680 // CHECK: mrs x9, {{par_el1|PAR_EL1}} // encoding: [0x09,0x74,0x38,0xd5]
4681 // CHECK: mrs x9, {{pmcr_el0|PMCR_EL0}} // encoding: [0x09,0x9c,0x3b,0xd5]
4682 // CHECK: mrs x9, {{pmcntenset_el0|PMCNTENSET_EL0}} // encoding: [0x29,0x9c,0x3b,0xd5]
4683 // CHECK: mrs x9, {{pmcntenclr_el0|PMCNTENCLR_EL0}} // encoding: [0x49,0x9c,0x3b,0xd5]
4684 // CHECK: mrs x9, {{pmovsclr_el0|PMOVSCLR_EL0}} // encoding: [0x69,0x9c,0x3b,0xd5]
4685 // CHECK: mrs x9, {{pmselr_el0|PMSELR_EL0}} // encoding: [0xa9,0x9c,0x3b,0xd5]
4686 // CHECK: mrs x9, {{pmceid0_el0|PMCEID0_EL0}} // encoding: [0xc9,0x9c,0x3b,0xd5]
4687 // CHECK: mrs x9, {{pmceid1_el0|PMCEID1_EL0}} // encoding: [0xe9,0x9c,0x3b,0xd5]
4688 // CHECK: mrs x9, {{pmccntr_el0|PMCCNTR_EL0}} // encoding: [0x09,0x9d,0x3b,0xd5]
4689 // CHECK: mrs x9, {{pmxevtyper_el0|PMXEVTYPER_EL0}} // encoding: [0x29,0x9d,0x3b,0xd5]
4690 // CHECK: mrs x9, {{pmxevcntr_el0|PMXEVCNTR_EL0}} // encoding: [0x49,0x9d,0x3b,0xd5]
4691 // CHECK: mrs x9, {{pmuserenr_el0|PMUSERENR_EL0}} // encoding: [0x09,0x9e,0x3b,0xd5]
4692 // CHECK: mrs x9, {{pmintenset_el1|PMINTENSET_EL1}} // encoding: [0x29,0x9e,0x38,0xd5]
4693 // CHECK: mrs x9, {{pmintenclr_el1|PMINTENCLR_EL1}} // encoding: [0x49,0x9e,0x38,0xd5]
4694 // CHECK: mrs x9, {{pmovsset_el0|PMOVSSET_EL0}} // encoding: [0x69,0x9e,0x3b,0xd5]
4695 // CHECK: mrs x9, {{mair_el1|MAIR_EL1}} // encoding: [0x09,0xa2,0x38,0xd5]
4696 // CHECK: mrs x9, {{mair_el2|MAIR_EL2}} // encoding: [0x09,0xa2,0x3c,0xd5]
4697 // CHECK: mrs x9, {{mair_el3|MAIR_EL3}} // encoding: [0x09,0xa2,0x3e,0xd5]
4698 // CHECK: mrs x9, {{amair_el1|AMAIR_EL1}} // encoding: [0x09,0xa3,0x38,0xd5]
4699 // CHECK: mrs x9, {{amair_el2|AMAIR_EL2}} // encoding: [0x09,0xa3,0x3c,0xd5]
4700 // CHECK: mrs x9, {{amair_el3|AMAIR_EL3}} // encoding: [0x09,0xa3,0x3e,0xd5]
4701 // CHECK: mrs x9, {{vbar_el1|VBAR_EL1}} // encoding: [0x09,0xc0,0x38,0xd5]
4702 // CHECK: mrs x9, {{vbar_el2|VBAR_EL2}} // encoding: [0x09,0xc0,0x3c,0xd5]
4703 // CHECK: mrs x9, {{vbar_el3|VBAR_EL3}} // encoding: [0x09,0xc0,0x3e,0xd5]
4704 // CHECK: mrs x9, {{rvbar_el1|RVBAR_EL1}} // encoding: [0x29,0xc0,0x38,0xd5]
4705 // CHECK: mrs x9, {{rvbar_el2|RVBAR_EL2}} // encoding: [0x29,0xc0,0x3c,0xd5]
4706 // CHECK: mrs x9, {{rvbar_el3|RVBAR_EL3}} // encoding: [0x29,0xc0,0x3e,0xd5]
4707 // CHECK: mrs x9, {{rmr_el1|RMR_EL1}} // encoding: [0x49,0xc0,0x38,0xd5]
4708 // CHECK: mrs x9, {{rmr_el2|RMR_EL2}} // encoding: [0x49,0xc0,0x3c,0xd5]
4709 // CHECK: mrs x9, {{rmr_el3|RMR_EL3}} // encoding: [0x49,0xc0,0x3e,0xd5]
4710 // CHECK: mrs x9, {{isr_el1|ISR_EL1}} // encoding: [0x09,0xc1,0x38,0xd5]
4711 // CHECK: mrs x9, {{contextidr_el1|CONTEXTIDR_EL1}} // encoding: [0x29,0xd0,0x38,0xd5]
4712 // CHECK: mrs x9, {{tpidr_el0|TPIDR_EL0}} // encoding: [0x49,0xd0,0x3b,0xd5]
4713 // CHECK: mrs x9, {{tpidr_el2|TPIDR_EL2}} // encoding: [0x49,0xd0,0x3c,0xd5]
4714 // CHECK: mrs x9, {{tpidr_el3|TPIDR_EL3}} // encoding: [0x49,0xd0,0x3e,0xd5]
4715 // CHECK: mrs x9, {{tpidrro_el0|TPIDRRO_EL0}} // encoding: [0x69,0xd0,0x3b,0xd5]
4716 // CHECK: mrs x9, {{tpidr_el1|TPIDR_EL1}} // encoding: [0x89,0xd0,0x38,0xd5]
4717 // CHECK: mrs x9, {{cntfrq_el0|CNTFRQ_EL0}} // encoding: [0x09,0xe0,0x3b,0xd5]
4718 // CHECK: mrs x9, {{cntpct_el0|CNTPCT_EL0}} // encoding: [0x29,0xe0,0x3b,0xd5]
4719 // CHECK: mrs x9, {{cntvct_el0|CNTVCT_EL0}} // encoding: [0x49,0xe0,0x3b,0xd5]
4720 // CHECK: mrs x9, {{cntvoff_el2|CNTVOFF_EL2}} // encoding: [0x69,0xe0,0x3c,0xd5]
4721 // CHECK: mrs x9, {{cntkctl_el1|CNTKCTL_EL1}} // encoding: [0x09,0xe1,0x38,0xd5]
4722 // CHECK: mrs x9, {{cnthctl_el2|CNTHCTL_EL2}} // encoding: [0x09,0xe1,0x3c,0xd5]
4723 // CHECK: mrs x9, {{cntp_tval_el0|CNTP_TVAL_EL0}} // encoding: [0x09,0xe2,0x3b,0xd5]
4724 // CHECK: mrs x9, {{cnthp_tval_el2|CNTHP_TVAL_EL2}} // encoding: [0x09,0xe2,0x3c,0xd5]
4725 // CHECK: mrs x9, {{cntps_tval_el1|CNTPS_TVAL_EL1}} // encoding: [0x09,0xe2,0x3f,0xd5]
4726 // CHECK: mrs x9, {{cntp_ctl_el0|CNTP_CTL_EL0}} // encoding: [0x29,0xe2,0x3b,0xd5]
4727 // CHECK: mrs x9, {{cnthp_ctl_el2|CNTHP_CTL_EL2}} // encoding: [0x29,0xe2,0x3c,0xd5]
4728 // CHECK: mrs x9, {{cntps_ctl_el1|CNTPS_CTL_EL1}} // encoding: [0x29,0xe2,0x3f,0xd5]
4729 // CHECK: mrs x9, {{cntp_cval_el0|CNTP_CVAL_EL0}} // encoding: [0x49,0xe2,0x3b,0xd5]
4730 // CHECK: mrs x9, {{cnthp_cval_el2|CNTHP_CVAL_EL2}} // encoding: [0x49,0xe2,0x3c,0xd5]
4731 // CHECK: mrs x9, {{cntps_cval_el1|CNTPS_CVAL_EL1}} // encoding: [0x49,0xe2,0x3f,0xd5]
4732 // CHECK: mrs x9, {{cntv_tval_el0|CNTV_TVAL_EL0}} // encoding: [0x09,0xe3,0x3b,0xd5]
4733 // CHECK: mrs x9, {{cntv_ctl_el0|CNTV_CTL_EL0}} // encoding: [0x29,0xe3,0x3b,0xd5]
4734 // CHECK: mrs x9, {{cntv_cval_el0|CNTV_CVAL_EL0}} // encoding: [0x49,0xe3,0x3b,0xd5]
4735 // CHECK: mrs x9, {{pmevcntr0_el0|PMEVCNTR0_EL0}} // encoding: [0x09,0xe8,0x3b,0xd5]
4736 // CHECK: mrs x9, {{pmevcntr1_el0|PMEVCNTR1_EL0}} // encoding: [0x29,0xe8,0x3b,0xd5]
4737 // CHECK: mrs x9, {{pmevcntr2_el0|PMEVCNTR2_EL0}} // encoding: [0x49,0xe8,0x3b,0xd5]
4738 // CHECK: mrs x9, {{pmevcntr3_el0|PMEVCNTR3_EL0}} // encoding: [0x69,0xe8,0x3b,0xd5]
4739 // CHECK: mrs x9, {{pmevcntr4_el0|PMEVCNTR4_EL0}} // encoding: [0x89,0xe8,0x3b,0xd5]
4740 // CHECK: mrs x9, {{pmevcntr5_el0|PMEVCNTR5_EL0}} // encoding: [0xa9,0xe8,0x3b,0xd5]
4741 // CHECK: mrs x9, {{pmevcntr6_el0|PMEVCNTR6_EL0}} // encoding: [0xc9,0xe8,0x3b,0xd5]
4742 // CHECK: mrs x9, {{pmevcntr7_el0|PMEVCNTR7_EL0}} // encoding: [0xe9,0xe8,0x3b,0xd5]
4743 // CHECK: mrs x9, {{pmevcntr8_el0|PMEVCNTR8_EL0}} // encoding: [0x09,0xe9,0x3b,0xd5]
4744 // CHECK: mrs x9, {{pmevcntr9_el0|PMEVCNTR9_EL0}} // encoding: [0x29,0xe9,0x3b,0xd5]
4745 // CHECK: mrs x9, {{pmevcntr10_el0|PMEVCNTR10_EL0}} // encoding: [0x49,0xe9,0x3b,0xd5]
4746 // CHECK: mrs x9, {{pmevcntr11_el0|PMEVCNTR11_EL0}} // encoding: [0x69,0xe9,0x3b,0xd5]
4747 // CHECK: mrs x9, {{pmevcntr12_el0|PMEVCNTR12_EL0}} // encoding: [0x89,0xe9,0x3b,0xd5]
4748 // CHECK: mrs x9, {{pmevcntr13_el0|PMEVCNTR13_EL0}} // encoding: [0xa9,0xe9,0x3b,0xd5]
4749 // CHECK: mrs x9, {{pmevcntr14_el0|PMEVCNTR14_EL0}} // encoding: [0xc9,0xe9,0x3b,0xd5]
4750 // CHECK: mrs x9, {{pmevcntr15_el0|PMEVCNTR15_EL0}} // encoding: [0xe9,0xe9,0x3b,0xd5]
4751 // CHECK: mrs x9, {{pmevcntr16_el0|PMEVCNTR16_EL0}} // encoding: [0x09,0xea,0x3b,0xd5]
4752 // CHECK: mrs x9, {{pmevcntr17_el0|PMEVCNTR17_EL0}} // encoding: [0x29,0xea,0x3b,0xd5]
4753 // CHECK: mrs x9, {{pmevcntr18_el0|PMEVCNTR18_EL0}} // encoding: [0x49,0xea,0x3b,0xd5]
4754 // CHECK: mrs x9, {{pmevcntr19_el0|PMEVCNTR19_EL0}} // encoding: [0x69,0xea,0x3b,0xd5]
4755 // CHECK: mrs x9, {{pmevcntr20_el0|PMEVCNTR20_EL0}} // encoding: [0x89,0xea,0x3b,0xd5]
4756 // CHECK: mrs x9, {{pmevcntr21_el0|PMEVCNTR21_EL0}} // encoding: [0xa9,0xea,0x3b,0xd5]
4757 // CHECK: mrs x9, {{pmevcntr22_el0|PMEVCNTR22_EL0}} // encoding: [0xc9,0xea,0x3b,0xd5]
4758 // CHECK: mrs x9, {{pmevcntr23_el0|PMEVCNTR23_EL0}} // encoding: [0xe9,0xea,0x3b,0xd5]
4759 // CHECK: mrs x9, {{pmevcntr24_el0|PMEVCNTR24_EL0}} // encoding: [0x09,0xeb,0x3b,0xd5]
4760 // CHECK: mrs x9, {{pmevcntr25_el0|PMEVCNTR25_EL0}} // encoding: [0x29,0xeb,0x3b,0xd5]
4761 // CHECK: mrs x9, {{pmevcntr26_el0|PMEVCNTR26_EL0}} // encoding: [0x49,0xeb,0x3b,0xd5]
4762 // CHECK: mrs x9, {{pmevcntr27_el0|PMEVCNTR27_EL0}} // encoding: [0x69,0xeb,0x3b,0xd5]
4763 // CHECK: mrs x9, {{pmevcntr28_el0|PMEVCNTR28_EL0}} // encoding: [0x89,0xeb,0x3b,0xd5]
4764 // CHECK: mrs x9, {{pmevcntr29_el0|PMEVCNTR29_EL0}} // encoding: [0xa9,0xeb,0x3b,0xd5]
4765 // CHECK: mrs x9, {{pmevcntr30_el0|PMEVCNTR30_EL0}} // encoding: [0xc9,0xeb,0x3b,0xd5]
4766 // CHECK: mrs x9, {{pmccfiltr_el0|PMCCFILTR_EL0}} // encoding: [0xe9,0xef,0x3b,0xd5]
4767 // CHECK: mrs x9, {{pmevtyper0_el0|PMEVTYPER0_EL0}} // encoding: [0x09,0xec,0x3b,0xd5]
4768 // CHECK: mrs x9, {{pmevtyper1_el0|PMEVTYPER1_EL0}} // encoding: [0x29,0xec,0x3b,0xd5]
4769 // CHECK: mrs x9, {{pmevtyper2_el0|PMEVTYPER2_EL0}} // encoding: [0x49,0xec,0x3b,0xd5]
4770 // CHECK: mrs x9, {{pmevtyper3_el0|PMEVTYPER3_EL0}} // encoding: [0x69,0xec,0x3b,0xd5]
4771 // CHECK: mrs x9, {{pmevtyper4_el0|PMEVTYPER4_EL0}} // encoding: [0x89,0xec,0x3b,0xd5]
4772 // CHECK: mrs x9, {{pmevtyper5_el0|PMEVTYPER5_EL0}} // encoding: [0xa9,0xec,0x3b,0xd5]
4773 // CHECK: mrs x9, {{pmevtyper6_el0|PMEVTYPER6_EL0}} // encoding: [0xc9,0xec,0x3b,0xd5]
4774 // CHECK: mrs x9, {{pmevtyper7_el0|PMEVTYPER7_EL0}} // encoding: [0xe9,0xec,0x3b,0xd5]
4775 // CHECK: mrs x9, {{pmevtyper8_el0|PMEVTYPER8_EL0}} // encoding: [0x09,0xed,0x3b,0xd5]
4776 // CHECK: mrs x9, {{pmevtyper9_el0|PMEVTYPER9_EL0}} // encoding: [0x29,0xed,0x3b,0xd5]
4777 // CHECK: mrs x9, {{pmevtyper10_el0|PMEVTYPER10_EL0}} // encoding: [0x49,0xed,0x3b,0xd5]
4778 // CHECK: mrs x9, {{pmevtyper11_el0|PMEVTYPER11_EL0}} // encoding: [0x69,0xed,0x3b,0xd5]
4779 // CHECK: mrs x9, {{pmevtyper12_el0|PMEVTYPER12_EL0}} // encoding: [0x89,0xed,0x3b,0xd5]
4780 // CHECK: mrs x9, {{pmevtyper13_el0|PMEVTYPER13_EL0}} // encoding: [0xa9,0xed,0x3b,0xd5]
4781 // CHECK: mrs x9, {{pmevtyper14_el0|PMEVTYPER14_EL0}} // encoding: [0xc9,0xed,0x3b,0xd5]
4782 // CHECK: mrs x9, {{pmevtyper15_el0|PMEVTYPER15_EL0}} // encoding: [0xe9,0xed,0x3b,0xd5]
4783 // CHECK: mrs x9, {{pmevtyper16_el0|PMEVTYPER16_EL0}} // encoding: [0x09,0xee,0x3b,0xd5]
4784 // CHECK: mrs x9, {{pmevtyper17_el0|PMEVTYPER17_EL0}} // encoding: [0x29,0xee,0x3b,0xd5]
4785 // CHECK: mrs x9, {{pmevtyper18_el0|PMEVTYPER18_EL0}} // encoding: [0x49,0xee,0x3b,0xd5]
4786 // CHECK: mrs x9, {{pmevtyper19_el0|PMEVTYPER19_EL0}} // encoding: [0x69,0xee,0x3b,0xd5]
4787 // CHECK: mrs x9, {{pmevtyper20_el0|PMEVTYPER20_EL0}} // encoding: [0x89,0xee,0x3b,0xd5]
4788 // CHECK: mrs x9, {{pmevtyper21_el0|PMEVTYPER21_EL0}} // encoding: [0xa9,0xee,0x3b,0xd5]
4789 // CHECK: mrs x9, {{pmevtyper22_el0|PMEVTYPER22_EL0}} // encoding: [0xc9,0xee,0x3b,0xd5]
4790 // CHECK: mrs x9, {{pmevtyper23_el0|PMEVTYPER23_EL0}} // encoding: [0xe9,0xee,0x3b,0xd5]
4791 // CHECK: mrs x9, {{pmevtyper24_el0|PMEVTYPER24_EL0}} // encoding: [0x09,0xef,0x3b,0xd5]
4792 // CHECK: mrs x9, {{pmevtyper25_el0|PMEVTYPER25_EL0}} // encoding: [0x29,0xef,0x3b,0xd5]
4793 // CHECK: mrs x9, {{pmevtyper26_el0|PMEVTYPER26_EL0}} // encoding: [0x49,0xef,0x3b,0xd5]
4794 // CHECK: mrs x9, {{pmevtyper27_el0|PMEVTYPER27_EL0}} // encoding: [0x69,0xef,0x3b,0xd5]
4795 // CHECK: mrs x9, {{pmevtyper28_el0|PMEVTYPER28_EL0}} // encoding: [0x89,0xef,0x3b,0xd5]
4796 // CHECK: mrs x9, {{pmevtyper29_el0|PMEVTYPER29_EL0}} // encoding: [0xa9,0xef,0x3b,0xd5]
4797 // CHECK: mrs x9, {{pmevtyper30_el0|PMEVTYPER30_EL0}} // encoding: [0xc9,0xef,0x3b,0xd5]
4799 mrs x12, s3_7_c15_c1_5
4800 mrs x13, s3_2_c11_c15_7
4801 mrs x14, s1_3_c9_c2_1
4802 msr s3_0_c15_c0_0, x12
4803 msr s3_7_c11_c13_7, x5
4804 msr s1_3_c9_c2_1, x4
4805 // CHECK: mrs x12, {{s3_7_c15_c1_5|S3_7_C15_C1_5}} // encoding: [0xac,0xf1,0x3f,0xd5]
4806 // CHECK: mrs x13, {{s3_2_c11_c15_7|S3_2_C11_C15_7}} // encoding: [0xed,0xbf,0x3a,0xd5]
4807 // CHECK: mrs x14, {{s1_3_c9_c2_1|S1_3_C9_C2_1}} // encoding: [0x2e,0x92,0x2b,0xd5]
4808 // CHECK: msr {{s3_0_c15_c0_0|S3_0_C15_C0_0}}, x12 // encoding: [0x0c,0xf0,0x18,0xd5]
4809 // CHECK: msr {{s3_7_c11_c13_7|S3_7_C11_C13_7}}, x5 // encoding: [0xe5,0xbd,0x1f,0xd5]
4810 // CHECK: msr {{s1_3_c9_c2_1|S1_3_C9_C2_1}}, x4 // encoding: [0x24,0x92,0x0b,0xd5]
4812 //------------------------------------------------------------------------------
4813 // Unconditional branch (immediate)
4814 //------------------------------------------------------------------------------
4816 tbz x5, #0, somewhere
4817 tbz xzr, #63, elsewhere
4818 tbnz x5, #45, nowhere
4820 // CHECK: tbz w5, #0, somewhere // encoding: [0bAAA00101,A,0b00000AAA,0x36]
4821 // CHECK: // fixup A - offset: 0, value: somewhere, kind: fixup_aarch64_pcrel_branch14
4822 // CHECK: tbz xzr, #63, elsewhere // encoding: [0bAAA11111,A,0b11111AAA,0xb6]
4823 // CHECK: // fixup A - offset: 0, value: elsewhere, kind: fixup_aarch64_pcrel_branch14
4824 // CHECK: tbnz x5, #45, nowhere // encoding: [0bAAA00101,A,0b01101AAA,0xb7]
4825 // CHECK: // fixup A - offset: 0, value: nowhere, kind: fixup_aarch64_pcrel_branch14
4828 tbnz w3, #2, there
4829 tbnz wzr, #31, nowhere
4830 tbz w5, #12, anywhere
4832 // CHECK: tbnz w3, #2, there // encoding: [0bAAA00011,A,0b00010AAA,0x37]
4833 // CHECK: // fixup A - offset: 0, value: there, kind: fixup_aarch64_pcrel_branch14
4834 // CHECK: tbnz wzr, #31, nowhere // encoding: [0bAAA11111,A,0b11111AAA,0x37]
4835 // CHECK: // fixup A - offset: 0, value: nowhere, kind: fixup_aarch64_pcrel_branch14
4836 // CHECK: tbz w5, #12, anywhere // encoding: [0bAAA00101,A,0b01100AAA,0x36]
4837 // CHECK: // fixup A - offset: 0, value: anywhere, kind: fixup_aarch64_pcrel_branch14
4839 //------------------------------------------------------------------------------
4840 // Unconditional branch (immediate)
4841 //------------------------------------------------------------------------------
4843 b somewhere
4844 bl elsewhere
4846 // CHECK: b somewhere // encoding: [A,A,A,0b000101AA]
4847 // CHECK: // fixup A - offset: 0, value: somewhere, kind: fixup_aarch64_pcrel_branch26
4848 // CHECK: bl elsewhere // encoding: [A,A,A,0b100101AA]
4849 // CHECK: // fixup A - offset: 0, value: elsewhere, kind: fixup_aarch64_pcrel_call26
4851 b #4
4852 bl #0
4853 b #134217724
4854 bl #-134217728
4855 // CHECK: b #4 // encoding: [0x01,0x00,0x00,0x14]
4856 // CHECK: bl #0 // encoding: [0x00,0x00,0x00,0x94]
4857 // CHECK: b #134217724 // encoding: [0xff,0xff,0xff,0x15]
4858 // CHECK: bl #-134217728 // encoding: [0x00,0x00,0x00,0x96]
4860 //------------------------------------------------------------------------------
4861 // Unconditional branch (register)
4862 //------------------------------------------------------------------------------
4864 br x20
4865 blr xzr
4866 ret x10
4867 // CHECK: br x20 // encoding: [0x80,0x02,0x1f,0xd6]
4868 // CHECK: blr xzr // encoding: [0xe0,0x03,0x3f,0xd6]
4869 // CHECK: ret x10 // encoding: [0x40,0x01,0x5f,0xd6]
4872 eret
4873 drps
4874 // CHECK: ret // encoding: [0xc0,0x03,0x5f,0xd6]
4875 // CHECK: eret // encoding: [0xe0,0x03,0x9f,0xd6]
4876 // CHECK: drps // encoding: [0xe0,0x03,0xbf,0xd6]