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