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