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