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