ARM: Prevent ARMAsmParser::shouldOmitCCOutOperand() from misidentifying certain Thumb...
[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
1603 @ CHECK: pli    [r5, #-4]               @ encoding: [0x15,0xf9,0x04,0xfc]
1604 @ CHECK: pli    [r6, #32]               @ encoding: [0x96,0xf9,0x20,0xf0]
1605 @ CHECK: pli    [r6, #33]               @ encoding: [0x96,0xf9,0x21,0xf0]
1606 @ CHECK: pli    [r6, #257]              @ encoding: [0x96,0xf9,0x01,0xf1]
1607 @ CHECK: pli    [r7, #257]              @ encoding: [0x97,0xf9,0x01,0xf1]
1608
1609
1610 @------------------------------------------------------------------------------
1611 @ PLI(literal)
1612 @------------------------------------------------------------------------------
1613 @        pli  _foo
1614
1615
1616 @ FIXME: pli    _foo                    @ encoding: [0x9f'A',0xf9'A',A,0xf0'A']
1617            @   fixup A - offset: 0, value: _foo, kind: fixup_t2_ldst_pcrel_12
1618
1619
1620 @------------------------------------------------------------------------------
1621 @ PLI(register)
1622 @------------------------------------------------------------------------------
1623         pli [r8, r1]
1624         pli [r5, r2]
1625         pli [r0, r2, lsl #3]
1626         pli [r8, r2, lsl #2]
1627         pli [sp, r2, lsl #1]
1628         pli [sp, r2, lsl #0]
1629
1630 @ CHECK: pli    [r8, r1]                @ encoding: [0x18,0xf9,0x01,0xf0]
1631 @ CHECK: pli    [r5, r2]                @ encoding: [0x15,0xf9,0x02,0xf0]
1632 @ CHECK: pli    [r0, r2, lsl #3]        @ encoding: [0x10,0xf9,0x32,0xf0]
1633 @ CHECK: pli    [r8, r2, lsl #2]        @ encoding: [0x18,0xf9,0x22,0xf0]
1634 @ CHECK: pli    [sp, r2, lsl #1]        @ encoding: [0x1d,0xf9,0x12,0xf0]
1635 @ CHECK: pli    [sp, r2]                @ encoding: [0x1d,0xf9,0x02,0xf0]
1636
1637 @------------------------------------------------------------------------------
1638 @ POP (alias)
1639 @------------------------------------------------------------------------------
1640         pop {r2, r9}
1641
1642 @ CHECK: pop.w  {r2, r9}                @ encoding: [0xbd,0xe8,0x04,0x02]
1643
1644
1645 @------------------------------------------------------------------------------
1646 @ PUSH (alias)
1647 @------------------------------------------------------------------------------
1648         push {r2, r9}
1649
1650 @ CHECK: push.w {r2, r9}                @ encoding: [0x2d,0xe9,0x04,0x02]
1651
1652
1653 @------------------------------------------------------------------------------
1654 @ QADD/QADD16/QADD8
1655 @------------------------------------------------------------------------------
1656         qadd r1, r2, r3
1657         qadd16 r1, r2, r3
1658         qadd8 r1, r2, r3
1659         itte gt
1660         qaddgt r1, r2, r3
1661         qadd16gt r1, r2, r3
1662         qadd8le r1, r2, r3
1663
1664 @ CHECK: qadd   r1, r2, r3              @ encoding: [0x83,0xfa,0x82,0xf1]
1665 @ CHECK: qadd16 r1, r2, r3              @ encoding: [0x92,0xfa,0x13,0xf1]
1666 @ CHECK: qadd8  r1, r2, r3              @ encoding: [0x82,0xfa,0x13,0xf1]
1667 @ CHECK: itte   gt                      @ encoding: [0xc6,0xbf]
1668 @ CHECK: qaddgt r1, r2, r3              @ encoding: [0x83,0xfa,0x82,0xf1]
1669 @ CHECK: qadd16gt r1, r2, r3            @ encoding: [0x92,0xfa,0x13,0xf1]
1670 @ CHECK: qadd8le r1, r2, r3             @ encoding: [0x82,0xfa,0x13,0xf1]
1671
1672
1673 @------------------------------------------------------------------------------
1674 @ QDADD/QDSUB
1675 @------------------------------------------------------------------------------
1676         qdadd r6, r7, r8
1677         qdsub r6, r7, r8
1678         itt hi
1679         qdaddhi r6, r7, r8
1680         qdsubhi r6, r7, r8
1681
1682 @ CHECK: qdadd  r6, r7, r8              @ encoding: [0x88,0xfa,0x97,0xf6]
1683 @ CHECK: qdsub  r6, r7, r8              @ encoding: [0x88,0xfa,0xb7,0xf6]
1684 @ CHECK: itt    hi                      @ encoding: [0x84,0xbf]
1685 @ CHECK: qdaddhi r6, r7, r8             @ encoding: [0x88,0xfa,0x97,0xf6]
1686 @ CHECK: qdsubhi r6, r7, r8             @ encoding: [0x88,0xfa,0xb7,0xf6]
1687
1688
1689 @------------------------------------------------------------------------------
1690 @ QSAX
1691 @------------------------------------------------------------------------------
1692         qsax r9, r12, r0
1693         it eq
1694         qsaxeq r9, r12, r0
1695
1696 @ CHECK: qsax   r9, r12, r0             @ encoding: [0xec,0xfa,0x10,0xf9]
1697 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1698 @ CHECK: qsaxeq r9, r12, r0             @ encoding: [0xec,0xfa,0x10,0xf9]
1699
1700
1701 @------------------------------------------------------------------------------
1702 @ QSUB/QSUB16/QSUB8
1703 @------------------------------------------------------------------------------
1704         qsub r1, r2, r3
1705         qsub16 r1, r2, r3
1706         qsub8 r1, r2, r3
1707         itet le
1708         qsuble r1, r2, r3
1709         qsub16gt r1, r2, r3
1710         qsub8le r1, r2, r3
1711
1712 @ CHECK: qsub   r1, r2, r3              @ encoding: [0x83,0xfa,0xa2,0xf1]
1713 @ CHECK: qsub16 r1, r2, r3              @ encoding: [0xd2,0xfa,0x13,0xf1]
1714 @ CHECK: qsub8  r1, r2, r3              @ encoding: [0xc2,0xfa,0x13,0xf1]
1715 @ CHECK: itet   le                      @ encoding: [0xd6,0xbf]
1716 @ CHECK: qsuble r1, r2, r3              @ encoding: [0x83,0xfa,0xa2,0xf1]
1717 @ CHECK: qsub16gt       r1, r2, r3      @ encoding: [0xd2,0xfa,0x13,0xf1]
1718 @ CHECK: qsub8le r1, r2, r3             @ encoding: [0xc2,0xfa,0x13,0xf1]
1719
1720
1721 @------------------------------------------------------------------------------
1722 @ RBIT
1723 @------------------------------------------------------------------------------
1724         rbit r1, r2
1725         it ne
1726         rbitne r1, r2
1727
1728 @ CHECK: rbit   r1, r2                  @ encoding: [0x92,0xfa,0xa2,0xf1]
1729 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1730 @ CHECK: rbitne r1, r2                  @ encoding: [0x92,0xfa,0xa2,0xf1]
1731
1732
1733 @------------------------------------------------------------------------------
1734 @ REV
1735 @------------------------------------------------------------------------------
1736         rev.w r1, r2
1737         rev r2, r8
1738         itt ne
1739         revne r1, r2
1740         revne r1, r8
1741
1742 @ CHECK: rev.w  r1, r2                  @ encoding: [0x92,0xfa,0x82,0xf1]
1743 @ CHECK: rev.w  r2, r8                  @ encoding: [0x98,0xfa,0x88,0xf2]
1744 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
1745 @ CHECK: revne  r1, r2                  @ encoding: [0x11,0xba]
1746 @ CHECK: revne.w r1, r8                 @ encoding: [0x98,0xfa,0x88,0xf1]
1747
1748
1749 @------------------------------------------------------------------------------
1750 @ REV16
1751 @------------------------------------------------------------------------------
1752         rev16.w r1, r2
1753         rev16 r2, r8
1754         itt ne
1755         rev16ne r1, r2
1756         rev16ne r1, r8
1757
1758 @ CHECK: rev16.w r1, r2                 @ encoding: [0x92,0xfa,0x92,0xf1]
1759 @ CHECK: rev16.w r2, r8                 @ encoding: [0x98,0xfa,0x98,0xf2]
1760 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
1761 @ CHECK: rev16ne r1, r2                 @ encoding: [0x51,0xba]
1762 @ CHECK: rev16ne.w      r1, r8          @ encoding: [0x98,0xfa,0x98,0xf1]
1763
1764
1765 @------------------------------------------------------------------------------
1766 @ REVSH
1767 @------------------------------------------------------------------------------
1768         revsh.w r1, r2
1769         revsh r2, r8
1770         itt ne
1771         revshne r1, r2
1772         revshne r1, r8
1773
1774 @ CHECK: revsh.w r1, r2                 @ encoding: [0x92,0xfa,0xb2,0xf1]
1775 @ CHECK: revsh.w r2, r8                 @ encoding: [0x98,0xfa,0xb8,0xf2]
1776 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
1777 @ CHECK: revshne r1, r2                 @ encoding: [0xd1,0xba]
1778 @ CHECK: revshne.w      r1, r8          @ encoding: [0x98,0xfa,0xb8,0xf1]
1779
1780
1781 @------------------------------------------------------------------------------
1782 @ ROR (immediate)
1783 @------------------------------------------------------------------------------
1784         ror r2, r3, #12
1785         rors r8, r3, #31
1786         rors.w r2, r3, #1
1787         ror r2, r3, #4
1788         rors r2, r12, #15
1789
1790         ror r3, #19
1791         rors r8, #2
1792         rors.w r7, #5
1793         ror.w r12, #21
1794
1795 @ CHECK: ror.w  r2, r3, #12             @ encoding: [0x4f,0xea,0x33,0x32]
1796 @ CHECK: rors.w r8, r3, #31             @ encoding: [0x5f,0xea,0xf3,0x78]
1797 @ CHECK: rors.w r2, r3, #1              @ encoding: [0x5f,0xea,0x73,0x02]
1798 @ CHECK: ror.w  r2, r3, #4              @ encoding: [0x4f,0xea,0x33,0x12]
1799 @ CHECK: rors.w r2, r12, #15            @ encoding: [0x5f,0xea,0xfc,0x32]
1800
1801 @ CHECK: ror.w  r3, r3, #19             @ encoding: [0x4f,0xea,0xf3,0x43]
1802 @ CHECK: rors.w r8, r8, #2              @ encoding: [0x5f,0xea,0xb8,0x08]
1803 @ CHECK: rors.w r7, r7, #5              @ encoding: [0x5f,0xea,0x77,0x17]
1804 @ CHECK: ror.w  r12, r12, #21           @ encoding: [0x4f,0xea,0x7c,0x5c]
1805
1806
1807 @------------------------------------------------------------------------------
1808 @ ROR (register)
1809 @------------------------------------------------------------------------------
1810         ror r3, r4, r2
1811         ror.w r1, r2
1812         rors r3, r4, r8
1813
1814 @ CHECK: ror.w  r3, r4, r2              @ encoding: [0x64,0xfa,0x02,0xf3]
1815 @ CHECK: ror.w  r1, r1, r2              @ encoding: [0x61,0xfa,0x02,0xf1]
1816 @ CHECK: rors.w r3, r4, r8              @ encoding: [0x74,0xfa,0x08,0xf3]
1817
1818
1819 @------------------------------------------------------------------------------
1820 @ RRX
1821 @------------------------------------------------------------------------------
1822         rrx r1, r2
1823         rrxs r1, r2
1824         ite lt
1825         rrxlt r9, r12
1826         rrxsge r8, r3
1827
1828 @ CHECK: rrx    r1, r2                  @ encoding: [0x4f,0xea,0x32,0x01]
1829 @ CHECK: rrxs   r1, r2                  @ encoding: [0x5f,0xea,0x32,0x01]
1830 @ CHECK: ite    lt                      @ encoding: [0xb4,0xbf]
1831 @ CHECK: rrxlt  r9, r12                 @ encoding: [0x4f,0xea,0x3c,0x09]
1832 @ CHECK: rrxsge r8, r3                  @ encoding: [0x5f,0xea,0x33,0x08]
1833
1834 @------------------------------------------------------------------------------
1835 @ RSB (immediate)
1836 @------------------------------------------------------------------------------
1837         rsb r2, r5, #0xff000
1838         rsbs r3, r12, #0xf
1839         rsb r1, #0xff
1840         rsb r1, r1, #0xff
1841         rsb r11, r11, #0
1842         rsb r9, #0
1843         rsbs r3, r1, #0
1844         rsb r3, r1, #0
1845
1846 @ CHECK: rsb.w  r2, r5, #1044480        @ encoding: [0xc5,0xf5,0x7f,0x22]
1847 @ CHECK: rsbs.w r3, r12, #15            @ encoding: [0xdc,0xf1,0x0f,0x03]
1848 @ CHECK: rsb.w  r1, r1, #255            @ encoding: [0xc1,0xf1,0xff,0x01]
1849 @ CHECK: rsb.w  r1, r1, #255            @ encoding: [0xc1,0xf1,0xff,0x01]
1850 @ CHECK: rsb.w  r11, r11, #0            @ encoding: [0xcb,0xf1,0x00,0x0b]
1851 @ CHECK: rsb.w  r9, r9, #0              @ encoding: [0xc9,0xf1,0x00,0x09]
1852 @ CHECK: rsbs   r3, r1, #0              @ encoding: [0x4b,0x42]
1853 @ CHECK: rsb.w  r3, r1, #0              @ encoding: [0xc1,0xf1,0x00,0x03]
1854
1855
1856 @------------------------------------------------------------------------------
1857 @ RSB (register)
1858 @------------------------------------------------------------------------------
1859         rsb r4, r8
1860         rsb r4, r9, r8
1861         rsb r1, r4, r8, asr #3
1862         rsbs r2, r1, r7, lsl #1
1863
1864 @ CHECK: rsb    r4, r4, r8              @ encoding: [0xc4,0xeb,0x08,0x04]
1865 @ CHECK: rsb    r4, r9, r8              @ encoding: [0xc9,0xeb,0x08,0x04]
1866 @ CHECK: rsb    r1, r4, r8, asr #3      @ encoding: [0xc4,0xeb,0xe8,0x01]
1867 @ CHECK: rsbs   r2, r1, r7, lsl #1      @ encoding: [0xd1,0xeb,0x47,0x02]
1868
1869
1870 @------------------------------------------------------------------------------
1871 @ SADD16
1872 @------------------------------------------------------------------------------
1873         sadd16 r3, r4, r8
1874         it ne
1875         sadd16ne r3, r4, r8
1876
1877 @ CHECK: sadd16 r3, r4, r8              @ encoding: [0x94,0xfa,0x08,0xf3]
1878 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1879 @ CHECK: sadd16ne       r3, r4, r8      @ encoding: [0x94,0xfa,0x08,0xf3]
1880
1881
1882 @------------------------------------------------------------------------------
1883 @ SADD8
1884 @------------------------------------------------------------------------------
1885         sadd8 r3, r4, r8
1886         it ne
1887         sadd8ne r3, r4, r8
1888
1889 @ CHECK: sadd8  r3, r4, r8              @ encoding: [0x84,0xfa,0x08,0xf3]
1890 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1891 @ CHECK: sadd8ne r3, r4, r8             @ encoding: [0x84,0xfa,0x08,0xf3]
1892
1893
1894 @------------------------------------------------------------------------------
1895 @ SASX
1896 @------------------------------------------------------------------------------
1897         saddsubx r9, r2, r7
1898         it ne
1899         saddsubxne r2, r5, r6
1900         sasx r9, r2, r7
1901         it ne
1902         sasxne r2, r5, r6
1903
1904 @ CHECK: sasx   r9, r2, r7              @ encoding: [0xa2,0xfa,0x07,0xf9]
1905 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1906 @ CHECK: sasxne r2, r5, r6              @ encoding: [0xa5,0xfa,0x06,0xf2]
1907 @ CHECK: sasx   r9, r2, r7              @ encoding: [0xa2,0xfa,0x07,0xf9]
1908 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1909 @ CHECK: sasxne r2, r5, r6              @ encoding: [0xa5,0xfa,0x06,0xf2]
1910
1911
1912 @------------------------------------------------------------------------------
1913 @ SBC (immediate)
1914 @------------------------------------------------------------------------------
1915         sbc r0, r1, #4
1916         sbcs r0, r1, #0
1917         sbc r1, r2, #255
1918         sbc r3, r7, #0x00550055
1919         sbc r8, r12, #0xaa00aa00
1920         sbc r9, r7, #0xa5a5a5a5
1921         sbc r5, r3, #0x87000000
1922         sbc r4, r2, #0x7f800000
1923         sbc r4, r2, #0x00000680
1924
1925 @ CHECK: sbc    r0, r1, #4              @ encoding: [0x61,0xf1,0x04,0x00]
1926 @ CHECK: sbcs   r0, r1, #0              @ encoding: [0x71,0xf1,0x00,0x00]
1927 @ CHECK: sbc    r1, r2, #255            @ encoding: [0x62,0xf1,0xff,0x01]
1928 @ CHECK: sbc    r3, r7, #5570645        @ encoding: [0x67,0xf1,0x55,0x13]
1929 @ CHECK: sbc    r8, r12, #2852170240    @ encoding: [0x6c,0xf1,0xaa,0x28]
1930 @ CHECK: sbc    r9, r7, #2779096485     @ encoding: [0x67,0xf1,0xa5,0x39]
1931 @ CHECK: sbc    r5, r3, #2264924160     @ encoding: [0x63,0xf1,0x07,0x45]
1932 @ CHECK: sbc    r4, r2, #2139095040     @ encoding: [0x62,0xf1,0xff,0x44]
1933 @ CHECK: sbc    r4, r2, #1664           @ encoding: [0x62,0xf5,0xd0,0x64]
1934
1935
1936 @------------------------------------------------------------------------------
1937 @ SBC (register)
1938 @------------------------------------------------------------------------------
1939         sbc r4, r5, r6
1940         sbcs r4, r5, r6
1941         sbc.w r9, r1, r3
1942         sbcs.w r9, r1, r3
1943         sbc     r0, r1, r3, ror #4
1944         sbcs    r0, r1, r3, lsl #7
1945         sbc.w   r0, r1, r3, lsr #31
1946         sbcs.w  r0, r1, r3, asr #32
1947
1948 @ CHECK: sbc.w  r4, r5, r6              @ encoding: [0x65,0xeb,0x06,0x04]
1949 @ CHECK: sbcs.w r4, r5, r6              @ encoding: [0x75,0xeb,0x06,0x04]
1950 @ CHECK: sbc.w  r9, r1, r3              @ encoding: [0x61,0xeb,0x03,0x09]
1951 @ CHECK: sbcs.w r9, r1, r3              @ encoding: [0x71,0xeb,0x03,0x09]
1952 @ CHECK: sbc.w  r0, r1, r3, ror #4      @ encoding: [0x61,0xeb,0x33,0x10]
1953 @ CHECK: sbcs.w r0, r1, r3, lsl #7      @ encoding: [0x71,0xeb,0xc3,0x10]
1954 @ CHECK: sbc.w  r0, r1, r3, lsr #31     @ encoding: [0x61,0xeb,0xd3,0x70]
1955 @ CHECK: sbcs.w r0, r1, r3, asr #32     @ encoding: [0x71,0xeb,0x23,0x00]
1956
1957
1958 @------------------------------------------------------------------------------
1959 @ SBFX
1960 @------------------------------------------------------------------------------
1961         sbfx r4, r5, #16, #1
1962         it gt
1963         sbfxgt r4, r5, #16, #16
1964
1965 @ CHECK: sbfx   r4, r5, #16, #1         @ encoding: [0x45,0xf3,0x00,0x44]
1966 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1967 @ CHECK: sbfxgt r4, r5, #16, #16        @ encoding: [0x45,0xf3,0x0f,0x44]
1968
1969
1970 @------------------------------------------------------------------------------
1971 @ SEL
1972 @------------------------------------------------------------------------------
1973         sel r5, r9, r2
1974         it le
1975         selle r5, r9, r2
1976
1977 @ CHECK: sel    r5, r9, r2              @ encoding: [0xa9,0xfa,0x82,0xf5]
1978 @ CHECK: it     le                      @ encoding: [0xd8,0xbf]
1979 @ CHECK: selle  r5, r9, r2              @ encoding: [0xa9,0xfa,0x82,0xf5]
1980
1981
1982 @------------------------------------------------------------------------------
1983 @ SEV
1984 @------------------------------------------------------------------------------
1985         sev.w
1986         it eq
1987         seveq.w
1988
1989 @ CHECK: sev.w                           @ encoding: [0xaf,0xf3,0x04,0x80]
1990 @ CHECK: it     eq                       @ encoding: [0x08,0xbf]
1991 @ CHECK: seveq.w                         @ encoding: [0xaf,0xf3,0x04,0x80]
1992
1993
1994 @------------------------------------------------------------------------------
1995 @ SADD16/SADD8
1996 @------------------------------------------------------------------------------
1997         sadd16 r1, r2, r3
1998         sadd8 r1, r2, r3
1999         ite gt
2000         sadd16gt r1, r2, r3
2001         sadd8le r1, r2, r3
2002
2003 @ CHECK: sadd16 r1, r2, r3              @ encoding: [0x92,0xfa,0x03,0xf1]
2004 @ CHECK: sadd8  r1, r2, r3              @ encoding: [0x82,0xfa,0x03,0xf1]
2005 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
2006 @ CHECK: sadd16gt       r1, r2, r3      @ encoding: [0x92,0xfa,0x03,0xf1]
2007 @ CHECK: sadd8le r1, r2, r3             @ encoding: [0x82,0xfa,0x03,0xf1]
2008
2009
2010 @------------------------------------------------------------------------------
2011 @ SHASX
2012 @------------------------------------------------------------------------------
2013         shasx r4, r8, r2
2014         it gt
2015         shasxgt r4, r8, r2
2016         shaddsubx r4, r8, r2
2017         it gt
2018         shaddsubxgt r4, r8, r2
2019
2020 @ CHECK: shasx  r4, r8, r2              @ encoding: [0xa8,0xfa,0x22,0xf4]
2021 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
2022 @ CHECK: shasxgt r4, r8, r2             @ encoding: [0xa8,0xfa,0x22,0xf4]
2023 @ CHECK: shasx  r4, r8, r2              @ encoding: [0xa8,0xfa,0x22,0xf4]
2024 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
2025 @ CHECK: shasxgt r4, r8, r2             @ encoding: [0xa8,0xfa,0x22,0xf4]
2026
2027
2028 @------------------------------------------------------------------------------
2029 @ SHASX
2030 @------------------------------------------------------------------------------
2031         shsax r4, r8, r2
2032         it gt
2033         shsaxgt r4, r8, r2
2034         shsubaddx r4, r8, r2
2035         it gt
2036         shsubaddxgt r4, r8, r2
2037
2038 @ CHECK: shsax  r4, r8, r2              @ encoding: [0xe8,0xfa,0x22,0xf4]
2039 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
2040 @ CHECK: shsaxgt r4, r8, r2             @ encoding: [0xe8,0xfa,0x22,0xf4]
2041 @ CHECK: shsax  r4, r8, r2              @ encoding: [0xe8,0xfa,0x22,0xf4]
2042 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
2043 @ CHECK: shsaxgt r4, r8, r2             @ encoding: [0xe8,0xfa,0x22,0xf4]
2044
2045
2046 @------------------------------------------------------------------------------
2047 @ SHSUB16/SHSUB8
2048 @------------------------------------------------------------------------------
2049         shsub16 r4, r8, r2
2050         shsub8 r4, r8, r2
2051         itt gt
2052         shsub16gt r4, r8, r2
2053         shsub8gt r4, r8, r2
2054
2055 @ CHECK: shsub16 r4, r8, r2             @ encoding: [0xd8,0xfa,0x22,0xf4]
2056 @ CHECK: shsub8 r4, r8, r2              @ encoding: [0xc8,0xfa,0x22,0xf4]
2057 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
2058 @ CHECK: shsub16gt      r4, r8, r2      @ encoding: [0xd8,0xfa,0x22,0xf4]
2059 @ CHECK: shsub8gt       r4, r8, r2      @ encoding: [0xc8,0xfa,0x22,0xf4]
2060
2061
2062 @------------------------------------------------------------------------------
2063 @ SMLABB/SMLABT/SMLATB/SMLATT
2064 @------------------------------------------------------------------------------
2065         smlabb r3, r1, r9, r0
2066         smlabt r5, r6, r4, r1
2067         smlatb r4, r2, r3, r2
2068         smlatt r8, r3, r8, r4
2069         itete gt
2070         smlabbgt r3, r1, r9, r0
2071         smlabtle r5, r6, r4, r1
2072         smlatbgt r4, r2, r3, r2
2073         smlattle r8, r3, r8, r4
2074
2075 @ CHECK: smlabb r3, r1, r9, r0          @ encoding: [0x11,0xfb,0x09,0x03]
2076 @ CHECK: smlabt r5, r6, r4, r1          @ encoding: [0x16,0xfb,0x14,0x15]
2077 @ CHECK: smlatb r4, r2, r3, r2          @ encoding: [0x12,0xfb,0x23,0x24]
2078 @ CHECK: smlatt r8, r3, r8, r4          @ encoding: [0x13,0xfb,0x38,0x48]
2079 @ CHECK: itete  gt                      @ encoding: [0xcb,0xbf]
2080 @ CHECK: smlabbgt       r3, r1, r9, r0  @ encoding: [0x11,0xfb,0x09,0x03]
2081 @ CHECK: smlabtle       r5, r6, r4, r1  @ encoding: [0x16,0xfb,0x14,0x15]
2082 @ CHECK: smlatbgt       r4, r2, r3, r2  @ encoding: [0x12,0xfb,0x23,0x24]
2083 @ CHECK: smlattle       r8, r3, r8, r4  @ encoding: [0x13,0xfb,0x38,0x48]
2084
2085
2086 @------------------------------------------------------------------------------
2087 @ SMLAD/SMLADX
2088 @------------------------------------------------------------------------------
2089         smlad r2, r3, r5, r8
2090         smladx r2, r3, r5, r8
2091         itt hi
2092         smladhi r2, r3, r5, r8
2093         smladxhi r2, r3, r5, r8
2094
2095 @ CHECK: smlad  r2, r3, r5, r8          @ encoding: [0x23,0xfb,0x05,0x82]
2096 @ CHECK: smladx r2, r3, r5, r8          @ encoding: [0x23,0xfb,0x15,0x82]
2097 @ CHECK: itt    hi                      @ encoding: [0x84,0xbf]
2098 @ CHECK: smladhi r2, r3, r5, r8         @ encoding: [0x23,0xfb,0x05,0x82]
2099 @ CHECK: smladxhi       r2, r3, r5, r8  @ encoding: [0x23,0xfb,0x15,0x82]
2100
2101
2102 @------------------------------------------------------------------------------
2103 @ SMLAL
2104 @------------------------------------------------------------------------------
2105         smlal r2, r3, r5, r8
2106         it eq
2107         smlaleq r2, r3, r5, r8
2108
2109 @ CHECK: smlal  r2, r3, r5, r8          @ encoding: [0xc5,0xfb,0x08,0x23]
2110 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
2111 @ CHECK: smlaleq r2, r3, r5, r8         @ encoding: [0xc5,0xfb,0x08,0x23]
2112
2113
2114 @------------------------------------------------------------------------------
2115 @ SMLALBB/SMLALBT/SMLALTB/SMLALTT
2116 @------------------------------------------------------------------------------
2117         smlalbb r3, r1, r9, r0
2118         smlalbt r5, r6, r4, r1
2119         smlaltb r4, r2, r3, r2
2120         smlaltt r8, r3, r8, r4
2121         iteet ge
2122         smlalbbge r3, r1, r9, r0
2123         smlalbtlt r5, r6, r4, r1
2124         smlaltblt r4, r2, r3, r2
2125         smlalttge r8, r3, r8, r4
2126
2127 @ CHECK: smlalbb r3, r1, r9, r0         @ encoding: [0xc9,0xfb,0x80,0x31]
2128 @ CHECK: smlalbt r5, r6, r4, r1         @ encoding: [0xc4,0xfb,0x91,0x56]
2129 @ CHECK: smlaltb r4, r2, r3, r2         @ encoding: [0xc3,0xfb,0xa2,0x42]
2130 @ CHECK: smlaltt r8, r3, r8, r4         @ encoding: [0xc8,0xfb,0xb4,0x83]
2131 @ CHECK: iteet  ge                      @ encoding: [0xad,0xbf]
2132 @ CHECK: smlalbbge      r3, r1, r9, r0  @ encoding: [0xc9,0xfb,0x80,0x31]
2133 @ CHECK: smlalbtlt      r5, r6, r4, r1  @ encoding: [0xc4,0xfb,0x91,0x56]
2134 @ CHECK: smlaltblt      r4, r2, r3, r2  @ encoding: [0xc3,0xfb,0xa2,0x42]
2135 @ CHECK: smlalttge      r8, r3, r8, r4  @ encoding: [0xc8,0xfb,0xb4,0x83]
2136
2137
2138 @------------------------------------------------------------------------------
2139 @ SMLALD/SMLALDX
2140 @------------------------------------------------------------------------------
2141         smlald r2, r3, r5, r8
2142         smlaldx r2, r3, r5, r8
2143         ite eq
2144         smlaldeq r2, r3, r5, r8
2145         smlaldxne r2, r3, r5, r8
2146
2147 @ CHECK: smlald r2, r3, r5, r8          @ encoding: [0xc5,0xfb,0xc8,0x23]
2148 @ CHECK: smlaldx r2, r3, r5, r8         @ encoding: [0xc5,0xfb,0xd8,0x23]
2149 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
2150 @ CHECK: smlaldeq       r2, r3, r5, r8  @ encoding: [0xc5,0xfb,0xc8,0x23]
2151 @ CHECK: smlaldxne      r2, r3, r5, r8  @ encoding: [0xc5,0xfb,0xd8,0x23]
2152
2153
2154 @------------------------------------------------------------------------------
2155 @ SMLAWB/SMLAWT
2156 @------------------------------------------------------------------------------
2157         smlawb r2, r3, r10, r8
2158         smlawt r8, r3, r5, r9
2159         ite eq
2160         smlawbeq r2, r7, r5, r8
2161         smlawtne r1, r3, r0, r8
2162
2163 @ CHECK: smlawb r2, r3, r10, r8         @ encoding: [0x33,0xfb,0x0a,0x82]
2164 @ CHECK: smlawt r8, r3, r5, r9          @ encoding: [0x33,0xfb,0x15,0x98]
2165 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
2166 @ CHECK: smlawbeq       r2, r7, r5, r8  @ encoding: [0x37,0xfb,0x05,0x82]
2167 @ CHECK: smlawtne       r1, r3, r0, r8  @ encoding: [0x33,0xfb,0x10,0x81]
2168
2169
2170 @------------------------------------------------------------------------------
2171 @ SMLSD/SMLSDX
2172 @------------------------------------------------------------------------------
2173         smlsd r2, r3, r5, r8
2174         smlsdx r2, r3, r5, r8
2175         ite le
2176         smlsdle r2, r3, r5, r8
2177         smlsdxgt r2, r3, r5, r8
2178
2179 @ CHECK: smlsd  r2, r3, r5, r8          @ encoding: [0x43,0xfb,0x05,0x82]
2180 @ CHECK: smlsdx r2, r3, r5, r8          @ encoding: [0x43,0xfb,0x15,0x82]
2181 @ CHECK: ite    le                      @ encoding: [0xd4,0xbf]
2182 @ CHECK: smlsdle        r2, r3, r5, r8  @ encoding: [0x43,0xfb,0x05,0x82]
2183 @ CHECK: smlsdxgt       r2, r3, r5, r8  @ encoding: [0x43,0xfb,0x15,0x82]
2184
2185
2186 @------------------------------------------------------------------------------
2187 @ SMLSLD/SMLSLDX
2188 @------------------------------------------------------------------------------
2189         smlsld r2, r9, r5, r1
2190         smlsldx r4, r11, r2, r8
2191         ite ge
2192         smlsldge r8, r2, r5, r6
2193         smlsldxlt r1, r0, r3, r8
2194
2195 @ CHECK: smlsld r2, r9, r5, r1          @ encoding: [0xd5,0xfb,0xc1,0x29]
2196 @ CHECK: smlsldx        r4, r11, r2, r8 @ encoding: [0xd2,0xfb,0xd8,0x4b]
2197 @ CHECK: ite    ge                      @ encoding: [0xac,0xbf]
2198 @ CHECK: smlsldge       r8, r2, r5, r6  @ encoding: [0xd5,0xfb,0xc6,0x82]
2199 @ CHECK: smlsldxlt      r1, r0, r3, r8  @ encoding: [0xd3,0xfb,0xd8,0x10]
2200
2201
2202 @------------------------------------------------------------------------------
2203 @ SMMLA/SMMLAR
2204 @------------------------------------------------------------------------------
2205         smmla r1, r2, r3, r4
2206         smmlar r4, r3, r2, r1
2207         ite lo
2208         smmlalo r1, r2, r3, r4
2209         smmlarcs r4, r3, r2, r1
2210
2211 @ CHECK: smmla  r1, r2, r3, r4          @ encoding: [0x52,0xfb,0x03,0x41]
2212 @ CHECK: smmlar r4, r3, r2, r1          @ encoding: [0x53,0xfb,0x12,0x14]
2213 @ CHECK: ite    lo                      @ encoding: [0x34,0xbf]
2214 @ CHECK: smmlalo        r1, r2, r3, r4  @ encoding: [0x52,0xfb,0x03,0x41]
2215 @ CHECK: smmlarhs       r4, r3, r2, r1  @ encoding: [0x53,0xfb,0x12,0x14]
2216
2217
2218 @------------------------------------------------------------------------------
2219 @ SMMLS/SMMLSR
2220 @------------------------------------------------------------------------------
2221         smmls r1, r2, r3, r4
2222         smmlsr r4, r3, r2, r1
2223         ite lo
2224         smmlslo r1, r2, r3, r4
2225         smmlsrcs r4, r3, r2, r1
2226
2227 @ CHECK: smmls  r1, r2, r3, r4          @ encoding: [0x62,0xfb,0x03,0x41]
2228 @ CHECK: smmlsr r4, r3, r2, r1          @ encoding: [0x63,0xfb,0x12,0x14]
2229 @ CHECK: ite    lo                      @ encoding: [0x34,0xbf]
2230 @ CHECK: smmlslo        r1, r2, r3, r4  @ encoding: [0x62,0xfb,0x03,0x41]
2231 @ CHECK: smmlsrhs       r4, r3, r2, r1  @ encoding: [0x63,0xfb,0x12,0x14]
2232
2233
2234 @------------------------------------------------------------------------------
2235 @ SMMUL/SMMULR
2236 @------------------------------------------------------------------------------
2237         smmul r2, r3, r4
2238         smmulr r3, r2, r1
2239         ite cc
2240         smmulcc r2, r3, r4
2241         smmulrhs r3, r2, r1
2242
2243 @ CHECK: smmul  r2, r3, r4              @ encoding: [0x53,0xfb,0x04,0xf2]
2244 @ CHECK: smmulr r3, r2, r1              @ encoding: [0x52,0xfb,0x11,0xf3]
2245 @ CHECK: ite    lo                      @ encoding: [0x34,0xbf]
2246 @ CHECK: smmullo        r2, r3, r4      @ encoding: [0x53,0xfb,0x04,0xf2]
2247 @ CHECK: smmulrhs       r3, r2, r1      @ encoding: [0x52,0xfb,0x11,0xf3]
2248
2249
2250 @------------------------------------------------------------------------------
2251 @ SMUAD/SMUADX
2252 @------------------------------------------------------------------------------
2253         smuad r2, r3, r4
2254         smuadx r3, r2, r1
2255         ite lt
2256         smuadlt r2, r3, r4
2257         smuadxge r3, r2, r1
2258
2259 @ CHECK: smuad  r2, r3, r4              @ encoding: [0x23,0xfb,0x04,0xf2]
2260 @ CHECK: smuadx r3, r2, r1              @ encoding: [0x22,0xfb,0x11,0xf3]
2261 @ CHECK: ite    lt                      @ encoding: [0xb4,0xbf]
2262 @ CHECK: smuadlt        r2, r3, r4      @ encoding: [0x23,0xfb,0x04,0xf2]
2263 @ CHECK: smuadxge       r3, r2, r1      @ encoding: [0x22,0xfb,0x11,0xf3]
2264
2265
2266 @------------------------------------------------------------------------------
2267 @ SMULBB/SMULBT/SMULTB/SMULTT
2268 @------------------------------------------------------------------------------
2269         smulbb r3, r9, r0
2270         smulbt r5, r4, r1
2271         smultb r4, r2, r2
2272         smultt r8, r3, r4
2273         itete ge
2274         smulbbge r1, r9, r0
2275         smulbtlt r5, r6, r4
2276         smultbge r2, r3, r2
2277         smulttlt r8, r3, r4
2278
2279 @ CHECK: smulbb r3, r9, r0              @ encoding: [0x19,0xfb,0x00,0xf3]
2280 @ CHECK: smulbt r5, r4, r1              @ encoding: [0x14,0xfb,0x11,0xf5]
2281 @ CHECK: smultb r4, r2, r2              @ encoding: [0x12,0xfb,0x22,0xf4]
2282 @ CHECK: smultt r8, r3, r4              @ encoding: [0x13,0xfb,0x34,0xf8]
2283 @ CHECK: itete  ge                      @ encoding: [0xab,0xbf]
2284 @ CHECK: smulbbge       r1, r9, r0      @ encoding: [0x19,0xfb,0x00,0xf1]
2285 @ CHECK: smulbtlt       r5, r6, r4      @ encoding: [0x16,0xfb,0x14,0xf5]
2286 @ CHECK: smultbge       r2, r3, r2      @ encoding: [0x13,0xfb,0x22,0xf2]
2287 @ CHECK: smulttlt       r8, r3, r4      @ encoding: [0x13,0xfb,0x34,0xf8]
2288
2289
2290 @------------------------------------------------------------------------------
2291 @ SMULL
2292 @------------------------------------------------------------------------------
2293         smull r3, r9, r0, r1
2294         it eq
2295         smulleq r8, r3, r4, r5
2296
2297 @ CHECK: smull  r3, r9, r0, r1          @ encoding: [0x80,0xfb,0x01,0x39]
2298 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
2299 @ CHECK: smulleq r8, r3, r4, r5         @ encoding: [0x84,0xfb,0x05,0x83]
2300
2301
2302 @------------------------------------------------------------------------------
2303 @ SMULWB/SMULWT
2304 @------------------------------------------------------------------------------
2305         smulwb r3, r9, r0
2306         smulwt r3, r9, r2
2307         ite gt
2308         smulwbgt r3, r9, r0
2309         smulwtle r3, r9, r2
2310
2311 @ CHECK: smulwb r3, r9, r0              @ encoding: [0x39,0xfb,0x00,0xf3]
2312 @ CHECK: smulwt r3, r9, r2              @ encoding: [0x39,0xfb,0x12,0xf3]
2313 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
2314 @ CHECK: smulwbgt       r3, r9, r0      @ encoding: [0x39,0xfb,0x00,0xf3]
2315 @ CHECK: smulwtle       r3, r9, r2      @ encoding: [0x39,0xfb,0x12,0xf3]
2316
2317
2318 @------------------------------------------------------------------------------
2319 @ SMUSD/SMUSDX
2320 @------------------------------------------------------------------------------
2321         smusd r3, r0, r1
2322         smusdx r3, r9, r2
2323         ite eq
2324         smusdeq r8, r3, r2
2325         smusdxne r7, r4, r3
2326
2327 @ CHECK: smusd  r3, r0, r1              @ encoding: [0x40,0xfb,0x01,0xf3]
2328 @ CHECK: smusdx r3, r9, r2              @ encoding: [0x49,0xfb,0x12,0xf3]
2329 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
2330 @ CHECK: smusdeq        r8, r3, r2      @ encoding: [0x43,0xfb,0x02,0xf8]
2331 @ CHECK: smusdxne       r7, r4, r3      @ encoding: [0x44,0xfb,0x13,0xf7]
2332
2333
2334 @------------------------------------------------------------------------------
2335 @ SRS
2336 @------------------------------------------------------------------------------
2337         srsdb sp, #1
2338         srsia sp, #0
2339
2340         srsdb sp!, #19
2341         srsia sp!, #2
2342
2343         srsea sp, #10
2344         srsfd sp, #9
2345
2346         srsea sp!, #5
2347         srsfd sp!, #5
2348
2349         srs sp, #5
2350         srs sp!, #5
2351
2352 @ CHECK: srsdb  sp, #1                  @ encoding: [0x0d,0xe8,0x01,0xc0]
2353 @ CHECK: srsia  sp, #0                  @ encoding: [0x8d,0xe9,0x00,0xc0]
2354 @ CHECK: srsdb  sp!, #19                @ encoding: [0x2d,0xe8,0x13,0xc0]
2355 @ CHECK: srsia  sp!, #2                 @ encoding: [0xad,0xe9,0x02,0xc0]
2356 @ CHECK: srsia  sp, #10                 @ encoding: [0x8d,0xe9,0x0a,0xc0]
2357 @ CHECK: srsdb  sp, #9                  @ encoding: [0x0d,0xe8,0x09,0xc0]
2358 @ CHECK: srsia  sp!, #5                 @ encoding: [0xad,0xe9,0x05,0xc0]
2359 @ CHECK: srsdb  sp!, #5                 @ encoding: [0x2d,0xe8,0x05,0xc0]
2360 @ CHECK: srsia  sp, #5                  @ encoding: [0x8d,0xe9,0x05,0xc0]
2361 @ CHECK: srsia  sp!, #5                 @ encoding: [0xad,0xe9,0x05,0xc0]
2362
2363         srsdb #1
2364         srsia #0
2365
2366         srsdb #19!
2367         srsia #2!
2368
2369         srsea #10
2370         srsfd #9
2371
2372         srsea #5!
2373         srsfd #5!
2374
2375         srs #5
2376         srs #5!
2377
2378 @ CHECK: srsdb  sp, #1                  @ encoding: [0x0d,0xe8,0x01,0xc0]
2379 @ CHECK: srsia  sp, #0                  @ encoding: [0x8d,0xe9,0x00,0xc0]
2380 @ CHECK: srsdb  sp!, #19                @ encoding: [0x2d,0xe8,0x13,0xc0]
2381 @ CHECK: srsia  sp!, #2                 @ encoding: [0xad,0xe9,0x02,0xc0]
2382 @ CHECK: srsia  sp, #10                 @ encoding: [0x8d,0xe9,0x0a,0xc0]
2383 @ CHECK: srsdb  sp, #9                  @ encoding: [0x0d,0xe8,0x09,0xc0]
2384 @ CHECK: srsia  sp!, #5                 @ encoding: [0xad,0xe9,0x05,0xc0]
2385 @ CHECK: srsdb  sp!, #5                 @ encoding: [0x2d,0xe8,0x05,0xc0]
2386 @ CHECK: srsia  sp, #5                  @ encoding: [0x8d,0xe9,0x05,0xc0]
2387 @ CHECK: srsia  sp!, #5                 @ encoding: [0xad,0xe9,0x05,0xc0]
2388
2389
2390 @------------------------------------------------------------------------------
2391 @ SSAT
2392 @------------------------------------------------------------------------------
2393         ssat    r8, #1, r10
2394         ssat    r8, #1, r10, lsl #0
2395         ssat    r8, #1, r10, lsl #31
2396         ssat    r8, #1, r10, asr #1
2397
2398 @ CHECK: ssat   r8, #1, r10             @ encoding: [0x0a,0xf3,0x00,0x08]
2399 @ CHECK: ssat   r8, #1, r10             @ encoding: [0x0a,0xf3,0x00,0x08]
2400 @ CHECK: ssat   r8, #1, r10, lsl #31    @ encoding: [0x0a,0xf3,0xc0,0x78]
2401 @ CHECK: ssat   r8, #1, r10, asr #1     @ encoding: [0x2a,0xf3,0x40,0x08]
2402
2403
2404 @------------------------------------------------------------------------------
2405 @ SSAT16
2406 @------------------------------------------------------------------------------
2407         ssat16  r2, #1, r7
2408         ssat16  r3, #16, r5
2409
2410 @ CHECK: ssat16 r2, #1, r7              @ encoding: [0x27,0xf3,0x00,0x02]
2411 @ CHECK: ssat16 r3, #16, r5             @ encoding: [0x25,0xf3,0x0f,0x03]
2412
2413
2414 @------------------------------------------------------------------------------
2415 @ SSAX
2416 @------------------------------------------------------------------------------
2417         ssubaddx r2, r3, r4
2418         it lt
2419         ssubaddxlt r2, r3, r4
2420         ssax r2, r3, r4
2421         it lt
2422         ssaxlt r2, r3, r4
2423
2424 @ CHECK: ssax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2425 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
2426 @ CHECK: ssaxlt r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2427 @ CHECK: ssax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2428 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
2429 @ CHECK: ssaxlt r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2430
2431
2432 @------------------------------------------------------------------------------
2433 @ SSUB16/SSUB8
2434 @------------------------------------------------------------------------------
2435         ssub16 r1, r0, r6
2436         ssub8 r9, r2, r4
2437         ite ne
2438         ssub16ne r5, r3, r2
2439         ssub8eq r5, r1, r2
2440
2441 @ CHECK: ssub16 r1, r0, r6              @ encoding: [0xd0,0xfa,0x06,0xf1]
2442 @ CHECK: ssub8  r9, r2, r4              @ encoding: [0xc2,0xfa,0x04,0xf9]
2443 @ CHECK: ite    ne                      @ encoding: [0x14,0xbf]
2444 @ CHECK: ssub16ne       r5, r3, r2      @ encoding: [0xd3,0xfa,0x02,0xf5]
2445 @ CHECK: ssub8eq        r5, r1, r2      @ encoding: [0xc1,0xfa,0x02,0xf5]
2446
2447
2448 @------------------------------------------------------------------------------
2449 @ STC{L}/STC2{L}
2450 @------------------------------------------------------------------------------
2451         stc2 p0, c8, [r1, #4]
2452         stc2 p1, c7, [r2]
2453         stc2 p2, c6, [r3, #-224]
2454         stc2 p3, c5, [r4, #-120]!
2455         stc2 p4, c4, [r5], #16
2456         stc2 p5, c3, [r6], #-72
2457         stc2l p6, c2, [r7, #4]
2458         stc2l p7, c1, [r8]
2459         stc2l p8, c0, [r9, #-224]
2460         stc2l p9, c1, [r10, #-120]!
2461         stc2l p10, c2, [r11], #16
2462         stc2l p11, c3, [r12], #-72
2463
2464         stc p12, c4, [r0, #4]
2465         stc p13, c5, [r1]
2466         stc p14, c6, [r2, #-224]
2467         stc p15, c7, [r3, #-120]!
2468         stc p5, c8, [r4], #16
2469         stc p4, c9, [r5], #-72
2470         stcl p3, c10, [r6, #4]
2471         stcl p2, c11, [r7]
2472         stcl p1, c12, [r8, #-224]
2473         stcl p0, c13, [r9, #-120]!
2474         stcl p6, c14, [r10], #16
2475         stcl p7, c15, [r11], #-72
2476
2477         stc2 p2, c8, [r1], { 25 }
2478
2479 @ CHECK: stc2   p0, c8, [r1, #4]        @ encoding: [0x81,0xfd,0x01,0x80]
2480 @ CHECK: stc2   p1, c7, [r2]            @ encoding: [0x82,0xfd,0x00,0x71]
2481 @ CHECK: stc2   p2, c6, [r3, #-224]     @ encoding: [0x03,0xfd,0x38,0x62]
2482 @ CHECK: stc2   p3, c5, [r4, #-120]!    @ encoding: [0x24,0xfd,0x1e,0x53]
2483 @ CHECK: stc2   p4, c4, [r5], #16       @ encoding: [0xa5,0xfc,0x04,0x44]
2484 @ CHECK: stc2   p5, c3, [r6], #-72      @ encoding: [0x26,0xfc,0x12,0x35]
2485 @ CHECK: stc2l  p6, c2, [r7, #4]        @ encoding: [0xc7,0xfd,0x01,0x26]
2486 @ CHECK: stc2l  p7, c1, [r8]            @ encoding: [0xc8,0xfd,0x00,0x17]
2487 @ CHECK: stc2l  p8, c0, [r9, #-224]     @ encoding: [0x49,0xfd,0x38,0x08]
2488 @ CHECK: stc2l  p9, c1, [r10, #-120]!   @ encoding: [0x6a,0xfd,0x1e,0x19]
2489 @ CHECK: stc2l  p10, c2, [r11], #16     @ encoding: [0xeb,0xfc,0x04,0x2a]
2490 @ CHECK: stc2l  p11, c3, [r12], #-72    @ encoding: [0x6c,0xfc,0x12,0x3b]
2491
2492 @ CHECK: stc    p12, c4, [r0, #4]       @ encoding: [0x80,0xed,0x01,0x4c]
2493 @ CHECK: stc    p13, c5, [r1]           @ encoding: [0x81,0xed,0x00,0x5d]
2494 @ CHECK: stc    p14, c6, [r2, #-224]    @ encoding: [0x02,0xed,0x38,0x6e]
2495 @ CHECK: stc    p15, c7, [r3, #-120]!   @ encoding: [0x23,0xed,0x1e,0x7f]
2496 @ CHECK: stc    p5, c8, [r4], #16       @ encoding: [0xa4,0xec,0x04,0x85]
2497 @ CHECK: stc    p4, c9, [r5], #-72      @ encoding: [0x25,0xec,0x12,0x94]
2498 @ CHECK: stcl   p3, c10, [r6, #4]       @ encoding: [0xc6,0xed,0x01,0xa3]
2499 @ CHECK: stcl   p2, c11, [r7]           @ encoding: [0xc7,0xed,0x00,0xb2]
2500 @ CHECK: stcl   p1, c12, [r8, #-224]    @ encoding: [0x48,0xed,0x38,0xc1]
2501 @ CHECK: stcl   p0, c13, [r9, #-120]!   @ encoding: [0x69,0xed,0x1e,0xd0]
2502 @ CHECK: stcl   p6, c14, [r10], #16     @ encoding: [0xea,0xec,0x04,0xe6]
2503 @ CHECK: stcl   p7, c15, [r11], #-72    @ encoding: [0x6b,0xec,0x12,0xf7]
2504
2505 @ CHECK: stc2   p2, c8, [r1], {25}      @ encoding: [0x81,0xfc,0x19,0x82]
2506
2507
2508 @------------------------------------------------------------------------------
2509 @ STMIA
2510 @------------------------------------------------------------------------------
2511         stmia.w r4, {r4, r5, r8, r9}
2512         stmia.w r4, {r5, r6}
2513         stmia.w r5!, {r3, r8}
2514         stm.w r4, {r4, r5, r8, r9}
2515         stm.w r4, {r5, r6}
2516         stm.w r5!, {r3, r8}
2517         stm.w r5!, {r1, r2}
2518         stm.w r2, {r1, r2}
2519
2520         stmia r4, {r4, r5, r8, r9}
2521         stmia r4, {r5, r6}
2522         stmia r5!, {r3, r8}
2523         stm r4, {r4, r5, r8, r9}
2524         stm r4, {r5, r6}
2525         stm r5!, {r3, r8}
2526         stmea r5!, {r3, r8}
2527
2528 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2529 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2530 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2531 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2532 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2533 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2534 @ CHECK: stm.w  r5!, {r1, r2}           @ encoding: [0xa5,0xe8,0x06,0x00]
2535 @ CHECK: stm.w  r2, {r1, r2}            @ encoding: [0x82,0xe8,0x06,0x00]
2536
2537 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2538 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2539 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2540 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2541 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2542 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2543 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2544
2545
2546 @------------------------------------------------------------------------------
2547 @ STMDB
2548 @------------------------------------------------------------------------------
2549         stmdb r4, {r4, r5, r8, r9}
2550         stmdb r4, {r5, r6}
2551         stmdb r5!, {r3, r8}
2552         stmea r5!, {r3, r8}
2553         stmdb.w r5, {r0, r1}
2554
2555 @ CHECK: stmdb  r4, {r4, r5, r8, r9}    @ encoding: [0x04,0xe9,0x30,0x03]
2556 @ CHECK: stmdb  r4, {r5, r6}            @ encoding: [0x04,0xe9,0x60,0x00]
2557 @ CHECK: stmdb  r5!, {r3, r8}           @ encoding: [0x25,0xe9,0x08,0x01]
2558 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2559 @ CHECK: stmdb  r5, {r0, r1}            @ encoding: [0x05,0xe9,0x03,0x00]
2560
2561
2562 @------------------------------------------------------------------------------
2563 @ STR(immediate)
2564 @------------------------------------------------------------------------------
2565         str r5, [r5, #-4]
2566         str r5, [r6, #32]
2567         str r5, [r6, #33]
2568         str r5, [r6, #257]
2569         str.w pc, [r7, #257]
2570         str r2, [r4, #255]!
2571         str r8, [sp, #4]!
2572         str lr, [sp, #-4]!
2573         str r2, [r4], #255
2574         str r8, [sp], #4
2575         str lr, [sp], #-4
2576
2577 @ CHECK: str    r5, [r5, #-4]           @ encoding: [0x45,0xf8,0x04,0x5c]
2578 @ CHECK: str    r5, [r6, #32]           @ encoding: [0x35,0x62]
2579 @ CHECK: str.w  r5, [r6, #33]           @ encoding: [0xc6,0xf8,0x21,0x50]
2580 @ CHECK: str.w  r5, [r6, #257]          @ encoding: [0xc6,0xf8,0x01,0x51]
2581 @ CHECK: str.w  pc, [r7, #257]          @ encoding: [0xc7,0xf8,0x01,0xf1]
2582 @ CHECK: str    r2, [r4, #255]!         @ encoding: [0x44,0xf8,0xff,0x2f]
2583 @ CHECK: str    r8, [sp, #4]!           @ encoding: [0x4d,0xf8,0x04,0x8f]
2584 @ CHECK: str    lr, [sp, #-4]!          @ encoding: [0x4d,0xf8,0x04,0xed]
2585 @ CHECK: str    r2, [r4], #255          @ encoding: [0x44,0xf8,0xff,0x2b]
2586 @ CHECK: str    r8, [sp], #4            @ encoding: [0x4d,0xf8,0x04,0x8b]
2587 @ CHECK: str    lr, [sp], #-4           @ encoding: [0x4d,0xf8,0x04,0xe9]
2588
2589
2590 @------------------------------------------------------------------------------
2591 @ STR(register)
2592 @------------------------------------------------------------------------------
2593         str r1, [r8, r1]
2594         str.w r4, [r5, r2]
2595         str r6, [r0, r2, lsl #3]
2596         str r8, [r8, r2, lsl #2]
2597         str r7, [sp, r2, lsl #1]
2598         str r7, [sp, r2, lsl #0]
2599
2600 @ CHECK: str.w  r1, [r8, r1]            @ encoding: [0x48,0xf8,0x01,0x10]
2601 @ CHECK: str.w  r4, [r5, r2]            @ encoding: [0x45,0xf8,0x02,0x40]
2602 @ CHECK: str.w  r6, [r0, r2, lsl #3]    @ encoding: [0x40,0xf8,0x32,0x60]
2603 @ CHECK: str.w  r8, [r8, r2, lsl #2]    @ encoding: [0x48,0xf8,0x22,0x80]
2604 @ CHECK: str.w  r7, [sp, r2, lsl #1]    @ encoding: [0x4d,0xf8,0x12,0x70]
2605 @ CHECK: str.w  r7, [sp, r2]            @ encoding: [0x4d,0xf8,0x02,0x70]
2606
2607
2608 @------------------------------------------------------------------------------
2609 @ STRB(immediate)
2610 @------------------------------------------------------------------------------
2611         strb r5, [r5, #-4]
2612         strb r5, [r6, #32]
2613         strb r5, [r6, #33]
2614         strb r5, [r6, #257]
2615         strb.w lr, [r7, #257]
2616         strb r5, [r8, #255]!
2617         strb r2, [r5, #4]!
2618         strb r1, [r4, #-4]!
2619         strb lr, [r3], #255
2620         strb r9, [r2], #4
2621         strb r3, [sp], #-4
2622         strb r4, [r8, #-0]!
2623         strb r1, [r0], #-0
2624
2625 @ CHECK: strb   r5, [r5, #-4]           @ encoding: [0x05,0xf8,0x04,0x5c]
2626 @ CHECK: strb.w r5, [r6, #32]           @ encoding: [0x86,0xf8,0x20,0x50]
2627 @ CHECK: strb.w r5, [r6, #33]           @ encoding: [0x86,0xf8,0x21,0x50]
2628 @ CHECK: strb.w r5, [r6, #257]          @ encoding: [0x86,0xf8,0x01,0x51]
2629 @ CHECK: strb.w lr, [r7, #257]          @ encoding: [0x87,0xf8,0x01,0xe1]
2630 @ CHECK: strb   r5, [r8, #255]!         @ encoding: [0x08,0xf8,0xff,0x5f]
2631 @ CHECK: strb   r2, [r5, #4]!           @ encoding: [0x05,0xf8,0x04,0x2f]
2632 @ CHECK: strb   r1, [r4, #-4]!          @ encoding: [0x04,0xf8,0x04,0x1d]
2633 @ CHECK: strb   lr, [r3], #255          @ encoding: [0x03,0xf8,0xff,0xeb]
2634 @ CHECK: strb   r9, [r2], #4            @ encoding: [0x02,0xf8,0x04,0x9b]
2635 @ CHECK: strb   r3, [sp], #-4           @ encoding: [0x0d,0xf8,0x04,0x39]
2636 @ CHECK: strb   r4, [r8, #-0]!          @ encoding: [0x08,0xf8,0x00,0x4d]
2637 @ CHECK: strb   r1, [r0], #-0           @ encoding: [0x00,0xf8,0x00,0x19]
2638
2639
2640 @------------------------------------------------------------------------------
2641 @ STRB(register)
2642 @------------------------------------------------------------------------------
2643         strb r1, [r8, r1]
2644         strb.w r4, [r5, r2]
2645         strb r6, [r0, r2, lsl #3]
2646         strb r8, [r8, r2, lsl #2]
2647         strb r7, [sp, r2, lsl #1]
2648         strb r7, [sp, r2, lsl #0]
2649
2650 @ CHECK: strb.w r1, [r8, r1]            @ encoding: [0x08,0xf8,0x01,0x10]
2651 @ CHECK: strb.w r4, [r5, r2]            @ encoding: [0x05,0xf8,0x02,0x40]
2652 @ CHECK: strb.w r6, [r0, r2, lsl #3]    @ encoding: [0x00,0xf8,0x32,0x60]
2653 @ CHECK: strb.w r8, [r8, r2, lsl #2]    @ encoding: [0x08,0xf8,0x22,0x80]
2654 @ CHECK: strb.w r7, [sp, r2, lsl #1]    @ encoding: [0x0d,0xf8,0x12,0x70]
2655 @ CHECK: strb.w r7, [sp, r2]            @ encoding: [0x0d,0xf8,0x02,0x70]
2656
2657
2658 @------------------------------------------------------------------------------
2659 @ STRBT
2660 @------------------------------------------------------------------------------
2661         strbt r1, [r2]
2662         strbt r1, [r8, #0]
2663         strbt r1, [r8, #3]
2664         strbt r1, [r8, #255]
2665
2666 @ CHECK: strbt  r1, [r2]                @ encoding: [0x02,0xf8,0x00,0x1e]
2667 @ CHECK: strbt  r1, [r8]                @ encoding: [0x08,0xf8,0x00,0x1e]
2668 @ CHECK: strbt  r1, [r8, #3]            @ encoding: [0x08,0xf8,0x03,0x1e]
2669 @ CHECK: strbt  r1, [r8, #255]          @ encoding: [0x08,0xf8,0xff,0x1e]
2670
2671
2672 @------------------------------------------------------------------------------
2673 @ STRD
2674 @------------------------------------------------------------------------------
2675         strd r3, r5, [r6, #24]
2676         strd r3, r5, [r6, #24]!
2677         strd r3, r5, [r6], #4
2678         strd r3, r5, [r6], #-8
2679         strd r3, r5, [r6]
2680         strd r8, r1, [r3, #0]
2681         strd r0, r1, [r2, #-0]
2682         strd r0, r1, [r2, #-0]!
2683         strd r0, r1, [r2], #-0
2684
2685 @ CHECK: strd   r3, r5, [r6, #24]       @ encoding: [0xc6,0xe9,0x06,0x35]
2686 @ CHECK: strd   r3, r5, [r6, #24]!      @ encoding: [0xe6,0xe9,0x06,0x35]
2687 @ CHECK: strd   r3, r5, [r6], #4        @ encoding: [0xe6,0xe8,0x01,0x35]
2688 @ CHECK: strd   r3, r5, [r6], #-8       @ encoding: [0x66,0xe8,0x02,0x35]
2689 @ CHECK: strd   r3, r5, [r6]            @ encoding: [0xc6,0xe9,0x00,0x35]
2690 @ CHECK: strd   r8, r1, [r3]            @ encoding: [0xc3,0xe9,0x00,0x81]
2691 @ CHECK: strd   r0, r1, [r2, #-0]       @ encoding: [0x42,0xe9,0x00,0x01]
2692 @ CHECK: strd   r0, r1, [r2, #-0]!      @ encoding: [0x62,0xe9,0x00,0x01]
2693 @ CHECK: strd   r0, r1, [r2], #-0       @ encoding: [0x62,0xe8,0x00,0x01]
2694
2695
2696 @------------------------------------------------------------------------------
2697 @ STREX/STREXB/STREXH/STREXD
2698 @------------------------------------------------------------------------------
2699         strex r1, r8, [r4]
2700         strex r8, r2, [r4, #0]
2701         strex r2, r12, [sp, #128]
2702         strexb r5, r1, [r7]
2703         strexh r9, r7, [r12]
2704         strexd r9, r3, r6, [r4]
2705
2706 @ CHECK: strex  r1, r8, [r4]            @ encoding: [0x44,0xe8,0x00,0x81]
2707 @ CHECK: strex  r8, r2, [r4]            @ encoding: [0x44,0xe8,0x00,0x28]
2708 @ CHECK: strex  r2, r12, [sp, #128]     @ encoding: [0x4d,0xe8,0x20,0xc2]
2709 @ CHECK: strexb r5, r1, [r7]            @ encoding: [0xc7,0xe8,0x45,0x1f]
2710 @ CHECK: strexh r9, r7, [r12]           @ encoding: [0xcc,0xe8,0x59,0x7f]
2711 @ CHECK: strexd r9, r3, r6, [r4]        @ encoding: [0xc4,0xe8,0x79,0x36]
2712
2713
2714 @------------------------------------------------------------------------------
2715 @ STRH(immediate)
2716 @------------------------------------------------------------------------------
2717         strh r5, [r5, #-4]
2718         strh r5, [r6, #32]
2719         strh r5, [r6, #33]
2720         strh r5, [r6, #257]
2721         strh.w lr, [r7, #257]
2722         strh r5, [r8, #255]!
2723         strh r2, [r5, #4]!
2724         strh r1, [r4, #-4]!
2725         strh lr, [r3], #255
2726         strh r9, [r2], #4
2727         strh r3, [sp], #-4
2728
2729 @ CHECK: strh   r5, [r5, #-4]           @ encoding: [0x25,0xf8,0x04,0x5c]
2730 @ CHECK: strh   r5, [r6, #32]           @ encoding: [0x35,0x84]
2731 @ CHECK: strh.w r5, [r6, #33]           @ encoding: [0xa6,0xf8,0x21,0x50]
2732 @ CHECK: strh.w r5, [r6, #257]          @ encoding: [0xa6,0xf8,0x01,0x51]
2733 @ CHECK: strh.w lr, [r7, #257]          @ encoding: [0xa7,0xf8,0x01,0xe1]
2734 @ CHECK: strh   r5, [r8, #255]!         @ encoding: [0x28,0xf8,0xff,0x5f]
2735 @ CHECK: strh   r2, [r5, #4]!           @ encoding: [0x25,0xf8,0x04,0x2f]
2736 @ CHECK: strh   r1, [r4, #-4]!          @ encoding: [0x24,0xf8,0x04,0x1d]
2737 @ CHECK: strh   lr, [r3], #255          @ encoding: [0x23,0xf8,0xff,0xeb]
2738 @ CHECK: strh   r9, [r2], #4            @ encoding: [0x22,0xf8,0x04,0x9b]
2739 @ CHECK: strh   r3, [sp], #-4           @ encoding: [0x2d,0xf8,0x04,0x39]
2740
2741
2742 @------------------------------------------------------------------------------
2743 @ STRH(register)
2744 @------------------------------------------------------------------------------
2745         strh r1, [r8, r1]
2746         strh.w r4, [r5, r2]
2747         strh r6, [r0, r2, lsl #3]
2748         strh r8, [r8, r2, lsl #2]
2749         strh r7, [sp, r2, lsl #1]
2750         strh r7, [sp, r2, lsl #0]
2751
2752 @ CHECK: strh.w r1, [r8, r1]            @ encoding: [0x28,0xf8,0x01,0x10]
2753 @ CHECK: strh.w r4, [r5, r2]            @ encoding: [0x25,0xf8,0x02,0x40]
2754 @ CHECK: strh.w r6, [r0, r2, lsl #3]    @ encoding: [0x20,0xf8,0x32,0x60]
2755 @ CHECK: strh.w r8, [r8, r2, lsl #2]    @ encoding: [0x28,0xf8,0x22,0x80]
2756 @ CHECK: strh.w r7, [sp, r2, lsl #1]    @ encoding: [0x2d,0xf8,0x12,0x70]
2757 @ CHECK: strh.w r7, [sp, r2]            @ encoding: [0x2d,0xf8,0x02,0x70]
2758
2759
2760 @------------------------------------------------------------------------------
2761 @ STRHT
2762 @------------------------------------------------------------------------------
2763         strht r1, [r2]
2764         strht r1, [r8, #0]
2765         strht r1, [r8, #3]
2766         strht r1, [r8, #255]
2767
2768 @ CHECK: strht  r1, [r2]                @ encoding: [0x22,0xf8,0x00,0x1e]
2769 @ CHECK: strht  r1, [r8]                @ encoding: [0x28,0xf8,0x00,0x1e]
2770 @ CHECK: strht  r1, [r8, #3]            @ encoding: [0x28,0xf8,0x03,0x1e]
2771 @ CHECK: strht  r1, [r8, #255]          @ encoding: [0x28,0xf8,0xff,0x1e]
2772
2773
2774 @------------------------------------------------------------------------------
2775 @ STRT
2776 @------------------------------------------------------------------------------
2777         strt r1, [r2]
2778         strt r1, [r8, #0]
2779         strt r1, [r8, #3]
2780         strt r1, [r8, #255]
2781
2782 @ CHECK: strt   r1, [r2]                @ encoding: [0x42,0xf8,0x00,0x1e]
2783 @ CHECK: strt   r1, [r8]                @ encoding: [0x48,0xf8,0x00,0x1e]
2784 @ CHECK: strt   r1, [r8, #3]            @ encoding: [0x48,0xf8,0x03,0x1e]
2785 @ CHECK: strt   r1, [r8, #255]          @ encoding: [0x48,0xf8,0xff,0x1e]
2786
2787
2788 @------------------------------------------------------------------------------
2789 @ SUB (immediate)
2790 @------------------------------------------------------------------------------
2791         itet eq
2792         subeq r1, r2, #4
2793         subwne r5, r3, #1023
2794         subeq r4, r5, #293
2795         sub r2, sp, #1024
2796         sub r2, r8, #0xff00
2797         sub r2, r3, #257
2798         subw r2, r3, #257
2799         sub r12, r6, #0x100
2800         subw r12, r6, #0x100
2801         subs r1, r2, #0x1f0
2802         sub r2, #1
2803         sub r0, r0, #32
2804         subs r2, r2, #56
2805         subs r2, #56
2806
2807 @ CHECK: itet   eq                      @ encoding: [0x0a,0xbf]
2808 @ CHECK: subeq  r1, r2, #4              @ encoding: [0x11,0x1f]
2809 @ CHECK: subwne r5, r3, #1023           @ encoding: [0xa3,0xf2,0xff,0x35]
2810 @ CHECK: subweq r4, r5, #293            @ encoding: [0xa5,0xf2,0x25,0x14]
2811 @ CHECK: sub.w  r2, sp, #1024           @ encoding: [0xad,0xf5,0x80,0x62]
2812 @ CHECK: sub.w  r2, r8, #65280          @ encoding: [0xa8,0xf5,0x7f,0x42]
2813 @ CHECK: subw   r2, r3, #257            @ encoding: [0xa3,0xf2,0x01,0x12]
2814 @ CHECK: subw   r2, r3, #257            @ encoding: [0xa3,0xf2,0x01,0x12]
2815 @ CHECK: sub.w  r12, r6, #256           @ encoding: [0xa6,0xf5,0x80,0x7c]
2816 @ CHECK: subw   r12, r6, #256           @ encoding: [0xa6,0xf2,0x00,0x1c]
2817 @ CHECK: subs.w r1, r2, #496            @ encoding: [0xb2,0xf5,0xf8,0x71]
2818 @ CHECK: sub.w  r2, r2, #1              @ encoding: [0xa2,0xf1,0x01,0x02]
2819 @ CHECK: sub.w  r0, r0, #32             @ encoding: [0xa0,0xf1,0x20,0x00]
2820 @ CHECK: subs   r2, #56                 @ encoding: [0x38,0x3a]
2821 @ CHECK: subs   r2, #56                 @ encoding: [0x38,0x3a]
2822
2823
2824 @------------------------------------------------------------------------------
2825 @ SUB (register)
2826 @------------------------------------------------------------------------------
2827         sub r4, r5, r6
2828         sub r4, r5, r6, lsl #5
2829         sub r4, r5, r6, lsr #5
2830         sub.w r4, r5, r6, lsr #5
2831         sub r4, r5, r6, asr #5
2832         sub r4, r5, r6, ror #5
2833         sub.w r5, r2, r12, rrx
2834         sub r2, sp, ip
2835         sub sp, sp, ip
2836         sub sp, ip
2837         sub.w r2, sp, ip
2838         sub.w sp, sp, ip
2839         sub.w sp, ip
2840
2841 @ CHECK: sub.w  r4, r5, r6              @ encoding: [0xa5,0xeb,0x06,0x04]
2842 @ CHECK: sub.w  r4, r5, r6, lsl #5      @ encoding: [0xa5,0xeb,0x46,0x14]
2843 @ CHECK: sub.w  r4, r5, r6, lsr #5      @ encoding: [0xa5,0xeb,0x56,0x14]
2844 @ CHECK: sub.w  r4, r5, r6, lsr #5      @ encoding: [0xa5,0xeb,0x56,0x14]
2845 @ CHECK: sub.w  r4, r5, r6, asr #5      @ encoding: [0xa5,0xeb,0x66,0x14]
2846 @ CHECK: sub.w  r4, r5, r6, ror #5      @ encoding: [0xa5,0xeb,0x76,0x14]
2847 @ CHECK: sub.w r5, r2, r12, rrx         @ encoding: [0xa2,0xeb,0x3c,0x05]
2848 @ CHECK: sub.w  r2, sp, r12             @ encoding: [0xad,0xeb,0x0c,0x02]
2849 @ CHECK: sub.w  sp, sp, r12             @ encoding: [0xad,0xeb,0x0c,0x0d]
2850 @ CHECK: sub.w  sp, sp, r12             @ encoding: [0xad,0xeb,0x0c,0x0d]
2851 @ CHECK: sub.w  r2, sp, r12             @ encoding: [0xad,0xeb,0x0c,0x02]
2852 @ CHECK: sub.w  sp, sp, r12             @ encoding: [0xad,0xeb,0x0c,0x0d]
2853 @ CHECK: sub.w  sp, sp, r12             @ encoding: [0xad,0xeb,0x0c,0x0d]
2854
2855
2856 @------------------------------------------------------------------------------
2857 @ SVC
2858 @------------------------------------------------------------------------------
2859         svc #0
2860         ite eq
2861         svceq #255
2862         swine #33
2863
2864 @ CHECK: svc    #0                      @ encoding: [0x00,0xdf]
2865 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
2866 @ CHECK: svceq  #255                    @ encoding: [0xff,0xdf]
2867 @ CHECK: svcne  #33                     @ encoding: [0x21,0xdf]
2868
2869
2870 @------------------------------------------------------------------------------
2871 @ SXTAB
2872 @------------------------------------------------------------------------------
2873         sxtab r2, r3, r4
2874         sxtab r4, r5, r6, ror #0
2875         it lt
2876         sxtablt r6, r2, r9, ror #8
2877         sxtab r5, r1, r4, ror #16
2878         sxtab r7, r8, r3, ror #24
2879
2880 @ CHECK: sxtab  r2, r3, r4              @ encoding: [0x43,0xfa,0x84,0xf2]
2881 @ CHECK: sxtab  r4, r5, r6              @ encoding: [0x45,0xfa,0x86,0xf4]
2882 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
2883 @ CHECK: sxtablt r6, r2, r9, ror #8     @ encoding: [0x42,0xfa,0x99,0xf6]
2884 @ CHECK: sxtab  r5, r1, r4, ror #16     @ encoding: [0x41,0xfa,0xa4,0xf5]
2885 @ CHECK: sxtab  r7, r8, r3, ror #24     @ encoding: [0x48,0xfa,0xb3,0xf7]
2886
2887
2888 @------------------------------------------------------------------------------
2889 @ SXTAB16
2890 @------------------------------------------------------------------------------
2891         sxtab16 r6, r2, r7, ror #0
2892         sxtab16 r3, r5, r8, ror #8
2893         sxtab16 r3, r2, r1, ror #16
2894         ite ne
2895         sxtab16ne r0, r1, r4
2896         sxtab16eq r1, r2, r3, ror #24
2897
2898 @ CHECK: sxtab16 r6, r2, r7             @ encoding: [0x22,0xfa,0x87,0xf6]
2899 @ CHECK: sxtab16 r3, r5, r8, ror #8     @ encoding: [0x25,0xfa,0x98,0xf3]
2900 @ CHECK: sxtab16 r3, r2, r1, ror #16    @ encoding: [0x22,0xfa,0xa1,0xf3]
2901 @ CHECK: ite    ne                      @ encoding: [0x14,0xbf]
2902 @ CHECK: sxtab16ne r0, r1, r4           @ encoding: [0x21,0xfa,0x84,0xf0]
2903 @ CHECK: sxtab16eq r1, r2, r3, ror #24  @ encoding: [0x22,0xfa,0xb3,0xf1]
2904
2905
2906 @------------------------------------------------------------------------------
2907 @ SXTAH
2908 @------------------------------------------------------------------------------
2909         sxtah r1, r3, r9
2910         sxtah r3, r8, r3, ror #8
2911         sxtah r9, r3, r3, ror #24
2912         ite hi
2913         sxtahhi r6, r1, r6, ror #0
2914         sxtahls r2, r2, r4, ror #16
2915
2916 @ CHECK: sxtah  r1, r3, r9              @ encoding: [0x03,0xfa,0x89,0xf1]
2917 @ CHECK: sxtah  r3, r8, r3, ror #8      @ encoding: [0x08,0xfa,0x93,0xf3]
2918 @ CHECK: sxtah  r9, r3, r3, ror #24     @ encoding: [0x03,0xfa,0xb3,0xf9]
2919 @ CHECK: ite    hi                      @ encoding: [0x8c,0xbf]
2920 @ CHECK: sxtahhi r6, r1, r6             @ encoding: [0x01,0xfa,0x86,0xf6]
2921 @ CHECK: sxtahls r2, r2, r4, ror #16    @ encoding: [0x02,0xfa,0xa4,0xf2]
2922
2923
2924 @------------------------------------------------------------------------------
2925 @ SXTB
2926 @------------------------------------------------------------------------------
2927         sxtb r5, r6, ror #0
2928         sxtb r6, r9, ror #8
2929         sxtb r8, r3, ror #24
2930         ite ge
2931         sxtbge r2, r4
2932         sxtblt r5, r1, ror #16
2933         sxtb.w  r7, r8
2934
2935 @ CHECK: sxtb   r5, r6                  @ encoding: [0x75,0xb2]
2936 @ CHECK: sxtb.w r6, r9, ror #8          @ encoding: [0x4f,0xfa,0x99,0xf6]
2937 @ CHECK: sxtb.w r8, r3, ror #24         @ encoding: [0x4f,0xfa,0xb3,0xf8]
2938 @ CHECK: ite    ge                      @ encoding: [0xac,0xbf]
2939 @ CHECK: sxtbge r2, r4                  @ encoding: [0x62,0xb2]
2940 @ CHECK: sxtblt.w       r5, r1, ror #16 @ encoding: [0x4f,0xfa,0xa1,0xf5]
2941 @ CHECK: sxtb.w r7, r8                  @ encoding: [0x4f,0xfa,0x88,0xf7]
2942
2943
2944 @------------------------------------------------------------------------------
2945 @ SXTB16
2946 @------------------------------------------------------------------------------
2947         sxtb16 r1, r4
2948         sxtb16 r6, r7, ror #0
2949         sxtb16 r3, r1, ror #16
2950         ite cs
2951         sxtb16cs r3, r5, ror #8
2952         sxtb16lo r2, r3, ror #24
2953
2954 @ CHECK: sxtb16 r1, r4                  @ encoding: [0x2f,0xfa,0x84,0xf1]
2955 @ CHECK: sxtb16 r6, r7                  @ encoding: [0x2f,0xfa,0x87,0xf6]
2956 @ CHECK: sxtb16 r3, r1, ror #16         @ encoding: [0x2f,0xfa,0xa1,0xf3]
2957 @ CHECK: ite    hs                      @ encoding: [0x2c,0xbf]
2958 @ CHECK: sxtb16hs       r3, r5, ror #8  @ encoding: [0x2f,0xfa,0x95,0xf3]
2959 @ CHECK: sxtb16lo       r2, r3, ror #24 @ encoding: [0x2f,0xfa,0xb3,0xf2]
2960
2961
2962 @------------------------------------------------------------------------------
2963 @ SXTH
2964 @------------------------------------------------------------------------------
2965         sxth r1, r6, ror #0
2966         sxth r3, r8, ror #8
2967         sxth r9, r3, ror #24
2968         itt ne
2969         sxthne r3, r9
2970         sxthne r2, r2, ror #16
2971         sxth.w  r7, r8
2972
2973 @ CHECK: sxth   r1, r6                  @ encoding: [0x31,0xb2]
2974 @ CHECK: sxth.w r3, r8, ror #8          @ encoding: [0x0f,0xfa,0x98,0xf3]
2975 @ CHECK: sxth.w r9, r3, ror #24         @ encoding: [0x0f,0xfa,0xb3,0xf9]
2976 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
2977 @ CHECK: sxthne.w       r3, r9          @ encoding: [0x0f,0xfa,0x89,0xf3]
2978 @ CHECK: sxthne.w       r2, r2, ror #16 @ encoding: [0x0f,0xfa,0xa2,0xf2]
2979 @ CHECK: sxth.w r7, r8                  @ encoding: [0x0f,0xfa,0x88,0xf7]
2980
2981
2982 @------------------------------------------------------------------------------
2983 @ SXTB
2984 @------------------------------------------------------------------------------
2985         sxtb r5, r6, ror #0
2986         sxtb.w r6, r9, ror #8
2987         sxtb r8, r3, ror #24
2988         ite ge
2989         sxtbge r2, r4
2990         sxtblt r5, r1, ror #16
2991
2992 @ CHECK: sxtb   r5, r6                  @ encoding: [0x75,0xb2]
2993 @ CHECK: sxtb.w r6, r9, ror #8          @ encoding: [0x4f,0xfa,0x99,0xf6]
2994 @ CHECK: sxtb.w r8, r3, ror #24         @ encoding: [0x4f,0xfa,0xb3,0xf8]
2995 @ CHECK: ite    ge                      @ encoding: [0xac,0xbf]
2996 @ CHECK: sxtbge r2, r4                  @ encoding: [0x62,0xb2]
2997 @ CHECK: sxtblt.w       r5, r1, ror #16 @ encoding: [0x4f,0xfa,0xa1,0xf5]
2998
2999
3000 @------------------------------------------------------------------------------
3001 @ SXTB16
3002 @------------------------------------------------------------------------------
3003         sxtb16 r1, r4
3004         sxtb16 r6, r7, ror #0
3005         sxtb16 r3, r1, ror #16
3006         ite cs
3007         sxtb16cs r3, r5, ror #8
3008         sxtb16lo r2, r3, ror #24
3009
3010 @ CHECK: sxtb16 r1, r4                  @ encoding: [0x2f,0xfa,0x84,0xf1]
3011 @ CHECK: sxtb16 r6, r7                  @ encoding: [0x2f,0xfa,0x87,0xf6]
3012 @ CHECK: sxtb16 r3, r1, ror #16         @ encoding: [0x2f,0xfa,0xa1,0xf3]
3013 @ CHECK: ite    hs                      @ encoding: [0x2c,0xbf]
3014 @ CHECK: sxtb16hs       r3, r5, ror #8  @ encoding: [0x2f,0xfa,0x95,0xf3]
3015 @ CHECK: sxtb16lo       r2, r3, ror #24 @ encoding: [0x2f,0xfa,0xb3,0xf2]
3016
3017
3018 @------------------------------------------------------------------------------
3019 @ SXTH
3020 @------------------------------------------------------------------------------
3021         sxth r1, r6, ror #0
3022         sxth.w r3, r8, ror #8
3023         sxth r9, r3, ror #24
3024         itt ne
3025         sxthne r3, r9
3026         sxthne r2, r2, ror #16
3027
3028 @ CHECK: sxth   r1, r6                  @ encoding: [0x31,0xb2]
3029 @ CHECK: sxth.w r3, r8, ror #8          @ encoding: [0x0f,0xfa,0x98,0xf3]
3030 @ CHECK: sxth.w r9, r3, ror #24         @ encoding: [0x0f,0xfa,0xb3,0xf9]
3031 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
3032 @ CHECK: sxthne.w       r3, r9          @ encoding: [0x0f,0xfa,0x89,0xf3]
3033 @ CHECK: sxthne.w       r2, r2, ror #16 @ encoding: [0x0f,0xfa,0xa2,0xf2]
3034
3035
3036 @------------------------------------------------------------------------------
3037 @ TBB/TBH
3038 @------------------------------------------------------------------------------
3039         tbb [r3, r8]
3040         tbh [r3, r8, lsl #1]
3041         it eq
3042         tbbeq [r3, r8]
3043         it cs
3044         tbhcs [r3, r8, lsl #1]
3045
3046 @ CHECK: tbb    [r3, r8]                @ encoding: [0xd3,0xe8,0x08,0xf0]
3047 @ CHECK: tbh    [r3, r8, lsl #1]        @ encoding: [0xd3,0xe8,0x18,0xf0]
3048 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
3049 @ CHECK: tbbeq  [r3, r8]                @ encoding: [0xd3,0xe8,0x08,0xf0]
3050 @ CHECK: it     hs                      @ encoding: [0x28,0xbf]
3051 @ CHECK: tbhhs  [r3, r8, lsl #1]        @ encoding: [0xd3,0xe8,0x18,0xf0]
3052
3053
3054 @------------------------------------------------------------------------------
3055 @ TEQ
3056 @------------------------------------------------------------------------------
3057         teq r5, #0xf000
3058         teq r4, r5
3059         teq r4, r5, lsl #5
3060         teq r4, r5, lsr #5
3061         teq r4, r5, lsr #5
3062         teq r4, r5, asr #5
3063         teq r4, r5, ror #5
3064
3065 @ CHECK: teq.w  r5, #61440              @ encoding: [0x95,0xf4,0x70,0x4f]
3066 @ CHECK: teq.w  r4, r5                  @ encoding: [0x94,0xea,0x05,0x0f]
3067 @ CHECK: teq.w  r4, r5, lsl #5          @ encoding: [0x94,0xea,0x45,0x1f]
3068 @ CHECK: teq.w  r4, r5, lsr #5          @ encoding: [0x94,0xea,0x55,0x1f]
3069 @ CHECK: teq.w  r4, r5, lsr #5          @ encoding: [0x94,0xea,0x55,0x1f]
3070 @ CHECK: teq.w  r4, r5, asr #5          @ encoding: [0x94,0xea,0x65,0x1f]
3071 @ CHECK: teq.w  r4, r5, ror #5          @ encoding: [0x94,0xea,0x75,0x1f]
3072
3073
3074 @------------------------------------------------------------------------------
3075 @ TST
3076 @------------------------------------------------------------------------------
3077         tst r5, #0xf000
3078         tst r2, r5
3079         tst r3, r12, lsl #5
3080         tst r4, r11, lsr #4
3081         tst r5, r10, lsr #12
3082         tst r6, r9, asr #30
3083         tst r7, r8, ror #2
3084
3085 @ CHECK: tst.w  r5, #61440              @ encoding: [0x15,0xf4,0x70,0x4f]
3086 @ CHECK: tst    r2, r5                  @ encoding: [0x2a,0x42]
3087 @ CHECK: tst.w  r3, r12, lsl #5         @ encoding: [0x13,0xea,0x4c,0x1f]
3088 @ CHECK: tst.w  r4, r11, lsr #4         @ encoding: [0x14,0xea,0x1b,0x1f]
3089 @ CHECK: tst.w  r5, r10, lsr #12        @ encoding: [0x15,0xea,0x1a,0x3f]
3090 @ CHECK: tst.w  r6, r9, asr #30         @ encoding: [0x16,0xea,0xa9,0x7f]
3091 @ CHECK: tst.w  r7, r8, ror #2          @ encoding: [0x17,0xea,0xb8,0x0f]
3092
3093
3094 @------------------------------------------------------------------------------
3095 @ UADD16/UADD8
3096 @------------------------------------------------------------------------------
3097         uadd16 r1, r2, r3
3098         uadd8 r1, r2, r3
3099         ite gt
3100         uadd16gt r1, r2, r3
3101         uadd8le r1, r2, r3
3102
3103 @ CHECK: uadd16 r1, r2, r3              @ encoding: [0x92,0xfa,0x43,0xf1]
3104 @ CHECK: uadd8  r1, r2, r3              @ encoding: [0x82,0xfa,0x43,0xf1]
3105 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3106 @ CHECK: uadd16gt       r1, r2, r3      @ encoding: [0x92,0xfa,0x43,0xf1]
3107 @ CHECK: uadd8le        r1, r2, r3      @ encoding: [0x82,0xfa,0x43,0xf1]
3108
3109
3110 @------------------------------------------------------------------------------
3111 @ UASX
3112 @------------------------------------------------------------------------------
3113         uasx r9, r12, r0
3114         it eq
3115         uasxeq r9, r12, r0
3116         uaddsubx r9, r12, r0
3117         it eq
3118         uaddsubxeq r9, r12, r0
3119
3120 @ CHECK: uasx   r9, r12, r0             @ encoding: [0xac,0xfa,0x40,0xf9]
3121 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
3122 @ CHECK: uasxeq r9, r12, r0             @ encoding: [0xac,0xfa,0x40,0xf9]
3123 @ CHECK: uasx   r9, r12, r0             @ encoding: [0xac,0xfa,0x40,0xf9]
3124 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
3125 @ CHECK: uasxeq r9, r12, r0             @ encoding: [0xac,0xfa,0x40,0xf9]
3126
3127
3128 @------------------------------------------------------------------------------
3129 @ UBFX
3130 @------------------------------------------------------------------------------
3131         ubfx r4, r5, #16, #1
3132         it gt
3133         ubfxgt r4, r5, #16, #16
3134
3135 @ CHECK: ubfx   r4, r5, #16, #1         @ encoding: [0xc5,0xf3,0x00,0x44]
3136 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
3137 @ CHECK: ubfxgt r4, r5, #16, #16        @ encoding: [0xc5,0xf3,0x0f,0x44]
3138
3139
3140 @------------------------------------------------------------------------------
3141 @ UHADD16/UHADD8
3142 @------------------------------------------------------------------------------
3143         uhadd16 r4, r8, r2
3144         uhadd8 r4, r8, r2
3145         itt gt
3146         uhadd16gt r4, r8, r2
3147         uhadd8gt r4, r8, r2
3148
3149 @ CHECK: uhadd16        r4, r8, r2      @ encoding: [0x98,0xfa,0x62,0xf4]
3150 @ CHECK: uhadd8 r4, r8, r2              @ encoding: [0x88,0xfa,0x62,0xf4]
3151 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
3152 @ CHECK: uhadd16gt      r4, r8, r2      @ encoding: [0x98,0xfa,0x62,0xf4]
3153 @ CHECK: uhadd8gt       r4, r8, r2      @ encoding: [0x88,0xfa,0x62,0xf4]
3154
3155
3156 @------------------------------------------------------------------------------
3157 @ UHASX/UHSAX
3158 @------------------------------------------------------------------------------
3159         uhasx r4, r1, r5
3160         uhsax r5, r6, r6
3161         itt gt
3162         uhasxgt r6, r9, r8
3163         uhsaxgt r7, r8, r12
3164         uhaddsubx r4, r1, r5
3165         uhsubaddx r5, r6, r6
3166         itt gt
3167         uhaddsubxgt r6, r9, r8
3168         uhsubaddxgt r7, r8, r12
3169
3170 @ CHECK: uhasx  r4, r1, r5              @ encoding: [0xa1,0xfa,0x65,0xf4]
3171 @ CHECK: uhsax  r5, r6, r6              @ encoding: [0xe6,0xfa,0x66,0xf5]
3172 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
3173 @ CHECK: uhasxgt r6, r9, r8             @ encoding: [0xa9,0xfa,0x68,0xf6]
3174 @ CHECK: uhsaxgt r7, r8, r12            @ encoding: [0xe8,0xfa,0x6c,0xf7]
3175 @ CHECK: uhasx  r4, r1, r5              @ encoding: [0xa1,0xfa,0x65,0xf4]
3176 @ CHECK: uhsax  r5, r6, r6              @ encoding: [0xe6,0xfa,0x66,0xf5]
3177 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
3178 @ CHECK: uhasxgt r6, r9, r8             @ encoding: [0xa9,0xfa,0x68,0xf6]
3179 @ CHECK: uhsaxgt r7, r8, r12            @ encoding: [0xe8,0xfa,0x6c,0xf7]
3180
3181
3182 @------------------------------------------------------------------------------
3183 @ UHSUB16/UHSUB8
3184 @------------------------------------------------------------------------------
3185         uhsub16 r5, r8, r3
3186         uhsub8 r1, r7, r6
3187         itt lt
3188         uhsub16lt r4, r9, r12
3189         uhsub8lt r3, r1, r5
3190
3191 @ CHECK: uhsub16        r5, r8, r3      @ encoding: [0xd8,0xfa,0x63,0xf5]
3192 @ CHECK: uhsub8 r1, r7, r6              @ encoding: [0xc7,0xfa,0x66,0xf1]
3193 @ CHECK: itt    lt                      @ encoding: [0xbc,0xbf]
3194 @ CHECK: uhsub16lt      r4, r9, r12     @ encoding: [0xd9,0xfa,0x6c,0xf4]
3195 @ CHECK: uhsub8lt       r3, r1, r5      @ encoding: [0xc1,0xfa,0x65,0xf3]
3196
3197
3198 @------------------------------------------------------------------------------
3199 @ UMAAL
3200 @------------------------------------------------------------------------------
3201         umaal r3, r4, r5, r6
3202         it lt
3203         umaallt r3, r4, r5, r6
3204
3205 @ CHECK: umaal  r3, r4, r5, r6          @ encoding: [0xe5,0xfb,0x66,0x34]
3206 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
3207 @ CHECK: umaallt        r3, r4, r5, r6  @ encoding: [0xe5,0xfb,0x66,0x34]
3208
3209
3210 @------------------------------------------------------------------------------
3211 @ UMLAL
3212 @------------------------------------------------------------------------------
3213         umlal r2, r4, r6, r8
3214         it gt
3215         umlalgt r6, r1, r2, r6
3216
3217 @ CHECK: umlal  r2, r4, r6, r8          @ encoding: [0xe6,0xfb,0x08,0x24]
3218 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
3219 @ CHECK: umlalgt        r6, r1, r2, r6  @ encoding: [0xe2,0xfb,0x06,0x61]
3220
3221
3222 @------------------------------------------------------------------------------
3223 @ UMULL
3224 @------------------------------------------------------------------------------
3225         umull r2, r4, r6, r8
3226         it gt
3227         umullgt r6, r1, r2, r6
3228
3229 @ CHECK: umull  r2, r4, r6, r8          @ encoding: [0xa6,0xfb,0x08,0x24]
3230 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
3231 @ CHECK: umullgt        r6, r1, r2, r6  @ encoding: [0xa2,0xfb,0x06,0x61]
3232
3233
3234 @------------------------------------------------------------------------------
3235 @ UQADD16/UQADD8
3236 @------------------------------------------------------------------------------
3237         uqadd16 r1, r2, r3
3238         uqadd8 r3, r4, r8
3239         ite gt
3240         uqadd16gt r4, r7, r9
3241         uqadd8le r8, r1, r2
3242
3243 @ CHECK: uqadd16        r1, r2, r3      @ encoding: [0x92,0xfa,0x53,0xf1]
3244 @ CHECK: uqadd8 r3, r4, r8              @ encoding: [0x84,0xfa,0x58,0xf3]
3245 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3246 @ CHECK: uqadd16gt      r4, r7, r9      @ encoding: [0x97,0xfa,0x59,0xf4]
3247 @ CHECK: uqadd8le       r8, r1, r2      @ encoding: [0x81,0xfa,0x52,0xf8]
3248
3249
3250 @------------------------------------------------------------------------------
3251 @ UQASX/UQSAX
3252 @------------------------------------------------------------------------------
3253         uqasx r1, r2, r3
3254         uqsax r3, r4, r8
3255         ite gt
3256         uqasxgt r4, r7, r9
3257         uqsaxle r8, r1, r2
3258
3259         uqaddsubx r1, r2, r3
3260         uqsubaddx r3, r4, r8
3261         ite gt
3262         uqaddsubxgt r4, r7, r9
3263         uqsubaddxle r8, r1, r2
3264
3265 @ CHECK: uqasx  r1, r2, r3              @ encoding: [0xa2,0xfa,0x53,0xf1]
3266 @ CHECK: uqsax  r3, r4, r8              @ encoding: [0xe4,0xfa,0x58,0xf3]
3267 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3268 @ CHECK: uqasxgt r4, r7, r9             @ encoding: [0xa7,0xfa,0x59,0xf4]
3269 @ CHECK: uqsaxle r8, r1, r2             @ encoding: [0xe1,0xfa,0x52,0xf8]
3270
3271 @ CHECK: uqasx  r1, r2, r3              @ encoding: [0xa2,0xfa,0x53,0xf1]
3272 @ CHECK: uqsax  r3, r4, r8              @ encoding: [0xe4,0xfa,0x58,0xf3]
3273 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3274 @ CHECK: uqasxgt r4, r7, r9             @ encoding: [0xa7,0xfa,0x59,0xf4]
3275 @ CHECK: uqsaxle r8, r1, r2             @ encoding: [0xe1,0xfa,0x52,0xf8]
3276
3277
3278 @------------------------------------------------------------------------------
3279 @ UQSUB16/UQSUB8
3280 @------------------------------------------------------------------------------
3281         uqsub8 r8, r2, r9
3282         uqsub16 r1, r9, r7
3283         ite gt
3284         uqsub8gt r3, r1, r6
3285         uqsub16le r4, r6, r4
3286
3287 @ CHECK: uqsub8 r8, r2, r9              @ encoding: [0xc2,0xfa,0x59,0xf8]
3288 @ CHECK: uqsub16 r1, r9, r7             @ encoding: [0xd9,0xfa,0x57,0xf1]
3289 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3290 @ CHECK: uqsub8gt       r3, r1, r6      @ encoding: [0xc1,0xfa,0x56,0xf3]
3291 @ CHECK: uqsub16le      r4, r6, r4      @ encoding: [0xd6,0xfa,0x54,0xf4]
3292
3293
3294 @------------------------------------------------------------------------------
3295 @ UQSUB16/UQSUB8
3296 @------------------------------------------------------------------------------
3297         usad8 r1, r9, r7
3298         usada8 r8, r2, r9, r12
3299         ite gt
3300         usada8gt r3, r1, r6, r9
3301         usad8le r4, r6, r4
3302
3303 @ CHECK: usad8  r1, r9, r7              @ encoding: [0x79,0xfb,0x07,0xf1]
3304 @ CHECK: usada8 r8, r2, r9, r12         @ encoding: [0x72,0xfb,0x09,0xc8]
3305 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3306 @ CHECK: usada8gt       r3, r1, r6, r9  @ encoding: [0x71,0xfb,0x06,0x93]
3307 @ CHECK: usad8le        r4, r6, r4      @ encoding: [0x76,0xfb,0x04,0xf4]
3308
3309
3310 @------------------------------------------------------------------------------
3311 @ USAT
3312 @------------------------------------------------------------------------------
3313         usat    r8, #1, r10
3314         usat    r8, #4, r10, lsl #0
3315         usat    r8, #5, r10, lsl #31
3316         usat    r8, #16, r10, asr #1
3317
3318 @ CHECK: usat   r8, #1, r10             @ encoding: [0x8a,0xf3,0x01,0x08]
3319 @ CHECK: usat   r8, #4, r10             @ encoding: [0x8a,0xf3,0x04,0x08]
3320 @ CHECK: usat   r8, #5, r10, lsl #31    @ encoding: [0x8a,0xf3,0xc5,0x78]
3321 @ CHECK: usat   r8, #16, r10, asr #1    @ encoding: [0xaa,0xf3,0x50,0x08]
3322
3323
3324 @------------------------------------------------------------------------------
3325 @ USAT16
3326 @------------------------------------------------------------------------------
3327         usat16  r2, #2, r7
3328         usat16  r3, #15, r5
3329
3330 @ CHECK: usat16 r2, #2, r7              @ encoding: [0xa7,0xf3,0x02,0x02]
3331 @ CHECK: usat16 r3, #15, r5             @ encoding: [0xa5,0xf3,0x0f,0x03]
3332
3333
3334 @------------------------------------------------------------------------------
3335 @ USAX
3336 @------------------------------------------------------------------------------
3337         usax r2, r3, r4
3338         it ne
3339         usaxne r6, r1, r9
3340         usubaddx r2, r3, r4
3341         it ne
3342         usubaddxne r6, r1, r9
3343
3344 @ CHECK: usax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x44,0xf2]
3345 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
3346 @ CHECK: usaxne r6, r1, r9              @ encoding: [0xe1,0xfa,0x49,0xf6]
3347 @ CHECK: usax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x44,0xf2]
3348 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
3349 @ CHECK: usaxne r6, r1, r9              @ encoding: [0xe1,0xfa,0x49,0xf6]
3350
3351
3352 @------------------------------------------------------------------------------
3353 @ USUB16/USUB8
3354 @------------------------------------------------------------------------------
3355         usub16 r4, r2, r7
3356         usub8 r1, r8, r5
3357         ite hi
3358         usub16hi r1, r1, r3
3359         usub8ls r9, r2, r3
3360
3361 @ CHECK: usub16 r4, r2, r7              @ encoding: [0xd2,0xfa,0x47,0xf4]
3362 @ CHECK: usub8  r1, r8, r5              @ encoding: [0xc8,0xfa,0x45,0xf1]
3363 @ CHECK: ite    hi                      @ encoding: [0x8c,0xbf]
3364 @ CHECK: usub16hi       r1, r1, r3      @ encoding: [0xd1,0xfa,0x43,0xf1]
3365 @ CHECK: usub8ls        r9, r2, r3      @ encoding: [0xc2,0xfa,0x43,0xf9]
3366
3367
3368 @------------------------------------------------------------------------------
3369 @ UXTAB
3370 @------------------------------------------------------------------------------
3371         uxtab r2, r3, r4
3372         uxtab r4, r5, r6, ror #0
3373         it lt
3374         uxtablt r6, r2, r9, ror #8
3375         uxtab r5, r1, r4, ror #16
3376         uxtab r7, r8, r3, ror #24
3377
3378 @ CHECK: uxtab  r2, r3, r4              @ encoding: [0x53,0xfa,0x84,0xf2]
3379 @ CHECK: uxtab  r4, r5, r6              @ encoding: [0x55,0xfa,0x86,0xf4]
3380 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
3381 @ CHECK: uxtablt r6, r2, r9, ror #8     @ encoding: [0x52,0xfa,0x99,0xf6]
3382 @ CHECK: uxtab  r5, r1, r4, ror #16     @ encoding: [0x51,0xfa,0xa4,0xf5]
3383 @ CHECK: uxtab  r7, r8, r3, ror #24     @ encoding: [0x58,0xfa,0xb3,0xf7]
3384
3385
3386 @------------------------------------------------------------------------------
3387 @ UXTAB16
3388 @------------------------------------------------------------------------------
3389         it ge
3390         uxtab16ge r0, r1, r4
3391         uxtab16 r6, r2, r7, ror #0
3392         uxtab16 r3, r5, r8, ror #8
3393         uxtab16 r3, r2, r1, ror #16
3394         it eq
3395         uxtab16eq r1, r2, r3, ror #24
3396
3397 @ CHECK: it     ge                      @ encoding: [0xa8,0xbf]
3398 @ CHECK: uxtab16ge      r0, r1, r4      @ encoding: [0x31,0xfa,0x84,0xf0]
3399 @ CHECK: uxtab16 r6, r2, r7             @ encoding: [0x32,0xfa,0x87,0xf6]
3400 @ CHECK: uxtab16 r3, r5, r8, ror #8     @ encoding: [0x35,0xfa,0x98,0xf3]
3401 @ CHECK: uxtab16 r3, r2, r1, ror #16    @ encoding: [0x32,0xfa,0xa1,0xf3]
3402 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
3403 @ CHECK: uxtab16eq r1, r2, r3, ror #24  @ encoding: [0x32,0xfa,0xb3,0xf1]
3404
3405
3406 @------------------------------------------------------------------------------
3407 @ UXTAH
3408 @------------------------------------------------------------------------------
3409         uxtah r1, r3, r9
3410         it hi
3411         uxtahhi r6, r1, r6, ror #0
3412         uxtah r3, r8, r3, ror #8
3413         it lo
3414         uxtahlo r2, r2, r4, ror #16
3415         uxtah r9, r3, r3, ror #24
3416
3417 @ CHECK: uxtah  r1, r3, r9              @ encoding: [0x13,0xfa,0x89,0xf1]
3418 @ CHECK: it     hi                      @ encoding: [0x88,0xbf]
3419 @ CHECK: uxtahhi r6, r1, r6             @ encoding: [0x11,0xfa,0x86,0xf6]
3420 @ CHECK: uxtah  r3, r8, r3, ror #8      @ encoding: [0x18,0xfa,0x93,0xf3]
3421 @ CHECK: it     lo                      @ encoding: [0x38,0xbf]
3422 @ CHECK: uxtahlo r2, r2, r4, ror #16    @ encoding: [0x12,0xfa,0xa4,0xf2]
3423 @ CHECK: uxtah  r9, r3, r3, ror #24     @ encoding: [0x13,0xfa,0xb3,0xf9]
3424
3425
3426 @------------------------------------------------------------------------------
3427 @ UXTB
3428 @------------------------------------------------------------------------------
3429         it ge
3430         uxtbge r2, r4
3431         uxtb r5, r6, ror #0
3432         uxtb r6, r9, ror #8
3433         it cc
3434         uxtbcc r5, r1, ror #16
3435         uxtb r8, r3, ror #24
3436         uxtb.w  r7, r8
3437
3438 @ CHECK: it     ge                      @ encoding: [0xa8,0xbf]
3439 @ CHECK: uxtbge r2, r4                  @ encoding: [0xe2,0xb2]
3440 @ CHECK: uxtb   r5, r6                  @ encoding: [0xf5,0xb2]
3441 @ CHECK: uxtb.w r6, r9, ror #8          @ encoding: [0x5f,0xfa,0x99,0xf6]
3442 @ CHECK: it     lo                      @ encoding: [0x38,0xbf]
3443 @ CHECK: uxtblo.w       r5, r1, ror #16 @ encoding: [0x5f,0xfa,0xa1,0xf5]
3444 @ CHECK: uxtb.w r8, r3, ror #24         @ encoding: [0x5f,0xfa,0xb3,0xf8]
3445 @ CHECK: uxtb.w r7, r8                  @ encoding: [0x5f,0xfa,0x88,0xf7]
3446
3447
3448 @------------------------------------------------------------------------------
3449 @ UXTB16
3450 @------------------------------------------------------------------------------
3451         uxtb16 r1, r4
3452         uxtb16 r6, r7, ror #0
3453         it cs
3454         uxtb16cs r3, r5, ror #8
3455         uxtb16 r3, r1, ror #16
3456         it ge
3457         uxtb16ge r2, r3, ror #24
3458
3459 @ CHECK: uxtb16 r1, r4                  @ encoding: [0x3f,0xfa,0x84,0xf1]
3460 @ CHECK: uxtb16 r6, r7                  @ encoding: [0x3f,0xfa,0x87,0xf6]
3461 @ CHECK: it     hs                      @ encoding: [0x28,0xbf]
3462 @ CHECK: uxtb16hs       r3, r5, ror #8  @ encoding: [0x3f,0xfa,0x95,0xf3]
3463 @ CHECK: uxtb16 r3, r1, ror #16         @ encoding: [0x3f,0xfa,0xa1,0xf3]
3464 @ CHECK: it     ge                      @ encoding: [0xa8,0xbf]
3465 @ CHECK: uxtb16ge       r2, r3, ror #24 @ encoding: [0x3f,0xfa,0xb3,0xf2]
3466
3467
3468 @------------------------------------------------------------------------------
3469 @ UXTH
3470 @------------------------------------------------------------------------------
3471         it ne
3472         uxthne r3, r9
3473         uxth r1, r6, ror #0
3474         uxth r3, r8, ror #8
3475         it le
3476         uxthle r2, r2, ror #16
3477         uxth r9, r3, ror #24
3478         uxth.w  r7, r8
3479
3480 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
3481 @ CHECK: uxthne.w       r3, r9          @ encoding: [0x1f,0xfa,0x89,0xf3]
3482 @ CHECK: uxth   r1, r6                  @ encoding: [0xb1,0xb2]
3483 @ CHECK: uxth.w r3, r8, ror #8          @ encoding: [0x1f,0xfa,0x98,0xf3]
3484 @ CHECK: it     le                      @ encoding: [0xd8,0xbf]
3485 @ CHECK: uxthle.w       r2, r2, ror #16 @ encoding: [0x1f,0xfa,0xa2,0xf2]
3486 @ CHECK: uxth.w r9, r3, ror #24         @ encoding: [0x1f,0xfa,0xb3,0xf9]
3487 @ CHECK: uxth.w r7, r8                  @ encoding: [0x1f,0xfa,0x88,0xf7]
3488
3489 @------------------------------------------------------------------------------
3490 @ WFE/WFI/YIELD/HINT
3491 @------------------------------------------------------------------------------
3492         wfe
3493         wfi
3494         yield
3495         itet lt
3496         wfelt
3497         wfige
3498         yieldlt
3499         hint.w #4
3500         hint #3
3501         hint #2
3502         hint #1
3503         hint #0
3504
3505 @ CHECK: wfe                            @ encoding: [0x20,0xbf]
3506 @ CHECK: wfi                            @ encoding: [0x30,0xbf]
3507 @ CHECK: yield                          @ encoding: [0x10,0xbf]
3508 @ CHECK: itet   lt                      @ encoding: [0xb6,0xbf]
3509 @ CHECK: wfelt                          @ encoding: [0x20,0xbf]
3510 @ CHECK: wfige                          @ encoding: [0x30,0xbf]
3511 @ CHECK: yieldlt                        @ encoding: [0x10,0xbf]
3512 @ CHECK: sev.w                          @ encoding: [0xaf,0xf3,0x04,0x80]
3513 @ CHECK: wfi.w                          @ encoding: [0xaf,0xf3,0x03,0x80]
3514 @ CHECK: wfe.w                          @ encoding: [0xaf,0xf3,0x02,0x80]
3515 @ CHECK: yield.w                        @ encoding: [0xaf,0xf3,0x01,0x80]
3516 @ CHECK: nop.w                          @ encoding: [0xaf,0xf3,0x00,0x80]
3517
3518
3519 @------------------------------------------------------------------------------
3520 @ Alternate syntax for LDR*(literal) encodings
3521 @------------------------------------------------------------------------------
3522         ldrb r11, [pc, #22]
3523         ldrh r11, [pc, #22]
3524         ldrsb r11, [pc, #22]
3525         ldrsh r11, [pc, #22]
3526         ldr.w r11, [pc, #22]
3527         ldrb.w r11, [pc, #22]
3528         ldrh.w r11, [pc, #22]
3529         ldrsb.w r11, [pc, #22]
3530         ldrsh.w r11, [pc, #22]
3531
3532 @ CHECK: ldrb.w r11, [pc, #22]        @ encoding: [0x9f,0xf8,0x16,0xb0]
3533 @ CHECK: ldrh.w r11, [pc, #22]        @ encoding: [0xbf,0xf8,0x16,0xb0]
3534 @ CHECK: ldrsb.w r11, [pc, #22]       @ encoding: [0x9f,0xf9,0x16,0xb0]
3535 @ CHECK: ldrsh.w r11, [pc, #22]       @ encoding: [0xbf,0xf9,0x16,0xb0]
3536 @ CHECK: ldr.w r11, [pc, #22]         @ encoding: [0xdf,0xf8,0x16,0xb0]
3537 @ CHECK: ldrb.w r11, [pc, #22]        @ encoding: [0x9f,0xf8,0x16,0xb0]
3538 @ CHECK: ldrh.w r11, [pc, #22]        @ encoding: [0xbf,0xf8,0x16,0xb0]
3539 @ CHECK: ldrsb.w r11, [pc, #22]       @ encoding: [0x9f,0xf9,0x16,0xb0]
3540 @ CHECK: ldrsh.w r11, [pc, #22]       @ encoding: [0xbf,0xf9,0x16,0xb0]
3541
3542         ldr r11, [pc, #-22]
3543         ldrb r11, [pc, #-22]
3544         ldrh r11, [pc, #-22]
3545         ldrsb r11, [pc, #-22]
3546         ldrsh r11, [pc, #-22]
3547         ldr.w r11, [pc, #-22]
3548         ldrb.w r11, [pc, #-22]
3549         ldrh.w r11, [pc, #-22]
3550         ldrsb.w r11, [pc, #-22]
3551         ldrsh.w r11, [pc, #-22]
3552
3553 @ CHECK: ldr.w  r11, [pc, #-22]         @ encoding: [0x5f,0xf8,0x16,0xb0]
3554 @ CHECK: ldrb.w r11, [pc, #-22]         @ encoding: [0x1f,0xf8,0x16,0xb0]
3555 @ CHECK: ldrh.w r11, [pc, #-22]         @ encoding: [0x3f,0xf8,0x16,0xb0]
3556 @ CHECK: ldrsb.w r11, [pc, #-22]        @ encoding: [0x1f,0xf9,0x16,0xb0]
3557 @ CHECK: ldrsh.w r11, [pc, #-22]        @ encoding: [0x3f,0xf9,0x16,0xb0]
3558 @ CHECK: ldr.w  r11, [pc, #-22]         @ encoding: [0x5f,0xf8,0x16,0xb0]
3559 @ CHECK: ldrb.w r11, [pc, #-22]         @ encoding: [0x1f,0xf8,0x16,0xb0]
3560 @ CHECK: ldrh.w r11, [pc, #-22]         @ encoding: [0x3f,0xf8,0x16,0xb0]
3561 @ CHECK: ldrsb.w r11, [pc, #-22]        @ encoding: [0x1f,0xf9,0x16,0xb0]
3562 @ CHECK: ldrsh.w r11, [pc, #-22]        @ encoding: [0x3f,0xf9,0x16,0xb0]
3563
3564 @ rdar://12596361
3565         ldr r1, [pc, #12]
3566 @ CHECK: ldr.n r1, [pc, #12]        @ encoding: [0x03,0x49]