Test for 146516
[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
1152 @------------------------------------------------------------------------------
1153 @ MOVT
1154 @------------------------------------------------------------------------------
1155         movt r3, #7
1156         movt r6, #0xffff
1157         it eq
1158         movteq r4, #0xff0
1159
1160 @ CHECK: movt   r3, #7                  @ encoding: [0xc0,0xf2,0x07,0x03]
1161 @ CHECK: movt   r6, #65535              @ encoding: [0xcf,0xf6,0xff,0x76]
1162 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1163 @ CHECK: movteq r4, #4080               @ encoding: [0xc0,0xf6,0xf0,0x74]
1164
1165 @------------------------------------------------------------------------------
1166 @ MRC/MRC2
1167 @------------------------------------------------------------------------------
1168         mrc  p14, #0, r1, c1, c2, #4
1169         mrc2  p14, #0, r1, c1, c2, #4
1170
1171 @ CHECK: mrc    p14, #0, r1, c1, c2, #4 @ encoding: [0x11,0xee,0x92,0x1e]
1172 @ CHECK: mrc2   p14, #0, r1, c1, c2, #4 @ encoding: [0x11,0xfe,0x92,0x1e]
1173
1174
1175 @------------------------------------------------------------------------------
1176 @ MRRC/MRRC2
1177 @------------------------------------------------------------------------------
1178         mrrc  p7, #1, r5, r4, c1
1179         mrrc2  p7, #1, r5, r4, c1
1180
1181 @ CHECK: mrrc   p7, #1, r5, r4, c1      @ encoding: [0x54,0xec,0x11,0x57]
1182 @ CHECK: mrrc2  p7, #1, r5, r4, c1      @ encoding: [0x54,0xfc,0x11,0x57]
1183
1184
1185 @------------------------------------------------------------------------------
1186 @ MRS
1187 @------------------------------------------------------------------------------
1188         mrs  r8, apsr
1189         mrs  r8, cpsr
1190         mrs  r8, spsr
1191
1192 @ CHECK: mrs    r8, apsr                @ encoding: [0xef,0xf3,0x00,0x88]
1193 @ CHECK: mrs    r8, apsr                @ encoding: [0xef,0xf3,0x00,0x88]
1194 @ CHECK: mrs    r8, spsr                @ encoding: [0xff,0xf3,0x00,0x88]
1195
1196
1197 @------------------------------------------------------------------------------
1198 @ MSR
1199 @------------------------------------------------------------------------------
1200         msr  apsr, r1
1201         msr  apsr_g, r2
1202         msr  apsr_nzcvq, r3
1203         msr  APSR_nzcvq, r4
1204         msr  apsr_nzcvqg, r5
1205         msr  cpsr_fc, r6
1206         msr  cpsr_c, r7
1207         msr  cpsr_x, r8
1208         msr  cpsr_fc, r9
1209         msr  cpsr_all, r11
1210         msr  cpsr_fsx, r12
1211         msr  spsr_fc, r0
1212         msr  SPSR_fsxc, r5
1213         msr  cpsr_fsxc, r8
1214
1215 @ CHECK: msr    APSR_nzcvq, r1          @ encoding: [0x81,0xf3,0x00,0x88]
1216 @ CHECK: msr    APSR_g, r2              @ encoding: [0x82,0xf3,0x00,0x84]
1217 @ CHECK: msr    APSR_nzcvq, r3          @ encoding: [0x83,0xf3,0x00,0x88]
1218 @ CHECK: msr    APSR_nzcvq, r4          @ encoding: [0x84,0xf3,0x00,0x88]
1219 @ CHECK: msr    APSR_nzcvqg, r5         @ encoding: [0x85,0xf3,0x00,0x8c]
1220 @ CHECK: msr    CPSR_fc, r6             @ encoding: [0x86,0xf3,0x00,0x89]
1221 @ CHECK: msr    CPSR_c, r7              @ encoding: [0x87,0xf3,0x00,0x81]
1222 @ CHECK: msr    CPSR_x, r8              @ encoding: [0x88,0xf3,0x00,0x82]
1223 @ CHECK: msr    CPSR_fc, r9             @ encoding: [0x89,0xf3,0x00,0x89]
1224 @ CHECK: msr    CPSR_fc, r11            @ encoding: [0x8b,0xf3,0x00,0x89]
1225 @ CHECK: msr    CPSR_fsx, r12           @ encoding: [0x8c,0xf3,0x00,0x8e]
1226 @ CHECK: msr    SPSR_fc, r0             @ encoding: [0x90,0xf3,0x00,0x89]
1227 @ CHECK: msr    SPSR_fsxc, r5           @ encoding: [0x95,0xf3,0x00,0x8f]
1228 @ CHECK: msr    CPSR_fsxc, r8           @ encoding: [0x88,0xf3,0x00,0x8f]
1229
1230
1231 @------------------------------------------------------------------------------
1232 @ MUL
1233 @------------------------------------------------------------------------------
1234         muls r3, r4, r3
1235         mul r3, r4, r3
1236         mul r3, r4, r6
1237         it eq
1238         muleq r3, r4, r5
1239         it le
1240         mulle r4, r4, r8
1241         mul r5, r6
1242
1243 @ CHECK: muls   r3, r4, r3              @ encoding: [0x63,0x43]
1244 @ CHECK: mul    r3, r4, r3              @ encoding: [0x04,0xfb,0x03,0xf3]
1245 @ CHECK: mul    r3, r4, r6              @ encoding: [0x04,0xfb,0x06,0xf3]
1246 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1247 @ CHECK: muleq  r3, r4, r5              @ encoding: [0x04,0xfb,0x05,0xf3]
1248 @ CHECK: it     le                      @ encoding: [0xd8,0xbf]
1249 @ CHECK: mulle  r4, r4, r8              @ encoding: [0x04,0xfb,0x08,0xf4]
1250 @ CHECK: mul    r5, r6, r5              @ encoding: [0x06,0xfb,0x05,0xf5]
1251
1252
1253 @------------------------------------------------------------------------------
1254 @ MVN(immediate)
1255 @------------------------------------------------------------------------------
1256         mvns r8, #21
1257         mvn r0, #0x3fc0000
1258         mvns r0, #0x3fc0000
1259         itte eq
1260         mvnseq r1, #12
1261         mvneq.w r1, #12
1262         mvnne r1, #12
1263
1264 @ CHECK: mvns   r8, #21                 @ encoding: [0x7f,0xf0,0x15,0x08]
1265 @ CHECK: mvn    r0, #66846720           @ encoding: [0x6f,0xf0,0x7f,0x70]
1266 @ CHECK: mvns   r0, #66846720           @ encoding: [0x7f,0xf0,0x7f,0x70]
1267 @ CHECK: itte   eq                      @ encoding: [0x06,0xbf]
1268 @ CHECK: mvnseq r1, #12                 @ encoding: [0x7f,0xf0,0x0c,0x01]
1269 @ CHECK: mvneq  r1, #12                 @ encoding: [0x6f,0xf0,0x0c,0x01]
1270 @ CHECK: mvnne  r1, #12                 @ encoding: [0x6f,0xf0,0x0c,0x01]
1271
1272
1273 @------------------------------------------------------------------------------
1274 @ MVN(register)
1275 @------------------------------------------------------------------------------
1276         mvn r2, r3
1277         mvns r2, r3
1278         mvn r5, r6, lsl #19
1279         mvn r5, r6, lsr #9
1280         mvn.w r5, r6, asr #4
1281         mvn r5, r6, ror #6
1282         mvn r5, r6, rrx
1283         it eq
1284         mvneq r2, r3
1285
1286 @ CHECK: mvn.w  r2, r3                  @ encoding: [0x6f,0xea,0x03,0x02]
1287 @ CHECK: mvns   r2, r3                  @ encoding: [0xda,0x43]
1288 @ CHECK: mvn.w  r5, r6, lsl #19         @ encoding: [0x6f,0xea,0xc6,0x45]
1289 @ CHECK: mvn.w  r5, r6, lsr #9          @ encoding: [0x6f,0xea,0x56,0x25]
1290 @ CHECK: mvn.w  r5, r6, asr #4          @ encoding: [0x6f,0xea,0x26,0x15]
1291 @ CHECK: mvn.w  r5, r6, ror #6          @ encoding: [0x6f,0xea,0xb6,0x15]
1292 @ CHECK: mvn.w  r5, r6, rrx             @ encoding: [0x6f,0xea,0x36,0x05]
1293 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1294 @ CHECK: mvneq  r2, r3                  @ encoding: [0xda,0x43]
1295
1296 @------------------------------------------------------------------------------
1297 @ NEG
1298 @------------------------------------------------------------------------------
1299         neg r5, r2
1300         neg r5, r8
1301
1302 @ CHECK: rsb.w  r5, r2, #0              @ encoding: [0xc2,0xf1,0x00,0x05]
1303 @ CHECK: rsb.w  r5, r8, #0              @ encoding: [0xc8,0xf1,0x00,0x05]
1304
1305
1306 @------------------------------------------------------------------------------
1307 @ NOP
1308 @------------------------------------------------------------------------------
1309         nop.w
1310
1311 @ CHECK: nop.w                          @ encoding: [0xaf,0xf3,0x00,0x80]
1312
1313
1314 @------------------------------------------------------------------------------
1315 @ ORN
1316 @------------------------------------------------------------------------------
1317         orn r4, r5, #0xf000
1318         orn r4, r5, r6
1319         orns r4, r5, r6
1320         orn r4, r5, r6, lsl #5
1321         orns r4, r5, r6, lsr #5
1322         orn r4, r5, r6, lsr #5
1323         orns r4, r5, r6, asr #5
1324         orn r4, r5, r6, ror #5
1325
1326 @ CHECK: orn    r4, r5, #61440          @ encoding: [0x65,0xf4,0x70,0x44]
1327 @ CHECK: orn    r4, r5, r6              @ encoding: [0x65,0xea,0x06,0x04]
1328 @ CHECK: orns   r4, r5, r6              @ encoding: [0x75,0xea,0x06,0x04]
1329 @ CHECK: orn    r4, r5, r6, lsl #5      @ encoding: [0x65,0xea,0x46,0x14]
1330 @ CHECK: orns   r4, r5, r6, lsr #5      @ encoding: [0x75,0xea,0x56,0x14]
1331 @ CHECK: orn    r4, r5, r6, lsr #5      @ encoding: [0x65,0xea,0x56,0x14]
1332 @ CHECK: orns   r4, r5, r6, asr #5      @ encoding: [0x75,0xea,0x66,0x14]
1333 @ CHECK: orn    r4, r5, r6, ror #5      @ encoding: [0x65,0xea,0x76,0x14]
1334
1335
1336 @------------------------------------------------------------------------------
1337 @ ORR
1338 @------------------------------------------------------------------------------
1339         orr r4, r5, #0xf000
1340         orr r4, r5, r6
1341         orr r4, r5, r6, lsl #5
1342         orrs r4, r5, r6, lsr #5
1343         orr r4, r5, r6, lsr #5
1344         orrs r4, r5, r6, asr #5
1345         orr r4, r5, r6, ror #5
1346
1347 @ CHECK: orr    r4, r5, #61440          @ encoding: [0x45,0xf4,0x70,0x44]
1348 @ CHECK: orr.w  r4, r5, r6              @ encoding: [0x45,0xea,0x06,0x04]
1349 @ CHECK: orr.w  r4, r5, r6, lsl #5      @ encoding: [0x45,0xea,0x46,0x14]
1350 @ CHECK: orrs.w r4, r5, r6, lsr #5      @ encoding: [0x55,0xea,0x56,0x14]
1351 @ CHECK: orr.w  r4, r5, r6, lsr #5      @ encoding: [0x45,0xea,0x56,0x14]
1352 @ CHECK: orrs.w r4, r5, r6, asr #5      @ encoding: [0x55,0xea,0x66,0x14]
1353 @ CHECK: orr.w  r4, r5, r6, ror #5      @ encoding: [0x45,0xea,0x76,0x14]
1354
1355
1356 @------------------------------------------------------------------------------
1357 @ PKH
1358 @------------------------------------------------------------------------------
1359         pkhbt r2, r2, r3
1360         pkhbt r2, r2, r3, lsl #31
1361         pkhbt r2, r2, r3, lsl #0
1362         pkhbt r2, r2, r3, lsl #15
1363
1364         pkhtb r2, r2, r3
1365         pkhtb r2, r2, r3, asr #31
1366         pkhtb r2, r2, r3, asr #15
1367
1368 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0xc2,0xea,0x03,0x02]
1369 @ CHECK: pkhbt  r2, r2, r3, lsl #31     @ encoding: [0xc2,0xea,0xc3,0x72]
1370 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0xc2,0xea,0x03,0x02]
1371 @ CHECK: pkhbt  r2, r2, r3, lsl #15     @ encoding: [0xc2,0xea,0xc3,0x32]
1372
1373 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0xc2,0xea,0x03,0x02]
1374 @ CHECK: pkhtb  r2, r2, r3, asr #31     @ encoding: [0xc2,0xea,0xe3,0x72]
1375 @ CHECK: pkhtb  r2, r2, r3, asr #15     @ encoding: [0xc2,0xea,0xe3,0x32]
1376
1377
1378 @------------------------------------------------------------------------------
1379 @ PLD(immediate)
1380 @------------------------------------------------------------------------------
1381         pld [r5, #-4]
1382         pld [r6, #32]
1383         pld [r6, #33]
1384         pld [r6, #257]
1385         pld [r7, #257]
1386         pld [r1, #0]
1387         pld [r1, #-0]
1388
1389 @ CHECK: pld    [r5, #-4]               @ encoding: [0x15,0xf8,0x04,0xfc]
1390 @ CHECK: pld    [r6, #32]               @ encoding: [0x96,0xf8,0x20,0xf0]
1391 @ CHECK: pld    [r6, #33]               @ encoding: [0x96,0xf8,0x21,0xf0]
1392 @ CHECK: pld    [r6, #257]              @ encoding: [0x96,0xf8,0x01,0xf1]
1393 @ CHECK: pld    [r7, #257]              @ encoding: [0x97,0xf8,0x01,0xf1]
1394 @ CHECK: pld    [r1]                    @ encoding: [0x91,0xf8,0x00,0xf0]
1395 @ CHECK: pld    [r1, #-0]               @ encoding: [0x11,0xf8,0x00,0xfc]
1396
1397
1398 @------------------------------------------------------------------------------
1399 @ PLD(literal)
1400 @------------------------------------------------------------------------------
1401 @        pld  _foo
1402
1403 @ FIXME: pld    _foo                    @ encoding: [0x9f'A',0xf8'A',A,0xf0'A']
1404             @   fixup A - offset: 0, value: _foo, kind: fixup_t2_ldst_pcrel_12
1405
1406
1407 @------------------------------------------------------------------------------
1408 @ PLD(register)
1409 @------------------------------------------------------------------------------
1410         pld [r8, r1]
1411         pld [r5, r2]
1412         pld [r0, r2, lsl #3]
1413         pld [r8, r2, lsl #2]
1414         pld [sp, r2, lsl #1]
1415         pld [sp, r2, lsl #0]
1416
1417 @ CHECK: pld    [r8, r1]                @ encoding: [0x18,0xf8,0x01,0xf0]
1418 @ CHECK: pld    [r5, r2]                @ encoding: [0x15,0xf8,0x02,0xf0]
1419 @ CHECK: pld    [r0, r2, lsl #3]        @ encoding: [0x10,0xf8,0x32,0xf0]
1420 @ CHECK: pld    [r8, r2, lsl #2]        @ encoding: [0x18,0xf8,0x22,0xf0]
1421 @ CHECK: pld    [sp, r2, lsl #1]        @ encoding: [0x1d,0xf8,0x12,0xf0]
1422 @ CHECK: pld    [sp, r2]                @ encoding: [0x1d,0xf8,0x02,0xf0]
1423
1424 @------------------------------------------------------------------------------
1425 @ PLI(immediate)
1426 @------------------------------------------------------------------------------
1427         pli [r5, #-4]
1428         pli [r6, #32]
1429         pli [r6, #33]
1430         pli [r6, #257]
1431         pli [r7, #257]
1432
1433 @ CHECK: pli    [r5, #-4]               @ encoding: [0x15,0xf9,0x04,0xfc]
1434 @ CHECK: pli    [r6, #32]               @ encoding: [0x96,0xf9,0x20,0xf0]
1435 @ CHECK: pli    [r6, #33]               @ encoding: [0x96,0xf9,0x21,0xf0]
1436 @ CHECK: pli    [r6, #257]              @ encoding: [0x96,0xf9,0x01,0xf1]
1437 @ CHECK: pli    [r7, #257]              @ encoding: [0x97,0xf9,0x01,0xf1]
1438
1439
1440 @------------------------------------------------------------------------------
1441 @ PLI(literal)
1442 @------------------------------------------------------------------------------
1443 @        pli  _foo
1444
1445
1446 @ FIXME: pli    _foo                    @ encoding: [0x9f'A',0xf9'A',A,0xf0'A']
1447            @   fixup A - offset: 0, value: _foo, kind: fixup_t2_ldst_pcrel_12
1448
1449
1450 @------------------------------------------------------------------------------
1451 @ PLI(register)
1452 @------------------------------------------------------------------------------
1453         pli [r8, r1]
1454         pli [r5, r2]
1455         pli [r0, r2, lsl #3]
1456         pli [r8, r2, lsl #2]
1457         pli [sp, r2, lsl #1]
1458         pli [sp, r2, lsl #0]
1459
1460 @ CHECK: pli    [r8, r1]                @ encoding: [0x18,0xf9,0x01,0xf0]
1461 @ CHECK: pli    [r5, r2]                @ encoding: [0x15,0xf9,0x02,0xf0]
1462 @ CHECK: pli    [r0, r2, lsl #3]        @ encoding: [0x10,0xf9,0x32,0xf0]
1463 @ CHECK: pli    [r8, r2, lsl #2]        @ encoding: [0x18,0xf9,0x22,0xf0]
1464 @ CHECK: pli    [sp, r2, lsl #1]        @ encoding: [0x1d,0xf9,0x12,0xf0]
1465 @ CHECK: pli    [sp, r2]                @ encoding: [0x1d,0xf9,0x02,0xf0]
1466
1467 @------------------------------------------------------------------------------
1468 @ POP (alias)
1469 @------------------------------------------------------------------------------
1470         pop {r2, r9}
1471
1472 @ CHECK: pop.w  {r2, r9}                @ encoding: [0xbd,0xe8,0x04,0x02]
1473
1474
1475 @------------------------------------------------------------------------------
1476 @ PUSH (alias)
1477 @------------------------------------------------------------------------------
1478         push {r2, r9}
1479
1480 @ CHECK: push.w {r2, r9}                @ encoding: [0x2d,0xe9,0x04,0x02]
1481
1482
1483 @------------------------------------------------------------------------------
1484 @ QADD/QADD16/QADD8
1485 @------------------------------------------------------------------------------
1486         qadd r1, r2, r3
1487         qadd16 r1, r2, r3
1488         qadd8 r1, r2, r3
1489         itte gt
1490         qaddgt r1, r2, r3
1491         qadd16gt r1, r2, r3
1492         qadd8le r1, r2, r3
1493
1494 @ CHECK: qadd   r1, r2, r3              @ encoding: [0x83,0xfa,0x82,0xf1]
1495 @ CHECK: qadd16 r1, r2, r3              @ encoding: [0x92,0xfa,0x13,0xf1]
1496 @ CHECK: qadd8  r1, r2, r3              @ encoding: [0x82,0xfa,0x13,0xf1]
1497 @ CHECK: itte   gt                      @ encoding: [0xc6,0xbf]
1498 @ CHECK: qaddgt r1, r2, r3              @ encoding: [0x83,0xfa,0x82,0xf1]
1499 @ CHECK: qadd16gt r1, r2, r3            @ encoding: [0x92,0xfa,0x13,0xf1]
1500 @ CHECK: qadd8le r1, r2, r3             @ encoding: [0x82,0xfa,0x13,0xf1]
1501
1502
1503 @------------------------------------------------------------------------------
1504 @ QDADD/QDSUB
1505 @------------------------------------------------------------------------------
1506         qdadd r6, r7, r8
1507         qdsub r6, r7, r8
1508         itt hi
1509         qdaddhi r6, r7, r8
1510         qdsubhi r6, r7, r8
1511
1512 @ CHECK: qdadd  r6, r7, r8              @ encoding: [0x88,0xfa,0x97,0xf6]
1513 @ CHECK: qdsub  r6, r7, r8              @ encoding: [0x88,0xfa,0xb7,0xf6]
1514 @ CHECK: itt    hi                      @ encoding: [0x84,0xbf]
1515 @ CHECK: qdaddhi r6, r7, r8             @ encoding: [0x88,0xfa,0x97,0xf6]
1516 @ CHECK: qdsubhi r6, r7, r8             @ encoding: [0x88,0xfa,0xb7,0xf6]
1517
1518
1519 @------------------------------------------------------------------------------
1520 @ QSAX
1521 @------------------------------------------------------------------------------
1522         qsax r9, r12, r0
1523         it eq
1524         qsaxeq r9, r12, r0
1525
1526 @ CHECK: qsax   r9, r12, r0             @ encoding: [0xec,0xfa,0x10,0xf9]
1527 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1528 @ CHECK: qsaxeq r9, r12, r0             @ encoding: [0xec,0xfa,0x10,0xf9]
1529
1530
1531 @------------------------------------------------------------------------------
1532 @ QSUB/QSUB16/QSUB8
1533 @------------------------------------------------------------------------------
1534         qsub r1, r2, r3
1535         qsub16 r1, r2, r3
1536         qsub8 r1, r2, r3
1537         itet le
1538         qsuble r1, r2, r3
1539         qsub16gt r1, r2, r3
1540         qsub8le r1, r2, r3
1541
1542 @ CHECK: qsub   r1, r2, r3              @ encoding: [0x83,0xfa,0xa2,0xf1]
1543 @ CHECK: qsub16 r1, r2, r3              @ encoding: [0xd2,0xfa,0x13,0xf1]
1544 @ CHECK: qsub8  r1, r2, r3              @ encoding: [0xc2,0xfa,0x13,0xf1]
1545 @ CHECK: itet   le                      @ encoding: [0xd6,0xbf]
1546 @ CHECK: qsuble r1, r2, r3              @ encoding: [0x83,0xfa,0xa2,0xf1]
1547 @ CHECK: qsub16gt       r1, r2, r3      @ encoding: [0xd2,0xfa,0x13,0xf1]
1548 @ CHECK: qsub8le r1, r2, r3             @ encoding: [0xc2,0xfa,0x13,0xf1]
1549
1550
1551 @------------------------------------------------------------------------------
1552 @ RBIT
1553 @------------------------------------------------------------------------------
1554         rbit r1, r2
1555         it ne
1556         rbitne r1, r2
1557
1558 @ CHECK: rbit   r1, r2                  @ encoding: [0x92,0xfa,0xa2,0xf1]
1559 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1560 @ CHECK: rbitne r1, r2                  @ encoding: [0x92,0xfa,0xa2,0xf1]
1561
1562
1563 @------------------------------------------------------------------------------
1564 @ REV
1565 @------------------------------------------------------------------------------
1566         rev.w r1, r2
1567         rev r2, r8
1568         itt ne
1569         revne r1, r2
1570         revne r1, r8
1571
1572 @ CHECK: rev.w  r1, r2                  @ encoding: [0x92,0xfa,0x82,0xf1]
1573 @ CHECK: rev.w  r2, r8                  @ encoding: [0x98,0xfa,0x88,0xf2]
1574 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
1575 @ CHECK: revne  r1, r2                  @ encoding: [0x11,0xba]
1576 @ CHECK: revne.w r1, r8                 @ encoding: [0x98,0xfa,0x88,0xf1]
1577
1578
1579 @------------------------------------------------------------------------------
1580 @ REV16
1581 @------------------------------------------------------------------------------
1582         rev16.w r1, r2
1583         rev16 r2, r8
1584         itt ne
1585         rev16ne r1, r2
1586         rev16ne r1, r8
1587
1588 @ CHECK: rev16.w r1, r2                 @ encoding: [0x92,0xfa,0x92,0xf1]
1589 @ CHECK: rev16.w r2, r8                 @ encoding: [0x98,0xfa,0x98,0xf2]
1590 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
1591 @ CHECK: rev16ne r1, r2                 @ encoding: [0x51,0xba]
1592 @ CHECK: rev16ne.w      r1, r8          @ encoding: [0x98,0xfa,0x98,0xf1]
1593
1594
1595 @------------------------------------------------------------------------------
1596 @ REVSH
1597 @------------------------------------------------------------------------------
1598         revsh.w r1, r2
1599         revsh r2, r8
1600         itt ne
1601         revshne r1, r2
1602         revshne r1, r8
1603
1604 @ CHECK: revsh.w r1, r2                 @ encoding: [0x92,0xfa,0xb2,0xf1]
1605 @ CHECK: revsh.w r2, r8                 @ encoding: [0x98,0xfa,0xb8,0xf2]
1606 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
1607 @ CHECK: revshne r1, r2                 @ encoding: [0xd1,0xba]
1608 @ CHECK: revshne.w      r1, r8          @ encoding: [0x98,0xfa,0xb8,0xf1]
1609
1610
1611 @------------------------------------------------------------------------------
1612 @ ROR (immediate)
1613 @------------------------------------------------------------------------------
1614         ror r2, r3, #12
1615         rors r8, r3, #31
1616         rors.w r2, r3, #1
1617         ror r2, r3, #4
1618         rors r2, r12, #15
1619
1620         ror r3, #19
1621         rors r8, #2
1622         rors.w r7, #5
1623         ror.w r12, #21
1624
1625 @ CHECK: ror.w  r2, r3, #12             @ encoding: [0x4f,0xea,0x33,0x32]
1626 @ CHECK: rors.w r8, r3, #31             @ encoding: [0x5f,0xea,0xf3,0x78]
1627 @ CHECK: rors.w r2, r3, #1              @ encoding: [0x5f,0xea,0x73,0x02]
1628 @ CHECK: ror.w  r2, r3, #4              @ encoding: [0x4f,0xea,0x33,0x12]
1629 @ CHECK: rors.w r2, r12, #15            @ encoding: [0x5f,0xea,0xfc,0x32]
1630
1631 @ CHECK: ror.w  r3, r3, #19             @ encoding: [0x4f,0xea,0xf3,0x43]
1632 @ CHECK: rors.w r8, r8, #2              @ encoding: [0x5f,0xea,0xb8,0x08]
1633 @ CHECK: rors.w r7, r7, #5              @ encoding: [0x5f,0xea,0x77,0x17]
1634 @ CHECK: ror.w  r12, r12, #21           @ encoding: [0x4f,0xea,0x7c,0x5c]
1635
1636
1637 @------------------------------------------------------------------------------
1638 @ ROR (register)
1639 @------------------------------------------------------------------------------
1640         ror r3, r4, r2
1641         ror.w r1, r2
1642         rors r3, r4, r8
1643
1644 @ CHECK: ror.w  r3, r4, r2              @ encoding: [0x64,0xfa,0x02,0xf3]
1645 @ CHECK: ror.w  r1, r1, r2              @ encoding: [0x61,0xfa,0x02,0xf1]
1646 @ CHECK: rors.w r3, r4, r8              @ encoding: [0x74,0xfa,0x08,0xf3]
1647
1648
1649 @------------------------------------------------------------------------------
1650 @ RRX
1651 @------------------------------------------------------------------------------
1652         rrx r1, r2
1653         rrxs r1, r2
1654         ite lt
1655         rrxlt r9, r12
1656         rrxsge r8, r3
1657
1658 @ CHECK: rrx    r1, r2                  @ encoding: [0x4f,0xea,0x32,0x01]
1659 @ CHECK: rrxs   r1, r2                  @ encoding: [0x5f,0xea,0x32,0x01]
1660 @ CHECK: ite    lt                      @ encoding: [0xb4,0xbf]
1661 @ CHECK: rrxlt  r9, r12                 @ encoding: [0x4f,0xea,0x3c,0x09]
1662 @ CHECK: rrxsge r8, r3                  @ encoding: [0x5f,0xea,0x33,0x08]
1663
1664 @------------------------------------------------------------------------------
1665 @ RSB (immediate)
1666 @------------------------------------------------------------------------------
1667         rsb r2, r5, #0xff000
1668         rsbs r3, r12, #0xf
1669         rsb r1, #0xff
1670         rsb r1, r1, #0xff
1671         rsb r11, r11, #0
1672         rsb r9, #0
1673         rsbs r3, r1, #0
1674         rsb r3, r1, #0
1675
1676 @ CHECK: rsb.w  r2, r5, #1044480        @ encoding: [0xc5,0xf5,0x7f,0x22]
1677 @ CHECK: rsbs.w r3, r12, #15            @ encoding: [0xdc,0xf1,0x0f,0x03]
1678 @ CHECK: rsb.w  r1, r1, #255            @ encoding: [0xc1,0xf1,0xff,0x01]
1679 @ CHECK: rsb.w  r1, r1, #255            @ encoding: [0xc1,0xf1,0xff,0x01]
1680 @ CHECK: rsb.w  r11, r11, #0            @ encoding: [0xcb,0xf1,0x00,0x0b]
1681 @ CHECK: rsb.w  r9, r9, #0              @ encoding: [0xc9,0xf1,0x00,0x09]
1682 @ CHECK: rsbs   r3, r1, #0              @ encoding: [0x4b,0x42]
1683 @ CHECK: rsb.w  r3, r1, #0              @ encoding: [0xc1,0xf1,0x00,0x03]
1684
1685
1686 @------------------------------------------------------------------------------
1687 @ RSB (register)
1688 @------------------------------------------------------------------------------
1689         rsb r4, r8
1690         rsb r4, r9, r8
1691         rsb r1, r4, r8, asr #3
1692         rsbs r2, r1, r7, lsl #1
1693
1694 @ CHECK: rsb    r4, r4, r8              @ encoding: [0xc4,0xeb,0x08,0x04]
1695 @ CHECK: rsb    r4, r9, r8              @ encoding: [0xc9,0xeb,0x08,0x04]
1696 @ CHECK: rsb    r1, r4, r8, asr #3      @ encoding: [0xc4,0xeb,0xe8,0x01]
1697 @ CHECK: rsbs   r2, r1, r7, lsl #1      @ encoding: [0xd1,0xeb,0x47,0x02]
1698
1699
1700 @------------------------------------------------------------------------------
1701 @ SADD16
1702 @------------------------------------------------------------------------------
1703         sadd16 r3, r4, r8
1704         it ne
1705         sadd16ne r3, r4, r8
1706
1707 @ CHECK: sadd16 r3, r4, r8              @ encoding: [0x94,0xfa,0x08,0xf3]
1708 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1709 @ CHECK: sadd16ne       r3, r4, r8      @ encoding: [0x94,0xfa,0x08,0xf3]
1710
1711
1712 @------------------------------------------------------------------------------
1713 @ SADD8
1714 @------------------------------------------------------------------------------
1715         sadd8 r3, r4, r8
1716         it ne
1717         sadd8ne r3, r4, r8
1718
1719 @ CHECK: sadd8  r3, r4, r8              @ encoding: [0x84,0xfa,0x08,0xf3]
1720 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1721 @ CHECK: sadd8ne r3, r4, r8             @ encoding: [0x84,0xfa,0x08,0xf3]
1722
1723
1724 @------------------------------------------------------------------------------
1725 @ SASX
1726 @------------------------------------------------------------------------------
1727         saddsubx r9, r2, r7
1728         it ne
1729         saddsubxne r2, r5, r6
1730         sasx r9, r2, r7
1731         it ne
1732         sasxne r2, r5, r6
1733
1734 @ CHECK: sasx   r9, r2, r7              @ encoding: [0xa2,0xfa,0x07,0xf9]
1735 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1736 @ CHECK: sasxne r2, r5, r6              @ encoding: [0xa5,0xfa,0x06,0xf2]
1737 @ CHECK: sasx   r9, r2, r7              @ encoding: [0xa2,0xfa,0x07,0xf9]
1738 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1739 @ CHECK: sasxne r2, r5, r6              @ encoding: [0xa5,0xfa,0x06,0xf2]
1740
1741
1742 @------------------------------------------------------------------------------
1743 @ SBC (immediate)
1744 @------------------------------------------------------------------------------
1745         sbc r0, r1, #4
1746         sbcs r0, r1, #0
1747         sbc r1, r2, #255
1748         sbc r3, r7, #0x00550055
1749         sbc r8, r12, #0xaa00aa00
1750         sbc r9, r7, #0xa5a5a5a5
1751         sbc r5, r3, #0x87000000
1752         sbc r4, r2, #0x7f800000
1753         sbc r4, r2, #0x00000680
1754
1755 @ CHECK: sbc    r0, r1, #4              @ encoding: [0x61,0xf1,0x04,0x00]
1756 @ CHECK: sbcs   r0, r1, #0              @ encoding: [0x71,0xf1,0x00,0x00]
1757 @ CHECK: sbc    r1, r2, #255            @ encoding: [0x62,0xf1,0xff,0x01]
1758 @ CHECK: sbc    r3, r7, #5570645        @ encoding: [0x67,0xf1,0x55,0x13]
1759 @ CHECK: sbc    r8, r12, #2852170240    @ encoding: [0x6c,0xf1,0xaa,0x28]
1760 @ CHECK: sbc    r9, r7, #2779096485     @ encoding: [0x67,0xf1,0xa5,0x39]
1761 @ CHECK: sbc    r5, r3, #2264924160     @ encoding: [0x63,0xf1,0x07,0x45]
1762 @ CHECK: sbc    r4, r2, #2139095040     @ encoding: [0x62,0xf1,0xff,0x44]
1763 @ CHECK: sbc    r4, r2, #1664           @ encoding: [0x62,0xf5,0xd0,0x64]
1764
1765
1766 @------------------------------------------------------------------------------
1767 @ SBC (register)
1768 @------------------------------------------------------------------------------
1769         sbc r4, r5, r6
1770         sbcs r4, r5, r6
1771         sbc.w r9, r1, r3
1772         sbcs.w r9, r1, r3
1773         sbc     r0, r1, r3, ror #4
1774         sbcs    r0, r1, r3, lsl #7
1775         sbc.w   r0, r1, r3, lsr #31
1776         sbcs.w  r0, r1, r3, asr #32
1777
1778 @ CHECK: sbc.w  r4, r5, r6              @ encoding: [0x65,0xeb,0x06,0x04]
1779 @ CHECK: sbcs.w r4, r5, r6              @ encoding: [0x75,0xeb,0x06,0x04]
1780 @ CHECK: sbc.w  r9, r1, r3              @ encoding: [0x61,0xeb,0x03,0x09]
1781 @ CHECK: sbcs.w r9, r1, r3              @ encoding: [0x71,0xeb,0x03,0x09]
1782 @ CHECK: sbc.w  r0, r1, r3, ror #4      @ encoding: [0x61,0xeb,0x33,0x10]
1783 @ CHECK: sbcs.w r0, r1, r3, lsl #7      @ encoding: [0x71,0xeb,0xc3,0x10]
1784 @ CHECK: sbc.w  r0, r1, r3, lsr #31     @ encoding: [0x61,0xeb,0xd3,0x70]
1785 @ CHECK: sbcs.w r0, r1, r3, asr #32     @ encoding: [0x71,0xeb,0x23,0x00]
1786
1787
1788 @------------------------------------------------------------------------------
1789 @ SBFX
1790 @------------------------------------------------------------------------------
1791         sbfx r4, r5, #16, #1
1792         it gt
1793         sbfxgt r4, r5, #16, #16
1794
1795 @ CHECK: sbfx   r4, r5, #16, #1         @ encoding: [0x45,0xf3,0x00,0x44]
1796 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1797 @ CHECK: sbfxgt r4, r5, #16, #16        @ encoding: [0x45,0xf3,0x0f,0x44]
1798
1799
1800 @------------------------------------------------------------------------------
1801 @ SEL
1802 @------------------------------------------------------------------------------
1803         sel r5, r9, r2
1804         it le
1805         selle r5, r9, r2
1806
1807 @ CHECK: sel    r5, r9, r2              @ encoding: [0xa9,0xfa,0x82,0xf5]
1808 @ CHECK: it     le                      @ encoding: [0xd8,0xbf]
1809 @ CHECK: selle  r5, r9, r2              @ encoding: [0xa9,0xfa,0x82,0xf5]
1810
1811
1812 @------------------------------------------------------------------------------
1813 @ SEV
1814 @------------------------------------------------------------------------------
1815         sev.w
1816         it eq
1817         seveq.w
1818
1819 @ CHECK: sev.w                           @ encoding: [0xaf,0xf3,0x04,0x80]
1820 @ CHECK: it     eq                       @ encoding: [0x08,0xbf]
1821 @ CHECK: seveq.w                         @ encoding: [0xaf,0xf3,0x04,0x80]
1822
1823
1824 @------------------------------------------------------------------------------
1825 @ SADD16/SADD8
1826 @------------------------------------------------------------------------------
1827         sadd16 r1, r2, r3
1828         sadd8 r1, r2, r3
1829         ite gt
1830         sadd16gt r1, r2, r3
1831         sadd8le r1, r2, r3
1832
1833 @ CHECK: sadd16 r1, r2, r3              @ encoding: [0x92,0xfa,0x03,0xf1]
1834 @ CHECK: sadd8  r1, r2, r3              @ encoding: [0x82,0xfa,0x03,0xf1]
1835 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
1836 @ CHECK: sadd16gt       r1, r2, r3      @ encoding: [0x92,0xfa,0x03,0xf1]
1837 @ CHECK: sadd8le r1, r2, r3             @ encoding: [0x82,0xfa,0x03,0xf1]
1838
1839
1840 @------------------------------------------------------------------------------
1841 @ SHASX
1842 @------------------------------------------------------------------------------
1843         shasx r4, r8, r2
1844         it gt
1845         shasxgt r4, r8, r2
1846         shaddsubx r4, r8, r2
1847         it gt
1848         shaddsubxgt r4, r8, r2
1849
1850 @ CHECK: shasx  r4, r8, r2              @ encoding: [0xa8,0xfa,0x22,0xf4]
1851 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1852 @ CHECK: shasxgt r4, r8, r2             @ encoding: [0xa8,0xfa,0x22,0xf4]
1853 @ CHECK: shasx  r4, r8, r2              @ encoding: [0xa8,0xfa,0x22,0xf4]
1854 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1855 @ CHECK: shasxgt r4, r8, r2             @ encoding: [0xa8,0xfa,0x22,0xf4]
1856
1857
1858 @------------------------------------------------------------------------------
1859 @ SHASX
1860 @------------------------------------------------------------------------------
1861         shsax r4, r8, r2
1862         it gt
1863         shsaxgt r4, r8, r2
1864         shsubaddx r4, r8, r2
1865         it gt
1866         shsubaddxgt r4, r8, r2
1867
1868 @ CHECK: shsax  r4, r8, r2              @ encoding: [0xe8,0xfa,0x22,0xf4]
1869 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1870 @ CHECK: shsaxgt r4, r8, r2             @ encoding: [0xe8,0xfa,0x22,0xf4]
1871 @ CHECK: shsax  r4, r8, r2              @ encoding: [0xe8,0xfa,0x22,0xf4]
1872 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1873 @ CHECK: shsaxgt r4, r8, r2             @ encoding: [0xe8,0xfa,0x22,0xf4]
1874
1875
1876 @------------------------------------------------------------------------------
1877 @ SHSUB16/SHSUB8
1878 @------------------------------------------------------------------------------
1879         shsub16 r4, r8, r2
1880         shsub8 r4, r8, r2
1881         itt gt
1882         shsub16gt r4, r8, r2
1883         shsub8gt r4, r8, r2
1884
1885 @ CHECK: shsub16 r4, r8, r2             @ encoding: [0xd8,0xfa,0x22,0xf4]
1886 @ CHECK: shsub8 r4, r8, r2              @ encoding: [0xc8,0xfa,0x22,0xf4]
1887 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
1888 @ CHECK: shsub16gt      r4, r8, r2      @ encoding: [0xd8,0xfa,0x22,0xf4]
1889 @ CHECK: shsub8gt       r4, r8, r2      @ encoding: [0xc8,0xfa,0x22,0xf4]
1890
1891
1892 @------------------------------------------------------------------------------
1893 @ SMLABB/SMLABT/SMLATB/SMLATT
1894 @------------------------------------------------------------------------------
1895         smlabb r3, r1, r9, r0
1896         smlabt r5, r6, r4, r1
1897         smlatb r4, r2, r3, r2
1898         smlatt r8, r3, r8, r4
1899         itete gt
1900         smlabbgt r3, r1, r9, r0
1901         smlabtle r5, r6, r4, r1
1902         smlatbgt r4, r2, r3, r2
1903         smlattle r8, r3, r8, r4
1904
1905 @ CHECK: smlabb r3, r1, r9, r0          @ encoding: [0x11,0xfb,0x09,0x03]
1906 @ CHECK: smlabt r5, r6, r4, r1          @ encoding: [0x16,0xfb,0x14,0x15]
1907 @ CHECK: smlatb r4, r2, r3, r2          @ encoding: [0x12,0xfb,0x23,0x24]
1908 @ CHECK: smlatt r8, r3, r8, r4          @ encoding: [0x13,0xfb,0x38,0x48]
1909 @ CHECK: itete  gt                      @ encoding: [0xcb,0xbf]
1910 @ CHECK: smlabbgt       r3, r1, r9, r0  @ encoding: [0x11,0xfb,0x09,0x03]
1911 @ CHECK: smlabtle       r5, r6, r4, r1  @ encoding: [0x16,0xfb,0x14,0x15]
1912 @ CHECK: smlatbgt       r4, r2, r3, r2  @ encoding: [0x12,0xfb,0x23,0x24]
1913 @ CHECK: smlattle       r8, r3, r8, r4  @ encoding: [0x13,0xfb,0x38,0x48]
1914
1915
1916 @------------------------------------------------------------------------------
1917 @ SMLAD/SMLADX
1918 @------------------------------------------------------------------------------
1919         smlad r2, r3, r5, r8
1920         smladx r2, r3, r5, r8
1921         itt hi
1922         smladhi r2, r3, r5, r8
1923         smladxhi r2, r3, r5, r8
1924
1925 @ CHECK: smlad  r2, r3, r5, r8          @ encoding: [0x23,0xfb,0x05,0x82]
1926 @ CHECK: smladx r2, r3, r5, r8          @ encoding: [0x23,0xfb,0x15,0x82]
1927 @ CHECK: itt    hi                      @ encoding: [0x84,0xbf]
1928 @ CHECK: smladhi r2, r3, r5, r8         @ encoding: [0x23,0xfb,0x05,0x82]
1929 @ CHECK: smladxhi       r2, r3, r5, r8  @ encoding: [0x23,0xfb,0x15,0x82]
1930
1931
1932 @------------------------------------------------------------------------------
1933 @ SMLAL
1934 @------------------------------------------------------------------------------
1935         smlal r2, r3, r5, r8
1936         it eq
1937         smlaleq r2, r3, r5, r8
1938
1939 @ CHECK: smlal  r2, r3, r5, r8          @ encoding: [0xc5,0xfb,0x08,0x23]
1940 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1941 @ CHECK: smlaleq r2, r3, r5, r8         @ encoding: [0xc5,0xfb,0x08,0x23]
1942
1943
1944 @------------------------------------------------------------------------------
1945 @ SMLALBB/SMLALBT/SMLALTB/SMLALTT
1946 @------------------------------------------------------------------------------
1947         smlalbb r3, r1, r9, r0
1948         smlalbt r5, r6, r4, r1
1949         smlaltb r4, r2, r3, r2
1950         smlaltt r8, r3, r8, r4
1951         iteet ge
1952         smlalbbge r3, r1, r9, r0
1953         smlalbtlt r5, r6, r4, r1
1954         smlaltblt r4, r2, r3, r2
1955         smlalttge r8, r3, r8, r4
1956
1957 @ CHECK: smlalbb r3, r1, r9, r0         @ encoding: [0xc9,0xfb,0x80,0x31]
1958 @ CHECK: smlalbt r5, r6, r4, r1         @ encoding: [0xc4,0xfb,0x91,0x56]
1959 @ CHECK: smlaltb r4, r2, r3, r2         @ encoding: [0xc3,0xfb,0xa2,0x42]
1960 @ CHECK: smlaltt r8, r3, r8, r4         @ encoding: [0xc8,0xfb,0xb4,0x83]
1961 @ CHECK: iteet  ge                      @ encoding: [0xad,0xbf]
1962 @ CHECK: smlalbbge      r3, r1, r9, r0  @ encoding: [0xc9,0xfb,0x80,0x31]
1963 @ CHECK: smlalbtlt      r5, r6, r4, r1  @ encoding: [0xc4,0xfb,0x91,0x56]
1964 @ CHECK: smlaltblt      r4, r2, r3, r2  @ encoding: [0xc3,0xfb,0xa2,0x42]
1965 @ CHECK: smlalttge      r8, r3, r8, r4  @ encoding: [0xc8,0xfb,0xb4,0x83]
1966
1967
1968 @------------------------------------------------------------------------------
1969 @ SMLALD/SMLALDX
1970 @------------------------------------------------------------------------------
1971         smlald r2, r3, r5, r8
1972         smlaldx r2, r3, r5, r8
1973         ite eq
1974         smlaldeq r2, r3, r5, r8
1975         smlaldxne r2, r3, r5, r8
1976
1977 @ CHECK: smlald r2, r3, r5, r8          @ encoding: [0xc5,0xfb,0xc8,0x23]
1978 @ CHECK: smlaldx r2, r3, r5, r8         @ encoding: [0xc5,0xfb,0xd8,0x23]
1979 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
1980 @ CHECK: smlaldeq       r2, r3, r5, r8  @ encoding: [0xc5,0xfb,0xc8,0x23]
1981 @ CHECK: smlaldxne      r2, r3, r5, r8  @ encoding: [0xc5,0xfb,0xd8,0x23]
1982
1983
1984 @------------------------------------------------------------------------------
1985 @ SMLAWB/SMLAWT
1986 @------------------------------------------------------------------------------
1987         smlawb r2, r3, r10, r8
1988         smlawt r8, r3, r5, r9
1989         ite eq
1990         smlawbeq r2, r7, r5, r8
1991         smlawtne r1, r3, r0, r8
1992
1993 @ CHECK: smlawb r2, r3, r10, r8         @ encoding: [0x33,0xfb,0x0a,0x82]
1994 @ CHECK: smlawt r8, r3, r5, r9          @ encoding: [0x33,0xfb,0x15,0x98]
1995 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
1996 @ CHECK: smlawbeq       r2, r7, r5, r8  @ encoding: [0x37,0xfb,0x05,0x82]
1997 @ CHECK: smlawtne       r1, r3, r0, r8  @ encoding: [0x33,0xfb,0x10,0x81]
1998
1999
2000 @------------------------------------------------------------------------------
2001 @ SMLSD/SMLSDX
2002 @------------------------------------------------------------------------------
2003         smlsd r2, r3, r5, r8
2004         smlsdx r2, r3, r5, r8
2005         ite le
2006         smlsdle r2, r3, r5, r8
2007         smlsdxgt r2, r3, r5, r8
2008
2009 @ CHECK: smlsd  r2, r3, r5, r8          @ encoding: [0x43,0xfb,0x05,0x82]
2010 @ CHECK: smlsdx r2, r3, r5, r8          @ encoding: [0x43,0xfb,0x15,0x82]
2011 @ CHECK: ite    le                      @ encoding: [0xd4,0xbf]
2012 @ CHECK: smlsdle        r2, r3, r5, r8  @ encoding: [0x43,0xfb,0x05,0x82]
2013 @ CHECK: smlsdxgt       r2, r3, r5, r8  @ encoding: [0x43,0xfb,0x15,0x82]
2014
2015
2016 @------------------------------------------------------------------------------
2017 @ SMLSLD/SMLSLDX
2018 @------------------------------------------------------------------------------
2019         smlsld r2, r9, r5, r1
2020         smlsldx r4, r11, r2, r8
2021         ite ge
2022         smlsldge r8, r2, r5, r6
2023         smlsldxlt r1, r0, r3, r8
2024
2025 @ CHECK: smlsld r2, r9, r5, r1          @ encoding: [0xd5,0xfb,0xc1,0x29]
2026 @ CHECK: smlsldx        r4, r11, r2, r8 @ encoding: [0xd2,0xfb,0xd8,0x4b]
2027 @ CHECK: ite    ge                      @ encoding: [0xac,0xbf]
2028 @ CHECK: smlsldge       r8, r2, r5, r6  @ encoding: [0xd5,0xfb,0xc6,0x82]
2029 @ CHECK: smlsldxlt      r1, r0, r3, r8  @ encoding: [0xd3,0xfb,0xd8,0x10]
2030
2031
2032 @------------------------------------------------------------------------------
2033 @ SMMLA/SMMLAR
2034 @------------------------------------------------------------------------------
2035         smmla r1, r2, r3, r4
2036         smmlar r4, r3, r2, r1
2037         ite lo
2038         smmlalo r1, r2, r3, r4
2039         smmlarcs r4, r3, r2, r1
2040
2041 @ CHECK: smmla  r1, r2, r3, r4          @ encoding: [0x52,0xfb,0x03,0x41]
2042 @ CHECK: smmlar r4, r3, r2, r1          @ encoding: [0x53,0xfb,0x12,0x14]
2043 @ CHECK: ite    lo                      @ encoding: [0x34,0xbf]
2044 @ CHECK: smmlalo        r1, r2, r3, r4  @ encoding: [0x52,0xfb,0x03,0x41]
2045 @ CHECK: smmlarhs       r4, r3, r2, r1  @ encoding: [0x53,0xfb,0x12,0x14]
2046
2047
2048 @------------------------------------------------------------------------------
2049 @ SMMLS/SMMLSR
2050 @------------------------------------------------------------------------------
2051         smmls r1, r2, r3, r4
2052         smmlsr r4, r3, r2, r1
2053         ite lo
2054         smmlslo r1, r2, r3, r4
2055         smmlsrcs r4, r3, r2, r1
2056
2057 @ CHECK: smmls  r1, r2, r3, r4          @ encoding: [0x62,0xfb,0x03,0x41]
2058 @ CHECK: smmlsr r4, r3, r2, r1          @ encoding: [0x63,0xfb,0x12,0x14]
2059 @ CHECK: ite    lo                      @ encoding: [0x34,0xbf]
2060 @ CHECK: smmlslo        r1, r2, r3, r4  @ encoding: [0x62,0xfb,0x03,0x41]
2061 @ CHECK: smmlsrhs       r4, r3, r2, r1  @ encoding: [0x63,0xfb,0x12,0x14]
2062
2063
2064 @------------------------------------------------------------------------------
2065 @ SMMUL/SMMULR
2066 @------------------------------------------------------------------------------
2067         smmul r2, r3, r4
2068         smmulr r3, r2, r1
2069         ite cc
2070         smmulcc r2, r3, r4
2071         smmulrhs r3, r2, r1
2072
2073 @ CHECK: smmul  r2, r3, r4              @ encoding: [0x53,0xfb,0x04,0xf2]
2074 @ CHECK: smmulr r3, r2, r1              @ encoding: [0x52,0xfb,0x11,0xf3]
2075 @ CHECK: ite    lo                      @ encoding: [0x34,0xbf]
2076 @ CHECK: smmullo        r2, r3, r4      @ encoding: [0x53,0xfb,0x04,0xf2]
2077 @ CHECK: smmulrhs       r3, r2, r1      @ encoding: [0x52,0xfb,0x11,0xf3]
2078
2079
2080 @------------------------------------------------------------------------------
2081 @ SMUAD/SMUADX
2082 @------------------------------------------------------------------------------
2083         smuad r2, r3, r4
2084         smuadx r3, r2, r1
2085         ite lt
2086         smuadlt r2, r3, r4
2087         smuadxge r3, r2, r1
2088
2089 @ CHECK: smuad  r2, r3, r4              @ encoding: [0x23,0xfb,0x04,0xf2]
2090 @ CHECK: smuadx r3, r2, r1              @ encoding: [0x22,0xfb,0x11,0xf3]
2091 @ CHECK: ite    lt                      @ encoding: [0xb4,0xbf]
2092 @ CHECK: smuadlt        r2, r3, r4      @ encoding: [0x23,0xfb,0x04,0xf2]
2093 @ CHECK: smuadxge       r3, r2, r1      @ encoding: [0x22,0xfb,0x11,0xf3]
2094
2095
2096 @------------------------------------------------------------------------------
2097 @ SMULBB/SMULBT/SMULTB/SMULTT
2098 @------------------------------------------------------------------------------
2099         smulbb r3, r9, r0
2100         smulbt r5, r4, r1
2101         smultb r4, r2, r2
2102         smultt r8, r3, r4
2103         itete ge
2104         smulbbge r1, r9, r0
2105         smulbtlt r5, r6, r4
2106         smultbge r2, r3, r2
2107         smulttlt r8, r3, r4
2108
2109 @ CHECK: smulbb r3, r9, r0              @ encoding: [0x19,0xfb,0x00,0xf3]
2110 @ CHECK: smulbt r5, r4, r1              @ encoding: [0x14,0xfb,0x11,0xf5]
2111 @ CHECK: smultb r4, r2, r2              @ encoding: [0x12,0xfb,0x22,0xf4]
2112 @ CHECK: smultt r8, r3, r4              @ encoding: [0x13,0xfb,0x34,0xf8]
2113 @ CHECK: itete  ge                      @ encoding: [0xab,0xbf]
2114 @ CHECK: smulbbge       r1, r9, r0      @ encoding: [0x19,0xfb,0x00,0xf1]
2115 @ CHECK: smulbtlt       r5, r6, r4      @ encoding: [0x16,0xfb,0x14,0xf5]
2116 @ CHECK: smultbge       r2, r3, r2      @ encoding: [0x13,0xfb,0x22,0xf2]
2117 @ CHECK: smulttlt       r8, r3, r4      @ encoding: [0x13,0xfb,0x34,0xf8]
2118
2119
2120 @------------------------------------------------------------------------------
2121 @ SMULL
2122 @------------------------------------------------------------------------------
2123         smull r3, r9, r0, r1
2124         it eq
2125         smulleq r8, r3, r4, r5
2126
2127 @ CHECK: smull  r3, r9, r0, r1          @ encoding: [0x80,0xfb,0x01,0x39]
2128 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
2129 @ CHECK: smulleq r8, r3, r4, r5         @ encoding: [0x84,0xfb,0x05,0x83]
2130
2131
2132 @------------------------------------------------------------------------------
2133 @ SMULWB/SMULWT
2134 @------------------------------------------------------------------------------
2135         smulwb r3, r9, r0
2136         smulwt r3, r9, r2
2137         ite gt
2138         smulwbgt r3, r9, r0
2139         smulwtle r3, r9, r2
2140
2141 @ CHECK: smulwb r3, r9, r0              @ encoding: [0x39,0xfb,0x00,0xf3]
2142 @ CHECK: smulwt r3, r9, r2              @ encoding: [0x39,0xfb,0x12,0xf3]
2143 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
2144 @ CHECK: smulwbgt       r3, r9, r0      @ encoding: [0x39,0xfb,0x00,0xf3]
2145 @ CHECK: smulwtle       r3, r9, r2      @ encoding: [0x39,0xfb,0x12,0xf3]
2146
2147
2148 @------------------------------------------------------------------------------
2149 @ SMUSD/SMUSDX
2150 @------------------------------------------------------------------------------
2151         smusd r3, r0, r1
2152         smusdx r3, r9, r2
2153         ite eq
2154         smusdeq r8, r3, r2
2155         smusdxne r7, r4, r3
2156
2157 @ CHECK: smusd  r3, r0, r1              @ encoding: [0x40,0xfb,0x01,0xf3]
2158 @ CHECK: smusdx r3, r9, r2              @ encoding: [0x49,0xfb,0x12,0xf3]
2159 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
2160 @ CHECK: smusdeq        r8, r3, r2      @ encoding: [0x43,0xfb,0x02,0xf8]
2161 @ CHECK: smusdxne       r7, r4, r3      @ encoding: [0x44,0xfb,0x13,0xf7]
2162
2163
2164 @------------------------------------------------------------------------------
2165 @ SRS
2166 @------------------------------------------------------------------------------
2167         srsdb sp, #1
2168         srsia sp, #0
2169
2170         srsdb sp!, #19
2171         srsia sp!, #2
2172
2173         srsea sp, #10
2174         srsfd sp, #9
2175
2176         srsea sp!, #5
2177         srsfd sp!, #5
2178
2179         srs sp, #5
2180         srs sp!, #5
2181
2182 @ CHECK: srsdb  sp, #1                  @ encoding: [0x0d,0xe8,0x01,0xc0]
2183 @ CHECK: srsia  sp, #0                  @ encoding: [0x8d,0xe9,0x00,0xc0]
2184 @ CHECK: srsdb  sp!, #19                @ encoding: [0x2d,0xe8,0x13,0xc0]
2185 @ CHECK: srsia  sp!, #2                 @ encoding: [0xad,0xe9,0x02,0xc0]
2186 @ CHECK: srsdb  sp, #10                 @ encoding: [0x0d,0xe8,0x0a,0xc0]
2187 @ CHECK: srsia  sp, #9                  @ encoding: [0x8d,0xe9,0x09,0xc0]
2188 @ CHECK: srsdb  sp!, #5                 @ encoding: [0x2d,0xe8,0x05,0xc0]
2189 @ CHECK: srsia  sp!, #5                 @ encoding: [0xad,0xe9,0x05,0xc0]
2190 @ CHECK: srsia  sp, #5                  @ encoding: [0x8d,0xe9,0x05,0xc0]
2191 @ CHECK: srsia  sp!, #5                 @ encoding: [0xad,0xe9,0x05,0xc0]
2192
2193
2194 @------------------------------------------------------------------------------
2195 @ SSAT
2196 @------------------------------------------------------------------------------
2197         ssat    r8, #1, r10
2198         ssat    r8, #1, r10, lsl #0
2199         ssat    r8, #1, r10, lsl #31
2200         ssat    r8, #1, r10, asr #1
2201
2202 @ CHECK: ssat   r8, #1, r10             @ encoding: [0x0a,0xf3,0x00,0x08]
2203 @ CHECK: ssat   r8, #1, r10             @ encoding: [0x0a,0xf3,0x00,0x08]
2204 @ CHECK: ssat   r8, #1, r10, lsl #31    @ encoding: [0x0a,0xf3,0xc0,0x78]
2205 @ CHECK: ssat   r8, #1, r10, asr #1     @ encoding: [0x2a,0xf3,0x40,0x08]
2206
2207
2208 @------------------------------------------------------------------------------
2209 @ SSAT16
2210 @------------------------------------------------------------------------------
2211         ssat16  r2, #1, r7
2212         ssat16  r3, #16, r5
2213
2214 @ CHECK: ssat16 r2, #1, r7              @ encoding: [0x27,0xf3,0x00,0x02]
2215 @ CHECK: ssat16 r3, #16, r5             @ encoding: [0x25,0xf3,0x0f,0x03]
2216
2217
2218 @------------------------------------------------------------------------------
2219 @ SSAX
2220 @------------------------------------------------------------------------------
2221         ssubaddx r2, r3, r4
2222         it lt
2223         ssubaddxlt r2, r3, r4
2224         ssax r2, r3, r4
2225         it lt
2226         ssaxlt r2, r3, r4
2227
2228 @ CHECK: ssax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2229 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
2230 @ CHECK: ssaxlt r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2231 @ CHECK: ssax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2232 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
2233 @ CHECK: ssaxlt r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2234
2235
2236 @------------------------------------------------------------------------------
2237 @ SSUB16/SSUB8
2238 @------------------------------------------------------------------------------
2239         ssub16 r1, r0, r6
2240         ssub8 r9, r2, r4
2241         ite ne
2242         ssub16ne r5, r3, r2
2243         ssub8eq r5, r1, r2
2244
2245 @ CHECK: ssub16 r1, r0, r6              @ encoding: [0xd0,0xfa,0x06,0xf1]
2246 @ CHECK: ssub8  r9, r2, r4              @ encoding: [0xc2,0xfa,0x04,0xf9]
2247 @ CHECK: ite    ne                      @ encoding: [0x14,0xbf]
2248 @ CHECK: ssub16ne       r5, r3, r2      @ encoding: [0xd3,0xfa,0x02,0xf5]
2249 @ CHECK: ssub8eq        r5, r1, r2      @ encoding: [0xc1,0xfa,0x02,0xf5]
2250
2251
2252 @------------------------------------------------------------------------------
2253 @ STC{L}/STC2{L}
2254 @------------------------------------------------------------------------------
2255         stc2 p0, c8, [r1, #4]
2256         stc2 p1, c7, [r2]
2257         stc2 p2, c6, [r3, #-224]
2258         stc2 p3, c5, [r4, #-120]!
2259         stc2 p4, c4, [r5], #16
2260         stc2 p5, c3, [r6], #-72
2261         stc2l p6, c2, [r7, #4]
2262         stc2l p7, c1, [r8]
2263         stc2l p8, c0, [r9, #-224]
2264         stc2l p9, c1, [r10, #-120]!
2265         stc2l p10, c2, [r11], #16
2266         stc2l p11, c3, [r12], #-72
2267
2268         stc p12, c4, [r0, #4]
2269         stc p13, c5, [r1]
2270         stc p14, c6, [r2, #-224]
2271         stc p15, c7, [r3, #-120]!
2272         stc p5, c8, [r4], #16
2273         stc p4, c9, [r5], #-72
2274         stcl p3, c10, [r6, #4]
2275         stcl p2, c11, [r7]
2276         stcl p1, c12, [r8, #-224]
2277         stcl p0, c13, [r9, #-120]!
2278         stcl p6, c14, [r10], #16
2279         stcl p7, c15, [r11], #-72
2280
2281         stc2 p2, c8, [r1], { 25 }
2282
2283 @ CHECK: stc2   p0, c8, [r1, #4]        @ encoding: [0x81,0xfd,0x01,0x80]
2284 @ CHECK: stc2   p1, c7, [r2]            @ encoding: [0x82,0xfd,0x00,0x71]
2285 @ CHECK: stc2   p2, c6, [r3, #-224]     @ encoding: [0x03,0xfd,0x38,0x62]
2286 @ CHECK: stc2   p3, c5, [r4, #-120]!    @ encoding: [0x24,0xfd,0x1e,0x53]
2287 @ CHECK: stc2   p4, c4, [r5], #16       @ encoding: [0xa5,0xfc,0x04,0x44]
2288 @ CHECK: stc2   p5, c3, [r6], #-72      @ encoding: [0x26,0xfc,0x12,0x35]
2289 @ CHECK: stc2l  p6, c2, [r7, #4]        @ encoding: [0xc7,0xfd,0x01,0x26]
2290 @ CHECK: stc2l  p7, c1, [r8]            @ encoding: [0xc8,0xfd,0x00,0x17]
2291 @ CHECK: stc2l  p8, c0, [r9, #-224]     @ encoding: [0x49,0xfd,0x38,0x08]
2292 @ CHECK: stc2l  p9, c1, [r10, #-120]!   @ encoding: [0x6a,0xfd,0x1e,0x19]
2293 @ CHECK: stc2l  p10, c2, [r11], #16     @ encoding: [0xeb,0xfc,0x04,0x2a]
2294 @ CHECK: stc2l  p11, c3, [r12], #-72    @ encoding: [0x6c,0xfc,0x12,0x3b]
2295
2296 @ CHECK: stc    p12, c4, [r0, #4]       @ encoding: [0x80,0xed,0x01,0x4c]
2297 @ CHECK: stc    p13, c5, [r1]           @ encoding: [0x81,0xed,0x00,0x5d]
2298 @ CHECK: stc    p14, c6, [r2, #-224]    @ encoding: [0x02,0xed,0x38,0x6e]
2299 @ CHECK: stc    p15, c7, [r3, #-120]!   @ encoding: [0x23,0xed,0x1e,0x7f]
2300 @ CHECK: stc    p5, c8, [r4], #16       @ encoding: [0xa4,0xec,0x04,0x85]
2301 @ CHECK: stc    p4, c9, [r5], #-72      @ encoding: [0x25,0xec,0x12,0x94]
2302 @ CHECK: stcl   p3, c10, [r6, #4]       @ encoding: [0xc6,0xed,0x01,0xa3]
2303 @ CHECK: stcl   p2, c11, [r7]           @ encoding: [0xc7,0xed,0x00,0xb2]
2304 @ CHECK: stcl   p1, c12, [r8, #-224]    @ encoding: [0x48,0xed,0x38,0xc1]
2305 @ CHECK: stcl   p0, c13, [r9, #-120]!   @ encoding: [0x69,0xed,0x1e,0xd0]
2306 @ CHECK: stcl   p6, c14, [r10], #16     @ encoding: [0xea,0xec,0x04,0xe6]
2307 @ CHECK: stcl   p7, c15, [r11], #-72    @ encoding: [0x6b,0xec,0x12,0xf7]
2308
2309 @ CHECK: stc2   p2, c8, [r1], {25}      @ encoding: [0x81,0xfc,0x19,0x82]
2310
2311
2312 @------------------------------------------------------------------------------
2313 @ STMIA
2314 @------------------------------------------------------------------------------
2315         stmia.w r4, {r4, r5, r8, r9}
2316         stmia.w r4, {r5, r6}
2317         stmia.w r5!, {r3, r8}
2318         stm.w r4, {r4, r5, r8, r9}
2319         stm.w r4, {r5, r6}
2320         stm.w r5!, {r3, r8}
2321         stm.w r5!, {r1, r2}
2322         stm.w r2, {r1, r2}
2323
2324         stmia r4, {r4, r5, r8, r9}
2325         stmia r4, {r5, r6}
2326         stmia r5!, {r3, r8}
2327         stm r4, {r4, r5, r8, r9}
2328         stm r4, {r5, r6}
2329         stm r5!, {r3, r8}
2330         stmea r5!, {r3, r8}
2331
2332 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2333 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2334 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2335 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2336 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2337 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2338 @ CHECK: stm.w  r5!, {r1, r2}           @ encoding: [0xa5,0xe8,0x06,0x00]
2339 @ CHECK: stm.w  r2, {r1, r2}            @ encoding: [0x82,0xe8,0x06,0x00]
2340
2341 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2342 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2343 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
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  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2348
2349
2350 @------------------------------------------------------------------------------
2351 @ STMDB
2352 @------------------------------------------------------------------------------
2353         stmdb r4, {r4, r5, r8, r9}
2354         stmdb r4, {r5, r6}
2355         stmdb r5!, {r3, r8}
2356         stmea r5!, {r3, r8}
2357         stmdb.w r5, {r0, r1}
2358
2359 @ CHECK: stmdb  r4, {r4, r5, r8, r9}    @ encoding: [0x04,0xe9,0x30,0x03]
2360 @ CHECK: stmdb  r4, {r5, r6}            @ encoding: [0x04,0xe9,0x60,0x00]
2361 @ CHECK: stmdb  r5!, {r3, r8}           @ encoding: [0x25,0xe9,0x08,0x01]
2362 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2363 @ CHECK: stmdb  r5, {r0, r1}            @ encoding: [0x05,0xe9,0x03,0x00]
2364
2365
2366 @------------------------------------------------------------------------------
2367 @ STR(immediate)
2368 @------------------------------------------------------------------------------
2369         str r5, [r5, #-4]
2370         str r5, [r6, #32]
2371         str r5, [r6, #33]
2372         str r5, [r6, #257]
2373         str.w pc, [r7, #257]
2374         str r2, [r4, #255]!
2375         str r8, [sp, #4]!
2376         str lr, [sp, #-4]!
2377         str r2, [r4], #255
2378         str r8, [sp], #4
2379         str lr, [sp], #-4
2380
2381 @ CHECK: str    r5, [r5, #-4]           @ encoding: [0x45,0xf8,0x04,0x5c]
2382 @ CHECK: str    r5, [r6, #32]           @ encoding: [0x35,0x62]
2383 @ CHECK: str.w  r5, [r6, #33]           @ encoding: [0xc6,0xf8,0x21,0x50]
2384 @ CHECK: str.w  r5, [r6, #257]          @ encoding: [0xc6,0xf8,0x01,0x51]
2385 @ CHECK: str.w  pc, [r7, #257]          @ encoding: [0xc7,0xf8,0x01,0xf1]
2386 @ CHECK: str    r2, [r4, #255]!         @ encoding: [0x44,0xf8,0xff,0x2f]
2387 @ CHECK: str    r8, [sp, #4]!           @ encoding: [0x4d,0xf8,0x04,0x8f]
2388 @ CHECK: str    lr, [sp, #-4]!          @ encoding: [0x4d,0xf8,0x04,0xed]
2389 @ CHECK: str    r2, [r4], #255          @ encoding: [0x44,0xf8,0xff,0x2b]
2390 @ CHECK: str    r8, [sp], #4            @ encoding: [0x4d,0xf8,0x04,0x8b]
2391 @ CHECK: str    lr, [sp], #-4           @ encoding: [0x4d,0xf8,0x04,0xe9]
2392
2393
2394 @------------------------------------------------------------------------------
2395 @ STR(register)
2396 @------------------------------------------------------------------------------
2397         str r1, [r8, r1]
2398         str.w r4, [r5, r2]
2399         str r6, [r0, r2, lsl #3]
2400         str r8, [r8, r2, lsl #2]
2401         str r7, [sp, r2, lsl #1]
2402         str r7, [sp, r2, lsl #0]
2403
2404 @ CHECK: str.w  r1, [r8, r1]            @ encoding: [0x48,0xf8,0x01,0x10]
2405 @ CHECK: str.w  r4, [r5, r2]            @ encoding: [0x45,0xf8,0x02,0x40]
2406 @ CHECK: str.w  r6, [r0, r2, lsl #3]    @ encoding: [0x40,0xf8,0x32,0x60]
2407 @ CHECK: str.w  r8, [r8, r2, lsl #2]    @ encoding: [0x48,0xf8,0x22,0x80]
2408 @ CHECK: str.w  r7, [sp, r2, lsl #1]    @ encoding: [0x4d,0xf8,0x12,0x70]
2409 @ CHECK: str.w  r7, [sp, r2]            @ encoding: [0x4d,0xf8,0x02,0x70]
2410
2411
2412 @------------------------------------------------------------------------------
2413 @ STRB(immediate)
2414 @------------------------------------------------------------------------------
2415         strb r5, [r5, #-4]
2416         strb r5, [r6, #32]
2417         strb r5, [r6, #33]
2418         strb r5, [r6, #257]
2419         strb.w lr, [r7, #257]
2420         strb r5, [r8, #255]!
2421         strb r2, [r5, #4]!
2422         strb r1, [r4, #-4]!
2423         strb lr, [r3], #255
2424         strb r9, [r2], #4
2425         strb r3, [sp], #-4
2426         strb r4, [r8, #-0]!
2427
2428 @ CHECK: strb   r5, [r5, #-4]           @ encoding: [0x05,0xf8,0x04,0x5c]
2429 @ CHECK: strb.w r5, [r6, #32]           @ encoding: [0x86,0xf8,0x20,0x50]
2430 @ CHECK: strb.w r5, [r6, #33]           @ encoding: [0x86,0xf8,0x21,0x50]
2431 @ CHECK: strb.w r5, [r6, #257]          @ encoding: [0x86,0xf8,0x01,0x51]
2432 @ CHECK: strb.w lr, [r7, #257]          @ encoding: [0x87,0xf8,0x01,0xe1]
2433 @ CHECK: strb   r5, [r8, #255]!         @ encoding: [0x08,0xf8,0xff,0x5f]
2434 @ CHECK: strb   r2, [r5, #4]!           @ encoding: [0x05,0xf8,0x04,0x2f]
2435 @ CHECK: strb   r1, [r4, #-4]!          @ encoding: [0x04,0xf8,0x04,0x1d]
2436 @ CHECK: strb   lr, [r3], #255          @ encoding: [0x03,0xf8,0xff,0xeb]
2437 @ CHECK: strb   r9, [r2], #4            @ encoding: [0x02,0xf8,0x04,0x9b]
2438 @ CHECK: strb   r3, [sp], #-4           @ encoding: [0x0d,0xf8,0x04,0x39]
2439 @ CHECK: strb   r4, [r8, #-0]!          @ encoding: [0x08,0xf8,0x00,0x4d]
2440
2441
2442 @------------------------------------------------------------------------------
2443 @ STRB(register)
2444 @------------------------------------------------------------------------------
2445         strb r1, [r8, r1]
2446         strb.w r4, [r5, r2]
2447         strb r6, [r0, r2, lsl #3]
2448         strb r8, [r8, r2, lsl #2]
2449         strb r7, [sp, r2, lsl #1]
2450         strb r7, [sp, r2, lsl #0]
2451
2452 @ CHECK: strb.w r1, [r8, r1]            @ encoding: [0x08,0xf8,0x01,0x10]
2453 @ CHECK: strb.w r4, [r5, r2]            @ encoding: [0x05,0xf8,0x02,0x40]
2454 @ CHECK: strb.w r6, [r0, r2, lsl #3]    @ encoding: [0x00,0xf8,0x32,0x60]
2455 @ CHECK: strb.w r8, [r8, r2, lsl #2]    @ encoding: [0x08,0xf8,0x22,0x80]
2456 @ CHECK: strb.w r7, [sp, r2, lsl #1]    @ encoding: [0x0d,0xf8,0x12,0x70]
2457 @ CHECK: strb.w r7, [sp, r2]            @ encoding: [0x0d,0xf8,0x02,0x70]
2458
2459
2460 @------------------------------------------------------------------------------
2461 @ STRBT
2462 @------------------------------------------------------------------------------
2463         strbt r1, [r2]
2464         strbt r1, [r8, #0]
2465         strbt r1, [r8, #3]
2466         strbt r1, [r8, #255]
2467
2468 @ CHECK: strbt  r1, [r2]                @ encoding: [0x02,0xf8,0x00,0x1e]
2469 @ CHECK: strbt  r1, [r8]                @ encoding: [0x08,0xf8,0x00,0x1e]
2470 @ CHECK: strbt  r1, [r8, #3]            @ encoding: [0x08,0xf8,0x03,0x1e]
2471 @ CHECK: strbt  r1, [r8, #255]          @ encoding: [0x08,0xf8,0xff,0x1e]
2472
2473
2474 @------------------------------------------------------------------------------
2475 @ STRD
2476 @------------------------------------------------------------------------------
2477         strd r3, r5, [r6, #24]
2478         strd r3, r5, [r6, #24]!
2479         strd r3, r5, [r6], #4
2480         strd r3, r5, [r6], #-8
2481         strd r3, r5, [r6]
2482         strd r8, r1, [r3, #0]
2483
2484 @ CHECK: strd   r3, r5, [r6, #24]       @ encoding: [0xc6,0xe9,0x06,0x35]
2485 @ CHECK: strd   r3, r5, [r6, #24]!      @ encoding: [0xe6,0xe9,0x06,0x35]
2486 @ CHECK: strd   r3, r5, [r6], #4        @ encoding: [0xe6,0xe8,0x01,0x35]
2487 @ CHECK: strd   r3, r5, [r6], #-8       @ encoding: [0x66,0xe8,0x02,0x35]
2488 @ CHECK: strd   r3, r5, [r6]            @ encoding: [0xc6,0xe9,0x00,0x35]
2489 @ CHECK: strd   r8, r1, [r3]            @ encoding: [0xc3,0xe9,0x00,0x81]
2490
2491
2492 @------------------------------------------------------------------------------
2493 @ STREX/STREXB/STREXH/STREXD
2494 @------------------------------------------------------------------------------
2495         strex r1, r8, [r4]
2496         strex r8, r2, [r4, #0]
2497         strex r2, r12, [sp, #128]
2498         strexb r5, r1, [r7]
2499         strexh r9, r7, [r12]
2500         strexd r9, r3, r6, [r4]
2501
2502 @ CHECK: strex  r1, r8, [r4]            @ encoding: [0x44,0xe8,0x00,0x81]
2503 @ CHECK: strex  r8, r2, [r4]            @ encoding: [0x44,0xe8,0x00,0x28]
2504 @ CHECK: strex  r2, r12, [sp, #128]     @ encoding: [0x4d,0xe8,0x20,0xc2]
2505 @ CHECK: strexb r5, r1, [r7]            @ encoding: [0xc7,0xe8,0x45,0x1f]
2506 @ CHECK: strexh r9, r7, [r12]           @ encoding: [0xcc,0xe8,0x59,0x7f]
2507 @ CHECK: strexd r9, r3, r6, [r4]        @ encoding: [0xc4,0xe8,0x79,0x36]
2508
2509
2510 @------------------------------------------------------------------------------
2511 @ STRH(immediate)
2512 @------------------------------------------------------------------------------
2513         strh r5, [r5, #-4]
2514         strh r5, [r6, #32]
2515         strh r5, [r6, #33]
2516         strh r5, [r6, #257]
2517         strh.w lr, [r7, #257]
2518         strh r5, [r8, #255]!
2519         strh r2, [r5, #4]!
2520         strh r1, [r4, #-4]!
2521         strh lr, [r3], #255
2522         strh r9, [r2], #4
2523         strh r3, [sp], #-4
2524
2525 @ CHECK: strh   r5, [r5, #-4]           @ encoding: [0x25,0xf8,0x04,0x5c]
2526 @ CHECK: strh   r5, [r6, #32]           @ encoding: [0x35,0x84]
2527 @ CHECK: strh.w r5, [r6, #33]           @ encoding: [0xa6,0xf8,0x21,0x50]
2528 @ CHECK: strh.w r5, [r6, #257]          @ encoding: [0xa6,0xf8,0x01,0x51]
2529 @ CHECK: strh.w lr, [r7, #257]          @ encoding: [0xa7,0xf8,0x01,0xe1]
2530 @ CHECK: strh   r5, [r8, #255]!         @ encoding: [0x28,0xf8,0xff,0x5f]
2531 @ CHECK: strh   r2, [r5, #4]!           @ encoding: [0x25,0xf8,0x04,0x2f]
2532 @ CHECK: strh   r1, [r4, #-4]!          @ encoding: [0x24,0xf8,0x04,0x1d]
2533 @ CHECK: strh   lr, [r3], #255          @ encoding: [0x23,0xf8,0xff,0xeb]
2534 @ CHECK: strh   r9, [r2], #4            @ encoding: [0x22,0xf8,0x04,0x9b]
2535 @ CHECK: strh   r3, [sp], #-4           @ encoding: [0x2d,0xf8,0x04,0x39]
2536
2537
2538 @------------------------------------------------------------------------------
2539 @ STRH(register)
2540 @------------------------------------------------------------------------------
2541         strh r1, [r8, r1]
2542         strh.w r4, [r5, r2]
2543         strh r6, [r0, r2, lsl #3]
2544         strh r8, [r8, r2, lsl #2]
2545         strh r7, [sp, r2, lsl #1]
2546         strh r7, [sp, r2, lsl #0]
2547
2548 @ CHECK: strh.w r1, [r8, r1]            @ encoding: [0x28,0xf8,0x01,0x10]
2549 @ CHECK: strh.w r4, [r5, r2]            @ encoding: [0x25,0xf8,0x02,0x40]
2550 @ CHECK: strh.w r6, [r0, r2, lsl #3]    @ encoding: [0x20,0xf8,0x32,0x60]
2551 @ CHECK: strh.w r8, [r8, r2, lsl #2]    @ encoding: [0x28,0xf8,0x22,0x80]
2552 @ CHECK: strh.w r7, [sp, r2, lsl #1]    @ encoding: [0x2d,0xf8,0x12,0x70]
2553 @ CHECK: strh.w r7, [sp, r2]            @ encoding: [0x2d,0xf8,0x02,0x70]
2554
2555
2556 @------------------------------------------------------------------------------
2557 @ STRHT
2558 @------------------------------------------------------------------------------
2559         strht r1, [r2]
2560         strht r1, [r8, #0]
2561         strht r1, [r8, #3]
2562         strht r1, [r8, #255]
2563
2564 @ CHECK: strht  r1, [r2]                @ encoding: [0x22,0xf8,0x00,0x1e]
2565 @ CHECK: strht  r1, [r8]                @ encoding: [0x28,0xf8,0x00,0x1e]
2566 @ CHECK: strht  r1, [r8, #3]            @ encoding: [0x28,0xf8,0x03,0x1e]
2567 @ CHECK: strht  r1, [r8, #255]          @ encoding: [0x28,0xf8,0xff,0x1e]
2568
2569
2570 @------------------------------------------------------------------------------
2571 @ STRT
2572 @------------------------------------------------------------------------------
2573         strt r1, [r2]
2574         strt r1, [r8, #0]
2575         strt r1, [r8, #3]
2576         strt r1, [r8, #255]
2577
2578 @ CHECK: strt   r1, [r2]                @ encoding: [0x42,0xf8,0x00,0x1e]
2579 @ CHECK: strt   r1, [r8]                @ encoding: [0x48,0xf8,0x00,0x1e]
2580 @ CHECK: strt   r1, [r8, #3]            @ encoding: [0x48,0xf8,0x03,0x1e]
2581 @ CHECK: strt   r1, [r8, #255]          @ encoding: [0x48,0xf8,0xff,0x1e]
2582
2583
2584 @------------------------------------------------------------------------------
2585 @ SUB (immediate)
2586 @------------------------------------------------------------------------------
2587         itet eq
2588         subeq r1, r2, #4
2589         subwne r5, r3, #1023
2590         subeq r4, r5, #293
2591         sub r2, sp, #1024
2592         sub r2, r8, #0xff00
2593         sub r2, r3, #257
2594         subw r2, r3, #257
2595         sub r12, r6, #0x100
2596         subw r12, r6, #0x100
2597         subs r1, r2, #0x1f0
2598         sub r2, #1
2599         sub r0, r0, #32
2600
2601 @ CHECK: itet   eq                      @ encoding: [0x0a,0xbf]
2602 @ CHECK: subeq  r1, r2, #4              @ encoding: [0x11,0x1f]
2603 @ CHECK: subwne r5, r3, #1023           @ encoding: [0xa3,0xf2,0xff,0x35]
2604 @ CHECK: subweq r4, r5, #293            @ encoding: [0xa5,0xf2,0x25,0x14]
2605 @ CHECK: sub.w  r2, sp, #1024           @ encoding: [0xad,0xf5,0x80,0x62]
2606 @ CHECK: sub.w  r2, r8, #65280          @ encoding: [0xa8,0xf5,0x7f,0x42]
2607 @ CHECK: subw   r2, r3, #257            @ encoding: [0xa3,0xf2,0x01,0x12]
2608 @ CHECK: subw   r2, r3, #257            @ encoding: [0xa3,0xf2,0x01,0x12]
2609 @ CHECK: sub.w  r12, r6, #256           @ encoding: [0xa6,0xf5,0x80,0x7c]
2610 @ CHECK: subw   r12, r6, #256           @ encoding: [0xa6,0xf2,0x00,0x1c]
2611 @ CHECK: subs.w r1, r2, #496            @ encoding: [0xb2,0xf5,0xf8,0x71]
2612 @ CHECK: sub.w  r2, r2, #1              @ encoding: [0xa2,0xf1,0x01,0x02]
2613 @ CHECK: sub.w  r0, r0, #32             @ encoding: [0xa0,0xf1,0x20,0x00]
2614
2615
2616 @------------------------------------------------------------------------------
2617 @ SUB (register)
2618 @------------------------------------------------------------------------------
2619         sub r4, r5, r6
2620         sub r4, r5, r6, lsl #5
2621         sub r4, r5, r6, lsr #5
2622         sub.w r4, r5, r6, lsr #5
2623         sub r4, r5, r6, asr #5
2624         sub r4, r5, r6, ror #5
2625         sub.w r5, r2, r12, rrx
2626
2627 @ CHECK: sub.w  r4, r5, r6              @ encoding: [0xa5,0xeb,0x06,0x04]
2628 @ CHECK: sub.w  r4, r5, r6, lsl #5      @ encoding: [0xa5,0xeb,0x46,0x14]
2629 @ CHECK: sub.w  r4, r5, r6, lsr #5      @ encoding: [0xa5,0xeb,0x56,0x14]
2630 @ CHECK: sub.w  r4, r5, r6, lsr #5      @ encoding: [0xa5,0xeb,0x56,0x14]
2631 @ CHECK: sub.w  r4, r5, r6, asr #5      @ encoding: [0xa5,0xeb,0x66,0x14]
2632 @ CHECK: sub.w  r4, r5, r6, ror #5      @ encoding: [0xa5,0xeb,0x76,0x14]
2633 @ CHECK: sub.w r5, r2, r12, rrx         @ encoding: [0xa2,0xeb,0x3c,0x05]
2634
2635
2636 @------------------------------------------------------------------------------
2637 @ SVC
2638 @------------------------------------------------------------------------------
2639         svc #0
2640         ite eq
2641         svceq #255
2642         swine #33
2643
2644 @ CHECK: svc    #0                      @ encoding: [0x00,0xdf]
2645 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
2646 @ CHECK: svceq  #255                    @ encoding: [0xff,0xdf]
2647 @ CHECK: svcne  #33                     @ encoding: [0x21,0xdf]
2648
2649
2650 @------------------------------------------------------------------------------
2651 @ SXTAB
2652 @------------------------------------------------------------------------------
2653         sxtab r2, r3, r4
2654         sxtab r4, r5, r6, ror #0
2655         it lt
2656         sxtablt r6, r2, r9, ror #8
2657         sxtab r5, r1, r4, ror #16
2658         sxtab r7, r8, r3, ror #24
2659
2660 @ CHECK: sxtab  r2, r3, r4              @ encoding: [0x43,0xfa,0x84,0xf2]
2661 @ CHECK: sxtab  r4, r5, r6              @ encoding: [0x45,0xfa,0x86,0xf4]
2662 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
2663 @ CHECK: sxtablt r6, r2, r9, ror #8     @ encoding: [0x42,0xfa,0x99,0xf6]
2664 @ CHECK: sxtab  r5, r1, r4, ror #16     @ encoding: [0x41,0xfa,0xa4,0xf5]
2665 @ CHECK: sxtab  r7, r8, r3, ror #24     @ encoding: [0x48,0xfa,0xb3,0xf7]
2666
2667
2668 @------------------------------------------------------------------------------
2669 @ SXTAB16
2670 @------------------------------------------------------------------------------
2671         sxtab16 r6, r2, r7, ror #0
2672         sxtab16 r3, r5, r8, ror #8
2673         sxtab16 r3, r2, r1, ror #16
2674         ite ne
2675         sxtab16ne r0, r1, r4
2676         sxtab16eq r1, r2, r3, ror #24
2677
2678 @ CHECK: sxtab16 r6, r2, r7             @ encoding: [0x22,0xfa,0x87,0xf6]
2679 @ CHECK: sxtab16 r3, r5, r8, ror #8     @ encoding: [0x25,0xfa,0x98,0xf3]
2680 @ CHECK: sxtab16 r3, r2, r1, ror #16    @ encoding: [0x22,0xfa,0xa1,0xf3]
2681 @ CHECK: ite    ne                      @ encoding: [0x14,0xbf]
2682 @ CHECK: sxtab16ne r0, r1, r4           @ encoding: [0x21,0xfa,0x84,0xf0]
2683 @ CHECK: sxtab16eq r1, r2, r3, ror #24  @ encoding: [0x22,0xfa,0xb3,0xf1]
2684
2685
2686 @------------------------------------------------------------------------------
2687 @ SXTAH
2688 @------------------------------------------------------------------------------
2689         sxtah r1, r3, r9
2690         sxtah r3, r8, r3, ror #8
2691         sxtah r9, r3, r3, ror #24
2692         ite hi
2693         sxtahhi r6, r1, r6, ror #0
2694         sxtahls r2, r2, r4, ror #16
2695
2696 @ CHECK: sxtah  r1, r3, r9              @ encoding: [0x03,0xfa,0x89,0xf1]
2697 @ CHECK: sxtah  r3, r8, r3, ror #8      @ encoding: [0x08,0xfa,0x93,0xf3]
2698 @ CHECK: sxtah  r9, r3, r3, ror #24     @ encoding: [0x03,0xfa,0xb3,0xf9]
2699 @ CHECK: ite    hi                      @ encoding: [0x8c,0xbf]
2700 @ CHECK: sxtahhi r6, r1, r6             @ encoding: [0x01,0xfa,0x86,0xf6]
2701 @ CHECK: sxtahls r2, r2, r4, ror #16    @ encoding: [0x02,0xfa,0xa4,0xf2]
2702
2703
2704 @------------------------------------------------------------------------------
2705 @ SXTB
2706 @------------------------------------------------------------------------------
2707         sxtb r5, r6, ror #0
2708         sxtb r6, r9, ror #8
2709         sxtb r8, r3, ror #24
2710         ite ge
2711         sxtbge r2, r4
2712         sxtblt r5, r1, ror #16
2713         sxtb.w  r7, r8
2714
2715 @ CHECK: sxtb   r5, r6                  @ encoding: [0x75,0xb2]
2716 @ CHECK: sxtb.w r6, r9, ror #8          @ encoding: [0x4f,0xfa,0x99,0xf6]
2717 @ CHECK: sxtb.w r8, r3, ror #24         @ encoding: [0x4f,0xfa,0xb3,0xf8]
2718 @ CHECK: ite    ge                      @ encoding: [0xac,0xbf]
2719 @ CHECK: sxtbge r2, r4                  @ encoding: [0x62,0xb2]
2720 @ CHECK: sxtblt.w       r5, r1, ror #16 @ encoding: [0x4f,0xfa,0xa1,0xf5]
2721 @ CHECK: sxtb.w r7, r8                  @ encoding: [0x4f,0xfa,0x88,0xf7]
2722
2723
2724 @------------------------------------------------------------------------------
2725 @ SXTB16
2726 @------------------------------------------------------------------------------
2727         sxtb16 r1, r4
2728         sxtb16 r6, r7, ror #0
2729         sxtb16 r3, r1, ror #16
2730         ite cs
2731         sxtb16cs r3, r5, ror #8
2732         sxtb16lo r2, r3, ror #24
2733
2734 @ CHECK: sxtb16 r1, r4                  @ encoding: [0x2f,0xfa,0x84,0xf1]
2735 @ CHECK: sxtb16 r6, r7                  @ encoding: [0x2f,0xfa,0x87,0xf6]
2736 @ CHECK: sxtb16 r3, r1, ror #16         @ encoding: [0x2f,0xfa,0xa1,0xf3]
2737 @ CHECK: ite    hs                      @ encoding: [0x2c,0xbf]
2738 @ CHECK: sxtb16hs       r3, r5, ror #8  @ encoding: [0x2f,0xfa,0x95,0xf3]
2739 @ CHECK: sxtb16lo       r2, r3, ror #24 @ encoding: [0x2f,0xfa,0xb3,0xf2]
2740
2741
2742 @------------------------------------------------------------------------------
2743 @ SXTH
2744 @------------------------------------------------------------------------------
2745         sxth r1, r6, ror #0
2746         sxth r3, r8, ror #8
2747         sxth r9, r3, ror #24
2748         itt ne
2749         sxthne r3, r9
2750         sxthne r2, r2, ror #16
2751         sxth.w  r7, r8
2752
2753 @ CHECK: sxth   r1, r6                  @ encoding: [0x31,0xb2]
2754 @ CHECK: sxth.w r3, r8, ror #8          @ encoding: [0x0f,0xfa,0x98,0xf3]
2755 @ CHECK: sxth.w r9, r3, ror #24         @ encoding: [0x0f,0xfa,0xb3,0xf9]
2756 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
2757 @ CHECK: sxthne.w       r3, r9          @ encoding: [0x0f,0xfa,0x89,0xf3]
2758 @ CHECK: sxthne.w       r2, r2, ror #16 @ encoding: [0x0f,0xfa,0xa2,0xf2]
2759 @ CHECK: sxth.w r7, r8                  @ encoding: [0x0f,0xfa,0x88,0xf7]
2760
2761
2762 @------------------------------------------------------------------------------
2763 @ SXTB
2764 @------------------------------------------------------------------------------
2765         sxtb r5, r6, ror #0
2766         sxtb.w r6, r9, ror #8
2767         sxtb r8, r3, ror #24
2768         ite ge
2769         sxtbge r2, r4
2770         sxtblt r5, r1, ror #16
2771
2772 @ CHECK: sxtb   r5, r6                  @ encoding: [0x75,0xb2]
2773 @ CHECK: sxtb.w r6, r9, ror #8          @ encoding: [0x4f,0xfa,0x99,0xf6]
2774 @ CHECK: sxtb.w r8, r3, ror #24         @ encoding: [0x4f,0xfa,0xb3,0xf8]
2775 @ CHECK: ite    ge                      @ encoding: [0xac,0xbf]
2776 @ CHECK: sxtbge r2, r4                  @ encoding: [0x62,0xb2]
2777 @ CHECK: sxtblt.w       r5, r1, ror #16 @ encoding: [0x4f,0xfa,0xa1,0xf5]
2778
2779
2780 @------------------------------------------------------------------------------
2781 @ SXTB16
2782 @------------------------------------------------------------------------------
2783         sxtb16 r1, r4
2784         sxtb16 r6, r7, ror #0
2785         sxtb16 r3, r1, ror #16
2786         ite cs
2787         sxtb16cs r3, r5, ror #8
2788         sxtb16lo r2, r3, ror #24
2789
2790 @ CHECK: sxtb16 r1, r4                  @ encoding: [0x2f,0xfa,0x84,0xf1]
2791 @ CHECK: sxtb16 r6, r7                  @ encoding: [0x2f,0xfa,0x87,0xf6]
2792 @ CHECK: sxtb16 r3, r1, ror #16         @ encoding: [0x2f,0xfa,0xa1,0xf3]
2793 @ CHECK: ite    hs                      @ encoding: [0x2c,0xbf]
2794 @ CHECK: sxtb16hs       r3, r5, ror #8  @ encoding: [0x2f,0xfa,0x95,0xf3]
2795 @ CHECK: sxtb16lo       r2, r3, ror #24 @ encoding: [0x2f,0xfa,0xb3,0xf2]
2796
2797
2798 @------------------------------------------------------------------------------
2799 @ SXTH
2800 @------------------------------------------------------------------------------
2801         sxth r1, r6, ror #0
2802         sxth.w r3, r8, ror #8
2803         sxth r9, r3, ror #24
2804         itt ne
2805         sxthne r3, r9
2806         sxthne r2, r2, ror #16
2807
2808 @ CHECK: sxth   r1, r6                  @ encoding: [0x31,0xb2]
2809 @ CHECK: sxth.w r3, r8, ror #8          @ encoding: [0x0f,0xfa,0x98,0xf3]
2810 @ CHECK: sxth.w r9, r3, ror #24         @ encoding: [0x0f,0xfa,0xb3,0xf9]
2811 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
2812 @ CHECK: sxthne.w       r3, r9          @ encoding: [0x0f,0xfa,0x89,0xf3]
2813 @ CHECK: sxthne.w       r2, r2, ror #16 @ encoding: [0x0f,0xfa,0xa2,0xf2]
2814
2815
2816 @------------------------------------------------------------------------------
2817 @ TBB/TBH
2818 @------------------------------------------------------------------------------
2819         tbb [r3, r8]
2820         tbh [r3, r8, lsl #1]
2821         it eq
2822         tbbeq [r3, r8]
2823         it cs
2824         tbhcs [r3, r8, lsl #1]
2825
2826 @ CHECK: tbb    [r3, r8]                @ encoding: [0xd3,0xe8,0x08,0xf0]
2827 @ CHECK: tbh    [r3, r8, lsl #1]        @ encoding: [0xd3,0xe8,0x18,0xf0]
2828 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
2829 @ CHECK: tbbeq  [r3, r8]                @ encoding: [0xd3,0xe8,0x08,0xf0]
2830 @ CHECK: it     hs                      @ encoding: [0x28,0xbf]
2831 @ CHECK: tbhhs  [r3, r8, lsl #1]        @ encoding: [0xd3,0xe8,0x18,0xf0]
2832
2833
2834 @------------------------------------------------------------------------------
2835 @ TEQ
2836 @------------------------------------------------------------------------------
2837         teq r5, #0xf000
2838         teq r4, r5
2839         teq r4, r5, lsl #5
2840         teq r4, r5, lsr #5
2841         teq r4, r5, lsr #5
2842         teq r4, r5, asr #5
2843         teq r4, r5, ror #5
2844
2845 @ CHECK: teq.w  r5, #61440              @ encoding: [0x95,0xf4,0x70,0x4f]
2846 @ CHECK: teq.w  r4, r5                  @ encoding: [0x94,0xea,0x05,0x0f]
2847 @ CHECK: teq.w  r4, r5, lsl #5          @ encoding: [0x94,0xea,0x45,0x1f]
2848 @ CHECK: teq.w  r4, r5, lsr #5          @ encoding: [0x94,0xea,0x55,0x1f]
2849 @ CHECK: teq.w  r4, r5, lsr #5          @ encoding: [0x94,0xea,0x55,0x1f]
2850 @ CHECK: teq.w  r4, r5, asr #5          @ encoding: [0x94,0xea,0x65,0x1f]
2851 @ CHECK: teq.w  r4, r5, ror #5          @ encoding: [0x94,0xea,0x75,0x1f]
2852
2853
2854 @------------------------------------------------------------------------------
2855 @ TST
2856 @------------------------------------------------------------------------------
2857         tst r5, #0xf000
2858         tst r2, r5
2859         tst r3, r12, lsl #5
2860         tst r4, r11, lsr #4
2861         tst r5, r10, lsr #12
2862         tst r6, r9, asr #30
2863         tst r7, r8, ror #2
2864
2865 @ CHECK: tst.w  r5, #61440              @ encoding: [0x15,0xf4,0x70,0x4f]
2866 @ CHECK: tst    r2, r5                  @ encoding: [0x2a,0x42]
2867 @ CHECK: tst.w  r3, r12, lsl #5         @ encoding: [0x13,0xea,0x4c,0x1f]
2868 @ CHECK: tst.w  r4, r11, lsr #4         @ encoding: [0x14,0xea,0x1b,0x1f]
2869 @ CHECK: tst.w  r5, r10, lsr #12        @ encoding: [0x15,0xea,0x1a,0x3f]
2870 @ CHECK: tst.w  r6, r9, asr #30         @ encoding: [0x16,0xea,0xa9,0x7f]
2871 @ CHECK: tst.w  r7, r8, ror #2          @ encoding: [0x17,0xea,0xb8,0x0f]
2872
2873
2874 @------------------------------------------------------------------------------
2875 @ UADD16/UADD8
2876 @------------------------------------------------------------------------------
2877         uadd16 r1, r2, r3
2878         uadd8 r1, r2, r3
2879         ite gt
2880         uadd16gt r1, r2, r3
2881         uadd8le r1, r2, r3
2882
2883 @ CHECK: uadd16 r1, r2, r3              @ encoding: [0x92,0xfa,0x43,0xf1]
2884 @ CHECK: uadd8  r1, r2, r3              @ encoding: [0x82,0xfa,0x43,0xf1]
2885 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
2886 @ CHECK: uadd16gt       r1, r2, r3      @ encoding: [0x92,0xfa,0x43,0xf1]
2887 @ CHECK: uadd8le        r1, r2, r3      @ encoding: [0x82,0xfa,0x43,0xf1]
2888
2889
2890 @------------------------------------------------------------------------------
2891 @ UASX
2892 @------------------------------------------------------------------------------
2893         uasx r9, r12, r0
2894         it eq
2895         uasxeq r9, r12, r0
2896         uaddsubx r9, r12, r0
2897         it eq
2898         uaddsubxeq r9, r12, r0
2899
2900 @ CHECK: uasx   r9, r12, r0             @ encoding: [0xac,0xfa,0x40,0xf9]
2901 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
2902 @ CHECK: uasxeq r9, r12, r0             @ encoding: [0xac,0xfa,0x40,0xf9]
2903 @ CHECK: uasx   r9, r12, r0             @ encoding: [0xac,0xfa,0x40,0xf9]
2904 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
2905 @ CHECK: uasxeq r9, r12, r0             @ encoding: [0xac,0xfa,0x40,0xf9]
2906
2907
2908 @------------------------------------------------------------------------------
2909 @ UBFX
2910 @------------------------------------------------------------------------------
2911         ubfx r4, r5, #16, #1
2912         it gt
2913         ubfxgt r4, r5, #16, #16
2914
2915 @ CHECK: ubfx   r4, r5, #16, #1         @ encoding: [0xc5,0xf3,0x00,0x44]
2916 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
2917 @ CHECK: ubfxgt r4, r5, #16, #16        @ encoding: [0xc5,0xf3,0x0f,0x44]
2918
2919
2920 @------------------------------------------------------------------------------
2921 @ UHADD16/UHADD8
2922 @------------------------------------------------------------------------------
2923         uhadd16 r4, r8, r2
2924         uhadd8 r4, r8, r2
2925         itt gt
2926         uhadd16gt r4, r8, r2
2927         uhadd8gt r4, r8, r2
2928
2929 @ CHECK: uhadd16        r4, r8, r2      @ encoding: [0x98,0xfa,0x62,0xf4]
2930 @ CHECK: uhadd8 r4, r8, r2              @ encoding: [0x88,0xfa,0x62,0xf4]
2931 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
2932 @ CHECK: uhadd16gt      r4, r8, r2      @ encoding: [0x98,0xfa,0x62,0xf4]
2933 @ CHECK: uhadd8gt       r4, r8, r2      @ encoding: [0x88,0xfa,0x62,0xf4]
2934
2935
2936 @------------------------------------------------------------------------------
2937 @ UHASX/UHSAX
2938 @------------------------------------------------------------------------------
2939         uhasx r4, r1, r5
2940         uhsax r5, r6, r6
2941         itt gt
2942         uhasxgt r6, r9, r8
2943         uhsaxgt r7, r8, r12
2944         uhaddsubx r4, r1, r5
2945         uhsubaddx r5, r6, r6
2946         itt gt
2947         uhaddsubxgt r6, r9, r8
2948         uhsubaddxgt r7, r8, r12
2949
2950 @ CHECK: uhasx  r4, r1, r5              @ encoding: [0xa1,0xfa,0x65,0xf4]
2951 @ CHECK: uhsax  r5, r6, r6              @ encoding: [0xe6,0xfa,0x66,0xf5]
2952 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
2953 @ CHECK: uhasxgt r6, r9, r8             @ encoding: [0xa9,0xfa,0x68,0xf6]
2954 @ CHECK: uhsaxgt r7, r8, r12            @ encoding: [0xe8,0xfa,0x6c,0xf7]
2955 @ CHECK: uhasx  r4, r1, r5              @ encoding: [0xa1,0xfa,0x65,0xf4]
2956 @ CHECK: uhsax  r5, r6, r6              @ encoding: [0xe6,0xfa,0x66,0xf5]
2957 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
2958 @ CHECK: uhasxgt r6, r9, r8             @ encoding: [0xa9,0xfa,0x68,0xf6]
2959 @ CHECK: uhsaxgt r7, r8, r12            @ encoding: [0xe8,0xfa,0x6c,0xf7]
2960
2961
2962 @------------------------------------------------------------------------------
2963 @ UHSUB16/UHSUB8
2964 @------------------------------------------------------------------------------
2965         uhsub16 r5, r8, r3
2966         uhsub8 r1, r7, r6
2967         itt lt
2968         uhsub16lt r4, r9, r12
2969         uhsub8lt r3, r1, r5
2970
2971 @ CHECK: uhsub16        r5, r8, r3      @ encoding: [0xd8,0xfa,0x63,0xf5]
2972 @ CHECK: uhsub8 r1, r7, r6              @ encoding: [0xc7,0xfa,0x66,0xf1]
2973 @ CHECK: itt    lt                      @ encoding: [0xbc,0xbf]
2974 @ CHECK: uhsub16lt      r4, r9, r12     @ encoding: [0xd9,0xfa,0x6c,0xf4]
2975 @ CHECK: uhsub8lt       r3, r1, r5      @ encoding: [0xc1,0xfa,0x65,0xf3]
2976
2977
2978 @------------------------------------------------------------------------------
2979 @ UMAAL
2980 @------------------------------------------------------------------------------
2981         umaal r3, r4, r5, r6
2982         it lt
2983         umaallt r3, r4, r5, r6
2984
2985 @ CHECK: umaal  r3, r4, r5, r6          @ encoding: [0xe5,0xfb,0x66,0x34]
2986 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
2987 @ CHECK: umaallt        r3, r4, r5, r6  @ encoding: [0xe5,0xfb,0x66,0x34]
2988
2989
2990 @------------------------------------------------------------------------------
2991 @ UMLAL
2992 @------------------------------------------------------------------------------
2993         umlal r2, r4, r6, r8
2994         it gt
2995         umlalgt r6, r1, r2, r6
2996
2997 @ CHECK: umlal  r2, r4, r6, r8          @ encoding: [0xe6,0xfb,0x08,0x24]
2998 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
2999 @ CHECK: umlalgt        r6, r1, r2, r6  @ encoding: [0xe2,0xfb,0x06,0x61]
3000
3001
3002 @------------------------------------------------------------------------------
3003 @ UMULL
3004 @------------------------------------------------------------------------------
3005         umull r2, r4, r6, r8
3006         it gt
3007         umullgt r6, r1, r2, r6
3008
3009 @ CHECK: umull  r2, r4, r6, r8          @ encoding: [0xa6,0xfb,0x08,0x24]
3010 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
3011 @ CHECK: umullgt        r6, r1, r2, r6  @ encoding: [0xa2,0xfb,0x06,0x61]
3012
3013
3014 @------------------------------------------------------------------------------
3015 @ UQADD16/UQADD8
3016 @------------------------------------------------------------------------------
3017         uqadd16 r1, r2, r3
3018         uqadd8 r3, r4, r8
3019         ite gt
3020         uqadd16gt r4, r7, r9
3021         uqadd8le r8, r1, r2
3022
3023 @ CHECK: uqadd16        r1, r2, r3      @ encoding: [0x92,0xfa,0x53,0xf1]
3024 @ CHECK: uqadd8 r3, r4, r8              @ encoding: [0x84,0xfa,0x58,0xf3]
3025 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3026 @ CHECK: uqadd16gt      r4, r7, r9      @ encoding: [0x97,0xfa,0x59,0xf4]
3027 @ CHECK: uqadd8le       r8, r1, r2      @ encoding: [0x81,0xfa,0x52,0xf8]
3028
3029
3030 @------------------------------------------------------------------------------
3031 @ UQASX/UQSAX
3032 @------------------------------------------------------------------------------
3033         uqasx r1, r2, r3
3034         uqsax r3, r4, r8
3035         ite gt
3036         uqasxgt r4, r7, r9
3037         uqsaxle r8, r1, r2
3038
3039         uqaddsubx r1, r2, r3
3040         uqsubaddx r3, r4, r8
3041         ite gt
3042         uqaddsubxgt r4, r7, r9
3043         uqsubaddxle r8, r1, r2
3044
3045 @ CHECK: uqasx  r1, r2, r3              @ encoding: [0xa2,0xfa,0x53,0xf1]
3046 @ CHECK: uqsax  r3, r4, r8              @ encoding: [0xe4,0xfa,0x58,0xf3]
3047 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3048 @ CHECK: uqasxgt r4, r7, r9             @ encoding: [0xa7,0xfa,0x59,0xf4]
3049 @ CHECK: uqsaxle r8, r1, r2             @ encoding: [0xe1,0xfa,0x52,0xf8]
3050
3051 @ CHECK: uqasx  r1, r2, r3              @ encoding: [0xa2,0xfa,0x53,0xf1]
3052 @ CHECK: uqsax  r3, r4, r8              @ encoding: [0xe4,0xfa,0x58,0xf3]
3053 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3054 @ CHECK: uqasxgt r4, r7, r9             @ encoding: [0xa7,0xfa,0x59,0xf4]
3055 @ CHECK: uqsaxle r8, r1, r2             @ encoding: [0xe1,0xfa,0x52,0xf8]
3056
3057
3058 @------------------------------------------------------------------------------
3059 @ UQSUB16/UQSUB8
3060 @------------------------------------------------------------------------------
3061         uqsub8 r8, r2, r9
3062         uqsub16 r1, r9, r7
3063         ite gt
3064         uqsub8gt r3, r1, r6
3065         uqsub16le r4, r6, r4
3066
3067 @ CHECK: uqsub8 r8, r2, r9              @ encoding: [0xc2,0xfa,0x59,0xf8]
3068 @ CHECK: uqsub16 r1, r9, r7             @ encoding: [0xd9,0xfa,0x57,0xf1]
3069 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3070 @ CHECK: uqsub8gt       r3, r1, r6      @ encoding: [0xc1,0xfa,0x56,0xf3]
3071 @ CHECK: uqsub16le      r4, r6, r4      @ encoding: [0xd6,0xfa,0x54,0xf4]
3072
3073
3074 @------------------------------------------------------------------------------
3075 @ UQSUB16/UQSUB8
3076 @------------------------------------------------------------------------------
3077         usad8 r1, r9, r7
3078         usada8 r8, r2, r9, r12
3079         ite gt
3080         usada8gt r3, r1, r6, r9
3081         usad8le r4, r6, r4
3082
3083 @ CHECK: usad8  r1, r9, r7              @ encoding: [0x79,0xfb,0x07,0xf1]
3084 @ CHECK: usada8 r8, r2, r9, r12         @ encoding: [0x72,0xfb,0x09,0xc8]
3085 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3086 @ CHECK: usada8gt       r3, r1, r6, r9  @ encoding: [0x71,0xfb,0x06,0x93]
3087 @ CHECK: usad8le        r4, r6, r4      @ encoding: [0x76,0xfb,0x04,0xf4]
3088
3089
3090 @------------------------------------------------------------------------------
3091 @ USAT
3092 @------------------------------------------------------------------------------
3093         usat    r8, #1, r10
3094         usat    r8, #4, r10, lsl #0
3095         usat    r8, #5, r10, lsl #31
3096         usat    r8, #16, r10, asr #1
3097
3098 @ CHECK: usat   r8, #1, r10             @ encoding: [0x8a,0xf3,0x01,0x08]
3099 @ CHECK: usat   r8, #4, r10             @ encoding: [0x8a,0xf3,0x04,0x08]
3100 @ CHECK: usat   r8, #5, r10, lsl #31    @ encoding: [0x8a,0xf3,0xc5,0x78]
3101 @ CHECK: usat   r8, #16, r10, asr #1    @ encoding: [0xaa,0xf3,0x50,0x08]
3102
3103
3104 @------------------------------------------------------------------------------
3105 @ USAT16
3106 @------------------------------------------------------------------------------
3107         usat16  r2, #2, r7
3108         usat16  r3, #15, r5
3109
3110 @ CHECK: usat16 r2, #2, r7              @ encoding: [0xa7,0xf3,0x02,0x02]
3111 @ CHECK: usat16 r3, #15, r5             @ encoding: [0xa5,0xf3,0x0f,0x03]
3112
3113
3114 @------------------------------------------------------------------------------
3115 @ USAX
3116 @------------------------------------------------------------------------------
3117         usax r2, r3, r4
3118         it ne
3119         usaxne r6, r1, r9
3120         usubaddx r2, r3, r4
3121         it ne
3122         usubaddxne r6, r1, r9
3123
3124 @ CHECK: usax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x44,0xf2]
3125 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
3126 @ CHECK: usaxne r6, r1, r9              @ encoding: [0xe1,0xfa,0x49,0xf6]
3127 @ CHECK: usax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x44,0xf2]
3128 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
3129 @ CHECK: usaxne r6, r1, r9              @ encoding: [0xe1,0xfa,0x49,0xf6]
3130
3131
3132 @------------------------------------------------------------------------------
3133 @ USUB16/USUB8
3134 @------------------------------------------------------------------------------
3135         usub16 r4, r2, r7
3136         usub8 r1, r8, r5
3137         ite hi
3138         usub16hi r1, r1, r3
3139         usub8ls r9, r2, r3
3140
3141 @ CHECK: usub16 r4, r2, r7              @ encoding: [0xd2,0xfa,0x47,0xf4]
3142 @ CHECK: usub8  r1, r8, r5              @ encoding: [0xc8,0xfa,0x45,0xf1]
3143 @ CHECK: ite    hi                      @ encoding: [0x8c,0xbf]
3144 @ CHECK: usub16hi       r1, r1, r3      @ encoding: [0xd1,0xfa,0x43,0xf1]
3145 @ CHECK: usub8ls        r9, r2, r3      @ encoding: [0xc2,0xfa,0x43,0xf9]
3146
3147
3148 @------------------------------------------------------------------------------
3149 @ UXTAB
3150 @------------------------------------------------------------------------------
3151         uxtab r2, r3, r4
3152         uxtab r4, r5, r6, ror #0
3153         it lt
3154         uxtablt r6, r2, r9, ror #8
3155         uxtab r5, r1, r4, ror #16
3156         uxtab r7, r8, r3, ror #24
3157
3158 @ CHECK: uxtab  r2, r3, r4              @ encoding: [0x53,0xfa,0x84,0xf2]
3159 @ CHECK: uxtab  r4, r5, r6              @ encoding: [0x55,0xfa,0x86,0xf4]
3160 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
3161 @ CHECK: uxtablt r6, r2, r9, ror #8     @ encoding: [0x52,0xfa,0x99,0xf6]
3162 @ CHECK: uxtab  r5, r1, r4, ror #16     @ encoding: [0x51,0xfa,0xa4,0xf5]
3163 @ CHECK: uxtab  r7, r8, r3, ror #24     @ encoding: [0x58,0xfa,0xb3,0xf7]
3164
3165
3166 @------------------------------------------------------------------------------
3167 @ UXTAB16
3168 @------------------------------------------------------------------------------
3169         it ge
3170         uxtab16ge r0, r1, r4
3171         uxtab16 r6, r2, r7, ror #0
3172         uxtab16 r3, r5, r8, ror #8
3173         uxtab16 r3, r2, r1, ror #16
3174         it eq
3175         uxtab16eq r1, r2, r3, ror #24
3176
3177 @ CHECK: it     ge                      @ encoding: [0xa8,0xbf]
3178 @ CHECK: uxtab16ge      r0, r1, r4      @ encoding: [0x31,0xfa,0x84,0xf0]
3179 @ CHECK: uxtab16 r6, r2, r7             @ encoding: [0x32,0xfa,0x87,0xf6]
3180 @ CHECK: uxtab16 r3, r5, r8, ror #8     @ encoding: [0x35,0xfa,0x98,0xf3]
3181 @ CHECK: uxtab16 r3, r2, r1, ror #16    @ encoding: [0x32,0xfa,0xa1,0xf3]
3182 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
3183 @ CHECK: uxtab16eq r1, r2, r3, ror #24  @ encoding: [0x32,0xfa,0xb3,0xf1]
3184
3185
3186 @------------------------------------------------------------------------------
3187 @ UXTAH
3188 @------------------------------------------------------------------------------
3189         uxtah r1, r3, r9
3190         it hi
3191         uxtahhi r6, r1, r6, ror #0
3192         uxtah r3, r8, r3, ror #8
3193         it lo
3194         uxtahlo r2, r2, r4, ror #16
3195         uxtah r9, r3, r3, ror #24
3196
3197 @ CHECK: uxtah  r1, r3, r9              @ encoding: [0x13,0xfa,0x89,0xf1]
3198 @ CHECK: it     hi                      @ encoding: [0x88,0xbf]
3199 @ CHECK: uxtahhi r6, r1, r6             @ encoding: [0x11,0xfa,0x86,0xf6]
3200 @ CHECK: uxtah  r3, r8, r3, ror #8      @ encoding: [0x18,0xfa,0x93,0xf3]
3201 @ CHECK: it     lo                      @ encoding: [0x38,0xbf]
3202 @ CHECK: uxtahlo r2, r2, r4, ror #16    @ encoding: [0x12,0xfa,0xa4,0xf2]
3203 @ CHECK: uxtah  r9, r3, r3, ror #24     @ encoding: [0x13,0xfa,0xb3,0xf9]
3204
3205
3206 @------------------------------------------------------------------------------
3207 @ UXTB
3208 @------------------------------------------------------------------------------
3209         it ge
3210         uxtbge r2, r4
3211         uxtb r5, r6, ror #0
3212         uxtb r6, r9, ror #8
3213         it cc
3214         uxtbcc r5, r1, ror #16
3215         uxtb r8, r3, ror #24
3216         uxtb.w  r7, r8
3217
3218 @ CHECK: it     ge                      @ encoding: [0xa8,0xbf]
3219 @ CHECK: uxtbge r2, r4                  @ encoding: [0xe2,0xb2]
3220 @ CHECK: uxtb   r5, r6                  @ encoding: [0xf5,0xb2]
3221 @ CHECK: uxtb.w r6, r9, ror #8          @ encoding: [0x5f,0xfa,0x99,0xf6]
3222 @ CHECK: it     lo                      @ encoding: [0x38,0xbf]
3223 @ CHECK: uxtblo.w       r5, r1, ror #16 @ encoding: [0x5f,0xfa,0xa1,0xf5]
3224 @ CHECK: uxtb.w r8, r3, ror #24         @ encoding: [0x5f,0xfa,0xb3,0xf8]
3225 @ CHECK: uxtb.w r7, r8                  @ encoding: [0x5f,0xfa,0x88,0xf7]
3226
3227
3228 @------------------------------------------------------------------------------
3229 @ UXTB16
3230 @------------------------------------------------------------------------------
3231         uxtb16 r1, r4
3232         uxtb16 r6, r7, ror #0
3233         it cs
3234         uxtb16cs r3, r5, ror #8
3235         uxtb16 r3, r1, ror #16
3236         it ge
3237         uxtb16ge r2, r3, ror #24
3238
3239 @ CHECK: uxtb16 r1, r4                  @ encoding: [0x3f,0xfa,0x84,0xf1]
3240 @ CHECK: uxtb16 r6, r7                  @ encoding: [0x3f,0xfa,0x87,0xf6]
3241 @ CHECK: it     hs                      @ encoding: [0x28,0xbf]
3242 @ CHECK: uxtb16hs       r3, r5, ror #8  @ encoding: [0x3f,0xfa,0x95,0xf3]
3243 @ CHECK: uxtb16 r3, r1, ror #16         @ encoding: [0x3f,0xfa,0xa1,0xf3]
3244 @ CHECK: it     ge                      @ encoding: [0xa8,0xbf]
3245 @ CHECK: uxtb16ge       r2, r3, ror #24 @ encoding: [0x3f,0xfa,0xb3,0xf2]
3246
3247
3248 @------------------------------------------------------------------------------
3249 @ UXTH
3250 @------------------------------------------------------------------------------
3251         it ne
3252         uxthne r3, r9
3253         uxth r1, r6, ror #0
3254         uxth r3, r8, ror #8
3255         it le
3256         uxthle r2, r2, ror #16
3257         uxth r9, r3, ror #24
3258         uxth.w  r7, r8
3259
3260 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
3261 @ CHECK: uxthne.w       r3, r9          @ encoding: [0x1f,0xfa,0x89,0xf3]
3262 @ CHECK: uxth   r1, r6                  @ encoding: [0xb1,0xb2]
3263 @ CHECK: uxth.w r3, r8, ror #8          @ encoding: [0x1f,0xfa,0x98,0xf3]
3264 @ CHECK: it     le                      @ encoding: [0xd8,0xbf]
3265 @ CHECK: uxthle.w       r2, r2, ror #16 @ encoding: [0x1f,0xfa,0xa2,0xf2]
3266 @ CHECK: uxth.w r9, r3, ror #24         @ encoding: [0x1f,0xfa,0xb3,0xf9]
3267 @ CHECK: uxth.w r7, r8                  @ encoding: [0x1f,0xfa,0x88,0xf7]
3268
3269 @------------------------------------------------------------------------------
3270 @ WFE/WFI/YIELD
3271 @------------------------------------------------------------------------------
3272         wfe
3273         wfi
3274         yield
3275         itet lt
3276         wfelt
3277         wfige
3278         yieldlt
3279
3280 @ CHECK: wfe                            @ encoding: [0x20,0xbf]
3281 @ CHECK: wfi                            @ encoding: [0x30,0xbf]
3282 @ CHECK: yield                          @ encoding: [0x10,0xbf]
3283 @ CHECK: itet   lt                      @ encoding: [0xb6,0xbf]
3284 @ CHECK: wfelt                          @ encoding: [0x20,0xbf]
3285 @ CHECK: wfige                          @ encoding: [0x30,0xbf]
3286 @ CHECK: yieldlt                        @ encoding: [0x10,0xbf]