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