2005-08-05 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:
278 .macro itx opc cond n
279 \opc \cond
280 .rept \n
281 nop
282 .endr
283 .endm
284
285 itx it eq 1
286 itx it ne 1
287 itx it cs 1
288 itx it hs 1
289 itx it cc 1
290 itx it ul 1
291 itx it lo 1
292 itx it mi 1
293 itx it pl 1
294 itx it vs 1
295 itx it vc 1
296 itx it hi 1
297 itx it ge 1
298 itx it lt 1
299 itx it gt 1
300 itx it le 1
301 itx it al 1
302
303 itx itt eq 2
304 itx ite eq 2
305 itx ittt eq 3
306 itx itet eq 3
307 itx itte eq 3
308 itx itee eq 3
309 itx itttt eq 4
310 itx itett eq 4
311 itx ittet eq 4
312 itx ittte eq 4
313 itx ittee eq 4
314 itx itete eq 4
315 itx iteet eq 4
316 itx iteee eq 4
317
318 itx itt ne 2
319 itx ite ne 2
320 itx ittt ne 3
321 itx itet ne 3
322 itx itte ne 3
323 itx itee ne 3
324 itx itttt ne 4
325 itx itett ne 4
326 itx ittet ne 4
327 itx ittte ne 4
328 itx ittee ne 4
329 itx itete ne 4
330 itx iteet ne 4
331 itx iteee ne 4
332
333 .purgem itx
334
335ldst:
336 .macro ls op
337 \op r1, [r5]
338 \op r1, [r5, #0x330]
339 \op r1, [r5, #-0x30]
340 \op r1, [r5], #0x30
341 \op r1, [r5], #-0x30
342 \op r1, [r5, #0x30]!
343 \op r1, [r5, #-0x30]!
344 \op r1, [r5, r4]
345 \op r1, [r9, ip]
346 \op r1, 1f
347 \op r1, 1b
348 .endm
3491:
350 ls ldrb
351 ls ldrsb
352 ls ldrh
353 ls ldrsh
354 ls ldr
3551:
356 ls strb
357 ls strh
358 ls str
359
360 pld [r5]
361 pld [r5, #0x330]
362 pld [r5, #-0x30]
363 pld [r5], #0x30
364 pld [r5], #-0x30
365 pld [r5, #0x30]!
366 pld [r5, #-0x30]!
367 pld [r5, r4]
368 pld [r9, ip]
369 pld 1f
370 pld 1b
3711:
372
373 ldrd r2, r3, [r5]
374 ldrd r2, [r5, #0x30]
375 ldrd r2, [r5, #-0x30]
376 strd r2, r3, [r5]
377 strd r2, [r5, #0x30]
378 strd r2, [r5, #-0x30]
379
380 ldrbt r1, [r5]
381 ldrbt r1, [r5, #0x30]
382 ldrsbt r1, [r5]
383 ldrsbt r1, [r5, #0x30]
384 ldrht r1, [r5]
385 ldrht r1, [r5, #0x30]
386 ldrsht r1, [r5]
387 ldrsht r1, [r5, #0x30]
388 ldrt r1, [r5]
389 ldrt r1, [r5, #0x30]
390
391 .purgem ls
392
393ldxstx:
394 ldrexb r1, [r4]
395 ldrexh r1, [r4]
396 ldrex r1, [r4]
397 ldrexd r1, r2, [r4]
398
399 strexb r1, r2, [r4]
400 strexh r1, r2, [r4]
401 strex r1, r2, [r4]
402 strexd r1, r2, r3, [r4]
403
404 ldrex r1, [r4,#516]
405 strex r1, r2, [r4,#516]
406
407ldmstm:
408 ldmia r0!, {r1,r2,r3}
409 ldmia r2, {r0,r1,r2}
410 ldmia.w r2, {r0,r1,r2}
411 ldmia r9, {r0,r1,r2}
412 ldmia r0, {r7,r8,r10}
413 ldmia r0!, {r7,r8,r10}
414
415 stmia r0!, {r1,r2,r3}
416 stmia r2!, {r0,r1,r3}
417 stmia.w r2!, {r0,r1,r3}
418 stmia r9, {r0,r1,r2}
419 stmia r0, {r7,r8,r10}
420 stmia r0!, {r7,r8,r10}
421
422 ldmdb r0, {r7,r8,r10}
423 stmdb r0, {r7,r8,r10}
424
425mlas:
426 mla r0, r0, r0, r0
427 mls r0, r0, r0, r0
428 mla r9, r0, r0, r0
429 mla r0, r9, r0, r0
430 mla r0, r0, r9, r0
431 mla r0, r0, r0, r9
432
433tst_teq_cmp_cmn_mov_mvn:
434 .macro mt op ops opw opsw
435 \ops r0, r0
436 \op r0, r0
437 \ops r5, r0
438 \op r0, r5
439 \op r0, r5, asr #17
440 \opw r0, r0
441 \ops r9, r0
442 \opsw r0, r9
443 \op r0, #129
444 \op r5, #129
445 .endm
446
447 mt tst tsts tst.w tsts.w
448 mt teq teqs teq.w teqs.w
449 mt cmp cmps cmp.w cmps.w
450 mt cmn cmns cmn.w cmns.w
451 mt mov movs mov.w movs.w
452 mt mvn mvns mvn.w mvns.w
453 .purgem mt
454
455mov16:
456 movw r0, #0
457 movt r0, #0
458 movw r9, #0
459 movw r0, #0x9000
460 movw r0, #0x0800
461 movw r0, #0x0500
462 movw r0, #0x0081
463 movw r0, #0xffff
464
465mrs_msr:
466 mrs r0, CPSR
467 mrs r0, SPSR
468 mrs r9, CPSR_all
469 mrs r9, SPSR_all
470
471 msr CPSR_c, r0
472 msr SPSR_c, r0
473 msr CPSR_c, r9
474 msr CPSR_x, r0
475 msr CPSR_s, r0
476 msr CPSR_f, r0
477
478mul:
479 mul r0, r0, r0
480 mul r0, r9, r0
481 mul r0, r0, r9
482 mul r0, r0
483 mul r9, r0
484 muls r5, r0
485 muls r5, r0, r5
486 muls r0, r5
487
488mull:
489 smull r0, r1, r0, r0
490 umull r0, r1, r0, r0
491 smlal r0, r1, r0, r0
492 umlal r0, r1, r0, r0
493 smull r9, r0, r0, r0
494 smull r0, r9, r0, r0
495 smull r0, r1, r9, r0
496 smull r0, r1, r0, r9
497
498neg:
499 negs r0, r0
500 negs r0, r5
501 negs r5, r0
502 negs.w r0, r0
503 negs.w r5, r0
504 negs.w r0, r5
505
506 neg r0, r9
507 neg r9, r0
508 negs r0, r9
509 negs r9, r0
510
511pkh:
512 pkhbt r0, r0, r0
513 pkhbt r9, r0, r0
514 pkhbt r0, r9, r0
515 pkhbt r0, r0, r9
516 pkhbt r0, r0, r0, lsl #0x14
517 pkhbt r0, r0, r0, lsl #3
518 pkhtb r1, r2, r3
519 pkhtb r1, r2, r3, asr #0x11
520
521push_pop:
522 push {r0}
523 pop {r0}
524 push {r1,lr}
525 pop {r1,pc}
526 push {r8,r9,r10,r11,r12}
527 pop {r8,r9,r10,r11,r12}
528
529qadd:
530 qadd16 r1, r2, r3
531 qadd8 r1, r2, r3
532 qaddsubx r1, r2, r3
533 qsub16 r1, r2, r3
534 qsub8 r1, r2, r3
535 qsubaddx r1, r2, r3
536 sadd16 r1, r2, r3
537 sadd8 r1, r2, r3
538 saddsubx r1, r2, r3
539 ssub16 r1, r2, r3
540 ssub8 r1, r2, r3
541 ssubaddx r1, r2, r3
542 shadd16 r1, r2, r3
543 shadd8 r1, r2, r3
544 shaddsubx r1, r2, r3
545 shsub16 r1, r2, r3
546 shsub8 r1, r2, r3
547 shsubaddx r1, r2, r3
548 uadd16 r1, r2, r3
549 uadd8 r1, r2, r3
550 uaddsubx r1, r2, r3
551 usub16 r1, r2, r3
552 usub8 r1, r2, r3
553 usubaddx r1, r2, r3
554 uhadd16 r1, r2, r3
555 uhadd8 r1, r2, r3
556 uhaddsubx r1, r2, r3
557 uhsub16 r1, r2, r3
558 uhsub8 r1, r2, r3
559 uhsubaddx r1, r2, r3
560 uqadd16 r1, r2, r3
561 uqadd8 r1, r2, r3
562 uqaddsubx r1, r2, r3
563 uqsub16 r1, r2, r3
564 uqsub8 r1, r2, r3
565 uqsubaddx r1, r2, r3
566 sel r1, r2, r3
567
568rbit_rev:
569 .macro rx op opw
570 \op r0, r0
571 \opw r0, r0
572 \op r0, r5
573 \op r5, r0
574 \op r0, r9
575 \op r9, r0
576 .endm
577
578 rx rev rev.w
579 rx rev16 rev16.w
580 rx revsh revsh.w
581 rx rbit rbit.w
582
583 .purgem rx
584
585shift:
586 .macro sh op ops opw opsw
587 \ops r0, #17 @ 16-bit format 1
588 \ops r0, r0, #14
589 \ops r5, r0, #17
590 \ops r0, r5, #14
591 \ops r0, r0 @ 16-bit format 2
592 \ops r0, r5
593 \ops r0, r0, r5
594 \op r9, #17 @ 32-bit format 1
595 \op r9, r9, #14
596 \ops r0, r9, #17
597 \op r9, r0, #14
598 \opw r0, r0, r0 @ 32-bit format 2
599 \op r9, r9
600 \ops r9, r0
601 \op r0, r9
602 \op r0, r5
603 \ops r0, r1, r2
604 .endm
605
606 sh lsl lsls lsl.w lsls.w
607 sh lsr lsrs lsr.w lsrs.w
608 sh asr asrs asr.w asrs.w
609 sh ror rors ror.w rors.w
610
611 .purgem sh
612
613smi:
614 smi #0
615 smi #0xabcd
616
617smla:
618 smlabb r0, r0, r0, r0
619 smlabb r9, r0, r0, r0
620 smlabb r0, r9, r0, r0
621 smlabb r0, r0, r9, r0
622 smlabb r0, r0, r0, r9
623
624 smlatb r0, r0, r0, r0
625 smlabt r0, r0, r0, r0
626 smlatt r0, r0, r0, r0
627 smlawb r0, r0, r0, r0
628 smlawt r0, r0, r0, r0
629 smlad r0, r0, r0, r0
630 smladx r0, r0, r0, r0
631 smlsd r0, r0, r0, r0
632 smlsdx r0, r0, r0, r0
633 smmla r0, r0, r0, r0
634 smmlar r0, r0, r0, r0
635 smmls r0, r0, r0, r0
636 smmlsr r0, r0, r0, r0
637 usada8 r0, r0, r0, r0
638
639smlal:
640 smlalbb r0, r0, r0, r0
641 smlalbb r9, r0, r0, r0
642 smlalbb r0, r9, r0, r0
643 smlalbb r0, r0, r9, r0
644 smlalbb r0, r0, r0, r9
645
646 smlaltb r0, r0, r0, r0
647 smlalbt r0, r0, r0, r0
648 smlaltt r0, r0, r0, r0
649 smlald r0, r0, r0, r0
650 smlaldx r0, r0, r0, r0
651 smlsld r0, r0, r0, r0
652 smlsldx r0, r0, r0, r0
653 umaal r0, r0, r0, r0
654
655smul:
656 smulbb r0, r0, r0
657 smulbb r9, r0, r0
658 smulbb r0, r9, r0
659 smulbb r0, r0, r9
660
661 smultb r0, r0, r0
662 smulbt r0, r0, r0
663 smultt r0, r0, r0
664 smulwb r0, r0, r0
665 smulwt r0, r0, r0
666 smmul r0, r0, r0
667 smmulr r0, r0, r0
668 smuad r0, r0, r0
669 smuadx r0, r0, r0
670 smusd r0, r0, r0
671 smusdx r0, r0, r0
672 usad8 r0, r0, r0
673
674sat:
675 ssat r0, #1, r0
676 ssat r0, #1, r0, lsl #0
677 ssat r0, #1, r0, asr #0
678 ssat r9, #1, r0
679 ssat r0, #18, r0
680 ssat r0, #1, r9
681 ssat r0, #1, r0, lsl #0x1c
682 ssat r0, #1, r0, asr #0x03
683
684 ssat16 r0, #1, r0
685 ssat16 r9, #1, r0
686 ssat16 r0, #10, r0
687 ssat16 r0, #1, r9
688
689 usat r0, #0, r0
690 usat r0, #0, r0, lsl #0
691 usat r0, #0, r0, asr #0
692 usat r9, #0, r0
693 usat r0, #17, r0
694 usat r0, #0, r9
695 usat r0, #0, r0, lsl #0x1c
696 usat r0, #0, r0, asr #0x03
697
698 usat16 r0, #0, r0
699 usat16 r9, #0, r0
700 usat16 r0, #9, r0
701 usat16 r0, #0, r9
702
703xt:
704 sxtb r0, r0
705 sxtb r0, r0, ror #0
706 sxtb r5, r0
707 sxtb r0, r5
708 sxtb.w r1, r2
709 sxtb r1, r2, ror #8
710 sxtb r1, r2, ror #16
711 sxtb r1, r2, ror #24
712
713 sxtb16 r1, r2
714 sxtb16 r8, r9
715 sxth r1, r2
716 sxth r8, r9
717 uxtb r1, r2
718 uxtb r8, r9
719 uxtb16 r1, r2
720 uxtb16 r8, r9
721 uxth r1, r2
722 uxth r8, r9
723
724xta:
725 sxtab r0, r0, r0
726 sxtab r0, r0, r0, ror #0
727 sxtab r9, r0, r0, ror #8
728 sxtab r0, r9, r0, ror #16
729 sxtab r0, r0, r9, ror #24
730
731 sxtab16 r1, r2, r3
732 sxtah r1, r2, r3
733 uxtab r1, r2, r3
734 uxtab16 r1, r2, r3
735 uxtah r1, r2, r3
c160f130
PB
736
737 .macro ldpcimm op
738 \op r1, [pc, #0x2aa]
739 \op r1, [pc, #0x155]
740 \op r1, [pc, #-0x2aa]
741 \op r1, [pc, #-0x155]
742 .endm
743 ldpcimm ldrb
744 ldpcimm ldrsb
745 ldpcimm ldrh
746 ldpcimm ldrsh
747 ldpcimm ldr
92e90b6e
PB
748 addw r9, r0, #0
749 addw r6, pc, #0xfff
750 subw r6, r9, #0xa85
751 subw r6, r9, #0x57a
752 tbb [pc, r6]
753 tbb [r0, r9]
754 tbh [pc, r7, lsl #1]
755 tbh [r0, r8, lsl #1]
e9f89963
PB
756
757 push {r8}
758 pop {r8}
9c3c69f2
PB
759
760 ldmdb r0!, {r7,r8,r10}
761 stmdb r0!, {r7,r8,r10}
This page took 0.059426 seconds and 4 git commands to generate.