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