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