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