1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 .macro HEXAGON_OPT_FUNC_BEGIN name
25 .text
26 .p2align 4
27 .globl \name
28 .type \name, @function
29\name:
30 .endm
31
32 .macro HEXAGON_OPT_FUNC_FINISH name
33 .size \name, . - \name
34 .endm
35
36
37
38HEXAGON_OPT_FUNC_BEGIN memset
39 {
40 r6 =
41 r7 = extractu(r0,
42 p0 = cmp.eq(r2,
43 p1 = cmp.gtu(r2,
44 }
45 {
46 r4 = vsplatb(r1)
47 r8 = r0
48 r9 = sub(r6, r7)
49 if p0 jumpr r31
50 }
51 {
52 r3 =
53 r7 =
54 p0 = tstbit(r9,
55 if p1 jump 2f
56 }
57
58
59
60 loop0(1f, r2)
61 .falign
621:
63 {
64 memb(r8++
65 }:endloop0
66 jumpr r31
67 .falign
682:
69 {
70 r6 =
71 p0 = tstbit(r9,
72 p1 = cmp.eq(r2,
73 if !p0 jump 3f
74 }
75 {
76 memb(r8++
77 r3:2 = sub(r3:2, r7:6)
78 if p1 jumpr r31
79 }
80 .falign
813:
82 {
83 r6 =
84 p0 = tstbit(r9,
85 p1 = cmp.eq(r2,
86 if !p0 jump 4f
87 }
88 {
89 memh(r8++
90 r3:2 = sub(r3:2, r7:6)
91 if p1 jumpr r31
92 }
93 .falign
944:
95 {
96 r6 =
97 p0 = cmp.gtu(r2,
98 p1 = cmp.eq(r2,
99 if !p0 jump 5f
100 }
101 {
102 memw(r8++
103 r3:2 = sub(r3:2, r7:6)
104 p0 = cmp.gtu(r2,
105 if p1 jumpr r31
106 }
107 .falign
1085:
109 {
110 r10 = lsr(r2,
111 p1 = cmp.eq(r3,
112 if !p0 jump 7f
113 }
114 {
115 r5 = r4
116 r6 =
117 loop0(6f, r10)
118 }
119
120
121
122 .falign
1236:
124 {
125 memd(r8++
126 r3:2 = sub(r3:2, r7:6)
127 p1 = cmp.eq(r2,
128 }:endloop0
129 .falign
1307:
131 {
132 p0 = tstbit(r2,
133 if p1 jumpr r31
134 }
135 {
136 r6 =
137 p0 = tstbit(r2,
138 p1 = cmp.eq(r2,
139 if !p0 jump 8f
140 }
141 {
142 memw(r8++
143 r3:2 = sub(r3:2, r7:6)
144 if p1 jumpr r31
145 }
146 .falign
1478:
148 {
149 p1 = cmp.eq(r2,
150 if !p0 jump 9f
151 }
152 {
153 memh(r8++
154 if p1 jumpr r31
155 }
156 .falign
1579:
158 {
159 memb(r8++
160 jumpr r31
161 }
162HEXAGON_OPT_FUNC_FINISH memset
163#endif
164
165
166
167
168HEXAGON_OPT_FUNC_BEGIN memset
169 {
170 r7=vsplatb(r1)
171 r6 = r0
172 if (r2==
173 }
174 {
175 r5:4=combine(r7,r7)
176 p0 = cmp.gtu(r2,
177 if (p0.new) jump:nt .L3
178 }
179 {
180 r3 = r0
181 loop0(.L47,r2)
182 }
183 .falign
184.L47:
185 {
186 memb(r3++
187 }:endloop0
188 jumpr r31
189.L3:
190 {
191 p0 = tstbit(r0,
192 if (!p0.new) jump:nt .L8
193 p1 = cmp.eq(r2,
194 }
195 {
196 r6 = add(r0,
197 r2 = add(r2,
198 memb(r0) = r1
199 if (p1) jump .L1
200 }
201.L8:
202 {
203 p0 = tstbit(r6,
204 if (!p0.new) jump:nt .L10
205 }
206 {
207 r2 = add(r2,
208 memh(r6++
209 p0 = cmp.eq(r2,
210 if (p0.new) jump:nt .L1
211 }
212.L10:
213 {
214 p0 = tstbit(r6,
215 if (!p0.new) jump:nt .L12
216 }
217 {
218 r2 = add(r2,
219 memw(r6++
220 p0 = cmp.eq(r2,
221 if (p0.new) jump:nt .L1
222 }
223.L12:
224 {
225 p0 = cmp.gtu(r2,
226 if (!p0.new) jump:nt .L14
227 }
228 r3 = and(r6,
229 if (r3==
230 {
231 memd(r6++
232 r2 = add(r2,
233 }
234 r3 = and(r6,
235 if (r3==
236 {
237 memd(r6++
238 r2 = add(r2,
239 }
240 r3 = and(r6,
241 if (r3==
242 {
243 memd(r6++
244 r2 = add(r2,
245 }
246.L17:
247 {
248 r3 = lsr(r2,
249 if (r1!=
250 }
251 {
252 r8 = r3
253 r3 = r6
254 loop0(.L46,r3)
255 }
256 .falign
257.L46:
258 {
259 dczeroa(r6)
260 r6 = add(r6,
261 r2 = add(r2,
262 }:endloop0
263.L14:
264 {
265 p0 = cmp.gtu(r2,
266 if (!p0.new) jump:nt .L28
267 r8 = lsr(r2,
268 }
269 loop0(.L44,r8)
270 .falign
271.L44:
272 {
273 memd(r6++
274 r2 = add(r2,
275 }:endloop0
276.L28:
277 {
278 p0 = tstbit(r2,
279 if (!p0.new) jump:nt .L33
280 }
281 {
282 r2 = add(r2,
283 memw(r6++
284 }
285.L33:
286 {
287 p0 = tstbit(r2,
288 if (!p0.new) jump:nt .L35
289 }
290 {
291 r2 = add(r2,
292 memh(r6++
293 }
294.L35:
295 p0 = cmp.eq(r2,
296 if (p0) memb(r6) = r1
297.L1:
298 jumpr r31
299.L18:
300 loop0(.L45,r3)
301 .falign
302.L45:
303 dczeroa(r6)
304 {
305 memd(r6++
306 r2 = add(r2,
307 }
308 memd(r6++
309 memd(r6++
310 {
311 memd(r6++
312 }:endloop0
313 jump .L14
314HEXAGON_OPT_FUNC_FINISH memset
315#endif
316