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