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