Upload Tizen:Base source
[external/binutils.git] / gas / testsuite / gas / arm / thumb32.s
1         .text
2         .thumb
3         .syntax unified
4
5 encode_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
44 add_sub:
45         @ Should be format 1, Some have equivalent format 2 encodings
46         adds    r0, r0, #0
47         adds    r5, r0, #0
48         adds    r0, r5, #0
49         adds    r0, r2, #5
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
87         adds    r5, r3, #0x10000
88         add     r0, sp, #1
89         add     r9, sp, #0
90         add.w   sp, sp, #4
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
110         subs    r0, r2, #5
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
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
131
132 arit3:
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         arit3   orn orns orn orns
157
158         .purgem arit3
159
160 bfc_bfi_bfx:
161         bfc     r0, #0, #1
162         bfc     r9, #0, #1
163         bfi     r9, #0, #0, #1
164         bfc     r0, #21, #1
165         bfc     r0, #0, #18
166
167         bfi     r0, r0, #0, #1
168         bfi     r9, r0, #0, #1
169         bfi     r0, r9, #0, #1
170         bfi     r0, r0, #21, #1
171         bfi     r0, r0, #0, #18
172
173         sbfx    r0, r0, #0, #1
174         ubfx    r9, r0, #0, #1
175         sbfx    r0, r9, #0, #1
176         ubfx    r0, r0, #21, #1
177         sbfx    r0, r0, #0, #18
178
179         .globl  branches
180 branches:
181         .macro bra op
182         \op     1b
183         \op     1f
184         .endm
185 1:
186         bra     beq.n
187         bra     bne.n
188         bra     bcs.n
189         bra     bhs.n
190         bra     bcc.n
191         bra     bul.n
192         bra     blo.n
193         bra     bmi.n
194         bra     bpl.n
195         bra     bvs.n
196         bra     bvc.n
197         bra     bhi.n
198         bra     bls.n
199         bra     bvc.n
200         bra     bhi.n
201         bra     bls.n
202         bra     bge.n
203         bra     blt.n
204         bra     bgt.n
205         bra     ble.n
206         bra     bal.n
207         bra     b.n
208         @ bl, blx have no short form.
209         .balign 4
210 1:
211         bra     beq.w
212         bra     bne.w
213         bra     bcs.w
214         bra     bhs.w
215         bra     bcc.w
216         bra     bul.w
217         bra     blo.w
218         bra     bmi.w
219         bra     bpl.w
220         bra     bvs.w
221         bra     bvc.w
222         bra     bhi.w
223         bra     bls.w
224         bra     bvc.w
225         bra     bhi.w
226         bra     bls.w
227         bra     bge.w
228         bra     blt.w
229         bra     bgt.w
230         bra     ble.w
231         bra     b.w
232         bra     bl
233         bra     blx
234         .balign 4
235 1:
236         bx      r9
237         blx     r0
238         blx     r9
239         bxj     r0
240         bxj     r9
241         .purgem bra
242
243 clz:
244         clz     r0, r0
245         clz     r9, r0
246         clz     r0, r9
247
248 cps:
249         cpsie   f
250         cpsid   i
251         cpsie   a
252         cpsid.w f
253         cpsie.w i
254         cpsid.w a
255         cpsie   i, #0
256         cpsid   i, #17
257         cps     #0
258         cps     #17
259
260 cpy:
261         cpy     r0, r0
262         cpy     r9, r0
263         cpy     r0, r9
264         cpy.w   r0, r0
265         cpy.w   r9, r0
266         cpy.w   r0, r9
267
268 czb:
269         cbnz    r0, 2f
270         cbz     r5, 1f
271
272 nop_hint:
273         nop
274 1:      yield
275 2:      wfe
276         wfi
277         sev
278
279         nop.w
280         yield.w
281         wfe.w
282         wfi.w
283         sev.w
284
285         nop {9}
286         nop {129}
287
288 it:
289         .macro nop1 cond ncond a
290         .ifc \a,t
291         nop\cond
292         .else
293         nop\ncond
294         .endif
295         .endm
296         .macro it0 cond m=
297         it\m \cond
298         nop\cond
299         .endm
300         .macro it1 cond ncond a m=
301         it0 \cond \a\m
302         nop1 \cond \ncond \a
303         .endm
304         .macro it2 cond ncond a b m=
305         it1 \cond \ncond \a \b\m
306         nop1 \cond \ncond \b
307         .endm
308         .macro it3 cond ncond a b c
309         it2 \cond \ncond \a \b \c
310         nop1 \cond \ncond \c
311         .endm
312
313         it0     eq
314         it0     ne
315         it0     cs
316         it0     hs
317         it0     cc
318         it0     ul
319         it0     lo
320         it0     mi
321         it0     pl
322         it0     vs
323         it0     vc
324         it0     hi
325         it0     ge
326         it0     lt
327         it0     gt
328         it0     le
329         it0     al
330         it1 eq ne t
331         it1 eq ne e
332         it2 eq ne t t
333         it2 eq ne e t
334         it2 eq ne t e
335         it2 eq ne e e
336         it3 eq ne t t t
337         it3 eq ne e t t
338         it3 eq ne t e t
339         it3 eq ne t t e
340         it3 eq ne t e e
341         it3 eq ne e t e
342         it3 eq ne e e t
343         it3 eq ne e e e
344
345         it1 ne eq t
346         it1 ne eq e
347         it2 ne eq t t
348         it2 ne eq e t
349         it2 ne eq t e
350         it2 ne eq e e
351         it3 ne eq t t t
352         it3 ne eq e t t
353         it3 ne eq t e t
354         it3 ne eq t t e
355         it3 ne eq t e e
356         it3 ne eq e t e
357         it3 ne eq e e t
358         it3 ne eq e e e
359
360 ldst:
361 1:
362         pld     [r5]
363         pld     [r5, #0x330]
364         pld     [r5, #-0x30]
365         pld     [r5], #0x30
366         pld     [r5], #-0x30
367         pld     [r5, #0x30]!
368         pld     [r5, #-0x30]!
369         pld     [r5, r4]
370         pld     [r9, ip]
371         pld     1f
372         pld     1b
373 1:
374         nop
375 here:
376         ldrd    r2, r3, [r5]
377         ldrd    r2, [r5, #0x30]
378         ldrd    r2, [r5, #-0x30]
379         ldrd    r4, r5, here
380         strd    r2, r3, [r5]
381         strd    r2, [r5, #0x30]
382         strd    r2, [r5, #-0x30]
383         strd    r2, r3, here
384         
385         ldrbt   r1, [r5]
386         ldrbt   r1, [r5, #0x30]
387         ldrsbt  r1, [r5]
388         ldrsbt  r1, [r5, #0x30]
389         ldrht   r1, [r5]
390         ldrht   r1, [r5, #0x30]
391         ldrsht  r1, [r5]
392         ldrsht  r1, [r5, #0x30]
393         ldrt    r1, [r5]
394         ldrt    r1, [r5, #0x30]
395
396 ldxstx:
397         ldrexb  r1, [r4]
398         ldrexh  r1, [r4]
399         ldrex   r1, [r4]
400         ldrexd  r1, r2, [r4]
401
402         strexb  r1, r2, [r4]
403         strexh  r1, r2, [r4]
404         strex   r1, r2, [r4]
405         strexd  r1, r2, r3, [r4]
406         strexd  r1, r3, r3, [r4]
407
408         ldrex   r1, [r4,#516]
409         strex   r1, r2, [r4,#516]
410
411 ldmstm:
412         ldmia   r0!, {r1,r2,r3}
413         ldmia   r2, {r0,r1,r2}
414         ldmia.w r2, {r0,r1,r2}
415         ldmia   r9, {r0,r1,r2}
416         ldmia   r0, {r7,r8,r10}
417         ldmia   r0!, {r7,r8,r10}
418         
419         stmia   r0!, {r1,r2,r3}
420         stmia   r2!, {r0,r1,r3}
421         stmia.w r2!, {r0,r1,r3}
422         stmia   r9, {r0,r1,r2}
423         stmia   r0, {r7,r8,r10}
424         stmia   r0!, {r7,r8,r10}
425
426         ldmdb   r0, {r7,r8,r10}
427         stmdb   r0, {r7,r8,r10}
428
429 mlas:
430         mla     r0, r0, r0, r0
431         mls     r0, r0, r0, r0
432         mla     r9, r0, r0, r0
433         mla     r0, r9, r0, r0
434         mla     r0, r0, r9, r0
435         mla     r0, r0, r0, r9
436
437 tst_teq_cmp_cmn_mov_mvn:
438         .macro  mt op ops opw opsw
439         \ops    r0, r0
440         \op     r0, r0
441         \ops    r5, r0
442         \op     r0, r5
443         \op     r0, r5, asr #17
444         \opw    r0, r0
445         \ops    r9, r0
446         \opsw   r0, r9
447         \opw    r0, #129
448         \opw    r5, #129
449         .endm
450
451         mt      tst tsts tst.w tsts.w
452         mt      teq teqs teq.w teqs.w
453         mt      cmp cmps cmp.w cmps.w
454         mt      cmn cmns cmn.w cmns.w
455         mt      mov movs mov.w movs.w
456         mt      mvn mvns mvn.w mvns.w
457         .purgem mt
458
459 mov16:
460         movw    r0, #0
461         movt    r0, #0
462         movw    r9, #0
463         movw    r0, #0x9000
464         movw    r0, #0x0800
465         movw    r0, #0x0500
466         movw    r0, #0x0081
467         movw    r0, #0xffff
468
469 mrs_msr:
470         mrs     r0, CPSR
471         mrs     r0, SPSR
472         mrs     r9, CPSR_all
473         mrs     r9, SPSR_all
474
475         msr     CPSR_c, r0
476         msr     SPSR_c, r0
477         msr     CPSR_c, r9
478         msr     CPSR_x, r0
479         msr     CPSR_s, r0
480         msr     CPSR_f, r0
481
482 mul:
483         mul     r0, r0, r0
484         mul     r0, r9, r0
485         mul     r0, r0, r9
486         mul     r0, r0
487         mul     r9, r0
488         muls    r5, r0
489         muls    r5, r0, r5
490         muls    r0, r5
491
492 mull:
493         smull   r0, r1, r0, r0
494         umull   r0, r1, r0, r0
495         smlal   r0, r1, r0, r0
496         umlal   r0, r1, r0, r0
497         smull   r9, r0, r0, r0
498         smull   r0, r9, r0, r0
499         smull   r0, r1, r9, r0
500         smull   r0, r1, r0, r9
501
502 neg:
503         negs    r0, r0
504         negs    r0, r5
505         negs    r5, r0
506         negs.w  r0, r0
507         negs.w  r5, r0
508         negs.w  r0, r5
509
510         neg     r0, r9
511         neg     r9, r0
512         negs    r0, r9
513         negs    r9, r0
514
515 pkh:
516         pkhbt   r0, r0, r0
517         pkhbt   r9, r0, r0
518         pkhbt   r0, r9, r0
519         pkhbt   r0, r0, r9
520         pkhbt   r0, r0, r0, lsl #0x14
521         pkhbt   r0, r0, r0, lsl #3
522         pkhtb   r1, r2, r3
523         pkhtb   r1, r2, r3, asr #0x11
524
525 push_pop:
526         push    {r0}
527         pop     {r0}
528         push    {r1,lr}
529         pop     {r1,pc}
530         push    {r8,r9,r10,r11,r12}
531         pop     {r8,r9,r10,r11,r12}
532
533 qadd:
534         qadd            r1, r2, r3
535         qadd16          r1, r2, r3
536         qadd8           r1, r2, r3
537         qasx            r1, r2, r3
538         qaddsubx        r1, r2, r3
539         qdadd           r1, r2, r3
540         qdsub           r1, r2, r3
541         qsub            r1, r2, r3
542         qsub16          r1, r2, r3
543         qsub8           r1, r2, r3
544         qsax            r1, r2, r3
545         qsubaddx        r1, r2, r3
546         sadd16          r1, r2, r3
547         sadd8           r1, r2, r3
548         sasx            r1, r2, r3
549         saddsubx        r1, r2, r3
550         ssub16          r1, r2, r3
551         ssub8           r1, r2, r3
552         ssax            r1, r2, r3
553         ssubaddx        r1, r2, r3
554         shadd16         r1, r2, r3
555         shadd8          r1, r2, r3
556         shasx           r1, r2, r3
557         shaddsubx       r1, r2, r3
558         shsub16         r1, r2, r3
559         shsub8          r1, r2, r3
560         shsax           r1, r2, r3
561         shsubaddx       r1, r2, r3
562         uadd16          r1, r2, r3
563         uadd8           r1, r2, r3
564         uasx            r1, r2, r3
565         uaddsubx        r1, r2, r3
566         usub16          r1, r2, r3
567         usub8           r1, r2, r3
568         usax            r1, r2, r3
569         usubaddx        r1, r2, r3
570         uhadd16         r1, r2, r3
571         uhadd8          r1, r2, r3
572         uhasx           r1, r2, r3
573         uhaddsubx       r1, r2, r3
574         uhsub16         r1, r2, r3
575         uhsub8          r1, r2, r3
576         uhsax           r1, r2, r3
577         uhsubaddx       r1, r2, r3
578         uqadd16         r1, r2, r3
579         uqadd8          r1, r2, r3
580         uqasx           r1, r2, r3
581         uqaddsubx       r1, r2, r3
582         uqsub16         r1, r2, r3
583         uqsub8          r1, r2, r3
584         uqsax           r1, r2, r3
585         uqsubaddx       r1, r2, r3
586         sel             r1, r2, r3
587
588 rbit_rev:
589         .macro  rx op opw
590         \op     r0, r0
591         \opw    r0, r0
592         \op     r0, r5
593         \op     r5, r0
594         \op     r0, r9
595         \op     r9, r0
596         .endm
597
598         rx      rev rev.w
599         rx      rev16 rev16.w
600         rx      revsh revsh.w
601         rx      rbit rbit.w
602
603         .purgem rx
604
605 shift:
606         .macro  sh op ops opw opsw
607         \ops    r0, #17         @ 16-bit format 1
608         \ops    r0, r0, #14
609         \ops    r5, r0, #17
610         \ops    r0, r5, #14
611         \ops    r0, r0          @ 16-bit format 2
612         \ops    r0, r5
613         \ops    r0, r0, r5
614         \op     r9, #17         @ 32-bit format 1
615         \op     r9, r9, #14
616         \ops    r0, r9, #17
617         \op     r9, r0, #14
618         \opw    r0, r0, r0      @ 32-bit format 2
619         \op     r9, r9
620         \ops    r9, r0
621         \op     r0, r9
622         \op     r0, r5
623         \ops    r0, r1, r2
624         .endm
625
626         sh      lsl lsls lsl.w lsls.w
627         sh      lsr lsrs lsr.w lsrs.w
628         sh      asr asrs asr.w asrs.w
629         sh      ror rors ror.w rors.w
630
631         .purgem sh
632
633 rrx:    
634         rrx     r1, r2
635         rrxs    r3, r4
636
637         .arch armv7-a
638         .arch_extension sec
639 smc:
640         smc     #0
641         smc     #0xabcd
642
643 smla:
644         smlabb  r0, r0, r0, r0
645         smlabb  r9, r0, r0, r0
646         smlabb  r0, r9, r0, r0
647         smlabb  r0, r0, r9, r0
648         smlabb  r0, r0, r0, r9
649
650         smlatb  r0, r0, r0, r0
651         smlabt  r0, r0, r0, r0
652         smlatt  r0, r0, r0, r0
653         smlawb  r0, r0, r0, r0
654         smlawt  r0, r0, r0, r0
655         smlad   r0, r0, r0, r0
656         smladx  r0, r0, r0, r0
657         smlsd   r0, r0, r0, r0
658         smlsdx  r0, r0, r0, r0
659         smmla   r0, r0, r0, r0
660         smmlar  r0, r0, r0, r0
661         smmls   r0, r0, r0, r0
662         smmlsr  r0, r0, r0, r0
663         usada8  r0, r0, r0, r0
664
665 smlal:
666         smlalbb r0, r0, r0, r0
667         smlalbb r9, r0, r0, r0
668         smlalbb r0, r9, r0, r0
669         smlalbb r0, r0, r9, r0
670         smlalbb r0, r0, r0, r9
671
672         smlaltb r0, r0, r0, r0
673         smlalbt r0, r0, r0, r0
674         smlaltt r0, r0, r0, r0
675         smlald  r0, r0, r0, r0
676         smlaldx r0, r0, r0, r0
677         smlsld  r0, r0, r0, r0
678         smlsldx r0, r0, r0, r0
679         umaal   r0, r0, r0, r0
680
681 smul:
682         smulbb  r0, r0, r0
683         smulbb  r9, r0, r0
684         smulbb  r0, r9, r0
685         smulbb  r0, r0, r9
686
687         smultb  r0, r0, r0
688         smulbt  r0, r0, r0
689         smultt  r0, r0, r0
690         smulwb  r0, r0, r0
691         smulwt  r0, r0, r0
692         smmul   r0, r0, r0
693         smmulr  r0, r0, r0
694         smuad   r0, r0, r0
695         smuadx  r0, r0, r0
696         smusd   r0, r0, r0
697         smusdx  r0, r0, r0
698         usad8   r0, r0, r0
699
700 sat:
701         ssat    r0, #1, r0
702         ssat    r0, #1, r0, lsl #0
703         ssat    r0, #1, r0, asr #0
704         ssat    r9, #1, r0
705         ssat    r0, #18, r0
706         ssat    r0, #1, r9
707         ssat    r0, #1, r0, lsl #0x1c
708         ssat    r0, #1, r0, asr #0x03
709
710         ssat16  r0, #1, r0
711         ssat16  r9, #1, r0
712         ssat16  r0, #10, r0
713         ssat16  r0, #1, r9
714
715         usat    r0, #0, r0
716         usat    r0, #0, r0, lsl #0
717         usat    r0, #0, r0, asr #0
718         usat    r9, #0, r0
719         usat    r0, #17, r0
720         usat    r0, #0, r9
721         usat    r0, #0, r0, lsl #0x1c
722         usat    r0, #0, r0, asr #0x03
723
724         usat16  r0, #0, r0
725         usat16  r9, #0, r0
726         usat16  r0, #9, r0
727         usat16  r0, #0, r9
728
729 xt:
730         sxtb    r0, r0
731         sxtb    r0, r0, ror #0
732         sxtb    r5, r0
733         sxtb    r0, r5
734         sxtb.w  r1, r2
735         sxtb    r1, r2, ror #8
736         sxtb    r1, r2, ror #16
737         sxtb    r1, r2, ror #24
738
739         sxtb16  r1, r2
740         sxtb16  r8, r9
741         sxth    r1, r2
742         sxth    r8, r9
743         uxtb    r1, r2
744         uxtb    r8, r9
745         uxtb16  r1, r2
746         uxtb16  r8, r9
747         uxth    r1, r2
748         uxth    r8, r9
749
750 xta:    
751         sxtab   r0, r0, r0
752         sxtab   r0, r0, r0, ror #0
753         sxtab   r9, r0, r0, ror #8
754         sxtab   r0, r9, r0, ror #16
755         sxtab   r0, r0, r9, ror #24
756
757         sxtab16 r1, r2, r3
758         sxtah   r1, r2, r3
759         uxtab   r1, r2, r3
760         uxtab16 r1, r2, r3
761         uxtah   r1, r2, r3
762
763         .macro  ldpcimm op
764         \op     r1, [pc, #0x2aa]
765         \op     r1, [pc, #0x155]
766         \op     r1, [pc, #-0x2aa]
767         \op     r1, [pc, #-0x155]
768         .endm
769         ldpcimm ldrb
770         ldpcimm ldrsb
771         ldpcimm ldrh
772         ldpcimm ldrsh
773         ldpcimm ldr
774         addw r9, r0, #0
775         addw r6, pc, #0xfff
776         subw r6, r9, #0xa85
777         subw r6, r9, #0x57a
778         tbb [pc, r6]
779         tbb [r0, r9]
780         tbh [pc, r7, lsl #1]
781         tbh [r0, r8, lsl #1]
782
783         push    {r8}
784         pop     {r8}
785
786         ldmdb   r0!, {r7,r8,r10}
787         stmdb   r0!, {r7,r8,r10}
788
789         ldm     r0!, {r1, r2}
790         stm     r0!, {r1, r2}
791         ldm     r0, {r8, r9}
792         stm     r0, {r8, r9}
793         itttt eq
794         ldmeq   r0!, {r1, r2}
795         stmeq   r0!, {r1, r2}
796         ldmeq   r0, {r8, r9}
797         stmeq   r0, {r8, r9}
798         nop
799
800 srs:
801         srsia sp, #16
802         srsdb sp, #16
803         srsia sp!, #21
804         srsia sp!, #10
805
806         movs pc, lr
807         subs pc, lr, #0
808         subs pc, lr, #4
809         subs pc, lr, #255
810
811         ldrd r2, r4, [r9, #48]!
812         ldrd r2, r4, [r9, #-48]!
813         strd r2, r4, [r9, #48]!
814         strd r2, r4, [r9, #-48]!
815         ldrd r2, r4, [r9], #48
816         ldrd r2, r4, [r9], #-48
817         strd r2, r4, [r9], #48
818         strd r2, r4, [r9], #-48
819
820         .macro ldaddr op
821         ldr\op  r1, [r5, #0x301]
822         ldr\op  r1, [r5, #0x30]!
823         ldr\op  r1, [r5, #-0x30]!
824         ldr\op  r1, [r5], #0x30
825         ldr\op  r1, [r5], #-0x30
826         ldr\op  r1, [r5, r9]
827         .endm
828         ldaddr
829         ldaddr b
830         ldaddr sb
831         ldaddr h
832         ldaddr sh
833         .macro movshift op s="s"
834         movs r1, r4, \op #2
835         movs r3, r9, \op #2
836         movs r1, r2, \op r3
837         movs r1, r1, \op r3
838         movs r1, r1, \op r9
839         mov r1, r2, \op r3
840         mov r1, r1, \op r3
841         .endm
842         movshift lsl
843         movshift lsr
844         movshift asr
845         movshift ror
846         nop