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