1.syntax unified
2.thumb
3
4.macro all_vstr op, size, ext
5.irp op1, q0, q1, q2, q4, q7
6.irp op2, r0, r1, r2, r4, r7, r8, r10, r12, r13, r14
7.irp op3, q0, q1, q2, q4, q7
8\op\()\size \op1, [\op2, \op3]
9\op\()\size \op1, [\op2, \op3, uxtw #\ext]
10.endr
11.endr
12.endr
13.endm
14
15.irp size, .8, .16, .32
16all_vstr vstrb, \size, 0
17.endr
18
19.irp size, .16, .32
20all_vstr vstrh, \size, 1
21.endr
22
23all_vstr vstrw, .32, 2
24all_vstr vstrd, .64, 3
25
26vpstete
27vstrbt.8 q1, [r0, q0]
28vstrbe.8 q1, [r2, q2]
29vstrbt.16 q2, [r3, q1]
30vstrbe.16 q3, [r4, q6]
31vpstete
32vstrbt.32 q4, [r8, q2]
33vstrbe.32 q7, [sp, q6]
34vstrht.16 q0, [r0, q1]
35vstrhe.16 q2, [r2, q0]
36vpstet
37vstrht.32 q1, [r1, q7]
38vstrhe.32 q3, [r3, q2]
39vstrht.16 q4, [r6, q5, UXTW #1]
40vpstete
41vstrht.16 q6, [r10, q3, UXTW #1]
42vstrhe.32 q5, [r7, q4, UXTW #1]
43vstrht.32 q7, [sp, q6, UXTW #1]
44vstrwe.32 q0, [r2, q1]
45vpstete
46vstrwt.32 q1, [r5, q7]
47vstrwe.32 q2, [r8, q3, UXTW #2]
48vstrwt.32 q5, [sp, q0, UXTW #2]
49vstrde.64 q0, [sp, q7]
50vpstte
51vstrdt.64 q2, [r0, q1]
52vstrdt.64 q3, [r3, q5, UXTW #3]
53vstrde.64 q7, [r7, q4, UXTW #3]
54
55.macro all_vldr op, size, ext
56.irp op2, r0, r1, r2, r4, r7, r8, r10, r12, r13, r14
57.irp op3, q1, q2, q4, q7
58\op\()\size q0, [\op2, \op3]
59\op\()\size q0, [\op2, \op3, uxtw #\ext]
60.endr
61.irp op3, q0, q2, q4, q7
62\op\()\size q1, [\op2, \op3]
63\op\()\size q1, [\op2, \op3, uxtw #\ext]
64.endr
65.irp op3, q0, q1, q4, q7
66\op\()\size q2, [\op2, \op3]
67\op\()\size q2, [\op2, \op3, uxtw #\ext]
68.endr
69.irp op3, q0, q1, q2, q7
70\op\()\size q4, [\op2, \op3]
71\op\()\size q4, [\op2, \op3, uxtw #\ext]
72.endr
73.irp op3, q0, q1, q2, q4
74\op\()\size q7, [\op2, \op3]
75\op\()\size q7, [\op2, \op3, uxtw #\ext]
76.endr
77.endr
78.endm
79
80.irp data, .u8, .s16, .u16, .s32, .u32
81all_vldr vldrb, \data, 0
82.endr
83
84.irp data, .u16, .s32, .u32
85all_vldr vldrh, \data, 1
86.endr
87
88all_vldr vldrw, .u32, 2
89all_vldr vldrd, .u64, 3
90
91vpstete
92vldrbt.u8 q1, [r0, q0]
93vldrbe.u8 q1, [r2, q2]
94vldrbt.u16 q2, [r3, q1]
95vldrbe.s16 q3, [r4, q6]
96vpstete
97vldrbt.u32 q4, [r8, q2]
98vldrbe.s32 q7, [sp, q6]
99vldrht.u16 q0, [r0, q1]
100vldrhe.u16 q2, [r2, q0]
101vpstete
102vldrht.u32 q1, [r1, q7]
103vldrhe.u32 q3, [r3, q2]
104vldrht.u16 q4, [r6, q5, UXTW #1]
105vldrhe.u16 q6, [r10, q3, UXTW #1]
106vpstete
107vldrht.u32 q5, [r7, q4, UXTW #1]
108vldrhe.u32 q7, [sp, q6, UXTW #1]
109vldrwt.u32 q0, [r2, q1]
110vldrwe.u32 q1, [r5, q7]
111vpstete
112vldrwt.u32 q2, [r8, q3, UXTW #2]
113vldrwe.u32 q5, [sp, q0, UXTW #2]
114vldrdt.u64 q0, [sp, q7]
115vldrde.u64 q2, [r0, q1]
116vpste
117vldrdt.u64 q3, [r3, q5, UXTW #3]
118vldrde.u64 q7, [r7, q4, UXTW #3]
119
120.irp dt, u8, s16, 8
121vldrb.\dt q0, [r2, q3]
122.endr
123.irp dt, 16, u16, s32, f16, p16, u32
124vldrh.\dt q0, [r2, q3, UXTW #1]
125.endr
126.irp dt, 32, u32, f32, p32
127vldrw.\dt q0, [r2, q3, UXTW #2]
128.endr
129.irp dt, 64, u64, f64, p64
130vldrd.\dt q0, [r2, q3, UXTW #3]
131.endr
132