1.syntax unified
2.thumb
3ldmstm:
4	ldmia sp!, {r0}
5	ldmia sp!, {r8}
6	ldmia r1, {r9}
7	ldmia r2!, {ip}
8	ldmdb sp!, {r2}
9	ldmdb sp!, {r8}
10	ldmdb r6, {r4}
11	ldmdb r6, {r8}
12	ldmdb r2!, {r4}
13	ldmdb r2!, {ip}
14	stmia sp!, {r3}
15	stmia sp!, {r9}
16	stmia r3, {ip}
17	stmia r4!, {ip}
18	stmdb sp!, {r3}
19	stmdb sp!, {r9}
20	stmdb r7, {r5}
21	stmdb r6, {ip}
22	stmdb r6!, {fp}
23	stmdb r5!, {r8}
24
25	@ Valid Thumb-2 encodings of LDM/LDMIA/LDMFD as specified by section
26	@ A8.6.53 of the ARM ARM
27	ldmia r0!, {r1-r3}	@ Encoding T1
28	ldmia r0, {r0-r3}	@ Encoding T1
29	ldmia r0!, {r1}		@ Encoding T1
30	ldmia r0, {r8-r11}	@ Encoding T2
31	ldmia.w r0!, {r1-r3}	@ Encoding T2
32	ldmia r0!, {r8-r11}	@ Encoding T2
33	ldmia r0!, {r12, r14}	@ Encoding T2
34	ldmia r0!, {r12, pc}	@ Encoding T2
35	it eq
36	ldmiaeq r0!, {r12, pc}	@ Encoding T2
37
38	@ Valid Thumb-2 encodings of STM/STMIA/STMEA as specified by section
39	@ A8.6.189 of the ARMARM.
40	stmia r0!, {r0-r3}	@ Encoding T1, Allowed as r0 is lowest reg
41	stmia r0!, {r4-r7}	@ Encoding T1
42	stmia.w r0!, {r4-r7}	@ Encoding T2
43	stmia r0!, {r8-r11}	@ Encoding T2
44	stmia r0, {r0-r3}	@ Encoding T2
45	stmia r0, {r8-r11}	@ Encoding T2
46
47	@ The following are technically UNPREDICTABLE if we assemble them
48	@ as written, but gas translates (stm|ldm) rn(!), {rd} into an
49	@ equivalent, and well-defined, (ldr, str) rd, [rn], (#4).
50	ldmia.w r0!, {r1}	@ ldr.w r1, [r0], #4
51	ldmia.w r0, {r1}	@ ldr.w r1, [r0]
52	ldmia r8!, {r9}		@ ldr.w r9, [r8], #4
53        ldmia r8, {r9}		@ ldr.w r9, [r8]
54	stmia.w r0!, {r1}	@ str.w r1, [r0], #4
55	stmia r0, {r1}		@ T1 str r1, [r0]
56	ldmia r1, {r2}		@ T1 ldr r2, [r1]
57	ldmia r0, {r7}		@ T1 ldr r7, [r0]
58	stmia sp, {r7}		@ T1 str r7, [sp]
59	stmia sp, {r0}		@ T1 str r0, [sp]
60	ldmia sp, {r7}		@ T1 ldr r7, [sp]
61	ldmia sp, {r0}		@ T1 ldr r0, [sp]
62	stmia r8!, {r9}		@ str.w r9, [r8], #4
63	stmia r8, {r9}		@ str.w r9, [r8]
64