Commit | Line | Data |
---|---|---|
4d6ac854 AV |
1 | .syntax unified |
2 | .thumb | |
3 | ||
4 | .macro n_vstr_w_vldr op, imm | |
5 | .irp op1, q0, q1, q2, q4, q7 | |
6 | .irp op2, r0, r1, r2, r4, r7 | |
7 | \op \op1, [\op2, #\imm] | |
8 | \op \op1, [\op2, #-\imm] | |
9 | \op \op1, [\op2, #\imm]! | |
10 | \op \op1, [\op2, #-\imm]! | |
11 | \op \op1, [\op2], #\imm | |
12 | \op \op1, [\op2], #-\imm | |
13 | .endr | |
14 | .endr | |
15 | .endm | |
16 | ||
17 | .irp mnem, vstrb.16, vstrb.32 | |
18 | .irp imm, 0, 1, 2, 4, 8, 16, 32, 64, 127, 120, 15 | |
19 | n_vstr_w_vldr \mnem, \imm | |
20 | .endr | |
21 | .endr | |
22 | ||
23 | .irp imm, 0, 2, 4, 8, 16, 32, 64, 128, 254, 240, 30 | |
24 | n_vstr_w_vldr vstrh.32, \imm | |
25 | .endr | |
26 | ||
27 | .macro wb_same_size_vstr_vldr op, imm | |
28 | .irp op1, q0, q1, q2, q4, q7 | |
29 | .irp op2, r0, r1, r2, r4, r7, r8, r10, r12, r14 | |
30 | \op \op1, [\op2, #\imm]! | |
31 | \op \op1, [\op2, #-\imm]! | |
32 | \op \op1, [\op2], #\imm | |
33 | \op \op1, [\op2], #-\imm | |
34 | .endr | |
35 | .endr | |
36 | .endm | |
37 | ||
38 | .macro no_wb_same_size_vstr_vldr op, imm | |
39 | .irp op1, q0, q1, q2, q4, q7 | |
40 | .irp op2, r0, r1, r2, r4, r7, r8, r10, r12, r13, r14 | |
41 | \op \op1, [\op2, #\imm] | |
42 | \op \op1, [\op2, #-\imm] | |
43 | .endr | |
44 | .endr | |
45 | .endm | |
46 | ||
47 | .irp mnem, vstrb.8, vstrb.s8, vstrb.u8 | |
48 | .irp imm, 0, 1, 2, 4, 8, 16, 32, 64, 127, 120, 15 | |
49 | wb_same_size_vstr_vldr \mnem, \imm | |
50 | no_wb_same_size_vstr_vldr \mnem, \imm | |
51 | .endr | |
52 | .endr | |
53 | ||
54 | .irp mnem, vstrh.16, vstrh.s16, vstrh.u16, vstrh.f16 | |
55 | .irp imm, 0, 2, 4, 8, 16, 32, 64, 128, 254, 240, 30 | |
56 | wb_same_size_vstr_vldr \mnem, \imm | |
57 | no_wb_same_size_vstr_vldr \mnem, \imm | |
58 | .endr | |
59 | .endr | |
60 | ||
61 | .irp mnem, vstrw.32, vstrw.s32, vstrw.u32, vstrw.f32 | |
62 | .irp imm, 0, 4, 8, 16, 32, 64, 128, 256, 508, 480, 60 | |
63 | wb_same_size_vstr_vldr \mnem, \imm | |
64 | no_wb_same_size_vstr_vldr \mnem, \imm | |
65 | .endr | |
66 | .endr | |
67 | ||
68 | vpstet | |
69 | vstrbt.u8 q0, [r12, #1] | |
70 | vstrbe.16 q3, [r2, #-127] | |
71 | vstrbt.32 q3, [r3, #-93]! | |
72 | vpstete | |
73 | vstrht.f16 q5, [r4], #254 | |
74 | vstrhe.32 q5, [r0, #126] | |
75 | vstrwt.32 q3, [r5, #508] | |
76 | vstrwe.u32 q5, [r8], #244 | |
77 | ||
78 | ||
79 | .irp mnem, vldrb.s16, vldrb.u16, vldrb.s32, vldrb.u32 | |
80 | .irp imm, 0, 1, 2, 4, 8, 16, 32, 64, 127, 120, 15 | |
81 | n_vstr_w_vldr \mnem, \imm | |
82 | .endr | |
83 | .endr | |
84 | ||
85 | .irp mnem, vldrh.s32, vldrh.u32 | |
86 | .irp imm, 0, 2, 4, 8, 16, 32, 64, 128, 254, 240, 30 | |
87 | n_vstr_w_vldr \mnem, \imm | |
88 | .endr | |
89 | .endr | |
90 | ||
91 | .irp mnem, vldrb.8, vldrb.s8, vldrb.u8 | |
92 | .irp imm, 0, 1, 2, 4, 8, 16, 32, 64, 127, 120, 15 | |
93 | wb_same_size_vstr_vldr \mnem, \imm | |
94 | no_wb_same_size_vstr_vldr \mnem, \imm | |
95 | .endr | |
96 | .endr | |
97 | ||
98 | .irp mnem, vldrh.16, vldrh.s16, vldrh.u16, vldrh.f16 | |
99 | .irp imm, 0, 2, 4, 8, 16, 32, 64, 128, 254, 240, 30 | |
100 | wb_same_size_vstr_vldr \mnem, \imm | |
101 | no_wb_same_size_vstr_vldr \mnem, \imm | |
102 | .endr | |
103 | .endr | |
104 | ||
105 | .irp mnem, vldrw.32, vldrw.s32, vldrw.u32, vldrw.f32 | |
106 | .irp imm, 0, 4, 8, 16, 32, 64, 128, 256, 508, 480, 60 | |
107 | wb_same_size_vstr_vldr \mnem, \imm | |
108 | no_wb_same_size_vstr_vldr \mnem, \imm | |
109 | .endr | |
110 | .endr | |
111 | vpstet | |
112 | vldrbt.u8 q0, [r12, #1] | |
113 | vldrbe.u16 q3, [r2, #-127] | |
114 | vldrbt.u32 q3, [r3, #-93]! | |
115 | vpstete | |
116 | vldrht.f16 q5, [r4], #254 | |
117 | vldrhe.s32 q5, [r0, #126] | |
118 | vldrwt.32 q3, [r5, #508] | |
119 | vldrwe.u32 q5, [r8], #244 |