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