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