ARM optional operand on MRC/MCR assembly instructions.
[oota-llvm.git] / test / MC / ARM / basic-thumb2-instructions.s
1 @ RUN: llvm-mc -triple=thumbv7-apple-darwin -show-encoding < %s | FileCheck %s
2   .syntax unified
3   .globl _func
4
5 @ Check that the assembler can handle the documented syntax from the ARM ARM.
6 @ For complex constructs like shifter operands, check more thoroughly for them
7 @ once then spot check that following instructions accept the form generally.
8 @ This gives us good coverage while keeping the overall size of the test
9 @ more reasonable.
10
11
12 @ FIXME: Some 3-operand instructions have a 2-operand assembly syntax.
13
14 _func:
15 @ CHECK: _func
16
17 @------------------------------------------------------------------------------
18 @ ADC (immediate)
19 @------------------------------------------------------------------------------
20         adc r0, r1, #4
21         adcs r0, r1, #0
22         adc r1, r2, #255
23         adc r3, r7, #0x00550055
24         adc r8, r12, #0xaa00aa00
25         adc r9, r7, #0xa5a5a5a5
26         adc r5, r3, #0x87000000
27         adc r4, r2, #0x7f800000
28         adc r4, r2, #0x00000680
29
30 @ CHECK: adc    r0, r1, #4              @ encoding: [0x41,0xf1,0x04,0x00]
31 @ CHECK: adcs   r0, r1, #0              @ encoding: [0x51,0xf1,0x00,0x00]
32 @ CHECK: adc    r1, r2, #255            @ encoding: [0x42,0xf1,0xff,0x01]
33 @ CHECK: adc    r3, r7, #5570645        @ encoding: [0x47,0xf1,0x55,0x13]
34 @ CHECK: adc    r8, r12, #2852170240    @ encoding: [0x4c,0xf1,0xaa,0x28]
35 @ CHECK: adc    r9, r7, #2779096485     @ encoding: [0x47,0xf1,0xa5,0x39]
36 @ CHECK: adc    r5, r3, #2264924160     @ encoding: [0x43,0xf1,0x07,0x45]
37 @ CHECK: adc    r4, r2, #2139095040     @ encoding: [0x42,0xf1,0xff,0x44]
38 @ CHECK: adc    r4, r2, #1664           @ encoding: [0x42,0xf5,0xd0,0x64]
39
40 @------------------------------------------------------------------------------
41 @ ADC (register)
42 @------------------------------------------------------------------------------
43         adc r4, r5, r6
44         adcs r4, r5, r6
45         adc.w r9, r1, r3
46         adcs.w r9, r1, r3
47         adc     r0, r1, r3, ror #4
48         adcs    r0, r1, r3, lsl #7
49         adc.w   r0, r1, r3, lsr #31
50         adcs.w  r0, r1, r3, asr #32
51
52 @ CHECK: adc.w  r4, r5, r6              @ encoding: [0x45,0xeb,0x06,0x04]
53 @ CHECK: adcs.w r4, r5, r6              @ encoding: [0x55,0xeb,0x06,0x04]
54 @ CHECK: adc.w  r9, r1, r3              @ encoding: [0x41,0xeb,0x03,0x09]
55 @ CHECK: adcs.w r9, r1, r3              @ encoding: [0x51,0xeb,0x03,0x09]
56 @ CHECK: adc.w  r0, r1, r3, ror #4      @ encoding: [0x41,0xeb,0x33,0x10]
57 @ CHECK: adcs.w r0, r1, r3, lsl #7      @ encoding: [0x51,0xeb,0xc3,0x10]
58 @ CHECK: adc.w  r0, r1, r3, lsr #31     @ encoding: [0x41,0xeb,0xd3,0x70]
59 @ CHECK: adcs.w r0, r1, r3, asr #32     @ encoding: [0x51,0xeb,0x23,0x00]
60
61
62 @------------------------------------------------------------------------------
63 @ ADD (immediate)
64 @------------------------------------------------------------------------------
65         itet eq
66         addeq r1, r2, #4
67         addwne r5, r3, #1023
68         addeq r4, r5, #293
69         add r2, sp, #1024
70         add r2, r8, #0xff00
71         add r2, r3, #257
72         addw r2, r3, #257
73         add r12, r6, #0x100
74         addw r12, r6, #0x100
75         adds r1, r2, #0x1f0
76         add r2, #1
77         add r0, r0, #32
78
79 @ CHECK: itet   eq                      @ encoding: [0x0a,0xbf]
80 @ CHECK: addeq  r1, r2, #4              @ encoding: [0x11,0x1d]
81 @ CHECK: addwne r5, r3, #1023           @ encoding: [0x03,0xf2,0xff,0x35]
82 @ CHECK: addweq r4, r5, #293            @ encoding: [0x05,0xf2,0x25,0x14]
83 @ CHECK: add.w  r2, sp, #1024           @ encoding: [0x0d,0xf5,0x80,0x62]
84 @ CHECK: add.w  r2, r8, #65280          @ encoding: [0x08,0xf5,0x7f,0x42]
85 @ CHECK: addw   r2, r3, #257            @ encoding: [0x03,0xf2,0x01,0x12]
86 @ CHECK: addw   r2, r3, #257            @ encoding: [0x03,0xf2,0x01,0x12]
87 @ CHECK: add.w  r12, r6, #256           @ encoding: [0x06,0xf5,0x80,0x7c]
88 @ CHECK: addw   r12, r6, #256           @ encoding: [0x06,0xf2,0x00,0x1c]
89 @ CHECK: adds.w r1, r2, #496            @ encoding: [0x12,0xf5,0xf8,0x71]
90 @ CHECK: add.w  r2, r2, #1              @ encoding: [0x02,0xf1,0x01,0x02]
91 @ CHECK: add.w  r0, r0, #32             @ encoding: [0x00,0xf1,0x20,0x00]
92
93
94 @------------------------------------------------------------------------------
95 @ ADD (register)
96 @------------------------------------------------------------------------------
97         add r1, r2, r8
98         add r5, r9, r2, asr #32
99         adds r7, r3, r1, lsl #31
100         adds.w r0, r3, r6, lsr #25
101         add.w r4, r8, r1, ror #12
102         add r10, r8
103         add r10, r10, r8
104
105 @ CHECK: add.w  r1, r2, r8              @ encoding: [0x02,0xeb,0x08,0x01]
106 @ CHECK: add.w  r5, r9, r2, asr #32     @ encoding: [0x09,0xeb,0x22,0x05]
107 @ CHECK: adds.w r7, r3, r1, lsl #31     @ encoding: [0x13,0xeb,0xc1,0x77]
108 @ CHECK: adds.w r0, r3, r6, lsr #25     @ encoding: [0x13,0xeb,0x56,0x60]
109 @ CHECK: add.w  r4, r8, r1, ror #12     @ encoding: [0x08,0xeb,0x31,0x34]
110 @ CHECK: add    r10, r8                 @ encoding: [0xc2,0x44]
111 @ CHECK: add    r10, r8                 @ encoding: [0xc2,0x44]
112
113
114 @------------------------------------------------------------------------------
115 @ FIXME: ADR
116 @------------------------------------------------------------------------------
117
118         subw r11, pc, #3270
119         adr.w r11, #-826
120
121 @ CHECK: subw   r11, pc, #3270          @ encoding: [0xaf,0xf6,0xc6,0x4b]
122 @ CHECK: adr.w  r11, #-826              @ encoding: [0xaf,0xf2,0x3a,0x3b]
123
124 @------------------------------------------------------------------------------
125 @ AND (immediate)
126 @------------------------------------------------------------------------------
127         and r2, r5, #0xff000
128         ands r3, r12, #0xf
129         and r1, #0xff
130         and r1, r1, #0xff
131
132 @ CHECK: and    r2, r5, #1044480        @ encoding: [0x05,0xf4,0x7f,0x22]
133 @ CHECK: ands   r3, r12, #15            @ encoding: [0x1c,0xf0,0x0f,0x03]
134 @ CHECK: and    r1, r1, #255            @ encoding: [0x01,0xf0,0xff,0x01]
135 @ CHECK: and    r1, r1, #255            @ encoding: [0x01,0xf0,0xff,0x01]
136
137
138 @------------------------------------------------------------------------------
139 @ AND (register)
140 @------------------------------------------------------------------------------
141         and r4, r9, r8
142         and r1, r4, r8, asr #3
143         ands r2, r1, r7, lsl #1
144         ands.w r4, r5, r2, lsr #20
145         and.w r9, r12, r1, ror #17
146
147 @ CHECK: and.w  r4, r9, r8              @ encoding: [0x09,0xea,0x08,0x04]
148 @ CHECK: and.w  r1, r4, r8, asr #3      @ encoding: [0x04,0xea,0xe8,0x01]
149 @ CHECK: ands.w r2, r1, r7, lsl #1      @ encoding: [0x11,0xea,0x47,0x02]
150 @ CHECK: ands.w r4, r5, r2, lsr #20     @ encoding: [0x15,0xea,0x12,0x54]
151 @ CHECK: and.w  r9, r12, r1, ror #17    @ encoding: [0x0c,0xea,0x71,0x49]
152
153 @------------------------------------------------------------------------------
154 @ ASR (immediate)
155 @------------------------------------------------------------------------------
156         asr r2, r3, #12
157         asrs r8, r3, #32
158         asrs.w r2, r3, #1
159         asr r2, r3, #4
160         asrs r2, r12, #15
161
162         asr r3, #19
163         asrs r8, #2
164         asrs.w r7, #5
165         asr.w r12, #21
166
167 @ CHECK: asr.w  r2, r3, #12             @ encoding: [0x4f,0xea,0x23,0x32]
168 @ CHECK: asrs.w r8, r3, #32             @ encoding: [0x5f,0xea,0x23,0x08]
169 @ CHECK: asrs.w r2, r3, #1              @ encoding: [0x5f,0xea,0x63,0x02]
170 @ CHECK: asr.w  r2, r3, #4              @ encoding: [0x4f,0xea,0x23,0x12]
171 @ CHECK: asrs.w r2, r12, #15            @ encoding: [0x5f,0xea,0xec,0x32]
172
173 @ CHECK: asr.w  r3, r3, #19             @ encoding: [0x4f,0xea,0xe3,0x43]
174 @ CHECK: asrs.w r8, r8, #2              @ encoding: [0x5f,0xea,0xa8,0x08]
175 @ CHECK: asrs.w r7, r7, #5              @ encoding: [0x5f,0xea,0x67,0x17]
176 @ CHECK: asr.w  r12, r12, #21           @ encoding: [0x4f,0xea,0x6c,0x5c]
177
178
179 @------------------------------------------------------------------------------
180 @ ASR (register)
181 @------------------------------------------------------------------------------
182         asr r3, r4, r2
183         asr.w r1, r2
184         asrs r3, r4, r8
185
186 @ CHECK: asr.w  r3, r4, r2              @ encoding: [0x44,0xfa,0x02,0xf3]
187 @ CHECK: asr.w  r1, r1, r2              @ encoding: [0x41,0xfa,0x02,0xf1]
188 @ CHECK: asrs.w r3, r4, r8              @ encoding: [0x54,0xfa,0x08,0xf3]
189
190
191 @------------------------------------------------------------------------------
192 @ B
193 @------------------------------------------------------------------------------
194         b.w   _bar
195         beq.w   _bar
196         it eq
197         beq.w _bar
198         bmi.w   #-183396
199
200 @ CHECK: b.w    _bar                    @ encoding: [A,0xf0'A',A,0x90'A']
201           @   fixup A - offset: 0, value: _bar, kind: fixup_t2_uncondbranch
202 @ CHECK: beq.w  _bar                    @ encoding: [A,0xf0'A',A,0x80'A']
203           @   fixup A - offset: 0, value: _bar, kind: fixup_t2_condbranch
204 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
205 @ CHECK: beq.w  _bar                    @ encoding: [A,0xf0'A',A,0x90'A']
206           @   fixup A - offset: 0, value: _bar, kind: fixup_t2_uncondbranch
207 @ CHECK: bmi.w   #-183396                @ encoding: [0x13,0xf5,0xce,0xa9]
208
209
210 @------------------------------------------------------------------------------
211 @ BFC
212 @------------------------------------------------------------------------------
213         bfc r5, #3, #17
214         it lo
215         bfccc r5, #3, #17
216
217 @ CHECK: bfc    r5, #3, #17             @ encoding: [0x6f,0xf3,0xd3,0x05]
218 @ CHECK: it     lo                      @ encoding: [0x38,0xbf]
219 @ CHECK: bfclo  r5, #3, #17             @ encoding: [0x6f,0xf3,0xd3,0x05]
220
221
222 @------------------------------------------------------------------------------
223 @ BFI
224 @------------------------------------------------------------------------------
225         bfi r5, r2, #3, #17
226         it ne
227         bfine r5, r2, #3, #17
228
229 @ CHECK: bfi    r5, r2, #3, #17         @ encoding: [0x62,0xf3,0xd3,0x05]
230 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
231 @ CHECK: bfine  r5, r2, #3, #17         @ encoding: [0x62,0xf3,0xd3,0x05]
232
233
234 @------------------------------------------------------------------------------
235 @ BIC
236 @------------------------------------------------------------------------------
237         bic r10, r1, #0xf
238         bic r12, r3, r6
239         bic r11, r2, r6, lsl #12
240         bic r8, r4, r1, lsr #11
241         bic r7, r5, r7, lsr #15
242         bic r6, r7, r9, asr #32
243         bic r5, r6, r8, ror #1
244
245         @ destination register is optional
246         bic r1, #0xf
247         bic r1, r1
248         bic r4, r2, lsl #31
249         bic r6, r3, lsr #12
250         bic r7, r4, lsr #7
251         bic r8, r5, asr #15
252         bic r12, r6, ror #29
253
254 @ CHECK: bic    r10, r1, #15            @ encoding: [0x21,0xf0,0x0f,0x0a]
255 @ CHECK: bic.w  r12, r3, r6             @ encoding: [0x23,0xea,0x06,0x0c]
256 @ CHECK: bic.w  r11, r2, r6, lsl #12    @ encoding: [0x22,0xea,0x06,0x3b]
257 @ CHECK: bic.w  r8, r4, r1, lsr #11     @ encoding: [0x24,0xea,0xd1,0x28]
258 @ CHECK: bic.w  r7, r5, r7, lsr #15     @ encoding: [0x25,0xea,0xd7,0x37]
259 @ CHECK: bic.w  r6, r7, r9, asr #32     @ encoding: [0x27,0xea,0x29,0x06]
260 @ CHECK: bic.w  r5, r6, r8, ror #1      @ encoding: [0x26,0xea,0x78,0x05]
261
262 @ CHECK: bic    r1, r1, #15             @ encoding: [0x21,0xf0,0x0f,0x01]
263 @ CHECK: bic.w  r1, r1, r1              @ encoding: [0x21,0xea,0x01,0x01]
264 @ CHECK: bic.w  r4, r4, r2, lsl #31     @ encoding: [0x24,0xea,0xc2,0x74]
265 @ CHECK: bic.w  r6, r6, r3, lsr #12     @ encoding: [0x26,0xea,0x13,0x36]
266 @ CHECK: bic.w  r7, r7, r4, lsr #7      @ encoding: [0x27,0xea,0xd4,0x17]
267 @ CHECK: bic.w  r8, r8, r5, asr #15     @ encoding: [0x28,0xea,0xe5,0x38]
268 @ CHECK: bic.w  r12, r12, r6, ror #29   @ encoding: [0x2c,0xea,0x76,0x7c]
269
270 @------------------------------------------------------------------------------
271 @ BKPT
272 @------------------------------------------------------------------------------
273         it pl
274         bkpt #234
275
276 @ CHECK: it pl                      @ encoding: [0x58,0xbf]
277 @ CHECK: bkpt #234                    @ encoding: [0xea,0xbe]
278
279 @------------------------------------------------------------------------------
280 @ BXJ
281 @------------------------------------------------------------------------------
282         bxj r5
283         it ne
284         bxjne r7
285
286 @ CHECK: bxj    r5                      @ encoding: [0xc5,0xf3,0x00,0x8f]
287 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
288 @ CHECK: bxjne  r7                      @ encoding: [0xc7,0xf3,0x00,0x8f]
289
290
291 @------------------------------------------------------------------------------
292 @ CBZ/CBNZ
293 @------------------------------------------------------------------------------
294         cbnz    r7, #6
295         cbnz    r7, #12
296         cbz   r6, _bar
297         cbnz   r6, _bar
298
299 @ CHECK: cbnz    r7, #6                  @ encoding: [0x1f,0xb9]
300 @ CHECK: cbnz    r7, #12                 @ encoding: [0x37,0xb9]
301 @ CHECK: cbz    r6, _bar                @ encoding: [0x06'A',0xb1'A']
302            @   fixup A - offset: 0, value: _bar, kind: fixup_arm_thumb_cb
303 @ CHECK: cbnz   r6, _bar                @ encoding: [0x06'A',0xb9'A']
304            @   fixup A - offset: 0, value: _bar, kind: fixup_arm_thumb_cb
305
306
307 @------------------------------------------------------------------------------
308 @ CDP/CDP2
309 @------------------------------------------------------------------------------
310   cdp  p7, #1, c1, c1, c1, #4
311   cdp2  p7, #1, c1, c1, c1, #4
312
313 @ CHECK: cdp    p7, #1, c1, c1, c1, #4  @ encoding: [0x11,0xee,0x81,0x17]
314 @ CHECK: cdp2   p7, #1, c1, c1, c1, #4  @ encoding: [0x11,0xfe,0x81,0x17]
315
316
317 @------------------------------------------------------------------------------
318 @ CLREX
319 @------------------------------------------------------------------------------
320         clrex
321         it ne
322         clrexne
323
324 @ CHECK: clrex                           @ encoding: [0xbf,0xf3,0x2f,0x8f]
325 @ CHECK: it     ne                       @ encoding: [0x18,0xbf]
326 @ CHECK: clrexne                         @ encoding: [0xbf,0xf3,0x2f,0x8f]
327
328
329 @------------------------------------------------------------------------------
330 @ CLZ
331 @------------------------------------------------------------------------------
332         clz r1, r2
333         it eq
334         clzeq r1, r2
335
336 @ CHECK: clz    r1, r2                  @ encoding: [0xb2,0xfa,0x82,0xf1]
337 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
338 @ CHECK: clzeq  r1, r2                  @ encoding: [0xb2,0xfa,0x82,0xf1]
339
340
341 @------------------------------------------------------------------------------
342 @ CMN
343 @------------------------------------------------------------------------------
344         cmn r1, #0xf
345         cmn r8, r6
346         cmn r1, r6, lsl #10
347         cmn r1, r6, lsr #10
348         cmn sp, r6, lsr #10
349         cmn r1, r6, asr #10
350         cmn r1, r6, ror #10
351
352 @ CHECK: cmn.w  r1, #15                 @ encoding: [0x11,0xf1,0x0f,0x0f]
353 @ CHECK: cmn.w  r8, r6                  @ encoding: [0x18,0xeb,0x06,0x0f]
354 @ CHECK: cmn.w  r1, r6, lsl #10         @ encoding: [0x11,0xeb,0x86,0x2f]
355 @ CHECK: cmn.w  r1, r6, lsr #10         @ encoding: [0x11,0xeb,0x96,0x2f]
356 @ CHECK: cmn.w  sp, r6, lsr #10         @ encoding: [0x1d,0xeb,0x96,0x2f]
357 @ CHECK: cmn.w  r1, r6, asr #10         @ encoding: [0x11,0xeb,0xa6,0x2f]
358 @ CHECK: cmn.w  r1, r6, ror #10         @ encoding: [0x11,0xeb,0xb6,0x2f]
359
360
361 @------------------------------------------------------------------------------
362 @ CMP
363 @------------------------------------------------------------------------------
364         cmp r5, #0xff00
365         cmp.w r4, r12
366         cmp r9, r6, lsl #12
367         cmp r3, r7, lsr #31
368         cmp sp, r6, lsr #1
369         cmp r2, r5, asr #24
370         cmp r1, r4, ror #15
371         cmp r0, #-2
372
373 @ CHECK: cmp.w  r5, #65280              @ encoding: [0xb5,0xf5,0x7f,0x4f]
374 @ CHECK: cmp.w  r4, r12                 @ encoding: [0xb4,0xeb,0x0c,0x0f]
375 @ CHECK: cmp.w  r9, r6, lsl #12         @ encoding: [0xb9,0xeb,0x06,0x3f]
376 @ CHECK: cmp.w  r3, r7, lsr #31         @ encoding: [0xb3,0xeb,0xd7,0x7f]
377 @ CHECK: cmp.w  sp, r6, lsr #1          @ encoding: [0xbd,0xeb,0x56,0x0f]
378 @ CHECK: cmp.w  r2, r5, asr #24         @ encoding: [0xb2,0xeb,0x25,0x6f]
379 @ CHECK: cmp.w  r1, r4, ror #15         @ encoding: [0xb1,0xeb,0xf4,0x3f]
380 @ CHECK: cmn.w  r0, #2                  @ encoding: [0x10,0xf1,0x02,0x0f]
381
382 @------------------------------------------------------------------------------
383 @ DBG
384 @------------------------------------------------------------------------------
385         dbg #5
386         dbg #0
387         dbg #15
388
389 @ CHECK: dbg    #5                      @ encoding: [0xaf,0xf3,0xf5,0x80]
390 @ CHECK: dbg    #0                      @ encoding: [0xaf,0xf3,0xf0,0x80]
391 @ CHECK: dbg    #15                     @ encoding: [0xaf,0xf3,0xff,0x80]
392
393
394 @------------------------------------------------------------------------------
395 @ DMB
396 @------------------------------------------------------------------------------
397         dmb sy
398         dmb st
399         dmb sh
400         dmb ish
401         dmb shst
402         dmb ishst
403         dmb un
404         dmb nsh
405         dmb unst
406         dmb nshst
407         dmb osh
408         dmb oshst
409         dmb
410
411 @ CHECK: dmb    sy                      @ encoding: [0xbf,0xf3,0x5f,0x8f]
412 @ CHECK: dmb    st                      @ encoding: [0xbf,0xf3,0x5e,0x8f]
413 @ CHECK: dmb    ish                     @ encoding: [0xbf,0xf3,0x5b,0x8f]
414 @ CHECK: dmb    ish                     @ encoding: [0xbf,0xf3,0x5b,0x8f]
415 @ CHECK: dmb    ishst                   @ encoding: [0xbf,0xf3,0x5a,0x8f]
416 @ CHECK: dmb    ishst                   @ encoding: [0xbf,0xf3,0x5a,0x8f]
417 @ CHECK: dmb    nsh                     @ encoding: [0xbf,0xf3,0x57,0x8f]
418 @ CHECK: dmb    nsh                     @ encoding: [0xbf,0xf3,0x57,0x8f]
419 @ CHECK: dmb    nshst                   @ encoding: [0xbf,0xf3,0x56,0x8f]
420 @ CHECK: dmb    nshst                   @ encoding: [0xbf,0xf3,0x56,0x8f]
421 @ CHECK: dmb    osh                     @ encoding: [0xbf,0xf3,0x53,0x8f]
422 @ CHECK: dmb    oshst                   @ encoding: [0xbf,0xf3,0x52,0x8f]
423 @ CHECK: dmb    sy                      @ encoding: [0xbf,0xf3,0x5f,0x8f]
424
425
426 @------------------------------------------------------------------------------
427 @ DSB
428 @------------------------------------------------------------------------------
429         dsb sy
430         dsb st
431         dsb sh
432         dsb ish
433         dsb shst
434         dsb ishst
435         dsb un
436         dsb nsh
437         dsb unst
438         dsb nshst
439         dsb osh
440         dsb oshst
441         dsb
442
443 @ CHECK: dsb    sy                      @ encoding: [0xbf,0xf3,0x4f,0x8f]
444 @ CHECK: dsb    st                      @ encoding: [0xbf,0xf3,0x4e,0x8f]
445 @ CHECK: dsb    ish                     @ encoding: [0xbf,0xf3,0x4b,0x8f]
446 @ CHECK: dsb    ish                     @ encoding: [0xbf,0xf3,0x4b,0x8f]
447 @ CHECK: dsb    ishst                   @ encoding: [0xbf,0xf3,0x4a,0x8f]
448 @ CHECK: dsb    ishst                   @ encoding: [0xbf,0xf3,0x4a,0x8f]
449 @ CHECK: dsb    nsh                     @ encoding: [0xbf,0xf3,0x47,0x8f]
450 @ CHECK: dsb    nsh                     @ encoding: [0xbf,0xf3,0x47,0x8f]
451 @ CHECK: dsb    nshst                   @ encoding: [0xbf,0xf3,0x46,0x8f]
452 @ CHECK: dsb    nshst                   @ encoding: [0xbf,0xf3,0x46,0x8f]
453 @ CHECK: dsb    osh                     @ encoding: [0xbf,0xf3,0x43,0x8f]
454 @ CHECK: dsb    oshst                   @ encoding: [0xbf,0xf3,0x42,0x8f]
455 @ CHECK: dsb    sy                      @ encoding: [0xbf,0xf3,0x4f,0x8f]
456
457
458 @------------------------------------------------------------------------------
459 @ EOR
460 @------------------------------------------------------------------------------
461         eor r4, r5, #0xf000
462         eor r4, r5, r6
463         eor r4, r5, r6, lsl #5
464         eor r4, r5, r6, lsr #5
465         eor r4, r5, r6, lsr #5
466         eor r4, r5, r6, asr #5
467         eor r4, r5, r6, ror #5
468
469 @ CHECK: eor    r4, r5, #61440          @ encoding: [0x85,0xf4,0x70,0x44]
470 @ CHECK: eor.w  r4, r5, r6              @ encoding: [0x85,0xea,0x06,0x04]
471 @ CHECK: eor.w  r4, r5, r6, lsl #5      @ encoding: [0x85,0xea,0x46,0x14]
472 @ CHECK: eor.w  r4, r5, r6, lsr #5      @ encoding: [0x85,0xea,0x56,0x14]
473 @ CHECK: eor.w  r4, r5, r6, lsr #5      @ encoding: [0x85,0xea,0x56,0x14]
474 @ CHECK: eor.w  r4, r5, r6, asr #5      @ encoding: [0x85,0xea,0x66,0x14]
475 @ CHECK: eor.w  r4, r5, r6, ror #5      @ encoding: [0x85,0xea,0x76,0x14]
476
477
478 @------------------------------------------------------------------------------
479 @ ISB
480 @------------------------------------------------------------------------------
481         isb sy
482         isb
483
484 @ CHECK: isb    sy                      @ encoding: [0xbf,0xf3,0x6f,0x8f]
485 @ CHECK: isb    sy                      @ encoding: [0xbf,0xf3,0x6f,0x8f]
486
487
488 @------------------------------------------------------------------------------
489 @ IT
490 @------------------------------------------------------------------------------
491 @ Test encodings of a few full IT blocks, not just the IT instruction
492
493         iteet eq
494         addeq r0, r1, r2
495         nopne
496         subne r5, r6, r7
497         addeq r1, r2, #4
498
499 @ CHECK: iteet  eq                      @ encoding: [0x0d,0xbf]
500 @ CHECK: addeq  r0, r1, r2              @ encoding: [0x88,0x18]
501 @ CHECK: nopne                          @ encoding: [0x00,0xbf]
502 @ CHECK: subne  r5, r6, r7              @ encoding: [0xf5,0x1b]
503 @ CHECK: addeq  r1, r2, #4              @ encoding: [0x11,0x1d]
504
505
506 @------------------------------------------------------------------------------
507 @ LDC{L}/LDC2{L}
508 @------------------------------------------------------------------------------
509         ldc2 p0, c8, [r1, #4]
510         ldc2 p1, c7, [r2]
511         ldc2 p2, c6, [r3, #-224]
512         ldc2 p3, c5, [r4, #-120]!
513         ldc2 p4, c4, [r5], #16
514         ldc2 p5, c3, [r6], #-72
515         ldc2l p6, c2, [r7, #4]
516         ldc2l p7, c1, [r8]
517         ldc2l p8, c0, [r9, #-224]
518         ldc2l p9, c1, [r10, #-120]!
519         ldc2l p10, c2, [r11], #16
520         ldc2l p11, c3, [r12], #-72
521
522         ldc p12, c4, [r0, #4]
523         ldc p13, c5, [r1]
524         ldc p14, c6, [r2, #-224]
525         ldc p15, c7, [r3, #-120]!
526         ldc p5, c8, [r4], #16
527         ldc p4, c9, [r5], #-72
528         ldcl p3, c10, [r6, #4]
529         ldcl p2, c11, [r7]
530         ldcl p1, c12, [r8, #-224]
531         ldcl p0, c13, [r9, #-120]!
532         ldcl p6, c14, [r10], #16
533         ldcl p7, c15, [r11], #-72
534
535         ldc2 p2, c8, [r1], { 25 }
536
537 @ CHECK: ldc2   p0, c8, [r1, #4]        @ encoding: [0x91,0xfd,0x01,0x80]
538 @ CHECK: ldc2   p1, c7, [r2]            @ encoding: [0x92,0xfd,0x00,0x71]
539 @ CHECK: ldc2   p2, c6, [r3, #-224]     @ encoding: [0x13,0xfd,0x38,0x62]
540 @ CHECK: ldc2   p3, c5, [r4, #-120]!    @ encoding: [0x34,0xfd,0x1e,0x53]
541 @ CHECK: ldc2   p4, c4, [r5], #16       @ encoding: [0xb5,0xfc,0x04,0x44]
542 @ CHECK: ldc2   p5, c3, [r6], #-72      @ encoding: [0x36,0xfc,0x12,0x35]
543 @ CHECK: ldc2l  p6, c2, [r7, #4]        @ encoding: [0xd7,0xfd,0x01,0x26]
544 @ CHECK: ldc2l  p7, c1, [r8]            @ encoding: [0xd8,0xfd,0x00,0x17]
545 @ CHECK: ldc2l  p8, c0, [r9, #-224]     @ encoding: [0x59,0xfd,0x38,0x08]
546 @ CHECK: ldc2l  p9, c1, [r10, #-120]!   @ encoding: [0x7a,0xfd,0x1e,0x19]
547 @ CHECK: ldc2l  p10, c2, [r11], #16     @ encoding: [0xfb,0xfc,0x04,0x2a]
548 @ CHECK: ldc2l  p11, c3, [r12], #-72    @ encoding: [0x7c,0xfc,0x12,0x3b]
549
550 @ CHECK: ldc    p12, c4, [r0, #4]       @ encoding: [0x90,0xed,0x01,0x4c]
551 @ CHECK: ldc    p13, c5, [r1]           @ encoding: [0x91,0xed,0x00,0x5d]
552 @ CHECK: ldc    p14, c6, [r2, #-224]    @ encoding: [0x12,0xed,0x38,0x6e]
553 @ CHECK: ldc    p15, c7, [r3, #-120]!   @ encoding: [0x33,0xed,0x1e,0x7f]
554 @ CHECK: ldc    p5, c8, [r4], #16       @ encoding: [0xb4,0xec,0x04,0x85]
555 @ CHECK: ldc    p4, c9, [r5], #-72      @ encoding: [0x35,0xec,0x12,0x94]
556 @ CHECK: ldcl   p3, c10, [r6, #4]       @ encoding: [0xd6,0xed,0x01,0xa3]
557 @ CHECK: ldcl   p2, c11, [r7]           @ encoding: [0xd7,0xed,0x00,0xb2]
558 @ CHECK: ldcl   p1, c12, [r8, #-224]    @ encoding: [0x58,0xed,0x38,0xc1]
559 @ CHECK: ldcl   p0, c13, [r9, #-120]!   @ encoding: [0x79,0xed,0x1e,0xd0]
560 @ CHECK: ldcl   p6, c14, [r10], #16     @ encoding: [0xfa,0xec,0x04,0xe6]
561 @ CHECK: ldcl   p7, c15, [r11], #-72    @ encoding: [0x7b,0xec,0x12,0xf7]
562
563 @ CHECK: ldc2   p2, c8, [r1], {25}      @ encoding: [0x91,0xfc,0x19,0x82]
564
565
566 @------------------------------------------------------------------------------
567 @ LDMIA
568 @------------------------------------------------------------------------------
569         ldmia.w r4, {r4, r5, r8, r9}
570         ldmia.w r4, {r5, r6}
571         ldmia.w r5!, {r3, r8}
572         ldm.w r4, {r4, r5, r8, r9}
573         ldm.w r4, {r5, r6}
574         ldm.w r5!, {r3, r8}
575         ldm.w r5!, {r1, r2}
576         ldm.w r2, {r1, r2}
577
578         ldmia r4, {r4, r5, r8, r9}
579         ldmia r4, {r5, r6}
580         ldmia r5!, {r3, r8}
581         ldm r4, {r4, r5, r8, r9}
582         ldm r4, {r5, r6}
583         ldm r5!, {r3, r8}
584         ldmfd r5!, {r3, r8}
585         ldmia sp!, {r4-r11, pc}
586
587 @ CHECK: ldm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x94,0xe8,0x30,0x03]
588 @ CHECK: ldm.w  r4, {r5, r6}            @ encoding: [0x94,0xe8,0x60,0x00]
589 @ CHECK: ldm.w  r5!, {r3, r8}           @ encoding: [0xb5,0xe8,0x08,0x01]
590 @ CHECK: ldm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x94,0xe8,0x30,0x03]
591 @ CHECK: ldm.w  r4, {r5, r6}            @ encoding: [0x94,0xe8,0x60,0x00]
592 @ CHECK: ldm.w  r5!, {r3, r8}           @ encoding: [0xb5,0xe8,0x08,0x01]
593 @ CHECK: ldm.w  r5!, {r1, r2}           @ encoding: [0xb5,0xe8,0x06,0x00]
594 @ CHECK: ldm.w  r2, {r1, r2}            @ encoding: [0x92,0xe8,0x06,0x00]
595
596 @ CHECK: ldm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x94,0xe8,0x30,0x03]
597 @ CHECK: ldm.w  r4, {r5, r6}            @ encoding: [0x94,0xe8,0x60,0x00]
598 @ CHECK: ldm.w  r5!, {r3, r8}           @ encoding: [0xb5,0xe8,0x08,0x01]
599 @ CHECK: ldm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x94,0xe8,0x30,0x03]
600 @ CHECK: ldm.w  r4, {r5, r6}            @ encoding: [0x94,0xe8,0x60,0x00]
601 @ CHECK: ldm.w  r5!, {r3, r8}           @ encoding: [0xb5,0xe8,0x08,0x01]
602 @ CHECK: ldm.w  r5!, {r3, r8}           @ encoding: [0xb5,0xe8,0x08,0x01]
603 @ CHECK: pop.w  {pc, r4, r5, r6, r7, r8, r9, r10, r11} @ encoding: [0xbd,0xe8,0xf0,0x8f]
604
605
606 @------------------------------------------------------------------------------
607 @ LDMDB
608 @------------------------------------------------------------------------------
609         ldmdb r4, {r4, r5, r8, r9}
610         ldmdb r4, {r5, r6}
611         ldmdb r5!, {r3, r8}
612         ldmea r5!, {r3, r8}
613         ldmdb.w r4, {r5, r6}
614         ldmdb.w r5!, {r3, r8}
615
616 @ CHECK: ldmdb  r4, {r4, r5, r8, r9}    @ encoding: [0x14,0xe9,0x30,0x03]
617 @ CHECK: ldmdb  r4, {r5, r6}            @ encoding: [0x14,0xe9,0x60,0x00]
618 @ CHECK: ldmdb  r5!, {r3, r8}           @ encoding: [0x35,0xe9,0x08,0x01]
619 @ CHECK: ldmdb  r5!, {r3, r8}           @ encoding: [0x35,0xe9,0x08,0x01]
620 @ CHECK: ldmdb  r4, {r5, r6}            @ encoding: [0x14,0xe9,0x60,0x00]
621 @ CHECK: ldmdb  r5!, {r3, r8}           @ encoding: [0x35,0xe9,0x08,0x01]
622
623
624 @------------------------------------------------------------------------------
625 @ LDR(immediate)
626 @------------------------------------------------------------------------------
627         ldr r5, [r5, #-4]
628         ldr r5, [r6, #32]
629         ldr r5, [r6, #33]
630         ldr r5, [r6, #257]
631         ldr.w pc, [r7, #257]
632         ldr r2, [r4, #255]!
633         ldr r8, [sp, #4]!
634         ldr lr, [sp, #-4]!
635         ldr r2, [r4], #255
636         ldr r8, [sp], #4
637         ldr lr, [sp], #-4
638
639 @ CHECK: ldr    r5, [r5, #-4]           @ encoding: [0x55,0xf8,0x04,0x5c]
640 @ CHECK: ldr    r5, [r6, #32]           @ encoding: [0x35,0x6a]
641 @ CHECK: ldr.w  r5, [r6, #33]           @ encoding: [0xd6,0xf8,0x21,0x50]
642 @ CHECK: ldr.w  r5, [r6, #257]          @ encoding: [0xd6,0xf8,0x01,0x51]
643 @ CHECK: ldr.w  pc, [r7, #257]          @ encoding: [0xd7,0xf8,0x01,0xf1]
644 @ CHECK: ldr    r2, [r4, #255]!         @ encoding: [0x54,0xf8,0xff,0x2f]
645 @ CHECK: ldr    r8, [sp, #4]!           @ encoding: [0x5d,0xf8,0x04,0x8f]
646 @ CHECK: ldr    lr, [sp, #-4]!          @ encoding: [0x5d,0xf8,0x04,0xed]
647 @ CHECK: ldr    r2, [r4], #255          @ encoding: [0x54,0xf8,0xff,0x2b]
648 @ CHECK: ldr    r8, [sp], #4            @ encoding: [0x5d,0xf8,0x04,0x8b]
649 @ CHECK: ldr    lr, [sp], #-4           @ encoding: [0x5d,0xf8,0x04,0xe9]
650
651
652 @------------------------------------------------------------------------------
653 @ LDR(literal)
654 @------------------------------------------------------------------------------
655         ldr.w r5, _foo
656         ldr   lr, (_strcmp-4)
657
658 @ CHECK: ldr.w  r5, _foo                @ encoding: [0x5f'A',0xf8'A',A,0x50'A']
659 @ CHECK: @   fixup A - offset: 0, value: _foo, kind: fixup_t2_ldst_pcrel_12
660 @ CHECK: ldr.w  lr, _strcmp-4           @ encoding: [0x5f'A',0xf8'A',A,0xe0'A']
661 @ CHECK: @   fixup A - offset: 0, value: _strcmp-4, kind: fixup_t2_ldst_pcrel_12
662
663
664 @------------------------------------------------------------------------------
665 @ LDR(register)
666 @------------------------------------------------------------------------------
667         ldr r1, [r8, r1]
668         ldr.w r4, [r5, r2]
669         ldr r6, [r0, r2, lsl #3]
670         ldr r8, [r8, r2, lsl #2]
671         ldr r7, [sp, r2, lsl #1]
672         ldr r7, [sp, r2, lsl #0]
673
674 @ CHECK: ldr.w  r1, [r8, r1]            @ encoding: [0x58,0xf8,0x01,0x10]
675 @ CHECK: ldr.w  r4, [r5, r2]            @ encoding: [0x55,0xf8,0x02,0x40]
676 @ CHECK: ldr.w  r6, [r0, r2, lsl #3]    @ encoding: [0x50,0xf8,0x32,0x60]
677 @ CHECK: ldr.w  r8, [r8, r2, lsl #2]    @ encoding: [0x58,0xf8,0x22,0x80]
678 @ CHECK: ldr.w  r7, [sp, r2, lsl #1]    @ encoding: [0x5d,0xf8,0x12,0x70]
679 @ CHECK: ldr.w  r7, [sp, r2]            @ encoding: [0x5d,0xf8,0x02,0x70]
680
681
682 @------------------------------------------------------------------------------
683 @ LDRB(immediate)
684 @------------------------------------------------------------------------------
685         ldrb r5, [r5, #-4]
686         ldrb r5, [r6, #32]
687         ldrb r5, [r6, #33]
688         ldrb r5, [r6, #257]
689         ldrb.w lr, [r7, #257]
690         ldrb r5, [r8, #255]!
691         ldrb r2, [r5, #4]!
692         ldrb r1, [r4, #-4]!
693         ldrb lr, [r3], #255
694         ldrb r9, [r2], #4
695         ldrb r3, [sp], #-4
696
697 @ CHECK: ldrb   r5, [r5, #-4]           @ encoding: [0x15,0xf8,0x04,0x5c]
698 @ CHECK: ldrb.w r5, [r6, #32]           @ encoding: [0x96,0xf8,0x20,0x50]
699 @ CHECK: ldrb.w r5, [r6, #33]           @ encoding: [0x96,0xf8,0x21,0x50]
700 @ CHECK: ldrb.w r5, [r6, #257]          @ encoding: [0x96,0xf8,0x01,0x51]
701 @ CHECK: ldrb.w lr, [r7, #257]          @ encoding: [0x97,0xf8,0x01,0xe1]
702 @ CHECK: ldrb   r5, [r8, #255]!         @ encoding: [0x18,0xf8,0xff,0x5f]
703 @ CHECK: ldrb   r2, [r5, #4]!           @ encoding: [0x15,0xf8,0x04,0x2f]
704 @ CHECK: ldrb   r1, [r4, #-4]!          @ encoding: [0x14,0xf8,0x04,0x1d]
705 @ CHECK: ldrb   lr, [r3], #255          @ encoding: [0x13,0xf8,0xff,0xeb]
706 @ CHECK: ldrb   r9, [r2], #4            @ encoding: [0x12,0xf8,0x04,0x9b]
707 @ CHECK: ldrb   r3, [sp], #-4           @ encoding: [0x1d,0xf8,0x04,0x39]
708
709
710 @------------------------------------------------------------------------------
711 @ LDRB(register)
712 @------------------------------------------------------------------------------
713         ldrb r1, [r8, r1]
714         ldrb.w r4, [r5, r2]
715         ldrb r6, [r0, r2, lsl #3]
716         ldrb r8, [r8, r2, lsl #2]
717         ldrb r7, [sp, r2, lsl #1]
718         ldrb r7, [sp, r2, lsl #0]
719
720 @ CHECK: ldrb.w r1, [r8, r1]            @ encoding: [0x18,0xf8,0x01,0x10]
721 @ CHECK: ldrb.w r4, [r5, r2]            @ encoding: [0x15,0xf8,0x02,0x40]
722 @ CHECK: ldrb.w r6, [r0, r2, lsl #3]    @ encoding: [0x10,0xf8,0x32,0x60]
723 @ CHECK: ldrb.w r8, [r8, r2, lsl #2]    @ encoding: [0x18,0xf8,0x22,0x80]
724 @ CHECK: ldrb.w r7, [sp, r2, lsl #1]    @ encoding: [0x1d,0xf8,0x12,0x70]
725 @ CHECK: ldrb.w r7, [sp, r2]            @ encoding: [0x1d,0xf8,0x02,0x70]
726
727
728 @------------------------------------------------------------------------------
729 @ LDRBT
730 @------------------------------------------------------------------------------
731         ldrbt r1, [r2]
732         ldrbt r1, [r8, #0]
733         ldrbt r1, [r8, #3]
734         ldrbt r1, [r8, #255]
735
736 @ CHECK: ldrbt  r1, [r2]                @ encoding: [0x12,0xf8,0x00,0x1e]
737 @ CHECK: ldrbt  r1, [r8]                @ encoding: [0x18,0xf8,0x00,0x1e]
738 @ CHECK: ldrbt  r1, [r8, #3]            @ encoding: [0x18,0xf8,0x03,0x1e]
739 @ CHECK: ldrbt  r1, [r8, #255]          @ encoding: [0x18,0xf8,0xff,0x1e]
740
741
742 @------------------------------------------------------------------------------
743 @ LDRD
744 @------------------------------------------------------------------------------
745         ldrd r3, r5, [r6, #24]
746         ldrd r3, r5, [r6, #24]!
747         ldrd r3, r5, [r6], #4
748         ldrd r3, r5, [r6], #-8
749         ldrd r3, r5, [r6]
750         ldrd r8, r1, [r3, #0]
751
752 @ CHECK: ldrd   r3, r5, [r6, #24]       @ encoding: [0xd6,0xe9,0x06,0x35]
753 @ CHECK: ldrd   r3, r5, [r6, #24]!      @ encoding: [0xf6,0xe9,0x06,0x35]
754 @ CHECK: ldrd   r3, r5, [r6], #4        @ encoding: [0xf6,0xe8,0x01,0x35]
755 @ CHECK: ldrd   r3, r5, [r6], #-8       @ encoding: [0x76,0xe8,0x02,0x35]
756 @ CHECK: ldrd   r3, r5, [r6]            @ encoding: [0xd6,0xe9,0x00,0x35]
757 @ CHECK: ldrd   r8, r1, [r3]            @ encoding: [0xd3,0xe9,0x00,0x81]
758
759
760 @------------------------------------------------------------------------------
761 @ FIXME: LDRD(literal)
762 @------------------------------------------------------------------------------
763
764
765 @------------------------------------------------------------------------------
766 @ LDREX/LDREXB/LDREXH/LDREXD
767 @------------------------------------------------------------------------------
768         ldrex r1, [r4]
769         ldrex r8, [r4, #0]
770         ldrex r2, [sp, #128]
771         ldrexb r5, [r7]
772         ldrexh r9, [r12]
773         ldrexd r9, r3, [r4]
774
775 @ CHECK: ldrex  r1, [r4]                @ encoding: [0x54,0xe8,0x00,0x1f]
776 @ CHECK: ldrex  r8, [r4]                @ encoding: [0x54,0xe8,0x00,0x8f]
777 @ CHECK: ldrex  r2, [sp, #128]          @ encoding: [0x5d,0xe8,0x20,0x2f]
778 @ CHECK: ldrexb r5, [r7]                @ encoding: [0xd7,0xe8,0x4f,0x5f]
779 @ CHECK: ldrexh r9, [r12]               @ encoding: [0xdc,0xe8,0x5f,0x9f]
780 @ CHECK: ldrexd r9, r3, [r4]            @ encoding: [0xd4,0xe8,0x7f,0x93]
781
782
783 @------------------------------------------------------------------------------
784 @ LDRH(immediate)
785 @------------------------------------------------------------------------------
786         ldrh r5, [r5, #-4]
787         ldrh r5, [r6, #32]
788         ldrh r5, [r6, #33]
789         ldrh r5, [r6, #257]
790         ldrh.w lr, [r7, #257]
791         ldrh r5, [r8, #255]!
792         ldrh r2, [r5, #4]!
793         ldrh r1, [r4, #-4]!
794         ldrh lr, [r3], #255
795         ldrh r9, [r2], #4
796         ldrh r3, [sp], #-4
797
798 @ CHECK: ldrh   r5, [r5, #-4]           @ encoding: [0x35,0xf8,0x04,0x5c]
799 @ CHECK: ldrh   r5, [r6, #32]           @ encoding: [0x35,0x8c]
800 @ CHECK: ldrh.w r5, [r6, #33]           @ encoding: [0xb6,0xf8,0x21,0x50]
801 @ CHECK: ldrh.w r5, [r6, #257]          @ encoding: [0xb6,0xf8,0x01,0x51]
802 @ CHECK: ldrh.w lr, [r7, #257]          @ encoding: [0xb7,0xf8,0x01,0xe1]
803 @ CHECK: ldrh   r5, [r8, #255]!         @ encoding: [0x38,0xf8,0xff,0x5f]
804 @ CHECK: ldrh   r2, [r5, #4]!           @ encoding: [0x35,0xf8,0x04,0x2f]
805 @ CHECK: ldrh   r1, [r4, #-4]!          @ encoding: [0x34,0xf8,0x04,0x1d]
806 @ CHECK: ldrh   lr, [r3], #255          @ encoding: [0x33,0xf8,0xff,0xeb]
807 @ CHECK: ldrh   r9, [r2], #4            @ encoding: [0x32,0xf8,0x04,0x9b]
808 @ CHECK: ldrh   r3, [sp], #-4           @ encoding: [0x3d,0xf8,0x04,0x39]
809
810
811 @------------------------------------------------------------------------------
812 @ LDRH(register)
813 @------------------------------------------------------------------------------
814         ldrh r1, [r8, r1]
815         ldrh.w r4, [r5, r2]
816         ldrh r6, [r0, r2, lsl #3]
817         ldrh r8, [r8, r2, lsl #2]
818         ldrh r7, [sp, r2, lsl #1]
819         ldrh r7, [sp, r2, lsl #0]
820
821 @ CHECK: ldrh.w r1, [r8, r1]            @ encoding: [0x38,0xf8,0x01,0x10]
822 @ CHECK: ldrh.w r4, [r5, r2]            @ encoding: [0x35,0xf8,0x02,0x40]
823 @ CHECK: ldrh.w r6, [r0, r2, lsl #3]    @ encoding: [0x30,0xf8,0x32,0x60]
824 @ CHECK: ldrh.w r8, [r8, r2, lsl #2]    @ encoding: [0x38,0xf8,0x22,0x80]
825 @ CHECK: ldrh.w r7, [sp, r2, lsl #1]    @ encoding: [0x3d,0xf8,0x12,0x70]
826 @ CHECK: ldrh.w r7, [sp, r2]            @ encoding: [0x3d,0xf8,0x02,0x70]
827
828
829 @------------------------------------------------------------------------------
830 @ LDRH(literal)
831 @------------------------------------------------------------------------------
832         ldrh r5, _bar
833
834 @ CHECK: ldrh.w r5, _bar                @ encoding: [0x3f'A',0xf8'A',A,0x50'A']
835 @ CHECK:     @   fixup A - offset: 0, value: _bar, kind: fixup_t2_ldst_pcrel_12
836
837
838 @------------------------------------------------------------------------------
839 @ LDRHT
840 @------------------------------------------------------------------------------
841         ldrht r1, [r2]
842         ldrht r1, [r8, #0]
843         ldrht r1, [r8, #3]
844         ldrht r1, [r8, #255]
845
846 @ CHECK: ldrht  r1, [r2]                @ encoding: [0x32,0xf8,0x00,0x1e]
847 @ CHECK: ldrht  r1, [r8]                @ encoding: [0x38,0xf8,0x00,0x1e]
848 @ CHECK: ldrht  r1, [r8, #3]            @ encoding: [0x38,0xf8,0x03,0x1e]
849 @ CHECK: ldrht  r1, [r8, #255]          @ encoding: [0x38,0xf8,0xff,0x1e]
850
851
852 @------------------------------------------------------------------------------
853 @ LDRSB(immediate)
854 @------------------------------------------------------------------------------
855         ldrsb r5, [r5, #-4]
856         ldrsb r5, [r6, #32]
857         ldrsb r5, [r6, #33]
858         ldrsb r5, [r6, #257]
859         ldrsb.w lr, [r7, #257]
860
861 @ CHECK: ldrsb  r5, [r5, #-4]            @ encoding: [0x15,0xf9,0x04,0x5c]
862 @ CHECK: ldrsb.w r5, [r6, #32]           @ encoding: [0x96,0xf9,0x20,0x50]
863 @ CHECK: ldrsb.w r5, [r6, #33]           @ encoding: [0x96,0xf9,0x21,0x50]
864 @ CHECK: ldrsb.w r5, [r6, #257]          @ encoding: [0x96,0xf9,0x01,0x51]
865 @ CHECK: ldrsb.w lr, [r7, #257]          @ encoding: [0x97,0xf9,0x01,0xe1]
866
867
868 @------------------------------------------------------------------------------
869 @ LDRSB(register)
870 @------------------------------------------------------------------------------
871         ldrsb r1, [r8, r1]
872         ldrsb.w r4, [r5, r2]
873         ldrsb r6, [r0, r2, lsl #3]
874         ldrsb r8, [r8, r2, lsl #2]
875         ldrsb r7, [sp, r2, lsl #1]
876         ldrsb r7, [sp, r2, lsl #0]
877         ldrsb r5, [r8, #255]!
878         ldrsb r2, [r5, #4]!
879         ldrsb r1, [r4, #-4]!
880         ldrsb lr, [r3], #255
881         ldrsb r9, [r2], #4
882         ldrsb r3, [sp], #-4
883
884 @ CHECK: ldrsb.w r1, [r8, r1]           @ encoding: [0x18,0xf9,0x01,0x10]
885 @ CHECK: ldrsb.w r4, [r5, r2]           @ encoding: [0x15,0xf9,0x02,0x40]
886 @ CHECK: ldrsb.w r6, [r0, r2, lsl #3]   @ encoding: [0x10,0xf9,0x32,0x60]
887 @ CHECK: ldrsb.w r8, [r8, r2, lsl #2]   @ encoding: [0x18,0xf9,0x22,0x80]
888 @ CHECK: ldrsb.w r7, [sp, r2, lsl #1]   @ encoding: [0x1d,0xf9,0x12,0x70]
889 @ CHECK: ldrsb.w r7, [sp, r2]           @ encoding: [0x1d,0xf9,0x02,0x70]
890 @ CHECK: ldrsb  r5, [r8, #255]!         @ encoding: [0x18,0xf9,0xff,0x5f]
891 @ CHECK: ldrsb  r2, [r5, #4]!           @ encoding: [0x15,0xf9,0x04,0x2f]
892 @ CHECK: ldrsb  r1, [r4, #-4]!          @ encoding: [0x14,0xf9,0x04,0x1d]
893 @ CHECK: ldrsb  lr, [r3], #255          @ encoding: [0x13,0xf9,0xff,0xeb]
894 @ CHECK: ldrsb  r9, [r2], #4            @ encoding: [0x12,0xf9,0x04,0x9b]
895 @ CHECK: ldrsb  r3, [sp], #-4           @ encoding: [0x1d,0xf9,0x04,0x39]
896
897
898 @------------------------------------------------------------------------------
899 @ LDRSB(literal)
900 @------------------------------------------------------------------------------
901         ldrsb r5, _bar
902
903 @ CHECK: ldrsb.w r5, _bar               @ encoding: [0x1f'A',0xf9'A',A,0x50'A']
904 @ CHECK:      @   fixup A - offset: 0, value: _bar, kind: fixup_t2_ldst_pcrel_12
905
906
907 @------------------------------------------------------------------------------
908 @ LDRSBT
909 @------------------------------------------------------------------------------
910         ldrsbt r1, [r2]
911         ldrsbt r1, [r8, #0]
912         ldrsbt r1, [r8, #3]
913         ldrsbt r1, [r8, #255]
914
915 @ CHECK: ldrsbt r1, [r2]                @ encoding: [0x12,0xf9,0x00,0x1e]
916 @ CHECK: ldrsbt r1, [r8]                @ encoding: [0x18,0xf9,0x00,0x1e]
917 @ CHECK: ldrsbt r1, [r8, #3]            @ encoding: [0x18,0xf9,0x03,0x1e]
918 @ CHECK: ldrsbt r1, [r8, #255]          @ encoding: [0x18,0xf9,0xff,0x1e]
919
920
921 @------------------------------------------------------------------------------
922 @ LDRSH(immediate)
923 @------------------------------------------------------------------------------
924         ldrsh r5, [r5, #-4]
925         ldrsh r5, [r6, #32]
926         ldrsh r5, [r6, #33]
927         ldrsh r5, [r6, #257]
928         ldrsh.w lr, [r7, #257]
929
930 @ CHECK: ldrsh  r5, [r5, #-4]           @ encoding: [0x35,0xf9,0x04,0x5c]
931 @ CHECK: ldrsh.w r5, [r6, #32]          @ encoding: [0xb6,0xf9,0x20,0x50]
932 @ CHECK: ldrsh.w r5, [r6, #33]          @ encoding: [0xb6,0xf9,0x21,0x50]
933 @ CHECK: ldrsh.w r5, [r6, #257]         @ encoding: [0xb6,0xf9,0x01,0x51]
934 @ CHECK: ldrsh.w lr, [r7, #257]         @ encoding: [0xb7,0xf9,0x01,0xe1]
935
936
937 @------------------------------------------------------------------------------
938 @ LDRSH(register)
939 @------------------------------------------------------------------------------
940         ldrsh r1, [r8, r1]
941         ldrsh.w r4, [r5, r2]
942         ldrsh r6, [r0, r2, lsl #3]
943         ldrsh r8, [r8, r2, lsl #2]
944         ldrsh r7, [sp, r2, lsl #1]
945         ldrsh r7, [sp, r2, lsl #0]
946         ldrsh r5, [r8, #255]!
947         ldrsh r2, [r5, #4]!
948         ldrsh r1, [r4, #-4]!
949         ldrsh lr, [r3], #255
950         ldrsh r9, [r2], #4
951         ldrsh r3, [sp], #-4
952
953 @ CHECK: ldrsh.w r1, [r8, r1]           @ encoding: [0x38,0xf9,0x01,0x10]
954 @ CHECK: ldrsh.w r4, [r5, r2]           @ encoding: [0x35,0xf9,0x02,0x40]
955 @ CHECK: ldrsh.w r6, [r0, r2, lsl #3]   @ encoding: [0x30,0xf9,0x32,0x60]
956 @ CHECK: ldrsh.w r8, [r8, r2, lsl #2]   @ encoding: [0x38,0xf9,0x22,0x80]
957 @ CHECK: ldrsh.w r7, [sp, r2, lsl #1]   @ encoding: [0x3d,0xf9,0x12,0x70]
958 @ CHECK: ldrsh.w r7, [sp, r2]           @ encoding: [0x3d,0xf9,0x02,0x70]
959 @ CHECK: ldrsh  r5, [r8, #255]!         @ encoding: [0x38,0xf9,0xff,0x5f]
960 @ CHECK: ldrsh  r2, [r5, #4]!           @ encoding: [0x35,0xf9,0x04,0x2f]
961 @ CHECK: ldrsh  r1, [r4, #-4]!          @ encoding: [0x34,0xf9,0x04,0x1d]
962 @ CHECK: ldrsh  lr, [r3], #255          @ encoding: [0x33,0xf9,0xff,0xeb]
963 @ CHECK: ldrsh  r9, [r2], #4            @ encoding: [0x32,0xf9,0x04,0x9b]
964 @ CHECK: ldrsh  r3, [sp], #-4           @ encoding: [0x3d,0xf9,0x04,0x39]
965
966
967 @------------------------------------------------------------------------------
968 @ LDRSH(literal)
969 @------------------------------------------------------------------------------
970         ldrsh r5, _bar
971
972 @ CHECK: ldrsh.w r5, _bar               @ encoding: [0x3f'A',0xf9'A',A,0x50'A']
973 @ CHECK:      @   fixup A - offset: 0, value: _bar, kind: fixup_t2_ldst_pcrel_12
974
975 @ TEMPORARILY DISABLED:
976 @        ldrsh.w r4, [pc, #1435]
977 @      : ldrsh.w r4, [pc, #1435]               @ encoding: [0x3f,0xf9,0x9b,0x45]
978
979 @------------------------------------------------------------------------------
980 @ LDRSHT
981 @------------------------------------------------------------------------------
982         ldrsht r1, [r2]
983         ldrsht r1, [r8, #0]
984         ldrsht r1, [r8, #3]
985         ldrsht r1, [r8, #255]
986
987 @ CHECK: ldrsht r1, [r2]                @ encoding: [0x32,0xf9,0x00,0x1e]
988 @ CHECK: ldrsht r1, [r8]                @ encoding: [0x38,0xf9,0x00,0x1e]
989 @ CHECK: ldrsht r1, [r8, #3]            @ encoding: [0x38,0xf9,0x03,0x1e]
990 @ CHECK: ldrsht r1, [r8, #255]          @ encoding: [0x38,0xf9,0xff,0x1e]
991
992
993 @------------------------------------------------------------------------------
994 @ LDRT
995 @------------------------------------------------------------------------------
996         ldrt r1, [r2]
997         ldrt r2, [r6, #0]
998         ldrt r3, [r7, #3]
999         ldrt r4, [r9, #255]
1000
1001 @ CHECK: ldrt   r1, [r2]                @ encoding: [0x52,0xf8,0x00,0x1e]
1002 @ CHECK: ldrt   r2, [r6]                @ encoding: [0x56,0xf8,0x00,0x2e]
1003 @ CHECK: ldrt   r3, [r7, #3]            @ encoding: [0x57,0xf8,0x03,0x3e]
1004 @ CHECK: ldrt   r4, [r9, #255]          @ encoding: [0x59,0xf8,0xff,0x4e]
1005
1006
1007 @------------------------------------------------------------------------------
1008 @ LSL (immediate)
1009 @------------------------------------------------------------------------------
1010         lsl r2, r3, #12
1011         lsls r8, r3, #31
1012         lsls.w r2, r3, #1
1013         lsl r2, r3, #4
1014         lsls r2, r12, #15
1015
1016         lsl r3, #19
1017         lsls r8, #2
1018         lsls.w r7, #5
1019         lsl.w r12, #21
1020
1021 @ CHECK: lsl.w  r2, r3, #12             @ encoding: [0x4f,0xea,0x03,0x32]
1022 @ CHECK: lsls.w r8, r3, #31             @ encoding: [0x5f,0xea,0xc3,0x78]
1023 @ CHECK: lsls.w r2, r3, #1              @ encoding: [0x5f,0xea,0x43,0x02]
1024 @ CHECK: lsl.w  r2, r3, #4              @ encoding: [0x4f,0xea,0x03,0x12]
1025 @ CHECK: lsls.w r2, r12, #15            @ encoding: [0x5f,0xea,0xcc,0x32]
1026
1027 @ CHECK: lsl.w  r3, r3, #19             @ encoding: [0x4f,0xea,0xc3,0x43]
1028 @ CHECK: lsls.w r8, r8, #2              @ encoding: [0x5f,0xea,0x88,0x08]
1029 @ CHECK: lsls.w r7, r7, #5              @ encoding: [0x5f,0xea,0x47,0x17]
1030 @ CHECK: lsl.w  r12, r12, #21           @ encoding: [0x4f,0xea,0x4c,0x5c]
1031
1032
1033 @------------------------------------------------------------------------------
1034 @ LSL (register)
1035 @------------------------------------------------------------------------------
1036         lsl r3, r4, r2
1037         lsl.w r1, r2
1038         lsls r3, r4, r8
1039
1040 @ CHECK: lsl.w  r3, r4, r2              @ encoding: [0x04,0xfa,0x02,0xf3]
1041 @ CHECK: lsl.w  r1, r1, r2              @ encoding: [0x01,0xfa,0x02,0xf1]
1042 @ CHECK: lsls.w r3, r4, r8              @ encoding: [0x14,0xfa,0x08,0xf3]
1043
1044
1045 @------------------------------------------------------------------------------
1046 @ LSR (immediate)
1047 @------------------------------------------------------------------------------
1048         lsr r2, r3, #12
1049         lsrs r8, r3, #32
1050         lsrs.w r2, r3, #1
1051         lsr r2, r3, #4
1052         lsrs r2, r12, #15
1053
1054         lsr r3, #19
1055         lsrs r8, #2
1056         lsrs.w r7, #5
1057         lsr.w r12, #21
1058
1059 @ CHECK: lsr.w  r2, r3, #12             @ encoding: [0x4f,0xea,0x13,0x32]
1060 @ CHECK: lsrs.w r8, r3, #32             @ encoding: [0x5f,0xea,0x13,0x08]
1061 @ CHECK: lsrs.w r2, r3, #1              @ encoding: [0x5f,0xea,0x53,0x02]
1062 @ CHECK: lsr.w  r2, r3, #4              @ encoding: [0x4f,0xea,0x13,0x12]
1063 @ CHECK: lsrs.w r2, r12, #15            @ encoding: [0x5f,0xea,0xdc,0x32]
1064
1065 @ CHECK: lsr.w  r3, r3, #19             @ encoding: [0x4f,0xea,0xd3,0x43]
1066 @ CHECK: lsrs.w r8, r8, #2              @ encoding: [0x5f,0xea,0x98,0x08]
1067 @ CHECK: lsrs.w r7, r7, #5              @ encoding: [0x5f,0xea,0x57,0x17]
1068 @ CHECK: lsr.w  r12, r12, #21           @ encoding: [0x4f,0xea,0x5c,0x5c]
1069
1070
1071 @------------------------------------------------------------------------------
1072 @ LSR (register)
1073 @------------------------------------------------------------------------------
1074         lsr r3, r4, r2
1075         lsr.w r1, r2
1076         lsrs r3, r4, r8
1077
1078 @ CHECK: lsr.w  r3, r4, r2              @ encoding: [0x24,0xfa,0x02,0xf3]
1079 @ CHECK: lsr.w  r1, r1, r2              @ encoding: [0x21,0xfa,0x02,0xf1]
1080 @ CHECK: lsrs.w r3, r4, r8              @ encoding: [0x34,0xfa,0x08,0xf3]
1081
1082 @------------------------------------------------------------------------------
1083 @ MCR/MCR2
1084 @------------------------------------------------------------------------------
1085         mcr  p7, #1, r5, c1, c1, #4
1086         mcr2  p7, #1, r5, c1, c1, #4
1087         mcr p14, #0, r4, c0, c5
1088         mcr2 p4, #2, r2, c1, c3
1089
1090 @ CHECK: mcr    p7, #1, r5, c1, c1, #4  @ encoding: [0x21,0xee,0x91,0x57]
1091 @ CHECK: mcr2   p7, #1, r5, c1, c1, #4  @ encoding: [0x21,0xfe,0x91,0x57]
1092 @ CHECK: mcr    p14, #0, r4, c0, c5, #0 @ encoding: [0x00,0xee,0x15,0x4e]
1093 @ CHECK: mcr2   p4, #2, r2, c1, c3, #0  @ encoding: [0x41,0xfe,0x13,0x24]
1094
1095
1096 @------------------------------------------------------------------------------
1097 @ MCRR/MCRR2
1098 @------------------------------------------------------------------------------
1099         mcrr  p7, #15, r5, r4, c1
1100         mcrr2  p7, #15, r5, r4, c1
1101
1102 @ CHECK: mcrr   p7, #15, r5, r4, c1     @ encoding: [0x44,0xec,0xf1,0x57]
1103 @ CHECK: mcrr2  p7, #15, r5, r4, c1     @ encoding: [0x44,0xfc,0xf1,0x57]
1104
1105
1106 @------------------------------------------------------------------------------
1107 @ MLA/MLS
1108 @------------------------------------------------------------------------------
1109         mla  r1,r2,r3,r4
1110         mls  r1,r2,r3,r4
1111
1112 @ CHECK: mla    r1, r2, r3, r4          @ encoding: [0x02,0xfb,0x03,0x41]
1113 @ CHECK: mls    r1, r2, r3, r4          @ encoding: [0x02,0xfb,0x13,0x41]
1114
1115
1116 @------------------------------------------------------------------------------
1117 @ MOV(immediate)
1118 @------------------------------------------------------------------------------
1119         movs r1, #21
1120         movs.w r1, #21
1121         movs r8, #21
1122         movw r0, #65535
1123         movw r1, #43777
1124         movw r1, #43792
1125         mov.w r0, #0x3fc0000
1126         mov r0, #0x3fc0000
1127         movs.w r0, #0x3fc0000
1128         itte eq
1129         movseq r1, #12
1130         moveq r1, #12
1131         movne.w r1, #12
1132         mov.w r6, #450
1133
1134         @ alias for mvn
1135         mov r3, #-3
1136
1137
1138 @ CHECK: movs   r1, #21                 @ encoding: [0x15,0x21]
1139 @ CHECK: movs.w r1, #21                 @ encoding: [0x5f,0xf0,0x15,0x01]
1140 @ CHECK: movs.w r8, #21                 @ encoding: [0x5f,0xf0,0x15,0x08]
1141 @ CHECK: movw   r0, #65535              @ encoding: [0x4f,0xf6,0xff,0x70]
1142 @ CHECK: movw   r1, #43777              @ encoding: [0x4a,0xf6,0x01,0x31]
1143 @ CHECK: movw   r1, #43792              @ encoding: [0x4a,0xf6,0x10,0x31]
1144 @ CHECK: mov.w  r0, #66846720           @ encoding: [0x4f,0xf0,0x7f,0x70]
1145 @ CHECK: mov.w  r0, #66846720           @ encoding: [0x4f,0xf0,0x7f,0x70]
1146 @ CHECK: movs.w r0, #66846720           @ encoding: [0x5f,0xf0,0x7f,0x70]
1147 @ CHECK: itte   eq                      @ encoding: [0x06,0xbf]
1148 @ CHECK: movseq.w       r1, #12         @ encoding: [0x5f,0xf0,0x0c,0x01]
1149 @ CHECK: moveq  r1, #12                 @ encoding: [0x0c,0x21]
1150 @ CHECK: movne.w r1, #12                @ encoding: [0x4f,0xf0,0x0c,0x01]
1151 @ CHECK: mov.w  r6, #450                @ encoding: [0x4f,0xf4,0xe1,0x76]
1152
1153 @ CHECK: mvn    r3, #2                  @ encoding: [0x6f,0xf0,0x02,0x03]
1154
1155 @------------------------------------------------------------------------------
1156 @ MOV(shifted register)
1157 @------------------------------------------------------------------------------
1158         mov r6, r2, lsl #16
1159         mov r6, r2, lsr #16
1160         movs r6, r2, asr #32
1161         movs r6, r2, ror #5
1162         movs r4, r4, lsl r5
1163         movs r4, r4, lsr r5
1164         movs r4, r4, asr r5
1165         movs r4, r4, ror r5
1166         mov r4, r4, lsl r5
1167         movs r4, r4, ror r8
1168         movs r4, r5, lsr r6
1169         itttt eq
1170         moveq r4, r4, lsl r5
1171         moveq r4, r4, lsr r5
1172         moveq r4, r4, asr r5
1173         moveq r4, r4, ror r5
1174         mov r4, r4, rrx
1175
1176 @ CHECK: lsl.w  r6, r2, #16             @ encoding: [0x4f,0xea,0x02,0x46]
1177 @ CHECK: lsr.w  r6, r2, #16             @ encoding: [0x4f,0xea,0x12,0x46]
1178 @ CHECK: asrs   r6, r2, #32             @ encoding: [0x16,0x10]
1179 @ CHECK: rors.w r6, r2, #5              @ encoding: [0x5f,0xea,0x72,0x16]
1180 @ CHECK: lsls   r4, r5                  @ encoding: [0xac,0x40]
1181 @ CHECK: lsrs   r4, r5                  @ encoding: [0xec,0x40]
1182 @ CHECK: asrs   r4, r5                  @ encoding: [0x2c,0x41]
1183 @ CHECK: rors   r4, r5                  @ encoding: [0xec,0x41]
1184 @ CHECK: lsl.w  r4, r4, r5              @ encoding: [0x04,0xfa,0x05,0xf4]
1185 @ CHECK: rors.w r4, r4, r8              @ encoding: [0x74,0xfa,0x08,0xf4]
1186 @ CHECK: lsrs.w r4, r5, r6              @ encoding: [0x35,0xfa,0x06,0xf4]
1187 @ CHECK: itttt  eq                      @ encoding: [0x01,0xbf]
1188 @ CHECK: lsleq  r4, r5                  @ encoding: [0xac,0x40]
1189 @ CHECK: lsreq  r4, r5                  @ encoding: [0xec,0x40]
1190 @ CHECK: asreq  r4, r5                  @ encoding: [0x2c,0x41]
1191 @ CHECK: roreq  r4, r5                  @ encoding: [0xec,0x41]
1192 @ CHECK: rrx    r4, r4                  @ encoding: [0x4f,0xea,0x34,0x04]
1193
1194
1195 @------------------------------------------------------------------------------
1196 @ MOVT
1197 @------------------------------------------------------------------------------
1198         movt r3, #7
1199         movt r6, #0xffff
1200         it eq
1201         movteq r4, #0xff0
1202
1203 @ CHECK: movt   r3, #7                  @ encoding: [0xc0,0xf2,0x07,0x03]
1204 @ CHECK: movt   r6, #65535              @ encoding: [0xcf,0xf6,0xff,0x76]
1205 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1206 @ CHECK: movteq r4, #4080               @ encoding: [0xc0,0xf6,0xf0,0x74]
1207
1208 @------------------------------------------------------------------------------
1209 @ MRC/MRC2
1210 @------------------------------------------------------------------------------
1211         mrc  p14, #0, r1, c1, c2, #4
1212         mrc2  p14, #0, r1, c1, c2, #4
1213         mrc p11, #1, r1, c2, c2
1214         mrc2 p12, #3, r3, c3, c4
1215
1216 @ CHECK: mrc    p14, #0, r1, c1, c2, #4 @ encoding: [0x11,0xee,0x92,0x1e]
1217 @ CHECK: mrc2   p14, #0, r1, c1, c2, #4 @ encoding: [0x11,0xfe,0x92,0x1e]
1218 @ CHECK: mrc    p11, #1, r1, c2, c2, #0 @ encoding: [0x32,0xee,0x12,0x1b]
1219 @ CHECK: mrc2   p12, #3, r3, c3, c4, #0 @ encoding: [0x73,0xfe,0x14,0x3c]
1220
1221
1222 @------------------------------------------------------------------------------
1223 @ MRRC/MRRC2
1224 @------------------------------------------------------------------------------
1225         mrrc  p7, #1, r5, r4, c1
1226         mrrc2  p7, #1, r5, r4, c1
1227
1228 @ CHECK: mrrc   p7, #1, r5, r4, c1      @ encoding: [0x54,0xec,0x11,0x57]
1229 @ CHECK: mrrc2  p7, #1, r5, r4, c1      @ encoding: [0x54,0xfc,0x11,0x57]
1230
1231
1232 @------------------------------------------------------------------------------
1233 @ MRS
1234 @------------------------------------------------------------------------------
1235         mrs  r8, apsr
1236         mrs  r8, cpsr
1237         mrs  r8, spsr
1238
1239 @ CHECK: mrs    r8, apsr                @ encoding: [0xef,0xf3,0x00,0x88]
1240 @ CHECK: mrs    r8, apsr                @ encoding: [0xef,0xf3,0x00,0x88]
1241 @ CHECK: mrs    r8, spsr                @ encoding: [0xff,0xf3,0x00,0x88]
1242
1243
1244 @------------------------------------------------------------------------------
1245 @ MSR
1246 @------------------------------------------------------------------------------
1247         msr  apsr, r1
1248         msr  apsr_g, r2
1249         msr  apsr_nzcvq, r3
1250         msr  APSR_nzcvq, r4
1251         msr  apsr_nzcvqg, r5
1252         msr  cpsr_fc, r6
1253         msr  cpsr_c, r7
1254         msr  cpsr_x, r8
1255         msr  cpsr_fc, r9
1256         msr  cpsr_all, r11
1257         msr  cpsr_fsx, r12
1258         msr  spsr_fc, r0
1259         msr  SPSR_fsxc, r5
1260         msr  cpsr_fsxc, r8
1261
1262 @ CHECK: msr    APSR_nzcvq, r1          @ encoding: [0x81,0xf3,0x00,0x88]
1263 @ CHECK: msr    APSR_g, r2              @ encoding: [0x82,0xf3,0x00,0x84]
1264 @ CHECK: msr    APSR_nzcvq, r3          @ encoding: [0x83,0xf3,0x00,0x88]
1265 @ CHECK: msr    APSR_nzcvq, r4          @ encoding: [0x84,0xf3,0x00,0x88]
1266 @ CHECK: msr    APSR_nzcvqg, r5         @ encoding: [0x85,0xf3,0x00,0x8c]
1267 @ CHECK: msr    CPSR_fc, r6             @ encoding: [0x86,0xf3,0x00,0x89]
1268 @ CHECK: msr    CPSR_c, r7              @ encoding: [0x87,0xf3,0x00,0x81]
1269 @ CHECK: msr    CPSR_x, r8              @ encoding: [0x88,0xf3,0x00,0x82]
1270 @ CHECK: msr    CPSR_fc, r9             @ encoding: [0x89,0xf3,0x00,0x89]
1271 @ CHECK: msr    CPSR_fc, r11            @ encoding: [0x8b,0xf3,0x00,0x89]
1272 @ CHECK: msr    CPSR_fsx, r12           @ encoding: [0x8c,0xf3,0x00,0x8e]
1273 @ CHECK: msr    SPSR_fc, r0             @ encoding: [0x90,0xf3,0x00,0x89]
1274 @ CHECK: msr    SPSR_fsxc, r5           @ encoding: [0x95,0xf3,0x00,0x8f]
1275 @ CHECK: msr    CPSR_fsxc, r8           @ encoding: [0x88,0xf3,0x00,0x8f]
1276
1277
1278 @------------------------------------------------------------------------------
1279 @ MUL
1280 @------------------------------------------------------------------------------
1281         muls r3, r4, r3
1282         mul r3, r4, r3
1283         mul r3, r4, r6
1284         it eq
1285         muleq r3, r4, r5
1286         it le
1287         mulle r4, r4, r8
1288         mul r5, r6
1289
1290 @ CHECK: muls   r3, r4, r3              @ encoding: [0x63,0x43]
1291 @ CHECK: mul    r3, r4, r3              @ encoding: [0x04,0xfb,0x03,0xf3]
1292 @ CHECK: mul    r3, r4, r6              @ encoding: [0x04,0xfb,0x06,0xf3]
1293 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1294 @ CHECK: muleq  r3, r4, r5              @ encoding: [0x04,0xfb,0x05,0xf3]
1295 @ CHECK: it     le                      @ encoding: [0xd8,0xbf]
1296 @ CHECK: mulle  r4, r4, r8              @ encoding: [0x04,0xfb,0x08,0xf4]
1297 @ CHECK: mul    r5, r6, r5              @ encoding: [0x06,0xfb,0x05,0xf5]
1298
1299
1300 @------------------------------------------------------------------------------
1301 @ MVN(immediate)
1302 @------------------------------------------------------------------------------
1303         mvns r8, #21
1304         mvn r0, #0x3fc0000
1305         mvns r0, #0x3fc0000
1306         itte eq
1307         mvnseq r1, #12
1308         mvneq.w r1, #12
1309         mvnne r1, #12
1310
1311 @ CHECK: mvns   r8, #21                 @ encoding: [0x7f,0xf0,0x15,0x08]
1312 @ CHECK: mvn    r0, #66846720           @ encoding: [0x6f,0xf0,0x7f,0x70]
1313 @ CHECK: mvns   r0, #66846720           @ encoding: [0x7f,0xf0,0x7f,0x70]
1314 @ CHECK: itte   eq                      @ encoding: [0x06,0xbf]
1315 @ CHECK: mvnseq r1, #12                 @ encoding: [0x7f,0xf0,0x0c,0x01]
1316 @ CHECK: mvneq  r1, #12                 @ encoding: [0x6f,0xf0,0x0c,0x01]
1317 @ CHECK: mvnne  r1, #12                 @ encoding: [0x6f,0xf0,0x0c,0x01]
1318
1319
1320 @------------------------------------------------------------------------------
1321 @ MVN(register)
1322 @------------------------------------------------------------------------------
1323         mvn r2, r3
1324         mvns r2, r3
1325         mvn r5, r6, lsl #19
1326         mvn r5, r6, lsr #9
1327         mvn.w r5, r6, asr #4
1328         mvn r5, r6, ror #6
1329         mvn r5, r6, rrx
1330         it eq
1331         mvneq r2, r3
1332
1333 @ CHECK: mvn.w  r2, r3                  @ encoding: [0x6f,0xea,0x03,0x02]
1334 @ CHECK: mvns   r2, r3                  @ encoding: [0xda,0x43]
1335 @ CHECK: mvn.w  r5, r6, lsl #19         @ encoding: [0x6f,0xea,0xc6,0x45]
1336 @ CHECK: mvn.w  r5, r6, lsr #9          @ encoding: [0x6f,0xea,0x56,0x25]
1337 @ CHECK: mvn.w  r5, r6, asr #4          @ encoding: [0x6f,0xea,0x26,0x15]
1338 @ CHECK: mvn.w  r5, r6, ror #6          @ encoding: [0x6f,0xea,0xb6,0x15]
1339 @ CHECK: mvn.w  r5, r6, rrx             @ encoding: [0x6f,0xea,0x36,0x05]
1340 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1341 @ CHECK: mvneq  r2, r3                  @ encoding: [0xda,0x43]
1342
1343 @------------------------------------------------------------------------------
1344 @ NEG
1345 @------------------------------------------------------------------------------
1346         neg r5, r2
1347         neg r5, r8
1348
1349 @ CHECK: rsb.w  r5, r2, #0              @ encoding: [0xc2,0xf1,0x00,0x05]
1350 @ CHECK: rsb.w  r5, r8, #0              @ encoding: [0xc8,0xf1,0x00,0x05]
1351
1352
1353 @------------------------------------------------------------------------------
1354 @ NOP
1355 @------------------------------------------------------------------------------
1356         nop.w
1357
1358 @ CHECK: nop.w                          @ encoding: [0xaf,0xf3,0x00,0x80]
1359
1360
1361 @------------------------------------------------------------------------------
1362 @ ORN
1363 @------------------------------------------------------------------------------
1364         orn r4, r5, #0xf000
1365         orn r4, r5, r6
1366         orns r4, r5, r6
1367         orn r4, r5, r6, lsl #5
1368         orns r4, r5, r6, lsr #5
1369         orn r4, r5, r6, lsr #5
1370         orns r4, r5, r6, asr #5
1371         orn r4, r5, r6, ror #5
1372
1373 @ CHECK: orn    r4, r5, #61440          @ encoding: [0x65,0xf4,0x70,0x44]
1374 @ CHECK: orn    r4, r5, r6              @ encoding: [0x65,0xea,0x06,0x04]
1375 @ CHECK: orns   r4, r5, r6              @ encoding: [0x75,0xea,0x06,0x04]
1376 @ CHECK: orn    r4, r5, r6, lsl #5      @ encoding: [0x65,0xea,0x46,0x14]
1377 @ CHECK: orns   r4, r5, r6, lsr #5      @ encoding: [0x75,0xea,0x56,0x14]
1378 @ CHECK: orn    r4, r5, r6, lsr #5      @ encoding: [0x65,0xea,0x56,0x14]
1379 @ CHECK: orns   r4, r5, r6, asr #5      @ encoding: [0x75,0xea,0x66,0x14]
1380 @ CHECK: orn    r4, r5, r6, ror #5      @ encoding: [0x65,0xea,0x76,0x14]
1381
1382
1383 @------------------------------------------------------------------------------
1384 @ ORR
1385 @------------------------------------------------------------------------------
1386         orr r4, r5, #0xf000
1387         orr r4, r5, r6
1388         orr r4, r5, r6, lsl #5
1389         orrs r4, r5, r6, lsr #5
1390         orr r4, r5, r6, lsr #5
1391         orrs r4, r5, r6, asr #5
1392         orr r4, r5, r6, ror #5
1393
1394 @ CHECK: orr    r4, r5, #61440          @ encoding: [0x45,0xf4,0x70,0x44]
1395 @ CHECK: orr.w  r4, r5, r6              @ encoding: [0x45,0xea,0x06,0x04]
1396 @ CHECK: orr.w  r4, r5, r6, lsl #5      @ encoding: [0x45,0xea,0x46,0x14]
1397 @ CHECK: orrs.w r4, r5, r6, lsr #5      @ encoding: [0x55,0xea,0x56,0x14]
1398 @ CHECK: orr.w  r4, r5, r6, lsr #5      @ encoding: [0x45,0xea,0x56,0x14]
1399 @ CHECK: orrs.w r4, r5, r6, asr #5      @ encoding: [0x55,0xea,0x66,0x14]
1400 @ CHECK: orr.w  r4, r5, r6, ror #5      @ encoding: [0x45,0xea,0x76,0x14]
1401
1402
1403 @------------------------------------------------------------------------------
1404 @ PKH
1405 @------------------------------------------------------------------------------
1406         pkhbt r2, r2, r3
1407         pkhbt r2, r2, r3, lsl #31
1408         pkhbt r2, r2, r3, lsl #0
1409         pkhbt r2, r2, r3, lsl #15
1410
1411         pkhtb r2, r2, r3
1412         pkhtb r2, r2, r3, asr #31
1413         pkhtb r2, r2, r3, asr #15
1414
1415 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0xc2,0xea,0x03,0x02]
1416 @ CHECK: pkhbt  r2, r2, r3, lsl #31     @ encoding: [0xc2,0xea,0xc3,0x72]
1417 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0xc2,0xea,0x03,0x02]
1418 @ CHECK: pkhbt  r2, r2, r3, lsl #15     @ encoding: [0xc2,0xea,0xc3,0x32]
1419
1420 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0xc2,0xea,0x03,0x02]
1421 @ CHECK: pkhtb  r2, r2, r3, asr #31     @ encoding: [0xc2,0xea,0xe3,0x72]
1422 @ CHECK: pkhtb  r2, r2, r3, asr #15     @ encoding: [0xc2,0xea,0xe3,0x32]
1423
1424
1425 @------------------------------------------------------------------------------
1426 @ PLD(immediate)
1427 @------------------------------------------------------------------------------
1428         pld [r5, #-4]
1429         pld [r6, #32]
1430         pld [r6, #33]
1431         pld [r6, #257]
1432         pld [r7, #257]
1433         pld [r1, #0]
1434         pld [r1, #-0]
1435
1436 @ CHECK: pld    [r5, #-4]               @ encoding: [0x15,0xf8,0x04,0xfc]
1437 @ CHECK: pld    [r6, #32]               @ encoding: [0x96,0xf8,0x20,0xf0]
1438 @ CHECK: pld    [r6, #33]               @ encoding: [0x96,0xf8,0x21,0xf0]
1439 @ CHECK: pld    [r6, #257]              @ encoding: [0x96,0xf8,0x01,0xf1]
1440 @ CHECK: pld    [r7, #257]              @ encoding: [0x97,0xf8,0x01,0xf1]
1441 @ CHECK: pld    [r1]                    @ encoding: [0x91,0xf8,0x00,0xf0]
1442 @ CHECK: pld    [r1, #-0]               @ encoding: [0x11,0xf8,0x00,0xfc]
1443
1444
1445 @------------------------------------------------------------------------------
1446 @ PLD(literal)
1447 @------------------------------------------------------------------------------
1448 @        pld  _foo
1449
1450 @ FIXME: pld    _foo                    @ encoding: [0x9f'A',0xf8'A',A,0xf0'A']
1451             @   fixup A - offset: 0, value: _foo, kind: fixup_t2_ldst_pcrel_12
1452
1453
1454 @------------------------------------------------------------------------------
1455 @ PLD(register)
1456 @------------------------------------------------------------------------------
1457         pld [r8, r1]
1458         pld [r5, r2]
1459         pld [r0, r2, lsl #3]
1460         pld [r8, r2, lsl #2]
1461         pld [sp, r2, lsl #1]
1462         pld [sp, r2, lsl #0]
1463
1464 @ CHECK: pld    [r8, r1]                @ encoding: [0x18,0xf8,0x01,0xf0]
1465 @ CHECK: pld    [r5, r2]                @ encoding: [0x15,0xf8,0x02,0xf0]
1466 @ CHECK: pld    [r0, r2, lsl #3]        @ encoding: [0x10,0xf8,0x32,0xf0]
1467 @ CHECK: pld    [r8, r2, lsl #2]        @ encoding: [0x18,0xf8,0x22,0xf0]
1468 @ CHECK: pld    [sp, r2, lsl #1]        @ encoding: [0x1d,0xf8,0x12,0xf0]
1469 @ CHECK: pld    [sp, r2]                @ encoding: [0x1d,0xf8,0x02,0xf0]
1470
1471 @------------------------------------------------------------------------------
1472 @ PLI(immediate)
1473 @------------------------------------------------------------------------------
1474         pli [r5, #-4]
1475         pli [r6, #32]
1476         pli [r6, #33]
1477         pli [r6, #257]
1478         pli [r7, #257]
1479
1480 @ CHECK: pli    [r5, #-4]               @ encoding: [0x15,0xf9,0x04,0xfc]
1481 @ CHECK: pli    [r6, #32]               @ encoding: [0x96,0xf9,0x20,0xf0]
1482 @ CHECK: pli    [r6, #33]               @ encoding: [0x96,0xf9,0x21,0xf0]
1483 @ CHECK: pli    [r6, #257]              @ encoding: [0x96,0xf9,0x01,0xf1]
1484 @ CHECK: pli    [r7, #257]              @ encoding: [0x97,0xf9,0x01,0xf1]
1485
1486
1487 @------------------------------------------------------------------------------
1488 @ PLI(literal)
1489 @------------------------------------------------------------------------------
1490 @        pli  _foo
1491
1492
1493 @ FIXME: pli    _foo                    @ encoding: [0x9f'A',0xf9'A',A,0xf0'A']
1494            @   fixup A - offset: 0, value: _foo, kind: fixup_t2_ldst_pcrel_12
1495
1496
1497 @------------------------------------------------------------------------------
1498 @ PLI(register)
1499 @------------------------------------------------------------------------------
1500         pli [r8, r1]
1501         pli [r5, r2]
1502         pli [r0, r2, lsl #3]
1503         pli [r8, r2, lsl #2]
1504         pli [sp, r2, lsl #1]
1505         pli [sp, r2, lsl #0]
1506
1507 @ CHECK: pli    [r8, r1]                @ encoding: [0x18,0xf9,0x01,0xf0]
1508 @ CHECK: pli    [r5, r2]                @ encoding: [0x15,0xf9,0x02,0xf0]
1509 @ CHECK: pli    [r0, r2, lsl #3]        @ encoding: [0x10,0xf9,0x32,0xf0]
1510 @ CHECK: pli    [r8, r2, lsl #2]        @ encoding: [0x18,0xf9,0x22,0xf0]
1511 @ CHECK: pli    [sp, r2, lsl #1]        @ encoding: [0x1d,0xf9,0x12,0xf0]
1512 @ CHECK: pli    [sp, r2]                @ encoding: [0x1d,0xf9,0x02,0xf0]
1513
1514 @------------------------------------------------------------------------------
1515 @ POP (alias)
1516 @------------------------------------------------------------------------------
1517         pop {r2, r9}
1518
1519 @ CHECK: pop.w  {r2, r9}                @ encoding: [0xbd,0xe8,0x04,0x02]
1520
1521
1522 @------------------------------------------------------------------------------
1523 @ PUSH (alias)
1524 @------------------------------------------------------------------------------
1525         push {r2, r9}
1526
1527 @ CHECK: push.w {r2, r9}                @ encoding: [0x2d,0xe9,0x04,0x02]
1528
1529
1530 @------------------------------------------------------------------------------
1531 @ QADD/QADD16/QADD8
1532 @------------------------------------------------------------------------------
1533         qadd r1, r2, r3
1534         qadd16 r1, r2, r3
1535         qadd8 r1, r2, r3
1536         itte gt
1537         qaddgt r1, r2, r3
1538         qadd16gt r1, r2, r3
1539         qadd8le r1, r2, r3
1540
1541 @ CHECK: qadd   r1, r2, r3              @ encoding: [0x83,0xfa,0x82,0xf1]
1542 @ CHECK: qadd16 r1, r2, r3              @ encoding: [0x92,0xfa,0x13,0xf1]
1543 @ CHECK: qadd8  r1, r2, r3              @ encoding: [0x82,0xfa,0x13,0xf1]
1544 @ CHECK: itte   gt                      @ encoding: [0xc6,0xbf]
1545 @ CHECK: qaddgt r1, r2, r3              @ encoding: [0x83,0xfa,0x82,0xf1]
1546 @ CHECK: qadd16gt r1, r2, r3            @ encoding: [0x92,0xfa,0x13,0xf1]
1547 @ CHECK: qadd8le r1, r2, r3             @ encoding: [0x82,0xfa,0x13,0xf1]
1548
1549
1550 @------------------------------------------------------------------------------
1551 @ QDADD/QDSUB
1552 @------------------------------------------------------------------------------
1553         qdadd r6, r7, r8
1554         qdsub r6, r7, r8
1555         itt hi
1556         qdaddhi r6, r7, r8
1557         qdsubhi r6, r7, r8
1558
1559 @ CHECK: qdadd  r6, r7, r8              @ encoding: [0x88,0xfa,0x97,0xf6]
1560 @ CHECK: qdsub  r6, r7, r8              @ encoding: [0x88,0xfa,0xb7,0xf6]
1561 @ CHECK: itt    hi                      @ encoding: [0x84,0xbf]
1562 @ CHECK: qdaddhi r6, r7, r8             @ encoding: [0x88,0xfa,0x97,0xf6]
1563 @ CHECK: qdsubhi r6, r7, r8             @ encoding: [0x88,0xfa,0xb7,0xf6]
1564
1565
1566 @------------------------------------------------------------------------------
1567 @ QSAX
1568 @------------------------------------------------------------------------------
1569         qsax r9, r12, r0
1570         it eq
1571         qsaxeq r9, r12, r0
1572
1573 @ CHECK: qsax   r9, r12, r0             @ encoding: [0xec,0xfa,0x10,0xf9]
1574 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1575 @ CHECK: qsaxeq r9, r12, r0             @ encoding: [0xec,0xfa,0x10,0xf9]
1576
1577
1578 @------------------------------------------------------------------------------
1579 @ QSUB/QSUB16/QSUB8
1580 @------------------------------------------------------------------------------
1581         qsub r1, r2, r3
1582         qsub16 r1, r2, r3
1583         qsub8 r1, r2, r3
1584         itet le
1585         qsuble r1, r2, r3
1586         qsub16gt r1, r2, r3
1587         qsub8le r1, r2, r3
1588
1589 @ CHECK: qsub   r1, r2, r3              @ encoding: [0x83,0xfa,0xa2,0xf1]
1590 @ CHECK: qsub16 r1, r2, r3              @ encoding: [0xd2,0xfa,0x13,0xf1]
1591 @ CHECK: qsub8  r1, r2, r3              @ encoding: [0xc2,0xfa,0x13,0xf1]
1592 @ CHECK: itet   le                      @ encoding: [0xd6,0xbf]
1593 @ CHECK: qsuble r1, r2, r3              @ encoding: [0x83,0xfa,0xa2,0xf1]
1594 @ CHECK: qsub16gt       r1, r2, r3      @ encoding: [0xd2,0xfa,0x13,0xf1]
1595 @ CHECK: qsub8le r1, r2, r3             @ encoding: [0xc2,0xfa,0x13,0xf1]
1596
1597
1598 @------------------------------------------------------------------------------
1599 @ RBIT
1600 @------------------------------------------------------------------------------
1601         rbit r1, r2
1602         it ne
1603         rbitne r1, r2
1604
1605 @ CHECK: rbit   r1, r2                  @ encoding: [0x92,0xfa,0xa2,0xf1]
1606 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1607 @ CHECK: rbitne r1, r2                  @ encoding: [0x92,0xfa,0xa2,0xf1]
1608
1609
1610 @------------------------------------------------------------------------------
1611 @ REV
1612 @------------------------------------------------------------------------------
1613         rev.w r1, r2
1614         rev r2, r8
1615         itt ne
1616         revne r1, r2
1617         revne r1, r8
1618
1619 @ CHECK: rev.w  r1, r2                  @ encoding: [0x92,0xfa,0x82,0xf1]
1620 @ CHECK: rev.w  r2, r8                  @ encoding: [0x98,0xfa,0x88,0xf2]
1621 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
1622 @ CHECK: revne  r1, r2                  @ encoding: [0x11,0xba]
1623 @ CHECK: revne.w r1, r8                 @ encoding: [0x98,0xfa,0x88,0xf1]
1624
1625
1626 @------------------------------------------------------------------------------
1627 @ REV16
1628 @------------------------------------------------------------------------------
1629         rev16.w r1, r2
1630         rev16 r2, r8
1631         itt ne
1632         rev16ne r1, r2
1633         rev16ne r1, r8
1634
1635 @ CHECK: rev16.w r1, r2                 @ encoding: [0x92,0xfa,0x92,0xf1]
1636 @ CHECK: rev16.w r2, r8                 @ encoding: [0x98,0xfa,0x98,0xf2]
1637 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
1638 @ CHECK: rev16ne r1, r2                 @ encoding: [0x51,0xba]
1639 @ CHECK: rev16ne.w      r1, r8          @ encoding: [0x98,0xfa,0x98,0xf1]
1640
1641
1642 @------------------------------------------------------------------------------
1643 @ REVSH
1644 @------------------------------------------------------------------------------
1645         revsh.w r1, r2
1646         revsh r2, r8
1647         itt ne
1648         revshne r1, r2
1649         revshne r1, r8
1650
1651 @ CHECK: revsh.w r1, r2                 @ encoding: [0x92,0xfa,0xb2,0xf1]
1652 @ CHECK: revsh.w r2, r8                 @ encoding: [0x98,0xfa,0xb8,0xf2]
1653 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
1654 @ CHECK: revshne r1, r2                 @ encoding: [0xd1,0xba]
1655 @ CHECK: revshne.w      r1, r8          @ encoding: [0x98,0xfa,0xb8,0xf1]
1656
1657
1658 @------------------------------------------------------------------------------
1659 @ ROR (immediate)
1660 @------------------------------------------------------------------------------
1661         ror r2, r3, #12
1662         rors r8, r3, #31
1663         rors.w r2, r3, #1
1664         ror r2, r3, #4
1665         rors r2, r12, #15
1666
1667         ror r3, #19
1668         rors r8, #2
1669         rors.w r7, #5
1670         ror.w r12, #21
1671
1672 @ CHECK: ror.w  r2, r3, #12             @ encoding: [0x4f,0xea,0x33,0x32]
1673 @ CHECK: rors.w r8, r3, #31             @ encoding: [0x5f,0xea,0xf3,0x78]
1674 @ CHECK: rors.w r2, r3, #1              @ encoding: [0x5f,0xea,0x73,0x02]
1675 @ CHECK: ror.w  r2, r3, #4              @ encoding: [0x4f,0xea,0x33,0x12]
1676 @ CHECK: rors.w r2, r12, #15            @ encoding: [0x5f,0xea,0xfc,0x32]
1677
1678 @ CHECK: ror.w  r3, r3, #19             @ encoding: [0x4f,0xea,0xf3,0x43]
1679 @ CHECK: rors.w r8, r8, #2              @ encoding: [0x5f,0xea,0xb8,0x08]
1680 @ CHECK: rors.w r7, r7, #5              @ encoding: [0x5f,0xea,0x77,0x17]
1681 @ CHECK: ror.w  r12, r12, #21           @ encoding: [0x4f,0xea,0x7c,0x5c]
1682
1683
1684 @------------------------------------------------------------------------------
1685 @ ROR (register)
1686 @------------------------------------------------------------------------------
1687         ror r3, r4, r2
1688         ror.w r1, r2
1689         rors r3, r4, r8
1690
1691 @ CHECK: ror.w  r3, r4, r2              @ encoding: [0x64,0xfa,0x02,0xf3]
1692 @ CHECK: ror.w  r1, r1, r2              @ encoding: [0x61,0xfa,0x02,0xf1]
1693 @ CHECK: rors.w r3, r4, r8              @ encoding: [0x74,0xfa,0x08,0xf3]
1694
1695
1696 @------------------------------------------------------------------------------
1697 @ RRX
1698 @------------------------------------------------------------------------------
1699         rrx r1, r2
1700         rrxs r1, r2
1701         ite lt
1702         rrxlt r9, r12
1703         rrxsge r8, r3
1704
1705 @ CHECK: rrx    r1, r2                  @ encoding: [0x4f,0xea,0x32,0x01]
1706 @ CHECK: rrxs   r1, r2                  @ encoding: [0x5f,0xea,0x32,0x01]
1707 @ CHECK: ite    lt                      @ encoding: [0xb4,0xbf]
1708 @ CHECK: rrxlt  r9, r12                 @ encoding: [0x4f,0xea,0x3c,0x09]
1709 @ CHECK: rrxsge r8, r3                  @ encoding: [0x5f,0xea,0x33,0x08]
1710
1711 @------------------------------------------------------------------------------
1712 @ RSB (immediate)
1713 @------------------------------------------------------------------------------
1714         rsb r2, r5, #0xff000
1715         rsbs r3, r12, #0xf
1716         rsb r1, #0xff
1717         rsb r1, r1, #0xff
1718         rsb r11, r11, #0
1719         rsb r9, #0
1720         rsbs r3, r1, #0
1721         rsb r3, r1, #0
1722
1723 @ CHECK: rsb.w  r2, r5, #1044480        @ encoding: [0xc5,0xf5,0x7f,0x22]
1724 @ CHECK: rsbs.w r3, r12, #15            @ encoding: [0xdc,0xf1,0x0f,0x03]
1725 @ CHECK: rsb.w  r1, r1, #255            @ encoding: [0xc1,0xf1,0xff,0x01]
1726 @ CHECK: rsb.w  r1, r1, #255            @ encoding: [0xc1,0xf1,0xff,0x01]
1727 @ CHECK: rsb.w  r11, r11, #0            @ encoding: [0xcb,0xf1,0x00,0x0b]
1728 @ CHECK: rsb.w  r9, r9, #0              @ encoding: [0xc9,0xf1,0x00,0x09]
1729 @ CHECK: rsbs   r3, r1, #0              @ encoding: [0x4b,0x42]
1730 @ CHECK: rsb.w  r3, r1, #0              @ encoding: [0xc1,0xf1,0x00,0x03]
1731
1732
1733 @------------------------------------------------------------------------------
1734 @ RSB (register)
1735 @------------------------------------------------------------------------------
1736         rsb r4, r8
1737         rsb r4, r9, r8
1738         rsb r1, r4, r8, asr #3
1739         rsbs r2, r1, r7, lsl #1
1740
1741 @ CHECK: rsb    r4, r4, r8              @ encoding: [0xc4,0xeb,0x08,0x04]
1742 @ CHECK: rsb    r4, r9, r8              @ encoding: [0xc9,0xeb,0x08,0x04]
1743 @ CHECK: rsb    r1, r4, r8, asr #3      @ encoding: [0xc4,0xeb,0xe8,0x01]
1744 @ CHECK: rsbs   r2, r1, r7, lsl #1      @ encoding: [0xd1,0xeb,0x47,0x02]
1745
1746
1747 @------------------------------------------------------------------------------
1748 @ SADD16
1749 @------------------------------------------------------------------------------
1750         sadd16 r3, r4, r8
1751         it ne
1752         sadd16ne r3, r4, r8
1753
1754 @ CHECK: sadd16 r3, r4, r8              @ encoding: [0x94,0xfa,0x08,0xf3]
1755 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1756 @ CHECK: sadd16ne       r3, r4, r8      @ encoding: [0x94,0xfa,0x08,0xf3]
1757
1758
1759 @------------------------------------------------------------------------------
1760 @ SADD8
1761 @------------------------------------------------------------------------------
1762         sadd8 r3, r4, r8
1763         it ne
1764         sadd8ne r3, r4, r8
1765
1766 @ CHECK: sadd8  r3, r4, r8              @ encoding: [0x84,0xfa,0x08,0xf3]
1767 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1768 @ CHECK: sadd8ne r3, r4, r8             @ encoding: [0x84,0xfa,0x08,0xf3]
1769
1770
1771 @------------------------------------------------------------------------------
1772 @ SASX
1773 @------------------------------------------------------------------------------
1774         saddsubx r9, r2, r7
1775         it ne
1776         saddsubxne r2, r5, r6
1777         sasx r9, r2, r7
1778         it ne
1779         sasxne r2, r5, r6
1780
1781 @ CHECK: sasx   r9, r2, r7              @ encoding: [0xa2,0xfa,0x07,0xf9]
1782 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1783 @ CHECK: sasxne r2, r5, r6              @ encoding: [0xa5,0xfa,0x06,0xf2]
1784 @ CHECK: sasx   r9, r2, r7              @ encoding: [0xa2,0xfa,0x07,0xf9]
1785 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1786 @ CHECK: sasxne r2, r5, r6              @ encoding: [0xa5,0xfa,0x06,0xf2]
1787
1788
1789 @------------------------------------------------------------------------------
1790 @ SBC (immediate)
1791 @------------------------------------------------------------------------------
1792         sbc r0, r1, #4
1793         sbcs r0, r1, #0
1794         sbc r1, r2, #255
1795         sbc r3, r7, #0x00550055
1796         sbc r8, r12, #0xaa00aa00
1797         sbc r9, r7, #0xa5a5a5a5
1798         sbc r5, r3, #0x87000000
1799         sbc r4, r2, #0x7f800000
1800         sbc r4, r2, #0x00000680
1801
1802 @ CHECK: sbc    r0, r1, #4              @ encoding: [0x61,0xf1,0x04,0x00]
1803 @ CHECK: sbcs   r0, r1, #0              @ encoding: [0x71,0xf1,0x00,0x00]
1804 @ CHECK: sbc    r1, r2, #255            @ encoding: [0x62,0xf1,0xff,0x01]
1805 @ CHECK: sbc    r3, r7, #5570645        @ encoding: [0x67,0xf1,0x55,0x13]
1806 @ CHECK: sbc    r8, r12, #2852170240    @ encoding: [0x6c,0xf1,0xaa,0x28]
1807 @ CHECK: sbc    r9, r7, #2779096485     @ encoding: [0x67,0xf1,0xa5,0x39]
1808 @ CHECK: sbc    r5, r3, #2264924160     @ encoding: [0x63,0xf1,0x07,0x45]
1809 @ CHECK: sbc    r4, r2, #2139095040     @ encoding: [0x62,0xf1,0xff,0x44]
1810 @ CHECK: sbc    r4, r2, #1664           @ encoding: [0x62,0xf5,0xd0,0x64]
1811
1812
1813 @------------------------------------------------------------------------------
1814 @ SBC (register)
1815 @------------------------------------------------------------------------------
1816         sbc r4, r5, r6
1817         sbcs r4, r5, r6
1818         sbc.w r9, r1, r3
1819         sbcs.w r9, r1, r3
1820         sbc     r0, r1, r3, ror #4
1821         sbcs    r0, r1, r3, lsl #7
1822         sbc.w   r0, r1, r3, lsr #31
1823         sbcs.w  r0, r1, r3, asr #32
1824
1825 @ CHECK: sbc.w  r4, r5, r6              @ encoding: [0x65,0xeb,0x06,0x04]
1826 @ CHECK: sbcs.w r4, r5, r6              @ encoding: [0x75,0xeb,0x06,0x04]
1827 @ CHECK: sbc.w  r9, r1, r3              @ encoding: [0x61,0xeb,0x03,0x09]
1828 @ CHECK: sbcs.w r9, r1, r3              @ encoding: [0x71,0xeb,0x03,0x09]
1829 @ CHECK: sbc.w  r0, r1, r3, ror #4      @ encoding: [0x61,0xeb,0x33,0x10]
1830 @ CHECK: sbcs.w r0, r1, r3, lsl #7      @ encoding: [0x71,0xeb,0xc3,0x10]
1831 @ CHECK: sbc.w  r0, r1, r3, lsr #31     @ encoding: [0x61,0xeb,0xd3,0x70]
1832 @ CHECK: sbcs.w r0, r1, r3, asr #32     @ encoding: [0x71,0xeb,0x23,0x00]
1833
1834
1835 @------------------------------------------------------------------------------
1836 @ SBFX
1837 @------------------------------------------------------------------------------
1838         sbfx r4, r5, #16, #1
1839         it gt
1840         sbfxgt r4, r5, #16, #16
1841
1842 @ CHECK: sbfx   r4, r5, #16, #1         @ encoding: [0x45,0xf3,0x00,0x44]
1843 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1844 @ CHECK: sbfxgt r4, r5, #16, #16        @ encoding: [0x45,0xf3,0x0f,0x44]
1845
1846
1847 @------------------------------------------------------------------------------
1848 @ SEL
1849 @------------------------------------------------------------------------------
1850         sel r5, r9, r2
1851         it le
1852         selle r5, r9, r2
1853
1854 @ CHECK: sel    r5, r9, r2              @ encoding: [0xa9,0xfa,0x82,0xf5]
1855 @ CHECK: it     le                      @ encoding: [0xd8,0xbf]
1856 @ CHECK: selle  r5, r9, r2              @ encoding: [0xa9,0xfa,0x82,0xf5]
1857
1858
1859 @------------------------------------------------------------------------------
1860 @ SEV
1861 @------------------------------------------------------------------------------
1862         sev.w
1863         it eq
1864         seveq.w
1865
1866 @ CHECK: sev.w                           @ encoding: [0xaf,0xf3,0x04,0x80]
1867 @ CHECK: it     eq                       @ encoding: [0x08,0xbf]
1868 @ CHECK: seveq.w                         @ encoding: [0xaf,0xf3,0x04,0x80]
1869
1870
1871 @------------------------------------------------------------------------------
1872 @ SADD16/SADD8
1873 @------------------------------------------------------------------------------
1874         sadd16 r1, r2, r3
1875         sadd8 r1, r2, r3
1876         ite gt
1877         sadd16gt r1, r2, r3
1878         sadd8le r1, r2, r3
1879
1880 @ CHECK: sadd16 r1, r2, r3              @ encoding: [0x92,0xfa,0x03,0xf1]
1881 @ CHECK: sadd8  r1, r2, r3              @ encoding: [0x82,0xfa,0x03,0xf1]
1882 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
1883 @ CHECK: sadd16gt       r1, r2, r3      @ encoding: [0x92,0xfa,0x03,0xf1]
1884 @ CHECK: sadd8le r1, r2, r3             @ encoding: [0x82,0xfa,0x03,0xf1]
1885
1886
1887 @------------------------------------------------------------------------------
1888 @ SHASX
1889 @------------------------------------------------------------------------------
1890         shasx r4, r8, r2
1891         it gt
1892         shasxgt r4, r8, r2
1893         shaddsubx r4, r8, r2
1894         it gt
1895         shaddsubxgt r4, r8, r2
1896
1897 @ CHECK: shasx  r4, r8, r2              @ encoding: [0xa8,0xfa,0x22,0xf4]
1898 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1899 @ CHECK: shasxgt r4, r8, r2             @ encoding: [0xa8,0xfa,0x22,0xf4]
1900 @ CHECK: shasx  r4, r8, r2              @ encoding: [0xa8,0xfa,0x22,0xf4]
1901 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1902 @ CHECK: shasxgt r4, r8, r2             @ encoding: [0xa8,0xfa,0x22,0xf4]
1903
1904
1905 @------------------------------------------------------------------------------
1906 @ SHASX
1907 @------------------------------------------------------------------------------
1908         shsax r4, r8, r2
1909         it gt
1910         shsaxgt r4, r8, r2
1911         shsubaddx r4, r8, r2
1912         it gt
1913         shsubaddxgt r4, r8, r2
1914
1915 @ CHECK: shsax  r4, r8, r2              @ encoding: [0xe8,0xfa,0x22,0xf4]
1916 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1917 @ CHECK: shsaxgt r4, r8, r2             @ encoding: [0xe8,0xfa,0x22,0xf4]
1918 @ CHECK: shsax  r4, r8, r2              @ encoding: [0xe8,0xfa,0x22,0xf4]
1919 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1920 @ CHECK: shsaxgt r4, r8, r2             @ encoding: [0xe8,0xfa,0x22,0xf4]
1921
1922
1923 @------------------------------------------------------------------------------
1924 @ SHSUB16/SHSUB8
1925 @------------------------------------------------------------------------------
1926         shsub16 r4, r8, r2
1927         shsub8 r4, r8, r2
1928         itt gt
1929         shsub16gt r4, r8, r2
1930         shsub8gt r4, r8, r2
1931
1932 @ CHECK: shsub16 r4, r8, r2             @ encoding: [0xd8,0xfa,0x22,0xf4]
1933 @ CHECK: shsub8 r4, r8, r2              @ encoding: [0xc8,0xfa,0x22,0xf4]
1934 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
1935 @ CHECK: shsub16gt      r4, r8, r2      @ encoding: [0xd8,0xfa,0x22,0xf4]
1936 @ CHECK: shsub8gt       r4, r8, r2      @ encoding: [0xc8,0xfa,0x22,0xf4]
1937
1938
1939 @------------------------------------------------------------------------------
1940 @ SMLABB/SMLABT/SMLATB/SMLATT
1941 @------------------------------------------------------------------------------
1942         smlabb r3, r1, r9, r0
1943         smlabt r5, r6, r4, r1
1944         smlatb r4, r2, r3, r2
1945         smlatt r8, r3, r8, r4
1946         itete gt
1947         smlabbgt r3, r1, r9, r0
1948         smlabtle r5, r6, r4, r1
1949         smlatbgt r4, r2, r3, r2
1950         smlattle r8, r3, r8, r4
1951
1952 @ CHECK: smlabb r3, r1, r9, r0          @ encoding: [0x11,0xfb,0x09,0x03]
1953 @ CHECK: smlabt r5, r6, r4, r1          @ encoding: [0x16,0xfb,0x14,0x15]
1954 @ CHECK: smlatb r4, r2, r3, r2          @ encoding: [0x12,0xfb,0x23,0x24]
1955 @ CHECK: smlatt r8, r3, r8, r4          @ encoding: [0x13,0xfb,0x38,0x48]
1956 @ CHECK: itete  gt                      @ encoding: [0xcb,0xbf]
1957 @ CHECK: smlabbgt       r3, r1, r9, r0  @ encoding: [0x11,0xfb,0x09,0x03]
1958 @ CHECK: smlabtle       r5, r6, r4, r1  @ encoding: [0x16,0xfb,0x14,0x15]
1959 @ CHECK: smlatbgt       r4, r2, r3, r2  @ encoding: [0x12,0xfb,0x23,0x24]
1960 @ CHECK: smlattle       r8, r3, r8, r4  @ encoding: [0x13,0xfb,0x38,0x48]
1961
1962
1963 @------------------------------------------------------------------------------
1964 @ SMLAD/SMLADX
1965 @------------------------------------------------------------------------------
1966         smlad r2, r3, r5, r8
1967         smladx r2, r3, r5, r8
1968         itt hi
1969         smladhi r2, r3, r5, r8
1970         smladxhi r2, r3, r5, r8
1971
1972 @ CHECK: smlad  r2, r3, r5, r8          @ encoding: [0x23,0xfb,0x05,0x82]
1973 @ CHECK: smladx r2, r3, r5, r8          @ encoding: [0x23,0xfb,0x15,0x82]
1974 @ CHECK: itt    hi                      @ encoding: [0x84,0xbf]
1975 @ CHECK: smladhi r2, r3, r5, r8         @ encoding: [0x23,0xfb,0x05,0x82]
1976 @ CHECK: smladxhi       r2, r3, r5, r8  @ encoding: [0x23,0xfb,0x15,0x82]
1977
1978
1979 @------------------------------------------------------------------------------
1980 @ SMLAL
1981 @------------------------------------------------------------------------------
1982         smlal r2, r3, r5, r8
1983         it eq
1984         smlaleq r2, r3, r5, r8
1985
1986 @ CHECK: smlal  r2, r3, r5, r8          @ encoding: [0xc5,0xfb,0x08,0x23]
1987 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1988 @ CHECK: smlaleq r2, r3, r5, r8         @ encoding: [0xc5,0xfb,0x08,0x23]
1989
1990
1991 @------------------------------------------------------------------------------
1992 @ SMLALBB/SMLALBT/SMLALTB/SMLALTT
1993 @------------------------------------------------------------------------------
1994         smlalbb r3, r1, r9, r0
1995         smlalbt r5, r6, r4, r1
1996         smlaltb r4, r2, r3, r2
1997         smlaltt r8, r3, r8, r4
1998         iteet ge
1999         smlalbbge r3, r1, r9, r0
2000         smlalbtlt r5, r6, r4, r1
2001         smlaltblt r4, r2, r3, r2
2002         smlalttge r8, r3, r8, r4
2003
2004 @ CHECK: smlalbb r3, r1, r9, r0         @ encoding: [0xc9,0xfb,0x80,0x31]
2005 @ CHECK: smlalbt r5, r6, r4, r1         @ encoding: [0xc4,0xfb,0x91,0x56]
2006 @ CHECK: smlaltb r4, r2, r3, r2         @ encoding: [0xc3,0xfb,0xa2,0x42]
2007 @ CHECK: smlaltt r8, r3, r8, r4         @ encoding: [0xc8,0xfb,0xb4,0x83]
2008 @ CHECK: iteet  ge                      @ encoding: [0xad,0xbf]
2009 @ CHECK: smlalbbge      r3, r1, r9, r0  @ encoding: [0xc9,0xfb,0x80,0x31]
2010 @ CHECK: smlalbtlt      r5, r6, r4, r1  @ encoding: [0xc4,0xfb,0x91,0x56]
2011 @ CHECK: smlaltblt      r4, r2, r3, r2  @ encoding: [0xc3,0xfb,0xa2,0x42]
2012 @ CHECK: smlalttge      r8, r3, r8, r4  @ encoding: [0xc8,0xfb,0xb4,0x83]
2013
2014
2015 @------------------------------------------------------------------------------
2016 @ SMLALD/SMLALDX
2017 @------------------------------------------------------------------------------
2018         smlald r2, r3, r5, r8
2019         smlaldx r2, r3, r5, r8
2020         ite eq
2021         smlaldeq r2, r3, r5, r8
2022         smlaldxne r2, r3, r5, r8
2023
2024 @ CHECK: smlald r2, r3, r5, r8          @ encoding: [0xc5,0xfb,0xc8,0x23]
2025 @ CHECK: smlaldx r2, r3, r5, r8         @ encoding: [0xc5,0xfb,0xd8,0x23]
2026 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
2027 @ CHECK: smlaldeq       r2, r3, r5, r8  @ encoding: [0xc5,0xfb,0xc8,0x23]
2028 @ CHECK: smlaldxne      r2, r3, r5, r8  @ encoding: [0xc5,0xfb,0xd8,0x23]
2029
2030
2031 @------------------------------------------------------------------------------
2032 @ SMLAWB/SMLAWT
2033 @------------------------------------------------------------------------------
2034         smlawb r2, r3, r10, r8
2035         smlawt r8, r3, r5, r9
2036         ite eq
2037         smlawbeq r2, r7, r5, r8
2038         smlawtne r1, r3, r0, r8
2039
2040 @ CHECK: smlawb r2, r3, r10, r8         @ encoding: [0x33,0xfb,0x0a,0x82]
2041 @ CHECK: smlawt r8, r3, r5, r9          @ encoding: [0x33,0xfb,0x15,0x98]
2042 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
2043 @ CHECK: smlawbeq       r2, r7, r5, r8  @ encoding: [0x37,0xfb,0x05,0x82]
2044 @ CHECK: smlawtne       r1, r3, r0, r8  @ encoding: [0x33,0xfb,0x10,0x81]
2045
2046
2047 @------------------------------------------------------------------------------
2048 @ SMLSD/SMLSDX
2049 @------------------------------------------------------------------------------
2050         smlsd r2, r3, r5, r8
2051         smlsdx r2, r3, r5, r8
2052         ite le
2053         smlsdle r2, r3, r5, r8
2054         smlsdxgt r2, r3, r5, r8
2055
2056 @ CHECK: smlsd  r2, r3, r5, r8          @ encoding: [0x43,0xfb,0x05,0x82]
2057 @ CHECK: smlsdx r2, r3, r5, r8          @ encoding: [0x43,0xfb,0x15,0x82]
2058 @ CHECK: ite    le                      @ encoding: [0xd4,0xbf]
2059 @ CHECK: smlsdle        r2, r3, r5, r8  @ encoding: [0x43,0xfb,0x05,0x82]
2060 @ CHECK: smlsdxgt       r2, r3, r5, r8  @ encoding: [0x43,0xfb,0x15,0x82]
2061
2062
2063 @------------------------------------------------------------------------------
2064 @ SMLSLD/SMLSLDX
2065 @------------------------------------------------------------------------------
2066         smlsld r2, r9, r5, r1
2067         smlsldx r4, r11, r2, r8
2068         ite ge
2069         smlsldge r8, r2, r5, r6
2070         smlsldxlt r1, r0, r3, r8
2071
2072 @ CHECK: smlsld r2, r9, r5, r1          @ encoding: [0xd5,0xfb,0xc1,0x29]
2073 @ CHECK: smlsldx        r4, r11, r2, r8 @ encoding: [0xd2,0xfb,0xd8,0x4b]
2074 @ CHECK: ite    ge                      @ encoding: [0xac,0xbf]
2075 @ CHECK: smlsldge       r8, r2, r5, r6  @ encoding: [0xd5,0xfb,0xc6,0x82]
2076 @ CHECK: smlsldxlt      r1, r0, r3, r8  @ encoding: [0xd3,0xfb,0xd8,0x10]
2077
2078
2079 @------------------------------------------------------------------------------
2080 @ SMMLA/SMMLAR
2081 @------------------------------------------------------------------------------
2082         smmla r1, r2, r3, r4
2083         smmlar r4, r3, r2, r1
2084         ite lo
2085         smmlalo r1, r2, r3, r4
2086         smmlarcs r4, r3, r2, r1
2087
2088 @ CHECK: smmla  r1, r2, r3, r4          @ encoding: [0x52,0xfb,0x03,0x41]
2089 @ CHECK: smmlar r4, r3, r2, r1          @ encoding: [0x53,0xfb,0x12,0x14]
2090 @ CHECK: ite    lo                      @ encoding: [0x34,0xbf]
2091 @ CHECK: smmlalo        r1, r2, r3, r4  @ encoding: [0x52,0xfb,0x03,0x41]
2092 @ CHECK: smmlarhs       r4, r3, r2, r1  @ encoding: [0x53,0xfb,0x12,0x14]
2093
2094
2095 @------------------------------------------------------------------------------
2096 @ SMMLS/SMMLSR
2097 @------------------------------------------------------------------------------
2098         smmls r1, r2, r3, r4
2099         smmlsr r4, r3, r2, r1
2100         ite lo
2101         smmlslo r1, r2, r3, r4
2102         smmlsrcs r4, r3, r2, r1
2103
2104 @ CHECK: smmls  r1, r2, r3, r4          @ encoding: [0x62,0xfb,0x03,0x41]
2105 @ CHECK: smmlsr r4, r3, r2, r1          @ encoding: [0x63,0xfb,0x12,0x14]
2106 @ CHECK: ite    lo                      @ encoding: [0x34,0xbf]
2107 @ CHECK: smmlslo        r1, r2, r3, r4  @ encoding: [0x62,0xfb,0x03,0x41]
2108 @ CHECK: smmlsrhs       r4, r3, r2, r1  @ encoding: [0x63,0xfb,0x12,0x14]
2109
2110
2111 @------------------------------------------------------------------------------
2112 @ SMMUL/SMMULR
2113 @------------------------------------------------------------------------------
2114         smmul r2, r3, r4
2115         smmulr r3, r2, r1
2116         ite cc
2117         smmulcc r2, r3, r4
2118         smmulrhs r3, r2, r1
2119
2120 @ CHECK: smmul  r2, r3, r4              @ encoding: [0x53,0xfb,0x04,0xf2]
2121 @ CHECK: smmulr r3, r2, r1              @ encoding: [0x52,0xfb,0x11,0xf3]
2122 @ CHECK: ite    lo                      @ encoding: [0x34,0xbf]
2123 @ CHECK: smmullo        r2, r3, r4      @ encoding: [0x53,0xfb,0x04,0xf2]
2124 @ CHECK: smmulrhs       r3, r2, r1      @ encoding: [0x52,0xfb,0x11,0xf3]
2125
2126
2127 @------------------------------------------------------------------------------
2128 @ SMUAD/SMUADX
2129 @------------------------------------------------------------------------------
2130         smuad r2, r3, r4
2131         smuadx r3, r2, r1
2132         ite lt
2133         smuadlt r2, r3, r4
2134         smuadxge r3, r2, r1
2135
2136 @ CHECK: smuad  r2, r3, r4              @ encoding: [0x23,0xfb,0x04,0xf2]
2137 @ CHECK: smuadx r3, r2, r1              @ encoding: [0x22,0xfb,0x11,0xf3]
2138 @ CHECK: ite    lt                      @ encoding: [0xb4,0xbf]
2139 @ CHECK: smuadlt        r2, r3, r4      @ encoding: [0x23,0xfb,0x04,0xf2]
2140 @ CHECK: smuadxge       r3, r2, r1      @ encoding: [0x22,0xfb,0x11,0xf3]
2141
2142
2143 @------------------------------------------------------------------------------
2144 @ SMULBB/SMULBT/SMULTB/SMULTT
2145 @------------------------------------------------------------------------------
2146         smulbb r3, r9, r0
2147         smulbt r5, r4, r1
2148         smultb r4, r2, r2
2149         smultt r8, r3, r4
2150         itete ge
2151         smulbbge r1, r9, r0
2152         smulbtlt r5, r6, r4
2153         smultbge r2, r3, r2
2154         smulttlt r8, r3, r4
2155
2156 @ CHECK: smulbb r3, r9, r0              @ encoding: [0x19,0xfb,0x00,0xf3]
2157 @ CHECK: smulbt r5, r4, r1              @ encoding: [0x14,0xfb,0x11,0xf5]
2158 @ CHECK: smultb r4, r2, r2              @ encoding: [0x12,0xfb,0x22,0xf4]
2159 @ CHECK: smultt r8, r3, r4              @ encoding: [0x13,0xfb,0x34,0xf8]
2160 @ CHECK: itete  ge                      @ encoding: [0xab,0xbf]
2161 @ CHECK: smulbbge       r1, r9, r0      @ encoding: [0x19,0xfb,0x00,0xf1]
2162 @ CHECK: smulbtlt       r5, r6, r4      @ encoding: [0x16,0xfb,0x14,0xf5]
2163 @ CHECK: smultbge       r2, r3, r2      @ encoding: [0x13,0xfb,0x22,0xf2]
2164 @ CHECK: smulttlt       r8, r3, r4      @ encoding: [0x13,0xfb,0x34,0xf8]
2165
2166
2167 @------------------------------------------------------------------------------
2168 @ SMULL
2169 @------------------------------------------------------------------------------
2170         smull r3, r9, r0, r1
2171         it eq
2172         smulleq r8, r3, r4, r5
2173
2174 @ CHECK: smull  r3, r9, r0, r1          @ encoding: [0x80,0xfb,0x01,0x39]
2175 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
2176 @ CHECK: smulleq r8, r3, r4, r5         @ encoding: [0x84,0xfb,0x05,0x83]
2177
2178
2179 @------------------------------------------------------------------------------
2180 @ SMULWB/SMULWT
2181 @------------------------------------------------------------------------------
2182         smulwb r3, r9, r0
2183         smulwt r3, r9, r2
2184         ite gt
2185         smulwbgt r3, r9, r0
2186         smulwtle r3, r9, r2
2187
2188 @ CHECK: smulwb r3, r9, r0              @ encoding: [0x39,0xfb,0x00,0xf3]
2189 @ CHECK: smulwt r3, r9, r2              @ encoding: [0x39,0xfb,0x12,0xf3]
2190 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
2191 @ CHECK: smulwbgt       r3, r9, r0      @ encoding: [0x39,0xfb,0x00,0xf3]
2192 @ CHECK: smulwtle       r3, r9, r2      @ encoding: [0x39,0xfb,0x12,0xf3]
2193
2194
2195 @------------------------------------------------------------------------------
2196 @ SMUSD/SMUSDX
2197 @------------------------------------------------------------------------------
2198         smusd r3, r0, r1
2199         smusdx r3, r9, r2
2200         ite eq
2201         smusdeq r8, r3, r2
2202         smusdxne r7, r4, r3
2203
2204 @ CHECK: smusd  r3, r0, r1              @ encoding: [0x40,0xfb,0x01,0xf3]
2205 @ CHECK: smusdx r3, r9, r2              @ encoding: [0x49,0xfb,0x12,0xf3]
2206 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
2207 @ CHECK: smusdeq        r8, r3, r2      @ encoding: [0x43,0xfb,0x02,0xf8]
2208 @ CHECK: smusdxne       r7, r4, r3      @ encoding: [0x44,0xfb,0x13,0xf7]
2209
2210
2211 @------------------------------------------------------------------------------
2212 @ SRS
2213 @------------------------------------------------------------------------------
2214         srsdb sp, #1
2215         srsia sp, #0
2216
2217         srsdb sp!, #19
2218         srsia sp!, #2
2219
2220         srsea sp, #10
2221         srsfd sp, #9
2222
2223         srsea sp!, #5
2224         srsfd sp!, #5
2225
2226         srs sp, #5
2227         srs sp!, #5
2228
2229 @ CHECK: srsdb  sp, #1                  @ encoding: [0x0d,0xe8,0x01,0xc0]
2230 @ CHECK: srsia  sp, #0                  @ encoding: [0x8d,0xe9,0x00,0xc0]
2231 @ CHECK: srsdb  sp!, #19                @ encoding: [0x2d,0xe8,0x13,0xc0]
2232 @ CHECK: srsia  sp!, #2                 @ encoding: [0xad,0xe9,0x02,0xc0]
2233 @ CHECK: srsdb  sp, #10                 @ encoding: [0x0d,0xe8,0x0a,0xc0]
2234 @ CHECK: srsia  sp, #9                  @ encoding: [0x8d,0xe9,0x09,0xc0]
2235 @ CHECK: srsdb  sp!, #5                 @ encoding: [0x2d,0xe8,0x05,0xc0]
2236 @ CHECK: srsia  sp!, #5                 @ encoding: [0xad,0xe9,0x05,0xc0]
2237 @ CHECK: srsia  sp, #5                  @ encoding: [0x8d,0xe9,0x05,0xc0]
2238 @ CHECK: srsia  sp!, #5                 @ encoding: [0xad,0xe9,0x05,0xc0]
2239
2240
2241 @------------------------------------------------------------------------------
2242 @ SSAT
2243 @------------------------------------------------------------------------------
2244         ssat    r8, #1, r10
2245         ssat    r8, #1, r10, lsl #0
2246         ssat    r8, #1, r10, lsl #31
2247         ssat    r8, #1, r10, asr #1
2248
2249 @ CHECK: ssat   r8, #1, r10             @ encoding: [0x0a,0xf3,0x00,0x08]
2250 @ CHECK: ssat   r8, #1, r10             @ encoding: [0x0a,0xf3,0x00,0x08]
2251 @ CHECK: ssat   r8, #1, r10, lsl #31    @ encoding: [0x0a,0xf3,0xc0,0x78]
2252 @ CHECK: ssat   r8, #1, r10, asr #1     @ encoding: [0x2a,0xf3,0x40,0x08]
2253
2254
2255 @------------------------------------------------------------------------------
2256 @ SSAT16
2257 @------------------------------------------------------------------------------
2258         ssat16  r2, #1, r7
2259         ssat16  r3, #16, r5
2260
2261 @ CHECK: ssat16 r2, #1, r7              @ encoding: [0x27,0xf3,0x00,0x02]
2262 @ CHECK: ssat16 r3, #16, r5             @ encoding: [0x25,0xf3,0x0f,0x03]
2263
2264
2265 @------------------------------------------------------------------------------
2266 @ SSAX
2267 @------------------------------------------------------------------------------
2268         ssubaddx r2, r3, r4
2269         it lt
2270         ssubaddxlt r2, r3, r4
2271         ssax r2, r3, r4
2272         it lt
2273         ssaxlt r2, r3, r4
2274
2275 @ CHECK: ssax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2276 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
2277 @ CHECK: ssaxlt r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2278 @ CHECK: ssax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2279 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
2280 @ CHECK: ssaxlt r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2281
2282
2283 @------------------------------------------------------------------------------
2284 @ SSUB16/SSUB8
2285 @------------------------------------------------------------------------------
2286         ssub16 r1, r0, r6
2287         ssub8 r9, r2, r4
2288         ite ne
2289         ssub16ne r5, r3, r2
2290         ssub8eq r5, r1, r2
2291
2292 @ CHECK: ssub16 r1, r0, r6              @ encoding: [0xd0,0xfa,0x06,0xf1]
2293 @ CHECK: ssub8  r9, r2, r4              @ encoding: [0xc2,0xfa,0x04,0xf9]
2294 @ CHECK: ite    ne                      @ encoding: [0x14,0xbf]
2295 @ CHECK: ssub16ne       r5, r3, r2      @ encoding: [0xd3,0xfa,0x02,0xf5]
2296 @ CHECK: ssub8eq        r5, r1, r2      @ encoding: [0xc1,0xfa,0x02,0xf5]
2297
2298
2299 @------------------------------------------------------------------------------
2300 @ STC{L}/STC2{L}
2301 @------------------------------------------------------------------------------
2302         stc2 p0, c8, [r1, #4]
2303         stc2 p1, c7, [r2]
2304         stc2 p2, c6, [r3, #-224]
2305         stc2 p3, c5, [r4, #-120]!
2306         stc2 p4, c4, [r5], #16
2307         stc2 p5, c3, [r6], #-72
2308         stc2l p6, c2, [r7, #4]
2309         stc2l p7, c1, [r8]
2310         stc2l p8, c0, [r9, #-224]
2311         stc2l p9, c1, [r10, #-120]!
2312         stc2l p10, c2, [r11], #16
2313         stc2l p11, c3, [r12], #-72
2314
2315         stc p12, c4, [r0, #4]
2316         stc p13, c5, [r1]
2317         stc p14, c6, [r2, #-224]
2318         stc p15, c7, [r3, #-120]!
2319         stc p5, c8, [r4], #16
2320         stc p4, c9, [r5], #-72
2321         stcl p3, c10, [r6, #4]
2322         stcl p2, c11, [r7]
2323         stcl p1, c12, [r8, #-224]
2324         stcl p0, c13, [r9, #-120]!
2325         stcl p6, c14, [r10], #16
2326         stcl p7, c15, [r11], #-72
2327
2328         stc2 p2, c8, [r1], { 25 }
2329
2330 @ CHECK: stc2   p0, c8, [r1, #4]        @ encoding: [0x81,0xfd,0x01,0x80]
2331 @ CHECK: stc2   p1, c7, [r2]            @ encoding: [0x82,0xfd,0x00,0x71]
2332 @ CHECK: stc2   p2, c6, [r3, #-224]     @ encoding: [0x03,0xfd,0x38,0x62]
2333 @ CHECK: stc2   p3, c5, [r4, #-120]!    @ encoding: [0x24,0xfd,0x1e,0x53]
2334 @ CHECK: stc2   p4, c4, [r5], #16       @ encoding: [0xa5,0xfc,0x04,0x44]
2335 @ CHECK: stc2   p5, c3, [r6], #-72      @ encoding: [0x26,0xfc,0x12,0x35]
2336 @ CHECK: stc2l  p6, c2, [r7, #4]        @ encoding: [0xc7,0xfd,0x01,0x26]
2337 @ CHECK: stc2l  p7, c1, [r8]            @ encoding: [0xc8,0xfd,0x00,0x17]
2338 @ CHECK: stc2l  p8, c0, [r9, #-224]     @ encoding: [0x49,0xfd,0x38,0x08]
2339 @ CHECK: stc2l  p9, c1, [r10, #-120]!   @ encoding: [0x6a,0xfd,0x1e,0x19]
2340 @ CHECK: stc2l  p10, c2, [r11], #16     @ encoding: [0xeb,0xfc,0x04,0x2a]
2341 @ CHECK: stc2l  p11, c3, [r12], #-72    @ encoding: [0x6c,0xfc,0x12,0x3b]
2342
2343 @ CHECK: stc    p12, c4, [r0, #4]       @ encoding: [0x80,0xed,0x01,0x4c]
2344 @ CHECK: stc    p13, c5, [r1]           @ encoding: [0x81,0xed,0x00,0x5d]
2345 @ CHECK: stc    p14, c6, [r2, #-224]    @ encoding: [0x02,0xed,0x38,0x6e]
2346 @ CHECK: stc    p15, c7, [r3, #-120]!   @ encoding: [0x23,0xed,0x1e,0x7f]
2347 @ CHECK: stc    p5, c8, [r4], #16       @ encoding: [0xa4,0xec,0x04,0x85]
2348 @ CHECK: stc    p4, c9, [r5], #-72      @ encoding: [0x25,0xec,0x12,0x94]
2349 @ CHECK: stcl   p3, c10, [r6, #4]       @ encoding: [0xc6,0xed,0x01,0xa3]
2350 @ CHECK: stcl   p2, c11, [r7]           @ encoding: [0xc7,0xed,0x00,0xb2]
2351 @ CHECK: stcl   p1, c12, [r8, #-224]    @ encoding: [0x48,0xed,0x38,0xc1]
2352 @ CHECK: stcl   p0, c13, [r9, #-120]!   @ encoding: [0x69,0xed,0x1e,0xd0]
2353 @ CHECK: stcl   p6, c14, [r10], #16     @ encoding: [0xea,0xec,0x04,0xe6]
2354 @ CHECK: stcl   p7, c15, [r11], #-72    @ encoding: [0x6b,0xec,0x12,0xf7]
2355
2356 @ CHECK: stc2   p2, c8, [r1], {25}      @ encoding: [0x81,0xfc,0x19,0x82]
2357
2358
2359 @------------------------------------------------------------------------------
2360 @ STMIA
2361 @------------------------------------------------------------------------------
2362         stmia.w r4, {r4, r5, r8, r9}
2363         stmia.w r4, {r5, r6}
2364         stmia.w r5!, {r3, r8}
2365         stm.w r4, {r4, r5, r8, r9}
2366         stm.w r4, {r5, r6}
2367         stm.w r5!, {r3, r8}
2368         stm.w r5!, {r1, r2}
2369         stm.w r2, {r1, r2}
2370
2371         stmia r4, {r4, r5, r8, r9}
2372         stmia r4, {r5, r6}
2373         stmia r5!, {r3, r8}
2374         stm r4, {r4, r5, r8, r9}
2375         stm r4, {r5, r6}
2376         stm r5!, {r3, r8}
2377         stmea r5!, {r3, r8}
2378
2379 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2380 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2381 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2382 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2383 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2384 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2385 @ CHECK: stm.w  r5!, {r1, r2}           @ encoding: [0xa5,0xe8,0x06,0x00]
2386 @ CHECK: stm.w  r2, {r1, r2}            @ encoding: [0x82,0xe8,0x06,0x00]
2387
2388 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2389 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2390 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2391 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2392 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2393 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2394 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2395
2396
2397 @------------------------------------------------------------------------------
2398 @ STMDB
2399 @------------------------------------------------------------------------------
2400         stmdb r4, {r4, r5, r8, r9}
2401         stmdb r4, {r5, r6}
2402         stmdb r5!, {r3, r8}
2403         stmea r5!, {r3, r8}
2404         stmdb.w r5, {r0, r1}
2405
2406 @ CHECK: stmdb  r4, {r4, r5, r8, r9}    @ encoding: [0x04,0xe9,0x30,0x03]
2407 @ CHECK: stmdb  r4, {r5, r6}            @ encoding: [0x04,0xe9,0x60,0x00]
2408 @ CHECK: stmdb  r5!, {r3, r8}           @ encoding: [0x25,0xe9,0x08,0x01]
2409 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2410 @ CHECK: stmdb  r5, {r0, r1}            @ encoding: [0x05,0xe9,0x03,0x00]
2411
2412
2413 @------------------------------------------------------------------------------
2414 @ STR(immediate)
2415 @------------------------------------------------------------------------------
2416         str r5, [r5, #-4]
2417         str r5, [r6, #32]
2418         str r5, [r6, #33]
2419         str r5, [r6, #257]
2420         str.w pc, [r7, #257]
2421         str r2, [r4, #255]!
2422         str r8, [sp, #4]!
2423         str lr, [sp, #-4]!
2424         str r2, [r4], #255
2425         str r8, [sp], #4
2426         str lr, [sp], #-4
2427
2428 @ CHECK: str    r5, [r5, #-4]           @ encoding: [0x45,0xf8,0x04,0x5c]
2429 @ CHECK: str    r5, [r6, #32]           @ encoding: [0x35,0x62]
2430 @ CHECK: str.w  r5, [r6, #33]           @ encoding: [0xc6,0xf8,0x21,0x50]
2431 @ CHECK: str.w  r5, [r6, #257]          @ encoding: [0xc6,0xf8,0x01,0x51]
2432 @ CHECK: str.w  pc, [r7, #257]          @ encoding: [0xc7,0xf8,0x01,0xf1]
2433 @ CHECK: str    r2, [r4, #255]!         @ encoding: [0x44,0xf8,0xff,0x2f]
2434 @ CHECK: str    r8, [sp, #4]!           @ encoding: [0x4d,0xf8,0x04,0x8f]
2435 @ CHECK: str    lr, [sp, #-4]!          @ encoding: [0x4d,0xf8,0x04,0xed]
2436 @ CHECK: str    r2, [r4], #255          @ encoding: [0x44,0xf8,0xff,0x2b]
2437 @ CHECK: str    r8, [sp], #4            @ encoding: [0x4d,0xf8,0x04,0x8b]
2438 @ CHECK: str    lr, [sp], #-4           @ encoding: [0x4d,0xf8,0x04,0xe9]
2439
2440
2441 @------------------------------------------------------------------------------
2442 @ STR(register)
2443 @------------------------------------------------------------------------------
2444         str r1, [r8, r1]
2445         str.w r4, [r5, r2]
2446         str r6, [r0, r2, lsl #3]
2447         str r8, [r8, r2, lsl #2]
2448         str r7, [sp, r2, lsl #1]
2449         str r7, [sp, r2, lsl #0]
2450
2451 @ CHECK: str.w  r1, [r8, r1]            @ encoding: [0x48,0xf8,0x01,0x10]
2452 @ CHECK: str.w  r4, [r5, r2]            @ encoding: [0x45,0xf8,0x02,0x40]
2453 @ CHECK: str.w  r6, [r0, r2, lsl #3]    @ encoding: [0x40,0xf8,0x32,0x60]
2454 @ CHECK: str.w  r8, [r8, r2, lsl #2]    @ encoding: [0x48,0xf8,0x22,0x80]
2455 @ CHECK: str.w  r7, [sp, r2, lsl #1]    @ encoding: [0x4d,0xf8,0x12,0x70]
2456 @ CHECK: str.w  r7, [sp, r2]            @ encoding: [0x4d,0xf8,0x02,0x70]
2457
2458
2459 @------------------------------------------------------------------------------
2460 @ STRB(immediate)
2461 @------------------------------------------------------------------------------
2462         strb r5, [r5, #-4]
2463         strb r5, [r6, #32]
2464         strb r5, [r6, #33]
2465         strb r5, [r6, #257]
2466         strb.w lr, [r7, #257]
2467         strb r5, [r8, #255]!
2468         strb r2, [r5, #4]!
2469         strb r1, [r4, #-4]!
2470         strb lr, [r3], #255
2471         strb r9, [r2], #4
2472         strb r3, [sp], #-4
2473         strb r4, [r8, #-0]!
2474
2475 @ CHECK: strb   r5, [r5, #-4]           @ encoding: [0x05,0xf8,0x04,0x5c]
2476 @ CHECK: strb.w r5, [r6, #32]           @ encoding: [0x86,0xf8,0x20,0x50]
2477 @ CHECK: strb.w r5, [r6, #33]           @ encoding: [0x86,0xf8,0x21,0x50]
2478 @ CHECK: strb.w r5, [r6, #257]          @ encoding: [0x86,0xf8,0x01,0x51]
2479 @ CHECK: strb.w lr, [r7, #257]          @ encoding: [0x87,0xf8,0x01,0xe1]
2480 @ CHECK: strb   r5, [r8, #255]!         @ encoding: [0x08,0xf8,0xff,0x5f]
2481 @ CHECK: strb   r2, [r5, #4]!           @ encoding: [0x05,0xf8,0x04,0x2f]
2482 @ CHECK: strb   r1, [r4, #-4]!          @ encoding: [0x04,0xf8,0x04,0x1d]
2483 @ CHECK: strb   lr, [r3], #255          @ encoding: [0x03,0xf8,0xff,0xeb]
2484 @ CHECK: strb   r9, [r2], #4            @ encoding: [0x02,0xf8,0x04,0x9b]
2485 @ CHECK: strb   r3, [sp], #-4           @ encoding: [0x0d,0xf8,0x04,0x39]
2486 @ CHECK: strb   r4, [r8, #-0]!          @ encoding: [0x08,0xf8,0x00,0x4d]
2487
2488
2489 @------------------------------------------------------------------------------
2490 @ STRB(register)
2491 @------------------------------------------------------------------------------
2492         strb r1, [r8, r1]
2493         strb.w r4, [r5, r2]
2494         strb r6, [r0, r2, lsl #3]
2495         strb r8, [r8, r2, lsl #2]
2496         strb r7, [sp, r2, lsl #1]
2497         strb r7, [sp, r2, lsl #0]
2498
2499 @ CHECK: strb.w r1, [r8, r1]            @ encoding: [0x08,0xf8,0x01,0x10]
2500 @ CHECK: strb.w r4, [r5, r2]            @ encoding: [0x05,0xf8,0x02,0x40]
2501 @ CHECK: strb.w r6, [r0, r2, lsl #3]    @ encoding: [0x00,0xf8,0x32,0x60]
2502 @ CHECK: strb.w r8, [r8, r2, lsl #2]    @ encoding: [0x08,0xf8,0x22,0x80]
2503 @ CHECK: strb.w r7, [sp, r2, lsl #1]    @ encoding: [0x0d,0xf8,0x12,0x70]
2504 @ CHECK: strb.w r7, [sp, r2]            @ encoding: [0x0d,0xf8,0x02,0x70]
2505
2506
2507 @------------------------------------------------------------------------------
2508 @ STRBT
2509 @------------------------------------------------------------------------------
2510         strbt r1, [r2]
2511         strbt r1, [r8, #0]
2512         strbt r1, [r8, #3]
2513         strbt r1, [r8, #255]
2514
2515 @ CHECK: strbt  r1, [r2]                @ encoding: [0x02,0xf8,0x00,0x1e]
2516 @ CHECK: strbt  r1, [r8]                @ encoding: [0x08,0xf8,0x00,0x1e]
2517 @ CHECK: strbt  r1, [r8, #3]            @ encoding: [0x08,0xf8,0x03,0x1e]
2518 @ CHECK: strbt  r1, [r8, #255]          @ encoding: [0x08,0xf8,0xff,0x1e]
2519
2520
2521 @------------------------------------------------------------------------------
2522 @ STRD
2523 @------------------------------------------------------------------------------
2524         strd r3, r5, [r6, #24]
2525         strd r3, r5, [r6, #24]!
2526         strd r3, r5, [r6], #4
2527         strd r3, r5, [r6], #-8
2528         strd r3, r5, [r6]
2529         strd r8, r1, [r3, #0]
2530
2531 @ CHECK: strd   r3, r5, [r6, #24]       @ encoding: [0xc6,0xe9,0x06,0x35]
2532 @ CHECK: strd   r3, r5, [r6, #24]!      @ encoding: [0xe6,0xe9,0x06,0x35]
2533 @ CHECK: strd   r3, r5, [r6], #4        @ encoding: [0xe6,0xe8,0x01,0x35]
2534 @ CHECK: strd   r3, r5, [r6], #-8       @ encoding: [0x66,0xe8,0x02,0x35]
2535 @ CHECK: strd   r3, r5, [r6]            @ encoding: [0xc6,0xe9,0x00,0x35]
2536 @ CHECK: strd   r8, r1, [r3]            @ encoding: [0xc3,0xe9,0x00,0x81]
2537
2538
2539 @------------------------------------------------------------------------------
2540 @ STREX/STREXB/STREXH/STREXD
2541 @------------------------------------------------------------------------------
2542         strex r1, r8, [r4]
2543         strex r8, r2, [r4, #0]
2544         strex r2, r12, [sp, #128]
2545         strexb r5, r1, [r7]
2546         strexh r9, r7, [r12]
2547         strexd r9, r3, r6, [r4]
2548
2549 @ CHECK: strex  r1, r8, [r4]            @ encoding: [0x44,0xe8,0x00,0x81]
2550 @ CHECK: strex  r8, r2, [r4]            @ encoding: [0x44,0xe8,0x00,0x28]
2551 @ CHECK: strex  r2, r12, [sp, #128]     @ encoding: [0x4d,0xe8,0x20,0xc2]
2552 @ CHECK: strexb r5, r1, [r7]            @ encoding: [0xc7,0xe8,0x45,0x1f]
2553 @ CHECK: strexh r9, r7, [r12]           @ encoding: [0xcc,0xe8,0x59,0x7f]
2554 @ CHECK: strexd r9, r3, r6, [r4]        @ encoding: [0xc4,0xe8,0x79,0x36]
2555
2556
2557 @------------------------------------------------------------------------------
2558 @ STRH(immediate)
2559 @------------------------------------------------------------------------------
2560         strh r5, [r5, #-4]
2561         strh r5, [r6, #32]
2562         strh r5, [r6, #33]
2563         strh r5, [r6, #257]
2564         strh.w lr, [r7, #257]
2565         strh r5, [r8, #255]!
2566         strh r2, [r5, #4]!
2567         strh r1, [r4, #-4]!
2568         strh lr, [r3], #255
2569         strh r9, [r2], #4
2570         strh r3, [sp], #-4
2571
2572 @ CHECK: strh   r5, [r5, #-4]           @ encoding: [0x25,0xf8,0x04,0x5c]
2573 @ CHECK: strh   r5, [r6, #32]           @ encoding: [0x35,0x84]
2574 @ CHECK: strh.w r5, [r6, #33]           @ encoding: [0xa6,0xf8,0x21,0x50]
2575 @ CHECK: strh.w r5, [r6, #257]          @ encoding: [0xa6,0xf8,0x01,0x51]
2576 @ CHECK: strh.w lr, [r7, #257]          @ encoding: [0xa7,0xf8,0x01,0xe1]
2577 @ CHECK: strh   r5, [r8, #255]!         @ encoding: [0x28,0xf8,0xff,0x5f]
2578 @ CHECK: strh   r2, [r5, #4]!           @ encoding: [0x25,0xf8,0x04,0x2f]
2579 @ CHECK: strh   r1, [r4, #-4]!          @ encoding: [0x24,0xf8,0x04,0x1d]
2580 @ CHECK: strh   lr, [r3], #255          @ encoding: [0x23,0xf8,0xff,0xeb]
2581 @ CHECK: strh   r9, [r2], #4            @ encoding: [0x22,0xf8,0x04,0x9b]
2582 @ CHECK: strh   r3, [sp], #-4           @ encoding: [0x2d,0xf8,0x04,0x39]
2583
2584
2585 @------------------------------------------------------------------------------
2586 @ STRH(register)
2587 @------------------------------------------------------------------------------
2588         strh r1, [r8, r1]
2589         strh.w r4, [r5, r2]
2590         strh r6, [r0, r2, lsl #3]
2591         strh r8, [r8, r2, lsl #2]
2592         strh r7, [sp, r2, lsl #1]
2593         strh r7, [sp, r2, lsl #0]
2594
2595 @ CHECK: strh.w r1, [r8, r1]            @ encoding: [0x28,0xf8,0x01,0x10]
2596 @ CHECK: strh.w r4, [r5, r2]            @ encoding: [0x25,0xf8,0x02,0x40]
2597 @ CHECK: strh.w r6, [r0, r2, lsl #3]    @ encoding: [0x20,0xf8,0x32,0x60]
2598 @ CHECK: strh.w r8, [r8, r2, lsl #2]    @ encoding: [0x28,0xf8,0x22,0x80]
2599 @ CHECK: strh.w r7, [sp, r2, lsl #1]    @ encoding: [0x2d,0xf8,0x12,0x70]
2600 @ CHECK: strh.w r7, [sp, r2]            @ encoding: [0x2d,0xf8,0x02,0x70]
2601
2602
2603 @------------------------------------------------------------------------------
2604 @ STRHT
2605 @------------------------------------------------------------------------------
2606         strht r1, [r2]
2607         strht r1, [r8, #0]
2608         strht r1, [r8, #3]
2609         strht r1, [r8, #255]
2610
2611 @ CHECK: strht  r1, [r2]                @ encoding: [0x22,0xf8,0x00,0x1e]
2612 @ CHECK: strht  r1, [r8]                @ encoding: [0x28,0xf8,0x00,0x1e]
2613 @ CHECK: strht  r1, [r8, #3]            @ encoding: [0x28,0xf8,0x03,0x1e]
2614 @ CHECK: strht  r1, [r8, #255]          @ encoding: [0x28,0xf8,0xff,0x1e]
2615
2616
2617 @------------------------------------------------------------------------------
2618 @ STRT
2619 @------------------------------------------------------------------------------
2620         strt r1, [r2]
2621         strt r1, [r8, #0]
2622         strt r1, [r8, #3]
2623         strt r1, [r8, #255]
2624
2625 @ CHECK: strt   r1, [r2]                @ encoding: [0x42,0xf8,0x00,0x1e]
2626 @ CHECK: strt   r1, [r8]                @ encoding: [0x48,0xf8,0x00,0x1e]
2627 @ CHECK: strt   r1, [r8, #3]            @ encoding: [0x48,0xf8,0x03,0x1e]
2628 @ CHECK: strt   r1, [r8, #255]          @ encoding: [0x48,0xf8,0xff,0x1e]
2629
2630
2631 @------------------------------------------------------------------------------
2632 @ SUB (immediate)
2633 @------------------------------------------------------------------------------
2634         itet eq
2635         subeq r1, r2, #4
2636         subwne r5, r3, #1023
2637         subeq r4, r5, #293
2638         sub r2, sp, #1024
2639         sub r2, r8, #0xff00
2640         sub r2, r3, #257
2641         subw r2, r3, #257
2642         sub r12, r6, #0x100
2643         subw r12, r6, #0x100
2644         subs r1, r2, #0x1f0
2645         sub r2, #1
2646         sub r0, r0, #32
2647
2648 @ CHECK: itet   eq                      @ encoding: [0x0a,0xbf]
2649 @ CHECK: subeq  r1, r2, #4              @ encoding: [0x11,0x1f]
2650 @ CHECK: subwne r5, r3, #1023           @ encoding: [0xa3,0xf2,0xff,0x35]
2651 @ CHECK: subweq r4, r5, #293            @ encoding: [0xa5,0xf2,0x25,0x14]
2652 @ CHECK: sub.w  r2, sp, #1024           @ encoding: [0xad,0xf5,0x80,0x62]
2653 @ CHECK: sub.w  r2, r8, #65280          @ encoding: [0xa8,0xf5,0x7f,0x42]
2654 @ CHECK: subw   r2, r3, #257            @ encoding: [0xa3,0xf2,0x01,0x12]
2655 @ CHECK: subw   r2, r3, #257            @ encoding: [0xa3,0xf2,0x01,0x12]
2656 @ CHECK: sub.w  r12, r6, #256           @ encoding: [0xa6,0xf5,0x80,0x7c]
2657 @ CHECK: subw   r12, r6, #256           @ encoding: [0xa6,0xf2,0x00,0x1c]
2658 @ CHECK: subs.w r1, r2, #496            @ encoding: [0xb2,0xf5,0xf8,0x71]
2659 @ CHECK: sub.w  r2, r2, #1              @ encoding: [0xa2,0xf1,0x01,0x02]
2660 @ CHECK: sub.w  r0, r0, #32             @ encoding: [0xa0,0xf1,0x20,0x00]
2661
2662
2663 @------------------------------------------------------------------------------
2664 @ SUB (register)
2665 @------------------------------------------------------------------------------
2666         sub r4, r5, r6
2667         sub r4, r5, r6, lsl #5
2668         sub r4, r5, r6, lsr #5
2669         sub.w r4, r5, r6, lsr #5
2670         sub r4, r5, r6, asr #5
2671         sub r4, r5, r6, ror #5
2672         sub.w r5, r2, r12, rrx
2673
2674 @ CHECK: sub.w  r4, r5, r6              @ encoding: [0xa5,0xeb,0x06,0x04]
2675 @ CHECK: sub.w  r4, r5, r6, lsl #5      @ encoding: [0xa5,0xeb,0x46,0x14]
2676 @ CHECK: sub.w  r4, r5, r6, lsr #5      @ encoding: [0xa5,0xeb,0x56,0x14]
2677 @ CHECK: sub.w  r4, r5, r6, lsr #5      @ encoding: [0xa5,0xeb,0x56,0x14]
2678 @ CHECK: sub.w  r4, r5, r6, asr #5      @ encoding: [0xa5,0xeb,0x66,0x14]
2679 @ CHECK: sub.w  r4, r5, r6, ror #5      @ encoding: [0xa5,0xeb,0x76,0x14]
2680 @ CHECK: sub.w r5, r2, r12, rrx         @ encoding: [0xa2,0xeb,0x3c,0x05]
2681
2682
2683 @------------------------------------------------------------------------------
2684 @ SVC
2685 @------------------------------------------------------------------------------
2686         svc #0
2687         ite eq
2688         svceq #255
2689         swine #33
2690
2691 @ CHECK: svc    #0                      @ encoding: [0x00,0xdf]
2692 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
2693 @ CHECK: svceq  #255                    @ encoding: [0xff,0xdf]
2694 @ CHECK: svcne  #33                     @ encoding: [0x21,0xdf]
2695
2696
2697 @------------------------------------------------------------------------------
2698 @ SXTAB
2699 @------------------------------------------------------------------------------
2700         sxtab r2, r3, r4
2701         sxtab r4, r5, r6, ror #0
2702         it lt
2703         sxtablt r6, r2, r9, ror #8
2704         sxtab r5, r1, r4, ror #16
2705         sxtab r7, r8, r3, ror #24
2706
2707 @ CHECK: sxtab  r2, r3, r4              @ encoding: [0x43,0xfa,0x84,0xf2]
2708 @ CHECK: sxtab  r4, r5, r6              @ encoding: [0x45,0xfa,0x86,0xf4]
2709 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
2710 @ CHECK: sxtablt r6, r2, r9, ror #8     @ encoding: [0x42,0xfa,0x99,0xf6]
2711 @ CHECK: sxtab  r5, r1, r4, ror #16     @ encoding: [0x41,0xfa,0xa4,0xf5]
2712 @ CHECK: sxtab  r7, r8, r3, ror #24     @ encoding: [0x48,0xfa,0xb3,0xf7]
2713
2714
2715 @------------------------------------------------------------------------------
2716 @ SXTAB16
2717 @------------------------------------------------------------------------------
2718         sxtab16 r6, r2, r7, ror #0
2719         sxtab16 r3, r5, r8, ror #8
2720         sxtab16 r3, r2, r1, ror #16
2721         ite ne
2722         sxtab16ne r0, r1, r4
2723         sxtab16eq r1, r2, r3, ror #24
2724
2725 @ CHECK: sxtab16 r6, r2, r7             @ encoding: [0x22,0xfa,0x87,0xf6]
2726 @ CHECK: sxtab16 r3, r5, r8, ror #8     @ encoding: [0x25,0xfa,0x98,0xf3]
2727 @ CHECK: sxtab16 r3, r2, r1, ror #16    @ encoding: [0x22,0xfa,0xa1,0xf3]
2728 @ CHECK: ite    ne                      @ encoding: [0x14,0xbf]
2729 @ CHECK: sxtab16ne r0, r1, r4           @ encoding: [0x21,0xfa,0x84,0xf0]
2730 @ CHECK: sxtab16eq r1, r2, r3, ror #24  @ encoding: [0x22,0xfa,0xb3,0xf1]
2731
2732
2733 @------------------------------------------------------------------------------
2734 @ SXTAH
2735 @------------------------------------------------------------------------------
2736         sxtah r1, r3, r9
2737         sxtah r3, r8, r3, ror #8
2738         sxtah r9, r3, r3, ror #24
2739         ite hi
2740         sxtahhi r6, r1, r6, ror #0
2741         sxtahls r2, r2, r4, ror #16
2742
2743 @ CHECK: sxtah  r1, r3, r9              @ encoding: [0x03,0xfa,0x89,0xf1]
2744 @ CHECK: sxtah  r3, r8, r3, ror #8      @ encoding: [0x08,0xfa,0x93,0xf3]
2745 @ CHECK: sxtah  r9, r3, r3, ror #24     @ encoding: [0x03,0xfa,0xb3,0xf9]
2746 @ CHECK: ite    hi                      @ encoding: [0x8c,0xbf]
2747 @ CHECK: sxtahhi r6, r1, r6             @ encoding: [0x01,0xfa,0x86,0xf6]
2748 @ CHECK: sxtahls r2, r2, r4, ror #16    @ encoding: [0x02,0xfa,0xa4,0xf2]
2749
2750
2751 @------------------------------------------------------------------------------
2752 @ SXTB
2753 @------------------------------------------------------------------------------
2754         sxtb r5, r6, ror #0
2755         sxtb r6, r9, ror #8
2756         sxtb r8, r3, ror #24
2757         ite ge
2758         sxtbge r2, r4
2759         sxtblt r5, r1, ror #16
2760         sxtb.w  r7, r8
2761
2762 @ CHECK: sxtb   r5, r6                  @ encoding: [0x75,0xb2]
2763 @ CHECK: sxtb.w r6, r9, ror #8          @ encoding: [0x4f,0xfa,0x99,0xf6]
2764 @ CHECK: sxtb.w r8, r3, ror #24         @ encoding: [0x4f,0xfa,0xb3,0xf8]
2765 @ CHECK: ite    ge                      @ encoding: [0xac,0xbf]
2766 @ CHECK: sxtbge r2, r4                  @ encoding: [0x62,0xb2]
2767 @ CHECK: sxtblt.w       r5, r1, ror #16 @ encoding: [0x4f,0xfa,0xa1,0xf5]
2768 @ CHECK: sxtb.w r7, r8                  @ encoding: [0x4f,0xfa,0x88,0xf7]
2769
2770
2771 @------------------------------------------------------------------------------
2772 @ SXTB16
2773 @------------------------------------------------------------------------------
2774         sxtb16 r1, r4
2775         sxtb16 r6, r7, ror #0
2776         sxtb16 r3, r1, ror #16
2777         ite cs
2778         sxtb16cs r3, r5, ror #8
2779         sxtb16lo r2, r3, ror #24
2780
2781 @ CHECK: sxtb16 r1, r4                  @ encoding: [0x2f,0xfa,0x84,0xf1]
2782 @ CHECK: sxtb16 r6, r7                  @ encoding: [0x2f,0xfa,0x87,0xf6]
2783 @ CHECK: sxtb16 r3, r1, ror #16         @ encoding: [0x2f,0xfa,0xa1,0xf3]
2784 @ CHECK: ite    hs                      @ encoding: [0x2c,0xbf]
2785 @ CHECK: sxtb16hs       r3, r5, ror #8  @ encoding: [0x2f,0xfa,0x95,0xf3]
2786 @ CHECK: sxtb16lo       r2, r3, ror #24 @ encoding: [0x2f,0xfa,0xb3,0xf2]
2787
2788
2789 @------------------------------------------------------------------------------
2790 @ SXTH
2791 @------------------------------------------------------------------------------
2792         sxth r1, r6, ror #0
2793         sxth r3, r8, ror #8
2794         sxth r9, r3, ror #24
2795         itt ne
2796         sxthne r3, r9
2797         sxthne r2, r2, ror #16
2798         sxth.w  r7, r8
2799
2800 @ CHECK: sxth   r1, r6                  @ encoding: [0x31,0xb2]
2801 @ CHECK: sxth.w r3, r8, ror #8          @ encoding: [0x0f,0xfa,0x98,0xf3]
2802 @ CHECK: sxth.w r9, r3, ror #24         @ encoding: [0x0f,0xfa,0xb3,0xf9]
2803 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
2804 @ CHECK: sxthne.w       r3, r9          @ encoding: [0x0f,0xfa,0x89,0xf3]
2805 @ CHECK: sxthne.w       r2, r2, ror #16 @ encoding: [0x0f,0xfa,0xa2,0xf2]
2806 @ CHECK: sxth.w r7, r8                  @ encoding: [0x0f,0xfa,0x88,0xf7]
2807
2808
2809 @------------------------------------------------------------------------------
2810 @ SXTB
2811 @------------------------------------------------------------------------------
2812         sxtb r5, r6, ror #0
2813         sxtb.w r6, r9, ror #8
2814         sxtb r8, r3, ror #24
2815         ite ge
2816         sxtbge r2, r4
2817         sxtblt r5, r1, ror #16
2818
2819 @ CHECK: sxtb   r5, r6                  @ encoding: [0x75,0xb2]
2820 @ CHECK: sxtb.w r6, r9, ror #8          @ encoding: [0x4f,0xfa,0x99,0xf6]
2821 @ CHECK: sxtb.w r8, r3, ror #24         @ encoding: [0x4f,0xfa,0xb3,0xf8]
2822 @ CHECK: ite    ge                      @ encoding: [0xac,0xbf]
2823 @ CHECK: sxtbge r2, r4                  @ encoding: [0x62,0xb2]
2824 @ CHECK: sxtblt.w       r5, r1, ror #16 @ encoding: [0x4f,0xfa,0xa1,0xf5]
2825
2826
2827 @------------------------------------------------------------------------------
2828 @ SXTB16
2829 @------------------------------------------------------------------------------
2830         sxtb16 r1, r4
2831         sxtb16 r6, r7, ror #0
2832         sxtb16 r3, r1, ror #16
2833         ite cs
2834         sxtb16cs r3, r5, ror #8
2835         sxtb16lo r2, r3, ror #24
2836
2837 @ CHECK: sxtb16 r1, r4                  @ encoding: [0x2f,0xfa,0x84,0xf1]
2838 @ CHECK: sxtb16 r6, r7                  @ encoding: [0x2f,0xfa,0x87,0xf6]
2839 @ CHECK: sxtb16 r3, r1, ror #16         @ encoding: [0x2f,0xfa,0xa1,0xf3]
2840 @ CHECK: ite    hs                      @ encoding: [0x2c,0xbf]
2841 @ CHECK: sxtb16hs       r3, r5, ror #8  @ encoding: [0x2f,0xfa,0x95,0xf3]
2842 @ CHECK: sxtb16lo       r2, r3, ror #24 @ encoding: [0x2f,0xfa,0xb3,0xf2]
2843
2844
2845 @------------------------------------------------------------------------------
2846 @ SXTH
2847 @------------------------------------------------------------------------------
2848         sxth r1, r6, ror #0
2849         sxth.w r3, r8, ror #8
2850         sxth r9, r3, ror #24
2851         itt ne
2852         sxthne r3, r9
2853         sxthne r2, r2, ror #16
2854
2855 @ CHECK: sxth   r1, r6                  @ encoding: [0x31,0xb2]
2856 @ CHECK: sxth.w r3, r8, ror #8          @ encoding: [0x0f,0xfa,0x98,0xf3]
2857 @ CHECK: sxth.w r9, r3, ror #24         @ encoding: [0x0f,0xfa,0xb3,0xf9]
2858 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
2859 @ CHECK: sxthne.w       r3, r9          @ encoding: [0x0f,0xfa,0x89,0xf3]
2860 @ CHECK: sxthne.w       r2, r2, ror #16 @ encoding: [0x0f,0xfa,0xa2,0xf2]
2861
2862
2863 @------------------------------------------------------------------------------
2864 @ TBB/TBH
2865 @------------------------------------------------------------------------------
2866         tbb [r3, r8]
2867         tbh [r3, r8, lsl #1]
2868         it eq
2869         tbbeq [r3, r8]
2870         it cs
2871         tbhcs [r3, r8, lsl #1]
2872
2873 @ CHECK: tbb    [r3, r8]                @ encoding: [0xd3,0xe8,0x08,0xf0]
2874 @ CHECK: tbh    [r3, r8, lsl #1]        @ encoding: [0xd3,0xe8,0x18,0xf0]
2875 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
2876 @ CHECK: tbbeq  [r3, r8]                @ encoding: [0xd3,0xe8,0x08,0xf0]
2877 @ CHECK: it     hs                      @ encoding: [0x28,0xbf]
2878 @ CHECK: tbhhs  [r3, r8, lsl #1]        @ encoding: [0xd3,0xe8,0x18,0xf0]
2879
2880
2881 @------------------------------------------------------------------------------
2882 @ TEQ
2883 @------------------------------------------------------------------------------
2884         teq r5, #0xf000
2885         teq r4, r5
2886         teq r4, r5, lsl #5
2887         teq r4, r5, lsr #5
2888         teq r4, r5, lsr #5
2889         teq r4, r5, asr #5
2890         teq r4, r5, ror #5
2891
2892 @ CHECK: teq.w  r5, #61440              @ encoding: [0x95,0xf4,0x70,0x4f]
2893 @ CHECK: teq.w  r4, r5                  @ encoding: [0x94,0xea,0x05,0x0f]
2894 @ CHECK: teq.w  r4, r5, lsl #5          @ encoding: [0x94,0xea,0x45,0x1f]
2895 @ CHECK: teq.w  r4, r5, lsr #5          @ encoding: [0x94,0xea,0x55,0x1f]
2896 @ CHECK: teq.w  r4, r5, lsr #5          @ encoding: [0x94,0xea,0x55,0x1f]
2897 @ CHECK: teq.w  r4, r5, asr #5          @ encoding: [0x94,0xea,0x65,0x1f]
2898 @ CHECK: teq.w  r4, r5, ror #5          @ encoding: [0x94,0xea,0x75,0x1f]
2899
2900
2901 @------------------------------------------------------------------------------
2902 @ TST
2903 @------------------------------------------------------------------------------
2904         tst r5, #0xf000
2905         tst r2, r5
2906         tst r3, r12, lsl #5
2907         tst r4, r11, lsr #4
2908         tst r5, r10, lsr #12
2909         tst r6, r9, asr #30
2910         tst r7, r8, ror #2
2911
2912 @ CHECK: tst.w  r5, #61440              @ encoding: [0x15,0xf4,0x70,0x4f]
2913 @ CHECK: tst    r2, r5                  @ encoding: [0x2a,0x42]
2914 @ CHECK: tst.w  r3, r12, lsl #5         @ encoding: [0x13,0xea,0x4c,0x1f]
2915 @ CHECK: tst.w  r4, r11, lsr #4         @ encoding: [0x14,0xea,0x1b,0x1f]
2916 @ CHECK: tst.w  r5, r10, lsr #12        @ encoding: [0x15,0xea,0x1a,0x3f]
2917 @ CHECK: tst.w  r6, r9, asr #30         @ encoding: [0x16,0xea,0xa9,0x7f]
2918 @ CHECK: tst.w  r7, r8, ror #2          @ encoding: [0x17,0xea,0xb8,0x0f]
2919
2920
2921 @------------------------------------------------------------------------------
2922 @ UADD16/UADD8
2923 @------------------------------------------------------------------------------
2924         uadd16 r1, r2, r3
2925         uadd8 r1, r2, r3
2926         ite gt
2927         uadd16gt r1, r2, r3
2928         uadd8le r1, r2, r3
2929
2930 @ CHECK: uadd16 r1, r2, r3              @ encoding: [0x92,0xfa,0x43,0xf1]
2931 @ CHECK: uadd8  r1, r2, r3              @ encoding: [0x82,0xfa,0x43,0xf1]
2932 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
2933 @ CHECK: uadd16gt       r1, r2, r3      @ encoding: [0x92,0xfa,0x43,0xf1]
2934 @ CHECK: uadd8le        r1, r2, r3      @ encoding: [0x82,0xfa,0x43,0xf1]
2935
2936
2937 @------------------------------------------------------------------------------
2938 @ UASX
2939 @------------------------------------------------------------------------------
2940         uasx r9, r12, r0
2941         it eq
2942         uasxeq r9, r12, r0
2943         uaddsubx r9, r12, r0
2944         it eq
2945         uaddsubxeq r9, r12, r0
2946
2947 @ CHECK: uasx   r9, r12, r0             @ encoding: [0xac,0xfa,0x40,0xf9]
2948 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
2949 @ CHECK: uasxeq r9, r12, r0             @ encoding: [0xac,0xfa,0x40,0xf9]
2950 @ CHECK: uasx   r9, r12, r0             @ encoding: [0xac,0xfa,0x40,0xf9]
2951 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
2952 @ CHECK: uasxeq r9, r12, r0             @ encoding: [0xac,0xfa,0x40,0xf9]
2953
2954
2955 @------------------------------------------------------------------------------
2956 @ UBFX
2957 @------------------------------------------------------------------------------
2958         ubfx r4, r5, #16, #1
2959         it gt
2960         ubfxgt r4, r5, #16, #16
2961
2962 @ CHECK: ubfx   r4, r5, #16, #1         @ encoding: [0xc5,0xf3,0x00,0x44]
2963 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
2964 @ CHECK: ubfxgt r4, r5, #16, #16        @ encoding: [0xc5,0xf3,0x0f,0x44]
2965
2966
2967 @------------------------------------------------------------------------------
2968 @ UHADD16/UHADD8
2969 @------------------------------------------------------------------------------
2970         uhadd16 r4, r8, r2
2971         uhadd8 r4, r8, r2
2972         itt gt
2973         uhadd16gt r4, r8, r2
2974         uhadd8gt r4, r8, r2
2975
2976 @ CHECK: uhadd16        r4, r8, r2      @ encoding: [0x98,0xfa,0x62,0xf4]
2977 @ CHECK: uhadd8 r4, r8, r2              @ encoding: [0x88,0xfa,0x62,0xf4]
2978 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
2979 @ CHECK: uhadd16gt      r4, r8, r2      @ encoding: [0x98,0xfa,0x62,0xf4]
2980 @ CHECK: uhadd8gt       r4, r8, r2      @ encoding: [0x88,0xfa,0x62,0xf4]
2981
2982
2983 @------------------------------------------------------------------------------
2984 @ UHASX/UHSAX
2985 @------------------------------------------------------------------------------
2986         uhasx r4, r1, r5
2987         uhsax r5, r6, r6
2988         itt gt
2989         uhasxgt r6, r9, r8
2990         uhsaxgt r7, r8, r12
2991         uhaddsubx r4, r1, r5
2992         uhsubaddx r5, r6, r6
2993         itt gt
2994         uhaddsubxgt r6, r9, r8
2995         uhsubaddxgt r7, r8, r12
2996
2997 @ CHECK: uhasx  r4, r1, r5              @ encoding: [0xa1,0xfa,0x65,0xf4]
2998 @ CHECK: uhsax  r5, r6, r6              @ encoding: [0xe6,0xfa,0x66,0xf5]
2999 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
3000 @ CHECK: uhasxgt r6, r9, r8             @ encoding: [0xa9,0xfa,0x68,0xf6]
3001 @ CHECK: uhsaxgt r7, r8, r12            @ encoding: [0xe8,0xfa,0x6c,0xf7]
3002 @ CHECK: uhasx  r4, r1, r5              @ encoding: [0xa1,0xfa,0x65,0xf4]
3003 @ CHECK: uhsax  r5, r6, r6              @ encoding: [0xe6,0xfa,0x66,0xf5]
3004 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
3005 @ CHECK: uhasxgt r6, r9, r8             @ encoding: [0xa9,0xfa,0x68,0xf6]
3006 @ CHECK: uhsaxgt r7, r8, r12            @ encoding: [0xe8,0xfa,0x6c,0xf7]
3007
3008
3009 @------------------------------------------------------------------------------
3010 @ UHSUB16/UHSUB8
3011 @------------------------------------------------------------------------------
3012         uhsub16 r5, r8, r3
3013         uhsub8 r1, r7, r6
3014         itt lt
3015         uhsub16lt r4, r9, r12
3016         uhsub8lt r3, r1, r5
3017
3018 @ CHECK: uhsub16        r5, r8, r3      @ encoding: [0xd8,0xfa,0x63,0xf5]
3019 @ CHECK: uhsub8 r1, r7, r6              @ encoding: [0xc7,0xfa,0x66,0xf1]
3020 @ CHECK: itt    lt                      @ encoding: [0xbc,0xbf]
3021 @ CHECK: uhsub16lt      r4, r9, r12     @ encoding: [0xd9,0xfa,0x6c,0xf4]
3022 @ CHECK: uhsub8lt       r3, r1, r5      @ encoding: [0xc1,0xfa,0x65,0xf3]
3023
3024
3025 @------------------------------------------------------------------------------
3026 @ UMAAL
3027 @------------------------------------------------------------------------------
3028         umaal r3, r4, r5, r6
3029         it lt
3030         umaallt r3, r4, r5, r6
3031
3032 @ CHECK: umaal  r3, r4, r5, r6          @ encoding: [0xe5,0xfb,0x66,0x34]
3033 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
3034 @ CHECK: umaallt        r3, r4, r5, r6  @ encoding: [0xe5,0xfb,0x66,0x34]
3035
3036
3037 @------------------------------------------------------------------------------
3038 @ UMLAL
3039 @------------------------------------------------------------------------------
3040         umlal r2, r4, r6, r8
3041         it gt
3042         umlalgt r6, r1, r2, r6
3043
3044 @ CHECK: umlal  r2, r4, r6, r8          @ encoding: [0xe6,0xfb,0x08,0x24]
3045 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
3046 @ CHECK: umlalgt        r6, r1, r2, r6  @ encoding: [0xe2,0xfb,0x06,0x61]
3047
3048
3049 @------------------------------------------------------------------------------
3050 @ UMULL
3051 @------------------------------------------------------------------------------
3052         umull r2, r4, r6, r8
3053         it gt
3054         umullgt r6, r1, r2, r6
3055
3056 @ CHECK: umull  r2, r4, r6, r8          @ encoding: [0xa6,0xfb,0x08,0x24]
3057 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
3058 @ CHECK: umullgt        r6, r1, r2, r6  @ encoding: [0xa2,0xfb,0x06,0x61]
3059
3060
3061 @------------------------------------------------------------------------------
3062 @ UQADD16/UQADD8
3063 @------------------------------------------------------------------------------
3064         uqadd16 r1, r2, r3
3065         uqadd8 r3, r4, r8
3066         ite gt
3067         uqadd16gt r4, r7, r9
3068         uqadd8le r8, r1, r2
3069
3070 @ CHECK: uqadd16        r1, r2, r3      @ encoding: [0x92,0xfa,0x53,0xf1]
3071 @ CHECK: uqadd8 r3, r4, r8              @ encoding: [0x84,0xfa,0x58,0xf3]
3072 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3073 @ CHECK: uqadd16gt      r4, r7, r9      @ encoding: [0x97,0xfa,0x59,0xf4]
3074 @ CHECK: uqadd8le       r8, r1, r2      @ encoding: [0x81,0xfa,0x52,0xf8]
3075
3076
3077 @------------------------------------------------------------------------------
3078 @ UQASX/UQSAX
3079 @------------------------------------------------------------------------------
3080         uqasx r1, r2, r3
3081         uqsax r3, r4, r8
3082         ite gt
3083         uqasxgt r4, r7, r9
3084         uqsaxle r8, r1, r2
3085
3086         uqaddsubx r1, r2, r3
3087         uqsubaddx r3, r4, r8
3088         ite gt
3089         uqaddsubxgt r4, r7, r9
3090         uqsubaddxle r8, r1, r2
3091
3092 @ CHECK: uqasx  r1, r2, r3              @ encoding: [0xa2,0xfa,0x53,0xf1]
3093 @ CHECK: uqsax  r3, r4, r8              @ encoding: [0xe4,0xfa,0x58,0xf3]
3094 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3095 @ CHECK: uqasxgt r4, r7, r9             @ encoding: [0xa7,0xfa,0x59,0xf4]
3096 @ CHECK: uqsaxle r8, r1, r2             @ encoding: [0xe1,0xfa,0x52,0xf8]
3097
3098 @ CHECK: uqasx  r1, r2, r3              @ encoding: [0xa2,0xfa,0x53,0xf1]
3099 @ CHECK: uqsax  r3, r4, r8              @ encoding: [0xe4,0xfa,0x58,0xf3]
3100 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3101 @ CHECK: uqasxgt r4, r7, r9             @ encoding: [0xa7,0xfa,0x59,0xf4]
3102 @ CHECK: uqsaxle r8, r1, r2             @ encoding: [0xe1,0xfa,0x52,0xf8]
3103
3104
3105 @------------------------------------------------------------------------------
3106 @ UQSUB16/UQSUB8
3107 @------------------------------------------------------------------------------
3108         uqsub8 r8, r2, r9
3109         uqsub16 r1, r9, r7
3110         ite gt
3111         uqsub8gt r3, r1, r6
3112         uqsub16le r4, r6, r4
3113
3114 @ CHECK: uqsub8 r8, r2, r9              @ encoding: [0xc2,0xfa,0x59,0xf8]
3115 @ CHECK: uqsub16 r1, r9, r7             @ encoding: [0xd9,0xfa,0x57,0xf1]
3116 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3117 @ CHECK: uqsub8gt       r3, r1, r6      @ encoding: [0xc1,0xfa,0x56,0xf3]
3118 @ CHECK: uqsub16le      r4, r6, r4      @ encoding: [0xd6,0xfa,0x54,0xf4]
3119
3120
3121 @------------------------------------------------------------------------------
3122 @ UQSUB16/UQSUB8
3123 @------------------------------------------------------------------------------
3124         usad8 r1, r9, r7
3125         usada8 r8, r2, r9, r12
3126         ite gt
3127         usada8gt r3, r1, r6, r9
3128         usad8le r4, r6, r4
3129
3130 @ CHECK: usad8  r1, r9, r7              @ encoding: [0x79,0xfb,0x07,0xf1]
3131 @ CHECK: usada8 r8, r2, r9, r12         @ encoding: [0x72,0xfb,0x09,0xc8]
3132 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3133 @ CHECK: usada8gt       r3, r1, r6, r9  @ encoding: [0x71,0xfb,0x06,0x93]
3134 @ CHECK: usad8le        r4, r6, r4      @ encoding: [0x76,0xfb,0x04,0xf4]
3135
3136
3137 @------------------------------------------------------------------------------
3138 @ USAT
3139 @------------------------------------------------------------------------------
3140         usat    r8, #1, r10
3141         usat    r8, #4, r10, lsl #0
3142         usat    r8, #5, r10, lsl #31
3143         usat    r8, #16, r10, asr #1
3144
3145 @ CHECK: usat   r8, #1, r10             @ encoding: [0x8a,0xf3,0x01,0x08]
3146 @ CHECK: usat   r8, #4, r10             @ encoding: [0x8a,0xf3,0x04,0x08]
3147 @ CHECK: usat   r8, #5, r10, lsl #31    @ encoding: [0x8a,0xf3,0xc5,0x78]
3148 @ CHECK: usat   r8, #16, r10, asr #1    @ encoding: [0xaa,0xf3,0x50,0x08]
3149
3150
3151 @------------------------------------------------------------------------------
3152 @ USAT16
3153 @------------------------------------------------------------------------------
3154         usat16  r2, #2, r7
3155         usat16  r3, #15, r5
3156
3157 @ CHECK: usat16 r2, #2, r7              @ encoding: [0xa7,0xf3,0x02,0x02]
3158 @ CHECK: usat16 r3, #15, r5             @ encoding: [0xa5,0xf3,0x0f,0x03]
3159
3160
3161 @------------------------------------------------------------------------------
3162 @ USAX
3163 @------------------------------------------------------------------------------
3164         usax r2, r3, r4
3165         it ne
3166         usaxne r6, r1, r9
3167         usubaddx r2, r3, r4
3168         it ne
3169         usubaddxne r6, r1, r9
3170
3171 @ CHECK: usax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x44,0xf2]
3172 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
3173 @ CHECK: usaxne r6, r1, r9              @ encoding: [0xe1,0xfa,0x49,0xf6]
3174 @ CHECK: usax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x44,0xf2]
3175 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
3176 @ CHECK: usaxne r6, r1, r9              @ encoding: [0xe1,0xfa,0x49,0xf6]
3177
3178
3179 @------------------------------------------------------------------------------
3180 @ USUB16/USUB8
3181 @------------------------------------------------------------------------------
3182         usub16 r4, r2, r7
3183         usub8 r1, r8, r5
3184         ite hi
3185         usub16hi r1, r1, r3
3186         usub8ls r9, r2, r3
3187
3188 @ CHECK: usub16 r4, r2, r7              @ encoding: [0xd2,0xfa,0x47,0xf4]
3189 @ CHECK: usub8  r1, r8, r5              @ encoding: [0xc8,0xfa,0x45,0xf1]
3190 @ CHECK: ite    hi                      @ encoding: [0x8c,0xbf]
3191 @ CHECK: usub16hi       r1, r1, r3      @ encoding: [0xd1,0xfa,0x43,0xf1]
3192 @ CHECK: usub8ls        r9, r2, r3      @ encoding: [0xc2,0xfa,0x43,0xf9]
3193
3194
3195 @------------------------------------------------------------------------------
3196 @ UXTAB
3197 @------------------------------------------------------------------------------
3198         uxtab r2, r3, r4
3199         uxtab r4, r5, r6, ror #0
3200         it lt
3201         uxtablt r6, r2, r9, ror #8
3202         uxtab r5, r1, r4, ror #16
3203         uxtab r7, r8, r3, ror #24
3204
3205 @ CHECK: uxtab  r2, r3, r4              @ encoding: [0x53,0xfa,0x84,0xf2]
3206 @ CHECK: uxtab  r4, r5, r6              @ encoding: [0x55,0xfa,0x86,0xf4]
3207 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
3208 @ CHECK: uxtablt r6, r2, r9, ror #8     @ encoding: [0x52,0xfa,0x99,0xf6]
3209 @ CHECK: uxtab  r5, r1, r4, ror #16     @ encoding: [0x51,0xfa,0xa4,0xf5]
3210 @ CHECK: uxtab  r7, r8, r3, ror #24     @ encoding: [0x58,0xfa,0xb3,0xf7]
3211
3212
3213 @------------------------------------------------------------------------------
3214 @ UXTAB16
3215 @------------------------------------------------------------------------------
3216         it ge
3217         uxtab16ge r0, r1, r4
3218         uxtab16 r6, r2, r7, ror #0
3219         uxtab16 r3, r5, r8, ror #8
3220         uxtab16 r3, r2, r1, ror #16
3221         it eq
3222         uxtab16eq r1, r2, r3, ror #24
3223
3224 @ CHECK: it     ge                      @ encoding: [0xa8,0xbf]
3225 @ CHECK: uxtab16ge      r0, r1, r4      @ encoding: [0x31,0xfa,0x84,0xf0]
3226 @ CHECK: uxtab16 r6, r2, r7             @ encoding: [0x32,0xfa,0x87,0xf6]
3227 @ CHECK: uxtab16 r3, r5, r8, ror #8     @ encoding: [0x35,0xfa,0x98,0xf3]
3228 @ CHECK: uxtab16 r3, r2, r1, ror #16    @ encoding: [0x32,0xfa,0xa1,0xf3]
3229 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
3230 @ CHECK: uxtab16eq r1, r2, r3, ror #24  @ encoding: [0x32,0xfa,0xb3,0xf1]
3231
3232
3233 @------------------------------------------------------------------------------
3234 @ UXTAH
3235 @------------------------------------------------------------------------------
3236         uxtah r1, r3, r9
3237         it hi
3238         uxtahhi r6, r1, r6, ror #0
3239         uxtah r3, r8, r3, ror #8
3240         it lo
3241         uxtahlo r2, r2, r4, ror #16
3242         uxtah r9, r3, r3, ror #24
3243
3244 @ CHECK: uxtah  r1, r3, r9              @ encoding: [0x13,0xfa,0x89,0xf1]
3245 @ CHECK: it     hi                      @ encoding: [0x88,0xbf]
3246 @ CHECK: uxtahhi r6, r1, r6             @ encoding: [0x11,0xfa,0x86,0xf6]
3247 @ CHECK: uxtah  r3, r8, r3, ror #8      @ encoding: [0x18,0xfa,0x93,0xf3]
3248 @ CHECK: it     lo                      @ encoding: [0x38,0xbf]
3249 @ CHECK: uxtahlo r2, r2, r4, ror #16    @ encoding: [0x12,0xfa,0xa4,0xf2]
3250 @ CHECK: uxtah  r9, r3, r3, ror #24     @ encoding: [0x13,0xfa,0xb3,0xf9]
3251
3252
3253 @------------------------------------------------------------------------------
3254 @ UXTB
3255 @------------------------------------------------------------------------------
3256         it ge
3257         uxtbge r2, r4
3258         uxtb r5, r6, ror #0
3259         uxtb r6, r9, ror #8
3260         it cc
3261         uxtbcc r5, r1, ror #16
3262         uxtb r8, r3, ror #24
3263         uxtb.w  r7, r8
3264
3265 @ CHECK: it     ge                      @ encoding: [0xa8,0xbf]
3266 @ CHECK: uxtbge r2, r4                  @ encoding: [0xe2,0xb2]
3267 @ CHECK: uxtb   r5, r6                  @ encoding: [0xf5,0xb2]
3268 @ CHECK: uxtb.w r6, r9, ror #8          @ encoding: [0x5f,0xfa,0x99,0xf6]
3269 @ CHECK: it     lo                      @ encoding: [0x38,0xbf]
3270 @ CHECK: uxtblo.w       r5, r1, ror #16 @ encoding: [0x5f,0xfa,0xa1,0xf5]
3271 @ CHECK: uxtb.w r8, r3, ror #24         @ encoding: [0x5f,0xfa,0xb3,0xf8]
3272 @ CHECK: uxtb.w r7, r8                  @ encoding: [0x5f,0xfa,0x88,0xf7]
3273
3274
3275 @------------------------------------------------------------------------------
3276 @ UXTB16
3277 @------------------------------------------------------------------------------
3278         uxtb16 r1, r4
3279         uxtb16 r6, r7, ror #0
3280         it cs
3281         uxtb16cs r3, r5, ror #8
3282         uxtb16 r3, r1, ror #16
3283         it ge
3284         uxtb16ge r2, r3, ror #24
3285
3286 @ CHECK: uxtb16 r1, r4                  @ encoding: [0x3f,0xfa,0x84,0xf1]
3287 @ CHECK: uxtb16 r6, r7                  @ encoding: [0x3f,0xfa,0x87,0xf6]
3288 @ CHECK: it     hs                      @ encoding: [0x28,0xbf]
3289 @ CHECK: uxtb16hs       r3, r5, ror #8  @ encoding: [0x3f,0xfa,0x95,0xf3]
3290 @ CHECK: uxtb16 r3, r1, ror #16         @ encoding: [0x3f,0xfa,0xa1,0xf3]
3291 @ CHECK: it     ge                      @ encoding: [0xa8,0xbf]
3292 @ CHECK: uxtb16ge       r2, r3, ror #24 @ encoding: [0x3f,0xfa,0xb3,0xf2]
3293
3294
3295 @------------------------------------------------------------------------------
3296 @ UXTH
3297 @------------------------------------------------------------------------------
3298         it ne
3299         uxthne r3, r9
3300         uxth r1, r6, ror #0
3301         uxth r3, r8, ror #8
3302         it le
3303         uxthle r2, r2, ror #16
3304         uxth r9, r3, ror #24
3305         uxth.w  r7, r8
3306
3307 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
3308 @ CHECK: uxthne.w       r3, r9          @ encoding: [0x1f,0xfa,0x89,0xf3]
3309 @ CHECK: uxth   r1, r6                  @ encoding: [0xb1,0xb2]
3310 @ CHECK: uxth.w r3, r8, ror #8          @ encoding: [0x1f,0xfa,0x98,0xf3]
3311 @ CHECK: it     le                      @ encoding: [0xd8,0xbf]
3312 @ CHECK: uxthle.w       r2, r2, ror #16 @ encoding: [0x1f,0xfa,0xa2,0xf2]
3313 @ CHECK: uxth.w r9, r3, ror #24         @ encoding: [0x1f,0xfa,0xb3,0xf9]
3314 @ CHECK: uxth.w r7, r8                  @ encoding: [0x1f,0xfa,0x88,0xf7]
3315
3316 @------------------------------------------------------------------------------
3317 @ WFE/WFI/YIELD
3318 @------------------------------------------------------------------------------
3319         wfe
3320         wfi
3321         yield
3322         itet lt
3323         wfelt
3324         wfige
3325         yieldlt
3326
3327 @ CHECK: wfe                            @ encoding: [0x20,0xbf]
3328 @ CHECK: wfi                            @ encoding: [0x30,0xbf]
3329 @ CHECK: yield                          @ encoding: [0x10,0xbf]
3330 @ CHECK: itet   lt                      @ encoding: [0xb6,0xbf]
3331 @ CHECK: wfelt                          @ encoding: [0x20,0xbf]
3332 @ CHECK: wfige                          @ encoding: [0x30,0xbf]
3333 @ CHECK: yieldlt                        @ encoding: [0x10,0xbf]
3334
3335
3336 @------------------------------------------------------------------------------
3337 @ Alternate syntax for LDR*(literal) encodings
3338 @------------------------------------------------------------------------------
3339         ldr r11, [pc, #-22]
3340         ldrb r11, [pc, #-22]
3341         ldrh r11, [pc, #-22]
3342         ldrsb r11, [pc, #-22]
3343         ldrsh r11, [pc, #-22]
3344
3345         ldr.w r11, [pc, #-22]
3346         ldrb.w r11, [pc, #-22]
3347         ldrh.w r11, [pc, #-22]
3348         ldrsb.w r11, [pc, #-22]
3349         ldrsh.w r11, [pc, #-22]
3350
3351 @ CHECK: ldr.w  r11, [pc, #-22]         @ encoding: [0x5f,0xf8,0x16,0xb0]
3352 @ CHECK: ldrb.w r11, [pc, #-22]         @ encoding: [0x1f,0xf8,0x16,0xb0]
3353 @ CHECK: ldrh.w r11, [pc, #-22]         @ encoding: [0x3f,0xf8,0x16,0xb0]
3354 @ CHECK: ldrsb.w r11, [pc, #-22]        @ encoding: [0x1f,0xf9,0x16,0xb0]
3355 @ CHECK: ldrsh.w r11, [pc, #-22]        @ encoding: [0x3f,0xf9,0x16,0xb0]
3356 @ CHECK: ldr.w  r11, [pc, #-22]         @ encoding: [0x5f,0xf8,0x16,0xb0]
3357 @ CHECK: ldrb.w r11, [pc, #-22]         @ encoding: [0x1f,0xf8,0x16,0xb0]
3358 @ CHECK: ldrh.w r11, [pc, #-22]         @ encoding: [0x3f,0xf8,0x16,0xb0]
3359 @ CHECK: ldrsb.w r11, [pc, #-22]        @ encoding: [0x1f,0xf9,0x16,0xb0]
3360 @ CHECK: ldrsh.w r11, [pc, #-22]        @ encoding: [0x3f,0xf9,0x16,0xb0]