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