Add fixed bits to correctly distinguish Thumb2 SSAT/SSAT16's.
[oota-llvm.git] / test / MC / Disassembler / ARM / thumb2.txt
1 # RUN: llvm-mc -triple=thumbv7-apple-darwin -disassemble < %s | FileCheck %s
2
3 #------------------------------------------------------------------------------
4 # ADC (immediate)
5 #------------------------------------------------------------------------------
6 # CHECK: adc r0, r1, #4
7 # CHECK: adcs r0, r1, #0
8 # CHECK: adc r1, r2, #255
9 # CHECK: adc r3, r7, #5570645
10 # CHECK: adc r8, r12, #2852170240
11 # CHECK: adc r9, r7, #2779096485
12 # CHECK: adc r5, r3, #2264924160
13 # CHECK: adc r4, r2, #2139095040
14 # CHECK: adc r4, r2, #1664
15
16 0x41 0xf1 0x04 0x00
17 0x51 0xf1 0x00 0x00
18 0x42 0xf1 0xff 0x01
19 0x47 0xf1 0x55 0x13
20 0x4c 0xf1 0xaa 0x28
21 0x47 0xf1 0xa5 0x39
22 0x43 0xf1 0x07 0x45
23 0x42 0xf1 0xff 0x44
24 0x42 0xf5 0xd0 0x64
25
26 #------------------------------------------------------------------------------
27 # ADC (register)
28 #------------------------------------------------------------------------------
29 # CHECK: adc.w r4, r5, r6
30 # CHECK: adcs.w r4, r5, r6
31 # CHECK: adc.w r9, r1, r3
32 # CHECK: adcs.w r9, r1, r3
33 # CHECK: adc.w r0, r1, r3, ror #4
34 # CHECK: adcs.w  r0, r1, r3, lsl #7
35 # CHECK: adc.w r0, r1, r3, lsr #31
36 # CHECK: adcs.w  r0, r1, r3, asr #32
37
38 0x45 0xeb 0x06 0x04
39 0x55 0xeb 0x06 0x04
40 0x41 0xeb 0x03 0x09
41 0x51 0xeb 0x03 0x09
42 0x41 0xeb 0x33 0x10
43 0x51 0xeb 0xc3 0x10
44 0x41 0xeb 0xd3 0x70
45 0x51 0xeb 0x23 0x00
46
47
48 #------------------------------------------------------------------------------
49 # ADD (immediate)
50 #------------------------------------------------------------------------------
51 # CHECK: itet eq
52 # CHECK: addeq r1, r2, #4
53 # CHECK: addwne r5, r3, #1023
54 # CHECK: addweq r4, r5, #293
55 # CHECK: add.w r2, sp, #1024
56 # CHECK: add.w r2, r8, #65280
57 # CHECK: addw r2, r3, #257
58 # CHECK: add.w r12, r6, #256
59 # CHECK: addw r12, r6, #256
60 # CHECK: adds.w r1, r2, #496
61
62 0x0a 0xbf
63 0x11 0x1d
64 0x03 0xf2 0xff 0x35
65 0x05 0xf2 0x25 0x14
66 0x0d 0xf5 0x80 0x62
67 0x08 0xf5 0x7f 0x42
68 0x03 0xf2 0x01 0x12
69 0x06 0xf5 0x80 0x7c
70 0x06 0xf2 0x00 0x1c
71 0x12 0xf5 0xf8 0x71
72
73
74 #------------------------------------------------------------------------------
75 # ADD (register)
76 #------------------------------------------------------------------------------
77 # CHECK: add.w r1, r2, r8
78 # CHECK: add.w r5, r9, r2, asr #32
79 # CHECK: adds.w r7, r3, r1, lsl #31
80 # CHECK: adds.w r0, r3, r6, lsr #25
81 # CHECK: add.w r4, r8, r1, ror #12
82
83 0x02 0xeb 0x08 0x01
84 0x09 0xeb 0x22 0x05
85 0x13 0xeb 0xc1 0x77
86 0x13 0xeb 0x56 0x60
87 0x08 0xeb 0x31 0x34
88
89
90 #------------------------------------------------------------------------------
91 # ADR
92 #------------------------------------------------------------------------------
93 # CHECK: subw r11, pc, #3270
94 # CHECK: subw r11, pc, #826
95
96 0xaf 0xf6 0xc6 0x4b
97 0xaf 0xf2 0x3a 0x3b
98
99 #------------------------------------------------------------------------------
100 # AND (immediate)
101 #------------------------------------------------------------------------------
102 # CHECK: and r2, r5, #1044480
103 # CHECK: ands r3, r12, #15
104 # CHECK: and r1, r1, #255
105
106 0x05 0xf4 0x7f 0x22
107 0x1c 0xf0 0x0f 0x03
108 0x01 0xf0 0xff 0x01
109
110
111 #------------------------------------------------------------------------------
112 # AND (register)
113 #------------------------------------------------------------------------------
114 # CHECK: and.w r4, r9, r8
115 # CHECK: and.w r1, r4, r8, asr #3
116 # CHECK: ands.w r2, r1, r7, lsl #1
117 # CHECK: ands.w r4, r5, r2, lsr #20
118 # CHECK: and.w r9, r12, r1, ror #17
119
120 0x09 0xea 0x08 0x04
121 0x04 0xea 0xe8 0x01
122 0x11 0xea 0x47 0x02
123 0x15 0xea 0x12 0x54
124 0x0c 0xea 0x71 0x49
125
126 #------------------------------------------------------------------------------
127 # ASR (immediate)
128 #------------------------------------------------------------------------------
129 # CHECK: asr.w r2, r3, #12
130 # CHECK: asrs.w r8, r3, #32
131 # CHECK: asrs.w r2, r3, #1
132 # CHECK: asr.w r2, r3, #4
133 # CHECK: asrs.w r2, r12, #15
134
135 # CHECK: asr.w r3, r3, #19
136 # CHECK: asrs.w r8, r8, #2
137 # CHECK: asrs.w r7, r7, #5
138 # CHECK: asr.w r12, r12, #21
139
140 0x4f 0xea 0x23 0x32
141 0x5f 0xea 0x23 0x08
142 0x5f 0xea 0x63 0x02
143 0x4f 0xea 0x23 0x12
144 0x5f 0xea 0xec 0x32
145
146 0x4f 0xea 0xe3 0x43
147 0x5f 0xea 0xa8 0x08
148 0x5f 0xea 0x67 0x17
149 0x4f 0xea 0x6c 0x5c
150
151
152 #------------------------------------------------------------------------------
153 # ASR (register)
154 #------------------------------------------------------------------------------
155 # CHECK: asr.w r3, r4, r2
156 # CHECK: asr.w r1, r1, r2
157 # CHECK: asrs.w r3, r4, r8
158
159 0x44 0xfa 0x02 0xf3
160 0x41 0xfa 0x02 0xf1
161 0x54 0xfa 0x08 0xf3
162
163 #------------------------------------------------------------------------------
164 # B
165 #------------------------------------------------------------------------------
166 # CHECK: bmi.w   #-183396
167
168 0x13 0xf5 0xce 0xa9
169
170
171 #------------------------------------------------------------------------------
172 # BFC
173 #------------------------------------------------------------------------------
174 # CHECK: bfc r5, #3, #17
175 # CHECK: it lo
176 # CHECK: bfclo r5, #3, #17
177
178 0x6f 0xf3 0xd3 0x05
179 0x38 0xbf
180 0x6f 0xf3 0xd3 0x05
181
182
183 #------------------------------------------------------------------------------
184 # BFI
185 #------------------------------------------------------------------------------
186 # CHECK: bfi r5, r2, #3, #17
187 # CHECK: it ne
188 # CHECK: bfine r5, r2, #3, #17
189
190 0x62 0xf3 0xd3 0x05
191 0x18 0xbf
192 0x62 0xf3 0xd3 0x05
193
194
195 #------------------------------------------------------------------------------
196 # BIC
197 #------------------------------------------------------------------------------
198 # CHECK: bic r10, r1, #15
199 # CHECK: bic.w r12, r3, r6
200 # CHECK: bic.w r11, r2, r6, lsl #12
201 # CHECK: bic.w r8, r4, r1, lsr #11
202 # CHECK: bic.w r7, r5, r7, lsr #15
203 # CHECK: bic.w r6, r7, r9, asr #32
204 # CHECK: bic.w r5, r6, r8, ror #1
205
206 # CHECK: bic r1, r1, #15
207 # CHECK: bic.w r1, r1, r1
208 # CHECK: bic.w r4, r4, r2, lsl #31
209 # CHECK: bic.w r6, r6, r3, lsr #12
210 # CHECK: bic.w r7, r7, r4, lsr #7
211 # CHECK: bic.w r8, r8, r5, asr #15
212 # CHECK: bic.w r12, r12, r6, ror #29
213
214 0x21 0xf0 0x0f 0x0a
215 0x23 0xea 0x06 0x0c
216 0x22 0xea 0x06 0x3b
217 0x24 0xea 0xd1 0x28
218 0x25 0xea 0xd7 0x37
219 0x27 0xea 0x29 0x06
220 0x26 0xea 0x78 0x05
221
222 0x21 0xf0 0x0f 0x01
223 0x21 0xea 0x01 0x01
224 0x24 0xea 0xc2 0x74
225 0x26 0xea 0x13 0x36
226 0x27 0xea 0xd4 0x17
227 0x28 0xea 0xe5 0x38
228 0x2c 0xea 0x76 0x7c
229
230
231 #------------------------------------------------------------------------------
232 # BXJ
233 #------------------------------------------------------------------------------
234 # CHECK: bxj r5
235 # CHECK: it ne
236 # CHECK: bxjne r7
237
238 0xc5 0xf3 0x00 0x8f
239 0x18 0xbf
240 0xc7 0xf3 0x00 0x8f
241
242
243 #------------------------------------------------------------------------------
244 # CBZ/CBNZ
245 #------------------------------------------------------------------------------
246 # CHECK: cbnz    r7, #6
247 # CHECK: cbnz    r7, #12
248
249 0x1f 0xb9
250 0x37 0xb9
251
252 #------------------------------------------------------------------------------
253 # CDP/CDP2
254 #------------------------------------------------------------------------------
255 # CHECK: cdp  p7, #1, c1, c1, c1, #4
256 # CHECK: cdp2  p7, #1, c1, c1, c1, #4
257
258 0x11 0xee 0x81 0x17
259 0x11 0xfe 0x81 0x17
260
261
262 #------------------------------------------------------------------------------
263 # CLREX
264 #------------------------------------------------------------------------------
265 #CHECK: clrex
266 #CHECK: it ne
267 #CHECK: clrexne
268
269 0xbf 0xf3 0x2f 0x8f
270 0x18 0xbf
271 0xbf 0xf3 0x2f 0x8f
272
273
274 #------------------------------------------------------------------------------
275 # CLZ
276 #------------------------------------------------------------------------------
277 #CHECK: clz r1, r2
278 #CHECK: it eq
279 #CHECK: clzeq r1, r2
280
281 0xb2 0xfa 0x82 0xf1
282 0x08 0xbf
283 0xb2 0xfa 0x82 0xf1
284
285
286 #------------------------------------------------------------------------------
287 # CMN
288 #------------------------------------------------------------------------------
289 #CHECK: cmn.w r1, #15
290 #CHECK: cmn.w r8, r6
291 #CHECK: cmn.w r1, r6, lsl #10
292 #CHECK: cmn.w r1, r6, lsr #10
293 #CHECK: cmn.w sp, r6, lsr #10
294 #CHECK: cmn.w r1, r6, asr #10
295 #CHECK: cmn.w r1, r6, ror #10
296
297 0x11 0xf1 0x0f 0x0f
298 0x18 0xeb 0x06 0x0f
299 0x11 0xeb 0x86 0x2f
300 0x11 0xeb 0x96 0x2f
301 0x1d 0xeb 0x96 0x2f
302 0x11 0xeb 0xa6 0x2f
303 0x11 0xeb 0xb6 0x2f
304
305
306 #------------------------------------------------------------------------------
307 # CMP
308 #------------------------------------------------------------------------------
309 #CHECK: cmp.w r5, #65280
310 #CHECK: cmp.w r4, r12
311 #CHECK: cmp.w r9, r6, lsl #12
312 #CHECK: cmp.w r3, r7, lsr #31
313 #CHECK: cmp.w sp, r6, lsr #1
314 #CHECK: cmp.w r2, r5, asr #24
315 #CHECK: cmp.w r1, r4, ror #15
316
317 0xb5 0xf5 0x7f 0x4f
318 0xb4 0xeb 0x0c 0x0f
319 0xb9 0xeb 0x06 0x3f
320 0xb3 0xeb 0xd7 0x7f
321 0xbd 0xeb 0x56 0x0f
322 0xb2 0xeb 0x25 0x6f
323 0xb1 0xeb 0xf4 0x3f
324
325
326 #------------------------------------------------------------------------------
327 # DBG
328 #------------------------------------------------------------------------------
329 #CHECK: dbg #5
330 #CHECK: dbg #0
331 #CHECK: dbg #15
332
333 0xaf 0xf3 0xf5 0x80
334 0xaf 0xf3 0xf0 0x80
335 0xaf 0xf3 0xff 0x80
336
337
338 #------------------------------------------------------------------------------
339 # DMB
340 #------------------------------------------------------------------------------
341 #CHECK: dmb sy
342 #CHECK: dmb st
343 #CHECK: dmb ish
344 #CHECK: dmb ishst
345 #CHECK: dmb nsh
346 #CHECK: dmb nshst
347 #CHECK: dmb osh
348 #CHECK: dmb oshst
349 #CHECK: dmb
350
351 0xbf 0xf3 0x5f 0x8f
352 0xbf 0xf3 0x5e 0x8f
353 0xbf 0xf3 0x5b 0x8f
354 0xbf 0xf3 0x5a 0x8f
355 0xbf 0xf3 0x57 0x8f
356 0xbf 0xf3 0x56 0x8f
357 0xbf 0xf3 0x53 0x8f
358 0xbf 0xf3 0x52 0x8f
359 0xbf 0xf3 0x5f 0x8f
360
361
362 #------------------------------------------------------------------------------
363 # DSB
364 #------------------------------------------------------------------------------
365 #CHECK: dsb sy
366 #CHECK: dsb st
367 #CHECK: dsb ish
368 #CHECK: dsb ishst
369 #CHECK: dsb nsh
370 #CHECK: dsb nshst
371 #CHECK: dsb osh
372 #CHECK: dsb oshst
373
374 0xbf 0xf3 0x4f 0x8f
375 0xbf 0xf3 0x4e 0x8f
376 0xbf 0xf3 0x4b 0x8f
377 0xbf 0xf3 0x4a 0x8f
378 0xbf 0xf3 0x47 0x8f
379 0xbf 0xf3 0x46 0x8f
380 0xbf 0xf3 0x43 0x8f
381 0xbf 0xf3 0x42 0x8f
382
383
384 #------------------------------------------------------------------------------
385 # EOR
386 #------------------------------------------------------------------------------
387 #CHECK: eor r4, r5, #61440
388 #CHECK: eor.w r4, r5, r6
389 #CHECK: eor.w r4, r5, r6, lsl #5
390 #CHECK: eor.w r4, r5, r6, lsr #5
391 #CHECK: eor.w r4, r5, r6, lsr #5
392 #CHECK: eor.w r4, r5, r6, asr #5
393 #CHECK: eor.w r4, r5, r6, ror #5
394
395 0x85 0xf4 0x70 0x44
396 0x85 0xea 0x06 0x04
397 0x85 0xea 0x46 0x14
398 0x85 0xea 0x56 0x14
399 0x85 0xea 0x56 0x14
400 0x85 0xea 0x66 0x14
401 0x85 0xea 0x76 0x14
402
403
404 #------------------------------------------------------------------------------
405 # ISB
406 #------------------------------------------------------------------------------
407 #CHECK: isb sy
408
409 0xbf 0xf3 0x6f 0x8f
410
411 #------------------------------------------------------------------------------
412 # IT
413 #------------------------------------------------------------------------------
414 # Test encodings of a few full IT blocks, not just the IT instruction
415
416 # CHECK: iteet eq
417 # CHECK: addeq r0, r1, r2
418 # CHECK: nopne
419 # CHECK: subne r5, r6, r7
420 # CHECK: addeq r1, r2, #4
421
422 0x0d 0xbf
423 0x88 0x18
424 0x00 0xbf
425 0xf5 0x1b
426 0x11 0x1d
427
428 # CHECK: ittee ls
429 # CHECK: addls r0, r1, r2
430 # CHECK: nopls
431 # CHECK: subhi r5, r6, r7
432 # CHECK: addhi r1, r2, #4
433
434 0x99 0xbf
435 0x88 0x18
436 0x00 0xbf
437 0xf5 0x1b
438 0x11 0x1d
439
440
441 #------------------------------------------------------------------------------
442 # LDMIA
443 #------------------------------------------------------------------------------
444 # CHECK: ldm.w r4, {r4, r5, r8, r9}
445 # CHECK: ldm.w r4, {r5, r6}
446 # CHECK: ldm.w r5!, {r3, r8}
447 # CHECK: ldm.w r4, {r4, r5, r8, r9}
448 # CHECK: ldm.w r4, {r5, r6}
449 # CHECK: ldm.w r5!, {r3, r8}
450 # CHECK: ldm.w r5!, {r1, r2}
451 # CHECK: ldm.w r2, {r1, r2}
452
453 # CHECK: ldm.w r4, {r4, r5, r8, r9}
454 # CHECK: ldm.w r4, {r5, r6}
455 # CHECK: ldm.w r5!, {r3, r8}
456 # CHECK: ldm.w r4, {r4, r5, r8, r9}
457 # CHECK: ldm.w r4, {r5, r6}
458 # CHECK: ldm.w r5!, {r3, r8}
459 # CHECK: ldm.w r5!, {r3, r8}
460
461 0x94 0xe8 0x30 0x03
462 0x94 0xe8 0x60 0x00
463 0xb5 0xe8 0x08 0x01
464 0x94 0xe8 0x30 0x03
465 0x94 0xe8 0x60 0x00
466 0xb5 0xe8 0x08 0x01
467 0xb5 0xe8 0x06 0x00
468 0x92 0xe8 0x06 0x00
469
470 0x94 0xe8 0x30 0x03
471 0x94 0xe8 0x60 0x00
472 0xb5 0xe8 0x08 0x01
473 0x94 0xe8 0x30 0x03
474 0x94 0xe8 0x60 0x00
475 0xb5 0xe8 0x08 0x01
476 0xb5 0xe8 0x08 0x01
477
478
479 #------------------------------------------------------------------------------
480 # LDMDB
481 #------------------------------------------------------------------------------
482 # CHECK: ldmdb r4, {r4, r5, r8, r9}
483 # CHECK: ldmdb r4, {r5, r6}
484 # CHECK: ldmdb r5!, {r3, r8}
485 # CHECK: ldmdb r5!, {r3, r8}
486
487 0x14 0xe9 0x30 0x03
488 0x14 0xe9 0x60 0x00
489 0x35 0xe9 0x08 0x01
490 0x35 0xe9 0x08 0x01
491
492
493 #------------------------------------------------------------------------------
494 # LDR(immediate)
495 #------------------------------------------------------------------------------
496 # CHECK: ldr r5, [r5, #-4]
497 # CHECK: ldr r5, [r6, #32]
498 # CHECK: ldr.w r5, [r6, #33]
499 # CHECK: ldr.w r5, [r6, #257]
500 # CHECK: ldr.w pc, [r7, #257]
501
502 0x55 0xf8 0x04 0x5c
503 0x35 0x6a
504 0xd6 0xf8 0x21 0x50
505 0xd6 0xf8 0x01 0x51
506 0xd7 0xf8 0x01 0xf1
507
508
509 #------------------------------------------------------------------------------
510 # LDR(register)
511 #------------------------------------------------------------------------------
512 # CHECK: ldr.w r1, [r8, r1]
513 # CHECK: ldr.w r4, [r5, r2]
514 # CHECK: ldr.w r6, [r0, r2, lsl #3]
515 # CHECK: ldr.w r8, [r8, r2, lsl #2]
516 # CHECK: ldr.w r7, [sp, r2, lsl #1]
517 # CHECK: ldr.w r7, [sp, r2]
518 # CHECK: ldr r2, [r4, #255]!
519 # CHECK: ldr r8, [sp, #4]!
520 # CHECK: ldr lr, [sp, #-4]!
521 # CHECK: ldr r2, [r4], #255
522 # CHECK: ldr r8, [sp], #4
523 # CHECK: ldr lr, [sp], #-4
524
525 0x58 0xf8 0x01 0x10
526 0x55 0xf8 0x02 0x40
527 0x50 0xf8 0x32 0x60
528 0x58 0xf8 0x22 0x80
529 0x5d 0xf8 0x12 0x70
530 0x5d 0xf8 0x02 0x70
531 0x54 0xf8 0xff 0x2f
532 0x5d 0xf8 0x04 0x8f
533 0x5d 0xf8 0x04 0xed
534 0x54 0xf8 0xff 0x2b
535 0x5d 0xf8 0x04 0x8b
536 0x5d 0xf8 0x04 0xe9
537
538
539 #------------------------------------------------------------------------------
540 # LDRB(immediate)
541 #------------------------------------------------------------------------------
542 # CHECK: ldrb r5, [r5, #-4]
543 # CHECK: ldrb.w r5, [r6, #32]
544 # CHECK: ldrb.w r5, [r6, #33]
545 # CHECK: ldrb.w r5, [r6, #257]
546 # CHECK: ldrb.w lr, [r7, #257]
547
548 0x15 0xf8 0x04 0x5c
549 0x96 0xf8 0x20 0x50
550 0x96 0xf8 0x21 0x50
551 0x96 0xf8 0x01 0x51
552 0x97 0xf8 0x01 0xe1
553
554
555 #------------------------------------------------------------------------------
556 # LDRB(register)
557 #------------------------------------------------------------------------------
558 # CHECK: ldrb.w r1, [r8, r1]
559 # CHECK: ldrb.w r4, [r5, r2]
560 # CHECK: ldrb.w r6, [r0, r2, lsl #3]
561 # CHECK: ldrb.w r8, [r8, r2, lsl #2]
562 # CHECK: ldrb.w r7, [sp, r2, lsl #1]
563 # CHECK: ldrb.w r7, [sp, r2]
564 # CHECK: ldrb r5, [r8, #255]!
565 # CHECK: ldrb r2, [r5, #4]!
566 # CHECK: ldrb r1, [r4, #-4]!
567 # CHECK: ldrb lr, [r3], #255
568 # CHECK: ldrb r9, [r2], #4
569 # CHECK: ldrb r3, [sp], #-4
570
571 0x18 0xf8 0x01 0x10
572 0x15 0xf8 0x02 0x40
573 0x10 0xf8 0x32 0x60
574 0x18 0xf8 0x22 0x80
575 0x1d 0xf8 0x12 0x70
576 0x1d 0xf8 0x02 0x70
577 0x18 0xf8 0xff 0x5f
578 0x15 0xf8 0x04 0x2f
579 0x14 0xf8 0x04 0x1d
580 0x13 0xf8 0xff 0xeb
581 0x12 0xf8 0x04 0x9b
582 0x1d 0xf8 0x04 0x39
583
584
585 #------------------------------------------------------------------------------
586 # LDRBT
587 #------------------------------------------------------------------------------
588 # CHECK: ldrbt r1, [r2]
589 # CHECK: ldrbt r1, [r8]
590 # CHECK: ldrbt r1, [r8, #3]
591 # CHECK: ldrbt r1, [r8, #255]
592
593 0x12 0xf8 0x00 0x1e
594 0x18 0xf8 0x00 0x1e
595 0x18 0xf8 0x03 0x1e
596 0x18 0xf8 0xff 0x1e
597
598
599 #------------------------------------------------------------------------------
600 # LDRD(immediate)
601 #------------------------------------------------------------------------------
602 # CHECK: ldrd r3, r5, [r6, #24]
603 # CHECK: ldrd r3, r5, [r6, #24]!
604 # CHECK: ldrd r3, r5, [r6], #4
605 # CHECK: ldrd r3, r5, [r6], #-8
606 # CHECK: ldrd r3, r5, [r6]
607 # CHECK: ldrd r8, r1, [r3]
608
609 0xd6 0xe9 0x06 0x35
610 0xf6 0xe9 0x06 0x35
611 0xf6 0xe8 0x01 0x35
612 0x76 0xe8 0x02 0x35
613 0xd6 0xe9 0x00 0x35
614 0xd3 0xe9 0x00 0x81
615
616
617 #------------------------------------------------------------------------------
618 # FIXME: LDRD(literal)
619 #------------------------------------------------------------------------------
620
621
622 #------------------------------------------------------------------------------
623 # LDREX/LDREXB/LDREXH/LDREXD
624 #------------------------------------------------------------------------------
625 # CHECK: ldrex r1, [r4]
626 # CHECK: ldrex r8, [r4]
627 # CHECK: ldrex r2, [sp, #128]
628 # CHECK: ldrexb r5, [r7]
629 # CHECK: ldrexh r9, [r12]
630 # CHECK: ldrexd r9, r3, [r4]
631
632 0x54 0xe8 0x00 0x1f
633 0x54 0xe8 0x00 0x8f
634 0x5d 0xe8 0x20 0x2f
635 0xd7 0xe8 0x4f 0x5f
636 0xdc 0xe8 0x5f 0x9f
637 0xd4 0xe8 0x7f 0x93
638
639
640 #------------------------------------------------------------------------------
641 # LDRH(immediate)
642 #------------------------------------------------------------------------------
643 # CHECK: ldrh r5, [r5, #-4]
644 # CHECK: ldrh r5, [r6, #32]
645 # CHECK: ldrh.w r5, [r6, #33]
646 # CHECK: ldrh.w r5, [r6, #257]
647 # CHECK: ldrh.w lr, [r7, #257]
648
649 0x35 0xf8 0x04 0x5c
650 0x35 0x8c
651 0xb6 0xf8 0x21 0x50
652 0xb6 0xf8 0x01 0x51
653 0xb7 0xf8 0x01 0xe1
654
655
656 #------------------------------------------------------------------------------
657 # LDRH(register)
658 #------------------------------------------------------------------------------
659 # CHECK: ldrh.w r1, [r8, r1]
660 # CHECK: ldrh.w r4, [r5, r2]
661 # CHECK: ldrh.w r6, [r0, r2, lsl #3]
662 # CHECK: ldrh.w r8, [r8, r2, lsl #2]
663 # CHECK: ldrh.w r7, [sp, r2, lsl #1]
664 # CHECK: ldrh.w r7, [sp, r2]
665 # CHECK: ldrh r5, [r8, #255]!
666 # CHECK: ldrh r2, [r5, #4]!
667 # CHECK: ldrh r1, [r4, #-4]!
668 # CHECK: ldrh lr, [r3], #255
669 # CHECK: ldrh r9, [r2], #4
670 # CHECK: ldrh r3, [sp], #-4
671
672 0x38 0xf8 0x01 0x10
673 0x35 0xf8 0x02 0x40
674 0x30 0xf8 0x32 0x60
675 0x38 0xf8 0x22 0x80
676 0x3d 0xf8 0x12 0x70
677 0x3d 0xf8 0x02 0x70
678 0x38 0xf8 0xff 0x5f
679 0x35 0xf8 0x04 0x2f
680 0x34 0xf8 0x04 0x1d
681 0x33 0xf8 0xff 0xeb
682 0x32 0xf8 0x04 0x9b
683 0x3d 0xf8 0x04 0x39
684
685
686 #------------------------------------------------------------------------------
687 # LDRSB(immediate)
688 #------------------------------------------------------------------------------
689 # CHECK: ldrsb r5, [r5, #-4]
690 # CHECK: ldrsb.w r5, [r6, #32]
691 # CHECK: ldrsb.w r5, [r6, #33]
692 # CHECK: ldrsb.w r5, [r6, #257]
693 # CHECK: ldrsb.w lr, [r7, #257]
694
695 0x15 0xf9 0x04 0x5c
696 0x96 0xf9 0x20 0x50
697 0x96 0xf9 0x21 0x50
698 0x96 0xf9 0x01 0x51
699 0x97 0xf9 0x01 0xe1
700
701
702 #------------------------------------------------------------------------------
703 # LDRSB(register)
704 #------------------------------------------------------------------------------
705 # CHECK: ldrsb.w r1, [r8, r1]
706 # CHECK: ldrsb.w r4, [r5, r2]
707 # CHECK: ldrsb.w r6, [r0, r2, lsl #3]
708 # CHECK: ldrsb.w r8, [r8, r2, lsl #2]
709 # CHECK: ldrsb.w r7, [sp, r2, lsl #1]
710 # CHECK: ldrsb.w r7, [sp, r2]
711 # CHECK: ldrsb r5, [r8, #255]!
712 # CHECK: ldrsb r2, [r5, #4]!
713 # CHECK: ldrsb r1, [r4, #-4]!
714 # CHECK: ldrsb lr, [r3], #255
715 # CHECK: ldrsb r9, [r2], #4
716 # CHECK: ldrsb r3, [sp], #-4
717
718 0x18 0xf9 0x01 0x10
719 0x15 0xf9 0x02 0x40
720 0x10 0xf9 0x32 0x60
721 0x18 0xf9 0x22 0x80
722 0x1d 0xf9 0x12 0x70
723 0x1d 0xf9 0x02 0x70
724 0x18 0xf9 0xff 0x5f
725 0x15 0xf9 0x04 0x2f
726 0x14 0xf9 0x04 0x1d
727 0x13 0xf9 0xff 0xeb
728 0x12 0xf9 0x04 0x9b
729 0x1d 0xf9 0x04 0x39
730
731
732 #------------------------------------------------------------------------------
733 # LDRSBT
734 #------------------------------------------------------------------------------
735 # CHECK: ldrsbt r1, [r2]
736 # CHECK: ldrsbt r1, [r8]
737 # CHECK: ldrsbt r1, [r8, #3]
738 # CHECK: ldrsbt r1, [r8, #255]
739
740 0x12 0xf9 0x00 0x1e
741 0x18 0xf9 0x00 0x1e
742 0x18 0xf9 0x03 0x1e
743 0x18 0xf9 0xff 0x1e
744
745
746 #------------------------------------------------------------------------------
747 # LDRSH(immediate)
748 #------------------------------------------------------------------------------
749 # CHECK: ldrsh r5, [r5, #-4]
750 # CHECK: ldrsh.w r5, [r6, #32]
751 # CHECK: ldrsh.w r5, [r6, #33]
752 # CHECK: ldrsh.w r5, [r6, #257]
753 # CHECK: ldrsh.w lr, [r7, #257]
754 # CHECK: ldrsh r10, [r5, #-0]
755
756 0x35 0xf9 0x04 0x5c
757 0xb6 0xf9 0x20 0x50
758 0xb6 0xf9 0x21 0x50
759 0xb6 0xf9 0x01 0x51
760 0xb7 0xf9 0x01 0xe1
761 0x35 0xf9 0x00 0xac
762
763 #------------------------------------------------------------------------------
764 # LDRSH(register)
765 #------------------------------------------------------------------------------
766 # CHECK: ldrsh.w r1, [r8, r1]
767 # CHECK: ldrsh.w r4, [r5, r2]
768 # CHECK: ldrsh.w r6, [r0, r2, lsl #3]
769 # CHECK: ldrsh.w r8, [r8, r2, lsl #2]
770 # CHECK: ldrsh.w r7, [sp, r2, lsl #1]
771 # CHECK: ldrsh.w r7, [sp, r2]
772 # CHECK: ldrsh r5, [r8, #255]!
773 # CHECK: ldrsh r2, [r5, #4]!
774 # CHECK: ldrsh r1, [r4, #-4]!
775 # CHECK: ldrsh lr, [r3], #255
776 # CHECK: ldrsh r9, [r2], #4
777 # CHECK: ldrsh r3, [sp], #-4
778
779 0x38 0xf9 0x01 0x10
780 0x35 0xf9 0x02 0x40
781 0x30 0xf9 0x32 0x60
782 0x38 0xf9 0x22 0x80
783 0x3d 0xf9 0x12 0x70
784 0x3d 0xf9 0x02 0x70
785 0x38 0xf9 0xff 0x5f
786 0x35 0xf9 0x04 0x2f
787 0x34 0xf9 0x04 0x1d
788 0x33 0xf9 0xff 0xeb
789 0x32 0xf9 0x04 0x9b
790 0x3d 0xf9 0x04 0x39
791
792
793 #------------------------------------------------------------------------------
794 # LDRSHT
795 #------------------------------------------------------------------------------
796 # CHECK: ldrsht r1, [r2]
797 # CHECK: ldrsht r1, [r8]
798 # CHECK: ldrsht r1, [r8, #3]
799 # CHECK: ldrsht r1, [r8, #255]
800
801 0x32 0xf9 0x00 0x1e
802 0x38 0xf9 0x00 0x1e
803 0x38 0xf9 0x03 0x1e
804 0x38 0xf9 0xff 0x1e
805
806
807 #------------------------------------------------------------------------------
808 # LDRT
809 #------------------------------------------------------------------------------
810 # CHECK: ldrt r1, [r2]
811 # CHECK: ldrt r2, [r6]
812 # CHECK: ldrt r3, [r7, #3]
813 # CHECK: ldrt r4, [r9, #255]
814
815 0x52 0xf8 0x00 0x1e
816 0x56 0xf8 0x00 0x2e
817 0x57 0xf8 0x03 0x3e
818 0x59 0xf8 0xff 0x4e
819
820
821 #------------------------------------------------------------------------------
822 # LSL (immediate)
823 #------------------------------------------------------------------------------
824 # CHECK: lsl.w r2, r3, #12
825 # CHECK: lsls.w r8, r3, #31
826 # CHECK: lsls.w r2, r3, #1
827 # CHECK: lsl.w r2, r3, #4
828 # CHECK: lsls.w r2, r12, #15
829
830 # CHECK: lsl.w r3, r3, #19
831 # CHECK: lsls.w r8, r8, #2
832 # CHECK: lsls.w r7, r7, #5
833 # CHECK: lsl.w r12, r12, #21
834
835 0x4f 0xea 0x03 0x32
836 0x5f 0xea 0xc3 0x78
837 0x5f 0xea 0x43 0x02
838 0x4f 0xea 0x03 0x12
839 0x5f 0xea 0xcc 0x32
840
841 0x4f 0xea 0xc3 0x43
842 0x5f 0xea 0x88 0x08
843 0x5f 0xea 0x47 0x17
844 0x4f 0xea 0x4c 0x5c
845
846
847 #------------------------------------------------------------------------------
848 # LSL (register)
849 #------------------------------------------------------------------------------
850 # CHECK: lsl.w r3, r4, r2
851 # CHECK: lsl.w r1, r1, r2
852 # CHECK: lsls.w r3, r4, r8
853
854 0x04 0xfa 0x02 0xf3
855 0x01 0xfa 0x02 0xf1
856 0x14 0xfa 0x08 0xf3
857
858
859 #------------------------------------------------------------------------------
860 # LSR (immediate)
861 #------------------------------------------------------------------------------
862 # CHECK: lsr.w r2, r3, #12
863 # CHECK: lsrs.w r8, r3, #32
864 # CHECK: lsrs.w r2, r3, #1
865 # CHECK: lsr.w r2, r3, #4
866 # CHECK: lsrs.w r2, r12, #15
867
868 # CHECK: lsr.w r3, r3, #19
869 # CHECK: lsrs.w r8, r8, #2
870 # CHECK: lsrs.w r7, r7, #5
871 # CHECK: lsr.w r12, r12, #21
872
873 0x4f 0xea 0x13 0x32
874 0x5f 0xea 0x13 0x08
875 0x5f 0xea 0x53 0x02
876 0x4f 0xea 0x13 0x12
877 0x5f 0xea 0xdc 0x32
878
879 0x4f 0xea 0xd3 0x43
880 0x5f 0xea 0x98 0x08
881 0x5f 0xea 0x57 0x17
882 0x4f 0xea 0x5c 0x5c
883
884
885 #------------------------------------------------------------------------------
886 # LSR (register)
887 #------------------------------------------------------------------------------
888 # CHECK: lsr.w r3, r4, r2
889 # CHECK: lsr.w r1, r1, r2
890 # CHECK: lsrs.w r3, r4, r8
891
892 0x24 0xfa 0x02 0xf3
893 0x21 0xfa 0x02 0xf1
894 0x34 0xfa 0x08 0xf3
895
896 #------------------------------------------------------------------------------
897 # MCR/MCR2
898 #------------------------------------------------------------------------------
899 # CHECK: mcr  p7, #1, r5, c1, c1, #4
900 # CHECK: mcr2  p7, #1, r5, c1, c1, #4
901
902 0x21 0xee 0x91 0x57
903 0x21 0xfe 0x91 0x57
904
905
906 #------------------------------------------------------------------------------
907 # MCRR/MCRR2
908 #------------------------------------------------------------------------------
909 # CHECK: mcrr  p7, #15, r5, r4, c1
910 # CHECK: mcrr2  p7, #15, r5, r4, c1
911
912 0x44 0xec 0xf1 0x57
913 0x44 0xfc 0xf1 0x57
914
915
916 #------------------------------------------------------------------------------
917 # MLA/MLS
918 #------------------------------------------------------------------------------
919 # CHECK: mla  r1, r2, r3, r4
920 # CHECK: mls  r1, r2, r3, r4
921
922 0x02 0xfb 0x03 0x41
923 0x02 0xfb 0x13 0x41
924
925
926 #------------------------------------------------------------------------------
927 # MOV(immediate)
928 #------------------------------------------------------------------------------
929 # CHECK: movs r1, #21
930 # CHECK: movs.w r1, #21
931 # CHECK: movs.w r8, #21
932 # CHECK: movw r0, #65535
933 # CHECK: movw r1, #43777
934 # CHECK: movw r1, #43792
935 # CHECK: mov.w r0, #66846720
936 # CHECK: mov.w r0, #66846720
937 # CHECK: movs.w r0, #66846720
938
939 0x15 0x21
940 0x5f 0xf0 0x15 0x01
941 0x5f 0xf0 0x15 0x08
942 0x4f 0xf6 0xff 0x70
943 0x4a 0xf6 0x01 0x31
944 0x4a 0xf6 0x10 0x31
945 0x4f 0xf0 0x7f 0x70
946 0x4f 0xf0 0x7f 0x70
947 0x5f 0xf0 0x7f 0x70
948
949 #------------------------------------------------------------------------------
950 # MOVT
951 #------------------------------------------------------------------------------
952 # CHECK: movt r3, #7
953 # CHECK: movt r6, #65535
954 # CHECK: it eq
955 # CHECK: movteq r4, #4080
956
957 0xc0 0xf2 0x07 0x03
958 0xcf 0xf6 0xff 0x76
959 0x08 0xbf
960 0xc0 0xf6 0xf0 0x74
961
962 #------------------------------------------------------------------------------
963 # MRC/MRC2
964 #------------------------------------------------------------------------------
965 # CHECK: mrc  p14, #0, r1, c1, c2, #4
966 # CHECK: mrc2  p14, #0, r1, c1, c2, #4
967
968 0x11 0xee 0x92 0x1e
969 0x11 0xfe 0x92 0x1e
970
971
972 #------------------------------------------------------------------------------
973 # MRRC/MRRC2
974 #------------------------------------------------------------------------------
975 # CHECK: mrrc  p7, #1, r5, r4, c1
976 # CHECK: mrrc2  p7, #1, r5, r4, c1
977
978 0x54 0xec 0x11 0x57
979 0x54 0xfc 0x11 0x57
980
981
982 #------------------------------------------------------------------------------
983 # MRS
984 #------------------------------------------------------------------------------
985 # CHECK: mrs  r8, apsr
986 # CHECK: mrs  r8, spsr
987
988 0xef 0xf3 0x00 0x88
989 0xff 0xf3 0x00 0x88
990
991
992 #------------------------------------------------------------------------------
993 # MSR
994 #------------------------------------------------------------------------------
995 # CHECK: msr  APSR_nzcvq, r1
996 # CHECK: msr  APSR_g, r2
997 # CHECK: msr  APSR_nzcvq, r3
998 # CHECK: msr  APSR_nzcvq, r4
999 # CHECK: msr  APSR_nzcvqg, r5
1000 # CHECK: msr  CPSR_fc, r6
1001 # CHECK: msr  CPSR_c, r7
1002 # CHECK: msr  CPSR_x, r8
1003 # CHECK: msr  CPSR_fc, r9
1004 # CHECK: msr  CPSR_fc, r11
1005 # CHECK: msr  CPSR_fsx, r12
1006 # CHECK: msr  SPSR_fc, r0
1007 # CHECK: msr  SPSR_fsxc, r5
1008 # CHECK: msr  CPSR_fsxc, r8
1009
1010 0x81 0xf3 0x00 0x88
1011 0x82 0xf3 0x00 0x84
1012 0x83 0xf3 0x00 0x88
1013 0x84 0xf3 0x00 0x88
1014 0x85 0xf3 0x00 0x8c
1015 0x86 0xf3 0x00 0x89
1016 0x87 0xf3 0x00 0x81
1017 0x88 0xf3 0x00 0x82
1018 0x89 0xf3 0x00 0x89
1019 0x8b 0xf3 0x00 0x89
1020 0x8c 0xf3 0x00 0x8e
1021 0x90 0xf3 0x00 0x89
1022 0x95 0xf3 0x00 0x8f
1023 0x88 0xf3 0x00 0x8f
1024
1025
1026 #------------------------------------------------------------------------------
1027 # MUL
1028 #------------------------------------------------------------------------------
1029 # CHECK: muls r3, r4, r3
1030 # CHECK: mul r3, r4, r3
1031 # CHECK: mul r3, r4, r6
1032 # CHECK: it eq
1033 # CHECK: muleq r3, r4, r5
1034
1035 0x63 0x43
1036 0x04 0xfb 0x03 0xf3
1037 0x04 0xfb 0x06 0xf3
1038 0x08 0xbf
1039 0x04 0xfb 0x05 0xf3
1040
1041
1042 #------------------------------------------------------------------------------
1043 # MVN(immediate)
1044 #------------------------------------------------------------------------------
1045 # CHECK: mvns r8, #21
1046 # CHECK: mvn r0, #66846720
1047 # CHECK: mvns r0, #66846720
1048 # CHECK: itte eq
1049 # CHECK: mvnseq r1, #12
1050 # CHECK: mvneq r1, #12
1051 # CHECK: mvnne r1, #12
1052
1053 0x7f 0xf0 0x15 0x08
1054 0x6f 0xf0 0x7f 0x70
1055 0x7f 0xf0 0x7f 0x70
1056 0x06 0xbf
1057 0x7f 0xf0 0x0c 0x01
1058 0x6f 0xf0 0x0c 0x01
1059 0x6f 0xf0 0x0c 0x01
1060
1061
1062 #------------------------------------------------------------------------------
1063 # MVN(register)
1064 #------------------------------------------------------------------------------
1065 # CHECK: mvn.w r2, r3
1066 # CHECK: mvns r2, r3
1067 # CHECK: mvn.w r5, r6, lsl #19
1068 # CHECK: mvn.w r5, r6, lsr #9
1069 # CHECK: mvn.w r5, r6, asr #4
1070 # CHECK: mvn.w r5, r6, ror #6
1071 # CHECK: mvn.w r5, r6, rrx
1072 # CHECK: it eq
1073 # CHECK: mvneq r2, r3
1074
1075 0x6f 0xea 0x03 0x02
1076 0xda 0x43
1077 0x6f 0xea 0xc6 0x45
1078 0x6f 0xea 0x56 0x25
1079 0x6f 0xea 0x26 0x15
1080 0x6f 0xea 0xb6 0x15
1081 0x6f 0xea 0x36 0x05
1082 0x08 0xbf
1083 0xda 0x43
1084
1085 #------------------------------------------------------------------------------
1086 # NOP
1087 #------------------------------------------------------------------------------
1088 # CHECK: nop.w
1089
1090 0xaf 0xf3 0x00 0x80
1091
1092
1093 #------------------------------------------------------------------------------
1094 # ORN
1095 #------------------------------------------------------------------------------
1096 # CHECK: orn r4, r5, #61440
1097 # CHECK: orn r4, r5, r6
1098 # CHECK: orns r4, r5, r6
1099 # CHECK: orn r4, r5, r6, lsl #5
1100 # CHECK: orns r4, r5, r6, lsr #5
1101 # CHECK: orn r4, r5, r6, lsr #5
1102 # CHECK: orns r4, r5, r6, asr #5
1103 # CHECK: orn r4, r5, r6, ror #5
1104
1105 0x65 0xf4 0x70 0x44
1106 0x65 0xea 0x06 0x04
1107 0x75 0xea 0x06 0x04
1108 0x65 0xea 0x46 0x14
1109 0x75 0xea 0x56 0x14
1110 0x65 0xea 0x56 0x14
1111 0x75 0xea 0x66 0x14
1112 0x65 0xea 0x76 0x14
1113
1114
1115 #------------------------------------------------------------------------------
1116 # ORR
1117 #------------------------------------------------------------------------------
1118 # CHECK: orr r4, r5, #61440
1119 # CHECK: orr.w r4, r5, r6
1120 # CHECK: orr.w r4, r5, r6, lsl #5
1121 # CHECK: orrs.w r4, r5, r6, lsr #5
1122 # CHECK: orr.w r4, r5, r6, lsr #5
1123 # CHECK: orrs.w r4, r5, r6, asr #5
1124 # CHECK: orr.w r4, r5, r6, ror #5
1125
1126 0x45 0xf4 0x70 0x44
1127 0x45 0xea 0x06 0x04
1128 0x45 0xea 0x46 0x14
1129 0x55 0xea 0x56 0x14
1130 0x45 0xea 0x56 0x14
1131 0x55 0xea 0x66 0x14
1132 0x45 0xea 0x76 0x14
1133
1134
1135 #------------------------------------------------------------------------------
1136 # PKH
1137 #------------------------------------------------------------------------------
1138 # CHECK: pkhbt r2, r2, r3
1139 # CHECK: pkhbt r2, r2, r3, lsl #31
1140 # CHECK: pkhbt r2, r2, r3, lsl #15
1141
1142 # CHECK: pkhtb r2, r2, r3, asr #31
1143 # CHECK: pkhtb r2, r2, r3, asr #15
1144
1145 0xc2 0xea 0x03 0x02
1146 0xc2 0xea 0xc3 0x72
1147 0xc2 0xea 0xc3 0x32
1148
1149 0xc2 0xea 0xe3 0x72
1150 0xc2 0xea 0xe3 0x32
1151
1152
1153 #------------------------------------------------------------------------------
1154 # PLD(immediate)
1155 #------------------------------------------------------------------------------
1156 # CHECK: pld [r5, #-4]
1157 # CHECK: pld [r6, #32]
1158 # CHECK: pld [r6, #33]
1159 # CHECK: pld [r6, #257]
1160 # CHECK: pld [r7, #257]
1161
1162 0x15 0xf8 0x04 0xfc
1163 0x96 0xf8 0x20 0xf0
1164 0x96 0xf8 0x21 0xf0
1165 0x96 0xf8 0x01 0xf1
1166 0x97 0xf8 0x01 0xf1
1167
1168 #------------------------------------------------------------------------------
1169 # PLD(register)
1170 #------------------------------------------------------------------------------
1171 # CHECK: pld [r8, r1]
1172 # CHECK: pld [r5, r2]
1173 # CHECK: pld [r0, r2, lsl #3]
1174 # CHECK: pld [r8, r2, lsl #2]
1175 # CHECK: pld [sp, r2, lsl #1]
1176 # CHECK: pld [sp, r2]
1177
1178 0x18 0xf8 0x01 0xf0
1179 0x15 0xf8 0x02 0xf0
1180 0x10 0xf8 0x32 0xf0
1181 0x18 0xf8 0x22 0xf0
1182 0x1d 0xf8 0x12 0xf0
1183 0x1d 0xf8 0x02 0xf0
1184
1185 #------------------------------------------------------------------------------
1186 # PLI(immediate)
1187 #------------------------------------------------------------------------------
1188 # CHECK: pli [r5, #-4]
1189 # CHECK: pli [r6, #32]
1190 # CHECK: pli [r6, #33]
1191 # CHECK: pli [r6, #257]
1192 # CHECK: pli [r7, #257]
1193
1194 0x15 0xf9 0x04 0xfc
1195 0x96 0xf9 0x20 0xf0
1196 0x96 0xf9 0x21 0xf0
1197 0x96 0xf9 0x01 0xf1
1198 0x97 0xf9 0x01 0xf1
1199
1200 #------------------------------------------------------------------------------
1201 # PLI(register)
1202 #------------------------------------------------------------------------------
1203 # CHECK: pli [r8, r1]
1204 # CHECK: pli [r5, r2]
1205 # CHECK: pli [r0, r2, lsl #3]
1206 # CHECK: pli [r8, r2, lsl #2]
1207 # CHECK: pli [sp, r2, lsl #1]
1208 # CHECK: pli [sp, r2]
1209
1210 0x18 0xf9 0x01 0xf0
1211 0x15 0xf9 0x02 0xf0
1212 0x10 0xf9 0x32 0xf0
1213 0x18 0xf9 0x22 0xf0
1214 0x1d 0xf9 0x12 0xf0
1215 0x1d 0xf9 0x02 0xf0
1216
1217
1218 #------------------------------------------------------------------------------
1219 # QADD/QADD16/QADD8
1220 #------------------------------------------------------------------------------
1221 # CHECK: qadd r1, r2, r3
1222 # CHECK: qadd16 r1, r2, r3
1223 # CHECK: qadd8 r1, r2, r3
1224 # CHECK: itte gt
1225 # CHECK: qaddgt r1, r2, r3
1226 # CHECK: qadd16gt r1, r2, r3
1227 # CHECK: qadd8le r1, r2, r3
1228
1229 0x83 0xfa 0x82 0xf1
1230 0x92 0xfa 0x13 0xf1
1231 0x82 0xfa 0x13 0xf1
1232 0xc6 0xbf
1233 0x83 0xfa 0x82 0xf1
1234 0x92 0xfa 0x13 0xf1
1235 0x82 0xfa 0x13 0xf1
1236
1237
1238 #------------------------------------------------------------------------------
1239 # QDADD/QDSUB
1240 #------------------------------------------------------------------------------
1241 # CHECK: qdadd r6, r7, r8
1242 # CHECK: qdsub r6, r7, r8
1243 # CHECK: itt hi
1244 # CHECK: qdaddhi r6, r7, r8
1245 # CHECK: qdsubhi r6, r7, r8
1246
1247 0x88 0xfa 0x97 0xf6
1248 0x88 0xfa 0xb7 0xf6
1249 0x84 0xbf
1250 0x88 0xfa 0x97 0xf6
1251 0x88 0xfa 0xb7 0xf6
1252
1253
1254 #------------------------------------------------------------------------------
1255 # QSAX
1256 #------------------------------------------------------------------------------
1257 # CHECK: qsax r9, r12, r0
1258 # CHECK: it eq
1259 # CHECK: qsaxeq r9, r12, r0
1260
1261 0xec 0xfa 0x10 0xf9
1262 0x08 0xbf
1263 0xec 0xfa 0x10 0xf9
1264
1265
1266 #------------------------------------------------------------------------------
1267 # QSUB/QSUB16/QSUB8
1268 #------------------------------------------------------------------------------
1269 # CHECK: qsub r1, r2, r3
1270 # CHECK: qsub16 r1, r2, r3
1271 # CHECK: qsub8 r1, r2, r3
1272 # CHECK: itet le
1273 # CHECK: qsuble r1, r2, r3
1274 # CHECK: qsub16gt r1, r2, r3
1275 # CHECK: qsub8le r1, r2, r3
1276
1277 0x83 0xfa 0xa2 0xf1
1278 0xd2 0xfa 0x13 0xf1
1279 0xc2 0xfa 0x13 0xf1
1280 0xd6 0xbf
1281 0x83 0xfa 0xa2 0xf1
1282 0xd2 0xfa 0x13 0xf1
1283 0xc2 0xfa 0x13 0xf1
1284
1285
1286 #------------------------------------------------------------------------------
1287 # RBIT
1288 #------------------------------------------------------------------------------
1289 # CHECK: rbit r1, r2
1290 # CHECK: it ne
1291 # CHECK: rbitne r1, r2
1292
1293 0x92 0xfa 0xa2 0xf1
1294 0x18 0xbf
1295 0x92 0xfa 0xa2 0xf1
1296
1297
1298 #------------------------------------------------------------------------------
1299 # REV
1300 #------------------------------------------------------------------------------
1301 # CHECK: rev.w r1, r2
1302 # CHECK: rev.w r2, r8
1303 # CHECK: itt ne
1304 # CHECK: revne r1, r2
1305 # CHECK: revne.w r1, r8
1306
1307 0x92 0xfa 0x82 0xf1
1308 0x98 0xfa 0x88 0xf2
1309 0x1c 0xbf
1310 0x11 0xba
1311 0x98 0xfa 0x88 0xf1
1312
1313
1314 #------------------------------------------------------------------------------
1315 # REV16
1316 #------------------------------------------------------------------------------
1317 # CHECK: rev16.w r1, r2
1318 # CHECK: rev16.w r2, r8
1319 # CHECK: itt ne
1320 # CHECK: rev16ne r1, r2
1321 # CHECK: rev16ne.w r1, r8
1322
1323 0x92 0xfa 0x92 0xf1
1324 0x98 0xfa 0x98 0xf2
1325 0x1c 0xbf
1326 0x51 0xba
1327 0x98 0xfa 0x98 0xf1
1328
1329
1330 #------------------------------------------------------------------------------
1331 # REVSH
1332 #------------------------------------------------------------------------------
1333 # CHECK: revsh.w r1, r2
1334 # CHECK: revsh.w r2, r8
1335 # CHECK: itt ne
1336 # CHECK: revshne r1, r2
1337 # CHECK: revshne.w r1, r8
1338
1339 0x92 0xfa 0xb2 0xf1
1340 0x98 0xfa 0xb8 0xf2
1341 0x1c 0xbf
1342 0xd1 0xba
1343 0x98 0xfa 0xb8 0xf1
1344
1345
1346 #------------------------------------------------------------------------------
1347 # ROR (immediate)
1348 #------------------------------------------------------------------------------
1349 # CHECK: ror.w r2, r3, #12
1350 # CHECK: rors.w r8, r3, #31
1351 # CHECK: rors.w r2, r3, #1
1352 # CHECK: ror.w r2, r3, #4
1353 # CHECK: rors.w r2, r12, #15
1354
1355 # CHECK: ror.w r3, r3, #19
1356 # CHECK: rors.w r8, r8, #2
1357 # CHECK: rors.w r7, r7, #5
1358 # CHECK: ror.w r12, r12, #21
1359
1360 0x4f 0xea 0x33 0x32
1361 0x5f 0xea 0xf3 0x78
1362 0x5f 0xea 0x73 0x02
1363 0x4f 0xea 0x33 0x12
1364 0x5f 0xea 0xfc 0x32
1365
1366 0x4f 0xea 0xf3 0x43
1367 0x5f 0xea 0xb8 0x08
1368 0x5f 0xea 0x77 0x17
1369 0x4f 0xea 0x7c 0x5c
1370
1371
1372 #------------------------------------------------------------------------------
1373 # ROR (register)
1374 #------------------------------------------------------------------------------
1375 # CHECK: ror.w r3, r4, r2
1376 # CHECK: ror.w r1, r1, r2
1377 # CHECK: rors.w r3, r4, r8
1378
1379 0x64 0xfa 0x02 0xf3
1380 0x61 0xfa 0x02 0xf1
1381 0x74 0xfa 0x08 0xf3
1382
1383
1384 #------------------------------------------------------------------------------
1385 # RRX
1386 #------------------------------------------------------------------------------
1387 # CHECK: rrx r1, r2
1388 # CHECK: rrxs r1, r2
1389 # CHECK: ite lt
1390 # CHECK: rrxlt r9, r12
1391 # CHECK: rrxsge r8, r3
1392
1393 0x4f 0xea 0x32 0x01
1394 0x5f 0xea 0x32 0x01
1395 0xb4 0xbf
1396 0x4f 0xea 0x3c 0x09
1397 0x5f 0xea 0x33 0x08
1398
1399 #------------------------------------------------------------------------------
1400 # RSB (immediate)
1401 #------------------------------------------------------------------------------
1402 # CHECK: rsb.w r2, r5, #1044480
1403 # CHECK: rsbs.w r3, r12, #15
1404 # CHECK: rsb.w r1, r1, #255
1405
1406 0xc5 0xf5 0x7f 0x22
1407 0xdc 0xf1 0x0f 0x03
1408 0xc1 0xf1 0xff 0x01
1409
1410
1411 #------------------------------------------------------------------------------
1412 # RSB (register)
1413 #------------------------------------------------------------------------------
1414 # CHECK: rsb r4, r4, r8
1415 # CHECK: rsb r4, r9, r8
1416 # CHECK: rsb r1, r4, r8, asr #3
1417 # CHECK: rsbs r2, r1, r7, lsl #1
1418
1419 0xc4 0xeb 0x08 0x04
1420 0xc9 0xeb 0x08 0x04
1421 0xc4 0xeb 0xe8 0x01
1422 0xd1 0xeb 0x47 0x02
1423
1424
1425 #------------------------------------------------------------------------------
1426 # SADD16
1427 #------------------------------------------------------------------------------
1428 # CHECK: sadd16 r3, r4, r8
1429 # CHECK: it ne
1430 # CHECK: sadd16ne r3, r4, r8
1431
1432 0x94 0xfa 0x08 0xf3
1433 0x18 0xbf
1434 0x94 0xfa 0x08 0xf3
1435
1436
1437 #------------------------------------------------------------------------------
1438 # SADD8
1439 #------------------------------------------------------------------------------
1440 # CHECK: sadd8 r3, r4, r8
1441 # CHECK: it ne
1442 # CHECK: sadd8ne r3, r4, r8
1443
1444 0x84 0xfa 0x08 0xf3
1445 0x18 0xbf
1446 0x84 0xfa 0x08 0xf3
1447
1448
1449 #------------------------------------------------------------------------------
1450 # SASX
1451 #------------------------------------------------------------------------------
1452 # CHECK: sasx r9, r2, r7
1453 # CHECK: it ne
1454 # CHECK: sasxne r2, r5, r6
1455
1456 0xa2 0xfa 0x07 0xf9
1457 0x18 0xbf
1458 0xa5 0xfa 0x06 0xf2
1459
1460
1461 #------------------------------------------------------------------------------
1462 # SBC (immediate)
1463 #------------------------------------------------------------------------------
1464 # CHECK: sbc r0, r1, #4
1465 # CHECK: sbcs r0, r1, #0
1466 # CHECK: sbc r1, r2, #255
1467 # CHECK: sbc r3, r7, #5570645
1468 # CHECK: sbc r8, r12, #2852170240
1469 # CHECK: sbc r9, r7, #2779096485
1470 # CHECK: sbc r5, r3, #2264924160
1471 # CHECK: sbc r4, r2, #2139095040
1472 # CHECK: sbc r4, r2, #1664
1473
1474 0x61 0xf1 0x04 0x00
1475 0x71 0xf1 0x00 0x00
1476 0x62 0xf1 0xff 0x01
1477 0x67 0xf1 0x55 0x13
1478 0x6c 0xf1 0xaa 0x28
1479 0x67 0xf1 0xa5 0x39
1480 0x63 0xf1 0x07 0x45
1481 0x62 0xf1 0xff 0x44
1482 0x62 0xf5 0xd0 0x64
1483
1484
1485 #------------------------------------------------------------------------------
1486 # SBC (register)
1487 #------------------------------------------------------------------------------
1488 # CHECK: sbc.w r4, r5, r6
1489 # CHECK: sbcs.w r4, r5, r6
1490 # CHECK: sbc.w r9, r1, r3
1491 # CHECK: sbcs.w r9, r1, r3
1492 # CHECK: sbc.w r0, r1, r3, ror #4
1493 # CHECK: sbcs.w r0, r1, r3, lsl #7
1494 # CHECK: sbc.w r0, r1, r3, lsr #31
1495 # CHECK: sbcs.w r0, r1, r3, asr #32
1496
1497 0x65 0xeb 0x06 0x04
1498 0x75 0xeb 0x06 0x04
1499 0x61 0xeb 0x03 0x09
1500 0x71 0xeb 0x03 0x09
1501 0x61 0xeb 0x33 0x10
1502 0x71 0xeb 0xc3 0x10
1503 0x61 0xeb 0xd3 0x70
1504 0x71 0xeb 0x23 0x00
1505
1506
1507 #------------------------------------------------------------------------------
1508 # SBFX
1509 #------------------------------------------------------------------------------
1510 # CHECK: sbfx r4, r5, #16, #1
1511 # CHECK: it gt
1512 # CHECK: sbfxgt r4, r5, #16, #16
1513
1514 0x45 0xf3 0x00 0x44
1515 0xc8 0xbf
1516 0x45 0xf3 0x0f 0x44
1517
1518
1519 #------------------------------------------------------------------------------
1520 # SEL
1521 #------------------------------------------------------------------------------
1522 # CHECK: sel r5, r9, r2
1523 # CHECK: it le
1524 # CHECK: selle r5, r9, r2
1525
1526 0xa9 0xfa 0x82 0xf5
1527 0xd8 0xbf
1528 0xa9 0xfa 0x82 0xf5
1529
1530
1531 #------------------------------------------------------------------------------
1532 # SEV
1533 #------------------------------------------------------------------------------
1534 # CHECK: sev.w
1535 # CHECK: it eq
1536 # CHECK: seveq.w
1537
1538 0xaf 0xf3 0x04 0x80
1539 0x08 0xbf
1540 0xaf 0xf3 0x04 0x80
1541
1542
1543 #------------------------------------------------------------------------------
1544 # SADD16/SADD8
1545 #------------------------------------------------------------------------------
1546 # CHECK: sadd16 r1, r2, r3
1547 # CHECK: sadd8 r1, r2, r3
1548 # CHECK: ite gt
1549 # CHECK: sadd16gt r1, r2, r3
1550 # CHECK: sadd8le r1, r2, r3
1551
1552 0x92 0xfa 0x03 0xf1
1553 0x82 0xfa 0x03 0xf1
1554 0xcc 0xbf
1555 0x92 0xfa 0x03 0xf1
1556 0x82 0xfa 0x03 0xf1
1557
1558
1559 #------------------------------------------------------------------------------
1560 # SHASX
1561 #------------------------------------------------------------------------------
1562 # CHECK: shasx r4, r8, r2
1563 # CHECK: it gt
1564 # CHECK: shasxgt r4, r8, r2
1565
1566 0xa8 0xfa 0x22 0xf4
1567 0xc8 0xbf
1568 0xa8 0xfa 0x22 0xf4
1569
1570
1571 #------------------------------------------------------------------------------
1572 # SHASX
1573 #------------------------------------------------------------------------------
1574 # CHECK: shsax r4, r8, r2
1575 # CHECK: it gt
1576 # CHECK: shsaxgt r4, r8, r2
1577
1578 0xe8 0xfa 0x22 0xf4
1579 0xc8 0xbf
1580 0xe8 0xfa 0x22 0xf4
1581
1582
1583 #------------------------------------------------------------------------------
1584 # SHSUB16/SHSUB8
1585 #------------------------------------------------------------------------------
1586 # CHECK: shsub16 r4, r8, r2
1587 # CHECK: shsub8 r4, r8, r2
1588 # CHECK: itt gt
1589 # CHECK: shsub16gt r4, r8, r2
1590 # CHECK: shsub8gt r4, r8, r2
1591
1592 0xd8 0xfa 0x22 0xf4
1593 0xc8 0xfa 0x22 0xf4
1594 0xc4 0xbf
1595 0xd8 0xfa 0x22 0xf4
1596 0xc8 0xfa 0x22 0xf4
1597
1598
1599 #------------------------------------------------------------------------------
1600 # SMLABB/SMLABT/SMLATB/SMLATT
1601 #------------------------------------------------------------------------------
1602 # CHECK: smlabb r3, r1, r9, r0
1603 # CHECK: smlabt r5, r6, r4, r1
1604 # CHECK: smlatb r4, r2, r3, r2
1605 # CHECK: smlatt r8, r3, r8, r4
1606 # CHECK: itete gt
1607 # CHECK: smlabbgt r3, r1, r9, r0
1608 # CHECK: smlabtle r5, r6, r4, r1
1609 # CHECK: smlatbgt r4, r2, r3, r2
1610 # CHECK: smlattle r8, r3, r8, r4
1611
1612 0x11 0xfb 0x09 0x03
1613 0x16 0xfb 0x14 0x15
1614 0x12 0xfb 0x23 0x24
1615 0x13 0xfb 0x38 0x48
1616 0xcb 0xbf
1617 0x11 0xfb 0x09 0x03
1618 0x16 0xfb 0x14 0x15
1619 0x12 0xfb 0x23 0x24
1620 0x13 0xfb 0x38 0x48
1621
1622
1623 #------------------------------------------------------------------------------
1624 # SMLAD/SMLADX
1625 #------------------------------------------------------------------------------
1626 # CHECK: smlad r2, r3, r5, r8
1627 # CHECK: smladx r2, r3, r5, r8
1628 # CHECK: itt hi
1629 # CHECK: smladhi r2, r3, r5, r8
1630 # CHECK: smladxhi r2, r3, r5, r8
1631
1632 0x23 0xfb 0x05 0x82
1633 0x23 0xfb 0x15 0x82
1634 0x84 0xbf
1635 0x23 0xfb 0x05 0x82
1636 0x23 0xfb 0x15 0x82
1637
1638
1639 #------------------------------------------------------------------------------
1640 # SMLAL
1641 #------------------------------------------------------------------------------
1642 # CHECK: smlal r2, r3, r5, r8
1643 # CHECK: it eq
1644 # CHECK: smlaleq r2, r3, r5, r8
1645
1646 0xc5 0xfb 0x08 0x23
1647 0x08 0xbf
1648 0xc5 0xfb 0x08 0x23
1649
1650
1651 #------------------------------------------------------------------------------
1652 # SMLALBB/SMLALBT/SMLALTB/SMLALTT
1653 #------------------------------------------------------------------------------
1654 # CHECK: smlalbb r3, r1, r9, r0
1655 # CHECK: smlalbt r5, r6, r4, r1
1656 # CHECK: smlaltb r4, r2, r3, r2
1657 # CHECK: smlaltt r8, r3, r8, r4
1658 # CHECK: iteet ge
1659 # CHECK: smlalbbge r3, r1, r9, r0
1660 # CHECK: smlalbtlt r5, r6, r4, r1
1661 # CHECK: smlaltblt r4, r2, r3, r2
1662 # CHECK: smlalttge r8, r3, r8, r4
1663
1664 0xc9 0xfb 0x80 0x31
1665 0xc4 0xfb 0x91 0x56
1666 0xc3 0xfb 0xa2 0x42
1667 0xc8 0xfb 0xb4 0x83
1668 0xad 0xbf
1669 0xc9 0xfb 0x80 0x31
1670 0xc4 0xfb 0x91 0x56
1671 0xc3 0xfb 0xa2 0x42
1672 0xc8 0xfb 0xb4 0x83
1673
1674 #------------------------------------------------------------------------------
1675 # SMLALD/SMLALDX
1676 #------------------------------------------------------------------------------
1677 # CHECK: smlald r2, r3, r5, r8
1678 # CHECK: smlaldx r2, r3, r5, r8
1679 # CHECK: ite eq
1680 # CHECK: smlaldeq r2, r3, r5, r8
1681 # CHECK: smlaldxne r2, r3, r5, r8
1682
1683 0xc5 0xfb 0xc8 0x23
1684 0xc5 0xfb 0xd8 0x23
1685 0x0c 0xbf
1686 0xc5 0xfb 0xc8 0x23
1687 0xc5 0xfb 0xd8 0x23
1688
1689
1690 #------------------------------------------------------------------------------
1691 # SMLAWB/SMLAWT
1692 #------------------------------------------------------------------------------
1693 # CHECK: smlawb r2, r3, r10, r8
1694 # CHECK: smlawt r8, r3, r5, r9
1695 # CHECK: ite eq
1696 # CHECK: smlawbeq r2, r7, r5, r8
1697 # CHECK: smlawtne r1, r3, r0, r8
1698
1699 0x33 0xfb 0x0a 0x82
1700 0x33 0xfb 0x15 0x98
1701 0x0c 0xbf
1702 0x37 0xfb 0x05 0x82
1703 0x33 0xfb 0x10 0x81
1704
1705
1706 #------------------------------------------------------------------------------
1707 # SMLSD/SMLSDX
1708 #------------------------------------------------------------------------------
1709 # CHECK: smlsd r2, r3, r5, r8
1710 # CHECK: smlsdx r2, r3, r5, r8
1711 # CHECK: ite le
1712 # CHECK: smlsdle r2, r3, r5, r8
1713 # CHECK: smlsdxgt r2, r3, r5, r8
1714
1715 0x43 0xfb 0x05 0x82
1716 0x43 0xfb 0x15 0x82
1717 0xd4 0xbf
1718 0x43 0xfb 0x05 0x82
1719 0x43 0xfb 0x15 0x82
1720
1721
1722 #------------------------------------------------------------------------------
1723 # SMLSLD/SMLSLDX
1724 #------------------------------------------------------------------------------
1725 # CHECK: smlsld r2, r9, r5, r1
1726 # CHECK: smlsldx r4, r11, r2, r8
1727 # CHECK: ite ge
1728 # CHECK: smlsldge r8, r2, r5, r6
1729 # CHECK: smlsldxlt r1, r0, r3, r8
1730
1731 0xd5 0xfb 0xc1 0x29
1732 0xd2 0xfb 0xd8 0x4b
1733 0xac 0xbf
1734 0xd5 0xfb 0xc6 0x82
1735 0xd3 0xfb 0xd8 0x10
1736
1737
1738 #------------------------------------------------------------------------------
1739 # SMMLA/SMMLAR
1740 #------------------------------------------------------------------------------
1741 # CHECK: smmla r1, r2, r3, r4
1742 # CHECK: smmlar r4, r3, r2, r1
1743 # CHECK: ite lo
1744 # CHECK: smmlalo r1, r2, r3, r4
1745 # CHECK: smmlarhs r4, r3, r2, r1
1746
1747 0x52 0xfb 0x03 0x41
1748 0x53 0xfb 0x12 0x14
1749 0x34 0xbf
1750 0x52 0xfb 0x03 0x41
1751 0x53 0xfb 0x12 0x14
1752
1753
1754 #------------------------------------------------------------------------------
1755 # SMMLS/SMMLSR
1756 #------------------------------------------------------------------------------
1757 # CHECK: smmls r1, r2, r3, r4
1758 # CHECK: smmlsr r4, r3, r2, r1
1759 # CHECK: ite lo
1760 # CHECK: smmlslo r1, r2, r3, r4
1761 # CHECK: smmlsrhs r4, r3, r2, r1
1762
1763 0x62 0xfb 0x03 0x41
1764 0x63 0xfb 0x12 0x14
1765 0x34 0xbf
1766 0x62 0xfb 0x03 0x41
1767 0x63 0xfb 0x12 0x14
1768
1769 #------------------------------------------------------------------------------
1770 # SSAT
1771 #------------------------------------------------------------------------------
1772 # CHECK: ssat r9, #30, r0, asr #32
1773
1774 0x20 0xf3 0x1d 0x09
1775
1776 #------------------------------------------------------------------------------
1777 # STRD (immediate)
1778 #------------------------------------------------------------------------------
1779 # CHECK: strd r6, r3, [r5], #-8
1780 # CHECK: strd r8, r5, [r5]{{$}}
1781 # CHECK: strd r7, r4, [r5], #-4
1782
1783 0x65 0xe8 0x02 0x63
1784 0x65 0xe8 0x00 0x85
1785 0x65 0xe8 0x01 0x74
1786
1787