Fix VCVT decoding (between floating-point and fixed-point, Floating-point). Patch...
[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
1088 @ CHECK: mcr    p7, #1, r5, c1, c1, #4  @ encoding: [0x21,0xee,0x91,0x57]
1089 @ CHECK: mcr2   p7, #1, r5, c1, c1, #4  @ encoding: [0x21,0xfe,0x91,0x57]
1090
1091
1092 @------------------------------------------------------------------------------
1093 @ MCRR/MCRR2
1094 @------------------------------------------------------------------------------
1095         mcrr  p7, #15, r5, r4, c1
1096         mcrr2  p7, #15, r5, r4, c1
1097
1098 @ CHECK: mcrr   p7, #15, r5, r4, c1     @ encoding: [0x44,0xec,0xf1,0x57]
1099 @ CHECK: mcrr2  p7, #15, r5, r4, c1     @ encoding: [0x44,0xfc,0xf1,0x57]
1100
1101
1102 @------------------------------------------------------------------------------
1103 @ MLA/MLS
1104 @------------------------------------------------------------------------------
1105         mla  r1,r2,r3,r4
1106         mls  r1,r2,r3,r4
1107
1108 @ CHECK: mla    r1, r2, r3, r4          @ encoding: [0x02,0xfb,0x03,0x41]
1109 @ CHECK: mls    r1, r2, r3, r4          @ encoding: [0x02,0xfb,0x13,0x41]
1110
1111
1112 @------------------------------------------------------------------------------
1113 @ MOV(immediate)
1114 @------------------------------------------------------------------------------
1115         movs r1, #21
1116         movs.w r1, #21
1117         movs r8, #21
1118         movw r0, #65535
1119         movw r1, #43777
1120         movw r1, #43792
1121         mov.w r0, #0x3fc0000
1122         mov r0, #0x3fc0000
1123         movs.w r0, #0x3fc0000
1124         itte eq
1125         movseq r1, #12
1126         moveq r1, #12
1127         movne.w r1, #12
1128         mov.w r6, #450
1129
1130         @ alias for mvn
1131         mov r3, #-3
1132
1133
1134 @ CHECK: movs   r1, #21                 @ encoding: [0x15,0x21]
1135 @ CHECK: movs.w r1, #21                 @ encoding: [0x5f,0xf0,0x15,0x01]
1136 @ CHECK: movs.w r8, #21                 @ encoding: [0x5f,0xf0,0x15,0x08]
1137 @ CHECK: movw   r0, #65535              @ encoding: [0x4f,0xf6,0xff,0x70]
1138 @ CHECK: movw   r1, #43777              @ encoding: [0x4a,0xf6,0x01,0x31]
1139 @ CHECK: movw   r1, #43792              @ encoding: [0x4a,0xf6,0x10,0x31]
1140 @ CHECK: mov.w  r0, #66846720           @ encoding: [0x4f,0xf0,0x7f,0x70]
1141 @ CHECK: mov.w  r0, #66846720           @ encoding: [0x4f,0xf0,0x7f,0x70]
1142 @ CHECK: movs.w r0, #66846720           @ encoding: [0x5f,0xf0,0x7f,0x70]
1143 @ CHECK: itte   eq                      @ encoding: [0x06,0xbf]
1144 @ CHECK: movseq.w       r1, #12         @ encoding: [0x5f,0xf0,0x0c,0x01]
1145 @ CHECK: moveq  r1, #12                 @ encoding: [0x0c,0x21]
1146 @ CHECK: movne.w r1, #12                @ encoding: [0x4f,0xf0,0x0c,0x01]
1147 @ CHECK: mov.w  r6, #450                @ encoding: [0x4f,0xf4,0xe1,0x76]
1148
1149 @ CHECK: mvn    r3, #2                  @ encoding: [0x6f,0xf0,0x02,0x03]
1150
1151 @------------------------------------------------------------------------------
1152 @ MOV(shifted register)
1153 @------------------------------------------------------------------------------
1154         mov r6, r2, lsl #16
1155         mov r6, r2, lsr #16
1156         movs r6, r2, asr #32
1157         movs r6, r2, ror #5
1158         movs r4, r4, lsl r5
1159         movs r4, r4, lsr r5
1160         movs r4, r4, asr r5
1161         movs r4, r4, ror r5
1162         mov r4, r4, lsl r5
1163         movs r4, r4, ror r8
1164         movs r4, r5, lsr r6
1165         itttt eq
1166         moveq r4, r4, lsl r5
1167         moveq r4, r4, lsr r5
1168         moveq r4, r4, asr r5
1169         moveq r4, r4, ror r5
1170         mov r4, r4, rrx
1171
1172 @ CHECK: lsl.w  r6, r2, #16             @ encoding: [0x4f,0xea,0x02,0x46]
1173 @ CHECK: lsr.w  r6, r2, #16             @ encoding: [0x4f,0xea,0x12,0x46]
1174 @ CHECK: asrs   r6, r2, #32             @ encoding: [0x16,0x10]
1175 @ CHECK: rors.w r6, r2, #5              @ encoding: [0x5f,0xea,0x72,0x16]
1176 @ CHECK: lsls   r4, r5                  @ encoding: [0xac,0x40]
1177 @ CHECK: lsrs   r4, r5                  @ encoding: [0xec,0x40]
1178 @ CHECK: asrs   r4, r5                  @ encoding: [0x2c,0x41]
1179 @ CHECK: rors   r4, r5                  @ encoding: [0xec,0x41]
1180 @ CHECK: lsl.w  r4, r4, r5              @ encoding: [0x04,0xfa,0x05,0xf4]
1181 @ CHECK: rors.w r4, r4, r8              @ encoding: [0x74,0xfa,0x08,0xf4]
1182 @ CHECK: lsrs.w r4, r5, r6              @ encoding: [0x35,0xfa,0x06,0xf4]
1183 @ CHECK: itttt  eq                      @ encoding: [0x01,0xbf]
1184 @ CHECK: lsleq  r4, r5                  @ encoding: [0xac,0x40]
1185 @ CHECK: lsreq  r4, r5                  @ encoding: [0xec,0x40]
1186 @ CHECK: asreq  r4, r5                  @ encoding: [0x2c,0x41]
1187 @ CHECK: roreq  r4, r5                  @ encoding: [0xec,0x41]
1188 @ CHECK: rrx    r4, r4                  @ encoding: [0x4f,0xea,0x34,0x04]
1189
1190
1191 @------------------------------------------------------------------------------
1192 @ MOVT
1193 @------------------------------------------------------------------------------
1194         movt r3, #7
1195         movt r6, #0xffff
1196         it eq
1197         movteq r4, #0xff0
1198
1199 @ CHECK: movt   r3, #7                  @ encoding: [0xc0,0xf2,0x07,0x03]
1200 @ CHECK: movt   r6, #65535              @ encoding: [0xcf,0xf6,0xff,0x76]
1201 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1202 @ CHECK: movteq r4, #4080               @ encoding: [0xc0,0xf6,0xf0,0x74]
1203
1204 @------------------------------------------------------------------------------
1205 @ MRC/MRC2
1206 @------------------------------------------------------------------------------
1207         mrc  p14, #0, r1, c1, c2, #4
1208         mrc2  p14, #0, r1, c1, c2, #4
1209
1210 @ CHECK: mrc    p14, #0, r1, c1, c2, #4 @ encoding: [0x11,0xee,0x92,0x1e]
1211 @ CHECK: mrc2   p14, #0, r1, c1, c2, #4 @ encoding: [0x11,0xfe,0x92,0x1e]
1212
1213
1214 @------------------------------------------------------------------------------
1215 @ MRRC/MRRC2
1216 @------------------------------------------------------------------------------
1217         mrrc  p7, #1, r5, r4, c1
1218         mrrc2  p7, #1, r5, r4, c1
1219
1220 @ CHECK: mrrc   p7, #1, r5, r4, c1      @ encoding: [0x54,0xec,0x11,0x57]
1221 @ CHECK: mrrc2  p7, #1, r5, r4, c1      @ encoding: [0x54,0xfc,0x11,0x57]
1222
1223
1224 @------------------------------------------------------------------------------
1225 @ MRS
1226 @------------------------------------------------------------------------------
1227         mrs  r8, apsr
1228         mrs  r8, cpsr
1229         mrs  r8, spsr
1230
1231 @ CHECK: mrs    r8, apsr                @ encoding: [0xef,0xf3,0x00,0x88]
1232 @ CHECK: mrs    r8, apsr                @ encoding: [0xef,0xf3,0x00,0x88]
1233 @ CHECK: mrs    r8, spsr                @ encoding: [0xff,0xf3,0x00,0x88]
1234
1235
1236 @------------------------------------------------------------------------------
1237 @ MSR
1238 @------------------------------------------------------------------------------
1239         msr  apsr, r1
1240         msr  apsr_g, r2
1241         msr  apsr_nzcvq, r3
1242         msr  APSR_nzcvq, r4
1243         msr  apsr_nzcvqg, r5
1244         msr  cpsr_fc, r6
1245         msr  cpsr_c, r7
1246         msr  cpsr_x, r8
1247         msr  cpsr_fc, r9
1248         msr  cpsr_all, r11
1249         msr  cpsr_fsx, r12
1250         msr  spsr_fc, r0
1251         msr  SPSR_fsxc, r5
1252         msr  cpsr_fsxc, r8
1253
1254 @ CHECK: msr    APSR_nzcvq, r1          @ encoding: [0x81,0xf3,0x00,0x88]
1255 @ CHECK: msr    APSR_g, r2              @ encoding: [0x82,0xf3,0x00,0x84]
1256 @ CHECK: msr    APSR_nzcvq, r3          @ encoding: [0x83,0xf3,0x00,0x88]
1257 @ CHECK: msr    APSR_nzcvq, r4          @ encoding: [0x84,0xf3,0x00,0x88]
1258 @ CHECK: msr    APSR_nzcvqg, r5         @ encoding: [0x85,0xf3,0x00,0x8c]
1259 @ CHECK: msr    CPSR_fc, r6             @ encoding: [0x86,0xf3,0x00,0x89]
1260 @ CHECK: msr    CPSR_c, r7              @ encoding: [0x87,0xf3,0x00,0x81]
1261 @ CHECK: msr    CPSR_x, r8              @ encoding: [0x88,0xf3,0x00,0x82]
1262 @ CHECK: msr    CPSR_fc, r9             @ encoding: [0x89,0xf3,0x00,0x89]
1263 @ CHECK: msr    CPSR_fc, r11            @ encoding: [0x8b,0xf3,0x00,0x89]
1264 @ CHECK: msr    CPSR_fsx, r12           @ encoding: [0x8c,0xf3,0x00,0x8e]
1265 @ CHECK: msr    SPSR_fc, r0             @ encoding: [0x90,0xf3,0x00,0x89]
1266 @ CHECK: msr    SPSR_fsxc, r5           @ encoding: [0x95,0xf3,0x00,0x8f]
1267 @ CHECK: msr    CPSR_fsxc, r8           @ encoding: [0x88,0xf3,0x00,0x8f]
1268
1269
1270 @------------------------------------------------------------------------------
1271 @ MUL
1272 @------------------------------------------------------------------------------
1273         muls r3, r4, r3
1274         mul r3, r4, r3
1275         mul r3, r4, r6
1276         it eq
1277         muleq r3, r4, r5
1278         it le
1279         mulle r4, r4, r8
1280         mul r5, r6
1281
1282 @ CHECK: muls   r3, r4, r3              @ encoding: [0x63,0x43]
1283 @ CHECK: mul    r3, r4, r3              @ encoding: [0x04,0xfb,0x03,0xf3]
1284 @ CHECK: mul    r3, r4, r6              @ encoding: [0x04,0xfb,0x06,0xf3]
1285 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1286 @ CHECK: muleq  r3, r4, r5              @ encoding: [0x04,0xfb,0x05,0xf3]
1287 @ CHECK: it     le                      @ encoding: [0xd8,0xbf]
1288 @ CHECK: mulle  r4, r4, r8              @ encoding: [0x04,0xfb,0x08,0xf4]
1289 @ CHECK: mul    r5, r6, r5              @ encoding: [0x06,0xfb,0x05,0xf5]
1290
1291
1292 @------------------------------------------------------------------------------
1293 @ MVN(immediate)
1294 @------------------------------------------------------------------------------
1295         mvns r8, #21
1296         mvn r0, #0x3fc0000
1297         mvns r0, #0x3fc0000
1298         itte eq
1299         mvnseq r1, #12
1300         mvneq.w r1, #12
1301         mvnne r1, #12
1302
1303 @ CHECK: mvns   r8, #21                 @ encoding: [0x7f,0xf0,0x15,0x08]
1304 @ CHECK: mvn    r0, #66846720           @ encoding: [0x6f,0xf0,0x7f,0x70]
1305 @ CHECK: mvns   r0, #66846720           @ encoding: [0x7f,0xf0,0x7f,0x70]
1306 @ CHECK: itte   eq                      @ encoding: [0x06,0xbf]
1307 @ CHECK: mvnseq r1, #12                 @ encoding: [0x7f,0xf0,0x0c,0x01]
1308 @ CHECK: mvneq  r1, #12                 @ encoding: [0x6f,0xf0,0x0c,0x01]
1309 @ CHECK: mvnne  r1, #12                 @ encoding: [0x6f,0xf0,0x0c,0x01]
1310
1311
1312 @------------------------------------------------------------------------------
1313 @ MVN(register)
1314 @------------------------------------------------------------------------------
1315         mvn r2, r3
1316         mvns r2, r3
1317         mvn r5, r6, lsl #19
1318         mvn r5, r6, lsr #9
1319         mvn.w r5, r6, asr #4
1320         mvn r5, r6, ror #6
1321         mvn r5, r6, rrx
1322         it eq
1323         mvneq r2, r3
1324
1325 @ CHECK: mvn.w  r2, r3                  @ encoding: [0x6f,0xea,0x03,0x02]
1326 @ CHECK: mvns   r2, r3                  @ encoding: [0xda,0x43]
1327 @ CHECK: mvn.w  r5, r6, lsl #19         @ encoding: [0x6f,0xea,0xc6,0x45]
1328 @ CHECK: mvn.w  r5, r6, lsr #9          @ encoding: [0x6f,0xea,0x56,0x25]
1329 @ CHECK: mvn.w  r5, r6, asr #4          @ encoding: [0x6f,0xea,0x26,0x15]
1330 @ CHECK: mvn.w  r5, r6, ror #6          @ encoding: [0x6f,0xea,0xb6,0x15]
1331 @ CHECK: mvn.w  r5, r6, rrx             @ encoding: [0x6f,0xea,0x36,0x05]
1332 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1333 @ CHECK: mvneq  r2, r3                  @ encoding: [0xda,0x43]
1334
1335 @------------------------------------------------------------------------------
1336 @ NEG
1337 @------------------------------------------------------------------------------
1338         neg r5, r2
1339         neg r5, r8
1340
1341 @ CHECK: rsb.w  r5, r2, #0              @ encoding: [0xc2,0xf1,0x00,0x05]
1342 @ CHECK: rsb.w  r5, r8, #0              @ encoding: [0xc8,0xf1,0x00,0x05]
1343
1344
1345 @------------------------------------------------------------------------------
1346 @ NOP
1347 @------------------------------------------------------------------------------
1348         nop.w
1349
1350 @ CHECK: nop.w                          @ encoding: [0xaf,0xf3,0x00,0x80]
1351
1352
1353 @------------------------------------------------------------------------------
1354 @ ORN
1355 @------------------------------------------------------------------------------
1356         orn r4, r5, #0xf000
1357         orn r4, r5, r6
1358         orns r4, r5, r6
1359         orn r4, r5, r6, lsl #5
1360         orns r4, r5, r6, lsr #5
1361         orn r4, r5, r6, lsr #5
1362         orns r4, r5, r6, asr #5
1363         orn r4, r5, r6, ror #5
1364
1365 @ CHECK: orn    r4, r5, #61440          @ encoding: [0x65,0xf4,0x70,0x44]
1366 @ CHECK: orn    r4, r5, r6              @ encoding: [0x65,0xea,0x06,0x04]
1367 @ CHECK: orns   r4, r5, r6              @ encoding: [0x75,0xea,0x06,0x04]
1368 @ CHECK: orn    r4, r5, r6, lsl #5      @ encoding: [0x65,0xea,0x46,0x14]
1369 @ CHECK: orns   r4, r5, r6, lsr #5      @ encoding: [0x75,0xea,0x56,0x14]
1370 @ CHECK: orn    r4, r5, r6, lsr #5      @ encoding: [0x65,0xea,0x56,0x14]
1371 @ CHECK: orns   r4, r5, r6, asr #5      @ encoding: [0x75,0xea,0x66,0x14]
1372 @ CHECK: orn    r4, r5, r6, ror #5      @ encoding: [0x65,0xea,0x76,0x14]
1373
1374
1375 @------------------------------------------------------------------------------
1376 @ ORR
1377 @------------------------------------------------------------------------------
1378         orr r4, r5, #0xf000
1379         orr r4, r5, r6
1380         orr r4, r5, r6, lsl #5
1381         orrs r4, r5, r6, lsr #5
1382         orr r4, r5, r6, lsr #5
1383         orrs r4, r5, r6, asr #5
1384         orr r4, r5, r6, ror #5
1385
1386 @ CHECK: orr    r4, r5, #61440          @ encoding: [0x45,0xf4,0x70,0x44]
1387 @ CHECK: orr.w  r4, r5, r6              @ encoding: [0x45,0xea,0x06,0x04]
1388 @ CHECK: orr.w  r4, r5, r6, lsl #5      @ encoding: [0x45,0xea,0x46,0x14]
1389 @ CHECK: orrs.w r4, r5, r6, lsr #5      @ encoding: [0x55,0xea,0x56,0x14]
1390 @ CHECK: orr.w  r4, r5, r6, lsr #5      @ encoding: [0x45,0xea,0x56,0x14]
1391 @ CHECK: orrs.w r4, r5, r6, asr #5      @ encoding: [0x55,0xea,0x66,0x14]
1392 @ CHECK: orr.w  r4, r5, r6, ror #5      @ encoding: [0x45,0xea,0x76,0x14]
1393
1394
1395 @------------------------------------------------------------------------------
1396 @ PKH
1397 @------------------------------------------------------------------------------
1398         pkhbt r2, r2, r3
1399         pkhbt r2, r2, r3, lsl #31
1400         pkhbt r2, r2, r3, lsl #0
1401         pkhbt r2, r2, r3, lsl #15
1402
1403         pkhtb r2, r2, r3
1404         pkhtb r2, r2, r3, asr #31
1405         pkhtb r2, r2, r3, asr #15
1406
1407 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0xc2,0xea,0x03,0x02]
1408 @ CHECK: pkhbt  r2, r2, r3, lsl #31     @ encoding: [0xc2,0xea,0xc3,0x72]
1409 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0xc2,0xea,0x03,0x02]
1410 @ CHECK: pkhbt  r2, r2, r3, lsl #15     @ encoding: [0xc2,0xea,0xc3,0x32]
1411
1412 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0xc2,0xea,0x03,0x02]
1413 @ CHECK: pkhtb  r2, r2, r3, asr #31     @ encoding: [0xc2,0xea,0xe3,0x72]
1414 @ CHECK: pkhtb  r2, r2, r3, asr #15     @ encoding: [0xc2,0xea,0xe3,0x32]
1415
1416
1417 @------------------------------------------------------------------------------
1418 @ PLD(immediate)
1419 @------------------------------------------------------------------------------
1420         pld [r5, #-4]
1421         pld [r6, #32]
1422         pld [r6, #33]
1423         pld [r6, #257]
1424         pld [r7, #257]
1425         pld [r1, #0]
1426         pld [r1, #-0]
1427
1428 @ CHECK: pld    [r5, #-4]               @ encoding: [0x15,0xf8,0x04,0xfc]
1429 @ CHECK: pld    [r6, #32]               @ encoding: [0x96,0xf8,0x20,0xf0]
1430 @ CHECK: pld    [r6, #33]               @ encoding: [0x96,0xf8,0x21,0xf0]
1431 @ CHECK: pld    [r6, #257]              @ encoding: [0x96,0xf8,0x01,0xf1]
1432 @ CHECK: pld    [r7, #257]              @ encoding: [0x97,0xf8,0x01,0xf1]
1433 @ CHECK: pld    [r1]                    @ encoding: [0x91,0xf8,0x00,0xf0]
1434 @ CHECK: pld    [r1, #-0]               @ encoding: [0x11,0xf8,0x00,0xfc]
1435
1436
1437 @------------------------------------------------------------------------------
1438 @ PLD(literal)
1439 @------------------------------------------------------------------------------
1440 @        pld  _foo
1441
1442 @ FIXME: pld    _foo                    @ encoding: [0x9f'A',0xf8'A',A,0xf0'A']
1443             @   fixup A - offset: 0, value: _foo, kind: fixup_t2_ldst_pcrel_12
1444
1445
1446 @------------------------------------------------------------------------------
1447 @ PLD(register)
1448 @------------------------------------------------------------------------------
1449         pld [r8, r1]
1450         pld [r5, r2]
1451         pld [r0, r2, lsl #3]
1452         pld [r8, r2, lsl #2]
1453         pld [sp, r2, lsl #1]
1454         pld [sp, r2, lsl #0]
1455
1456 @ CHECK: pld    [r8, r1]                @ encoding: [0x18,0xf8,0x01,0xf0]
1457 @ CHECK: pld    [r5, r2]                @ encoding: [0x15,0xf8,0x02,0xf0]
1458 @ CHECK: pld    [r0, r2, lsl #3]        @ encoding: [0x10,0xf8,0x32,0xf0]
1459 @ CHECK: pld    [r8, r2, lsl #2]        @ encoding: [0x18,0xf8,0x22,0xf0]
1460 @ CHECK: pld    [sp, r2, lsl #1]        @ encoding: [0x1d,0xf8,0x12,0xf0]
1461 @ CHECK: pld    [sp, r2]                @ encoding: [0x1d,0xf8,0x02,0xf0]
1462
1463 @------------------------------------------------------------------------------
1464 @ PLI(immediate)
1465 @------------------------------------------------------------------------------
1466         pli [r5, #-4]
1467         pli [r6, #32]
1468         pli [r6, #33]
1469         pli [r6, #257]
1470         pli [r7, #257]
1471
1472 @ CHECK: pli    [r5, #-4]               @ encoding: [0x15,0xf9,0x04,0xfc]
1473 @ CHECK: pli    [r6, #32]               @ encoding: [0x96,0xf9,0x20,0xf0]
1474 @ CHECK: pli    [r6, #33]               @ encoding: [0x96,0xf9,0x21,0xf0]
1475 @ CHECK: pli    [r6, #257]              @ encoding: [0x96,0xf9,0x01,0xf1]
1476 @ CHECK: pli    [r7, #257]              @ encoding: [0x97,0xf9,0x01,0xf1]
1477
1478
1479 @------------------------------------------------------------------------------
1480 @ PLI(literal)
1481 @------------------------------------------------------------------------------
1482 @        pli  _foo
1483
1484
1485 @ FIXME: pli    _foo                    @ encoding: [0x9f'A',0xf9'A',A,0xf0'A']
1486            @   fixup A - offset: 0, value: _foo, kind: fixup_t2_ldst_pcrel_12
1487
1488
1489 @------------------------------------------------------------------------------
1490 @ PLI(register)
1491 @------------------------------------------------------------------------------
1492         pli [r8, r1]
1493         pli [r5, r2]
1494         pli [r0, r2, lsl #3]
1495         pli [r8, r2, lsl #2]
1496         pli [sp, r2, lsl #1]
1497         pli [sp, r2, lsl #0]
1498
1499 @ CHECK: pli    [r8, r1]                @ encoding: [0x18,0xf9,0x01,0xf0]
1500 @ CHECK: pli    [r5, r2]                @ encoding: [0x15,0xf9,0x02,0xf0]
1501 @ CHECK: pli    [r0, r2, lsl #3]        @ encoding: [0x10,0xf9,0x32,0xf0]
1502 @ CHECK: pli    [r8, r2, lsl #2]        @ encoding: [0x18,0xf9,0x22,0xf0]
1503 @ CHECK: pli    [sp, r2, lsl #1]        @ encoding: [0x1d,0xf9,0x12,0xf0]
1504 @ CHECK: pli    [sp, r2]                @ encoding: [0x1d,0xf9,0x02,0xf0]
1505
1506 @------------------------------------------------------------------------------
1507 @ POP (alias)
1508 @------------------------------------------------------------------------------
1509         pop {r2, r9}
1510
1511 @ CHECK: pop.w  {r2, r9}                @ encoding: [0xbd,0xe8,0x04,0x02]
1512
1513
1514 @------------------------------------------------------------------------------
1515 @ PUSH (alias)
1516 @------------------------------------------------------------------------------
1517         push {r2, r9}
1518
1519 @ CHECK: push.w {r2, r9}                @ encoding: [0x2d,0xe9,0x04,0x02]
1520
1521
1522 @------------------------------------------------------------------------------
1523 @ QADD/QADD16/QADD8
1524 @------------------------------------------------------------------------------
1525         qadd r1, r2, r3
1526         qadd16 r1, r2, r3
1527         qadd8 r1, r2, r3
1528         itte gt
1529         qaddgt r1, r2, r3
1530         qadd16gt r1, r2, r3
1531         qadd8le r1, r2, r3
1532
1533 @ CHECK: qadd   r1, r2, r3              @ encoding: [0x83,0xfa,0x82,0xf1]
1534 @ CHECK: qadd16 r1, r2, r3              @ encoding: [0x92,0xfa,0x13,0xf1]
1535 @ CHECK: qadd8  r1, r2, r3              @ encoding: [0x82,0xfa,0x13,0xf1]
1536 @ CHECK: itte   gt                      @ encoding: [0xc6,0xbf]
1537 @ CHECK: qaddgt r1, r2, r3              @ encoding: [0x83,0xfa,0x82,0xf1]
1538 @ CHECK: qadd16gt r1, r2, r3            @ encoding: [0x92,0xfa,0x13,0xf1]
1539 @ CHECK: qadd8le r1, r2, r3             @ encoding: [0x82,0xfa,0x13,0xf1]
1540
1541
1542 @------------------------------------------------------------------------------
1543 @ QDADD/QDSUB
1544 @------------------------------------------------------------------------------
1545         qdadd r6, r7, r8
1546         qdsub r6, r7, r8
1547         itt hi
1548         qdaddhi r6, r7, r8
1549         qdsubhi r6, r7, r8
1550
1551 @ CHECK: qdadd  r6, r7, r8              @ encoding: [0x88,0xfa,0x97,0xf6]
1552 @ CHECK: qdsub  r6, r7, r8              @ encoding: [0x88,0xfa,0xb7,0xf6]
1553 @ CHECK: itt    hi                      @ encoding: [0x84,0xbf]
1554 @ CHECK: qdaddhi r6, r7, r8             @ encoding: [0x88,0xfa,0x97,0xf6]
1555 @ CHECK: qdsubhi r6, r7, r8             @ encoding: [0x88,0xfa,0xb7,0xf6]
1556
1557
1558 @------------------------------------------------------------------------------
1559 @ QSAX
1560 @------------------------------------------------------------------------------
1561         qsax r9, r12, r0
1562         it eq
1563         qsaxeq r9, r12, r0
1564
1565 @ CHECK: qsax   r9, r12, r0             @ encoding: [0xec,0xfa,0x10,0xf9]
1566 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1567 @ CHECK: qsaxeq r9, r12, r0             @ encoding: [0xec,0xfa,0x10,0xf9]
1568
1569
1570 @------------------------------------------------------------------------------
1571 @ QSUB/QSUB16/QSUB8
1572 @------------------------------------------------------------------------------
1573         qsub r1, r2, r3
1574         qsub16 r1, r2, r3
1575         qsub8 r1, r2, r3
1576         itet le
1577         qsuble r1, r2, r3
1578         qsub16gt r1, r2, r3
1579         qsub8le r1, r2, r3
1580
1581 @ CHECK: qsub   r1, r2, r3              @ encoding: [0x83,0xfa,0xa2,0xf1]
1582 @ CHECK: qsub16 r1, r2, r3              @ encoding: [0xd2,0xfa,0x13,0xf1]
1583 @ CHECK: qsub8  r1, r2, r3              @ encoding: [0xc2,0xfa,0x13,0xf1]
1584 @ CHECK: itet   le                      @ encoding: [0xd6,0xbf]
1585 @ CHECK: qsuble r1, r2, r3              @ encoding: [0x83,0xfa,0xa2,0xf1]
1586 @ CHECK: qsub16gt       r1, r2, r3      @ encoding: [0xd2,0xfa,0x13,0xf1]
1587 @ CHECK: qsub8le r1, r2, r3             @ encoding: [0xc2,0xfa,0x13,0xf1]
1588
1589
1590 @------------------------------------------------------------------------------
1591 @ RBIT
1592 @------------------------------------------------------------------------------
1593         rbit r1, r2
1594         it ne
1595         rbitne r1, r2
1596
1597 @ CHECK: rbit   r1, r2                  @ encoding: [0x92,0xfa,0xa2,0xf1]
1598 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1599 @ CHECK: rbitne r1, r2                  @ encoding: [0x92,0xfa,0xa2,0xf1]
1600
1601
1602 @------------------------------------------------------------------------------
1603 @ REV
1604 @------------------------------------------------------------------------------
1605         rev.w r1, r2
1606         rev r2, r8
1607         itt ne
1608         revne r1, r2
1609         revne r1, r8
1610
1611 @ CHECK: rev.w  r1, r2                  @ encoding: [0x92,0xfa,0x82,0xf1]
1612 @ CHECK: rev.w  r2, r8                  @ encoding: [0x98,0xfa,0x88,0xf2]
1613 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
1614 @ CHECK: revne  r1, r2                  @ encoding: [0x11,0xba]
1615 @ CHECK: revne.w r1, r8                 @ encoding: [0x98,0xfa,0x88,0xf1]
1616
1617
1618 @------------------------------------------------------------------------------
1619 @ REV16
1620 @------------------------------------------------------------------------------
1621         rev16.w r1, r2
1622         rev16 r2, r8
1623         itt ne
1624         rev16ne r1, r2
1625         rev16ne r1, r8
1626
1627 @ CHECK: rev16.w r1, r2                 @ encoding: [0x92,0xfa,0x92,0xf1]
1628 @ CHECK: rev16.w r2, r8                 @ encoding: [0x98,0xfa,0x98,0xf2]
1629 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
1630 @ CHECK: rev16ne r1, r2                 @ encoding: [0x51,0xba]
1631 @ CHECK: rev16ne.w      r1, r8          @ encoding: [0x98,0xfa,0x98,0xf1]
1632
1633
1634 @------------------------------------------------------------------------------
1635 @ REVSH
1636 @------------------------------------------------------------------------------
1637         revsh.w r1, r2
1638         revsh r2, r8
1639         itt ne
1640         revshne r1, r2
1641         revshne r1, r8
1642
1643 @ CHECK: revsh.w r1, r2                 @ encoding: [0x92,0xfa,0xb2,0xf1]
1644 @ CHECK: revsh.w r2, r8                 @ encoding: [0x98,0xfa,0xb8,0xf2]
1645 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
1646 @ CHECK: revshne r1, r2                 @ encoding: [0xd1,0xba]
1647 @ CHECK: revshne.w      r1, r8          @ encoding: [0x98,0xfa,0xb8,0xf1]
1648
1649
1650 @------------------------------------------------------------------------------
1651 @ ROR (immediate)
1652 @------------------------------------------------------------------------------
1653         ror r2, r3, #12
1654         rors r8, r3, #31
1655         rors.w r2, r3, #1
1656         ror r2, r3, #4
1657         rors r2, r12, #15
1658
1659         ror r3, #19
1660         rors r8, #2
1661         rors.w r7, #5
1662         ror.w r12, #21
1663
1664 @ CHECK: ror.w  r2, r3, #12             @ encoding: [0x4f,0xea,0x33,0x32]
1665 @ CHECK: rors.w r8, r3, #31             @ encoding: [0x5f,0xea,0xf3,0x78]
1666 @ CHECK: rors.w r2, r3, #1              @ encoding: [0x5f,0xea,0x73,0x02]
1667 @ CHECK: ror.w  r2, r3, #4              @ encoding: [0x4f,0xea,0x33,0x12]
1668 @ CHECK: rors.w r2, r12, #15            @ encoding: [0x5f,0xea,0xfc,0x32]
1669
1670 @ CHECK: ror.w  r3, r3, #19             @ encoding: [0x4f,0xea,0xf3,0x43]
1671 @ CHECK: rors.w r8, r8, #2              @ encoding: [0x5f,0xea,0xb8,0x08]
1672 @ CHECK: rors.w r7, r7, #5              @ encoding: [0x5f,0xea,0x77,0x17]
1673 @ CHECK: ror.w  r12, r12, #21           @ encoding: [0x4f,0xea,0x7c,0x5c]
1674
1675
1676 @------------------------------------------------------------------------------
1677 @ ROR (register)
1678 @------------------------------------------------------------------------------
1679         ror r3, r4, r2
1680         ror.w r1, r2
1681         rors r3, r4, r8
1682
1683 @ CHECK: ror.w  r3, r4, r2              @ encoding: [0x64,0xfa,0x02,0xf3]
1684 @ CHECK: ror.w  r1, r1, r2              @ encoding: [0x61,0xfa,0x02,0xf1]
1685 @ CHECK: rors.w r3, r4, r8              @ encoding: [0x74,0xfa,0x08,0xf3]
1686
1687
1688 @------------------------------------------------------------------------------
1689 @ RRX
1690 @------------------------------------------------------------------------------
1691         rrx r1, r2
1692         rrxs r1, r2
1693         ite lt
1694         rrxlt r9, r12
1695         rrxsge r8, r3
1696
1697 @ CHECK: rrx    r1, r2                  @ encoding: [0x4f,0xea,0x32,0x01]
1698 @ CHECK: rrxs   r1, r2                  @ encoding: [0x5f,0xea,0x32,0x01]
1699 @ CHECK: ite    lt                      @ encoding: [0xb4,0xbf]
1700 @ CHECK: rrxlt  r9, r12                 @ encoding: [0x4f,0xea,0x3c,0x09]
1701 @ CHECK: rrxsge r8, r3                  @ encoding: [0x5f,0xea,0x33,0x08]
1702
1703 @------------------------------------------------------------------------------
1704 @ RSB (immediate)
1705 @------------------------------------------------------------------------------
1706         rsb r2, r5, #0xff000
1707         rsbs r3, r12, #0xf
1708         rsb r1, #0xff
1709         rsb r1, r1, #0xff
1710         rsb r11, r11, #0
1711         rsb r9, #0
1712         rsbs r3, r1, #0
1713         rsb r3, r1, #0
1714
1715 @ CHECK: rsb.w  r2, r5, #1044480        @ encoding: [0xc5,0xf5,0x7f,0x22]
1716 @ CHECK: rsbs.w r3, r12, #15            @ encoding: [0xdc,0xf1,0x0f,0x03]
1717 @ CHECK: rsb.w  r1, r1, #255            @ encoding: [0xc1,0xf1,0xff,0x01]
1718 @ CHECK: rsb.w  r1, r1, #255            @ encoding: [0xc1,0xf1,0xff,0x01]
1719 @ CHECK: rsb.w  r11, r11, #0            @ encoding: [0xcb,0xf1,0x00,0x0b]
1720 @ CHECK: rsb.w  r9, r9, #0              @ encoding: [0xc9,0xf1,0x00,0x09]
1721 @ CHECK: rsbs   r3, r1, #0              @ encoding: [0x4b,0x42]
1722 @ CHECK: rsb.w  r3, r1, #0              @ encoding: [0xc1,0xf1,0x00,0x03]
1723
1724
1725 @------------------------------------------------------------------------------
1726 @ RSB (register)
1727 @------------------------------------------------------------------------------
1728         rsb r4, r8
1729         rsb r4, r9, r8
1730         rsb r1, r4, r8, asr #3
1731         rsbs r2, r1, r7, lsl #1
1732
1733 @ CHECK: rsb    r4, r4, r8              @ encoding: [0xc4,0xeb,0x08,0x04]
1734 @ CHECK: rsb    r4, r9, r8              @ encoding: [0xc9,0xeb,0x08,0x04]
1735 @ CHECK: rsb    r1, r4, r8, asr #3      @ encoding: [0xc4,0xeb,0xe8,0x01]
1736 @ CHECK: rsbs   r2, r1, r7, lsl #1      @ encoding: [0xd1,0xeb,0x47,0x02]
1737
1738
1739 @------------------------------------------------------------------------------
1740 @ SADD16
1741 @------------------------------------------------------------------------------
1742         sadd16 r3, r4, r8
1743         it ne
1744         sadd16ne r3, r4, r8
1745
1746 @ CHECK: sadd16 r3, r4, r8              @ encoding: [0x94,0xfa,0x08,0xf3]
1747 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1748 @ CHECK: sadd16ne       r3, r4, r8      @ encoding: [0x94,0xfa,0x08,0xf3]
1749
1750
1751 @------------------------------------------------------------------------------
1752 @ SADD8
1753 @------------------------------------------------------------------------------
1754         sadd8 r3, r4, r8
1755         it ne
1756         sadd8ne r3, r4, r8
1757
1758 @ CHECK: sadd8  r3, r4, r8              @ encoding: [0x84,0xfa,0x08,0xf3]
1759 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1760 @ CHECK: sadd8ne r3, r4, r8             @ encoding: [0x84,0xfa,0x08,0xf3]
1761
1762
1763 @------------------------------------------------------------------------------
1764 @ SASX
1765 @------------------------------------------------------------------------------
1766         saddsubx r9, r2, r7
1767         it ne
1768         saddsubxne r2, r5, r6
1769         sasx r9, r2, r7
1770         it ne
1771         sasxne r2, r5, r6
1772
1773 @ CHECK: sasx   r9, r2, r7              @ encoding: [0xa2,0xfa,0x07,0xf9]
1774 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1775 @ CHECK: sasxne r2, r5, r6              @ encoding: [0xa5,0xfa,0x06,0xf2]
1776 @ CHECK: sasx   r9, r2, r7              @ encoding: [0xa2,0xfa,0x07,0xf9]
1777 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1778 @ CHECK: sasxne r2, r5, r6              @ encoding: [0xa5,0xfa,0x06,0xf2]
1779
1780
1781 @------------------------------------------------------------------------------
1782 @ SBC (immediate)
1783 @------------------------------------------------------------------------------
1784         sbc r0, r1, #4
1785         sbcs r0, r1, #0
1786         sbc r1, r2, #255
1787         sbc r3, r7, #0x00550055
1788         sbc r8, r12, #0xaa00aa00
1789         sbc r9, r7, #0xa5a5a5a5
1790         sbc r5, r3, #0x87000000
1791         sbc r4, r2, #0x7f800000
1792         sbc r4, r2, #0x00000680
1793
1794 @ CHECK: sbc    r0, r1, #4              @ encoding: [0x61,0xf1,0x04,0x00]
1795 @ CHECK: sbcs   r0, r1, #0              @ encoding: [0x71,0xf1,0x00,0x00]
1796 @ CHECK: sbc    r1, r2, #255            @ encoding: [0x62,0xf1,0xff,0x01]
1797 @ CHECK: sbc    r3, r7, #5570645        @ encoding: [0x67,0xf1,0x55,0x13]
1798 @ CHECK: sbc    r8, r12, #2852170240    @ encoding: [0x6c,0xf1,0xaa,0x28]
1799 @ CHECK: sbc    r9, r7, #2779096485     @ encoding: [0x67,0xf1,0xa5,0x39]
1800 @ CHECK: sbc    r5, r3, #2264924160     @ encoding: [0x63,0xf1,0x07,0x45]
1801 @ CHECK: sbc    r4, r2, #2139095040     @ encoding: [0x62,0xf1,0xff,0x44]
1802 @ CHECK: sbc    r4, r2, #1664           @ encoding: [0x62,0xf5,0xd0,0x64]
1803
1804
1805 @------------------------------------------------------------------------------
1806 @ SBC (register)
1807 @------------------------------------------------------------------------------
1808         sbc r4, r5, r6
1809         sbcs r4, r5, r6
1810         sbc.w r9, r1, r3
1811         sbcs.w r9, r1, r3
1812         sbc     r0, r1, r3, ror #4
1813         sbcs    r0, r1, r3, lsl #7
1814         sbc.w   r0, r1, r3, lsr #31
1815         sbcs.w  r0, r1, r3, asr #32
1816
1817 @ CHECK: sbc.w  r4, r5, r6              @ encoding: [0x65,0xeb,0x06,0x04]
1818 @ CHECK: sbcs.w r4, r5, r6              @ encoding: [0x75,0xeb,0x06,0x04]
1819 @ CHECK: sbc.w  r9, r1, r3              @ encoding: [0x61,0xeb,0x03,0x09]
1820 @ CHECK: sbcs.w r9, r1, r3              @ encoding: [0x71,0xeb,0x03,0x09]
1821 @ CHECK: sbc.w  r0, r1, r3, ror #4      @ encoding: [0x61,0xeb,0x33,0x10]
1822 @ CHECK: sbcs.w r0, r1, r3, lsl #7      @ encoding: [0x71,0xeb,0xc3,0x10]
1823 @ CHECK: sbc.w  r0, r1, r3, lsr #31     @ encoding: [0x61,0xeb,0xd3,0x70]
1824 @ CHECK: sbcs.w r0, r1, r3, asr #32     @ encoding: [0x71,0xeb,0x23,0x00]
1825
1826
1827 @------------------------------------------------------------------------------
1828 @ SBFX
1829 @------------------------------------------------------------------------------
1830         sbfx r4, r5, #16, #1
1831         it gt
1832         sbfxgt r4, r5, #16, #16
1833
1834 @ CHECK: sbfx   r4, r5, #16, #1         @ encoding: [0x45,0xf3,0x00,0x44]
1835 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1836 @ CHECK: sbfxgt r4, r5, #16, #16        @ encoding: [0x45,0xf3,0x0f,0x44]
1837
1838
1839 @------------------------------------------------------------------------------
1840 @ SEL
1841 @------------------------------------------------------------------------------
1842         sel r5, r9, r2
1843         it le
1844         selle r5, r9, r2
1845
1846 @ CHECK: sel    r5, r9, r2              @ encoding: [0xa9,0xfa,0x82,0xf5]
1847 @ CHECK: it     le                      @ encoding: [0xd8,0xbf]
1848 @ CHECK: selle  r5, r9, r2              @ encoding: [0xa9,0xfa,0x82,0xf5]
1849
1850
1851 @------------------------------------------------------------------------------
1852 @ SEV
1853 @------------------------------------------------------------------------------
1854         sev.w
1855         it eq
1856         seveq.w
1857
1858 @ CHECK: sev.w                           @ encoding: [0xaf,0xf3,0x04,0x80]
1859 @ CHECK: it     eq                       @ encoding: [0x08,0xbf]
1860 @ CHECK: seveq.w                         @ encoding: [0xaf,0xf3,0x04,0x80]
1861
1862
1863 @------------------------------------------------------------------------------
1864 @ SADD16/SADD8
1865 @------------------------------------------------------------------------------
1866         sadd16 r1, r2, r3
1867         sadd8 r1, r2, r3
1868         ite gt
1869         sadd16gt r1, r2, r3
1870         sadd8le r1, r2, r3
1871
1872 @ CHECK: sadd16 r1, r2, r3              @ encoding: [0x92,0xfa,0x03,0xf1]
1873 @ CHECK: sadd8  r1, r2, r3              @ encoding: [0x82,0xfa,0x03,0xf1]
1874 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
1875 @ CHECK: sadd16gt       r1, r2, r3      @ encoding: [0x92,0xfa,0x03,0xf1]
1876 @ CHECK: sadd8le r1, r2, r3             @ encoding: [0x82,0xfa,0x03,0xf1]
1877
1878
1879 @------------------------------------------------------------------------------
1880 @ SHASX
1881 @------------------------------------------------------------------------------
1882         shasx r4, r8, r2
1883         it gt
1884         shasxgt r4, r8, r2
1885         shaddsubx r4, r8, r2
1886         it gt
1887         shaddsubxgt r4, r8, r2
1888
1889 @ CHECK: shasx  r4, r8, r2              @ encoding: [0xa8,0xfa,0x22,0xf4]
1890 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1891 @ CHECK: shasxgt r4, r8, r2             @ encoding: [0xa8,0xfa,0x22,0xf4]
1892 @ CHECK: shasx  r4, r8, r2              @ encoding: [0xa8,0xfa,0x22,0xf4]
1893 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1894 @ CHECK: shasxgt r4, r8, r2             @ encoding: [0xa8,0xfa,0x22,0xf4]
1895
1896
1897 @------------------------------------------------------------------------------
1898 @ SHASX
1899 @------------------------------------------------------------------------------
1900         shsax r4, r8, r2
1901         it gt
1902         shsaxgt r4, r8, r2
1903         shsubaddx r4, r8, r2
1904         it gt
1905         shsubaddxgt r4, r8, r2
1906
1907 @ CHECK: shsax  r4, r8, r2              @ encoding: [0xe8,0xfa,0x22,0xf4]
1908 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1909 @ CHECK: shsaxgt r4, r8, r2             @ encoding: [0xe8,0xfa,0x22,0xf4]
1910 @ CHECK: shsax  r4, r8, r2              @ encoding: [0xe8,0xfa,0x22,0xf4]
1911 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1912 @ CHECK: shsaxgt r4, r8, r2             @ encoding: [0xe8,0xfa,0x22,0xf4]
1913
1914
1915 @------------------------------------------------------------------------------
1916 @ SHSUB16/SHSUB8
1917 @------------------------------------------------------------------------------
1918         shsub16 r4, r8, r2
1919         shsub8 r4, r8, r2
1920         itt gt
1921         shsub16gt r4, r8, r2
1922         shsub8gt r4, r8, r2
1923
1924 @ CHECK: shsub16 r4, r8, r2             @ encoding: [0xd8,0xfa,0x22,0xf4]
1925 @ CHECK: shsub8 r4, r8, r2              @ encoding: [0xc8,0xfa,0x22,0xf4]
1926 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
1927 @ CHECK: shsub16gt      r4, r8, r2      @ encoding: [0xd8,0xfa,0x22,0xf4]
1928 @ CHECK: shsub8gt       r4, r8, r2      @ encoding: [0xc8,0xfa,0x22,0xf4]
1929
1930
1931 @------------------------------------------------------------------------------
1932 @ SMLABB/SMLABT/SMLATB/SMLATT
1933 @------------------------------------------------------------------------------
1934         smlabb r3, r1, r9, r0
1935         smlabt r5, r6, r4, r1
1936         smlatb r4, r2, r3, r2
1937         smlatt r8, r3, r8, r4
1938         itete gt
1939         smlabbgt r3, r1, r9, r0
1940         smlabtle r5, r6, r4, r1
1941         smlatbgt r4, r2, r3, r2
1942         smlattle r8, r3, r8, r4
1943
1944 @ CHECK: smlabb r3, r1, r9, r0          @ encoding: [0x11,0xfb,0x09,0x03]
1945 @ CHECK: smlabt r5, r6, r4, r1          @ encoding: [0x16,0xfb,0x14,0x15]
1946 @ CHECK: smlatb r4, r2, r3, r2          @ encoding: [0x12,0xfb,0x23,0x24]
1947 @ CHECK: smlatt r8, r3, r8, r4          @ encoding: [0x13,0xfb,0x38,0x48]
1948 @ CHECK: itete  gt                      @ encoding: [0xcb,0xbf]
1949 @ CHECK: smlabbgt       r3, r1, r9, r0  @ encoding: [0x11,0xfb,0x09,0x03]
1950 @ CHECK: smlabtle       r5, r6, r4, r1  @ encoding: [0x16,0xfb,0x14,0x15]
1951 @ CHECK: smlatbgt       r4, r2, r3, r2  @ encoding: [0x12,0xfb,0x23,0x24]
1952 @ CHECK: smlattle       r8, r3, r8, r4  @ encoding: [0x13,0xfb,0x38,0x48]
1953
1954
1955 @------------------------------------------------------------------------------
1956 @ SMLAD/SMLADX
1957 @------------------------------------------------------------------------------
1958         smlad r2, r3, r5, r8
1959         smladx r2, r3, r5, r8
1960         itt hi
1961         smladhi r2, r3, r5, r8
1962         smladxhi r2, r3, r5, r8
1963
1964 @ CHECK: smlad  r2, r3, r5, r8          @ encoding: [0x23,0xfb,0x05,0x82]
1965 @ CHECK: smladx r2, r3, r5, r8          @ encoding: [0x23,0xfb,0x15,0x82]
1966 @ CHECK: itt    hi                      @ encoding: [0x84,0xbf]
1967 @ CHECK: smladhi r2, r3, r5, r8         @ encoding: [0x23,0xfb,0x05,0x82]
1968 @ CHECK: smladxhi       r2, r3, r5, r8  @ encoding: [0x23,0xfb,0x15,0x82]
1969
1970
1971 @------------------------------------------------------------------------------
1972 @ SMLAL
1973 @------------------------------------------------------------------------------
1974         smlal r2, r3, r5, r8
1975         it eq
1976         smlaleq r2, r3, r5, r8
1977
1978 @ CHECK: smlal  r2, r3, r5, r8          @ encoding: [0xc5,0xfb,0x08,0x23]
1979 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1980 @ CHECK: smlaleq r2, r3, r5, r8         @ encoding: [0xc5,0xfb,0x08,0x23]
1981
1982
1983 @------------------------------------------------------------------------------
1984 @ SMLALBB/SMLALBT/SMLALTB/SMLALTT
1985 @------------------------------------------------------------------------------
1986         smlalbb r3, r1, r9, r0
1987         smlalbt r5, r6, r4, r1
1988         smlaltb r4, r2, r3, r2
1989         smlaltt r8, r3, r8, r4
1990         iteet ge
1991         smlalbbge r3, r1, r9, r0
1992         smlalbtlt r5, r6, r4, r1
1993         smlaltblt r4, r2, r3, r2
1994         smlalttge r8, r3, r8, r4
1995
1996 @ CHECK: smlalbb r3, r1, r9, r0         @ encoding: [0xc9,0xfb,0x80,0x31]
1997 @ CHECK: smlalbt r5, r6, r4, r1         @ encoding: [0xc4,0xfb,0x91,0x56]
1998 @ CHECK: smlaltb r4, r2, r3, r2         @ encoding: [0xc3,0xfb,0xa2,0x42]
1999 @ CHECK: smlaltt r8, r3, r8, r4         @ encoding: [0xc8,0xfb,0xb4,0x83]
2000 @ CHECK: iteet  ge                      @ encoding: [0xad,0xbf]
2001 @ CHECK: smlalbbge      r3, r1, r9, r0  @ encoding: [0xc9,0xfb,0x80,0x31]
2002 @ CHECK: smlalbtlt      r5, r6, r4, r1  @ encoding: [0xc4,0xfb,0x91,0x56]
2003 @ CHECK: smlaltblt      r4, r2, r3, r2  @ encoding: [0xc3,0xfb,0xa2,0x42]
2004 @ CHECK: smlalttge      r8, r3, r8, r4  @ encoding: [0xc8,0xfb,0xb4,0x83]
2005
2006
2007 @------------------------------------------------------------------------------
2008 @ SMLALD/SMLALDX
2009 @------------------------------------------------------------------------------
2010         smlald r2, r3, r5, r8
2011         smlaldx r2, r3, r5, r8
2012         ite eq
2013         smlaldeq r2, r3, r5, r8
2014         smlaldxne r2, r3, r5, r8
2015
2016 @ CHECK: smlald r2, r3, r5, r8          @ encoding: [0xc5,0xfb,0xc8,0x23]
2017 @ CHECK: smlaldx r2, r3, r5, r8         @ encoding: [0xc5,0xfb,0xd8,0x23]
2018 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
2019 @ CHECK: smlaldeq       r2, r3, r5, r8  @ encoding: [0xc5,0xfb,0xc8,0x23]
2020 @ CHECK: smlaldxne      r2, r3, r5, r8  @ encoding: [0xc5,0xfb,0xd8,0x23]
2021
2022
2023 @------------------------------------------------------------------------------
2024 @ SMLAWB/SMLAWT
2025 @------------------------------------------------------------------------------
2026         smlawb r2, r3, r10, r8
2027         smlawt r8, r3, r5, r9
2028         ite eq
2029         smlawbeq r2, r7, r5, r8
2030         smlawtne r1, r3, r0, r8
2031
2032 @ CHECK: smlawb r2, r3, r10, r8         @ encoding: [0x33,0xfb,0x0a,0x82]
2033 @ CHECK: smlawt r8, r3, r5, r9          @ encoding: [0x33,0xfb,0x15,0x98]
2034 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
2035 @ CHECK: smlawbeq       r2, r7, r5, r8  @ encoding: [0x37,0xfb,0x05,0x82]
2036 @ CHECK: smlawtne       r1, r3, r0, r8  @ encoding: [0x33,0xfb,0x10,0x81]
2037
2038
2039 @------------------------------------------------------------------------------
2040 @ SMLSD/SMLSDX
2041 @------------------------------------------------------------------------------
2042         smlsd r2, r3, r5, r8
2043         smlsdx r2, r3, r5, r8
2044         ite le
2045         smlsdle r2, r3, r5, r8
2046         smlsdxgt r2, r3, r5, r8
2047
2048 @ CHECK: smlsd  r2, r3, r5, r8          @ encoding: [0x43,0xfb,0x05,0x82]
2049 @ CHECK: smlsdx r2, r3, r5, r8          @ encoding: [0x43,0xfb,0x15,0x82]
2050 @ CHECK: ite    le                      @ encoding: [0xd4,0xbf]
2051 @ CHECK: smlsdle        r2, r3, r5, r8  @ encoding: [0x43,0xfb,0x05,0x82]
2052 @ CHECK: smlsdxgt       r2, r3, r5, r8  @ encoding: [0x43,0xfb,0x15,0x82]
2053
2054
2055 @------------------------------------------------------------------------------
2056 @ SMLSLD/SMLSLDX
2057 @------------------------------------------------------------------------------
2058         smlsld r2, r9, r5, r1
2059         smlsldx r4, r11, r2, r8
2060         ite ge
2061         smlsldge r8, r2, r5, r6
2062         smlsldxlt r1, r0, r3, r8
2063
2064 @ CHECK: smlsld r2, r9, r5, r1          @ encoding: [0xd5,0xfb,0xc1,0x29]
2065 @ CHECK: smlsldx        r4, r11, r2, r8 @ encoding: [0xd2,0xfb,0xd8,0x4b]
2066 @ CHECK: ite    ge                      @ encoding: [0xac,0xbf]
2067 @ CHECK: smlsldge       r8, r2, r5, r6  @ encoding: [0xd5,0xfb,0xc6,0x82]
2068 @ CHECK: smlsldxlt      r1, r0, r3, r8  @ encoding: [0xd3,0xfb,0xd8,0x10]
2069
2070
2071 @------------------------------------------------------------------------------
2072 @ SMMLA/SMMLAR
2073 @------------------------------------------------------------------------------
2074         smmla r1, r2, r3, r4
2075         smmlar r4, r3, r2, r1
2076         ite lo
2077         smmlalo r1, r2, r3, r4
2078         smmlarcs r4, r3, r2, r1
2079
2080 @ CHECK: smmla  r1, r2, r3, r4          @ encoding: [0x52,0xfb,0x03,0x41]
2081 @ CHECK: smmlar r4, r3, r2, r1          @ encoding: [0x53,0xfb,0x12,0x14]
2082 @ CHECK: ite    lo                      @ encoding: [0x34,0xbf]
2083 @ CHECK: smmlalo        r1, r2, r3, r4  @ encoding: [0x52,0xfb,0x03,0x41]
2084 @ CHECK: smmlarhs       r4, r3, r2, r1  @ encoding: [0x53,0xfb,0x12,0x14]
2085
2086
2087 @------------------------------------------------------------------------------
2088 @ SMMLS/SMMLSR
2089 @------------------------------------------------------------------------------
2090         smmls r1, r2, r3, r4
2091         smmlsr r4, r3, r2, r1
2092         ite lo
2093         smmlslo r1, r2, r3, r4
2094         smmlsrcs r4, r3, r2, r1
2095
2096 @ CHECK: smmls  r1, r2, r3, r4          @ encoding: [0x62,0xfb,0x03,0x41]
2097 @ CHECK: smmlsr r4, r3, r2, r1          @ encoding: [0x63,0xfb,0x12,0x14]
2098 @ CHECK: ite    lo                      @ encoding: [0x34,0xbf]
2099 @ CHECK: smmlslo        r1, r2, r3, r4  @ encoding: [0x62,0xfb,0x03,0x41]
2100 @ CHECK: smmlsrhs       r4, r3, r2, r1  @ encoding: [0x63,0xfb,0x12,0x14]
2101
2102
2103 @------------------------------------------------------------------------------
2104 @ SMMUL/SMMULR
2105 @------------------------------------------------------------------------------
2106         smmul r2, r3, r4
2107         smmulr r3, r2, r1
2108         ite cc
2109         smmulcc r2, r3, r4
2110         smmulrhs r3, r2, r1
2111
2112 @ CHECK: smmul  r2, r3, r4              @ encoding: [0x53,0xfb,0x04,0xf2]
2113 @ CHECK: smmulr r3, r2, r1              @ encoding: [0x52,0xfb,0x11,0xf3]
2114 @ CHECK: ite    lo                      @ encoding: [0x34,0xbf]
2115 @ CHECK: smmullo        r2, r3, r4      @ encoding: [0x53,0xfb,0x04,0xf2]
2116 @ CHECK: smmulrhs       r3, r2, r1      @ encoding: [0x52,0xfb,0x11,0xf3]
2117
2118
2119 @------------------------------------------------------------------------------
2120 @ SMUAD/SMUADX
2121 @------------------------------------------------------------------------------
2122         smuad r2, r3, r4
2123         smuadx r3, r2, r1
2124         ite lt
2125         smuadlt r2, r3, r4
2126         smuadxge r3, r2, r1
2127
2128 @ CHECK: smuad  r2, r3, r4              @ encoding: [0x23,0xfb,0x04,0xf2]
2129 @ CHECK: smuadx r3, r2, r1              @ encoding: [0x22,0xfb,0x11,0xf3]
2130 @ CHECK: ite    lt                      @ encoding: [0xb4,0xbf]
2131 @ CHECK: smuadlt        r2, r3, r4      @ encoding: [0x23,0xfb,0x04,0xf2]
2132 @ CHECK: smuadxge       r3, r2, r1      @ encoding: [0x22,0xfb,0x11,0xf3]
2133
2134
2135 @------------------------------------------------------------------------------
2136 @ SMULBB/SMULBT/SMULTB/SMULTT
2137 @------------------------------------------------------------------------------
2138         smulbb r3, r9, r0
2139         smulbt r5, r4, r1
2140         smultb r4, r2, r2
2141         smultt r8, r3, r4
2142         itete ge
2143         smulbbge r1, r9, r0
2144         smulbtlt r5, r6, r4
2145         smultbge r2, r3, r2
2146         smulttlt r8, r3, r4
2147
2148 @ CHECK: smulbb r3, r9, r0              @ encoding: [0x19,0xfb,0x00,0xf3]
2149 @ CHECK: smulbt r5, r4, r1              @ encoding: [0x14,0xfb,0x11,0xf5]
2150 @ CHECK: smultb r4, r2, r2              @ encoding: [0x12,0xfb,0x22,0xf4]
2151 @ CHECK: smultt r8, r3, r4              @ encoding: [0x13,0xfb,0x34,0xf8]
2152 @ CHECK: itete  ge                      @ encoding: [0xab,0xbf]
2153 @ CHECK: smulbbge       r1, r9, r0      @ encoding: [0x19,0xfb,0x00,0xf1]
2154 @ CHECK: smulbtlt       r5, r6, r4      @ encoding: [0x16,0xfb,0x14,0xf5]
2155 @ CHECK: smultbge       r2, r3, r2      @ encoding: [0x13,0xfb,0x22,0xf2]
2156 @ CHECK: smulttlt       r8, r3, r4      @ encoding: [0x13,0xfb,0x34,0xf8]
2157
2158
2159 @------------------------------------------------------------------------------
2160 @ SMULL
2161 @------------------------------------------------------------------------------
2162         smull r3, r9, r0, r1
2163         it eq
2164         smulleq r8, r3, r4, r5
2165
2166 @ CHECK: smull  r3, r9, r0, r1          @ encoding: [0x80,0xfb,0x01,0x39]
2167 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
2168 @ CHECK: smulleq r8, r3, r4, r5         @ encoding: [0x84,0xfb,0x05,0x83]
2169
2170
2171 @------------------------------------------------------------------------------
2172 @ SMULWB/SMULWT
2173 @------------------------------------------------------------------------------
2174         smulwb r3, r9, r0
2175         smulwt r3, r9, r2
2176         ite gt
2177         smulwbgt r3, r9, r0
2178         smulwtle r3, r9, r2
2179
2180 @ CHECK: smulwb r3, r9, r0              @ encoding: [0x39,0xfb,0x00,0xf3]
2181 @ CHECK: smulwt r3, r9, r2              @ encoding: [0x39,0xfb,0x12,0xf3]
2182 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
2183 @ CHECK: smulwbgt       r3, r9, r0      @ encoding: [0x39,0xfb,0x00,0xf3]
2184 @ CHECK: smulwtle       r3, r9, r2      @ encoding: [0x39,0xfb,0x12,0xf3]
2185
2186
2187 @------------------------------------------------------------------------------
2188 @ SMUSD/SMUSDX
2189 @------------------------------------------------------------------------------
2190         smusd r3, r0, r1
2191         smusdx r3, r9, r2
2192         ite eq
2193         smusdeq r8, r3, r2
2194         smusdxne r7, r4, r3
2195
2196 @ CHECK: smusd  r3, r0, r1              @ encoding: [0x40,0xfb,0x01,0xf3]
2197 @ CHECK: smusdx r3, r9, r2              @ encoding: [0x49,0xfb,0x12,0xf3]
2198 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
2199 @ CHECK: smusdeq        r8, r3, r2      @ encoding: [0x43,0xfb,0x02,0xf8]
2200 @ CHECK: smusdxne       r7, r4, r3      @ encoding: [0x44,0xfb,0x13,0xf7]
2201
2202
2203 @------------------------------------------------------------------------------
2204 @ SRS
2205 @------------------------------------------------------------------------------
2206         srsdb sp, #1
2207         srsia sp, #0
2208
2209         srsdb sp!, #19
2210         srsia sp!, #2
2211
2212         srsea sp, #10
2213         srsfd sp, #9
2214
2215         srsea sp!, #5
2216         srsfd sp!, #5
2217
2218         srs sp, #5
2219         srs sp!, #5
2220
2221 @ CHECK: srsdb  sp, #1                  @ encoding: [0x0d,0xe8,0x01,0xc0]
2222 @ CHECK: srsia  sp, #0                  @ encoding: [0x8d,0xe9,0x00,0xc0]
2223 @ CHECK: srsdb  sp!, #19                @ encoding: [0x2d,0xe8,0x13,0xc0]
2224 @ CHECK: srsia  sp!, #2                 @ encoding: [0xad,0xe9,0x02,0xc0]
2225 @ CHECK: srsdb  sp, #10                 @ encoding: [0x0d,0xe8,0x0a,0xc0]
2226 @ CHECK: srsia  sp, #9                  @ encoding: [0x8d,0xe9,0x09,0xc0]
2227 @ CHECK: srsdb  sp!, #5                 @ encoding: [0x2d,0xe8,0x05,0xc0]
2228 @ CHECK: srsia  sp!, #5                 @ encoding: [0xad,0xe9,0x05,0xc0]
2229 @ CHECK: srsia  sp, #5                  @ encoding: [0x8d,0xe9,0x05,0xc0]
2230 @ CHECK: srsia  sp!, #5                 @ encoding: [0xad,0xe9,0x05,0xc0]
2231
2232
2233 @------------------------------------------------------------------------------
2234 @ SSAT
2235 @------------------------------------------------------------------------------
2236         ssat    r8, #1, r10
2237         ssat    r8, #1, r10, lsl #0
2238         ssat    r8, #1, r10, lsl #31
2239         ssat    r8, #1, r10, asr #1
2240
2241 @ CHECK: ssat   r8, #1, r10             @ encoding: [0x0a,0xf3,0x00,0x08]
2242 @ CHECK: ssat   r8, #1, r10             @ encoding: [0x0a,0xf3,0x00,0x08]
2243 @ CHECK: ssat   r8, #1, r10, lsl #31    @ encoding: [0x0a,0xf3,0xc0,0x78]
2244 @ CHECK: ssat   r8, #1, r10, asr #1     @ encoding: [0x2a,0xf3,0x40,0x08]
2245
2246
2247 @------------------------------------------------------------------------------
2248 @ SSAT16
2249 @------------------------------------------------------------------------------
2250         ssat16  r2, #1, r7
2251         ssat16  r3, #16, r5
2252
2253 @ CHECK: ssat16 r2, #1, r7              @ encoding: [0x27,0xf3,0x00,0x02]
2254 @ CHECK: ssat16 r3, #16, r5             @ encoding: [0x25,0xf3,0x0f,0x03]
2255
2256
2257 @------------------------------------------------------------------------------
2258 @ SSAX
2259 @------------------------------------------------------------------------------
2260         ssubaddx r2, r3, r4
2261         it lt
2262         ssubaddxlt r2, r3, r4
2263         ssax r2, r3, r4
2264         it lt
2265         ssaxlt r2, r3, r4
2266
2267 @ CHECK: ssax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2268 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
2269 @ CHECK: ssaxlt r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2270 @ CHECK: ssax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2271 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
2272 @ CHECK: ssaxlt r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2273
2274
2275 @------------------------------------------------------------------------------
2276 @ SSUB16/SSUB8
2277 @------------------------------------------------------------------------------
2278         ssub16 r1, r0, r6
2279         ssub8 r9, r2, r4
2280         ite ne
2281         ssub16ne r5, r3, r2
2282         ssub8eq r5, r1, r2
2283
2284 @ CHECK: ssub16 r1, r0, r6              @ encoding: [0xd0,0xfa,0x06,0xf1]
2285 @ CHECK: ssub8  r9, r2, r4              @ encoding: [0xc2,0xfa,0x04,0xf9]
2286 @ CHECK: ite    ne                      @ encoding: [0x14,0xbf]
2287 @ CHECK: ssub16ne       r5, r3, r2      @ encoding: [0xd3,0xfa,0x02,0xf5]
2288 @ CHECK: ssub8eq        r5, r1, r2      @ encoding: [0xc1,0xfa,0x02,0xf5]
2289
2290
2291 @------------------------------------------------------------------------------
2292 @ STC{L}/STC2{L}
2293 @------------------------------------------------------------------------------
2294         stc2 p0, c8, [r1, #4]
2295         stc2 p1, c7, [r2]
2296         stc2 p2, c6, [r3, #-224]
2297         stc2 p3, c5, [r4, #-120]!
2298         stc2 p4, c4, [r5], #16
2299         stc2 p5, c3, [r6], #-72
2300         stc2l p6, c2, [r7, #4]
2301         stc2l p7, c1, [r8]
2302         stc2l p8, c0, [r9, #-224]
2303         stc2l p9, c1, [r10, #-120]!
2304         stc2l p10, c2, [r11], #16
2305         stc2l p11, c3, [r12], #-72
2306
2307         stc p12, c4, [r0, #4]
2308         stc p13, c5, [r1]
2309         stc p14, c6, [r2, #-224]
2310         stc p15, c7, [r3, #-120]!
2311         stc p5, c8, [r4], #16
2312         stc p4, c9, [r5], #-72
2313         stcl p3, c10, [r6, #4]
2314         stcl p2, c11, [r7]
2315         stcl p1, c12, [r8, #-224]
2316         stcl p0, c13, [r9, #-120]!
2317         stcl p6, c14, [r10], #16
2318         stcl p7, c15, [r11], #-72
2319
2320         stc2 p2, c8, [r1], { 25 }
2321
2322 @ CHECK: stc2   p0, c8, [r1, #4]        @ encoding: [0x81,0xfd,0x01,0x80]
2323 @ CHECK: stc2   p1, c7, [r2]            @ encoding: [0x82,0xfd,0x00,0x71]
2324 @ CHECK: stc2   p2, c6, [r3, #-224]     @ encoding: [0x03,0xfd,0x38,0x62]
2325 @ CHECK: stc2   p3, c5, [r4, #-120]!    @ encoding: [0x24,0xfd,0x1e,0x53]
2326 @ CHECK: stc2   p4, c4, [r5], #16       @ encoding: [0xa5,0xfc,0x04,0x44]
2327 @ CHECK: stc2   p5, c3, [r6], #-72      @ encoding: [0x26,0xfc,0x12,0x35]
2328 @ CHECK: stc2l  p6, c2, [r7, #4]        @ encoding: [0xc7,0xfd,0x01,0x26]
2329 @ CHECK: stc2l  p7, c1, [r8]            @ encoding: [0xc8,0xfd,0x00,0x17]
2330 @ CHECK: stc2l  p8, c0, [r9, #-224]     @ encoding: [0x49,0xfd,0x38,0x08]
2331 @ CHECK: stc2l  p9, c1, [r10, #-120]!   @ encoding: [0x6a,0xfd,0x1e,0x19]
2332 @ CHECK: stc2l  p10, c2, [r11], #16     @ encoding: [0xeb,0xfc,0x04,0x2a]
2333 @ CHECK: stc2l  p11, c3, [r12], #-72    @ encoding: [0x6c,0xfc,0x12,0x3b]
2334
2335 @ CHECK: stc    p12, c4, [r0, #4]       @ encoding: [0x80,0xed,0x01,0x4c]
2336 @ CHECK: stc    p13, c5, [r1]           @ encoding: [0x81,0xed,0x00,0x5d]
2337 @ CHECK: stc    p14, c6, [r2, #-224]    @ encoding: [0x02,0xed,0x38,0x6e]
2338 @ CHECK: stc    p15, c7, [r3, #-120]!   @ encoding: [0x23,0xed,0x1e,0x7f]
2339 @ CHECK: stc    p5, c8, [r4], #16       @ encoding: [0xa4,0xec,0x04,0x85]
2340 @ CHECK: stc    p4, c9, [r5], #-72      @ encoding: [0x25,0xec,0x12,0x94]
2341 @ CHECK: stcl   p3, c10, [r6, #4]       @ encoding: [0xc6,0xed,0x01,0xa3]
2342 @ CHECK: stcl   p2, c11, [r7]           @ encoding: [0xc7,0xed,0x00,0xb2]
2343 @ CHECK: stcl   p1, c12, [r8, #-224]    @ encoding: [0x48,0xed,0x38,0xc1]
2344 @ CHECK: stcl   p0, c13, [r9, #-120]!   @ encoding: [0x69,0xed,0x1e,0xd0]
2345 @ CHECK: stcl   p6, c14, [r10], #16     @ encoding: [0xea,0xec,0x04,0xe6]
2346 @ CHECK: stcl   p7, c15, [r11], #-72    @ encoding: [0x6b,0xec,0x12,0xf7]
2347
2348 @ CHECK: stc2   p2, c8, [r1], {25}      @ encoding: [0x81,0xfc,0x19,0x82]
2349
2350
2351 @------------------------------------------------------------------------------
2352 @ STMIA
2353 @------------------------------------------------------------------------------
2354         stmia.w r4, {r4, r5, r8, r9}
2355         stmia.w r4, {r5, r6}
2356         stmia.w r5!, {r3, r8}
2357         stm.w r4, {r4, r5, r8, r9}
2358         stm.w r4, {r5, r6}
2359         stm.w r5!, {r3, r8}
2360         stm.w r5!, {r1, r2}
2361         stm.w r2, {r1, r2}
2362
2363         stmia r4, {r4, r5, r8, r9}
2364         stmia r4, {r5, r6}
2365         stmia r5!, {r3, r8}
2366         stm r4, {r4, r5, r8, r9}
2367         stm r4, {r5, r6}
2368         stm r5!, {r3, r8}
2369         stmea r5!, {r3, r8}
2370
2371 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2372 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2373 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2374 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2375 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2376 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2377 @ CHECK: stm.w  r5!, {r1, r2}           @ encoding: [0xa5,0xe8,0x06,0x00]
2378 @ CHECK: stm.w  r2, {r1, r2}            @ encoding: [0x82,0xe8,0x06,0x00]
2379
2380 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2381 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2382 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2383 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2384 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2385 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2386 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2387
2388
2389 @------------------------------------------------------------------------------
2390 @ STMDB
2391 @------------------------------------------------------------------------------
2392         stmdb r4, {r4, r5, r8, r9}
2393         stmdb r4, {r5, r6}
2394         stmdb r5!, {r3, r8}
2395         stmea r5!, {r3, r8}
2396         stmdb.w r5, {r0, r1}
2397
2398 @ CHECK: stmdb  r4, {r4, r5, r8, r9}    @ encoding: [0x04,0xe9,0x30,0x03]
2399 @ CHECK: stmdb  r4, {r5, r6}            @ encoding: [0x04,0xe9,0x60,0x00]
2400 @ CHECK: stmdb  r5!, {r3, r8}           @ encoding: [0x25,0xe9,0x08,0x01]
2401 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2402 @ CHECK: stmdb  r5, {r0, r1}            @ encoding: [0x05,0xe9,0x03,0x00]
2403
2404
2405 @------------------------------------------------------------------------------
2406 @ STR(immediate)
2407 @------------------------------------------------------------------------------
2408         str r5, [r5, #-4]
2409         str r5, [r6, #32]
2410         str r5, [r6, #33]
2411         str r5, [r6, #257]
2412         str.w pc, [r7, #257]
2413         str r2, [r4, #255]!
2414         str r8, [sp, #4]!
2415         str lr, [sp, #-4]!
2416         str r2, [r4], #255
2417         str r8, [sp], #4
2418         str lr, [sp], #-4
2419
2420 @ CHECK: str    r5, [r5, #-4]           @ encoding: [0x45,0xf8,0x04,0x5c]
2421 @ CHECK: str    r5, [r6, #32]           @ encoding: [0x35,0x62]
2422 @ CHECK: str.w  r5, [r6, #33]           @ encoding: [0xc6,0xf8,0x21,0x50]
2423 @ CHECK: str.w  r5, [r6, #257]          @ encoding: [0xc6,0xf8,0x01,0x51]
2424 @ CHECK: str.w  pc, [r7, #257]          @ encoding: [0xc7,0xf8,0x01,0xf1]
2425 @ CHECK: str    r2, [r4, #255]!         @ encoding: [0x44,0xf8,0xff,0x2f]
2426 @ CHECK: str    r8, [sp, #4]!           @ encoding: [0x4d,0xf8,0x04,0x8f]
2427 @ CHECK: str    lr, [sp, #-4]!          @ encoding: [0x4d,0xf8,0x04,0xed]
2428 @ CHECK: str    r2, [r4], #255          @ encoding: [0x44,0xf8,0xff,0x2b]
2429 @ CHECK: str    r8, [sp], #4            @ encoding: [0x4d,0xf8,0x04,0x8b]
2430 @ CHECK: str    lr, [sp], #-4           @ encoding: [0x4d,0xf8,0x04,0xe9]
2431
2432
2433 @------------------------------------------------------------------------------
2434 @ STR(register)
2435 @------------------------------------------------------------------------------
2436         str r1, [r8, r1]
2437         str.w r4, [r5, r2]
2438         str r6, [r0, r2, lsl #3]
2439         str r8, [r8, r2, lsl #2]
2440         str r7, [sp, r2, lsl #1]
2441         str r7, [sp, r2, lsl #0]
2442
2443 @ CHECK: str.w  r1, [r8, r1]            @ encoding: [0x48,0xf8,0x01,0x10]
2444 @ CHECK: str.w  r4, [r5, r2]            @ encoding: [0x45,0xf8,0x02,0x40]
2445 @ CHECK: str.w  r6, [r0, r2, lsl #3]    @ encoding: [0x40,0xf8,0x32,0x60]
2446 @ CHECK: str.w  r8, [r8, r2, lsl #2]    @ encoding: [0x48,0xf8,0x22,0x80]
2447 @ CHECK: str.w  r7, [sp, r2, lsl #1]    @ encoding: [0x4d,0xf8,0x12,0x70]
2448 @ CHECK: str.w  r7, [sp, r2]            @ encoding: [0x4d,0xf8,0x02,0x70]
2449
2450
2451 @------------------------------------------------------------------------------
2452 @ STRB(immediate)
2453 @------------------------------------------------------------------------------
2454         strb r5, [r5, #-4]
2455         strb r5, [r6, #32]
2456         strb r5, [r6, #33]
2457         strb r5, [r6, #257]
2458         strb.w lr, [r7, #257]
2459         strb r5, [r8, #255]!
2460         strb r2, [r5, #4]!
2461         strb r1, [r4, #-4]!
2462         strb lr, [r3], #255
2463         strb r9, [r2], #4
2464         strb r3, [sp], #-4
2465         strb r4, [r8, #-0]!
2466
2467 @ CHECK: strb   r5, [r5, #-4]           @ encoding: [0x05,0xf8,0x04,0x5c]
2468 @ CHECK: strb.w r5, [r6, #32]           @ encoding: [0x86,0xf8,0x20,0x50]
2469 @ CHECK: strb.w r5, [r6, #33]           @ encoding: [0x86,0xf8,0x21,0x50]
2470 @ CHECK: strb.w r5, [r6, #257]          @ encoding: [0x86,0xf8,0x01,0x51]
2471 @ CHECK: strb.w lr, [r7, #257]          @ encoding: [0x87,0xf8,0x01,0xe1]
2472 @ CHECK: strb   r5, [r8, #255]!         @ encoding: [0x08,0xf8,0xff,0x5f]
2473 @ CHECK: strb   r2, [r5, #4]!           @ encoding: [0x05,0xf8,0x04,0x2f]
2474 @ CHECK: strb   r1, [r4, #-4]!          @ encoding: [0x04,0xf8,0x04,0x1d]
2475 @ CHECK: strb   lr, [r3], #255          @ encoding: [0x03,0xf8,0xff,0xeb]
2476 @ CHECK: strb   r9, [r2], #4            @ encoding: [0x02,0xf8,0x04,0x9b]
2477 @ CHECK: strb   r3, [sp], #-4           @ encoding: [0x0d,0xf8,0x04,0x39]
2478 @ CHECK: strb   r4, [r8, #-0]!          @ encoding: [0x08,0xf8,0x00,0x4d]
2479
2480
2481 @------------------------------------------------------------------------------
2482 @ STRB(register)
2483 @------------------------------------------------------------------------------
2484         strb r1, [r8, r1]
2485         strb.w r4, [r5, r2]
2486         strb r6, [r0, r2, lsl #3]
2487         strb r8, [r8, r2, lsl #2]
2488         strb r7, [sp, r2, lsl #1]
2489         strb r7, [sp, r2, lsl #0]
2490
2491 @ CHECK: strb.w r1, [r8, r1]            @ encoding: [0x08,0xf8,0x01,0x10]
2492 @ CHECK: strb.w r4, [r5, r2]            @ encoding: [0x05,0xf8,0x02,0x40]
2493 @ CHECK: strb.w r6, [r0, r2, lsl #3]    @ encoding: [0x00,0xf8,0x32,0x60]
2494 @ CHECK: strb.w r8, [r8, r2, lsl #2]    @ encoding: [0x08,0xf8,0x22,0x80]
2495 @ CHECK: strb.w r7, [sp, r2, lsl #1]    @ encoding: [0x0d,0xf8,0x12,0x70]
2496 @ CHECK: strb.w r7, [sp, r2]            @ encoding: [0x0d,0xf8,0x02,0x70]
2497
2498
2499 @------------------------------------------------------------------------------
2500 @ STRBT
2501 @------------------------------------------------------------------------------
2502         strbt r1, [r2]
2503         strbt r1, [r8, #0]
2504         strbt r1, [r8, #3]
2505         strbt r1, [r8, #255]
2506
2507 @ CHECK: strbt  r1, [r2]                @ encoding: [0x02,0xf8,0x00,0x1e]
2508 @ CHECK: strbt  r1, [r8]                @ encoding: [0x08,0xf8,0x00,0x1e]
2509 @ CHECK: strbt  r1, [r8, #3]            @ encoding: [0x08,0xf8,0x03,0x1e]
2510 @ CHECK: strbt  r1, [r8, #255]          @ encoding: [0x08,0xf8,0xff,0x1e]
2511
2512
2513 @------------------------------------------------------------------------------
2514 @ STRD
2515 @------------------------------------------------------------------------------
2516         strd r3, r5, [r6, #24]
2517         strd r3, r5, [r6, #24]!
2518         strd r3, r5, [r6], #4
2519         strd r3, r5, [r6], #-8
2520         strd r3, r5, [r6]
2521         strd r8, r1, [r3, #0]
2522
2523 @ CHECK: strd   r3, r5, [r6, #24]       @ encoding: [0xc6,0xe9,0x06,0x35]
2524 @ CHECK: strd   r3, r5, [r6, #24]!      @ encoding: [0xe6,0xe9,0x06,0x35]
2525 @ CHECK: strd   r3, r5, [r6], #4        @ encoding: [0xe6,0xe8,0x01,0x35]
2526 @ CHECK: strd   r3, r5, [r6], #-8       @ encoding: [0x66,0xe8,0x02,0x35]
2527 @ CHECK: strd   r3, r5, [r6]            @ encoding: [0xc6,0xe9,0x00,0x35]
2528 @ CHECK: strd   r8, r1, [r3]            @ encoding: [0xc3,0xe9,0x00,0x81]
2529
2530
2531 @------------------------------------------------------------------------------
2532 @ STREX/STREXB/STREXH/STREXD
2533 @------------------------------------------------------------------------------
2534         strex r1, r8, [r4]
2535         strex r8, r2, [r4, #0]
2536         strex r2, r12, [sp, #128]
2537         strexb r5, r1, [r7]
2538         strexh r9, r7, [r12]
2539         strexd r9, r3, r6, [r4]
2540
2541 @ CHECK: strex  r1, r8, [r4]            @ encoding: [0x44,0xe8,0x00,0x81]
2542 @ CHECK: strex  r8, r2, [r4]            @ encoding: [0x44,0xe8,0x00,0x28]
2543 @ CHECK: strex  r2, r12, [sp, #128]     @ encoding: [0x4d,0xe8,0x20,0xc2]
2544 @ CHECK: strexb r5, r1, [r7]            @ encoding: [0xc7,0xe8,0x45,0x1f]
2545 @ CHECK: strexh r9, r7, [r12]           @ encoding: [0xcc,0xe8,0x59,0x7f]
2546 @ CHECK: strexd r9, r3, r6, [r4]        @ encoding: [0xc4,0xe8,0x79,0x36]
2547
2548
2549 @------------------------------------------------------------------------------
2550 @ STRH(immediate)
2551 @------------------------------------------------------------------------------
2552         strh r5, [r5, #-4]
2553         strh r5, [r6, #32]
2554         strh r5, [r6, #33]
2555         strh r5, [r6, #257]
2556         strh.w lr, [r7, #257]
2557         strh r5, [r8, #255]!
2558         strh r2, [r5, #4]!
2559         strh r1, [r4, #-4]!
2560         strh lr, [r3], #255
2561         strh r9, [r2], #4
2562         strh r3, [sp], #-4
2563
2564 @ CHECK: strh   r5, [r5, #-4]           @ encoding: [0x25,0xf8,0x04,0x5c]
2565 @ CHECK: strh   r5, [r6, #32]           @ encoding: [0x35,0x84]
2566 @ CHECK: strh.w r5, [r6, #33]           @ encoding: [0xa6,0xf8,0x21,0x50]
2567 @ CHECK: strh.w r5, [r6, #257]          @ encoding: [0xa6,0xf8,0x01,0x51]
2568 @ CHECK: strh.w lr, [r7, #257]          @ encoding: [0xa7,0xf8,0x01,0xe1]
2569 @ CHECK: strh   r5, [r8, #255]!         @ encoding: [0x28,0xf8,0xff,0x5f]
2570 @ CHECK: strh   r2, [r5, #4]!           @ encoding: [0x25,0xf8,0x04,0x2f]
2571 @ CHECK: strh   r1, [r4, #-4]!          @ encoding: [0x24,0xf8,0x04,0x1d]
2572 @ CHECK: strh   lr, [r3], #255          @ encoding: [0x23,0xf8,0xff,0xeb]
2573 @ CHECK: strh   r9, [r2], #4            @ encoding: [0x22,0xf8,0x04,0x9b]
2574 @ CHECK: strh   r3, [sp], #-4           @ encoding: [0x2d,0xf8,0x04,0x39]
2575
2576
2577 @------------------------------------------------------------------------------
2578 @ STRH(register)
2579 @------------------------------------------------------------------------------
2580         strh r1, [r8, r1]
2581         strh.w r4, [r5, r2]
2582         strh r6, [r0, r2, lsl #3]
2583         strh r8, [r8, r2, lsl #2]
2584         strh r7, [sp, r2, lsl #1]
2585         strh r7, [sp, r2, lsl #0]
2586
2587 @ CHECK: strh.w r1, [r8, r1]            @ encoding: [0x28,0xf8,0x01,0x10]
2588 @ CHECK: strh.w r4, [r5, r2]            @ encoding: [0x25,0xf8,0x02,0x40]
2589 @ CHECK: strh.w r6, [r0, r2, lsl #3]    @ encoding: [0x20,0xf8,0x32,0x60]
2590 @ CHECK: strh.w r8, [r8, r2, lsl #2]    @ encoding: [0x28,0xf8,0x22,0x80]
2591 @ CHECK: strh.w r7, [sp, r2, lsl #1]    @ encoding: [0x2d,0xf8,0x12,0x70]
2592 @ CHECK: strh.w r7, [sp, r2]            @ encoding: [0x2d,0xf8,0x02,0x70]
2593
2594
2595 @------------------------------------------------------------------------------
2596 @ STRHT
2597 @------------------------------------------------------------------------------
2598         strht r1, [r2]
2599         strht r1, [r8, #0]
2600         strht r1, [r8, #3]
2601         strht r1, [r8, #255]
2602
2603 @ CHECK: strht  r1, [r2]                @ encoding: [0x22,0xf8,0x00,0x1e]
2604 @ CHECK: strht  r1, [r8]                @ encoding: [0x28,0xf8,0x00,0x1e]
2605 @ CHECK: strht  r1, [r8, #3]            @ encoding: [0x28,0xf8,0x03,0x1e]
2606 @ CHECK: strht  r1, [r8, #255]          @ encoding: [0x28,0xf8,0xff,0x1e]
2607
2608
2609 @------------------------------------------------------------------------------
2610 @ STRT
2611 @------------------------------------------------------------------------------
2612         strt r1, [r2]
2613         strt r1, [r8, #0]
2614         strt r1, [r8, #3]
2615         strt r1, [r8, #255]
2616
2617 @ CHECK: strt   r1, [r2]                @ encoding: [0x42,0xf8,0x00,0x1e]
2618 @ CHECK: strt   r1, [r8]                @ encoding: [0x48,0xf8,0x00,0x1e]
2619 @ CHECK: strt   r1, [r8, #3]            @ encoding: [0x48,0xf8,0x03,0x1e]
2620 @ CHECK: strt   r1, [r8, #255]          @ encoding: [0x48,0xf8,0xff,0x1e]
2621
2622
2623 @------------------------------------------------------------------------------
2624 @ SUB (immediate)
2625 @------------------------------------------------------------------------------
2626         itet eq
2627         subeq r1, r2, #4
2628         subwne r5, r3, #1023
2629         subeq r4, r5, #293
2630         sub r2, sp, #1024
2631         sub r2, r8, #0xff00
2632         sub r2, r3, #257
2633         subw r2, r3, #257
2634         sub r12, r6, #0x100
2635         subw r12, r6, #0x100
2636         subs r1, r2, #0x1f0
2637         sub r2, #1
2638         sub r0, r0, #32
2639
2640 @ CHECK: itet   eq                      @ encoding: [0x0a,0xbf]
2641 @ CHECK: subeq  r1, r2, #4              @ encoding: [0x11,0x1f]
2642 @ CHECK: subwne r5, r3, #1023           @ encoding: [0xa3,0xf2,0xff,0x35]
2643 @ CHECK: subweq r4, r5, #293            @ encoding: [0xa5,0xf2,0x25,0x14]
2644 @ CHECK: sub.w  r2, sp, #1024           @ encoding: [0xad,0xf5,0x80,0x62]
2645 @ CHECK: sub.w  r2, r8, #65280          @ encoding: [0xa8,0xf5,0x7f,0x42]
2646 @ CHECK: subw   r2, r3, #257            @ encoding: [0xa3,0xf2,0x01,0x12]
2647 @ CHECK: subw   r2, r3, #257            @ encoding: [0xa3,0xf2,0x01,0x12]
2648 @ CHECK: sub.w  r12, r6, #256           @ encoding: [0xa6,0xf5,0x80,0x7c]
2649 @ CHECK: subw   r12, r6, #256           @ encoding: [0xa6,0xf2,0x00,0x1c]
2650 @ CHECK: subs.w r1, r2, #496            @ encoding: [0xb2,0xf5,0xf8,0x71]
2651 @ CHECK: sub.w  r2, r2, #1              @ encoding: [0xa2,0xf1,0x01,0x02]
2652 @ CHECK: sub.w  r0, r0, #32             @ encoding: [0xa0,0xf1,0x20,0x00]
2653
2654
2655 @------------------------------------------------------------------------------
2656 @ SUB (register)
2657 @------------------------------------------------------------------------------
2658         sub r4, r5, r6
2659         sub r4, r5, r6, lsl #5
2660         sub r4, r5, r6, lsr #5
2661         sub.w r4, r5, r6, lsr #5
2662         sub r4, r5, r6, asr #5
2663         sub r4, r5, r6, ror #5
2664         sub.w r5, r2, r12, rrx
2665
2666 @ CHECK: sub.w  r4, r5, r6              @ encoding: [0xa5,0xeb,0x06,0x04]
2667 @ CHECK: sub.w  r4, r5, r6, lsl #5      @ encoding: [0xa5,0xeb,0x46,0x14]
2668 @ CHECK: sub.w  r4, r5, r6, lsr #5      @ encoding: [0xa5,0xeb,0x56,0x14]
2669 @ CHECK: sub.w  r4, r5, r6, lsr #5      @ encoding: [0xa5,0xeb,0x56,0x14]
2670 @ CHECK: sub.w  r4, r5, r6, asr #5      @ encoding: [0xa5,0xeb,0x66,0x14]
2671 @ CHECK: sub.w  r4, r5, r6, ror #5      @ encoding: [0xa5,0xeb,0x76,0x14]
2672 @ CHECK: sub.w r5, r2, r12, rrx         @ encoding: [0xa2,0xeb,0x3c,0x05]
2673
2674
2675 @------------------------------------------------------------------------------
2676 @ SVC
2677 @------------------------------------------------------------------------------
2678         svc #0
2679         ite eq
2680         svceq #255
2681         swine #33
2682
2683 @ CHECK: svc    #0                      @ encoding: [0x00,0xdf]
2684 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
2685 @ CHECK: svceq  #255                    @ encoding: [0xff,0xdf]
2686 @ CHECK: svcne  #33                     @ encoding: [0x21,0xdf]
2687
2688
2689 @------------------------------------------------------------------------------
2690 @ SXTAB
2691 @------------------------------------------------------------------------------
2692         sxtab r2, r3, r4
2693         sxtab r4, r5, r6, ror #0
2694         it lt
2695         sxtablt r6, r2, r9, ror #8
2696         sxtab r5, r1, r4, ror #16
2697         sxtab r7, r8, r3, ror #24
2698
2699 @ CHECK: sxtab  r2, r3, r4              @ encoding: [0x43,0xfa,0x84,0xf2]
2700 @ CHECK: sxtab  r4, r5, r6              @ encoding: [0x45,0xfa,0x86,0xf4]
2701 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
2702 @ CHECK: sxtablt r6, r2, r9, ror #8     @ encoding: [0x42,0xfa,0x99,0xf6]
2703 @ CHECK: sxtab  r5, r1, r4, ror #16     @ encoding: [0x41,0xfa,0xa4,0xf5]
2704 @ CHECK: sxtab  r7, r8, r3, ror #24     @ encoding: [0x48,0xfa,0xb3,0xf7]
2705
2706
2707 @------------------------------------------------------------------------------
2708 @ SXTAB16
2709 @------------------------------------------------------------------------------
2710         sxtab16 r6, r2, r7, ror #0
2711         sxtab16 r3, r5, r8, ror #8
2712         sxtab16 r3, r2, r1, ror #16
2713         ite ne
2714         sxtab16ne r0, r1, r4
2715         sxtab16eq r1, r2, r3, ror #24
2716
2717 @ CHECK: sxtab16 r6, r2, r7             @ encoding: [0x22,0xfa,0x87,0xf6]
2718 @ CHECK: sxtab16 r3, r5, r8, ror #8     @ encoding: [0x25,0xfa,0x98,0xf3]
2719 @ CHECK: sxtab16 r3, r2, r1, ror #16    @ encoding: [0x22,0xfa,0xa1,0xf3]
2720 @ CHECK: ite    ne                      @ encoding: [0x14,0xbf]
2721 @ CHECK: sxtab16ne r0, r1, r4           @ encoding: [0x21,0xfa,0x84,0xf0]
2722 @ CHECK: sxtab16eq r1, r2, r3, ror #24  @ encoding: [0x22,0xfa,0xb3,0xf1]
2723
2724
2725 @------------------------------------------------------------------------------
2726 @ SXTAH
2727 @------------------------------------------------------------------------------
2728         sxtah r1, r3, r9
2729         sxtah r3, r8, r3, ror #8
2730         sxtah r9, r3, r3, ror #24
2731         ite hi
2732         sxtahhi r6, r1, r6, ror #0
2733         sxtahls r2, r2, r4, ror #16
2734
2735 @ CHECK: sxtah  r1, r3, r9              @ encoding: [0x03,0xfa,0x89,0xf1]
2736 @ CHECK: sxtah  r3, r8, r3, ror #8      @ encoding: [0x08,0xfa,0x93,0xf3]
2737 @ CHECK: sxtah  r9, r3, r3, ror #24     @ encoding: [0x03,0xfa,0xb3,0xf9]
2738 @ CHECK: ite    hi                      @ encoding: [0x8c,0xbf]
2739 @ CHECK: sxtahhi r6, r1, r6             @ encoding: [0x01,0xfa,0x86,0xf6]
2740 @ CHECK: sxtahls r2, r2, r4, ror #16    @ encoding: [0x02,0xfa,0xa4,0xf2]
2741
2742
2743 @------------------------------------------------------------------------------
2744 @ SXTB
2745 @------------------------------------------------------------------------------
2746         sxtb r5, r6, ror #0
2747         sxtb r6, r9, ror #8
2748         sxtb r8, r3, ror #24
2749         ite ge
2750         sxtbge r2, r4
2751         sxtblt r5, r1, ror #16
2752         sxtb.w  r7, r8
2753
2754 @ CHECK: sxtb   r5, r6                  @ encoding: [0x75,0xb2]
2755 @ CHECK: sxtb.w r6, r9, ror #8          @ encoding: [0x4f,0xfa,0x99,0xf6]
2756 @ CHECK: sxtb.w r8, r3, ror #24         @ encoding: [0x4f,0xfa,0xb3,0xf8]
2757 @ CHECK: ite    ge                      @ encoding: [0xac,0xbf]
2758 @ CHECK: sxtbge r2, r4                  @ encoding: [0x62,0xb2]
2759 @ CHECK: sxtblt.w       r5, r1, ror #16 @ encoding: [0x4f,0xfa,0xa1,0xf5]
2760 @ CHECK: sxtb.w r7, r8                  @ encoding: [0x4f,0xfa,0x88,0xf7]
2761
2762
2763 @------------------------------------------------------------------------------
2764 @ SXTB16
2765 @------------------------------------------------------------------------------
2766         sxtb16 r1, r4
2767         sxtb16 r6, r7, ror #0
2768         sxtb16 r3, r1, ror #16
2769         ite cs
2770         sxtb16cs r3, r5, ror #8
2771         sxtb16lo r2, r3, ror #24
2772
2773 @ CHECK: sxtb16 r1, r4                  @ encoding: [0x2f,0xfa,0x84,0xf1]
2774 @ CHECK: sxtb16 r6, r7                  @ encoding: [0x2f,0xfa,0x87,0xf6]
2775 @ CHECK: sxtb16 r3, r1, ror #16         @ encoding: [0x2f,0xfa,0xa1,0xf3]
2776 @ CHECK: ite    hs                      @ encoding: [0x2c,0xbf]
2777 @ CHECK: sxtb16hs       r3, r5, ror #8  @ encoding: [0x2f,0xfa,0x95,0xf3]
2778 @ CHECK: sxtb16lo       r2, r3, ror #24 @ encoding: [0x2f,0xfa,0xb3,0xf2]
2779
2780
2781 @------------------------------------------------------------------------------
2782 @ SXTH
2783 @------------------------------------------------------------------------------
2784         sxth r1, r6, ror #0
2785         sxth r3, r8, ror #8
2786         sxth r9, r3, ror #24
2787         itt ne
2788         sxthne r3, r9
2789         sxthne r2, r2, ror #16
2790         sxth.w  r7, r8
2791
2792 @ CHECK: sxth   r1, r6                  @ encoding: [0x31,0xb2]
2793 @ CHECK: sxth.w r3, r8, ror #8          @ encoding: [0x0f,0xfa,0x98,0xf3]
2794 @ CHECK: sxth.w r9, r3, ror #24         @ encoding: [0x0f,0xfa,0xb3,0xf9]
2795 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
2796 @ CHECK: sxthne.w       r3, r9          @ encoding: [0x0f,0xfa,0x89,0xf3]
2797 @ CHECK: sxthne.w       r2, r2, ror #16 @ encoding: [0x0f,0xfa,0xa2,0xf2]
2798 @ CHECK: sxth.w r7, r8                  @ encoding: [0x0f,0xfa,0x88,0xf7]
2799
2800
2801 @------------------------------------------------------------------------------
2802 @ SXTB
2803 @------------------------------------------------------------------------------
2804         sxtb r5, r6, ror #0
2805         sxtb.w r6, r9, ror #8
2806         sxtb r8, r3, ror #24
2807         ite ge
2808         sxtbge r2, r4
2809         sxtblt r5, r1, ror #16
2810
2811 @ CHECK: sxtb   r5, r6                  @ encoding: [0x75,0xb2]
2812 @ CHECK: sxtb.w r6, r9, ror #8          @ encoding: [0x4f,0xfa,0x99,0xf6]
2813 @ CHECK: sxtb.w r8, r3, ror #24         @ encoding: [0x4f,0xfa,0xb3,0xf8]
2814 @ CHECK: ite    ge                      @ encoding: [0xac,0xbf]
2815 @ CHECK: sxtbge r2, r4                  @ encoding: [0x62,0xb2]
2816 @ CHECK: sxtblt.w       r5, r1, ror #16 @ encoding: [0x4f,0xfa,0xa1,0xf5]
2817
2818
2819 @------------------------------------------------------------------------------
2820 @ SXTB16
2821 @------------------------------------------------------------------------------
2822         sxtb16 r1, r4
2823         sxtb16 r6, r7, ror #0
2824         sxtb16 r3, r1, ror #16
2825         ite cs
2826         sxtb16cs r3, r5, ror #8
2827         sxtb16lo r2, r3, ror #24
2828
2829 @ CHECK: sxtb16 r1, r4                  @ encoding: [0x2f,0xfa,0x84,0xf1]
2830 @ CHECK: sxtb16 r6, r7                  @ encoding: [0x2f,0xfa,0x87,0xf6]
2831 @ CHECK: sxtb16 r3, r1, ror #16         @ encoding: [0x2f,0xfa,0xa1,0xf3]
2832 @ CHECK: ite    hs                      @ encoding: [0x2c,0xbf]
2833 @ CHECK: sxtb16hs       r3, r5, ror #8  @ encoding: [0x2f,0xfa,0x95,0xf3]
2834 @ CHECK: sxtb16lo       r2, r3, ror #24 @ encoding: [0x2f,0xfa,0xb3,0xf2]
2835
2836
2837 @------------------------------------------------------------------------------
2838 @ SXTH
2839 @------------------------------------------------------------------------------
2840         sxth r1, r6, ror #0
2841         sxth.w r3, r8, ror #8
2842         sxth r9, r3, ror #24
2843         itt ne
2844         sxthne r3, r9
2845         sxthne r2, r2, ror #16
2846
2847 @ CHECK: sxth   r1, r6                  @ encoding: [0x31,0xb2]
2848 @ CHECK: sxth.w r3, r8, ror #8          @ encoding: [0x0f,0xfa,0x98,0xf3]
2849 @ CHECK: sxth.w r9, r3, ror #24         @ encoding: [0x0f,0xfa,0xb3,0xf9]
2850 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
2851 @ CHECK: sxthne.w       r3, r9          @ encoding: [0x0f,0xfa,0x89,0xf3]
2852 @ CHECK: sxthne.w       r2, r2, ror #16 @ encoding: [0x0f,0xfa,0xa2,0xf2]
2853
2854
2855 @------------------------------------------------------------------------------
2856 @ TBB/TBH
2857 @------------------------------------------------------------------------------
2858         tbb [r3, r8]
2859         tbh [r3, r8, lsl #1]
2860         it eq
2861         tbbeq [r3, r8]
2862         it cs
2863         tbhcs [r3, r8, lsl #1]
2864
2865 @ CHECK: tbb    [r3, r8]                @ encoding: [0xd3,0xe8,0x08,0xf0]
2866 @ CHECK: tbh    [r3, r8, lsl #1]        @ encoding: [0xd3,0xe8,0x18,0xf0]
2867 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
2868 @ CHECK: tbbeq  [r3, r8]                @ encoding: [0xd3,0xe8,0x08,0xf0]
2869 @ CHECK: it     hs                      @ encoding: [0x28,0xbf]
2870 @ CHECK: tbhhs  [r3, r8, lsl #1]        @ encoding: [0xd3,0xe8,0x18,0xf0]
2871
2872
2873 @------------------------------------------------------------------------------
2874 @ TEQ
2875 @------------------------------------------------------------------------------
2876         teq r5, #0xf000
2877         teq r4, r5
2878         teq r4, r5, lsl #5
2879         teq r4, r5, lsr #5
2880         teq r4, r5, lsr #5
2881         teq r4, r5, asr #5
2882         teq r4, r5, ror #5
2883
2884 @ CHECK: teq.w  r5, #61440              @ encoding: [0x95,0xf4,0x70,0x4f]
2885 @ CHECK: teq.w  r4, r5                  @ encoding: [0x94,0xea,0x05,0x0f]
2886 @ CHECK: teq.w  r4, r5, lsl #5          @ encoding: [0x94,0xea,0x45,0x1f]
2887 @ CHECK: teq.w  r4, r5, lsr #5          @ encoding: [0x94,0xea,0x55,0x1f]
2888 @ CHECK: teq.w  r4, r5, lsr #5          @ encoding: [0x94,0xea,0x55,0x1f]
2889 @ CHECK: teq.w  r4, r5, asr #5          @ encoding: [0x94,0xea,0x65,0x1f]
2890 @ CHECK: teq.w  r4, r5, ror #5          @ encoding: [0x94,0xea,0x75,0x1f]
2891
2892
2893 @------------------------------------------------------------------------------
2894 @ TST
2895 @------------------------------------------------------------------------------
2896         tst r5, #0xf000
2897         tst r2, r5
2898         tst r3, r12, lsl #5
2899         tst r4, r11, lsr #4
2900         tst r5, r10, lsr #12
2901         tst r6, r9, asr #30
2902         tst r7, r8, ror #2
2903
2904 @ CHECK: tst.w  r5, #61440              @ encoding: [0x15,0xf4,0x70,0x4f]
2905 @ CHECK: tst    r2, r5                  @ encoding: [0x2a,0x42]
2906 @ CHECK: tst.w  r3, r12, lsl #5         @ encoding: [0x13,0xea,0x4c,0x1f]
2907 @ CHECK: tst.w  r4, r11, lsr #4         @ encoding: [0x14,0xea,0x1b,0x1f]
2908 @ CHECK: tst.w  r5, r10, lsr #12        @ encoding: [0x15,0xea,0x1a,0x3f]
2909 @ CHECK: tst.w  r6, r9, asr #30         @ encoding: [0x16,0xea,0xa9,0x7f]
2910 @ CHECK: tst.w  r7, r8, ror #2          @ encoding: [0x17,0xea,0xb8,0x0f]
2911
2912
2913 @------------------------------------------------------------------------------
2914 @ UADD16/UADD8
2915 @------------------------------------------------------------------------------
2916         uadd16 r1, r2, r3
2917         uadd8 r1, r2, r3
2918         ite gt
2919         uadd16gt r1, r2, r3
2920         uadd8le r1, r2, r3
2921
2922 @ CHECK: uadd16 r1, r2, r3              @ encoding: [0x92,0xfa,0x43,0xf1]
2923 @ CHECK: uadd8  r1, r2, r3              @ encoding: [0x82,0xfa,0x43,0xf1]
2924 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
2925 @ CHECK: uadd16gt       r1, r2, r3      @ encoding: [0x92,0xfa,0x43,0xf1]
2926 @ CHECK: uadd8le        r1, r2, r3      @ encoding: [0x82,0xfa,0x43,0xf1]
2927
2928
2929 @------------------------------------------------------------------------------
2930 @ UASX
2931 @------------------------------------------------------------------------------
2932         uasx r9, r12, r0
2933         it eq
2934         uasxeq r9, r12, r0
2935         uaddsubx r9, r12, r0
2936         it eq
2937         uaddsubxeq r9, r12, r0
2938
2939 @ CHECK: uasx   r9, r12, r0             @ encoding: [0xac,0xfa,0x40,0xf9]
2940 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
2941 @ CHECK: uasxeq r9, r12, r0             @ encoding: [0xac,0xfa,0x40,0xf9]
2942 @ CHECK: uasx   r9, r12, r0             @ encoding: [0xac,0xfa,0x40,0xf9]
2943 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
2944 @ CHECK: uasxeq r9, r12, r0             @ encoding: [0xac,0xfa,0x40,0xf9]
2945
2946
2947 @------------------------------------------------------------------------------
2948 @ UBFX
2949 @------------------------------------------------------------------------------
2950         ubfx r4, r5, #16, #1
2951         it gt
2952         ubfxgt r4, r5, #16, #16
2953
2954 @ CHECK: ubfx   r4, r5, #16, #1         @ encoding: [0xc5,0xf3,0x00,0x44]
2955 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
2956 @ CHECK: ubfxgt r4, r5, #16, #16        @ encoding: [0xc5,0xf3,0x0f,0x44]
2957
2958
2959 @------------------------------------------------------------------------------
2960 @ UHADD16/UHADD8
2961 @------------------------------------------------------------------------------
2962         uhadd16 r4, r8, r2
2963         uhadd8 r4, r8, r2
2964         itt gt
2965         uhadd16gt r4, r8, r2
2966         uhadd8gt r4, r8, r2
2967
2968 @ CHECK: uhadd16        r4, r8, r2      @ encoding: [0x98,0xfa,0x62,0xf4]
2969 @ CHECK: uhadd8 r4, r8, r2              @ encoding: [0x88,0xfa,0x62,0xf4]
2970 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
2971 @ CHECK: uhadd16gt      r4, r8, r2      @ encoding: [0x98,0xfa,0x62,0xf4]
2972 @ CHECK: uhadd8gt       r4, r8, r2      @ encoding: [0x88,0xfa,0x62,0xf4]
2973
2974
2975 @------------------------------------------------------------------------------
2976 @ UHASX/UHSAX
2977 @------------------------------------------------------------------------------
2978         uhasx r4, r1, r5
2979         uhsax r5, r6, r6
2980         itt gt
2981         uhasxgt r6, r9, r8
2982         uhsaxgt r7, r8, r12
2983         uhaddsubx r4, r1, r5
2984         uhsubaddx r5, r6, r6
2985         itt gt
2986         uhaddsubxgt r6, r9, r8
2987         uhsubaddxgt r7, r8, r12
2988
2989 @ CHECK: uhasx  r4, r1, r5              @ encoding: [0xa1,0xfa,0x65,0xf4]
2990 @ CHECK: uhsax  r5, r6, r6              @ encoding: [0xe6,0xfa,0x66,0xf5]
2991 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
2992 @ CHECK: uhasxgt r6, r9, r8             @ encoding: [0xa9,0xfa,0x68,0xf6]
2993 @ CHECK: uhsaxgt r7, r8, r12            @ encoding: [0xe8,0xfa,0x6c,0xf7]
2994 @ CHECK: uhasx  r4, r1, r5              @ encoding: [0xa1,0xfa,0x65,0xf4]
2995 @ CHECK: uhsax  r5, r6, r6              @ encoding: [0xe6,0xfa,0x66,0xf5]
2996 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
2997 @ CHECK: uhasxgt r6, r9, r8             @ encoding: [0xa9,0xfa,0x68,0xf6]
2998 @ CHECK: uhsaxgt r7, r8, r12            @ encoding: [0xe8,0xfa,0x6c,0xf7]
2999
3000
3001 @------------------------------------------------------------------------------
3002 @ UHSUB16/UHSUB8
3003 @------------------------------------------------------------------------------
3004         uhsub16 r5, r8, r3
3005         uhsub8 r1, r7, r6
3006         itt lt
3007         uhsub16lt r4, r9, r12
3008         uhsub8lt r3, r1, r5
3009
3010 @ CHECK: uhsub16        r5, r8, r3      @ encoding: [0xd8,0xfa,0x63,0xf5]
3011 @ CHECK: uhsub8 r1, r7, r6              @ encoding: [0xc7,0xfa,0x66,0xf1]
3012 @ CHECK: itt    lt                      @ encoding: [0xbc,0xbf]
3013 @ CHECK: uhsub16lt      r4, r9, r12     @ encoding: [0xd9,0xfa,0x6c,0xf4]
3014 @ CHECK: uhsub8lt       r3, r1, r5      @ encoding: [0xc1,0xfa,0x65,0xf3]
3015
3016
3017 @------------------------------------------------------------------------------
3018 @ UMAAL
3019 @------------------------------------------------------------------------------
3020         umaal r3, r4, r5, r6
3021         it lt
3022         umaallt r3, r4, r5, r6
3023
3024 @ CHECK: umaal  r3, r4, r5, r6          @ encoding: [0xe5,0xfb,0x66,0x34]
3025 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
3026 @ CHECK: umaallt        r3, r4, r5, r6  @ encoding: [0xe5,0xfb,0x66,0x34]
3027
3028
3029 @------------------------------------------------------------------------------
3030 @ UMLAL
3031 @------------------------------------------------------------------------------
3032         umlal r2, r4, r6, r8
3033         it gt
3034         umlalgt r6, r1, r2, r6
3035
3036 @ CHECK: umlal  r2, r4, r6, r8          @ encoding: [0xe6,0xfb,0x08,0x24]
3037 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
3038 @ CHECK: umlalgt        r6, r1, r2, r6  @ encoding: [0xe2,0xfb,0x06,0x61]
3039
3040
3041 @------------------------------------------------------------------------------
3042 @ UMULL
3043 @------------------------------------------------------------------------------
3044         umull r2, r4, r6, r8
3045         it gt
3046         umullgt r6, r1, r2, r6
3047
3048 @ CHECK: umull  r2, r4, r6, r8          @ encoding: [0xa6,0xfb,0x08,0x24]
3049 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
3050 @ CHECK: umullgt        r6, r1, r2, r6  @ encoding: [0xa2,0xfb,0x06,0x61]
3051
3052
3053 @------------------------------------------------------------------------------
3054 @ UQADD16/UQADD8
3055 @------------------------------------------------------------------------------
3056         uqadd16 r1, r2, r3
3057         uqadd8 r3, r4, r8
3058         ite gt
3059         uqadd16gt r4, r7, r9
3060         uqadd8le r8, r1, r2
3061
3062 @ CHECK: uqadd16        r1, r2, r3      @ encoding: [0x92,0xfa,0x53,0xf1]
3063 @ CHECK: uqadd8 r3, r4, r8              @ encoding: [0x84,0xfa,0x58,0xf3]
3064 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3065 @ CHECK: uqadd16gt      r4, r7, r9      @ encoding: [0x97,0xfa,0x59,0xf4]
3066 @ CHECK: uqadd8le       r8, r1, r2      @ encoding: [0x81,0xfa,0x52,0xf8]
3067
3068
3069 @------------------------------------------------------------------------------
3070 @ UQASX/UQSAX
3071 @------------------------------------------------------------------------------
3072         uqasx r1, r2, r3
3073         uqsax r3, r4, r8
3074         ite gt
3075         uqasxgt r4, r7, r9
3076         uqsaxle r8, r1, r2
3077
3078         uqaddsubx r1, r2, r3
3079         uqsubaddx r3, r4, r8
3080         ite gt
3081         uqaddsubxgt r4, r7, r9
3082         uqsubaddxle r8, r1, r2
3083
3084 @ CHECK: uqasx  r1, r2, r3              @ encoding: [0xa2,0xfa,0x53,0xf1]
3085 @ CHECK: uqsax  r3, r4, r8              @ encoding: [0xe4,0xfa,0x58,0xf3]
3086 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3087 @ CHECK: uqasxgt r4, r7, r9             @ encoding: [0xa7,0xfa,0x59,0xf4]
3088 @ CHECK: uqsaxle r8, r1, r2             @ encoding: [0xe1,0xfa,0x52,0xf8]
3089
3090 @ CHECK: uqasx  r1, r2, r3              @ encoding: [0xa2,0xfa,0x53,0xf1]
3091 @ CHECK: uqsax  r3, r4, r8              @ encoding: [0xe4,0xfa,0x58,0xf3]
3092 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3093 @ CHECK: uqasxgt r4, r7, r9             @ encoding: [0xa7,0xfa,0x59,0xf4]
3094 @ CHECK: uqsaxle r8, r1, r2             @ encoding: [0xe1,0xfa,0x52,0xf8]
3095
3096
3097 @------------------------------------------------------------------------------
3098 @ UQSUB16/UQSUB8
3099 @------------------------------------------------------------------------------
3100         uqsub8 r8, r2, r9
3101         uqsub16 r1, r9, r7
3102         ite gt
3103         uqsub8gt r3, r1, r6
3104         uqsub16le r4, r6, r4
3105
3106 @ CHECK: uqsub8 r8, r2, r9              @ encoding: [0xc2,0xfa,0x59,0xf8]
3107 @ CHECK: uqsub16 r1, r9, r7             @ encoding: [0xd9,0xfa,0x57,0xf1]
3108 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3109 @ CHECK: uqsub8gt       r3, r1, r6      @ encoding: [0xc1,0xfa,0x56,0xf3]
3110 @ CHECK: uqsub16le      r4, r6, r4      @ encoding: [0xd6,0xfa,0x54,0xf4]
3111
3112
3113 @------------------------------------------------------------------------------
3114 @ UQSUB16/UQSUB8
3115 @------------------------------------------------------------------------------
3116         usad8 r1, r9, r7
3117         usada8 r8, r2, r9, r12
3118         ite gt
3119         usada8gt r3, r1, r6, r9
3120         usad8le r4, r6, r4
3121
3122 @ CHECK: usad8  r1, r9, r7              @ encoding: [0x79,0xfb,0x07,0xf1]
3123 @ CHECK: usada8 r8, r2, r9, r12         @ encoding: [0x72,0xfb,0x09,0xc8]
3124 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3125 @ CHECK: usada8gt       r3, r1, r6, r9  @ encoding: [0x71,0xfb,0x06,0x93]
3126 @ CHECK: usad8le        r4, r6, r4      @ encoding: [0x76,0xfb,0x04,0xf4]
3127
3128
3129 @------------------------------------------------------------------------------
3130 @ USAT
3131 @------------------------------------------------------------------------------
3132         usat    r8, #1, r10
3133         usat    r8, #4, r10, lsl #0
3134         usat    r8, #5, r10, lsl #31
3135         usat    r8, #16, r10, asr #1
3136
3137 @ CHECK: usat   r8, #1, r10             @ encoding: [0x8a,0xf3,0x01,0x08]
3138 @ CHECK: usat   r8, #4, r10             @ encoding: [0x8a,0xf3,0x04,0x08]
3139 @ CHECK: usat   r8, #5, r10, lsl #31    @ encoding: [0x8a,0xf3,0xc5,0x78]
3140 @ CHECK: usat   r8, #16, r10, asr #1    @ encoding: [0xaa,0xf3,0x50,0x08]
3141
3142
3143 @------------------------------------------------------------------------------
3144 @ USAT16
3145 @------------------------------------------------------------------------------
3146         usat16  r2, #2, r7
3147         usat16  r3, #15, r5
3148
3149 @ CHECK: usat16 r2, #2, r7              @ encoding: [0xa7,0xf3,0x02,0x02]
3150 @ CHECK: usat16 r3, #15, r5             @ encoding: [0xa5,0xf3,0x0f,0x03]
3151
3152
3153 @------------------------------------------------------------------------------
3154 @ USAX
3155 @------------------------------------------------------------------------------
3156         usax r2, r3, r4
3157         it ne
3158         usaxne r6, r1, r9
3159         usubaddx r2, r3, r4
3160         it ne
3161         usubaddxne r6, r1, r9
3162
3163 @ CHECK: usax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x44,0xf2]
3164 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
3165 @ CHECK: usaxne r6, r1, r9              @ encoding: [0xe1,0xfa,0x49,0xf6]
3166 @ CHECK: usax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x44,0xf2]
3167 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
3168 @ CHECK: usaxne r6, r1, r9              @ encoding: [0xe1,0xfa,0x49,0xf6]
3169
3170
3171 @------------------------------------------------------------------------------
3172 @ USUB16/USUB8
3173 @------------------------------------------------------------------------------
3174         usub16 r4, r2, r7
3175         usub8 r1, r8, r5
3176         ite hi
3177         usub16hi r1, r1, r3
3178         usub8ls r9, r2, r3
3179
3180 @ CHECK: usub16 r4, r2, r7              @ encoding: [0xd2,0xfa,0x47,0xf4]
3181 @ CHECK: usub8  r1, r8, r5              @ encoding: [0xc8,0xfa,0x45,0xf1]
3182 @ CHECK: ite    hi                      @ encoding: [0x8c,0xbf]
3183 @ CHECK: usub16hi       r1, r1, r3      @ encoding: [0xd1,0xfa,0x43,0xf1]
3184 @ CHECK: usub8ls        r9, r2, r3      @ encoding: [0xc2,0xfa,0x43,0xf9]
3185
3186
3187 @------------------------------------------------------------------------------
3188 @ UXTAB
3189 @------------------------------------------------------------------------------
3190         uxtab r2, r3, r4
3191         uxtab r4, r5, r6, ror #0
3192         it lt
3193         uxtablt r6, r2, r9, ror #8
3194         uxtab r5, r1, r4, ror #16
3195         uxtab r7, r8, r3, ror #24
3196
3197 @ CHECK: uxtab  r2, r3, r4              @ encoding: [0x53,0xfa,0x84,0xf2]
3198 @ CHECK: uxtab  r4, r5, r6              @ encoding: [0x55,0xfa,0x86,0xf4]
3199 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
3200 @ CHECK: uxtablt r6, r2, r9, ror #8     @ encoding: [0x52,0xfa,0x99,0xf6]
3201 @ CHECK: uxtab  r5, r1, r4, ror #16     @ encoding: [0x51,0xfa,0xa4,0xf5]
3202 @ CHECK: uxtab  r7, r8, r3, ror #24     @ encoding: [0x58,0xfa,0xb3,0xf7]
3203
3204
3205 @------------------------------------------------------------------------------
3206 @ UXTAB16
3207 @------------------------------------------------------------------------------
3208         it ge
3209         uxtab16ge r0, r1, r4
3210         uxtab16 r6, r2, r7, ror #0
3211         uxtab16 r3, r5, r8, ror #8
3212         uxtab16 r3, r2, r1, ror #16
3213         it eq
3214         uxtab16eq r1, r2, r3, ror #24
3215
3216 @ CHECK: it     ge                      @ encoding: [0xa8,0xbf]
3217 @ CHECK: uxtab16ge      r0, r1, r4      @ encoding: [0x31,0xfa,0x84,0xf0]
3218 @ CHECK: uxtab16 r6, r2, r7             @ encoding: [0x32,0xfa,0x87,0xf6]
3219 @ CHECK: uxtab16 r3, r5, r8, ror #8     @ encoding: [0x35,0xfa,0x98,0xf3]
3220 @ CHECK: uxtab16 r3, r2, r1, ror #16    @ encoding: [0x32,0xfa,0xa1,0xf3]
3221 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
3222 @ CHECK: uxtab16eq r1, r2, r3, ror #24  @ encoding: [0x32,0xfa,0xb3,0xf1]
3223
3224
3225 @------------------------------------------------------------------------------
3226 @ UXTAH
3227 @------------------------------------------------------------------------------
3228         uxtah r1, r3, r9
3229         it hi
3230         uxtahhi r6, r1, r6, ror #0
3231         uxtah r3, r8, r3, ror #8
3232         it lo
3233         uxtahlo r2, r2, r4, ror #16
3234         uxtah r9, r3, r3, ror #24
3235
3236 @ CHECK: uxtah  r1, r3, r9              @ encoding: [0x13,0xfa,0x89,0xf1]
3237 @ CHECK: it     hi                      @ encoding: [0x88,0xbf]
3238 @ CHECK: uxtahhi r6, r1, r6             @ encoding: [0x11,0xfa,0x86,0xf6]
3239 @ CHECK: uxtah  r3, r8, r3, ror #8      @ encoding: [0x18,0xfa,0x93,0xf3]
3240 @ CHECK: it     lo                      @ encoding: [0x38,0xbf]
3241 @ CHECK: uxtahlo r2, r2, r4, ror #16    @ encoding: [0x12,0xfa,0xa4,0xf2]
3242 @ CHECK: uxtah  r9, r3, r3, ror #24     @ encoding: [0x13,0xfa,0xb3,0xf9]
3243
3244
3245 @------------------------------------------------------------------------------
3246 @ UXTB
3247 @------------------------------------------------------------------------------
3248         it ge
3249         uxtbge r2, r4
3250         uxtb r5, r6, ror #0
3251         uxtb r6, r9, ror #8
3252         it cc
3253         uxtbcc r5, r1, ror #16
3254         uxtb r8, r3, ror #24
3255         uxtb.w  r7, r8
3256
3257 @ CHECK: it     ge                      @ encoding: [0xa8,0xbf]
3258 @ CHECK: uxtbge r2, r4                  @ encoding: [0xe2,0xb2]
3259 @ CHECK: uxtb   r5, r6                  @ encoding: [0xf5,0xb2]
3260 @ CHECK: uxtb.w r6, r9, ror #8          @ encoding: [0x5f,0xfa,0x99,0xf6]
3261 @ CHECK: it     lo                      @ encoding: [0x38,0xbf]
3262 @ CHECK: uxtblo.w       r5, r1, ror #16 @ encoding: [0x5f,0xfa,0xa1,0xf5]
3263 @ CHECK: uxtb.w r8, r3, ror #24         @ encoding: [0x5f,0xfa,0xb3,0xf8]
3264 @ CHECK: uxtb.w r7, r8                  @ encoding: [0x5f,0xfa,0x88,0xf7]
3265
3266
3267 @------------------------------------------------------------------------------
3268 @ UXTB16
3269 @------------------------------------------------------------------------------
3270         uxtb16 r1, r4
3271         uxtb16 r6, r7, ror #0
3272         it cs
3273         uxtb16cs r3, r5, ror #8
3274         uxtb16 r3, r1, ror #16
3275         it ge
3276         uxtb16ge r2, r3, ror #24
3277
3278 @ CHECK: uxtb16 r1, r4                  @ encoding: [0x3f,0xfa,0x84,0xf1]
3279 @ CHECK: uxtb16 r6, r7                  @ encoding: [0x3f,0xfa,0x87,0xf6]
3280 @ CHECK: it     hs                      @ encoding: [0x28,0xbf]
3281 @ CHECK: uxtb16hs       r3, r5, ror #8  @ encoding: [0x3f,0xfa,0x95,0xf3]
3282 @ CHECK: uxtb16 r3, r1, ror #16         @ encoding: [0x3f,0xfa,0xa1,0xf3]
3283 @ CHECK: it     ge                      @ encoding: [0xa8,0xbf]
3284 @ CHECK: uxtb16ge       r2, r3, ror #24 @ encoding: [0x3f,0xfa,0xb3,0xf2]
3285
3286
3287 @------------------------------------------------------------------------------
3288 @ UXTH
3289 @------------------------------------------------------------------------------
3290         it ne
3291         uxthne r3, r9
3292         uxth r1, r6, ror #0
3293         uxth r3, r8, ror #8
3294         it le
3295         uxthle r2, r2, ror #16
3296         uxth r9, r3, ror #24
3297         uxth.w  r7, r8
3298
3299 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
3300 @ CHECK: uxthne.w       r3, r9          @ encoding: [0x1f,0xfa,0x89,0xf3]
3301 @ CHECK: uxth   r1, r6                  @ encoding: [0xb1,0xb2]
3302 @ CHECK: uxth.w r3, r8, ror #8          @ encoding: [0x1f,0xfa,0x98,0xf3]
3303 @ CHECK: it     le                      @ encoding: [0xd8,0xbf]
3304 @ CHECK: uxthle.w       r2, r2, ror #16 @ encoding: [0x1f,0xfa,0xa2,0xf2]
3305 @ CHECK: uxth.w r9, r3, ror #24         @ encoding: [0x1f,0xfa,0xb3,0xf9]
3306 @ CHECK: uxth.w r7, r8                  @ encoding: [0x1f,0xfa,0x88,0xf7]
3307
3308 @------------------------------------------------------------------------------
3309 @ WFE/WFI/YIELD
3310 @------------------------------------------------------------------------------
3311         wfe
3312         wfi
3313         yield
3314         itet lt
3315         wfelt
3316         wfige
3317         yieldlt
3318
3319 @ CHECK: wfe                            @ encoding: [0x20,0xbf]
3320 @ CHECK: wfi                            @ encoding: [0x30,0xbf]
3321 @ CHECK: yield                          @ encoding: [0x10,0xbf]
3322 @ CHECK: itet   lt                      @ encoding: [0xb6,0xbf]
3323 @ CHECK: wfelt                          @ encoding: [0x20,0xbf]
3324 @ CHECK: wfige                          @ encoding: [0x30,0xbf]
3325 @ CHECK: yieldlt                        @ encoding: [0x10,0xbf]
3326
3327
3328 @------------------------------------------------------------------------------
3329 @ Alternate syntax for LDR*(literal) encodings
3330 @------------------------------------------------------------------------------
3331         ldr r11, [pc, #-22]
3332         ldrb r11, [pc, #-22]
3333         ldrh r11, [pc, #-22]
3334         ldrsb r11, [pc, #-22]
3335         ldrsh r11, [pc, #-22]
3336
3337         ldr.w r11, [pc, #-22]
3338         ldrb.w r11, [pc, #-22]
3339         ldrh.w r11, [pc, #-22]
3340         ldrsb.w r11, [pc, #-22]
3341         ldrsh.w r11, [pc, #-22]
3342
3343 @ CHECK: ldr.w  r11, [pc, #-22]         @ encoding: [0x5f,0xf8,0x16,0xb0]
3344 @ CHECK: ldrb.w r11, [pc, #-22]         @ encoding: [0x1f,0xf8,0x16,0xb0]
3345 @ CHECK: ldrh.w r11, [pc, #-22]         @ encoding: [0x3f,0xf8,0x16,0xb0]
3346 @ CHECK: ldrsb.w r11, [pc, #-22]        @ encoding: [0x1f,0xf9,0x16,0xb0]
3347 @ CHECK: ldrsh.w r11, [pc, #-22]        @ encoding: [0x3f,0xf9,0x16,0xb0]
3348 @ CHECK: ldr.w  r11, [pc, #-22]         @ encoding: [0x5f,0xf8,0x16,0xb0]
3349 @ CHECK: ldrb.w r11, [pc, #-22]         @ encoding: [0x1f,0xf8,0x16,0xb0]
3350 @ CHECK: ldrh.w r11, [pc, #-22]         @ encoding: [0x3f,0xf8,0x16,0xb0]
3351 @ CHECK: ldrsb.w r11, [pc, #-22]        @ encoding: [0x1f,0xf9,0x16,0xb0]
3352 @ CHECK: ldrsh.w r11, [pc, #-22]        @ encoding: [0x3f,0xf9,0x16,0xb0]