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