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