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