basic-thumb2-instructions.s revision 50bd470d85c63860f887b7c3e5724c9fd43ef3a2
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
558@ CHECK: ldr	r5, [r5, #-4]           @ encoding: [0x55,0xf8,0x04,0x5c]
559@ CHECK: ldr	r5, [r6, #32]           @ encoding: [0x35,0x6a]
560@ CHECK: ldr.w	r5, [r6, #33]           @ encoding: [0xd6,0xf8,0x21,0x50]
561@ CHECK: ldr.w	r5, [r6, #257]          @ encoding: [0xd6,0xf8,0x01,0x51]
562@ CHECK: ldr.w	pc, [r7, #257]          @ encoding: [0xd7,0xf8,0x01,0xf1]
563
564
565@------------------------------------------------------------------------------
566@ LDR(literal)
567@------------------------------------------------------------------------------
568        ldr.w r5, _foo
569
570@ CHECK: ldr.w	r5, _foo                @ encoding: [0x5f'A',0xf8'A',A,0x50'A']
571            @   fixup A - offset: 0, value: _foo, kind: fixup_t2_ldst_pcrel_12
572
573
574@------------------------------------------------------------------------------
575@ LDR(register)
576@------------------------------------------------------------------------------
577        ldr r1, [r8, r1]
578        ldr.w r4, [r5, r2]
579        ldr r6, [r0, r2, lsl #3]
580        ldr r8, [r8, r2, lsl #2]
581        ldr r7, [sp, r2, lsl #1]
582        ldr r7, [sp, r2, lsl #0]
583        ldr r2, [r4, #255]!
584        ldr r8, [sp, #4]!
585        ldr lr, [sp, #-4]!
586        ldr r2, [r4], #255
587        ldr r8, [sp], #4
588        ldr lr, [sp], #-4
589
590@ CHECK: ldr.w	r1, [r8, r1]            @ encoding: [0x58,0xf8,0x01,0x10]
591@ CHECK: ldr.w	r4, [r5, r2]            @ encoding: [0x55,0xf8,0x02,0x40]
592@ CHECK: ldr.w	r6, [r0, r2, lsl #3]    @ encoding: [0x50,0xf8,0x32,0x60]
593@ CHECK: ldr.w	r8, [r8, r2, lsl #2]    @ encoding: [0x58,0xf8,0x22,0x80]
594@ CHECK: ldr.w	r7, [sp, r2, lsl #1]    @ encoding: [0x5d,0xf8,0x12,0x70]
595@ CHECK: ldr.w	r7, [sp, r2]            @ encoding: [0x5d,0xf8,0x02,0x70]
596@ CHECK: ldr	r2, [r4, #255]!         @ encoding: [0x54,0xf8,0xff,0x2f]
597@ CHECK: ldr	r8, [sp, #4]!           @ encoding: [0x5d,0xf8,0x04,0x8f]
598@ CHECK: ldr	lr, [sp, #-4]!          @ encoding: [0x5d,0xf8,0x04,0xed]
599@ CHECK: ldr	r2, [r4], #255          @ encoding: [0x54,0xf8,0xff,0x2b]
600@ CHECK: ldr	r8, [sp], #4            @ encoding: [0x5d,0xf8,0x04,0x8b]
601@ CHECK: ldr	lr, [sp], #-4           @ encoding: [0x5d,0xf8,0x04,0xe9]
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
613@ CHECK: ldrb	r5, [r5, #-4]           @ encoding: [0x15,0xf8,0x04,0x5c]
614@ CHECK: ldrb.w	r5, [r6, #32]           @ encoding: [0x96,0xf8,0x20,0x50]
615@ CHECK: ldrb.w	r5, [r6, #33]           @ encoding: [0x96,0xf8,0x21,0x50]
616@ CHECK: ldrb.w	r5, [r6, #257]          @ encoding: [0x96,0xf8,0x01,0x51]
617@ CHECK: ldrb.w	lr, [r7, #257]          @ encoding: [0x97,0xf8,0x01,0xe1]
618
619
620@------------------------------------------------------------------------------
621@ LDRB(register)
622@------------------------------------------------------------------------------
623        ldrb r1, [r8, r1]
624        ldrb.w r4, [r5, r2]
625        ldrb r6, [r0, r2, lsl #3]
626        ldrb r8, [r8, r2, lsl #2]
627        ldrb r7, [sp, r2, lsl #1]
628        ldrb r7, [sp, r2, lsl #0]
629        ldrb r5, [r8, #255]!
630        ldrb r2, [r5, #4]!
631        ldrb r1, [r4, #-4]!
632        ldrb lr, [r3], #255
633        ldrb r9, [r2], #4
634        ldrb r3, [sp], #-4
635
636@ CHECK: ldrb.w	r1, [r8, r1]            @ encoding: [0x18,0xf8,0x01,0x10]
637@ CHECK: ldrb.w	r4, [r5, r2]            @ encoding: [0x15,0xf8,0x02,0x40]
638@ CHECK: ldrb.w	r6, [r0, r2, lsl #3]    @ encoding: [0x10,0xf8,0x32,0x60]
639@ CHECK: ldrb.w	r8, [r8, r2, lsl #2]    @ encoding: [0x18,0xf8,0x22,0x80]
640@ CHECK: ldrb.w	r7, [sp, r2, lsl #1]    @ encoding: [0x1d,0xf8,0x12,0x70]
641@ CHECK: ldrb.w	r7, [sp, r2]            @ encoding: [0x1d,0xf8,0x02,0x70]
642@ CHECK: ldrb	r5, [r8, #255]!         @ encoding: [0x18,0xf8,0xff,0x5f]
643@ CHECK: ldrb	r2, [r5, #4]!           @ encoding: [0x15,0xf8,0x04,0x2f]
644@ CHECK: ldrb	r1, [r4, #-4]!          @ encoding: [0x14,0xf8,0x04,0x1d]
645@ CHECK: ldrb	lr, [r3], #255          @ encoding: [0x13,0xf8,0xff,0xeb]
646@ CHECK: ldrb	r9, [r2], #4            @ encoding: [0x12,0xf8,0x04,0x9b]
647@ CHECK: ldrb	r3, [sp], #-4           @ encoding: [0x1d,0xf8,0x04,0x39]
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(immediate)
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
714@ CHECK: ldrh	r5, [r5, #-4]           @ encoding: [0x35,0xf8,0x04,0x5c]
715@ CHECK: ldrh	r5, [r6, #32]           @ encoding: [0x35,0x8c]
716@ CHECK: ldrh.w	r5, [r6, #33]           @ encoding: [0xb6,0xf8,0x21,0x50]
717@ CHECK: ldrh.w	r5, [r6, #257]          @ encoding: [0xb6,0xf8,0x01,0x51]
718@ CHECK: ldrh.w	lr, [r7, #257]          @ encoding: [0xb7,0xf8,0x01,0xe1]
719
720
721@------------------------------------------------------------------------------
722@ LDRH(register)
723@------------------------------------------------------------------------------
724        ldrh r1, [r8, r1]
725        ldrh.w r4, [r5, r2]
726        ldrh r6, [r0, r2, lsl #3]
727        ldrh r8, [r8, r2, lsl #2]
728        ldrh r7, [sp, r2, lsl #1]
729        ldrh r7, [sp, r2, lsl #0]
730        ldrh r5, [r8, #255]!
731        ldrh r2, [r5, #4]!
732        ldrh r1, [r4, #-4]!
733        ldrh lr, [r3], #255
734        ldrh r9, [r2], #4
735        ldrh r3, [sp], #-4
736
737@ CHECK: ldrh.w	r1, [r8, r1]            @ encoding: [0x38,0xf8,0x01,0x10]
738@ CHECK: ldrh.w	r4, [r5, r2]            @ encoding: [0x35,0xf8,0x02,0x40]
739@ CHECK: ldrh.w	r6, [r0, r2, lsl #3]    @ encoding: [0x30,0xf8,0x32,0x60]
740@ CHECK: ldrh.w	r8, [r8, r2, lsl #2]    @ encoding: [0x38,0xf8,0x22,0x80]
741@ CHECK: ldrh.w	r7, [sp, r2, lsl #1]    @ encoding: [0x3d,0xf8,0x12,0x70]
742@ CHECK: ldrh.w	r7, [sp, r2]            @ encoding: [0x3d,0xf8,0x02,0x70]
743@ CHECK: ldrh	r5, [r8, #255]!         @ encoding: [0x38,0xf8,0xff,0x5f]
744@ CHECK: ldrh	r2, [r5, #4]!           @ encoding: [0x35,0xf8,0x04,0x2f]
745@ CHECK: ldrh	r1, [r4, #-4]!          @ encoding: [0x34,0xf8,0x04,0x1d]
746@ CHECK: ldrh	lr, [r3], #255          @ encoding: [0x33,0xf8,0xff,0xeb]
747@ CHECK: ldrh	r9, [r2], #4            @ encoding: [0x32,0xf8,0x04,0x9b]
748@ CHECK: ldrh	r3, [sp], #-4           @ encoding: [0x3d,0xf8,0x04,0x39]
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@ LDRSB(immediate)
762@------------------------------------------------------------------------------
763        ldrsb r5, [r5, #-4]
764        ldrsb r5, [r6, #32]
765        ldrsb r5, [r6, #33]
766        ldrsb r5, [r6, #257]
767        ldrsb.w lr, [r7, #257]
768
769@ CHECK: ldrsb	r5, [r5, #-4]            @ encoding: [0x15,0xf9,0x04,0x5c]
770@ CHECK: ldrsb.w r5, [r6, #32]           @ encoding: [0x96,0xf9,0x20,0x50]
771@ CHECK: ldrsb.w r5, [r6, #33]           @ encoding: [0x96,0xf9,0x21,0x50]
772@ CHECK: ldrsb.w r5, [r6, #257]          @ encoding: [0x96,0xf9,0x01,0x51]
773@ CHECK: ldrsb.w lr, [r7, #257]          @ encoding: [0x97,0xf9,0x01,0xe1]
774
775
776@------------------------------------------------------------------------------
777@ LDRSB(register)
778@------------------------------------------------------------------------------
779        ldrsb r1, [r8, r1]
780        ldrsb.w r4, [r5, r2]
781        ldrsb r6, [r0, r2, lsl #3]
782        ldrsb r8, [r8, r2, lsl #2]
783        ldrsb r7, [sp, r2, lsl #1]
784        ldrsb r7, [sp, r2, lsl #0]
785        ldrsb r5, [r8, #255]!
786        ldrsb r2, [r5, #4]!
787        ldrsb r1, [r4, #-4]!
788        ldrsb lr, [r3], #255
789        ldrsb r9, [r2], #4
790        ldrsb r3, [sp], #-4
791
792@ CHECK: ldrsb.w r1, [r8, r1]           @ encoding: [0x18,0xf9,0x01,0x10]
793@ CHECK: ldrsb.w r4, [r5, r2]           @ encoding: [0x15,0xf9,0x02,0x40]
794@ CHECK: ldrsb.w r6, [r0, r2, lsl #3]   @ encoding: [0x10,0xf9,0x32,0x60]
795@ CHECK: ldrsb.w r8, [r8, r2, lsl #2]   @ encoding: [0x18,0xf9,0x22,0x80]
796@ CHECK: ldrsb.w r7, [sp, r2, lsl #1]   @ encoding: [0x1d,0xf9,0x12,0x70]
797@ CHECK: ldrsb.w r7, [sp, r2]           @ encoding: [0x1d,0xf9,0x02,0x70]
798@ CHECK: ldrsb	r5, [r8, #255]!         @ encoding: [0x18,0xf9,0xff,0x5f]
799@ CHECK: ldrsb	r2, [r5, #4]!           @ encoding: [0x15,0xf9,0x04,0x2f]
800@ CHECK: ldrsb	r1, [r4, #-4]!          @ encoding: [0x14,0xf9,0x04,0x1d]
801@ CHECK: ldrsb	lr, [r3], #255          @ encoding: [0x13,0xf9,0xff,0xeb]
802@ CHECK: ldrsb	r9, [r2], #4            @ encoding: [0x12,0xf9,0x04,0x9b]
803@ CHECK: ldrsb	r3, [sp], #-4           @ encoding: [0x1d,0xf9,0x04,0x39]
804
805
806@------------------------------------------------------------------------------
807@ LDRSB(literal)
808@------------------------------------------------------------------------------
809        ldrsb r5, _bar
810
811@ CHECK: ldrsb.w r5, _bar               @ encoding: [0x9f'A',0xf9'A',A,0x50'A']
812@ CHECK:      @   fixup A - offset: 0, value: _bar, kind: fixup_t2_ldst_pcrel_12
813
814
815@------------------------------------------------------------------------------
816@ LDRSBT
817@------------------------------------------------------------------------------
818        ldrsbt r1, [r2]
819        ldrsbt r1, [r8, #0]
820        ldrsbt r1, [r8, #3]
821        ldrsbt r1, [r8, #255]
822
823@ CHECK: ldrsbt	r1, [r2]                @ encoding: [0x12,0xf9,0x00,0x1e]
824@ CHECK: ldrsbt	r1, [r8]                @ encoding: [0x18,0xf9,0x00,0x1e]
825@ CHECK: ldrsbt	r1, [r8, #3]            @ encoding: [0x18,0xf9,0x03,0x1e]
826@ CHECK: ldrsbt	r1, [r8, #255]          @ encoding: [0x18,0xf9,0xff,0x1e]
827
828
829@------------------------------------------------------------------------------
830@ LDRSH(immediate)
831@------------------------------------------------------------------------------
832        ldrsh r5, [r5, #-4]
833        ldrsh r5, [r6, #32]
834        ldrsh r5, [r6, #33]
835        ldrsh r5, [r6, #257]
836        ldrsh.w lr, [r7, #257]
837
838@ CHECK: ldrsh	r5, [r5, #-4]           @ encoding: [0x35,0xf9,0x04,0x5c]
839@ CHECK: ldrsh.w r5, [r6, #32]          @ encoding: [0xb6,0xf9,0x20,0x50]
840@ CHECK: ldrsh.w r5, [r6, #33]          @ encoding: [0xb6,0xf9,0x21,0x50]
841@ CHECK: ldrsh.w r5, [r6, #257]         @ encoding: [0xb6,0xf9,0x01,0x51]
842@ CHECK: ldrsh.w lr, [r7, #257]         @ encoding: [0xb7,0xf9,0x01,0xe1]
843
844
845@------------------------------------------------------------------------------
846@ LDRSH(register)
847@------------------------------------------------------------------------------
848        ldrsh r1, [r8, r1]
849        ldrsh.w r4, [r5, r2]
850        ldrsh r6, [r0, r2, lsl #3]
851        ldrsh r8, [r8, r2, lsl #2]
852        ldrsh r7, [sp, r2, lsl #1]
853        ldrsh r7, [sp, r2, lsl #0]
854        ldrsh r5, [r8, #255]!
855        ldrsh r2, [r5, #4]!
856        ldrsh r1, [r4, #-4]!
857        ldrsh lr, [r3], #255
858        ldrsh r9, [r2], #4
859        ldrsh r3, [sp], #-4
860
861@ CHECK: ldrsh.w r1, [r8, r1]           @ encoding: [0x38,0xf9,0x01,0x10]
862@ CHECK: ldrsh.w r4, [r5, r2]           @ encoding: [0x35,0xf9,0x02,0x40]
863@ CHECK: ldrsh.w r6, [r0, r2, lsl #3]   @ encoding: [0x30,0xf9,0x32,0x60]
864@ CHECK: ldrsh.w r8, [r8, r2, lsl #2]   @ encoding: [0x38,0xf9,0x22,0x80]
865@ CHECK: ldrsh.w r7, [sp, r2, lsl #1]   @ encoding: [0x3d,0xf9,0x12,0x70]
866@ CHECK: ldrsh.w r7, [sp, r2]           @ encoding: [0x3d,0xf9,0x02,0x70]
867@ CHECK: ldrsh	r5, [r8, #255]!         @ encoding: [0x38,0xf9,0xff,0x5f]
868@ CHECK: ldrsh	r2, [r5, #4]!           @ encoding: [0x35,0xf9,0x04,0x2f]
869@ CHECK: ldrsh	r1, [r4, #-4]!          @ encoding: [0x34,0xf9,0x04,0x1d]
870@ CHECK: ldrsh	lr, [r3], #255          @ encoding: [0x33,0xf9,0xff,0xeb]
871@ CHECK: ldrsh	r9, [r2], #4            @ encoding: [0x32,0xf9,0x04,0x9b]
872@ CHECK: ldrsh	r3, [sp], #-4           @ encoding: [0x3d,0xf9,0x04,0x39]
873
874
875@------------------------------------------------------------------------------
876@ LDRSH(literal)
877@------------------------------------------------------------------------------
878        ldrsh r5, _bar
879        ldrsh.w r4, #1435
880
881@ CHECK: ldrsh.w r5, _bar               @ encoding: [0xbf'A',0xf9'A',A,0x50'A']
882@ CHECK:      @   fixup A - offset: 0, value: _bar, kind: fixup_t2_ldst_pcrel_12
883@ CHECK: ldrsh.w r4, #1435               @ encoding: [0x3f,0xf9,0x9b,0x45]
884
885@------------------------------------------------------------------------------
886@ LDRSHT
887@------------------------------------------------------------------------------
888        ldrsht r1, [r2]
889        ldrsht r1, [r8, #0]
890        ldrsht r1, [r8, #3]
891        ldrsht r1, [r8, #255]
892
893@ CHECK: ldrsht	r1, [r2]                @ encoding: [0x32,0xf9,0x00,0x1e]
894@ CHECK: ldrsht	r1, [r8]                @ encoding: [0x38,0xf9,0x00,0x1e]
895@ CHECK: ldrsht	r1, [r8, #3]            @ encoding: [0x38,0xf9,0x03,0x1e]
896@ CHECK: ldrsht	r1, [r8, #255]          @ encoding: [0x38,0xf9,0xff,0x1e]
897
898
899@------------------------------------------------------------------------------
900@ LDRT
901@------------------------------------------------------------------------------
902        ldrt r1, [r2]
903        ldrt r2, [r6, #0]
904        ldrt r3, [r7, #3]
905        ldrt r4, [r9, #255]
906
907@ CHECK: ldrt	r1, [r2]                @ encoding: [0x52,0xf8,0x00,0x1e]
908@ CHECK: ldrt	r2, [r6]                @ encoding: [0x56,0xf8,0x00,0x2e]
909@ CHECK: ldrt	r3, [r7, #3]            @ encoding: [0x57,0xf8,0x03,0x3e]
910@ CHECK: ldrt	r4, [r9, #255]          @ encoding: [0x59,0xf8,0xff,0x4e]
911
912
913@------------------------------------------------------------------------------
914@ LSL (immediate)
915@------------------------------------------------------------------------------
916        lsl r2, r3, #12
917        lsls r8, r3, #31
918        lsls.w r2, r3, #1
919        lsl r2, r3, #4
920        lsls r2, r12, #15
921
922        lsl r3, #19
923        lsls r8, #2
924        lsls.w r7, #5
925        lsl.w r12, #21
926
927@ CHECK: lsl.w	r2, r3, #12             @ encoding: [0x4f,0xea,0x03,0x32]
928@ CHECK: lsls.w	r8, r3, #31             @ encoding: [0x5f,0xea,0xc3,0x78]
929@ CHECK: lsls.w	r2, r3, #1              @ encoding: [0x5f,0xea,0x43,0x02]
930@ CHECK: lsl.w	r2, r3, #4              @ encoding: [0x4f,0xea,0x03,0x12]
931@ CHECK: lsls.w	r2, r12, #15            @ encoding: [0x5f,0xea,0xcc,0x32]
932
933@ CHECK: lsl.w	r3, r3, #19             @ encoding: [0x4f,0xea,0xc3,0x43]
934@ CHECK: lsls.w	r8, r8, #2              @ encoding: [0x5f,0xea,0x88,0x08]
935@ CHECK: lsls.w	r7, r7, #5              @ encoding: [0x5f,0xea,0x47,0x17]
936@ CHECK: lsl.w	r12, r12, #21           @ encoding: [0x4f,0xea,0x4c,0x5c]
937
938
939@------------------------------------------------------------------------------
940@ LSL (register)
941@------------------------------------------------------------------------------
942        lsl r3, r4, r2
943        lsl.w r1, r2
944        lsls r3, r4, r8
945
946@ CHECK: lsl.w	r3, r4, r2              @ encoding: [0x04,0xfa,0x02,0xf3]
947@ CHECK: lsl.w	r1, r1, r2              @ encoding: [0x01,0xfa,0x02,0xf1]
948@ CHECK: lsls.w	r3, r4, r8              @ encoding: [0x14,0xfa,0x08,0xf3]
949
950
951@------------------------------------------------------------------------------
952@ LSR (immediate)
953@------------------------------------------------------------------------------
954        lsr r2, r3, #12
955        lsrs r8, r3, #32
956        lsrs.w r2, r3, #1
957        lsr r2, r3, #4
958        lsrs r2, r12, #15
959
960        lsr r3, #19
961        lsrs r8, #2
962        lsrs.w r7, #5
963        lsr.w r12, #21
964
965@ CHECK: lsr.w	r2, r3, #12             @ encoding: [0x4f,0xea,0x13,0x32]
966@ CHECK: lsrs.w	r8, r3, #32             @ encoding: [0x5f,0xea,0x13,0x08]
967@ CHECK: lsrs.w	r2, r3, #1              @ encoding: [0x5f,0xea,0x53,0x02]
968@ CHECK: lsr.w	r2, r3, #4              @ encoding: [0x4f,0xea,0x13,0x12]
969@ CHECK: lsrs.w	r2, r12, #15            @ encoding: [0x5f,0xea,0xdc,0x32]
970
971@ CHECK: lsr.w	r3, r3, #19             @ encoding: [0x4f,0xea,0xd3,0x43]
972@ CHECK: lsrs.w	r8, r8, #2              @ encoding: [0x5f,0xea,0x98,0x08]
973@ CHECK: lsrs.w	r7, r7, #5              @ encoding: [0x5f,0xea,0x57,0x17]
974@ CHECK: lsr.w	r12, r12, #21           @ encoding: [0x4f,0xea,0x5c,0x5c]
975
976
977@------------------------------------------------------------------------------
978@ LSR (register)
979@------------------------------------------------------------------------------
980        lsr r3, r4, r2
981        lsr.w r1, r2
982        lsrs r3, r4, r8
983
984@ CHECK: lsr.w	r3, r4, r2              @ encoding: [0x24,0xfa,0x02,0xf3]
985@ CHECK: lsr.w	r1, r1, r2              @ encoding: [0x21,0xfa,0x02,0xf1]
986@ CHECK: lsrs.w	r3, r4, r8              @ encoding: [0x34,0xfa,0x08,0xf3]
987
988@------------------------------------------------------------------------------
989@ MCR/MCR2
990@------------------------------------------------------------------------------
991        mcr  p7, #1, r5, c1, c1, #4
992        mcr2  p7, #1, r5, c1, c1, #4
993
994@ CHECK: mcr	p7, #1, r5, c1, c1, #4  @ encoding: [0x21,0xee,0x91,0x57]
995@ CHECK: mcr2	p7, #1, r5, c1, c1, #4  @ encoding: [0x21,0xfe,0x91,0x57]
996
997
998@------------------------------------------------------------------------------
999@ MCRR/MCRR2
1000@------------------------------------------------------------------------------
1001        mcrr  p7, #15, r5, r4, c1
1002        mcrr2  p7, #15, r5, r4, c1
1003
1004@ CHECK: mcrr	p7, #15, r5, r4, c1     @ encoding: [0x44,0xec,0xf1,0x57]
1005@ CHECK: mcrr2	p7, #15, r5, r4, c1     @ encoding: [0x44,0xfc,0xf1,0x57]
1006
1007
1008@------------------------------------------------------------------------------
1009@ MLA/MLS
1010@------------------------------------------------------------------------------
1011        mla  r1,r2,r3,r4
1012        mls  r1,r2,r3,r4
1013
1014@ CHECK: mla	r1, r2, r3, r4          @ encoding: [0x02,0xfb,0x03,0x41]
1015@ CHECK: mls	r1, r2, r3, r4          @ encoding: [0x02,0xfb,0x13,0x41]
1016
1017
1018@------------------------------------------------------------------------------
1019@ MOV(immediate)
1020@------------------------------------------------------------------------------
1021        movs r1, #21
1022        movs.w r1, #21
1023        movs r8, #21
1024        movw r0, #65535
1025        movw r1, #43777
1026        movw r1, #43792
1027        mov.w r0, #0x3fc0000
1028        mov r0, #0x3fc0000
1029        movs.w r0, #0x3fc0000
1030        itte eq
1031        movseq r1, #12
1032        moveq r1, #12
1033        movne.w r1, #12
1034        mov.w r6, #450
1035
1036@ CHECK: movs	r1, #21                 @ encoding: [0x15,0x21]
1037@ CHECK: movs.w	r1, #21                 @ encoding: [0x5f,0xf0,0x15,0x01]
1038@ CHECK: movs.w	r8, #21                 @ encoding: [0x5f,0xf0,0x15,0x08]
1039@ CHECK: movw	r0, #65535              @ encoding: [0x4f,0xf6,0xff,0x70]
1040@ CHECK: movw	r1, #43777              @ encoding: [0x4a,0xf6,0x01,0x31]
1041@ CHECK: movw	r1, #43792              @ encoding: [0x4a,0xf6,0x10,0x31]
1042@ CHECK: mov.w	r0, #66846720           @ encoding: [0x4f,0xf0,0x7f,0x70]
1043@ CHECK: mov.w	r0, #66846720           @ encoding: [0x4f,0xf0,0x7f,0x70]
1044@ CHECK: movs.w	r0, #66846720           @ encoding: [0x5f,0xf0,0x7f,0x70]
1045@ CHECK: itte	eq                      @ encoding: [0x06,0xbf]
1046@ CHECK: movseq.w	r1, #12         @ encoding: [0x5f,0xf0,0x0c,0x01]
1047@ CHECK: moveq	r1, #12                 @ encoding: [0x0c,0x21]
1048@ CHECK: movne.w r1, #12                @ encoding: [0x4f,0xf0,0x0c,0x01]
1049@ CHECK: mov.w	r6, #450                @ encoding: [0x4f,0xf4,0xe1,0x76]
1050
1051
1052@------------------------------------------------------------------------------
1053@ MOVT
1054@------------------------------------------------------------------------------
1055        movt r3, #7
1056        movt r6, #0xffff
1057        it eq
1058        movteq r4, #0xff0
1059
1060@ CHECK: movt	r3, #7                  @ encoding: [0xc0,0xf2,0x07,0x03]
1061@ CHECK: movt	r6, #65535              @ encoding: [0xcf,0xf6,0xff,0x76]
1062@ CHECK: it	eq                      @ encoding: [0x08,0xbf]
1063@ CHECK: movteq	r4, #4080               @ encoding: [0xc0,0xf6,0xf0,0x74]
1064
1065@------------------------------------------------------------------------------
1066@ MRC/MRC2
1067@------------------------------------------------------------------------------
1068        mrc  p14, #0, r1, c1, c2, #4
1069        mrc2  p14, #0, r1, c1, c2, #4
1070
1071@ CHECK: mrc	p14, #0, r1, c1, c2, #4 @ encoding: [0x11,0xee,0x92,0x1e]
1072@ CHECK: mrc2	p14, #0, r1, c1, c2, #4 @ encoding: [0x11,0xfe,0x92,0x1e]
1073
1074
1075@------------------------------------------------------------------------------
1076@ MRRC/MRRC2
1077@------------------------------------------------------------------------------
1078        mrrc  p7, #1, r5, r4, c1
1079        mrrc2  p7, #1, r5, r4, c1
1080
1081@ CHECK: mrrc	p7, #1, r5, r4, c1      @ encoding: [0x54,0xec,0x11,0x57]
1082@ CHECK: mrrc2	p7, #1, r5, r4, c1      @ encoding: [0x54,0xfc,0x11,0x57]
1083
1084
1085@------------------------------------------------------------------------------
1086@ MRS
1087@------------------------------------------------------------------------------
1088        mrs  r8, apsr
1089        mrs  r8, cpsr
1090        mrs  r8, spsr
1091
1092@ CHECK: mrs	r8, apsr                @ encoding: [0xef,0xf3,0x00,0x88]
1093@ CHECK: mrs	r8, apsr                @ encoding: [0xef,0xf3,0x00,0x88]
1094@ CHECK: mrs	r8, spsr                @ encoding: [0xff,0xf3,0x00,0x88]
1095
1096
1097@------------------------------------------------------------------------------
1098@ MSR
1099@------------------------------------------------------------------------------
1100        msr  apsr, r1
1101        msr  apsr_g, r2
1102        msr  apsr_nzcvq, r3
1103        msr  APSR_nzcvq, r4
1104        msr  apsr_nzcvqg, r5
1105        msr  cpsr_fc, r6
1106        msr  cpsr_c, r7
1107        msr  cpsr_x, r8
1108        msr  cpsr_fc, r9
1109        msr  cpsr_all, r11
1110        msr  cpsr_fsx, r12
1111        msr  spsr_fc, r0
1112        msr  SPSR_fsxc, r5
1113        msr  cpsr_fsxc, r8
1114
1115@ CHECK: msr	APSR_nzcvq, r1          @ encoding: [0x81,0xf3,0x00,0x88]
1116@ CHECK: msr	APSR_g, r2              @ encoding: [0x82,0xf3,0x00,0x84]
1117@ CHECK: msr	APSR_nzcvq, r3          @ encoding: [0x83,0xf3,0x00,0x88]
1118@ CHECK: msr	APSR_nzcvq, r4          @ encoding: [0x84,0xf3,0x00,0x88]
1119@ CHECK: msr	APSR_nzcvqg, r5         @ encoding: [0x85,0xf3,0x00,0x8c]
1120@ CHECK: msr	CPSR_fc, r6             @ encoding: [0x86,0xf3,0x00,0x89]
1121@ CHECK: msr	CPSR_c, r7              @ encoding: [0x87,0xf3,0x00,0x81]
1122@ CHECK: msr	CPSR_x, r8              @ encoding: [0x88,0xf3,0x00,0x82]
1123@ CHECK: msr	CPSR_fc, r9             @ encoding: [0x89,0xf3,0x00,0x89]
1124@ CHECK: msr	CPSR_fc, r11            @ encoding: [0x8b,0xf3,0x00,0x89]
1125@ CHECK: msr	CPSR_fsx, r12           @ encoding: [0x8c,0xf3,0x00,0x8e]
1126@ CHECK: msr	SPSR_fc, r0             @ encoding: [0x90,0xf3,0x00,0x89]
1127@ CHECK: msr	SPSR_fsxc, r5           @ encoding: [0x95,0xf3,0x00,0x8f]
1128@ CHECK: msr	CPSR_fsxc, r8           @ encoding: [0x88,0xf3,0x00,0x8f]
1129
1130
1131@------------------------------------------------------------------------------
1132@ MUL
1133@------------------------------------------------------------------------------
1134        muls r3, r4, r3
1135        mul r3, r4, r3
1136        mul r3, r4, r6
1137        it eq
1138        muleq r3, r4, r5
1139
1140@ CHECK: muls	r3, r4, r3              @ encoding: [0x63,0x43]
1141@ CHECK: mul	r3, r4, r3              @ encoding: [0x04,0xfb,0x03,0xf3]
1142@ CHECK: mul	r3, r4, r6              @ encoding: [0x04,0xfb,0x06,0xf3]
1143@ CHECK: it	eq                      @ encoding: [0x08,0xbf]
1144@ CHECK: muleq	r3, r4, r5              @ encoding: [0x04,0xfb,0x05,0xf3]
1145
1146
1147@------------------------------------------------------------------------------
1148@ MVN(immediate)
1149@------------------------------------------------------------------------------
1150        mvns r8, #21
1151        mvn r0, #0x3fc0000
1152        mvns r0, #0x3fc0000
1153        itte eq
1154        mvnseq r1, #12
1155        mvneq r1, #12
1156        mvnne r1, #12
1157
1158@ CHECK: mvns	r8, #21                 @ encoding: [0x7f,0xf0,0x15,0x08]
1159@ CHECK: mvn	r0, #66846720           @ encoding: [0x6f,0xf0,0x7f,0x70]
1160@ CHECK: mvns	r0, #66846720           @ encoding: [0x7f,0xf0,0x7f,0x70]
1161@ CHECK: itte	eq                      @ encoding: [0x06,0xbf]
1162@ CHECK: mvnseq	r1, #12                 @ encoding: [0x7f,0xf0,0x0c,0x01]
1163@ CHECK: mvneq	r1, #12                 @ encoding: [0x6f,0xf0,0x0c,0x01]
1164@ CHECK: mvnne	r1, #12                 @ encoding: [0x6f,0xf0,0x0c,0x01]
1165
1166
1167@------------------------------------------------------------------------------
1168@ MVN(register)
1169@------------------------------------------------------------------------------
1170        mvn r2, r3
1171        mvns r2, r3
1172        mvn r5, r6, lsl #19
1173        mvn r5, r6, lsr #9
1174        mvn r5, r6, asr #4
1175        mvn r5, r6, ror #6
1176        mvn r5, r6, rrx
1177        it eq
1178        mvneq r2, r3
1179
1180@ CHECK: mvn.w	r2, r3                  @ encoding: [0x6f,0xea,0x03,0x02]
1181@ CHECK: mvns	r2, r3                  @ encoding: [0xda,0x43]
1182@ CHECK: mvn.w	r5, r6, lsl #19         @ encoding: [0x6f,0xea,0xc6,0x45]
1183@ CHECK: mvn.w	r5, r6, lsr #9          @ encoding: [0x6f,0xea,0x56,0x25]
1184@ CHECK: mvn.w	r5, r6, asr #4          @ encoding: [0x6f,0xea,0x26,0x15]
1185@ CHECK: mvn.w	r5, r6, ror #6          @ encoding: [0x6f,0xea,0xb6,0x15]
1186@ CHECK: mvn.w	r5, r6, rrx             @ encoding: [0x6f,0xea,0x36,0x05]
1187@ CHECK: it	eq                      @ encoding: [0x08,0xbf]
1188@ CHECK: mvneq	r2, r3                  @ encoding: [0xda,0x43]
1189
1190@------------------------------------------------------------------------------
1191@ NOP
1192@------------------------------------------------------------------------------
1193        nop.w
1194
1195@ CHECK: nop.w                          @ encoding: [0xaf,0xf3,0x00,0x80]
1196
1197
1198@------------------------------------------------------------------------------
1199@ ORN
1200@------------------------------------------------------------------------------
1201        orn r4, r5, #0xf000
1202        orn r4, r5, r6
1203        orns r4, r5, r6
1204        orn r4, r5, r6, lsl #5
1205        orns r4, r5, r6, lsr #5
1206        orn r4, r5, r6, lsr #5
1207        orns r4, r5, r6, asr #5
1208        orn r4, r5, r6, ror #5
1209
1210@ CHECK: orn	r4, r5, #61440          @ encoding: [0x65,0xf4,0x70,0x44]
1211@ CHECK: orn	r4, r5, r6              @ encoding: [0x65,0xea,0x06,0x04]
1212@ CHECK: orns	r4, r5, r6              @ encoding: [0x75,0xea,0x06,0x04]
1213@ CHECK: orn	r4, r5, r6, lsl #5      @ encoding: [0x65,0xea,0x46,0x14]
1214@ CHECK: orns	r4, r5, r6, lsr #5      @ encoding: [0x75,0xea,0x56,0x14]
1215@ CHECK: orn	r4, r5, r6, lsr #5      @ encoding: [0x65,0xea,0x56,0x14]
1216@ CHECK: orns	r4, r5, r6, asr #5      @ encoding: [0x75,0xea,0x66,0x14]
1217@ CHECK: orn	r4, r5, r6, ror #5      @ encoding: [0x65,0xea,0x76,0x14]
1218
1219
1220@------------------------------------------------------------------------------
1221@ ORR
1222@------------------------------------------------------------------------------
1223        orr r4, r5, #0xf000
1224        orr r4, r5, r6
1225        orr r4, r5, r6, lsl #5
1226        orrs r4, r5, r6, lsr #5
1227        orr r4, r5, r6, lsr #5
1228        orrs r4, r5, r6, asr #5
1229        orr r4, r5, r6, ror #5
1230
1231@ CHECK: orr	r4, r5, #61440          @ encoding: [0x45,0xf4,0x70,0x44]
1232@ CHECK: orr.w	r4, r5, r6              @ encoding: [0x45,0xea,0x06,0x04]
1233@ CHECK: orr.w	r4, r5, r6, lsl #5      @ encoding: [0x45,0xea,0x46,0x14]
1234@ CHECK: orrs.w	r4, r5, r6, lsr #5      @ encoding: [0x55,0xea,0x56,0x14]
1235@ CHECK: orr.w	r4, r5, r6, lsr #5      @ encoding: [0x45,0xea,0x56,0x14]
1236@ CHECK: orrs.w	r4, r5, r6, asr #5      @ encoding: [0x55,0xea,0x66,0x14]
1237@ CHECK: orr.w	r4, r5, r6, ror #5      @ encoding: [0x45,0xea,0x76,0x14]
1238
1239
1240@------------------------------------------------------------------------------
1241@ PKH
1242@------------------------------------------------------------------------------
1243        pkhbt r2, r2, r3
1244        pkhbt r2, r2, r3, lsl #31
1245        pkhbt r2, r2, r3, lsl #0
1246        pkhbt r2, r2, r3, lsl #15
1247
1248        pkhtb r2, r2, r3
1249        pkhtb r2, r2, r3, asr #31
1250        pkhtb r2, r2, r3, asr #15
1251
1252@ CHECK: pkhbt	r2, r2, r3              @ encoding: [0xc2,0xea,0x03,0x02]
1253@ CHECK: pkhbt	r2, r2, r3, lsl #31     @ encoding: [0xc2,0xea,0xc3,0x72]
1254@ CHECK: pkhbt	r2, r2, r3              @ encoding: [0xc2,0xea,0x03,0x02]
1255@ CHECK: pkhbt	r2, r2, r3, lsl #15     @ encoding: [0xc2,0xea,0xc3,0x32]
1256
1257@ CHECK: pkhbt	r2, r2, r3              @ encoding: [0xc2,0xea,0x03,0x02]
1258@ CHECK: pkhtb	r2, r2, r3, asr #31     @ encoding: [0xc2,0xea,0xe3,0x72]
1259@ CHECK: pkhtb	r2, r2, r3, asr #15     @ encoding: [0xc2,0xea,0xe3,0x32]
1260
1261
1262@------------------------------------------------------------------------------
1263@ PLD(immediate)
1264@------------------------------------------------------------------------------
1265        pld [r5, #-4]
1266        pld [r6, #32]
1267        pld [r6, #33]
1268        pld [r6, #257]
1269        pld [r7, #257]
1270
1271@ CHECK: pld	[r5, #-4]               @ encoding: [0x15,0xf8,0x04,0xfc]
1272@ CHECK: pld	[r6, #32]               @ encoding: [0x96,0xf8,0x20,0xf0]
1273@ CHECK: pld	[r6, #33]               @ encoding: [0x96,0xf8,0x21,0xf0]
1274@ CHECK: pld	[r6, #257]              @ encoding: [0x96,0xf8,0x01,0xf1]
1275@ CHECK: pld	[r7, #257]              @ encoding: [0x97,0xf8,0x01,0xf1]
1276
1277
1278@------------------------------------------------------------------------------
1279@ PLD(literal)
1280@------------------------------------------------------------------------------
1281        pld  _foo
1282
1283@ CHECK: pld	_foo                    @ encoding: [0x9f'A',0xf8'A',A,0xf0'A']
1284            @   fixup A - offset: 0, value: _foo, kind: fixup_t2_ldst_pcrel_12
1285
1286
1287@------------------------------------------------------------------------------
1288@ PLD(register)
1289@------------------------------------------------------------------------------
1290        pld [r8, r1]
1291        pld [r5, r2]
1292        pld [r0, r2, lsl #3]
1293        pld [r8, r2, lsl #2]
1294        pld [sp, r2, lsl #1]
1295        pld [sp, r2, lsl #0]
1296
1297@ CHECK: pld	[r8, r1]                @ encoding: [0x18,0xf8,0x01,0xf0]
1298@ CHECK: pld	[r5, r2]                @ encoding: [0x15,0xf8,0x02,0xf0]
1299@ CHECK: pld	[r0, r2, lsl #3]        @ encoding: [0x10,0xf8,0x32,0xf0]
1300@ CHECK: pld	[r8, r2, lsl #2]        @ encoding: [0x18,0xf8,0x22,0xf0]
1301@ CHECK: pld	[sp, r2, lsl #1]        @ encoding: [0x1d,0xf8,0x12,0xf0]
1302@ CHECK: pld	[sp, r2]                @ encoding: [0x1d,0xf8,0x02,0xf0]
1303
1304@------------------------------------------------------------------------------
1305@ PLI(immediate)
1306@------------------------------------------------------------------------------
1307        pli [r5, #-4]
1308        pli [r6, #32]
1309        pli [r6, #33]
1310        pli [r6, #257]
1311        pli [r7, #257]
1312
1313@ CHECK: pli	[r5, #-4]               @ encoding: [0x15,0xf9,0x04,0xfc]
1314@ CHECK: pli	[r6, #32]               @ encoding: [0x96,0xf9,0x20,0xf0]
1315@ CHECK: pli	[r6, #33]               @ encoding: [0x96,0xf9,0x21,0xf0]
1316@ CHECK: pli	[r6, #257]              @ encoding: [0x96,0xf9,0x01,0xf1]
1317@ CHECK: pli	[r7, #257]              @ encoding: [0x97,0xf9,0x01,0xf1]
1318
1319
1320@------------------------------------------------------------------------------
1321@ PLI(literal)
1322@------------------------------------------------------------------------------
1323        pli  _foo
1324
1325
1326@ CHECK: pli	_foo                    @ encoding: [0x9f'A',0xf9'A',A,0xf0'A']
1327           @   fixup A - offset: 0, value: _foo, kind: fixup_t2_ldst_pcrel_12
1328
1329
1330@------------------------------------------------------------------------------
1331@ PLI(register)
1332@------------------------------------------------------------------------------
1333        pli [r8, r1]
1334        pli [r5, r2]
1335        pli [r0, r2, lsl #3]
1336        pli [r8, r2, lsl #2]
1337        pli [sp, r2, lsl #1]
1338        pli [sp, r2, lsl #0]
1339
1340@ CHECK: pli	[r8, r1]                @ encoding: [0x18,0xf9,0x01,0xf0]
1341@ CHECK: pli	[r5, r2]                @ encoding: [0x15,0xf9,0x02,0xf0]
1342@ CHECK: pli	[r0, r2, lsl #3]        @ encoding: [0x10,0xf9,0x32,0xf0]
1343@ CHECK: pli	[r8, r2, lsl #2]        @ encoding: [0x18,0xf9,0x22,0xf0]
1344@ CHECK: pli	[sp, r2, lsl #1]        @ encoding: [0x1d,0xf9,0x12,0xf0]
1345@ CHECK: pli	[sp, r2]                @ encoding: [0x1d,0xf9,0x02,0xf0]
1346
1347
1348@------------------------------------------------------------------------------
1349@ QADD/QADD16/QADD8
1350@------------------------------------------------------------------------------
1351        qadd r1, r2, r3
1352        qadd16 r1, r2, r3
1353        qadd8 r1, r2, r3
1354        itte gt
1355        qaddgt r1, r2, r3
1356        qadd16gt r1, r2, r3
1357        qadd8le r1, r2, r3
1358
1359@ CHECK: qadd	r1, r2, r3              @ encoding: [0x83,0xfa,0x82,0xf1]
1360@ CHECK: qadd16	r1, r2, r3              @ encoding: [0x92,0xfa,0x13,0xf1]
1361@ CHECK: qadd8	r1, r2, r3              @ encoding: [0x82,0xfa,0x13,0xf1]
1362@ CHECK: itte	gt                      @ encoding: [0xc6,0xbf]
1363@ CHECK: qaddgt	r1, r2, r3              @ encoding: [0x83,0xfa,0x82,0xf1]
1364@ CHECK: qadd16gt r1, r2, r3            @ encoding: [0x92,0xfa,0x13,0xf1]
1365@ CHECK: qadd8le r1, r2, r3             @ encoding: [0x82,0xfa,0x13,0xf1]
1366
1367
1368@------------------------------------------------------------------------------
1369@ QDADD/QDSUB
1370@------------------------------------------------------------------------------
1371        qdadd r6, r7, r8
1372        qdsub r6, r7, r8
1373        itt hi
1374        qdaddhi r6, r7, r8
1375        qdsubhi r6, r7, r8
1376
1377@ CHECK: qdadd	r6, r7, r8              @ encoding: [0x88,0xfa,0x97,0xf6]
1378@ CHECK: qdsub	r6, r7, r8              @ encoding: [0x88,0xfa,0xb7,0xf6]
1379@ CHECK: itt	hi                      @ encoding: [0x84,0xbf]
1380@ CHECK: qdaddhi r6, r7, r8             @ encoding: [0x88,0xfa,0x97,0xf6]
1381@ CHECK: qdsubhi r6, r7, r8             @ encoding: [0x88,0xfa,0xb7,0xf6]
1382
1383
1384@------------------------------------------------------------------------------
1385@ QSAX
1386@------------------------------------------------------------------------------
1387        qsax r9, r12, r0
1388        it eq
1389        qsaxeq r9, r12, r0
1390
1391@ CHECK: qsax	r9, r12, r0             @ encoding: [0xec,0xfa,0x10,0xf9]
1392@ CHECK: it	eq                      @ encoding: [0x08,0xbf]
1393@ CHECK: qsaxeq	r9, r12, r0             @ encoding: [0xec,0xfa,0x10,0xf9]
1394
1395
1396@------------------------------------------------------------------------------
1397@ QSUB/QSUB16/QSUB8
1398@------------------------------------------------------------------------------
1399        qsub r1, r2, r3
1400        qsub16 r1, r2, r3
1401        qsub8 r1, r2, r3
1402        itet le
1403        qsuble r1, r2, r3
1404        qsub16gt r1, r2, r3
1405        qsub8le r1, r2, r3
1406
1407@ CHECK: qsub	r1, r2, r3              @ encoding: [0x83,0xfa,0xa2,0xf1]
1408@ CHECK: qsub16	r1, r2, r3              @ encoding: [0xd2,0xfa,0x13,0xf1]
1409@ CHECK: qsub8	r1, r2, r3              @ encoding: [0xc2,0xfa,0x13,0xf1]
1410@ CHECK: itet	le                      @ encoding: [0xd6,0xbf]
1411@ CHECK: qsuble	r1, r2, r3              @ encoding: [0x83,0xfa,0xa2,0xf1]
1412@ CHECK: qsub16gt	r1, r2, r3      @ encoding: [0xd2,0xfa,0x13,0xf1]
1413@ CHECK: qsub8le r1, r2, r3             @ encoding: [0xc2,0xfa,0x13,0xf1]
1414
1415
1416@------------------------------------------------------------------------------
1417@ RBIT
1418@------------------------------------------------------------------------------
1419        rbit r1, r2
1420        it ne
1421        rbitne r1, r2
1422
1423@ CHECK: rbit	r1, r2                  @ encoding: [0x92,0xfa,0xa2,0xf1]
1424@ CHECK: it	ne                      @ encoding: [0x18,0xbf]
1425@ CHECK: rbitne	r1, r2                  @ encoding: [0x92,0xfa,0xa2,0xf1]
1426
1427
1428@------------------------------------------------------------------------------
1429@ REV
1430@------------------------------------------------------------------------------
1431        rev.w r1, r2
1432        rev r2, r8
1433        itt ne
1434        revne r1, r2
1435        revne r1, r8
1436
1437@ CHECK: rev.w	r1, r2                  @ encoding: [0x92,0xfa,0x82,0xf1]
1438@ CHECK: rev.w	r2, r8                  @ encoding: [0x98,0xfa,0x88,0xf2]
1439@ CHECK: itt	ne                      @ encoding: [0x1c,0xbf]
1440@ CHECK: revne	r1, r2                  @ encoding: [0x11,0xba]
1441@ CHECK: revne.w r1, r8                 @ encoding: [0x98,0xfa,0x88,0xf1]
1442
1443
1444@------------------------------------------------------------------------------
1445@ REV16
1446@------------------------------------------------------------------------------
1447        rev16.w r1, r2
1448        rev16 r2, r8
1449        itt ne
1450        rev16ne r1, r2
1451        rev16ne r1, r8
1452
1453@ CHECK: rev16.w r1, r2                 @ encoding: [0x92,0xfa,0x92,0xf1]
1454@ CHECK: rev16.w r2, r8                 @ encoding: [0x98,0xfa,0x98,0xf2]
1455@ CHECK: itt	ne                      @ encoding: [0x1c,0xbf]
1456@ CHECK: rev16ne r1, r2                 @ encoding: [0x51,0xba]
1457@ CHECK: rev16ne.w	r1, r8          @ encoding: [0x98,0xfa,0x98,0xf1]
1458
1459
1460@------------------------------------------------------------------------------
1461@ REVSH
1462@------------------------------------------------------------------------------
1463        revsh.w r1, r2
1464        revsh r2, r8
1465        itt ne
1466        revshne r1, r2
1467        revshne r1, r8
1468
1469@ CHECK: revsh.w r1, r2                 @ encoding: [0x92,0xfa,0xb2,0xf1]
1470@ CHECK: revsh.w r2, r8                 @ encoding: [0x98,0xfa,0xb8,0xf2]
1471@ CHECK: itt	ne                      @ encoding: [0x1c,0xbf]
1472@ CHECK: revshne r1, r2                 @ encoding: [0xd1,0xba]
1473@ CHECK: revshne.w	r1, r8          @ encoding: [0x98,0xfa,0xb8,0xf1]
1474
1475
1476@------------------------------------------------------------------------------
1477@ ROR (immediate)
1478@------------------------------------------------------------------------------
1479        ror r2, r3, #12
1480        rors r8, r3, #31
1481        rors.w r2, r3, #1
1482        ror r2, r3, #4
1483        rors r2, r12, #15
1484
1485        ror r3, #19
1486        rors r8, #2
1487        rors.w r7, #5
1488        ror.w r12, #21
1489
1490@ CHECK: ror.w	r2, r3, #12             @ encoding: [0x4f,0xea,0x33,0x32]
1491@ CHECK: rors.w	r8, r3, #31             @ encoding: [0x5f,0xea,0xf3,0x78]
1492@ CHECK: rors.w	r2, r3, #1              @ encoding: [0x5f,0xea,0x73,0x02]
1493@ CHECK: ror.w	r2, r3, #4              @ encoding: [0x4f,0xea,0x33,0x12]
1494@ CHECK: rors.w	r2, r12, #15            @ encoding: [0x5f,0xea,0xfc,0x32]
1495
1496@ CHECK: ror.w	r3, r3, #19             @ encoding: [0x4f,0xea,0xf3,0x43]
1497@ CHECK: rors.w	r8, r8, #2              @ encoding: [0x5f,0xea,0xb8,0x08]
1498@ CHECK: rors.w	r7, r7, #5              @ encoding: [0x5f,0xea,0x77,0x17]
1499@ CHECK: ror.w	r12, r12, #21           @ encoding: [0x4f,0xea,0x7c,0x5c]
1500
1501
1502@------------------------------------------------------------------------------
1503@ ROR (register)
1504@------------------------------------------------------------------------------
1505        ror r3, r4, r2
1506        ror.w r1, r2
1507        rors r3, r4, r8
1508
1509@ CHECK: ror.w	r3, r4, r2              @ encoding: [0x64,0xfa,0x02,0xf3]
1510@ CHECK: ror.w	r1, r1, r2              @ encoding: [0x61,0xfa,0x02,0xf1]
1511@ CHECK: rors.w	r3, r4, r8              @ encoding: [0x74,0xfa,0x08,0xf3]
1512
1513
1514@------------------------------------------------------------------------------
1515@ RRX
1516@------------------------------------------------------------------------------
1517        rrx r1, r2
1518        rrxs r1, r2
1519        ite lt
1520        rrxlt r9, r12
1521        rrxsge r8, r3
1522
1523@ CHECK: rrx	r1, r2                  @ encoding: [0x4f,0xea,0x32,0x01]
1524@ CHECK: rrxs	r1, r2                  @ encoding: [0x5f,0xea,0x32,0x01]
1525@ CHECK: ite	lt                      @ encoding: [0xb4,0xbf]
1526@ CHECK: rrxlt	r9, r12                 @ encoding: [0x4f,0xea,0x3c,0x09]
1527@ CHECK: rrxsge	r8, r3                  @ encoding: [0x5f,0xea,0x33,0x08]
1528
1529@------------------------------------------------------------------------------
1530@ RSB (immediate)
1531@------------------------------------------------------------------------------
1532        rsb r2, r5, #0xff000
1533        rsbs r3, r12, #0xf
1534        rsb r1, #0xff
1535        rsb r1, r1, #0xff
1536
1537@ CHECK: rsb.w	r2, r5, #1044480        @ encoding: [0xc5,0xf5,0x7f,0x22]
1538@ CHECK: rsbs.w	r3, r12, #15            @ encoding: [0xdc,0xf1,0x0f,0x03]
1539@ CHECK: rsb.w	r1, r1, #255            @ encoding: [0xc1,0xf1,0xff,0x01]
1540@ CHECK: rsb.w	r1, r1, #255            @ encoding: [0xc1,0xf1,0xff,0x01]
1541
1542
1543@------------------------------------------------------------------------------
1544@ RSB (register)
1545@------------------------------------------------------------------------------
1546        rsb r4, r8
1547        rsb r4, r9, r8
1548        rsb r1, r4, r8, asr #3
1549        rsbs r2, r1, r7, lsl #1
1550
1551@ CHECK: rsb	r4, r4, r8              @ encoding: [0xc4,0xeb,0x08,0x04]
1552@ CHECK: rsb	r4, r9, r8              @ encoding: [0xc9,0xeb,0x08,0x04]
1553@ CHECK: rsb	r1, r4, r8, asr #3      @ encoding: [0xc4,0xeb,0xe8,0x01]
1554@ CHECK: rsbs	r2, r1, r7, lsl #1      @ encoding: [0xd1,0xeb,0x47,0x02]
1555
1556
1557@------------------------------------------------------------------------------
1558@ SADD16
1559@------------------------------------------------------------------------------
1560        sadd16 r3, r4, r8
1561        it ne
1562        sadd16ne r3, r4, r8
1563
1564@ CHECK: sadd16	r3, r4, r8              @ encoding: [0x94,0xfa,0x08,0xf3]
1565@ CHECK: it	ne                      @ encoding: [0x18,0xbf]
1566@ CHECK: sadd16ne	r3, r4, r8      @ encoding: [0x94,0xfa,0x08,0xf3]
1567
1568
1569@------------------------------------------------------------------------------
1570@ SADD8
1571@------------------------------------------------------------------------------
1572        sadd8 r3, r4, r8
1573        it ne
1574        sadd8ne r3, r4, r8
1575
1576@ CHECK: sadd8	r3, r4, r8              @ encoding: [0x84,0xfa,0x08,0xf3]
1577@ CHECK: it	ne                      @ encoding: [0x18,0xbf]
1578@ CHECK: sadd8ne r3, r4, r8             @ encoding: [0x84,0xfa,0x08,0xf3]
1579
1580
1581@------------------------------------------------------------------------------
1582@ SASX
1583@------------------------------------------------------------------------------
1584        saddsubx r9, r2, r7
1585        it ne
1586        saddsubxne r2, r5, r6
1587        sasx r9, r2, r7
1588        it ne
1589        sasxne r2, r5, r6
1590
1591@ CHECK: sasx	r9, r2, r7              @ encoding: [0xa2,0xfa,0x07,0xf9]
1592@ CHECK: it	ne                      @ encoding: [0x18,0xbf]
1593@ CHECK: sasxne	r2, r5, r6              @ encoding: [0xa5,0xfa,0x06,0xf2]
1594@ CHECK: sasx	r9, r2, r7              @ encoding: [0xa2,0xfa,0x07,0xf9]
1595@ CHECK: it	ne                      @ encoding: [0x18,0xbf]
1596@ CHECK: sasxne	r2, r5, r6              @ encoding: [0xa5,0xfa,0x06,0xf2]
1597
1598
1599@------------------------------------------------------------------------------
1600@ SBC (immediate)
1601@------------------------------------------------------------------------------
1602        sbc r0, r1, #4
1603        sbcs r0, r1, #0
1604        sbc r1, r2, #255
1605        sbc r3, r7, #0x00550055
1606        sbc r8, r12, #0xaa00aa00
1607        sbc r9, r7, #0xa5a5a5a5
1608        sbc r5, r3, #0x87000000
1609        sbc r4, r2, #0x7f800000
1610        sbc r4, r2, #0x00000680
1611
1612@ CHECK: sbc	r0, r1, #4              @ encoding: [0x61,0xf1,0x04,0x00]
1613@ CHECK: sbcs	r0, r1, #0              @ encoding: [0x71,0xf1,0x00,0x00]
1614@ CHECK: sbc	r1, r2, #255            @ encoding: [0x62,0xf1,0xff,0x01]
1615@ CHECK: sbc	r3, r7, #5570645        @ encoding: [0x67,0xf1,0x55,0x13]
1616@ CHECK: sbc	r8, r12, #2852170240    @ encoding: [0x6c,0xf1,0xaa,0x28]
1617@ CHECK: sbc	r9, r7, #2779096485     @ encoding: [0x67,0xf1,0xa5,0x39]
1618@ CHECK: sbc	r5, r3, #2264924160     @ encoding: [0x63,0xf1,0x07,0x45]
1619@ CHECK: sbc	r4, r2, #2139095040     @ encoding: [0x62,0xf1,0xff,0x44]
1620@ CHECK: sbc	r4, r2, #1664           @ encoding: [0x62,0xf5,0xd0,0x64]
1621
1622
1623@------------------------------------------------------------------------------
1624@ SBC (register)
1625@------------------------------------------------------------------------------
1626        sbc r4, r5, r6
1627        sbcs r4, r5, r6
1628        sbc.w r9, r1, r3
1629        sbcs.w r9, r1, r3
1630        sbc	r0, r1, r3, ror #4
1631        sbcs	r0, r1, r3, lsl #7
1632        sbc.w	r0, r1, r3, lsr #31
1633        sbcs.w	r0, r1, r3, asr #32
1634
1635@ CHECK: sbc.w	r4, r5, r6              @ encoding: [0x65,0xeb,0x06,0x04]
1636@ CHECK: sbcs.w	r4, r5, r6              @ encoding: [0x75,0xeb,0x06,0x04]
1637@ CHECK: sbc.w	r9, r1, r3              @ encoding: [0x61,0xeb,0x03,0x09]
1638@ CHECK: sbcs.w	r9, r1, r3              @ encoding: [0x71,0xeb,0x03,0x09]
1639@ CHECK: sbc.w	r0, r1, r3, ror #4      @ encoding: [0x61,0xeb,0x33,0x10]
1640@ CHECK: sbcs.w	r0, r1, r3, lsl #7      @ encoding: [0x71,0xeb,0xc3,0x10]
1641@ CHECK: sbc.w	r0, r1, r3, lsr #31     @ encoding: [0x61,0xeb,0xd3,0x70]
1642@ CHECK: sbcs.w	r0, r1, r3, asr #32     @ encoding: [0x71,0xeb,0x23,0x00]
1643
1644
1645@------------------------------------------------------------------------------
1646@ SBFX
1647@------------------------------------------------------------------------------
1648        sbfx r4, r5, #16, #1
1649        it gt
1650        sbfxgt r4, r5, #16, #16
1651
1652@ CHECK: sbfx	r4, r5, #16, #1         @ encoding: [0x45,0xf3,0x00,0x44]
1653@ CHECK: it	gt                      @ encoding: [0xc8,0xbf]
1654@ CHECK: sbfxgt	r4, r5, #16, #16        @ encoding: [0x45,0xf3,0x0f,0x44]
1655
1656
1657@------------------------------------------------------------------------------
1658@ SEL
1659@------------------------------------------------------------------------------
1660        sel r5, r9, r2
1661        it le
1662        selle r5, r9, r2
1663
1664@ CHECK: sel	r5, r9, r2              @ encoding: [0xa9,0xfa,0x82,0xf5]
1665@ CHECK: it	le                      @ encoding: [0xd8,0xbf]
1666@ CHECK: selle	r5, r9, r2              @ encoding: [0xa9,0xfa,0x82,0xf5]
1667
1668
1669@------------------------------------------------------------------------------
1670@ SEV
1671@------------------------------------------------------------------------------
1672        sev.w
1673        it eq
1674        seveq.w
1675
1676@ CHECK: sev.w                           @ encoding: [0xaf,0xf3,0x04,0x80]
1677@ CHECK: it	eq                       @ encoding: [0x08,0xbf]
1678@ CHECK: seveq.w                         @ encoding: [0xaf,0xf3,0x04,0x80]
1679
1680
1681@------------------------------------------------------------------------------
1682@ SADD16/SADD8
1683@------------------------------------------------------------------------------
1684        sadd16 r1, r2, r3
1685        sadd8 r1, r2, r3
1686        ite gt
1687        sadd16gt r1, r2, r3
1688        sadd8le r1, r2, r3
1689
1690@ CHECK: sadd16	r1, r2, r3              @ encoding: [0x92,0xfa,0x03,0xf1]
1691@ CHECK: sadd8	r1, r2, r3              @ encoding: [0x82,0xfa,0x03,0xf1]
1692@ CHECK: ite	gt                      @ encoding: [0xcc,0xbf]
1693@ CHECK: sadd16gt	r1, r2, r3      @ encoding: [0x92,0xfa,0x03,0xf1]
1694@ CHECK: sadd8le r1, r2, r3             @ encoding: [0x82,0xfa,0x03,0xf1]
1695
1696
1697@------------------------------------------------------------------------------
1698@ SHASX
1699@------------------------------------------------------------------------------
1700        shasx r4, r8, r2
1701        it gt
1702        shasxgt r4, r8, r2
1703        shaddsubx r4, r8, r2
1704        it gt
1705        shaddsubxgt r4, r8, r2
1706
1707@ CHECK: shasx	r4, r8, r2              @ encoding: [0xa8,0xfa,0x22,0xf4]
1708@ CHECK: it	gt                      @ encoding: [0xc8,0xbf]
1709@ CHECK: shasxgt r4, r8, r2             @ encoding: [0xa8,0xfa,0x22,0xf4]
1710@ CHECK: shasx	r4, r8, r2              @ encoding: [0xa8,0xfa,0x22,0xf4]
1711@ CHECK: it	gt                      @ encoding: [0xc8,0xbf]
1712@ CHECK: shasxgt r4, r8, r2             @ encoding: [0xa8,0xfa,0x22,0xf4]
1713
1714
1715@------------------------------------------------------------------------------
1716@ SHASX
1717@------------------------------------------------------------------------------
1718        shsax r4, r8, r2
1719        it gt
1720        shsaxgt r4, r8, r2
1721        shsubaddx r4, r8, r2
1722        it gt
1723        shsubaddxgt r4, r8, r2
1724
1725@ CHECK: shsax	r4, r8, r2              @ encoding: [0xe8,0xfa,0x22,0xf4]
1726@ CHECK: it	gt                      @ encoding: [0xc8,0xbf]
1727@ CHECK: shsaxgt r4, r8, r2             @ encoding: [0xe8,0xfa,0x22,0xf4]
1728@ CHECK: shsax	r4, r8, r2              @ encoding: [0xe8,0xfa,0x22,0xf4]
1729@ CHECK: it	gt                      @ encoding: [0xc8,0xbf]
1730@ CHECK: shsaxgt r4, r8, r2             @ encoding: [0xe8,0xfa,0x22,0xf4]
1731
1732
1733@------------------------------------------------------------------------------
1734@ SHSUB16/SHSUB8
1735@------------------------------------------------------------------------------
1736        shsub16 r4, r8, r2
1737        shsub8 r4, r8, r2
1738        itt gt
1739        shsub16gt r4, r8, r2
1740        shsub8gt r4, r8, r2
1741
1742@ CHECK: shsub16 r4, r8, r2             @ encoding: [0xd8,0xfa,0x22,0xf4]
1743@ CHECK: shsub8	r4, r8, r2              @ encoding: [0xc8,0xfa,0x22,0xf4]
1744@ CHECK: itt	gt                      @ encoding: [0xc4,0xbf]
1745@ CHECK: shsub16gt	r4, r8, r2      @ encoding: [0xd8,0xfa,0x22,0xf4]
1746@ CHECK: shsub8gt	r4, r8, r2      @ encoding: [0xc8,0xfa,0x22,0xf4]
1747
1748
1749@------------------------------------------------------------------------------
1750@ SMLABB/SMLABT/SMLATB/SMLATT
1751@------------------------------------------------------------------------------
1752        smlabb r3, r1, r9, r0
1753        smlabt r5, r6, r4, r1
1754        smlatb r4, r2, r3, r2
1755        smlatt r8, r3, r8, r4
1756        itete gt
1757        smlabbgt r3, r1, r9, r0
1758        smlabtle r5, r6, r4, r1
1759        smlatbgt r4, r2, r3, r2
1760        smlattle r8, r3, r8, r4
1761
1762@ CHECK: smlabb	r3, r1, r9, r0          @ encoding: [0x11,0xfb,0x09,0x03]
1763@ CHECK: smlabt	r5, r6, r4, r1          @ encoding: [0x16,0xfb,0x14,0x15]
1764@ CHECK: smlatb	r4, r2, r3, r2          @ encoding: [0x12,0xfb,0x23,0x24]
1765@ CHECK: smlatt	r8, r3, r8, r4          @ encoding: [0x13,0xfb,0x38,0x48]
1766@ CHECK: itete	gt                      @ encoding: [0xcb,0xbf]
1767@ CHECK: smlabbgt	r3, r1, r9, r0  @ encoding: [0x11,0xfb,0x09,0x03]
1768@ CHECK: smlabtle	r5, r6, r4, r1  @ encoding: [0x16,0xfb,0x14,0x15]
1769@ CHECK: smlatbgt	r4, r2, r3, r2  @ encoding: [0x12,0xfb,0x23,0x24]
1770@ CHECK: smlattle	r8, r3, r8, r4  @ encoding: [0x13,0xfb,0x38,0x48]
1771
1772
1773@------------------------------------------------------------------------------
1774@ SMLAD/SMLADX
1775@------------------------------------------------------------------------------
1776        smlad r2, r3, r5, r8
1777        smladx r2, r3, r5, r8
1778        itt hi
1779        smladhi r2, r3, r5, r8
1780        smladxhi r2, r3, r5, r8
1781
1782@ CHECK: smlad	r2, r3, r5, r8          @ encoding: [0x23,0xfb,0x05,0x82]
1783@ CHECK: smladx	r2, r3, r5, r8          @ encoding: [0x23,0xfb,0x15,0x82]
1784@ CHECK: itt	hi                      @ encoding: [0x84,0xbf]
1785@ CHECK: smladhi r2, r3, r5, r8         @ encoding: [0x23,0xfb,0x05,0x82]
1786@ CHECK: smladxhi	r2, r3, r5, r8  @ encoding: [0x23,0xfb,0x15,0x82]
1787
1788
1789@------------------------------------------------------------------------------
1790@ SMLAL
1791@------------------------------------------------------------------------------
1792        smlal r2, r3, r5, r8
1793        it eq
1794        smlaleq r2, r3, r5, r8
1795
1796@ CHECK: smlal	r2, r3, r5, r8          @ encoding: [0xc5,0xfb,0x08,0x23]
1797@ CHECK: it	eq                      @ encoding: [0x08,0xbf]
1798@ CHECK: smlaleq r2, r3, r5, r8         @ encoding: [0xc5,0xfb,0x08,0x23]
1799
1800
1801@------------------------------------------------------------------------------
1802@ SMLALBB/SMLALBT/SMLALTB/SMLALTT
1803@------------------------------------------------------------------------------
1804        smlalbb r3, r1, r9, r0
1805        smlalbt r5, r6, r4, r1
1806        smlaltb r4, r2, r3, r2
1807        smlaltt r8, r3, r8, r4
1808        iteet ge
1809        smlalbbge r3, r1, r9, r0
1810        smlalbtlt r5, r6, r4, r1
1811        smlaltblt r4, r2, r3, r2
1812        smlalttge r8, r3, r8, r4
1813
1814@ CHECK: smlalbb r3, r1, r9, r0         @ encoding: [0xc9,0xfb,0x80,0x31]
1815@ CHECK: smlalbt r5, r6, r4, r1         @ encoding: [0xc4,0xfb,0x91,0x56]
1816@ CHECK: smlaltb r4, r2, r3, r2         @ encoding: [0xc3,0xfb,0xa2,0x42]
1817@ CHECK: smlaltt r8, r3, r8, r4         @ encoding: [0xc8,0xfb,0xb4,0x83]
1818@ CHECK: iteet	ge                      @ encoding: [0xad,0xbf]
1819@ CHECK: smlalbbge	r3, r1, r9, r0  @ encoding: [0xc9,0xfb,0x80,0x31]
1820@ CHECK: smlalbtlt	r5, r6, r4, r1  @ encoding: [0xc4,0xfb,0x91,0x56]
1821@ CHECK: smlaltblt	r4, r2, r3, r2  @ encoding: [0xc3,0xfb,0xa2,0x42]
1822@ CHECK: smlalttge	r8, r3, r8, r4  @ encoding: [0xc8,0xfb,0xb4,0x83]
1823
1824
1825@------------------------------------------------------------------------------
1826@ SMLALD/SMLALDX
1827@------------------------------------------------------------------------------
1828        smlald r2, r3, r5, r8
1829        smlaldx r2, r3, r5, r8
1830        ite eq
1831        smlaldeq r2, r3, r5, r8
1832        smlaldxne r2, r3, r5, r8
1833
1834@ CHECK: smlald	r2, r3, r5, r8          @ encoding: [0xc5,0xfb,0xc8,0x23]
1835@ CHECK: smlaldx r2, r3, r5, r8         @ encoding: [0xc5,0xfb,0xd8,0x23]
1836@ CHECK: ite	eq                      @ encoding: [0x0c,0xbf]
1837@ CHECK: smlaldeq	r2, r3, r5, r8  @ encoding: [0xc5,0xfb,0xc8,0x23]
1838@ CHECK: smlaldxne	r2, r3, r5, r8  @ encoding: [0xc5,0xfb,0xd8,0x23]
1839
1840
1841@------------------------------------------------------------------------------
1842@ SMLAWB/SMLAWT
1843@------------------------------------------------------------------------------
1844        smlawb r2, r3, r10, r8
1845        smlawt r8, r3, r5, r9
1846        ite eq
1847        smlawbeq r2, r7, r5, r8
1848        smlawtne r1, r3, r0, r8
1849
1850@ CHECK: smlawb	r2, r3, r10, r8         @ encoding: [0x33,0xfb,0x0a,0x82]
1851@ CHECK: smlawt	r8, r3, r5, r9          @ encoding: [0x33,0xfb,0x15,0x98]
1852@ CHECK: ite	eq                      @ encoding: [0x0c,0xbf]
1853@ CHECK: smlawbeq	r2, r7, r5, r8  @ encoding: [0x37,0xfb,0x05,0x82]
1854@ CHECK: smlawtne	r1, r3, r0, r8  @ encoding: [0x33,0xfb,0x10,0x81]
1855
1856
1857@------------------------------------------------------------------------------
1858@ SMLSD/SMLSDX
1859@------------------------------------------------------------------------------
1860        smlsd r2, r3, r5, r8
1861        smlsdx r2, r3, r5, r8
1862        ite le
1863        smlsdle r2, r3, r5, r8
1864        smlsdxgt r2, r3, r5, r8
1865
1866@ CHECK: smlsd	r2, r3, r5, r8          @ encoding: [0x43,0xfb,0x05,0x82]
1867@ CHECK: smlsdx	r2, r3, r5, r8          @ encoding: [0x43,0xfb,0x15,0x82]
1868@ CHECK: ite	le                      @ encoding: [0xd4,0xbf]
1869@ CHECK: smlsdle	r2, r3, r5, r8  @ encoding: [0x43,0xfb,0x05,0x82]
1870@ CHECK: smlsdxgt	r2, r3, r5, r8  @ encoding: [0x43,0xfb,0x15,0x82]
1871
1872
1873@------------------------------------------------------------------------------
1874@ SMLSLD/SMLSLDX
1875@------------------------------------------------------------------------------
1876        smlsld r2, r9, r5, r1
1877        smlsldx r4, r11, r2, r8
1878        ite ge
1879        smlsldge r8, r2, r5, r6
1880        smlsldxlt r1, r0, r3, r8
1881
1882@ CHECK: smlsld	r2, r9, r5, r1          @ encoding: [0xd5,0xfb,0xc1,0x29]
1883@ CHECK: smlsldx	r4, r11, r2, r8 @ encoding: [0xd2,0xfb,0xd8,0x4b]
1884@ CHECK: ite	ge                      @ encoding: [0xac,0xbf]
1885@ CHECK: smlsldge	r8, r2, r5, r6  @ encoding: [0xd5,0xfb,0xc6,0x82]
1886@ CHECK: smlsldxlt	r1, r0, r3, r8  @ encoding: [0xd3,0xfb,0xd8,0x10]
1887
1888
1889@------------------------------------------------------------------------------
1890@ SMMLA/SMMLAR
1891@------------------------------------------------------------------------------
1892        smmla r1, r2, r3, r4
1893        smmlar r4, r3, r2, r1
1894        ite lo
1895        smmlalo r1, r2, r3, r4
1896        smmlarcs r4, r3, r2, r1
1897
1898@ CHECK: smmla	r1, r2, r3, r4          @ encoding: [0x52,0xfb,0x03,0x41]
1899@ CHECK: smmlar	r4, r3, r2, r1          @ encoding: [0x53,0xfb,0x12,0x14]
1900@ CHECK: ite	lo                      @ encoding: [0x34,0xbf]
1901@ CHECK: smmlalo	r1, r2, r3, r4  @ encoding: [0x52,0xfb,0x03,0x41]
1902@ CHECK: smmlarhs	r4, r3, r2, r1  @ encoding: [0x53,0xfb,0x12,0x14]
1903
1904
1905@------------------------------------------------------------------------------
1906@ SMMLS/SMMLSR
1907@------------------------------------------------------------------------------
1908        smmls r1, r2, r3, r4
1909        smmlsr r4, r3, r2, r1
1910        ite lo
1911        smmlslo r1, r2, r3, r4
1912        smmlsrcs r4, r3, r2, r1
1913
1914@ CHECK: smmls	r1, r2, r3, r4          @ encoding: [0x62,0xfb,0x03,0x41]
1915@ CHECK: smmlsr	r4, r3, r2, r1          @ encoding: [0x63,0xfb,0x12,0x14]
1916@ CHECK: ite	lo                      @ encoding: [0x34,0xbf]
1917@ CHECK: smmlslo	r1, r2, r3, r4  @ encoding: [0x62,0xfb,0x03,0x41]
1918@ CHECK: smmlsrhs	r4, r3, r2, r1  @ encoding: [0x63,0xfb,0x12,0x14]
1919
1920
1921@------------------------------------------------------------------------------
1922@ SMMUL/SMMULR
1923@------------------------------------------------------------------------------
1924        smmul r2, r3, r4
1925        smmulr r3, r2, r1
1926        ite cc
1927        smmulcc r2, r3, r4
1928        smmulrhs r3, r2, r1
1929
1930@ CHECK: smmul	r2, r3, r4              @ encoding: [0x53,0xfb,0x04,0xf2]
1931@ CHECK: smmulr	r3, r2, r1              @ encoding: [0x52,0xfb,0x11,0xf3]
1932@ CHECK: ite	lo                      @ encoding: [0x34,0xbf]
1933@ CHECK: smmullo	r2, r3, r4      @ encoding: [0x53,0xfb,0x04,0xf2]
1934@ CHECK: smmulrhs	r3, r2, r1      @ encoding: [0x52,0xfb,0x11,0xf3]
1935
1936
1937@------------------------------------------------------------------------------
1938@ SMUAD/SMUADX
1939@------------------------------------------------------------------------------
1940        smuad r2, r3, r4
1941        smuadx r3, r2, r1
1942        ite lt
1943        smuadlt r2, r3, r4
1944        smuadxge r3, r2, r1
1945
1946@ CHECK: smuad	r2, r3, r4              @ encoding: [0x23,0xfb,0x04,0xf2]
1947@ CHECK: smuadx	r3, r2, r1              @ encoding: [0x22,0xfb,0x11,0xf3]
1948@ CHECK: ite	lt                      @ encoding: [0xb4,0xbf]
1949@ CHECK: smuadlt	r2, r3, r4      @ encoding: [0x23,0xfb,0x04,0xf2]
1950@ CHECK: smuadxge	r3, r2, r1      @ encoding: [0x22,0xfb,0x11,0xf3]
1951
1952
1953@------------------------------------------------------------------------------
1954@ SMULBB/SMULBT/SMULTB/SMULTT
1955@------------------------------------------------------------------------------
1956        smulbb r3, r9, r0
1957        smulbt r5, r4, r1
1958        smultb r4, r2, r2
1959        smultt r8, r3, r4
1960        itete ge
1961        smulbbge r1, r9, r0
1962        smulbtlt r5, r6, r4
1963        smultbge r2, r3, r2
1964        smulttlt r8, r3, r4
1965
1966@ CHECK: smulbb	r3, r9, r0              @ encoding: [0x19,0xfb,0x00,0xf3]
1967@ CHECK: smulbt	r5, r4, r1              @ encoding: [0x14,0xfb,0x11,0xf5]
1968@ CHECK: smultb	r4, r2, r2              @ encoding: [0x12,0xfb,0x22,0xf4]
1969@ CHECK: smultt	r8, r3, r4              @ encoding: [0x13,0xfb,0x34,0xf8]
1970@ CHECK: itete	ge                      @ encoding: [0xab,0xbf]
1971@ CHECK: smulbbge	r1, r9, r0      @ encoding: [0x19,0xfb,0x00,0xf1]
1972@ CHECK: smulbtlt	r5, r6, r4      @ encoding: [0x16,0xfb,0x14,0xf5]
1973@ CHECK: smultbge	r2, r3, r2      @ encoding: [0x13,0xfb,0x22,0xf2]
1974@ CHECK: smulttlt	r8, r3, r4      @ encoding: [0x13,0xfb,0x34,0xf8]
1975
1976
1977@------------------------------------------------------------------------------
1978@ SMULL
1979@------------------------------------------------------------------------------
1980        smull r3, r9, r0, r1
1981        it eq
1982        smulleq r8, r3, r4, r5
1983
1984@ CHECK: smull	r3, r9, r0, r1          @ encoding: [0x80,0xfb,0x01,0x39]
1985@ CHECK: it	eq                      @ encoding: [0x08,0xbf]
1986@ CHECK: smulleq r8, r3, r4, r5         @ encoding: [0x84,0xfb,0x05,0x83]
1987
1988
1989@------------------------------------------------------------------------------
1990@ SMULWB/SMULWT
1991@------------------------------------------------------------------------------
1992        smulwb r3, r9, r0
1993        smulwt r3, r9, r2
1994        ite gt
1995        smulwbgt r3, r9, r0
1996        smulwtle r3, r9, r2
1997
1998@ CHECK: smulwb	r3, r9, r0              @ encoding: [0x39,0xfb,0x00,0xf3]
1999@ CHECK: smulwt	r3, r9, r2              @ encoding: [0x39,0xfb,0x12,0xf3]
2000@ CHECK: ite	gt                      @ encoding: [0xcc,0xbf]
2001@ CHECK: smulwbgt	r3, r9, r0      @ encoding: [0x39,0xfb,0x00,0xf3]
2002@ CHECK: smulwtle	r3, r9, r2      @ encoding: [0x39,0xfb,0x12,0xf3]
2003
2004
2005@------------------------------------------------------------------------------
2006@ SMUSD/SMUSDX
2007@------------------------------------------------------------------------------
2008        smusd r3, r0, r1
2009        smusdx r3, r9, r2
2010        ite eq
2011        smusdeq r8, r3, r2
2012        smusdxne r7, r4, r3
2013
2014@ CHECK: smusd	r3, r0, r1              @ encoding: [0x40,0xfb,0x01,0xf3]
2015@ CHECK: smusdx	r3, r9, r2              @ encoding: [0x49,0xfb,0x12,0xf3]
2016@ CHECK: ite	eq                      @ encoding: [0x0c,0xbf]
2017@ CHECK: smusdeq	r8, r3, r2      @ encoding: [0x43,0xfb,0x02,0xf8]
2018@ CHECK: smusdxne	r7, r4, r3      @ encoding: [0x44,0xfb,0x13,0xf7]
2019
2020
2021@------------------------------------------------------------------------------
2022@ SRS
2023@------------------------------------------------------------------------------
2024        srsdb sp, #1
2025        srsia sp, #0
2026
2027        srsdb sp!, #19
2028        srsia sp!, #2
2029
2030        srsea sp, #10
2031        srsfd sp, #9
2032
2033        srsea sp!, #5
2034        srsfd sp!, #5
2035
2036        srs sp, #5
2037        srs sp!, #5
2038
2039@ CHECK: srsdb	sp, #1                  @ encoding: [0x0d,0xe8,0x01,0xc0]
2040@ CHECK: srsia	sp, #0                  @ encoding: [0x8d,0xe9,0x00,0xc0]
2041@ CHECK: srsdb	sp!, #19                @ encoding: [0x2d,0xe8,0x13,0xc0]
2042@ CHECK: srsia	sp!, #2                 @ encoding: [0xad,0xe9,0x02,0xc0]
2043@ CHECK: srsdb	sp, #10                 @ encoding: [0x0d,0xe8,0x0a,0xc0]
2044@ CHECK: srsia	sp, #9                  @ encoding: [0x8d,0xe9,0x09,0xc0]
2045@ CHECK: srsdb	sp!, #5                 @ encoding: [0x2d,0xe8,0x05,0xc0]
2046@ CHECK: srsia	sp!, #5                 @ encoding: [0xad,0xe9,0x05,0xc0]
2047@ CHECK: srsia	sp, #5                  @ encoding: [0x8d,0xe9,0x05,0xc0]
2048@ CHECK: srsia	sp!, #5                 @ encoding: [0xad,0xe9,0x05,0xc0]
2049
2050
2051@------------------------------------------------------------------------------
2052@ SSAT
2053@------------------------------------------------------------------------------
2054        ssat	r8, #1, r10
2055        ssat	r8, #1, r10, lsl #0
2056        ssat	r8, #1, r10, lsl #31
2057        ssat	r8, #1, r10, asr #32
2058        ssat	r8, #1, r10, asr #1
2059
2060@ CHECK: ssat	r8, #1, r10             @ encoding: [0x0a,0xf3,0x00,0x08]
2061@ CHECK: ssat	r8, #1, r10             @ encoding: [0x0a,0xf3,0x00,0x08]
2062@ CHECK: ssat	r8, #1, r10, lsl #31    @ encoding: [0x0a,0xf3,0xc0,0x78]
2063@ CHECK: ssat	r8, #1, r10, asr #32    @ encoding: [0x2a,0xf3,0x00,0x08]
2064@ CHECK: ssat	r8, #1, r10, asr #1     @ encoding: [0x2a,0xf3,0x40,0x08]
2065
2066
2067@------------------------------------------------------------------------------
2068@ SSAT16
2069@------------------------------------------------------------------------------
2070        ssat16	r2, #1, r7
2071        ssat16	r3, #16, r5
2072
2073@ CHECK: ssat16	r2, #1, r7              @ encoding: [0x27,0xf3,0x00,0x02]
2074@ CHECK: ssat16	r3, #16, r5             @ encoding: [0x25,0xf3,0x0f,0x03]
2075
2076
2077@------------------------------------------------------------------------------
2078@ SSAX
2079@------------------------------------------------------------------------------
2080        ssubaddx r2, r3, r4
2081        it lt
2082        ssubaddxlt r2, r3, r4
2083        ssax r2, r3, r4
2084        it lt
2085        ssaxlt r2, r3, r4
2086
2087@ CHECK: ssax	r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2088@ CHECK: it	lt                      @ encoding: [0xb8,0xbf]
2089@ CHECK: ssaxlt	r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2090@ CHECK: ssax	r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2091@ CHECK: it	lt                      @ encoding: [0xb8,0xbf]
2092@ CHECK: ssaxlt	r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2093
2094
2095@------------------------------------------------------------------------------
2096@ SUB (register)
2097@------------------------------------------------------------------------------
2098        sub.w r5, r2, r12, rrx
2099
2100@ CHECK: sub.w r5, r2, r12, rrx        @ encoding: [0xa2,0xeb,0x3c,0x05]
2101
2102