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