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