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