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