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