c8a24ee3a902b7e2a9576f5fb6a9b48199bdc0ab
[oota-llvm.git] / test / MC / Disassembler / ARM / thumb2.txt
1 # RUN: llvm-mc -triple=thumbv7-apple-darwin -mcpu=cortex-a8 -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 # CHECK: subw r1, pc, #0
96
97 0xaf 0xf6 0xc6 0x4b
98 0xaf 0xf2 0x3a 0x3b
99 0xaf 0xf2 0x00 0x01
100
101 #------------------------------------------------------------------------------
102 # AND (immediate)
103 #------------------------------------------------------------------------------
104 # CHECK: and r2, r5, #1044480
105 # CHECK: ands r3, r12, #15
106 # CHECK: and r1, r1, #255
107
108 0x05 0xf4 0x7f 0x22
109 0x1c 0xf0 0x0f 0x03
110 0x01 0xf0 0xff 0x01
111
112
113 #------------------------------------------------------------------------------
114 # AND (register)
115 #------------------------------------------------------------------------------
116 # CHECK: and.w r4, r9, r8
117 # CHECK: and.w r1, r4, r8, asr #3
118 # CHECK: ands.w r2, r1, r7, lsl #1
119 # CHECK: ands.w r4, r5, r2, lsr #20
120 # CHECK: and.w r9, r12, r1, ror #17
121
122 0x09 0xea 0x08 0x04
123 0x04 0xea 0xe8 0x01
124 0x11 0xea 0x47 0x02
125 0x15 0xea 0x12 0x54
126 0x0c 0xea 0x71 0x49
127
128 #------------------------------------------------------------------------------
129 # ASR (immediate)
130 #------------------------------------------------------------------------------
131 # CHECK: asr.w r2, r3, #12
132 # CHECK: asrs.w r8, r3, #32
133 # CHECK: asrs.w r2, r3, #1
134 # CHECK: asr.w r2, r3, #4
135 # CHECK: asrs.w r2, r12, #15
136
137 # CHECK: asr.w r3, r3, #19
138 # CHECK: asrs.w r8, r8, #2
139 # CHECK: asrs.w r7, r7, #5
140 # CHECK: asr.w r12, r12, #21
141
142 0x4f 0xea 0x23 0x32
143 0x5f 0xea 0x23 0x08
144 0x5f 0xea 0x63 0x02
145 0x4f 0xea 0x23 0x12
146 0x5f 0xea 0xec 0x32
147
148 0x4f 0xea 0xe3 0x43
149 0x5f 0xea 0xa8 0x08
150 0x5f 0xea 0x67 0x17
151 0x4f 0xea 0x6c 0x5c
152
153
154 #------------------------------------------------------------------------------
155 # ASR (register)
156 #------------------------------------------------------------------------------
157 # CHECK: asr.w r3, r4, r2
158 # CHECK: asr.w r1, r1, r2
159 # CHECK: asrs.w r3, r4, r8
160
161 0x44 0xfa 0x02 0xf3
162 0x41 0xfa 0x02 0xf1
163 0x54 0xfa 0x08 0xf3
164
165 #------------------------------------------------------------------------------
166 # B
167 #------------------------------------------------------------------------------
168 # CHECK: bmi.w   #-183396
169
170 0x13 0xf5 0xce 0xa9
171
172 # CHECK: b.w   #208962
173 # CHECK: b.w   #-16777216
174
175 0x33 0xf0 0x21 0xb8 # rdar://12585795
176 0x00 0xf4 0x00 0x90
177
178 #------------------------------------------------------------------------------
179 # BFC
180 #------------------------------------------------------------------------------
181 # CHECK: bfc r5, #3, #17
182 # CHECK: it lo
183 # CHECK: bfclo r5, #3, #17
184
185 0x6f 0xf3 0xd3 0x05
186 0x38 0xbf
187 0x6f 0xf3 0xd3 0x05
188
189
190 #------------------------------------------------------------------------------
191 # BFI
192 #------------------------------------------------------------------------------
193 # CHECK: bfi r5, r2, #3, #17
194 # CHECK: it ne
195 # CHECK: bfine r5, r2, #3, #17
196 # CHECK: bfi r6, r0, #0, #32
197 # CHECK: bfi r6, r0, #31, #1
198
199 0x62 0xf3 0xd3 0x05
200 0x18 0xbf
201 0x62 0xf3 0xd3 0x05
202 0x60 0xf3 0x1f 0x06
203 0x60 0xf3 0xdf 0x76
204
205
206 #------------------------------------------------------------------------------
207 # BIC
208 #------------------------------------------------------------------------------
209 # CHECK: bic r10, r1, #15
210 # CHECK: bic.w r12, r3, r6
211 # CHECK: bic.w r11, r2, r6, lsl #12
212 # CHECK: bic.w r8, r4, r1, lsr #11
213 # CHECK: bic.w r7, r5, r7, lsr #15
214 # CHECK: bic.w r6, r7, r9, asr #32
215 # CHECK: bic.w r5, r6, r8, ror #1
216
217 # CHECK: bic r1, r1, #15
218 # CHECK: bic.w r1, r1, r1
219 # CHECK: bic.w r4, r4, r2, lsl #31
220 # CHECK: bic.w r6, r6, r3, lsr #12
221 # CHECK: bic.w r7, r7, r4, lsr #7
222 # CHECK: bic.w r8, r8, r5, asr #15
223 # CHECK: bic.w r12, r12, r6, ror #29
224
225 0x21 0xf0 0x0f 0x0a
226 0x23 0xea 0x06 0x0c
227 0x22 0xea 0x06 0x3b
228 0x24 0xea 0xd1 0x28
229 0x25 0xea 0xd7 0x37
230 0x27 0xea 0x29 0x06
231 0x26 0xea 0x78 0x05
232
233 0x21 0xf0 0x0f 0x01
234 0x21 0xea 0x01 0x01
235 0x24 0xea 0xc2 0x74
236 0x26 0xea 0x13 0x36
237 0x27 0xea 0xd4 0x17
238 0x28 0xea 0xe5 0x38
239 0x2c 0xea 0x76 0x7c
240
241
242 #------------------------------------------------------------------------------
243 # BXJ
244 #------------------------------------------------------------------------------
245 # CHECK: bxj r5
246 # CHECK: it ne
247 # CHECK: bxjne r7
248
249 0xc5 0xf3 0x00 0x8f
250 0x18 0xbf
251 0xc7 0xf3 0x00 0x8f
252
253
254 #------------------------------------------------------------------------------
255 # CBZ/CBNZ
256 #------------------------------------------------------------------------------
257 # CHECK: cbnz    r7, #6
258 # CHECK: cbnz    r7, #12
259 # CHECK: cbz     r4, #64
260
261 0x1f 0xb9
262 0x37 0xb9
263 0x04 0xb3
264
265
266 #------------------------------------------------------------------------------
267 # CDP/CDP2
268 #------------------------------------------------------------------------------
269 # CHECK: cdp  p7, #1, c1, c1, c1, #4
270 # CHECK: cdp2  p7, #1, c1, c1, c1, #4
271
272 0x11 0xee 0x81 0x17
273 0x11 0xfe 0x81 0x17
274
275
276 #------------------------------------------------------------------------------
277 # CLREX
278 #------------------------------------------------------------------------------
279 #CHECK: clrex
280 #CHECK: it ne
281 #CHECK: clrexne
282
283 0xbf 0xf3 0x2f 0x8f
284 0x18 0xbf
285 0xbf 0xf3 0x2f 0x8f
286
287
288 #------------------------------------------------------------------------------
289 # CLZ
290 #------------------------------------------------------------------------------
291 #CHECK: clz r1, r2
292 #CHECK: it eq
293 #CHECK: clzeq r1, r2
294
295 0xb2 0xfa 0x82 0xf1
296 0x08 0xbf
297 0xb2 0xfa 0x82 0xf1
298
299
300 #------------------------------------------------------------------------------
301 # CMN
302 #------------------------------------------------------------------------------
303 #CHECK: cmn.w r1, #15
304 #CHECK: cmn.w r8, r6
305 #CHECK: cmn.w r1, r6, lsl #10
306 #CHECK: cmn.w r1, r6, lsr #10
307 #CHECK: cmn.w sp, r6, lsr #10
308 #CHECK: cmn.w r1, r6, asr #10
309 #CHECK: cmn.w r1, r6, ror #10
310
311 0x11 0xf1 0x0f 0x0f
312 0x18 0xeb 0x06 0x0f
313 0x11 0xeb 0x86 0x2f
314 0x11 0xeb 0x96 0x2f
315 0x1d 0xeb 0x96 0x2f
316 0x11 0xeb 0xa6 0x2f
317 0x11 0xeb 0xb6 0x2f
318
319
320 #------------------------------------------------------------------------------
321 # CMP
322 #------------------------------------------------------------------------------
323 #CHECK: cmp.w r5, #65280
324 #CHECK: cmp.w r4, r12
325 #CHECK: cmp.w r9, r6, lsl #12
326 #CHECK: cmp.w r3, r7, lsr #31
327 #CHECK: cmp.w sp, r6, lsr #1
328 #CHECK: cmp.w r2, r5, asr #24
329 #CHECK: cmp.w r1, r4, ror #15
330
331 0xb5 0xf5 0x7f 0x4f
332 0xb4 0xeb 0x0c 0x0f
333 0xb9 0xeb 0x06 0x3f
334 0xb3 0xeb 0xd7 0x7f
335 0xbd 0xeb 0x56 0x0f
336 0xb2 0xeb 0x25 0x6f
337 0xb1 0xeb 0xf4 0x3f
338
339
340 #------------------------------------------------------------------------------
341 # DBG
342 #------------------------------------------------------------------------------
343 #CHECK: dbg #5
344 #CHECK: dbg #0
345 #CHECK: dbg #15
346
347 0xaf 0xf3 0xf5 0x80
348 0xaf 0xf3 0xf0 0x80
349 0xaf 0xf3 0xff 0x80
350
351
352 #------------------------------------------------------------------------------
353 # DMB
354 #------------------------------------------------------------------------------
355 #CHECK: dmb sy
356 #CHECK: dmb st
357 #CHECK: dmb #0xd
358 #CHECK: dmb #0xc
359 #CHECK: dmb ish
360 #CHECK: dmb ishst
361 #CHECK: dmb #0x9
362 #CHECK: dmb #0x8
363 #CHECK: dmb nsh
364 #CHECK: dmb nshst
365 #CHECK: dmb #0x5
366 #CHECK: dmb #0x4
367 #CHECK: dmb osh
368 #CHECK: dmb oshst
369 #CHECK: dmb #0x1
370 #CHECK: dmb #0x0
371
372 0xbf 0xf3 0x5f 0x8f
373 0xbf 0xf3 0x5e 0x8f
374 0xbf 0xf3 0x5d 0x8f
375 0xbf 0xf3 0x5c 0x8f
376 0xbf 0xf3 0x5b 0x8f
377 0xbf 0xf3 0x5a 0x8f
378 0xbf 0xf3 0x59 0x8f
379 0xbf 0xf3 0x58 0x8f
380 0xbf 0xf3 0x57 0x8f
381 0xbf 0xf3 0x56 0x8f
382 0xbf 0xf3 0x55 0x8f
383 0xbf 0xf3 0x54 0x8f
384 0xbf 0xf3 0x53 0x8f
385 0xbf 0xf3 0x52 0x8f
386 0xbf 0xf3 0x51 0x8f
387 0xbf 0xf3 0x50 0x8f
388
389
390 #------------------------------------------------------------------------------
391 # DSB
392 #------------------------------------------------------------------------------
393 #CHECK: dsb sy
394 #CHECK: dsb st
395 #CHECK: dsb #0xd
396 #CHECK: dsb #0xc
397 #CHECK: dsb ish
398 #CHECK: dsb ishst
399 #CHECK: dsb #0x9
400 #CHECK: dsb #0x8
401 #CHECK: dsb nsh
402 #CHECK: dsb nshst
403 #CHECK: dsb #0x5
404 #CHECK: dsb #0x4
405 #CHECK: dsb osh
406 #CHECK: dsb oshst
407 #CHECK: dsb #0x1
408 #CHECK: dsb #0x0
409
410 0xbf 0xf3 0x4f 0x8f
411 0xbf 0xf3 0x4e 0x8f
412 0xbf 0xf3 0x4d 0x8f
413 0xbf 0xf3 0x4c 0x8f
414 0xbf 0xf3 0x4b 0x8f
415 0xbf 0xf3 0x4a 0x8f
416 0xbf 0xf3 0x49 0x8f
417 0xbf 0xf3 0x48 0x8f
418 0xbf 0xf3 0x47 0x8f
419 0xbf 0xf3 0x46 0x8f
420 0xbf 0xf3 0x45 0x8f
421 0xbf 0xf3 0x44 0x8f
422 0xbf 0xf3 0x43 0x8f
423 0xbf 0xf3 0x42 0x8f
424 0xbf 0xf3 0x41 0x8f
425 0xbf 0xf3 0x40 0x8f
426
427
428 #------------------------------------------------------------------------------
429 # EOR
430 #------------------------------------------------------------------------------
431 #CHECK: eor r4, r5, #61440
432 #CHECK: eor.w r4, r5, r6
433 #CHECK: eor.w r4, r5, r6, lsl #5
434 #CHECK: eor.w r4, r5, r6, lsr #5
435 #CHECK: eor.w r4, r5, r6, lsr #5
436 #CHECK: eor.w r4, r5, r6, asr #5
437 #CHECK: eor.w r4, r5, r6, ror #5
438
439 0x85 0xf4 0x70 0x44
440 0x85 0xea 0x06 0x04
441 0x85 0xea 0x46 0x14
442 0x85 0xea 0x56 0x14
443 0x85 0xea 0x56 0x14
444 0x85 0xea 0x66 0x14
445 0x85 0xea 0x76 0x14
446
447
448 #------------------------------------------------------------------------------
449 # ISB
450 #------------------------------------------------------------------------------
451 #CHECK: isb sy
452 #CHECK: isb #0xa
453
454 0xbf 0xf3 0x6f 0x8f
455 0xbf 0xf3 0x6a 0x8f
456
457 #------------------------------------------------------------------------------
458 # IT
459 #------------------------------------------------------------------------------
460 # Test encodings of a few full IT blocks, not just the IT instruction
461
462 # CHECK: iteet eq
463 # CHECK: addeq r0, r1, r2
464 # CHECK: nopne
465 # CHECK: subne r5, r6, r7
466 # CHECK: addeq r1, r2, #4
467
468 0x0d 0xbf
469 0x88 0x18
470 0x00 0xbf
471 0xf5 0x1b
472 0x11 0x1d
473
474 # CHECK: ittee ls
475 # CHECK: addls r0, r1, r2
476 # CHECK: nopls
477 # CHECK: subhi r5, r6, r7
478 # CHECK: addhi r1, r2, #4
479
480 0x99 0xbf
481 0x88 0x18
482 0x00 0xbf
483 0xf5 0x1b
484 0x11 0x1d
485
486
487 #------------------------------------------------------------------------------
488 # LDMIA
489 #------------------------------------------------------------------------------
490 # CHECK: ldm.w r4, {r4, r5, r8, r9}
491 # CHECK: ldm.w r4, {r5, r6}
492 # CHECK: ldm.w r5!, {r3, r8}
493 # CHECK: ldm.w r4, {r4, r5, r8, r9}
494 # CHECK: ldm.w r4, {r5, r6}
495 # CHECK: ldm.w r5!, {r3, r8}
496 # CHECK: ldm.w r5!, {r1, r2}
497 # CHECK: ldm.w r2, {r1, r2}
498
499 # CHECK: ldm.w r4, {r4, r5, r8, r9}
500 # CHECK: ldm.w r4, {r5, r6}
501 # CHECK: ldm.w r5!, {r3, r8}
502 # CHECK: ldm.w r4, {r4, r5, r8, r9}
503 # CHECK: ldm.w r4, {r5, r6}
504 # CHECK: ldm.w r5!, {r3, r8}
505 # CHECK: ldm.w r5!, {r3, r8}
506
507 0x94 0xe8 0x30 0x03
508 0x94 0xe8 0x60 0x00
509 0xb5 0xe8 0x08 0x01
510 0x94 0xe8 0x30 0x03
511 0x94 0xe8 0x60 0x00
512 0xb5 0xe8 0x08 0x01
513 0xb5 0xe8 0x06 0x00
514 0x92 0xe8 0x06 0x00
515
516 0x94 0xe8 0x30 0x03
517 0x94 0xe8 0x60 0x00
518 0xb5 0xe8 0x08 0x01
519 0x94 0xe8 0x30 0x03
520 0x94 0xe8 0x60 0x00
521 0xb5 0xe8 0x08 0x01
522 0xb5 0xe8 0x08 0x01
523
524
525 #------------------------------------------------------------------------------
526 # LDMDB
527 #------------------------------------------------------------------------------
528 # CHECK: ldmdb r4, {r4, r5, r8, r9}
529 # CHECK: ldmdb r4, {r5, r6}
530 # CHECK: ldmdb r5!, {r3, r8}
531 # CHECK: ldmdb r5!, {r3, r8}
532
533 0x14 0xe9 0x30 0x03
534 0x14 0xe9 0x60 0x00
535 0x35 0xe9 0x08 0x01
536 0x35 0xe9 0x08 0x01
537
538
539 #------------------------------------------------------------------------------
540 # LDR(immediate)
541 #------------------------------------------------------------------------------
542 # CHECK: ldr r5, [r5, #-4]
543 # CHECK: ldr r5, [r6, #32]
544 # CHECK: ldr.w r5, [r6, #33]
545 # CHECK: ldr.w r5, [r6, #257]
546 # CHECK: ldr.w pc, [r7, #257]
547
548 0x55 0xf8 0x04 0x5c
549 0x35 0x6a
550 0xd6 0xf8 0x21 0x50
551 0xd6 0xf8 0x01 0x51
552 0xd7 0xf8 0x01 0xf1
553
554
555 #------------------------------------------------------------------------------
556 # LDR(literal)
557 #------------------------------------------------------------------------------
558 # CHECK: ldr.w r4, [pc, #-0]
559 # CHECK: ldr.w r2, [pc, #-40]
560 # CHECK: ldr.w r1, [pc, #1024]
561 0x5f 0xf8 0x00 0x40
562 0x5f 0xf8 0x28 0x20
563 0xdf 0xf8 0x00 0x14
564
565
566 #------------------------------------------------------------------------------
567 # LDR(register)
568 #------------------------------------------------------------------------------
569 # CHECK: ldr.w r1, [r8, r1]
570 # CHECK: ldr.w r4, [r5, r2]
571 # CHECK: ldr.w r6, [r0, r2, lsl #3]
572 # CHECK: ldr.w r8, [r8, r2, lsl #2]
573 # CHECK: ldr.w r7, [sp, r2, lsl #1]
574 # CHECK: ldr.w r7, [sp, r2]
575 # CHECK: ldr pc, [sp], #12
576 # CHECK: ldr r2, [r4, #255]!
577 # CHECK: ldr r8, [sp, #4]!
578 # CHECK: ldr lr, [sp, #-4]!
579 # CHECK: ldr lr, [sp, #0]!
580 # CHECK: ldr r2, [r4], #255
581 # CHECK: ldr r8, [sp], #4
582 # CHECK: ldr lr, [sp], #-4
583
584 0x58 0xf8 0x01 0x10
585 0x55 0xf8 0x02 0x40
586 0x50 0xf8 0x32 0x60
587 0x58 0xf8 0x22 0x80
588 0x5d 0xf8 0x12 0x70
589 0x5d 0xf8 0x02 0x70
590 0x5d 0xf8 0x0c 0xfb
591 0x54 0xf8 0xff 0x2f
592 0x5d 0xf8 0x04 0x8f
593 0x5d 0xf8 0x04 0xed
594 0x5d 0xf8 0x00 0xef
595 0x54 0xf8 0xff 0x2b
596 0x5d 0xf8 0x04 0x8b
597 0x5d 0xf8 0x04 0xe9
598
599
600 #------------------------------------------------------------------------------
601 # LDRB(immediate)
602 #------------------------------------------------------------------------------
603 # CHECK: ldrb r5, [r5, #-4]
604 # CHECK: ldrb.w r5, [r6, #32]
605 # CHECK: ldrb.w r5, [r6, #33]
606 # CHECK: ldrb.w r5, [r6, #257]
607 # CHECK: ldrb.w lr, [r7, #257]
608
609 0x15 0xf8 0x04 0x5c
610 0x96 0xf8 0x20 0x50
611 0x96 0xf8 0x21 0x50
612 0x96 0xf8 0x01 0x51
613 0x97 0xf8 0x01 0xe1
614
615
616 #------------------------------------------------------------------------------
617 # LDRB(register)
618 #------------------------------------------------------------------------------
619 # CHECK: ldrb.w r1, [r8, r1]
620 # CHECK: ldrb.w r4, [r5, r2]
621 # CHECK: ldrb.w r6, [r0, r2, lsl #3]
622 # CHECK: ldrb.w r8, [r8, r2, lsl #2]
623 # CHECK: ldrb.w r7, [sp, r2, lsl #1]
624 # CHECK: ldrb.w r7, [sp, r2]
625 # CHECK: ldrb r5, [r8, #255]!
626 # CHECK: ldrb r2, [r5, #4]!
627 # CHECK: ldrb r1, [r4, #-4]!
628 # CHECK: ldrb r1, [r4, #0]!
629 # CHECK: ldrb lr, [r3], #255
630 # CHECK: ldrb r9, [r2], #4
631 # CHECK: ldrb r3, [sp], #-4
632
633 0x18 0xf8 0x01 0x10
634 0x15 0xf8 0x02 0x40
635 0x10 0xf8 0x32 0x60
636 0x18 0xf8 0x22 0x80
637 0x1d 0xf8 0x12 0x70
638 0x1d 0xf8 0x02 0x70
639 0x18 0xf8 0xff 0x5f
640 0x15 0xf8 0x04 0x2f
641 0x14 0xf8 0x04 0x1d
642 0x14 0xf8 0x00 0x1f
643 0x13 0xf8 0xff 0xeb
644 0x12 0xf8 0x04 0x9b
645 0x1d 0xf8 0x04 0x39
646
647
648 #------------------------------------------------------------------------------
649 # LDRB(literal)
650 #------------------------------------------------------------------------------
651 # CHECK: ldrb.w r6, [pc, #-0]
652 # CHECK: ldrb.w r10, [pc, #227]
653 # CHECK: ldrb.w r5, [pc, #0]
654 0x1f 0xf8 0x00 0x60
655 0x9f 0xf8 0xe3 0xa0
656 0x9f 0xf8 0x00 0x50
657
658
659 #------------------------------------------------------------------------------
660 # LDRBT
661 #------------------------------------------------------------------------------
662 # CHECK: ldrbt r1, [r2]
663 # CHECK: ldrbt r1, [r8]
664 # CHECK: ldrbt r1, [r8, #3]
665 # CHECK: ldrbt r1, [r8, #255]
666
667 0x12 0xf8 0x00 0x1e
668 0x18 0xf8 0x00 0x1e
669 0x18 0xf8 0x03 0x1e
670 0x18 0xf8 0xff 0x1e
671
672
673 #------------------------------------------------------------------------------
674 # LDRD(immediate)
675 #------------------------------------------------------------------------------
676 # CHECK: ldrd r3, r5, [r6, #24]
677 # CHECK: ldrd r3, r5, [r6, #24]!
678 # CHECK: ldrd r3, r5, [r6], #4
679 # CHECK: ldrd r3, r5, [r6], #-8
680 # CHECK: ldrd r3, r5, [r6]
681 # CHECK: ldrd r8, r1, [r3]
682 # CHECK: ldrd r0, r1, [r2], #-0
683 # CHECK: ldrd r0, r1, [r2, #-0]!
684 # CHECK: ldrd r0, r1, [r2, #0]!
685 # CHECK: ldrd r0, r1, [r2, #-0]
686 # CHECK: ldrd r1, r1, [r0], #0
687
688 0xd6 0xe9 0x06 0x35
689 0xf6 0xe9 0x06 0x35
690 0xf6 0xe8 0x01 0x35
691 0x76 0xe8 0x02 0x35
692 0xd6 0xe9 0x00 0x35
693 0xd3 0xe9 0x00 0x81
694 0x72 0xe8 0x00 0x01
695 0x72 0xe9 0x00 0x01
696 0xf2 0xe9 0x00 0x01
697 0x52 0xe9 0x00 0x01
698 0xf0 0xe8 0x00 0x11
699
700
701 #------------------------------------------------------------------------------
702 # FIXME: LDRD(literal)
703 #------------------------------------------------------------------------------
704
705
706 #------------------------------------------------------------------------------
707 # LDREX/LDREXB/LDREXH/LDREXD
708 #------------------------------------------------------------------------------
709 # CHECK: ldrex r1, [r4]
710 # CHECK: ldrex r8, [r4]
711 # CHECK: ldrex r2, [sp, #128]
712 # CHECK: ldrexb r5, [r7]
713 # CHECK: ldrexh r9, [r12]
714 # CHECK: ldrexd r9, r3, [r4]
715
716 0x54 0xe8 0x00 0x1f
717 0x54 0xe8 0x00 0x8f
718 0x5d 0xe8 0x20 0x2f
719 0xd7 0xe8 0x4f 0x5f
720 0xdc 0xe8 0x5f 0x9f
721 0xd4 0xe8 0x7f 0x93
722
723
724 #------------------------------------------------------------------------------
725 # LDRH(immediate)
726 #------------------------------------------------------------------------------
727 # CHECK: ldrh r5, [r5, #-4]
728 # CHECK: ldrh r5, [r6, #32]
729 # CHECK: ldrh.w r5, [r6, #33]
730 # CHECK: ldrh.w r5, [r6, #257]
731 # CHECK: ldrh.w lr, [r7, #257]
732
733 0x35 0xf8 0x04 0x5c
734 0x35 0x8c
735 0xb6 0xf8 0x21 0x50
736 0xb6 0xf8 0x01 0x51
737 0xb7 0xf8 0x01 0xe1
738
739
740 #------------------------------------------------------------------------------
741 # LDRH(register)
742 #------------------------------------------------------------------------------
743 # CHECK: ldrh.w r1, [r8, r1]
744 # CHECK: ldrh.w r4, [r5, r2]
745 # CHECK: ldrh.w r6, [r0, r2, lsl #3]
746 # CHECK: ldrh.w r8, [r8, r2, lsl #2]
747 # CHECK: ldrh.w r7, [sp, r2, lsl #1]
748 # CHECK: ldrh.w r7, [sp, r2]
749 # CHECK: ldrh r5, [r8, #255]!
750 # CHECK: ldrh r2, [r5, #4]!
751 # CHECK: ldrh r1, [r4, #-4]!
752 # CHECK: ldrh r1, [r4, #0]!
753 # CHECK: ldrh lr, [r3], #255
754 # CHECK: ldrh r9, [r2], #4
755 # CHECK: ldrh r3, [sp], #-4
756
757 0x38 0xf8 0x01 0x10
758 0x35 0xf8 0x02 0x40
759 0x30 0xf8 0x32 0x60
760 0x38 0xf8 0x22 0x80
761 0x3d 0xf8 0x12 0x70
762 0x3d 0xf8 0x02 0x70
763 0x38 0xf8 0xff 0x5f
764 0x35 0xf8 0x04 0x2f
765 0x34 0xf8 0x04 0x1d
766 0x34 0xf8 0x00 0x1f
767 0x33 0xf8 0xff 0xeb
768 0x32 0xf8 0x04 0x9b
769 0x3d 0xf8 0x04 0x39
770
771
772 #------------------------------------------------------------------------------
773 # LDRH(literal)
774 #------------------------------------------------------------------------------
775 # CHECK: ldrh.w r7, [pc, #-0]
776 # CHECK: ldrh.w r5, [pc, #121]
777 # CHECK: ldrh.w r4, [pc, #0]
778 0x3f 0xf8 0x00 0x70
779 0xbf 0xf8 0x79 0x50
780 0xbf 0xf8 0x00 0x40
781
782
783 #------------------------------------------------------------------------------
784 # LDRSB(immediate)
785 #------------------------------------------------------------------------------
786 # CHECK: ldrsb r5, [r5, #-4]
787 # CHECK: ldrsb.w r5, [r6, #32]
788 # CHECK: ldrsb.w r5, [r6, #33]
789 # CHECK: ldrsb.w r5, [r6, #257]
790 # CHECK: ldrsb.w lr, [r7, #257]
791
792 0x15 0xf9 0x04 0x5c
793 0x96 0xf9 0x20 0x50
794 0x96 0xf9 0x21 0x50
795 0x96 0xf9 0x01 0x51
796 0x97 0xf9 0x01 0xe1
797
798
799 #------------------------------------------------------------------------------
800 # LDRSB(register)
801 #------------------------------------------------------------------------------
802 # CHECK: ldrsb.w r1, [r8, r1]
803 # CHECK: ldrsb.w r4, [r5, r2]
804 # CHECK: ldrsb.w r6, [r0, r2, lsl #3]
805 # CHECK: ldrsb.w r8, [r8, r2, lsl #2]
806 # CHECK: ldrsb.w r7, [sp, r2, lsl #1]
807 # CHECK: ldrsb.w r7, [sp, r2]
808 # CHECK: ldrsb r5, [r8, #255]!
809 # CHECK: ldrsb r2, [r5, #4]!
810 # CHECK: ldrsb r1, [r4, #-4]!
811 # CHECK: ldrsb r1, [r4, #0]!
812 # CHECK: ldrsb lr, [r3], #255
813 # CHECK: ldrsb r9, [r2], #4
814 # CHECK: ldrsb r3, [sp], #-4
815
816 0x18 0xf9 0x01 0x10
817 0x15 0xf9 0x02 0x40
818 0x10 0xf9 0x32 0x60
819 0x18 0xf9 0x22 0x80
820 0x1d 0xf9 0x12 0x70
821 0x1d 0xf9 0x02 0x70
822 0x18 0xf9 0xff 0x5f
823 0x15 0xf9 0x04 0x2f
824 0x14 0xf9 0x04 0x1d
825 0x14 0xf9 0x00 0x1f
826 0x13 0xf9 0xff 0xeb
827 0x12 0xf9 0x04 0x9b
828 0x1d 0xf9 0x04 0x39
829
830
831 #------------------------------------------------------------------------------
832 # LDRSB(literal)
833 #------------------------------------------------------------------------------
834 # CHECK: ldrsb.w r0, [pc, #-0]
835 # CHECK: ldrsb.w r12, [pc, #80]
836 # CHECK: ldrsb.w r3, [pc, #0]
837 0x1f 0xf9 0x00 0x00
838 0x9f 0xf9 0x50 0xc0
839 0x9f 0xf9 0x00 0x30
840
841
842 #------------------------------------------------------------------------------
843 # LDRSBT
844 #------------------------------------------------------------------------------
845 # CHECK: ldrsbt r1, [r2]
846 # CHECK: ldrsbt r1, [r8]
847 # CHECK: ldrsbt r1, [r8, #3]
848 # CHECK: ldrsbt r1, [r8, #255]
849
850 0x12 0xf9 0x00 0x1e
851 0x18 0xf9 0x00 0x1e
852 0x18 0xf9 0x03 0x1e
853 0x18 0xf9 0xff 0x1e
854
855
856 #------------------------------------------------------------------------------
857 # LDRSH(immediate)
858 #------------------------------------------------------------------------------
859 # CHECK: ldrsh r5, [r5, #-4]
860 # CHECK: ldrsh.w r5, [r6, #32]
861 # CHECK: ldrsh.w r5, [r6, #33]
862 # CHECK: ldrsh.w r5, [r6, #257]
863 # CHECK: ldrsh.w lr, [r7, #257]
864 # CHECK: ldrsh r10, [r5, #-0]
865
866 0x35 0xf9 0x04 0x5c
867 0xb6 0xf9 0x20 0x50
868 0xb6 0xf9 0x21 0x50
869 0xb6 0xf9 0x01 0x51
870 0xb7 0xf9 0x01 0xe1
871 0x35 0xf9 0x00 0xac
872
873 #------------------------------------------------------------------------------
874 # LDRSH(register)
875 #------------------------------------------------------------------------------
876 # CHECK: ldrsh.w r1, [r8, r1]
877 # CHECK: ldrsh.w r4, [r5, r2]
878 # CHECK: ldrsh.w r6, [r0, r2, lsl #3]
879 # CHECK: ldrsh.w r8, [r8, r2, lsl #2]
880 # CHECK: ldrsh.w r7, [sp, r2, lsl #1]
881 # CHECK: ldrsh.w r7, [sp, r2]
882 # CHECK: ldrsh r5, [r8, #255]!
883 # CHECK: ldrsh r2, [r5, #4]!
884 # CHECK: ldrsh r1, [r4, #-4]!
885 # CHECK: ldrsh r1, [r4, #0]!
886 # CHECK: ldrsh lr, [r3], #255
887 # CHECK: ldrsh r9, [r2], #4
888 # CHECK: ldrsh r3, [sp], #-4
889
890 0x38 0xf9 0x01 0x10
891 0x35 0xf9 0x02 0x40
892 0x30 0xf9 0x32 0x60
893 0x38 0xf9 0x22 0x80
894 0x3d 0xf9 0x12 0x70
895 0x3d 0xf9 0x02 0x70
896 0x38 0xf9 0xff 0x5f
897 0x35 0xf9 0x04 0x2f
898 0x34 0xf9 0x04 0x1d
899 0x34 0xf9 0x00 0x1f
900 0x33 0xf9 0xff 0xeb
901 0x32 0xf9 0x04 0x9b
902 0x3d 0xf9 0x04 0x39
903
904
905 #------------------------------------------------------------------------------
906 # LDRSH(literal)
907 #------------------------------------------------------------------------------
908 # CHECK: ldrsh.w r0, [pc, #-0]
909 # CHECK: ldrsh.w r10, [pc, #-231]
910 # CHECK: ldrsh.w r6, [pc, #0]
911 0x3f 0xf9 0x00 0x00
912 0x3f 0xf9 0xe7 0xa0
913 0xbf 0xf9 0x00 0x60
914
915
916 #------------------------------------------------------------------------------
917 # LDRSHT
918 #------------------------------------------------------------------------------
919 # CHECK: ldrsht r1, [r2]
920 # CHECK: ldrsht r1, [r8]
921 # CHECK: ldrsht r1, [r8, #3]
922 # CHECK: ldrsht r1, [r8, #255]
923
924 0x32 0xf9 0x00 0x1e
925 0x38 0xf9 0x00 0x1e
926 0x38 0xf9 0x03 0x1e
927 0x38 0xf9 0xff 0x1e
928
929
930 #------------------------------------------------------------------------------
931 # LDRT
932 #------------------------------------------------------------------------------
933 # CHECK: ldrt r1, [r2]
934 # CHECK: ldrt r2, [r6]
935 # CHECK: ldrt r3, [r7, #3]
936 # CHECK: ldrt r4, [r9, #255]
937
938 0x52 0xf8 0x00 0x1e
939 0x56 0xf8 0x00 0x2e
940 0x57 0xf8 0x03 0x3e
941 0x59 0xf8 0xff 0x4e
942
943
944 #------------------------------------------------------------------------------
945 # LSL (immediate)
946 #------------------------------------------------------------------------------
947 # CHECK: lsl.w r2, r3, #12
948 # CHECK: lsls.w r8, r3, #31
949 # CHECK: lsls.w r2, r3, #1
950 # CHECK: lsl.w r2, r3, #4
951 # CHECK: lsls.w r2, r12, #15
952
953 # CHECK: lsl.w r3, r3, #19
954 # CHECK: lsls.w r8, r8, #2
955 # CHECK: lsls.w r7, r7, #5
956 # CHECK: lsl.w r12, r12, #21
957
958 0x4f 0xea 0x03 0x32
959 0x5f 0xea 0xc3 0x78
960 0x5f 0xea 0x43 0x02
961 0x4f 0xea 0x03 0x12
962 0x5f 0xea 0xcc 0x32
963
964 0x4f 0xea 0xc3 0x43
965 0x5f 0xea 0x88 0x08
966 0x5f 0xea 0x47 0x17
967 0x4f 0xea 0x4c 0x5c
968
969
970 #------------------------------------------------------------------------------
971 # LSL (register)
972 #------------------------------------------------------------------------------
973 # CHECK: lsl.w r3, r4, r2
974 # CHECK: lsl.w r1, r1, r2
975 # CHECK: lsls.w r3, r4, r8
976
977 0x04 0xfa 0x02 0xf3
978 0x01 0xfa 0x02 0xf1
979 0x14 0xfa 0x08 0xf3
980
981
982 #------------------------------------------------------------------------------
983 # LSR (immediate)
984 #------------------------------------------------------------------------------
985 # CHECK: lsr.w r2, r3, #12
986 # CHECK: lsrs.w r8, r3, #32
987 # CHECK: lsrs.w r2, r3, #1
988 # CHECK: lsr.w r2, r3, #4
989 # CHECK: lsrs.w r2, r12, #15
990
991 # CHECK: lsr.w r3, r3, #19
992 # CHECK: lsrs.w r8, r8, #2
993 # CHECK: lsrs.w r7, r7, #5
994 # CHECK: lsr.w r12, r12, #21
995
996 0x4f 0xea 0x13 0x32
997 0x5f 0xea 0x13 0x08
998 0x5f 0xea 0x53 0x02
999 0x4f 0xea 0x13 0x12
1000 0x5f 0xea 0xdc 0x32
1001
1002 0x4f 0xea 0xd3 0x43
1003 0x5f 0xea 0x98 0x08
1004 0x5f 0xea 0x57 0x17
1005 0x4f 0xea 0x5c 0x5c
1006
1007
1008 #------------------------------------------------------------------------------
1009 # LSR (register)
1010 #------------------------------------------------------------------------------
1011 # CHECK: lsr.w r3, r4, r2
1012 # CHECK: lsr.w r1, r1, r2
1013 # CHECK: lsrs.w r3, r4, r8
1014
1015 0x24 0xfa 0x02 0xf3
1016 0x21 0xfa 0x02 0xf1
1017 0x34 0xfa 0x08 0xf3
1018
1019 #------------------------------------------------------------------------------
1020 # MCR/MCR2
1021 #------------------------------------------------------------------------------
1022 # CHECK: mcr  p7, #1, r5, c1, c1, #4
1023 # CHECK: mcr2  p7, #1, r5, c1, c1, #4
1024
1025 0x21 0xee 0x91 0x57
1026 0x21 0xfe 0x91 0x57
1027
1028
1029 #------------------------------------------------------------------------------
1030 # MCRR/MCRR2
1031 #------------------------------------------------------------------------------
1032 # CHECK: mcrr  p7, #15, r5, r4, c1
1033 # CHECK: mcrr2  p7, #15, r5, r4, c1
1034
1035 0x44 0xec 0xf1 0x57
1036 0x44 0xfc 0xf1 0x57
1037
1038
1039 #------------------------------------------------------------------------------
1040 # MLA/MLS
1041 #------------------------------------------------------------------------------
1042 # CHECK: mla  r1, r2, r3, r4
1043 # CHECK: mls  r1, r2, r3, r4
1044
1045 0x02 0xfb 0x03 0x41
1046 0x02 0xfb 0x13 0x41
1047
1048
1049 #------------------------------------------------------------------------------
1050 # MOV(immediate)
1051 #------------------------------------------------------------------------------
1052 # CHECK: movs r1, #21
1053 # CHECK: movs.w r1, #21
1054 # CHECK: movs.w r8, #21
1055 # CHECK: movw r0, #65535
1056 # CHECK: movw r1, #43777
1057 # CHECK: movw r1, #43792
1058 # CHECK: mov.w r0, #66846720
1059 # CHECK: mov.w r0, #66846720
1060 # CHECK: movs.w r0, #66846720
1061
1062 0x15 0x21
1063 0x5f 0xf0 0x15 0x01
1064 0x5f 0xf0 0x15 0x08
1065 0x4f 0xf6 0xff 0x70
1066 0x4a 0xf6 0x01 0x31
1067 0x4a 0xf6 0x10 0x31
1068 0x4f 0xf0 0x7f 0x70
1069 0x4f 0xf0 0x7f 0x70
1070 0x5f 0xf0 0x7f 0x70
1071
1072 #------------------------------------------------------------------------------
1073 # MOVT
1074 #------------------------------------------------------------------------------
1075 # CHECK: movt r3, #7
1076 # CHECK: movt r6, #65535
1077 # CHECK: it eq
1078 # CHECK: movteq r4, #4080
1079
1080 0xc0 0xf2 0x07 0x03
1081 0xcf 0xf6 0xff 0x76
1082 0x08 0xbf
1083 0xc0 0xf6 0xf0 0x74
1084
1085 #------------------------------------------------------------------------------
1086 # MRC/MRC2
1087 #------------------------------------------------------------------------------
1088 # CHECK: mrc  p14, #0, r1, c1, c2, #4
1089 # CHECK: mrc2  p14, #0, r1, c1, c2, #4
1090
1091 0x11 0xee 0x92 0x1e
1092 0x11 0xfe 0x92 0x1e
1093
1094
1095 #------------------------------------------------------------------------------
1096 # MRRC/MRRC2
1097 #------------------------------------------------------------------------------
1098 # CHECK: mrrc  p7, #1, r5, r4, c1
1099 # CHECK: mrrc2  p7, #1, r5, r4, c1
1100
1101 0x54 0xec 0x11 0x57
1102 0x54 0xfc 0x11 0x57
1103
1104
1105 #------------------------------------------------------------------------------
1106 # MRS
1107 #------------------------------------------------------------------------------
1108 # CHECK: mrs  r8, apsr
1109 # CHECK: mrs  r8, spsr
1110
1111 0xef 0xf3 0x00 0x88
1112 0xff 0xf3 0x00 0x88
1113
1114
1115 #------------------------------------------------------------------------------
1116 # MSR
1117 #------------------------------------------------------------------------------
1118 # CHECK: msr  APSR_nzcvq, r1
1119 # CHECK: msr  APSR_g, r2
1120 # CHECK: msr  APSR_nzcvq, r3
1121 # CHECK: msr  APSR_nzcvq, r4
1122 # CHECK: msr  APSR_nzcvqg, r5
1123 # CHECK: msr  CPSR_fc, r6
1124 # CHECK: msr  CPSR_c, r7
1125 # CHECK: msr  CPSR_x, r8
1126 # CHECK: msr  CPSR_fc, r9
1127 # CHECK: msr  CPSR_fc, r11
1128 # CHECK: msr  CPSR_fsx, r12
1129 # CHECK: msr  SPSR_fc, r0
1130 # CHECK: msr  SPSR_fsxc, r5
1131 # CHECK: msr  CPSR_fsxc, r8
1132
1133 0x81 0xf3 0x00 0x88
1134 0x82 0xf3 0x00 0x84
1135 0x83 0xf3 0x00 0x88
1136 0x84 0xf3 0x00 0x88
1137 0x85 0xf3 0x00 0x8c
1138 0x86 0xf3 0x00 0x89
1139 0x87 0xf3 0x00 0x81
1140 0x88 0xf3 0x00 0x82
1141 0x89 0xf3 0x00 0x89
1142 0x8b 0xf3 0x00 0x89
1143 0x8c 0xf3 0x00 0x8e
1144 0x90 0xf3 0x00 0x89
1145 0x95 0xf3 0x00 0x8f
1146 0x88 0xf3 0x00 0x8f
1147
1148
1149 #------------------------------------------------------------------------------
1150 # MUL
1151 #------------------------------------------------------------------------------
1152 # CHECK: muls r3, r4, r3
1153 # CHECK: mul r3, r4, r3
1154 # CHECK: mul r3, r4, r6
1155 # CHECK: it eq
1156 # CHECK: muleq r3, r4, r5
1157
1158 0x63 0x43
1159 0x04 0xfb 0x03 0xf3
1160 0x04 0xfb 0x06 0xf3
1161 0x08 0xbf
1162 0x04 0xfb 0x05 0xf3
1163
1164
1165 #------------------------------------------------------------------------------
1166 # MVN(immediate)
1167 #------------------------------------------------------------------------------
1168 # CHECK: mvns r8, #21
1169 # CHECK: mvn r0, #66846720
1170 # CHECK: mvns r0, #66846720
1171 # CHECK: itte eq
1172 # CHECK: mvnseq r1, #12
1173 # CHECK: mvneq r1, #12
1174 # CHECK: mvnne r1, #12
1175
1176 0x7f 0xf0 0x15 0x08
1177 0x6f 0xf0 0x7f 0x70
1178 0x7f 0xf0 0x7f 0x70
1179 0x06 0xbf
1180 0x7f 0xf0 0x0c 0x01
1181 0x6f 0xf0 0x0c 0x01
1182 0x6f 0xf0 0x0c 0x01
1183
1184
1185 #------------------------------------------------------------------------------
1186 # MVN(register)
1187 #------------------------------------------------------------------------------
1188 # CHECK: mvn.w r2, r3
1189 # CHECK: mvns r2, r3
1190 # CHECK: mvn.w r5, r6, lsl #19
1191 # CHECK: mvn.w r5, r6, lsr #9
1192 # CHECK: mvn.w r5, r6, asr #4
1193 # CHECK: mvn.w r5, r6, ror #6
1194 # CHECK: mvn.w r5, r6, rrx
1195 # CHECK: it eq
1196 # CHECK: mvneq r2, r3
1197
1198 0x6f 0xea 0x03 0x02
1199 0xda 0x43
1200 0x6f 0xea 0xc6 0x45
1201 0x6f 0xea 0x56 0x25
1202 0x6f 0xea 0x26 0x15
1203 0x6f 0xea 0xb6 0x15
1204 0x6f 0xea 0x36 0x05
1205 0x08 0xbf
1206 0xda 0x43
1207
1208 #------------------------------------------------------------------------------
1209 # NOP
1210 #------------------------------------------------------------------------------
1211 # CHECK: nop.w
1212
1213 0xaf 0xf3 0x00 0x80
1214
1215
1216 #------------------------------------------------------------------------------
1217 # ORN
1218 #------------------------------------------------------------------------------
1219 # CHECK: orn r4, r5, #61440
1220 # CHECK: orn r4, r5, r6
1221 # CHECK: orns r4, r5, r6
1222 # CHECK: orn r4, r5, r6, lsl #5
1223 # CHECK: orns r4, r5, r6, lsr #5
1224 # CHECK: orn r4, r5, r6, lsr #5
1225 # CHECK: orns r4, r5, r6, asr #5
1226 # CHECK: orn r4, r5, r6, ror #5
1227
1228 0x65 0xf4 0x70 0x44
1229 0x65 0xea 0x06 0x04
1230 0x75 0xea 0x06 0x04
1231 0x65 0xea 0x46 0x14
1232 0x75 0xea 0x56 0x14
1233 0x65 0xea 0x56 0x14
1234 0x75 0xea 0x66 0x14
1235 0x65 0xea 0x76 0x14
1236
1237
1238 #------------------------------------------------------------------------------
1239 # ORR
1240 #------------------------------------------------------------------------------
1241 # CHECK: orr r4, r5, #61440
1242 # CHECK: orr.w r4, r5, r6
1243 # CHECK: orr.w r4, r5, r6, lsl #5
1244 # CHECK: orrs.w r4, r5, r6, lsr #5
1245 # CHECK: orr.w r4, r5, r6, lsr #5
1246 # CHECK: orrs.w r4, r5, r6, asr #5
1247 # CHECK: orr.w r4, r5, r6, ror #5
1248
1249 0x45 0xf4 0x70 0x44
1250 0x45 0xea 0x06 0x04
1251 0x45 0xea 0x46 0x14
1252 0x55 0xea 0x56 0x14
1253 0x45 0xea 0x56 0x14
1254 0x55 0xea 0x66 0x14
1255 0x45 0xea 0x76 0x14
1256
1257
1258 #------------------------------------------------------------------------------
1259 # PKH
1260 #------------------------------------------------------------------------------
1261 # CHECK: pkhbt r2, r2, r3
1262 # CHECK: pkhbt r2, r2, r3, lsl #31
1263 # CHECK: pkhbt r2, r2, r3, lsl #15
1264
1265 # CHECK: pkhtb r2, r2, r3, asr #31
1266 # CHECK: pkhtb r2, r2, r3, asr #15
1267
1268 0xc2 0xea 0x03 0x02
1269 0xc2 0xea 0xc3 0x72
1270 0xc2 0xea 0xc3 0x32
1271
1272 0xc2 0xea 0xe3 0x72
1273 0xc2 0xea 0xe3 0x32
1274
1275
1276 #------------------------------------------------------------------------------
1277 # PLD(immediate)
1278 #------------------------------------------------------------------------------
1279 # CHECK: pld [r5, #-4]
1280 # CHECK: pld [r6, #32]
1281 # CHECK: pld [r6, #33]
1282 # CHECK: pld [r6, #257]
1283 # CHECK: pld [r7, #257]
1284
1285 0x15 0xf8 0x04 0xfc
1286 0x96 0xf8 0x20 0xf0
1287 0x96 0xf8 0x21 0xf0
1288 0x96 0xf8 0x01 0xf1
1289 0x97 0xf8 0x01 0xf1
1290
1291 #------------------------------------------------------------------------------
1292 # PLD(register)
1293 #------------------------------------------------------------------------------
1294 # CHECK: pld [r8, r1]
1295 # CHECK: pld [r5, r2]
1296 # CHECK: pld [r0, r2, lsl #3]
1297 # CHECK: pld [r8, r2, lsl #2]
1298 # CHECK: pld [sp, r2, lsl #1]
1299 # CHECK: pld [sp, r2]
1300
1301 0x18 0xf8 0x01 0xf0
1302 0x15 0xf8 0x02 0xf0
1303 0x10 0xf8 0x32 0xf0
1304 0x18 0xf8 0x22 0xf0
1305 0x1d 0xf8 0x12 0xf0
1306 0x1d 0xf8 0x02 0xf0
1307
1308 #------------------------------------------------------------------------------
1309 # PLD(literal)
1310 #------------------------------------------------------------------------------
1311 # CHECK: pld [pc, #-0]
1312 # CHECK: pld [pc, #455]
1313 # CHECK: pld [pc, #0]
1314
1315 0x1f 0xf8 0x00 0xf0
1316 0x9f 0xf8 0xc7 0xf1
1317 0x9f 0xf8 0x00 0xf0
1318
1319 #------------------------------------------------------------------------------
1320 # PLI(immediate)
1321 #------------------------------------------------------------------------------
1322 # CHECK: pli [r5, #-4]
1323 # CHECK: pli [r6, #32]
1324 # CHECK: pli [r6, #33]
1325 # CHECK: pli [r6, #257]
1326 # CHECK: pli [r7, #257]
1327
1328 0x15 0xf9 0x04 0xfc
1329 0x96 0xf9 0x20 0xf0
1330 0x96 0xf9 0x21 0xf0
1331 0x96 0xf9 0x01 0xf1
1332 0x97 0xf9 0x01 0xf1
1333
1334 #------------------------------------------------------------------------------
1335 # PLI(register)
1336 #------------------------------------------------------------------------------
1337 # CHECK: pli [r8, r1]
1338 # CHECK: pli [r5, r2]
1339 # CHECK: pli [r0, r2, lsl #3]
1340 # CHECK: pli [r8, r2, lsl #2]
1341 # CHECK: pli [sp, r2, lsl #1]
1342 # CHECK: pli [sp, r2]
1343
1344 0x18 0xf9 0x01 0xf0
1345 0x15 0xf9 0x02 0xf0
1346 0x10 0xf9 0x32 0xf0
1347 0x18 0xf9 0x22 0xf0
1348 0x1d 0xf9 0x12 0xf0
1349 0x1d 0xf9 0x02 0xf0
1350
1351 #------------------------------------------------------------------------------
1352 # PLI(literal)
1353 #------------------------------------------------------------------------------
1354 # CHECK: pli [pc, #-0]
1355 # CHECK: pli [pc, #-328]
1356 # CHECK: pli [pc, #0]
1357
1358 0x1f 0xf9 0x00 0xf0
1359 0x1f 0xf9 0x48 0xf1
1360 0x9f 0xf9 0x00 0xf0
1361
1362
1363 #------------------------------------------------------------------------------
1364 # QADD/QADD16/QADD8
1365 #------------------------------------------------------------------------------
1366 # CHECK: qadd r1, r2, r3
1367 # CHECK: qadd16 r1, r2, r3
1368 # CHECK: qadd8 r1, r2, r3
1369 # CHECK: itte gt
1370 # CHECK: qaddgt r1, r2, r3
1371 # CHECK: qadd16gt r1, r2, r3
1372 # CHECK: qadd8le r1, r2, r3
1373
1374 0x83 0xfa 0x82 0xf1
1375 0x92 0xfa 0x13 0xf1
1376 0x82 0xfa 0x13 0xf1
1377 0xc6 0xbf
1378 0x83 0xfa 0x82 0xf1
1379 0x92 0xfa 0x13 0xf1
1380 0x82 0xfa 0x13 0xf1
1381
1382
1383 #------------------------------------------------------------------------------
1384 # QDADD/QDSUB
1385 #------------------------------------------------------------------------------
1386 # CHECK: qdadd r6, r7, r8
1387 # CHECK: qdsub r6, r7, r8
1388 # CHECK: itt hi
1389 # CHECK: qdaddhi r6, r7, r8
1390 # CHECK: qdsubhi r6, r7, r8
1391
1392 0x88 0xfa 0x97 0xf6
1393 0x88 0xfa 0xb7 0xf6
1394 0x84 0xbf
1395 0x88 0xfa 0x97 0xf6
1396 0x88 0xfa 0xb7 0xf6
1397
1398
1399 #------------------------------------------------------------------------------
1400 # QSAX
1401 #------------------------------------------------------------------------------
1402 # CHECK: qsax r9, r12, r0
1403 # CHECK: it eq
1404 # CHECK: qsaxeq r9, r12, r0
1405
1406 0xec 0xfa 0x10 0xf9
1407 0x08 0xbf
1408 0xec 0xfa 0x10 0xf9
1409
1410
1411 #------------------------------------------------------------------------------
1412 # QSUB/QSUB16/QSUB8
1413 #------------------------------------------------------------------------------
1414 # CHECK: qsub r1, r2, r3
1415 # CHECK: qsub16 r1, r2, r3
1416 # CHECK: qsub8 r1, r2, r3
1417 # CHECK: itet le
1418 # CHECK: qsuble r1, r2, r3
1419 # CHECK: qsub16gt r1, r2, r3
1420 # CHECK: qsub8le r1, r2, r3
1421
1422 0x83 0xfa 0xa2 0xf1
1423 0xd2 0xfa 0x13 0xf1
1424 0xc2 0xfa 0x13 0xf1
1425 0xd6 0xbf
1426 0x83 0xfa 0xa2 0xf1
1427 0xd2 0xfa 0x13 0xf1
1428 0xc2 0xfa 0x13 0xf1
1429
1430
1431 #------------------------------------------------------------------------------
1432 # RBIT
1433 #------------------------------------------------------------------------------
1434 # CHECK: rbit r1, r2
1435 # CHECK: it ne
1436 # CHECK: rbitne r1, r2
1437
1438 0x92 0xfa 0xa2 0xf1
1439 0x18 0xbf
1440 0x92 0xfa 0xa2 0xf1
1441
1442
1443 #------------------------------------------------------------------------------
1444 # REV
1445 #------------------------------------------------------------------------------
1446 # CHECK: rev.w r1, r2
1447 # CHECK: rev.w r2, r8
1448 # CHECK: itt ne
1449 # CHECK: revne r1, r2
1450 # CHECK: revne.w r1, r8
1451
1452 0x92 0xfa 0x82 0xf1
1453 0x98 0xfa 0x88 0xf2
1454 0x1c 0xbf
1455 0x11 0xba
1456 0x98 0xfa 0x88 0xf1
1457
1458
1459 #------------------------------------------------------------------------------
1460 # REV16
1461 #------------------------------------------------------------------------------
1462 # CHECK: rev16.w r1, r2
1463 # CHECK: rev16.w r2, r8
1464 # CHECK: itt ne
1465 # CHECK: rev16ne r1, r2
1466 # CHECK: rev16ne.w r1, r8
1467
1468 0x92 0xfa 0x92 0xf1
1469 0x98 0xfa 0x98 0xf2
1470 0x1c 0xbf
1471 0x51 0xba
1472 0x98 0xfa 0x98 0xf1
1473
1474
1475 #------------------------------------------------------------------------------
1476 # REVSH
1477 #------------------------------------------------------------------------------
1478 # CHECK: revsh.w r1, r2
1479 # CHECK: revsh.w r2, r8
1480 # CHECK: itt ne
1481 # CHECK: revshne r1, r2
1482 # CHECK: revshne.w r1, r8
1483
1484 0x92 0xfa 0xb2 0xf1
1485 0x98 0xfa 0xb8 0xf2
1486 0x1c 0xbf
1487 0xd1 0xba
1488 0x98 0xfa 0xb8 0xf1
1489
1490
1491 #------------------------------------------------------------------------------
1492 # ROR (immediate)
1493 #------------------------------------------------------------------------------
1494 # CHECK: ror.w r2, r3, #12
1495 # CHECK: rors.w r8, r3, #31
1496 # CHECK: rors.w r2, r3, #1
1497 # CHECK: ror.w r2, r3, #4
1498 # CHECK: rors.w r2, r12, #15
1499
1500 # CHECK: ror.w r3, r3, #19
1501 # CHECK: rors.w r8, r8, #2
1502 # CHECK: rors.w r7, r7, #5
1503 # CHECK: ror.w r12, r12, #21
1504
1505 0x4f 0xea 0x33 0x32
1506 0x5f 0xea 0xf3 0x78
1507 0x5f 0xea 0x73 0x02
1508 0x4f 0xea 0x33 0x12
1509 0x5f 0xea 0xfc 0x32
1510
1511 0x4f 0xea 0xf3 0x43
1512 0x5f 0xea 0xb8 0x08
1513 0x5f 0xea 0x77 0x17
1514 0x4f 0xea 0x7c 0x5c
1515
1516
1517 #------------------------------------------------------------------------------
1518 # ROR (register)
1519 #------------------------------------------------------------------------------
1520 # CHECK: ror.w r3, r4, r2
1521 # CHECK: ror.w r1, r1, r2
1522 # CHECK: rors.w r3, r4, r8
1523
1524 0x64 0xfa 0x02 0xf3
1525 0x61 0xfa 0x02 0xf1
1526 0x74 0xfa 0x08 0xf3
1527
1528
1529 #------------------------------------------------------------------------------
1530 # RRX
1531 #------------------------------------------------------------------------------
1532 # CHECK: rrx r1, r2
1533 # CHECK: rrxs r1, r2
1534 # CHECK: ite lt
1535 # CHECK: rrxlt r9, r12
1536 # CHECK: rrxsge r8, r3
1537
1538 0x4f 0xea 0x32 0x01
1539 0x5f 0xea 0x32 0x01
1540 0xb4 0xbf
1541 0x4f 0xea 0x3c 0x09
1542 0x5f 0xea 0x33 0x08
1543
1544 #------------------------------------------------------------------------------
1545 # RSB (immediate)
1546 #------------------------------------------------------------------------------
1547 # CHECK: rsb.w r2, r5, #1044480
1548 # CHECK: rsbs.w r3, r12, #15
1549 # CHECK: rsb.w r1, r1, #255
1550
1551 0xc5 0xf5 0x7f 0x22
1552 0xdc 0xf1 0x0f 0x03
1553 0xc1 0xf1 0xff 0x01
1554
1555
1556 #------------------------------------------------------------------------------
1557 # RSB (register)
1558 #------------------------------------------------------------------------------
1559 # CHECK: rsb r4, r4, r8
1560 # CHECK: rsb r4, r9, r8
1561 # CHECK: rsb r1, r4, r8, asr #3
1562 # CHECK: rsbs r2, r1, r7, lsl #1
1563
1564 0xc4 0xeb 0x08 0x04
1565 0xc9 0xeb 0x08 0x04
1566 0xc4 0xeb 0xe8 0x01
1567 0xd1 0xeb 0x47 0x02
1568
1569
1570 #------------------------------------------------------------------------------
1571 # SADD16
1572 #------------------------------------------------------------------------------
1573 # CHECK: sadd16 r3, r4, r8
1574 # CHECK: it ne
1575 # CHECK: sadd16ne r3, r4, r8
1576
1577 0x94 0xfa 0x08 0xf3
1578 0x18 0xbf
1579 0x94 0xfa 0x08 0xf3
1580
1581
1582 #------------------------------------------------------------------------------
1583 # SADD8
1584 #------------------------------------------------------------------------------
1585 # CHECK: sadd8 r3, r4, r8
1586 # CHECK: it ne
1587 # CHECK: sadd8ne r3, r4, r8
1588
1589 0x84 0xfa 0x08 0xf3
1590 0x18 0xbf
1591 0x84 0xfa 0x08 0xf3
1592
1593
1594 #------------------------------------------------------------------------------
1595 # SASX
1596 #------------------------------------------------------------------------------
1597 # CHECK: sasx r9, r2, r7
1598 # CHECK: it ne
1599 # CHECK: sasxne r2, r5, r6
1600
1601 0xa2 0xfa 0x07 0xf9
1602 0x18 0xbf
1603 0xa5 0xfa 0x06 0xf2
1604
1605
1606 #------------------------------------------------------------------------------
1607 # SBC (immediate)
1608 #------------------------------------------------------------------------------
1609 # CHECK: sbc r0, r1, #4
1610 # CHECK: sbcs r0, r1, #0
1611 # CHECK: sbc r1, r2, #255
1612 # CHECK: sbc r3, r7, #5570645
1613 # CHECK: sbc r8, r12, #2852170240
1614 # CHECK: sbc r9, r7, #2779096485
1615 # CHECK: sbc r5, r3, #2264924160
1616 # CHECK: sbc r4, r2, #2139095040
1617 # CHECK: sbc r4, r2, #1664
1618
1619 0x61 0xf1 0x04 0x00
1620 0x71 0xf1 0x00 0x00
1621 0x62 0xf1 0xff 0x01
1622 0x67 0xf1 0x55 0x13
1623 0x6c 0xf1 0xaa 0x28
1624 0x67 0xf1 0xa5 0x39
1625 0x63 0xf1 0x07 0x45
1626 0x62 0xf1 0xff 0x44
1627 0x62 0xf5 0xd0 0x64
1628
1629
1630 #------------------------------------------------------------------------------
1631 # SBC (register)
1632 #------------------------------------------------------------------------------
1633 # CHECK: sbc.w r4, r5, r6
1634 # CHECK: sbcs.w r4, r5, r6
1635 # CHECK: sbc.w r9, r1, r3
1636 # CHECK: sbcs.w r9, r1, r3
1637 # CHECK: sbc.w r0, r1, r3, ror #4
1638 # CHECK: sbcs.w r0, r1, r3, lsl #7
1639 # CHECK: sbc.w r0, r1, r3, lsr #31
1640 # CHECK: sbcs.w r0, r1, r3, asr #32
1641
1642 0x65 0xeb 0x06 0x04
1643 0x75 0xeb 0x06 0x04
1644 0x61 0xeb 0x03 0x09
1645 0x71 0xeb 0x03 0x09
1646 0x61 0xeb 0x33 0x10
1647 0x71 0xeb 0xc3 0x10
1648 0x61 0xeb 0xd3 0x70
1649 0x71 0xeb 0x23 0x00
1650
1651
1652 #------------------------------------------------------------------------------
1653 # SBFX
1654 #------------------------------------------------------------------------------
1655 # CHECK: sbfx r4, r5, #16, #1
1656 # CHECK: it gt
1657 # CHECK: sbfxgt r4, r5, #16, #16
1658
1659 0x45 0xf3 0x00 0x44
1660 0xc8 0xbf
1661 0x45 0xf3 0x0f 0x44
1662
1663
1664 #------------------------------------------------------------------------------
1665 # SEL
1666 #------------------------------------------------------------------------------
1667 # CHECK: sel r5, r9, r2
1668 # CHECK: it le
1669 # CHECK: selle r5, r9, r2
1670
1671 0xa9 0xfa 0x82 0xf5
1672 0xd8 0xbf
1673 0xa9 0xfa 0x82 0xf5
1674
1675
1676 #------------------------------------------------------------------------------
1677 # SEV
1678 #------------------------------------------------------------------------------
1679 # CHECK: sev.w
1680 # CHECK: it eq
1681 # CHECK: seveq.w
1682
1683 0xaf 0xf3 0x04 0x80
1684 0x08 0xbf
1685 0xaf 0xf3 0x04 0x80
1686
1687
1688 #------------------------------------------------------------------------------
1689 # SADD16/SADD8
1690 #------------------------------------------------------------------------------
1691 # CHECK: sadd16 r1, r2, r3
1692 # CHECK: sadd8 r1, r2, r3
1693 # CHECK: ite gt
1694 # CHECK: sadd16gt r1, r2, r3
1695 # CHECK: sadd8le r1, r2, r3
1696
1697 0x92 0xfa 0x03 0xf1
1698 0x82 0xfa 0x03 0xf1
1699 0xcc 0xbf
1700 0x92 0xfa 0x03 0xf1
1701 0x82 0xfa 0x03 0xf1
1702
1703
1704 #------------------------------------------------------------------------------
1705 # SHASX
1706 #------------------------------------------------------------------------------
1707 # CHECK: shasx r4, r8, r2
1708 # CHECK: it gt
1709 # CHECK: shasxgt r4, r8, r2
1710
1711 0xa8 0xfa 0x22 0xf4
1712 0xc8 0xbf
1713 0xa8 0xfa 0x22 0xf4
1714
1715
1716 #------------------------------------------------------------------------------
1717 # SHASX
1718 #------------------------------------------------------------------------------
1719 # CHECK: shsax r4, r8, r2
1720 # CHECK: it gt
1721 # CHECK: shsaxgt r4, r8, r2
1722
1723 0xe8 0xfa 0x22 0xf4
1724 0xc8 0xbf
1725 0xe8 0xfa 0x22 0xf4
1726
1727
1728 #------------------------------------------------------------------------------
1729 # SHSUB16/SHSUB8
1730 #------------------------------------------------------------------------------
1731 # CHECK: shsub16 r4, r8, r2
1732 # CHECK: shsub8 r4, r8, r2
1733 # CHECK: itt gt
1734 # CHECK: shsub16gt r4, r8, r2
1735 # CHECK: shsub8gt r4, r8, r2
1736
1737 0xd8 0xfa 0x22 0xf4
1738 0xc8 0xfa 0x22 0xf4
1739 0xc4 0xbf
1740 0xd8 0xfa 0x22 0xf4
1741 0xc8 0xfa 0x22 0xf4
1742
1743
1744 #------------------------------------------------------------------------------
1745 # SMLABB/SMLABT/SMLATB/SMLATT
1746 #------------------------------------------------------------------------------
1747 # CHECK: smlabb r3, r1, r9, r0
1748 # CHECK: smlabt r5, r6, r4, r1
1749 # CHECK: smlatb r4, r2, r3, r2
1750 # CHECK: smlatt r8, r3, r8, r4
1751 # CHECK: itete gt
1752 # CHECK: smlabbgt r3, r1, r9, r0
1753 # CHECK: smlabtle r5, r6, r4, r1
1754 # CHECK: smlatbgt r4, r2, r3, r2
1755 # CHECK: smlattle r8, r3, r8, r4
1756
1757 0x11 0xfb 0x09 0x03
1758 0x16 0xfb 0x14 0x15
1759 0x12 0xfb 0x23 0x24
1760 0x13 0xfb 0x38 0x48
1761 0xcb 0xbf
1762 0x11 0xfb 0x09 0x03
1763 0x16 0xfb 0x14 0x15
1764 0x12 0xfb 0x23 0x24
1765 0x13 0xfb 0x38 0x48
1766
1767
1768 #------------------------------------------------------------------------------
1769 # SMLAD/SMLADX
1770 #------------------------------------------------------------------------------
1771 # CHECK: smlad r2, r3, r5, r8
1772 # CHECK: smladx r2, r3, r5, r8
1773 # CHECK: itt hi
1774 # CHECK: smladhi r2, r3, r5, r8
1775 # CHECK: smladxhi r2, r3, r5, r8
1776
1777 0x23 0xfb 0x05 0x82
1778 0x23 0xfb 0x15 0x82
1779 0x84 0xbf
1780 0x23 0xfb 0x05 0x82
1781 0x23 0xfb 0x15 0x82
1782
1783
1784 #------------------------------------------------------------------------------
1785 # SMLAL
1786 #------------------------------------------------------------------------------
1787 # CHECK: smlal r2, r3, r5, r8
1788 # CHECK: it eq
1789 # CHECK: smlaleq r2, r3, r5, r8
1790
1791 0xc5 0xfb 0x08 0x23
1792 0x08 0xbf
1793 0xc5 0xfb 0x08 0x23
1794
1795
1796 #------------------------------------------------------------------------------
1797 # SMLALBB/SMLALBT/SMLALTB/SMLALTT
1798 #------------------------------------------------------------------------------
1799 # CHECK: smlalbb r3, r1, r9, r0
1800 # CHECK: smlalbt r5, r6, r4, r1
1801 # CHECK: smlaltb r4, r2, r3, r2
1802 # CHECK: smlaltt r8, r3, r8, r4
1803 # CHECK: iteet ge
1804 # CHECK: smlalbbge r3, r1, r9, r0
1805 # CHECK: smlalbtlt r5, r6, r4, r1
1806 # CHECK: smlaltblt r4, r2, r3, r2
1807 # CHECK: smlalttge r8, r3, r8, r4
1808
1809 0xc9 0xfb 0x80 0x31
1810 0xc4 0xfb 0x91 0x56
1811 0xc3 0xfb 0xa2 0x42
1812 0xc8 0xfb 0xb4 0x83
1813 0xad 0xbf
1814 0xc9 0xfb 0x80 0x31
1815 0xc4 0xfb 0x91 0x56
1816 0xc3 0xfb 0xa2 0x42
1817 0xc8 0xfb 0xb4 0x83
1818
1819 #------------------------------------------------------------------------------
1820 # SMLALD/SMLALDX
1821 #------------------------------------------------------------------------------
1822 # CHECK: smlald r2, r3, r5, r8
1823 # CHECK: smlaldx r2, r3, r5, r8
1824 # CHECK: ite eq
1825 # CHECK: smlaldeq r2, r3, r5, r8
1826 # CHECK: smlaldxne r2, r3, r5, r8
1827
1828 0xc5 0xfb 0xc8 0x23
1829 0xc5 0xfb 0xd8 0x23
1830 0x0c 0xbf
1831 0xc5 0xfb 0xc8 0x23
1832 0xc5 0xfb 0xd8 0x23
1833
1834
1835 #------------------------------------------------------------------------------
1836 # SMLAWB/SMLAWT
1837 #------------------------------------------------------------------------------
1838 # CHECK: smlawb r2, r3, r10, r8
1839 # CHECK: smlawt r8, r3, r5, r9
1840 # CHECK: ite eq
1841 # CHECK: smlawbeq r2, r7, r5, r8
1842 # CHECK: smlawtne r1, r3, r0, r8
1843
1844 0x33 0xfb 0x0a 0x82
1845 0x33 0xfb 0x15 0x98
1846 0x0c 0xbf
1847 0x37 0xfb 0x05 0x82
1848 0x33 0xfb 0x10 0x81
1849
1850
1851 #------------------------------------------------------------------------------
1852 # SMLSD/SMLSDX
1853 #------------------------------------------------------------------------------
1854 # CHECK: smlsd r2, r3, r5, r8
1855 # CHECK: smlsdx r2, r3, r5, r8
1856 # CHECK: ite le
1857 # CHECK: smlsdle r2, r3, r5, r8
1858 # CHECK: smlsdxgt r2, r3, r5, r8
1859
1860 0x43 0xfb 0x05 0x82
1861 0x43 0xfb 0x15 0x82
1862 0xd4 0xbf
1863 0x43 0xfb 0x05 0x82
1864 0x43 0xfb 0x15 0x82
1865
1866
1867 #------------------------------------------------------------------------------
1868 # SMLSLD/SMLSLDX
1869 #------------------------------------------------------------------------------
1870 # CHECK: smlsld r2, r9, r5, r1
1871 # CHECK: smlsldx r4, r11, r2, r8
1872 # CHECK: ite ge
1873 # CHECK: smlsldge r8, r2, r5, r6
1874 # CHECK: smlsldxlt r1, r0, r3, r8
1875
1876 0xd5 0xfb 0xc1 0x29
1877 0xd2 0xfb 0xd8 0x4b
1878 0xac 0xbf
1879 0xd5 0xfb 0xc6 0x82
1880 0xd3 0xfb 0xd8 0x10
1881
1882
1883 #------------------------------------------------------------------------------
1884 # SMMLA/SMMLAR
1885 #------------------------------------------------------------------------------
1886 # CHECK: smmla r1, r2, r3, r4
1887 # CHECK: smmlar r4, r3, r2, r1
1888 # CHECK: ite lo
1889 # CHECK: smmlalo r1, r2, r3, r4
1890 # CHECK: smmlarhs r4, r3, r2, r1
1891
1892 0x52 0xfb 0x03 0x41
1893 0x53 0xfb 0x12 0x14
1894 0x34 0xbf
1895 0x52 0xfb 0x03 0x41
1896 0x53 0xfb 0x12 0x14
1897
1898
1899 #------------------------------------------------------------------------------
1900 # SMMLS/SMMLSR
1901 #------------------------------------------------------------------------------
1902 # CHECK: smmls r1, r2, r3, r4
1903 # CHECK: smmlsr r4, r3, r2, r1
1904 # CHECK: ite lo
1905 # CHECK: smmlslo r1, r2, r3, r4
1906 # CHECK: smmlsrhs r4, r3, r2, r1
1907
1908 0x62 0xfb 0x03 0x41
1909 0x63 0xfb 0x12 0x14
1910 0x34 0xbf
1911 0x62 0xfb 0x03 0x41
1912 0x63 0xfb 0x12 0x14
1913
1914 #------------------------------------------------------------------------------
1915 # SSAT
1916 #------------------------------------------------------------------------------
1917 # CHECK: ssat r9, #30, r0, asr #2
1918
1919 0x20 0xf3 0x9d 0x09
1920
1921 #------------------------------------------------------------------------------
1922 # STR (immediate)
1923 #------------------------------------------------------------------------------
1924 # CHECK: str r10, [r11], #0
1925
1926 0x4b 0xf8 0x00 0xab
1927
1928 #------------------------------------------------------------------------------
1929 # STRD (immediate)
1930 #------------------------------------------------------------------------------
1931 # CHECK: strd r1, r1, [r0], #0
1932 # CHECK: strd r6, r3, [r5], #-8
1933 # CHECK: strd r8, r5, [r5], #-0
1934 # CHECK: strd r7, r4, [r5], #-4
1935 # CHECK: strd r0, r1, [r2, #-0]!
1936 # CHECK: strd r0, r1, [r2, #0]!
1937 # CHECK: strd r0, r1, [r2, #-0]
1938
1939 0xe0 0xe8 0x00 0x11
1940 0x65 0xe8 0x02 0x63
1941 0x65 0xe8 0x00 0x85
1942 0x65 0xe8 0x01 0x74
1943 0x62 0xe9 0x00 0x01
1944 0xe2 0xe9 0x00 0x01
1945 0x42 0xe9 0x00 0x01
1946
1947 #------------------------------------------------------------------------------
1948 # STREX/STREXB/STREXH/STREXD
1949 #------------------------------------------------------------------------------
1950 # CHECK: strex r1, r8, [r4]
1951 # CHECK: strex r8, r2, [r4]
1952 # CHECK: strex r2, r12, [sp, #128]
1953 # CHECK: strexb r5, r1, [r7]
1954 # CHECK: strexh r9, r7, [r12]
1955 # CHECK: strexd r9, r3, r6, [r4]
1956
1957 0x44 0xe8 0x00 0x81
1958 0x44 0xe8 0x00 0x28
1959 0x4d 0xe8 0x20 0xc2
1960 0xc7 0xe8 0x45 0x1f
1961 0xcc 0xe8 0x59 0x7f
1962 0xc4 0xe8 0x79 0x36
1963
1964
1965 #------------------------------------------------------------------------------
1966 # STRH(immediate)
1967 #------------------------------------------------------------------------------
1968 # CHECK: strh r5, [r5, #-4]
1969 # CHECK: strh r5, [r6, #32]
1970 # CHECK: strh.w r5, [r6, #33]
1971 # CHECK: strh.w r5, [r6, #257]
1972 # CHECK: strh.w lr, [r7, #257]
1973 # CHECK: strh r5, [r8, #255]!
1974 # CHECK: strh r2, [r5, #4]!
1975 # CHECK: strh r1, [r4, #-4]!
1976 # CHECK: strh r1, [r4, #0]!
1977 # CHECK: strh lr, [r3], #255
1978 # CHECK: strh r9, [r2], #4
1979 # CHECK: strh r3, [sp], #-4
1980
1981 0x25 0xf8 0x04 0x5c
1982 0x35 0x84
1983 0xa6 0xf8 0x21 0x50
1984 0xa6 0xf8 0x01 0x51
1985 0xa7 0xf8 0x01 0xe1
1986 0x28 0xf8 0xff 0x5f
1987 0x25 0xf8 0x04 0x2f
1988 0x24 0xf8 0x04 0x1d
1989 0x24 0xf8 0x00 0x1f
1990 0x23 0xf8 0xff 0xeb
1991 0x22 0xf8 0x04 0x9b
1992 0x2d 0xf8 0x04 0x39
1993
1994
1995 #------------------------------------------------------------------------------
1996 # STRH(register)
1997 #------------------------------------------------------------------------------
1998 # CHECK: strh.w r1, [r8, r1]
1999 # CHECK: strh.w r4, [r5, r2]
2000 # CHECK: strh.w r6, [r0, r2, lsl #3]
2001 # CHECK: strh.w r8, [r8, r2, lsl #2]
2002 # CHECK: strh.w r7, [sp, r2, lsl #1]
2003 # CHECK: strh.w r7, [sp, r2]
2004
2005 0x28 0xf8 0x01 0x10
2006 0x25 0xf8 0x02 0x40
2007 0x20 0xf8 0x32 0x60
2008 0x28 0xf8 0x22 0x80
2009 0x2d 0xf8 0x12 0x70
2010 0x2d 0xf8 0x02 0x70
2011
2012
2013 #------------------------------------------------------------------------------
2014 # STRHT
2015 #------------------------------------------------------------------------------
2016 # CHECK: strht r1, [r2]
2017 # CHECK: strht r1, [r8]
2018 # CHECK: strht r1, [r8, #3]
2019 # CHECK: strht r1, [r8, #255]
2020
2021 0x22 0xf8 0x00 0x1e
2022 0x28 0xf8 0x00 0x1e
2023 0x28 0xf8 0x03 0x1e
2024 0x28 0xf8 0xff 0x1e
2025
2026
2027 #------------------------------------------------------------------------------
2028 # STRT
2029 #------------------------------------------------------------------------------
2030 # CHECK: strt r1, [r2]
2031 # CHECK: strt r1, [r8]
2032 # CHECK: strt r1, [r8, #3]
2033 # CHECK: strt r1, [r8, #255]
2034
2035 0x42 0xf8 0x00 0x1e
2036 0x48 0xf8 0x00 0x1e
2037 0x48 0xf8 0x03 0x1e
2038 0x48 0xf8 0xff 0x1e
2039
2040
2041 #------------------------------------------------------------------------------
2042 # SUB (immediate)
2043 #------------------------------------------------------------------------------
2044 # CHECK: itet eq
2045 # CHECK: subeq r1, r2, #4
2046 # CHECK: subwne r5, r3, #1023
2047 # CHECK: subweq r4, r5, #293
2048 # CHECK: sub.w r2, sp, #1024
2049 # CHECK: sub.w r2, r8, #65280
2050 # CHECK: subw r2, r3, #257
2051 # CHECK: sub.w r12, r6, #256
2052 # CHECK: subw r12, r6, #256
2053 # CHECK: subs.w r1, r2, #496
2054 # CHECK: subs pc, lr, #4
2055
2056 0x0a 0xbf
2057 0x11 0x1f
2058 0xa3 0xf2 0xff 0x35
2059 0xa5 0xf2 0x25 0x14
2060 0xad 0xf5 0x80 0x62
2061 0xa8 0xf5 0x7f 0x42
2062 0xa3 0xf2 0x01 0x12
2063 0xa6 0xf5 0x80 0x7c
2064 0xa6 0xf2 0x00 0x1c
2065 0xb2 0xf5 0xf8 0x71
2066 0xde 0xf3 0x04 0x8f
2067
2068
2069 #------------------------------------------------------------------------------
2070 # SUB (register)
2071 #------------------------------------------------------------------------------
2072 # CHECK: sub.w r4, r5, r6
2073 # CHECK: sub.w r4, r5, r6, lsl #5
2074 # CHECK: sub.w r4, r5, r6, lsr #5
2075 # CHECK: sub.w r4, r5, r6, lsr #5
2076 # CHECK: sub.w r4, r5, r6, asr #5
2077 # CHECK: sub.w r4, r5, r6, ror #5
2078 # CHECK: sub.w r5, r2, r12, rrx
2079
2080 0xa5 0xeb 0x06 0x04
2081 0xa5 0xeb 0x46 0x14
2082 0xa5 0xeb 0x56 0x14
2083 0xa5 0xeb 0x56 0x14
2084 0xa5 0xeb 0x66 0x14
2085 0xa5 0xeb 0x76 0x14
2086 0xa2 0xeb 0x3c 0x05
2087
2088
2089 #------------------------------------------------------------------------------
2090 # SVC
2091 #------------------------------------------------------------------------------
2092 # CHECK: svc #0
2093 # CHECK: ite eq
2094 # CHECK: svceq #255
2095 # CHECK: svcne #33
2096
2097 0x00 0xdf
2098 0x0c 0xbf
2099 0xff 0xdf
2100 0x21 0xdf
2101
2102 #------------------------------------------------------------------------------
2103 # SXTAB
2104 #------------------------------------------------------------------------------
2105 # CHECK:  sxtab r2, r3, r4
2106 # CHECK:  sxtab r4, r5, r6
2107 # CHECK:  it lt
2108 # CHECK:  sxtablt r6, r2, r9, ror #8
2109 # CHECK:  sxtab r5, r1, r4, ror #16
2110 # CHECK:  sxtab r7, r8, r3, ror #24
2111
2112 0x43 0xfa 0x84 0xf2
2113 0x45 0xfa 0x86 0xf4
2114 0xb8 0xbf
2115 0x42 0xfa 0x99 0xf6
2116 0x41 0xfa 0xa4 0xf5
2117 0x48 0xfa 0xb3 0xf7
2118
2119
2120 #------------------------------------------------------------------------------
2121 # SXTAB16
2122 #------------------------------------------------------------------------------
2123 # CHECK:  sxtab16 r6, r2, r7
2124 # CHECK:  sxtab16 r3, r5, r8, ror #8
2125 # CHECK:  sxtab16 r3, r2, r1, ror #16
2126 # CHECK:  ite ne
2127 # CHECK:  sxtab16ne r0, r1, r4
2128 # CHECK:  sxtab16eq r1, r2, r3, ror #24
2129
2130 0x22 0xfa 0x87 0xf6
2131 0x25 0xfa 0x98 0xf3
2132 0x22 0xfa 0xa1 0xf3
2133 0x14 0xbf
2134 0x21 0xfa 0x84 0xf0
2135 0x22 0xfa 0xb3 0xf1
2136
2137
2138 #------------------------------------------------------------------------------
2139 # SXTAH
2140 #------------------------------------------------------------------------------
2141 # CHECK:  sxtah r1, r3, r9
2142 # CHECK:  sxtah r3, r8, r3, ror #8
2143 # CHECK:  sxtah r9, r3, r3, ror #24
2144 # CHECK:  ite hi
2145 # CHECK:  sxtahhi r6, r1, r6
2146 # CHECK:  sxtahls r2, r2, r4, ror #16
2147
2148 0x03 0xfa 0x89 0xf1
2149 0x08 0xfa 0x93 0xf3
2150 0x03 0xfa 0xb3 0xf9
2151 0x8c 0xbf
2152 0x01 0xfa 0x86 0xf6
2153 0x02 0xfa 0xa4 0xf2
2154
2155
2156 #------------------------------------------------------------------------------
2157 # SXTB
2158 #------------------------------------------------------------------------------
2159 # CHECK:  sxtb r5, r6
2160 # CHECK:  sxtb.w r6, r9, ror #8
2161 # CHECK:  sxtb.w r8, r3, ror #24
2162 # CHECK:  ite ge
2163 # CHECK:  sxtbge r2, r4
2164 # CHECK:  sxtblt.w r5, r1, ror #16
2165
2166 0x75 0xb2
2167 0x4f 0xfa 0x99 0xf6
2168 0x4f 0xfa 0xb3 0xf8
2169 0xac 0xbf
2170 0x62 0xb2
2171 0x4f 0xfa 0xa1 0xf5
2172
2173
2174 #------------------------------------------------------------------------------
2175 # SXTB16
2176 #------------------------------------------------------------------------------
2177 # CHECK:  sxtb16 r1, r4
2178 # CHECK:  sxtb16 r6, r7
2179 # CHECK:  sxtb16 r3, r1, ror #16
2180 # CHECK:  ite hs
2181 # CHECK:  sxtb16hs r3, r5, ror #8
2182 # CHECK:  sxtb16lo r2, r3, ror #24
2183
2184 0x2f 0xfa 0x84 0xf1
2185 0x2f 0xfa 0x87 0xf6
2186 0x2f 0xfa 0xa1 0xf3
2187 0x2c 0xbf
2188 0x2f 0xfa 0x95 0xf3
2189 0x2f 0xfa 0xb3 0xf2
2190
2191
2192 #------------------------------------------------------------------------------
2193 # SXTH
2194 #------------------------------------------------------------------------------
2195 # CHECK:  sxth r1, r6
2196 # CHECK:  sxth.w r3, r8, ror #8
2197 # CHECK:  sxth.w r9, r3, ror #24
2198 # CHECK:  itt ne
2199 # CHECK:  sxthne.w r3, r9
2200 # CHECK:  sxthne.w r2, r2, ror #16
2201
2202 0x31 0xb2
2203 0x0f 0xfa 0x98 0xf3
2204 0x0f 0xfa 0xb3 0xf9
2205 0x1c 0xbf
2206 0x0f 0xfa 0x89 0xf3
2207 0x0f 0xfa 0xa2 0xf2
2208
2209
2210 #------------------------------------------------------------------------------
2211 # SXTB
2212 #------------------------------------------------------------------------------
2213 # CHECK:  sxtb r5, r6
2214 # CHECK:  sxtb.w r6, r9, ror #8
2215 # CHECK:  sxtb.w r8, r3, ror #24
2216 # CHECK:  ite ge
2217 # CHECK:  sxtbge r2, r4
2218 # CHECK:  sxtblt.w r5, r1, ror #16
2219
2220 0x75 0xb2
2221 0x4f 0xfa 0x99 0xf6
2222 0x4f 0xfa 0xb3 0xf8
2223 0xac 0xbf
2224 0x62 0xb2
2225 0x4f 0xfa 0xa1 0xf5
2226
2227
2228 #------------------------------------------------------------------------------
2229 # SXTB16
2230 #------------------------------------------------------------------------------
2231 # CHECK:  sxtb16 r1, r4
2232 # CHECK:  sxtb16 r6, r7
2233 # CHECK:  sxtb16 r3, r1, ror #16
2234 # CHECK:  ite hs
2235 # CHECK:  sxtb16hs r3, r5, ror #8
2236 # CHECK:  sxtb16lo r2, r3, ror #24
2237
2238 0x2f 0xfa 0x84 0xf1
2239 0x2f 0xfa 0x87 0xf6
2240 0x2f 0xfa 0xa1 0xf3
2241 0x2c 0xbf
2242 0x2f 0xfa 0x95 0xf3
2243 0x2f 0xfa 0xb3 0xf2
2244
2245
2246 #------------------------------------------------------------------------------
2247 # SXTH
2248 #------------------------------------------------------------------------------
2249 # CHECK:  sxth r1, r6
2250 # CHECK:  sxth.w r3, r8, ror #8
2251 # CHECK:  sxth.w r9, r3, ror #24
2252 # CHECK:  itt ne
2253 # CHECK:  sxthne.w r3, r9
2254 # CHECK:  sxthne.w r2, r2, ror #16
2255
2256 0x31 0xb2
2257 0x0f 0xfa 0x98 0xf3
2258 0x0f 0xfa 0xb3 0xf9
2259 0x1c 0xbf
2260 0x0f 0xfa 0x89 0xf3
2261 0x0f 0xfa 0xa2 0xf2
2262
2263
2264 #------------------------------------------------------------------------------
2265 # TBB/TBH
2266 #------------------------------------------------------------------------------
2267 # CHECK:  tbb [r3, r8]
2268 # CHECK:  tbh [r3, r8, lsl #1]
2269 # CHECK:  it eq
2270 # CHECK:  tbbeq [r3, r8]
2271 # CHECK:  it hs
2272 # CHECK:  tbhhs [r3, r8, lsl #1]
2273
2274 0xd3 0xe8 0x08 0xf0
2275 0xd3 0xe8 0x18 0xf0
2276 0x08 0xbf
2277 0xd3 0xe8 0x08 0xf0
2278 0x28 0xbf
2279 0xd3 0xe8 0x18 0xf0
2280
2281
2282 #------------------------------------------------------------------------------
2283 # TEQ
2284 #------------------------------------------------------------------------------
2285 # CHECK:  teq.w r5, #61440
2286 # CHECK:  teq.w r4, r5
2287 # CHECK:  teq.w r4, r5, lsl #5
2288 # CHECK:  teq.w r4, r5, lsr #5
2289 # CHECK:  teq.w r4, r5, lsr #5
2290 # CHECK:  teq.w r4, r5, asr #5
2291 # CHECK:  teq.w r4, r5, ror #5
2292
2293 0x95 0xf4 0x70 0x4f
2294 0x94 0xea 0x05 0x0f
2295 0x94 0xea 0x45 0x1f
2296 0x94 0xea 0x55 0x1f
2297 0x94 0xea 0x55 0x1f
2298 0x94 0xea 0x65 0x1f
2299 0x94 0xea 0x75 0x1f
2300
2301
2302 #------------------------------------------------------------------------------
2303 # TST
2304 #------------------------------------------------------------------------------
2305 # CHECK:  tst.w r5, #61440
2306 # CHECK:  tst r2, r5
2307 # CHECK:  tst.w r3, r12, lsl #5
2308 # CHECK:  tst.w r4, r11, lsr #4
2309 # CHECK:  tst.w r5, r10, lsr #12
2310 # CHECK:  tst.w r6, r9, asr #30
2311 # CHECK:  tst.w r7, r8, ror #2
2312
2313 0x15 0xf4 0x70 0x4f
2314 0x2a 0x42
2315 0x13 0xea 0x4c 0x1f
2316 0x14 0xea 0x1b 0x1f
2317 0x15 0xea 0x1a 0x3f
2318 0x16 0xea 0xa9 0x7f
2319 0x17 0xea 0xb8 0x0f
2320
2321
2322 #------------------------------------------------------------------------------
2323 # UADD16/UADD8
2324 #------------------------------------------------------------------------------
2325 # CHECK:  uadd16 r1, r2, r3
2326 # CHECK:  uadd8 r1, r2, r3
2327 # CHECK:  ite gt
2328 # CHECK:  uadd16gt r1, r2, r3
2329 # CHECK:  uadd8le r1, r2, r3
2330
2331 0x92 0xfa 0x43 0xf1
2332 0x82 0xfa 0x43 0xf1
2333 0xcc 0xbf
2334 0x92 0xfa 0x43 0xf1
2335 0x82 0xfa 0x43 0xf1
2336
2337
2338 #------------------------------------------------------------------------------
2339 # UASX
2340 #------------------------------------------------------------------------------
2341 # CHECK:  uasx r9, r12, r0
2342 # CHECK:  it eq
2343 # CHECK:  uasxeq r9, r12, r0
2344 # CHECK:  uasx r9, r12, r0
2345 # CHECK:  it eq
2346 # CHECK:  uasxeq r9, r12, r0
2347
2348 0xac 0xfa 0x40 0xf9
2349 0x08 0xbf
2350 0xac 0xfa 0x40 0xf9
2351 0xac 0xfa 0x40 0xf9
2352 0x08 0xbf
2353 0xac 0xfa 0x40 0xf9
2354
2355
2356 #------------------------------------------------------------------------------
2357 # UBFX
2358 #------------------------------------------------------------------------------
2359 # CHECK:  ubfx r4, r5, #16, #1
2360 # CHECK:  it gt
2361 # CHECK:  ubfxgt r4, r5, #16, #16
2362
2363 0xc5 0xf3 0x00 0x44
2364 0xc8 0xbf
2365 0xc5 0xf3 0x0f 0x44
2366
2367
2368 #------------------------------------------------------------------------------
2369 # UHADD16/UHADD8
2370 #------------------------------------------------------------------------------
2371 # CHECK:  uhadd16 r4, r8, r2
2372 # CHECK:  uhadd8 r4, r8, r2
2373 # CHECK:  itt gt
2374 # CHECK:  uhadd16gt r4, r8, r2
2375 # CHECK:  uhadd8gt r4, r8, r2
2376
2377 0x98 0xfa 0x62 0xf4
2378 0x88 0xfa 0x62 0xf4
2379 0xc4 0xbf
2380 0x98 0xfa 0x62 0xf4
2381 0x88 0xfa 0x62 0xf4
2382
2383
2384 #------------------------------------------------------------------------------
2385 # UHASX/UHSAX
2386 #------------------------------------------------------------------------------
2387 # CHECK:  uhasx r4, r1, r5
2388 # CHECK:  uhsax r5, r6, r6
2389 # CHECK:  itt gt
2390 # CHECK:  uhasxgt r6, r9, r8
2391 # CHECK:  uhsaxgt r7, r8, r12
2392
2393 0xa1 0xfa 0x65 0xf4
2394 0xe6 0xfa 0x66 0xf5
2395 0xc4 0xbf
2396 0xa9 0xfa 0x68 0xf6
2397 0xe8 0xfa 0x6c 0xf7
2398
2399 #------------------------------------------------------------------------------
2400 # UHSUB16/UHSUB8
2401 #------------------------------------------------------------------------------
2402 # CHECK:  uhsub16 r5, r8, r3
2403 # CHECK:  uhsub8 r1, r7, r6
2404 # CHECK:  itt lt
2405 # CHECK:  uhsub16lt r4, r9, r12
2406 # CHECK:  uhsub8lt r3, r1, r5
2407
2408 0xd8 0xfa 0x63 0xf5
2409 0xc7 0xfa 0x66 0xf1
2410 0xbc 0xbf
2411 0xd9 0xfa 0x6c 0xf4
2412 0xc1 0xfa 0x65 0xf3
2413
2414
2415 #------------------------------------------------------------------------------
2416 # UMAAL
2417 #------------------------------------------------------------------------------
2418 # CHECK:  umaal r3, r4, r5, r6
2419 # CHECK:  it lt
2420 # CHECK:  umaallt r3, r4, r5, r6
2421
2422 0xe5 0xfb 0x66 0x34
2423 0xb8 0xbf
2424 0xe5 0xfb 0x66 0x34
2425
2426
2427 #------------------------------------------------------------------------------
2428 # UMLAL
2429 #------------------------------------------------------------------------------
2430 # CHECK:  umlal r2, r4, r6, r8
2431 # CHECK:  it gt
2432 # CHECK:  umlalgt r6, r1, r2, r6
2433
2434 0xe6 0xfb 0x08 0x24
2435 0xc8 0xbf
2436 0xe2 0xfb 0x06 0x61
2437
2438
2439 #------------------------------------------------------------------------------
2440 # UMULL
2441 #------------------------------------------------------------------------------
2442 # CHECK:  umull r2, r4, r6, r8
2443 # CHECK:  it gt
2444 # CHECK:  umullgt r6, r1, r2, r6
2445
2446 0xa6 0xfb 0x08 0x24
2447 0xc8 0xbf
2448 0xa2 0xfb 0x06 0x61
2449
2450
2451 #------------------------------------------------------------------------------
2452 # UQADD16/UQADD8
2453 #------------------------------------------------------------------------------
2454 # CHECK:  uqadd16 r1, r2, r3
2455 # CHECK:  uqadd8 r3, r4, r8
2456 # CHECK:  ite gt
2457 # CHECK:  uqadd16gt r4, r7, r9
2458 # CHECK:  uqadd8le r8, r1, r2
2459
2460 0x92 0xfa 0x53 0xf1
2461 0x84 0xfa 0x58 0xf3
2462 0xcc 0xbf
2463 0x97 0xfa 0x59 0xf4
2464 0x81 0xfa 0x52 0xf8
2465
2466
2467 #------------------------------------------------------------------------------
2468 # UQASX/UQSAX
2469 #------------------------------------------------------------------------------
2470 # CHECK:  uqasx r1, r2, r3
2471 # CHECK:  uqsax r3, r4, r8
2472 # CHECK:  ite gt
2473 # CHECK:  uqasxgt r4, r7, r9
2474 # CHECK:  uqsaxle r8, r1, r2
2475
2476 0xa2 0xfa 0x53 0xf1
2477 0xe4 0xfa 0x58 0xf3
2478 0xcc 0xbf
2479 0xa7 0xfa 0x59 0xf4
2480 0xe1 0xfa 0x52 0xf8
2481
2482
2483 #------------------------------------------------------------------------------
2484 # UQSUB16/UQSUB8
2485 #------------------------------------------------------------------------------
2486 # CHECK:  uqsub8 r8, r2, r9
2487 # CHECK:  uqsub16 r1, r9, r7
2488 # CHECK:  ite gt
2489 # CHECK:  uqsub8gt r3, r1, r6
2490 # CHECK:  uqsub16le r4, r6, r4
2491
2492 0xc2 0xfa 0x59 0xf8
2493 0xd9 0xfa 0x57 0xf1
2494 0xcc 0xbf
2495 0xc1 0xfa 0x56 0xf3
2496 0xd6 0xfa 0x54 0xf4
2497
2498
2499 #------------------------------------------------------------------------------
2500 # UQSUB16/UQSUB8
2501 #------------------------------------------------------------------------------
2502 # CHECK:  usad8 r1, r9, r7
2503 # CHECK:  usada8 r8, r2, r9, r12
2504 # CHECK:  ite gt
2505 # CHECK:  usada8gt r3, r1, r6, r9
2506 # CHECK:  usad8le r4, r6, r4
2507
2508 0x79 0xfb 0x07 0xf1
2509 0x72 0xfb 0x09 0xc8
2510 0xcc 0xbf
2511 0x71 0xfb 0x06 0x93
2512 0x76 0xfb 0x04 0xf4
2513
2514
2515 #------------------------------------------------------------------------------
2516 # USAT
2517 #------------------------------------------------------------------------------
2518 # CHECK:  usat r8, #1, r10
2519 # CHECK:  usat r8, #4, r10
2520 # CHECK:  usat r8, #5, r10, lsl #31
2521 # CHECK:  usat r8, #16, r10, asr #1
2522
2523 0x8a 0xf3 0x01 0x08
2524 0x8a 0xf3 0x04 0x08
2525 0x8a 0xf3 0xc5 0x78
2526 0xaa 0xf3 0x50 0x08
2527
2528
2529 #------------------------------------------------------------------------------
2530 # USAT16
2531 #------------------------------------------------------------------------------
2532 # CHECK:  usat16        r2, #2, r7
2533 # CHECK:  usat16        r3, #15, r5
2534
2535 0xa7 0xf3 0x02 0x02
2536 0xa5 0xf3 0x0f 0x03
2537
2538
2539 #------------------------------------------------------------------------------
2540 # USAX
2541 #------------------------------------------------------------------------------
2542 # CHECK:  usax r2, r3, r4
2543 # CHECK:  it ne
2544 # CHECK:  usaxne r6, r1, r9
2545 # CHECK:  usax r2, r3, r4
2546 # CHECK:  it ne
2547 # CHECK:  usaxne r6, r1, r9
2548
2549 0xe3 0xfa 0x44 0xf2
2550 0x18 0xbf
2551 0xe1 0xfa 0x49 0xf6
2552 0xe3 0xfa 0x44 0xf2
2553 0x18 0xbf
2554 0xe1 0xfa 0x49 0xf6
2555
2556
2557 #------------------------------------------------------------------------------
2558 # USUB16/USUB8
2559 #------------------------------------------------------------------------------
2560 # CHECK:  usub16 r4, r2, r7
2561 # CHECK:  usub8 r1, r8, r5
2562 # CHECK:  ite hi
2563 # CHECK:  usub16hi r1, r1, r3
2564 # CHECK:  usub8ls r9, r2, r3
2565
2566 0xd2 0xfa 0x47 0xf4
2567 0xc8 0xfa 0x45 0xf1
2568 0x8c 0xbf
2569 0xd1 0xfa 0x43 0xf1
2570 0xc2 0xfa 0x43 0xf9
2571
2572
2573 #------------------------------------------------------------------------------
2574 # UXTAB
2575 #------------------------------------------------------------------------------
2576 # CHECK:  uxtab r2, r3, r4
2577 # CHECK:  uxtab r4, r5, r6
2578 # CHECK:  it lt
2579 # CHECK:  uxtablt r6, r2, r9, ror #8
2580 # CHECK:  uxtab r5, r1, r4, ror #16
2581 # CHECK:  uxtab r7, r8, r3, ror #24
2582
2583 0x53 0xfa 0x84 0xf2
2584 0x55 0xfa 0x86 0xf4
2585 0xb8 0xbf
2586 0x52 0xfa 0x99 0xf6
2587 0x51 0xfa 0xa4 0xf5
2588 0x58 0xfa 0xb3 0xf7
2589
2590
2591 #------------------------------------------------------------------------------
2592 # UXTAB16
2593 #------------------------------------------------------------------------------
2594 # CHECK:  it ge
2595 # CHECK:  uxtab16ge r0, r1, r4
2596 # CHECK:  uxtab16 r6, r2, r7
2597 # CHECK:  uxtab16 r3, r5, r8, ror #8
2598 # CHECK:  uxtab16 r3, r2, r1, ror #16
2599 # CHECK:  it eq
2600 # CHECK:  uxtab16eq r1, r2, r3, ror #24
2601
2602 0xa8 0xbf
2603 0x31 0xfa 0x84 0xf0
2604 0x32 0xfa 0x87 0xf6
2605 0x35 0xfa 0x98 0xf3
2606 0x32 0xfa 0xa1 0xf3
2607 0x08 0xbf
2608 0x32 0xfa 0xb3 0xf1
2609
2610
2611 #------------------------------------------------------------------------------
2612 # UXTAH
2613 #------------------------------------------------------------------------------
2614 # CHECK:  uxtah r1, r3, r9
2615 # CHECK:  it hi
2616 # CHECK:  uxtahhi r6, r1, r6
2617 # CHECK:  uxtah r3, r8, r3, ror #8
2618 # CHECK:  it lo
2619 # CHECK:  uxtahlo r2, r2, r4, ror #16
2620 # CHECK:  uxtah r9, r3, r3, ror #24
2621
2622 0x13 0xfa 0x89 0xf1
2623 0x88 0xbf
2624 0x11 0xfa 0x86 0xf6
2625 0x18 0xfa 0x93 0xf3
2626 0x38 0xbf
2627 0x12 0xfa 0xa4 0xf2
2628 0x13 0xfa 0xb3 0xf9
2629
2630
2631 #------------------------------------------------------------------------------
2632 # UXTB
2633 #------------------------------------------------------------------------------
2634 # CHECK:  it ge
2635 # CHECK:  uxtbge r2, r4
2636 # CHECK:  uxtb r5, r6
2637 # CHECK:  uxtb.w r6, r9, ror #8
2638 # CHECK:  it lo
2639 # CHECK:  uxtblo.w r5, r1, ror #16
2640 # CHECK:  uxtb.w r8, r3, ror #24
2641
2642 0xa8 0xbf
2643 0xe2 0xb2
2644 0xf5 0xb2
2645 0x5f 0xfa 0x99 0xf6
2646 0x38 0xbf
2647 0x5f 0xfa 0xa1 0xf5
2648 0x5f 0xfa 0xb3 0xf8
2649
2650
2651 #------------------------------------------------------------------------------
2652 # UXTB16
2653 #------------------------------------------------------------------------------
2654 # CHECK:  uxtb16 r1, r4
2655 # CHECK:  uxtb16 r6, r7
2656 # CHECK:  it hs
2657 # CHECK:  uxtb16hs r3, r5, ror #8
2658 # CHECK:  uxtb16 r3, r1, ror #16
2659 # CHECK:  it ge
2660 # CHECK:  uxtb16ge r2, r3, ror #24
2661
2662 0x3f 0xfa 0x84 0xf1
2663 0x3f 0xfa 0x87 0xf6
2664 0x28 0xbf
2665 0x3f 0xfa 0x95 0xf3
2666 0x3f 0xfa 0xa1 0xf3
2667 0xa8 0xbf
2668 0x3f 0xfa 0xb3 0xf2
2669
2670
2671 #------------------------------------------------------------------------------
2672 # UXTH
2673 #------------------------------------------------------------------------------
2674 # CHECK:  it ne
2675 # CHECK:  uxthne.w r3, r9
2676 # CHECK:  uxth r1, r6
2677 # CHECK:  uxth.w r3, r8, ror #8
2678 # CHECK:  it le
2679 # CHECK:  uxthle.w r2, r2, ror #16
2680 # CHECK:  uxth.w r9, r3, ror #24
2681
2682 0x18 0xbf
2683 0x1f 0xfa 0x89 0xf3
2684 0xb1 0xb2
2685 0x1f 0xfa 0x98 0xf3
2686 0xd8 0xbf
2687 0x1f 0xfa 0xa2 0xf2
2688 0x1f 0xfa 0xb3 0xf9
2689
2690
2691 #------------------------------------------------------------------------------
2692 # WFE/WFI/YIELD
2693 #------------------------------------------------------------------------------
2694 # CHECK:  wfe
2695 # CHECK:  wfi
2696 # CHECK:  yield
2697 # CHECK:  itet lt
2698 # CHECK:  wfelt
2699 # CHECK:  wfige
2700 # CHECK:  yieldlt
2701
2702 0x20 0xbf
2703 0x30 0xbf
2704 0x10 0xbf
2705 0xb6 0xbf
2706 0x20 0xbf
2707 0x30 0xbf
2708 0x10 0xbf
2709
2710 #------------------------------------------------------------------------------
2711 # Unallocated hints (They execute as NOPs, but software must not use them.)
2712 #------------------------------------------------------------------------------
2713
2714 [0x60 0xbf]
2715 # CHECK: hint #6
2716