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