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