2005-09-02 Paul Brook <paul@codesourcery.com>
[deliverable/binutils-gdb.git] / gas / testsuite / gas / arm / thumb32.s
CommitLineData
c19d1205
ZW
1 .text
2 .thumb
3 .syntax unified
4
5encode_thumb32_immediate:
6 orr r0, r1, #0x00000000
7 orr r0, r1, #0x000000a5
8 orr r0, r1, #0x00a500a5
9 orr r0, r1, #0xa500a500
10 orr r0, r1, #0xa5a5a5a5
11
12 orr r0, r1, #0xa5 << 31
13 orr r0, r1, #0xa5 << 30
14 orr r0, r1, #0xa5 << 29
15 orr r0, r1, #0xa5 << 28
16 orr r0, r1, #0xa5 << 27
17 orr r0, r1, #0xa5 << 26
18 orr r0, r1, #0xa5 << 25
19 orr r0, r1, #0xa5 << 24
20 orr r0, r1, #0xa5 << 23
21 orr r0, r1, #0xa5 << 22
22 orr r0, r1, #0xa5 << 21
23 orr r0, r1, #0xa5 << 20
24 orr r0, r1, #0xa5 << 19
25 orr r0, r1, #0xa5 << 18
26 orr r0, r1, #0xa5 << 17
27 orr r0, r1, #0xa5 << 16
28 orr r0, r1, #0xa5 << 15
29 orr r0, r1, #0xa5 << 14
30 orr r0, r1, #0xa5 << 13
31 orr r0, r1, #0xa5 << 12
32 orr r0, r1, #0xa5 << 11
33 orr r0, r1, #0xa5 << 10
34 orr r0, r1, #0xa5 << 9
35 orr r0, r1, #0xa5 << 8
36 orr r0, r1, #0xa5 << 7
37 orr r0, r1, #0xa5 << 6
38 orr r0, r1, #0xa5 << 5
39 orr r0, r1, #0xa5 << 4
40 orr r0, r1, #0xa5 << 3
41 orr r0, r1, #0xa5 << 2
42 orr r0, r1, #0xa5 << 1
43
44add_sub:
45 adds r0, r0, #0 @ format 1
46 adds r5, r0, #0
47 adds r0, r5, #0
48 adds r0, r0, #5
49
50 adds r0, #129 @ format 2
51 adds r0, r0, #129
52 adds r5, #126
53
54 adds r0, r0, r0 @ format 3
55 adds r5, r0, r0
56 adds r0, r5, r0
57 adds r0, r0, r5
58 adds r1, r2, r3
59
60 add r8, r0 @ format 4
61 add r0, r8
62 add r0, r8, r0
63 add r0, r0, r8
64 add r8, r0, r0 @ ... not this one
65
66 add r1, r0
67 add r0, r1
68
69 add r0, pc, #0 @ format 5
70 add r5, pc, #0
71 add r0, pc, #516
72
73 add r0, sp, #0 @ format 6
74 add r5, sp, #0
75 add r0, sp, #516
76
77 add sp, #0 @ format 7
78 add sp, sp, #0
79 add sp, #260
80
81 add.w r0, r0, #0 @ T32 format 1
82 adds.w r0, r0, #0
83 add.w r9, r0, #0
84 add.w r0, r9, #0
85 add.w r0, r0, #129
86
87 add.w r0, r0, r0 @ T32 format 2
88 adds.w r0, r0, r0
89 add.w r9, r0, r0
90 add.w r0, r9, r0
91 add.w r0, r0, r9
92
93 add.w r8, r9, r10
94 add.w r8, r9, r10, lsl #17
95 add.w r8, r8, r10, lsr #32
96 add.w r8, r8, r10, lsr #17
97 add.w r8, r9, r10, asr #32
98 add.w r8, r9, r10, asr #17
99 add.w r8, r9, r10, rrx
100 add.w r8, r9, r10, ror #17
101
102 subs r0, r0, #0 @ format 1
103 subs r5, r0, #0
104 subs r0, r5, #0
105 subs r0, r0, #5
106
107 subs r0, r0, #129
108 subs r5, #8
109
110 subs r0, r0, r0 @ format 3
111 subs r5, r0, r0
112 subs r0, r5, r0
113 subs r0, r0, r5
114
115 sub sp, #260 @ format 4
116 sub sp, sp, #260
117
118 subs r8, r0 @ T32 format 2
119 subs r0, r8
120 subs r0, #260 @ T32 format 1
121
122arit3:
123 .macro arit3 op ops opw opsw
124 \ops r0, r0
125 \ops r5, r0
126 \ops r0, r5
127 \ops r0, r0, r5
128 \ops r0, r5, r0
129 \op r0, r5, r0
130 \op r0, r1, r2
131 \op r9, r0, r0
132 \op r0, r9, r0
133 \op r0, r0, r9
134 \opsw r0, r0, r0
135 \opw r0, r1, r2, asr #17
136 \opw r0, r1, #129
137 .endm
138
139 arit3 adc adcs adc.w adcs.w
140 arit3 and ands and.w ands.w
141 arit3 bic bics bic.w bics.w
142 arit3 eor eors eor.w eors.w
143 arit3 orr orrs orr.w orrs.w
144 arit3 rsb rsbs rsb.w rsbs.w
145 arit3 sbc sbcs sbc.w sbcs.w
146
147 .purgem arit3
148
149bfc_bfi_bfx:
150 bfc r0, #0, #1
151 bfc r9, #0, #1
152 bfi r9, #0, #0, #1
153 bfc r0, #21, #1
154 bfc r0, #0, #18
155
156 bfi r0, r0, #0, #1
157 bfi r9, r0, #0, #1
158 bfi r0, r9, #0, #1
159 bfi r0, r0, #21, #1
160 bfi r0, r0, #0, #18
161
162 sbfx r0, r0, #0, #1
163 ubfx r9, r0, #0, #1
164 sbfx r0, r9, #0, #1
165 ubfx r0, r0, #21, #1
166 sbfx r0, r0, #0, #18
167
168 .globl branches
169branches:
170 .macro bra op
171 \op 1b
172 \op 1f
173 .endm
1741:
175 bra beq.n
176 bra bne.n
177 bra bcs.n
178 bra bhs.n
179 bra bcc.n
180 bra bul.n
181 bra blo.n
182 bra bmi.n
183 bra bpl.n
184 bra bvs.n
185 bra bvc.n
186 bra bhi.n
187 bra bls.n
188 bra bvc.n
189 bra bhi.n
190 bra bls.n
191 bra bge.n
192 bra blt.n
193 bra bgt.n
194 bra ble.n
195 bra bal.n
196 bra b.n
197 @ bl, blx have no short form.
198 .balign 4
1991:
200 bra beq
201 bra bne
202 bra bcs
203 bra bhs
204 bra bcc
205 bra bul
206 bra blo
207 bra bmi
208 bra bpl
209 bra bvs
210 bra bvc
211 bra bhi
212 bra bls
213 bra bvc
214 bra bhi
215 bra bls
216 bra bge
217 bra blt
218 bra bgt
219 bra ble
220 bra b
221 bra bl
222 bra blx
223 .balign 4
2241:
225 bx r9
226 blx r0
227 blx r9
228 bxj r0
229 bxj r9
230 .purgem bra
231
232clz:
233 clz r0, r0
234 clz r9, r0
235 clz r0, r9
236
237cps:
238 cpsie f
239 cpsid i
240 cpsie a
241 cpsid.w f
242 cpsie.w i
243 cpsid.w a
244 cpsie i, #0
245 cpsid i, #17
246 cps #0
247 cps #17
248
249cpy:
250 cpy r0, r0
251 cpy r9, r0
252 cpy r0, r9
253 cpy.w r0, r0
254 cpy.w r9, r0
255 cpy.w r0, r9
256
257czb:
258 cbnz r0, 2f
259 cbz r5, 1f
260
261nop_hint:
262 nop
2631: yield
2642: wfe
265 wfi
266 sev
267
268 nop.w
269 yield.w
270 wfe.w
271 wfi.w
272 sev.w
273
274 nop {9}
275 nop {129}
276
277it:
e27ec89e
PB
278 .macro nop1 cond ncond a
279 .ifc \a,t
280 nop\cond
281 .else
282 nop\ncond
283 .endif
284 .endm
285 .macro it0 cond m=
286 it\m \cond
287 nop\cond
288 .endm
289 .macro it1 cond ncond a m=
290 it0 \cond \a\m
291 nop1 \cond \ncond \a
292 .endm
293 .macro it2 cond ncond a b m=
294 it1 \cond \ncond \a \b\m
295 nop1 \cond \ncond \b
296 .endm
297 .macro it3 cond ncond a b c
298 it2 \cond \ncond \a \b \c
299 nop1 \cond \ncond \c
c19d1205
ZW
300 .endm
301
e27ec89e
PB
302 it0 eq
303 it0 ne
304 it0 cs
305 it0 hs
306 it0 cc
307 it0 ul
308 it0 lo
309 it0 mi
310 it0 pl
311 it0 vs
312 it0 vc
313 it0 hi
314 it0 ge
315 it0 lt
316 it0 gt
317 it0 le
318 it0 al
319 it1 eq ne t
320 it1 eq ne e
321 it2 eq ne t t
322 it2 eq ne e t
323 it2 eq ne t e
324 it2 eq ne e e
325 it3 eq ne t t t
326 it3 eq ne e t t
327 it3 eq ne t e t
328 it3 eq ne t t e
329 it3 eq ne t e e
330 it3 eq ne e t e
331 it3 eq ne e e t
332 it3 eq ne e e e
333
334 it1 ne eq t
335 it1 ne eq e
336 it2 ne eq t t
337 it2 ne eq e t
338 it2 ne eq t e
339 it2 ne eq e e
340 it3 ne eq t t t
341 it3 ne eq e t t
342 it3 ne eq t e t
343 it3 ne eq t t e
344 it3 ne eq t e e
345 it3 ne eq e t e
346 it3 ne eq e e t
347 it3 ne eq e e e
c19d1205
ZW
348
349ldst:
350 .macro ls op
351 \op r1, [r5]
352 \op r1, [r5, #0x330]
353 \op r1, [r5, #-0x30]
354 \op r1, [r5], #0x30
355 \op r1, [r5], #-0x30
356 \op r1, [r5, #0x30]!
357 \op r1, [r5, #-0x30]!
358 \op r1, [r5, r4]
359 \op r1, [r9, ip]
360 \op r1, 1f
361 \op r1, 1b
362 .endm
3631:
364 ls ldrb
365 ls ldrsb
366 ls ldrh
367 ls ldrsh
368 ls ldr
3691:
370 ls strb
371 ls strh
372 ls str
373
374 pld [r5]
375 pld [r5, #0x330]
376 pld [r5, #-0x30]
377 pld [r5], #0x30
378 pld [r5], #-0x30
379 pld [r5, #0x30]!
380 pld [r5, #-0x30]!
381 pld [r5, r4]
382 pld [r9, ip]
383 pld 1f
384 pld 1b
3851:
386
387 ldrd r2, r3, [r5]
388 ldrd r2, [r5, #0x30]
389 ldrd r2, [r5, #-0x30]
390 strd r2, r3, [r5]
391 strd r2, [r5, #0x30]
392 strd r2, [r5, #-0x30]
393
394 ldrbt r1, [r5]
395 ldrbt r1, [r5, #0x30]
396 ldrsbt r1, [r5]
397 ldrsbt r1, [r5, #0x30]
398 ldrht r1, [r5]
399 ldrht r1, [r5, #0x30]
400 ldrsht r1, [r5]
401 ldrsht r1, [r5, #0x30]
402 ldrt r1, [r5]
403 ldrt r1, [r5, #0x30]
404
405 .purgem ls
406
407ldxstx:
408 ldrexb r1, [r4]
409 ldrexh r1, [r4]
410 ldrex r1, [r4]
411 ldrexd r1, r2, [r4]
412
413 strexb r1, r2, [r4]
414 strexh r1, r2, [r4]
415 strex r1, r2, [r4]
416 strexd r1, r2, r3, [r4]
417
418 ldrex r1, [r4,#516]
419 strex r1, r2, [r4,#516]
420
421ldmstm:
422 ldmia r0!, {r1,r2,r3}
423 ldmia r2, {r0,r1,r2}
424 ldmia.w r2, {r0,r1,r2}
425 ldmia r9, {r0,r1,r2}
426 ldmia r0, {r7,r8,r10}
427 ldmia r0!, {r7,r8,r10}
428
429 stmia r0!, {r1,r2,r3}
430 stmia r2!, {r0,r1,r3}
431 stmia.w r2!, {r0,r1,r3}
432 stmia r9, {r0,r1,r2}
433 stmia r0, {r7,r8,r10}
434 stmia r0!, {r7,r8,r10}
435
436 ldmdb r0, {r7,r8,r10}
437 stmdb r0, {r7,r8,r10}
438
439mlas:
440 mla r0, r0, r0, r0
441 mls r0, r0, r0, r0
442 mla r9, r0, r0, r0
443 mla r0, r9, r0, r0
444 mla r0, r0, r9, r0
445 mla r0, r0, r0, r9
446
447tst_teq_cmp_cmn_mov_mvn:
448 .macro mt op ops opw opsw
449 \ops r0, r0
450 \op r0, r0
451 \ops r5, r0
452 \op r0, r5
453 \op r0, r5, asr #17
454 \opw r0, r0
455 \ops r9, r0
456 \opsw r0, r9
457 \op r0, #129
458 \op r5, #129
459 .endm
460
461 mt tst tsts tst.w tsts.w
462 mt teq teqs teq.w teqs.w
463 mt cmp cmps cmp.w cmps.w
464 mt cmn cmns cmn.w cmns.w
465 mt mov movs mov.w movs.w
466 mt mvn mvns mvn.w mvns.w
467 .purgem mt
468
469mov16:
470 movw r0, #0
471 movt r0, #0
472 movw r9, #0
473 movw r0, #0x9000
474 movw r0, #0x0800
475 movw r0, #0x0500
476 movw r0, #0x0081
477 movw r0, #0xffff
478
479mrs_msr:
480 mrs r0, CPSR
481 mrs r0, SPSR
482 mrs r9, CPSR_all
483 mrs r9, SPSR_all
484
485 msr CPSR_c, r0
486 msr SPSR_c, r0
487 msr CPSR_c, r9
488 msr CPSR_x, r0
489 msr CPSR_s, r0
490 msr CPSR_f, r0
491
492mul:
493 mul r0, r0, r0
494 mul r0, r9, r0
495 mul r0, r0, r9
496 mul r0, r0
497 mul r9, r0
498 muls r5, r0
499 muls r5, r0, r5
500 muls r0, r5
501
502mull:
503 smull r0, r1, r0, r0
504 umull r0, r1, r0, r0
505 smlal r0, r1, r0, r0
506 umlal r0, r1, r0, r0
507 smull r9, r0, r0, r0
508 smull r0, r9, r0, r0
509 smull r0, r1, r9, r0
510 smull r0, r1, r0, r9
511
512neg:
513 negs r0, r0
514 negs r0, r5
515 negs r5, r0
516 negs.w r0, r0
517 negs.w r5, r0
518 negs.w r0, r5
519
520 neg r0, r9
521 neg r9, r0
522 negs r0, r9
523 negs r9, r0
524
525pkh:
526 pkhbt r0, r0, r0
527 pkhbt r9, r0, r0
528 pkhbt r0, r9, r0
529 pkhbt r0, r0, r9
530 pkhbt r0, r0, r0, lsl #0x14
531 pkhbt r0, r0, r0, lsl #3
532 pkhtb r1, r2, r3
533 pkhtb r1, r2, r3, asr #0x11
534
535push_pop:
536 push {r0}
537 pop {r0}
538 push {r1,lr}
539 pop {r1,pc}
540 push {r8,r9,r10,r11,r12}
541 pop {r8,r9,r10,r11,r12}
542
543qadd:
544 qadd16 r1, r2, r3
545 qadd8 r1, r2, r3
546 qaddsubx r1, r2, r3
547 qsub16 r1, r2, r3
548 qsub8 r1, r2, r3
549 qsubaddx r1, r2, r3
550 sadd16 r1, r2, r3
551 sadd8 r1, r2, r3
552 saddsubx r1, r2, r3
553 ssub16 r1, r2, r3
554 ssub8 r1, r2, r3
555 ssubaddx r1, r2, r3
556 shadd16 r1, r2, r3
557 shadd8 r1, r2, r3
558 shaddsubx r1, r2, r3
559 shsub16 r1, r2, r3
560 shsub8 r1, r2, r3
561 shsubaddx r1, r2, r3
562 uadd16 r1, r2, r3
563 uadd8 r1, r2, r3
564 uaddsubx r1, r2, r3
565 usub16 r1, r2, r3
566 usub8 r1, r2, r3
567 usubaddx r1, r2, r3
568 uhadd16 r1, r2, r3
569 uhadd8 r1, r2, r3
570 uhaddsubx r1, r2, r3
571 uhsub16 r1, r2, r3
572 uhsub8 r1, r2, r3
573 uhsubaddx r1, r2, r3
574 uqadd16 r1, r2, r3
575 uqadd8 r1, r2, r3
576 uqaddsubx r1, r2, r3
577 uqsub16 r1, r2, r3
578 uqsub8 r1, r2, r3
579 uqsubaddx r1, r2, r3
580 sel r1, r2, r3
581
582rbit_rev:
583 .macro rx op opw
584 \op r0, r0
585 \opw r0, r0
586 \op r0, r5
587 \op r5, r0
588 \op r0, r9
589 \op r9, r0
590 .endm
591
592 rx rev rev.w
593 rx rev16 rev16.w
594 rx revsh revsh.w
595 rx rbit rbit.w
596
597 .purgem rx
598
599shift:
600 .macro sh op ops opw opsw
601 \ops r0, #17 @ 16-bit format 1
602 \ops r0, r0, #14
603 \ops r5, r0, #17
604 \ops r0, r5, #14
605 \ops r0, r0 @ 16-bit format 2
606 \ops r0, r5
607 \ops r0, r0, r5
608 \op r9, #17 @ 32-bit format 1
609 \op r9, r9, #14
610 \ops r0, r9, #17
611 \op r9, r0, #14
612 \opw r0, r0, r0 @ 32-bit format 2
613 \op r9, r9
614 \ops r9, r0
615 \op r0, r9
616 \op r0, r5
617 \ops r0, r1, r2
618 .endm
619
620 sh lsl lsls lsl.w lsls.w
621 sh lsr lsrs lsr.w lsrs.w
622 sh asr asrs asr.w asrs.w
623 sh ror rors ror.w rors.w
624
625 .purgem sh
626
627smi:
628 smi #0
629 smi #0xabcd
630
631smla:
632 smlabb r0, r0, r0, r0
633 smlabb r9, r0, r0, r0
634 smlabb r0, r9, r0, r0
635 smlabb r0, r0, r9, r0
636 smlabb r0, r0, r0, r9
637
638 smlatb r0, r0, r0, r0
639 smlabt r0, r0, r0, r0
640 smlatt r0, r0, r0, r0
641 smlawb r0, r0, r0, r0
642 smlawt r0, r0, r0, r0
643 smlad r0, r0, r0, r0
644 smladx r0, r0, r0, r0
645 smlsd r0, r0, r0, r0
646 smlsdx r0, r0, r0, r0
647 smmla r0, r0, r0, r0
648 smmlar r0, r0, r0, r0
649 smmls r0, r0, r0, r0
650 smmlsr r0, r0, r0, r0
651 usada8 r0, r0, r0, r0
652
653smlal:
654 smlalbb r0, r0, r0, r0
655 smlalbb r9, r0, r0, r0
656 smlalbb r0, r9, r0, r0
657 smlalbb r0, r0, r9, r0
658 smlalbb r0, r0, r0, r9
659
660 smlaltb r0, r0, r0, r0
661 smlalbt r0, r0, r0, r0
662 smlaltt r0, r0, r0, r0
663 smlald r0, r0, r0, r0
664 smlaldx r0, r0, r0, r0
665 smlsld r0, r0, r0, r0
666 smlsldx r0, r0, r0, r0
667 umaal r0, r0, r0, r0
668
669smul:
670 smulbb r0, r0, r0
671 smulbb r9, r0, r0
672 smulbb r0, r9, r0
673 smulbb r0, r0, r9
674
675 smultb r0, r0, r0
676 smulbt r0, r0, r0
677 smultt r0, r0, r0
678 smulwb r0, r0, r0
679 smulwt r0, r0, r0
680 smmul r0, r0, r0
681 smmulr r0, r0, r0
682 smuad r0, r0, r0
683 smuadx r0, r0, r0
684 smusd r0, r0, r0
685 smusdx r0, r0, r0
686 usad8 r0, r0, r0
687
688sat:
689 ssat r0, #1, r0
690 ssat r0, #1, r0, lsl #0
691 ssat r0, #1, r0, asr #0
692 ssat r9, #1, r0
693 ssat r0, #18, r0
694 ssat r0, #1, r9
695 ssat r0, #1, r0, lsl #0x1c
696 ssat r0, #1, r0, asr #0x03
697
698 ssat16 r0, #1, r0
699 ssat16 r9, #1, r0
700 ssat16 r0, #10, r0
701 ssat16 r0, #1, r9
702
703 usat r0, #0, r0
704 usat r0, #0, r0, lsl #0
705 usat r0, #0, r0, asr #0
706 usat r9, #0, r0
707 usat r0, #17, r0
708 usat r0, #0, r9
709 usat r0, #0, r0, lsl #0x1c
710 usat r0, #0, r0, asr #0x03
711
712 usat16 r0, #0, r0
713 usat16 r9, #0, r0
714 usat16 r0, #9, r0
715 usat16 r0, #0, r9
716
717xt:
718 sxtb r0, r0
719 sxtb r0, r0, ror #0
720 sxtb r5, r0
721 sxtb r0, r5
722 sxtb.w r1, r2
723 sxtb r1, r2, ror #8
724 sxtb r1, r2, ror #16
725 sxtb r1, r2, ror #24
726
727 sxtb16 r1, r2
728 sxtb16 r8, r9
729 sxth r1, r2
730 sxth r8, r9
731 uxtb r1, r2
732 uxtb r8, r9
733 uxtb16 r1, r2
734 uxtb16 r8, r9
735 uxth r1, r2
736 uxth r8, r9
737
738xta:
739 sxtab r0, r0, r0
740 sxtab r0, r0, r0, ror #0
741 sxtab r9, r0, r0, ror #8
742 sxtab r0, r9, r0, ror #16
743 sxtab r0, r0, r9, ror #24
744
745 sxtab16 r1, r2, r3
746 sxtah r1, r2, r3
747 uxtab r1, r2, r3
748 uxtab16 r1, r2, r3
749 uxtah r1, r2, r3
c160f130
PB
750
751 .macro ldpcimm op
752 \op r1, [pc, #0x2aa]
753 \op r1, [pc, #0x155]
754 \op r1, [pc, #-0x2aa]
755 \op r1, [pc, #-0x155]
756 .endm
757 ldpcimm ldrb
758 ldpcimm ldrsb
759 ldpcimm ldrh
760 ldpcimm ldrsh
761 ldpcimm ldr
92e90b6e
PB
762 addw r9, r0, #0
763 addw r6, pc, #0xfff
764 subw r6, r9, #0xa85
765 subw r6, r9, #0x57a
766 tbb [pc, r6]
767 tbb [r0, r9]
768 tbh [pc, r7, lsl #1]
769 tbh [r0, r8, lsl #1]
e9f89963
PB
770
771 push {r8}
772 pop {r8}
9c3c69f2
PB
773
774 ldmdb r0!, {r7,r8,r10}
775 stmdb r0!, {r7,r8,r10}
This page took 0.061631 seconds and 4 git commands to generate.