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