Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
5564 | serge | 1 | |
2 | * |
||
3 | * 1) It would be nice if load/store double could be used |
||
4 | * at least for the matrix parts. I think for the matrices |
||
5 | * it is safe, but for the vertices it probably is not due to |
||
6 | * things like glInterleavedArrays etc. |
||
7 | * |
||
8 | * UPDATE: Trying this now in sparc_matrix.h -DaveM_990624 |
||
9 | * |
||
10 | * 2) One extremely slick trick would be if we could enclose |
||
11 | * groups of xform calls on the same vertices such that |
||
12 | * we just load the matrix into f16-->f31 before the calls |
||
13 | * and then we would not have to do them here. This may be |
||
14 | * tricky and not much of a gain though. |
||
15 | */ |
||
16 | |||
17 | |||
18 | |||
19 | |||
20 | /* Solaris requires this for 64-bit. */ |
||
21 | .register %g2, #scratch |
||
22 | .register %g3, #scratch |
||
23 | #endif |
||
24 | |||
25 | |||
26 | .align 64 |
||
27 | |||
28 | |||
29 | ld [%o0 + V4F_FLAGS], %g2 |
||
30 | mov 1, %g1 |
||
31 | st %g1, [%o0 + V4F_SIZE] |
||
32 | or %g2, VEC_SIZE_1, %g2 |
||
33 | retl |
||
34 | st %g2, [%o0 + V4F_FLAGS] |
||
35 | __set_v4f_2: |
||
36 | ld [%o0 + V4F_FLAGS], %g2 |
||
37 | mov 2, %g1 |
||
38 | st %g1, [%o0 + V4F_SIZE] |
||
39 | or %g2, VEC_SIZE_2, %g2 |
||
40 | retl |
||
41 | st %g2, [%o0 + V4F_FLAGS] |
||
42 | __set_v4f_3: |
||
43 | ld [%o0 + V4F_FLAGS], %g2 |
||
44 | mov 3, %g1 |
||
45 | st %g1, [%o0 + V4F_SIZE] |
||
46 | or %g2, VEC_SIZE_3, %g2 |
||
47 | retl |
||
48 | st %g2, [%o0 + V4F_FLAGS] |
||
49 | __set_v4f_4: |
||
50 | ld [%o0 + V4F_FLAGS], %g2 |
||
51 | mov 4, %g1 |
||
52 | st %g1, [%o0 + V4F_SIZE] |
||
53 | or %g2, VEC_SIZE_4, %g2 |
||
54 | retl |
||
55 | st %g2, [%o0 + V4F_FLAGS] |
||
56 | |||
57 | |||
58 | |||
59 | |||
60 | _mesa_sparc_transform_points1_general: |
||
61 | ld [%o2 + V4F_STRIDE], %o5 |
||
62 | LDPTR [%o2 + V4F_START], %g1 |
||
63 | LDPTR [%o0 + V4F_START], %g2 |
||
64 | ld [%o2 + V4F_COUNT], %g3 |
||
65 | |||
66 | |||
67 | |||
68 | |||
69 | st %g3, [%o0 + V4F_COUNT] |
||
70 | bl 3f |
||
71 | clr %o1 |
||
72 | |||
73 | |||
74 | andn %g3, 1, %o2 |
||
75 | |||
76 | |||
77 | add %g1, %o5, %g1 ! IEU0 |
||
78 | ld [%g1 + 0x00], %f8 ! LSU Group |
||
79 | add %o1, 2, %o1 ! IEU0 |
||
80 | add %g1, %o5, %g1 ! IEU1 |
||
81 | fmuls %f0, M0, %f1 ! FGM Group 1-cycle stall on %f0 |
||
82 | fmuls %f0, M1, %f2 ! FGM Group |
||
83 | fmuls %f0, M2, %f3 ! FGM Group |
||
84 | fmuls %f0, M3, %f4 ! FGM Group |
||
85 | fmuls %f8, M0, %f9 ! FGM Group f1 available |
||
86 | fadds %f1, M12, %f1 ! FGA |
||
87 | st %f1, [%g2 + 0x00] ! LSU |
||
88 | fmuls %f8, M1, %f10 ! FGM Group f2 available |
||
89 | fadds %f2, M13, %f2 ! FGA |
||
90 | st %f2, [%g2 + 0x04] ! LSU |
||
91 | fmuls %f8, M2, %f11 ! FGM Group f3 available |
||
92 | fadds %f3, M14, %f3 ! FGA |
||
93 | st %f3, [%g2 + 0x08] ! LSU |
||
94 | fmuls %f8, M3, %f12 ! FGM Group f4 available |
||
95 | fadds %f4, M15, %f4 ! FGA |
||
96 | st %f4, [%g2 + 0x0c] ! LSU |
||
97 | fadds %f9, M12, %f9 ! FGA Group f9 available |
||
98 | st %f9, [%g2 + 0x10] ! LSU |
||
99 | fadds %f10, M13, %f10 ! FGA Group f10 available |
||
100 | st %f10, [%g2 + 0x14] ! LSU |
||
101 | fadds %f11, M14, %f11 ! FGA Group f11 available |
||
102 | st %f11, [%g2 + 0x18] ! LSU |
||
103 | fadds %f12, M15, %f12 ! FGA Group f12 available |
||
104 | st %f12, [%g2 + 0x1c] ! LSU |
||
105 | cmp %o1, %o2 ! IEU1 |
||
106 | bne 1b ! CTI |
||
107 | add %g2, 0x20, %g2 ! IEU0 Group |
||
108 | |||
109 | |||
110 | be 3f |
||
111 | nop |
||
112 | |||
113 | |||
114 | fmuls %f0, M0, %f1 ! FGM Group 1-cycle stall on %f0 |
||
115 | fmuls %f0, M1, %f2 ! FGM Group |
||
116 | fmuls %f0, M2, %f3 ! FGM Group |
||
117 | fmuls %f0, M3, %f4 ! FGM Group |
||
118 | fadds %f1, M12, %f1 ! FGA Group |
||
119 | st %f1, [%g2 + 0x00] ! LSU |
||
120 | fadds %f2, M13, %f2 ! FGA Group |
||
121 | st %f2, [%g2 + 0x04] ! LSU |
||
122 | fadds %f3, M14, %f3 ! FGA Group |
||
123 | st %f3, [%g2 + 0x08] ! LSU |
||
124 | fadds %f4, M15, %f4 ! FGA Group |
||
125 | st %f4, [%g2 + 0x0c] ! LSU |
||
126 | |||
127 | |||
128 | ba __set_v4f_4 |
||
129 | nop |
||
130 | |||
131 | |||
132 | _mesa_sparc_transform_points1_identity: |
||
133 | cmp %o0, %o2 |
||
134 | be 4f |
||
135 | ld [%o2 + V4F_STRIDE], %o5 |
||
136 | LDPTR [%o2 + V4F_START], %g1 |
||
137 | LDPTR [%o0 + V4F_START], %g2 |
||
138 | ld [%o2 + V4F_COUNT], %g3 |
||
139 | |||
140 | |||
141 | st %g3, [%o0 + V4F_COUNT] |
||
142 | bl 3f |
||
143 | clr %o1 |
||
144 | |||
145 | |||
146 | andn %g3, 1, %o2 |
||
147 | |||
148 | |||
149 | add %g1, %o5, %g1 ! IEU0 |
||
150 | ld [%g1 + 0x00], %f1 ! LSU Group |
||
151 | add %o1, 2, %o1 ! IEU0 |
||
152 | add %g1, %o5, %g1 ! IEU1 |
||
153 | st %f0, [%g2 + 0x00] ! LSU Group |
||
154 | cmp %o1, %o2 ! IEU1 |
||
155 | st %f1, [%g2 + 0x10] ! LSU Group |
||
156 | bne 1b ! CTI |
||
157 | add %g2, 0x20, %g2 ! IEU0 |
||
158 | |||
159 | |||
160 | be 3f |
||
161 | nop |
||
162 | |||
163 | |||
164 | addx %g0, %g0, %g0 |
||
165 | st %f0, [%g2 + 0x00] |
||
166 | |||
167 | |||
168 | ba __set_v4f_1 |
||
169 | nop |
||
170 | |||
171 | |||
172 | nop |
||
173 | |||
174 | |||
175 | _mesa_sparc_transform_points1_2d: |
||
176 | ld [%o2 + V4F_STRIDE], %o5 |
||
177 | LDPTR [%o2 + V4F_START], %g1 |
||
178 | LDPTR [%o0 + V4F_START], %g2 |
||
179 | ld [%o2 + V4F_COUNT], %g3 |
||
180 | |||
181 | |||
182 | |||
183 | |||
184 | st %g3, [%o0 + V4F_COUNT] |
||
185 | bl 3f |
||
186 | clr %o1 |
||
187 | |||
188 | |||
189 | andn %g3, 1, %o2 |
||
190 | |||
191 | |||
192 | add %g1, %o5, %g1 ! IEU0 |
||
193 | ld [%g1 + 0x00], %f8 ! LSU Group |
||
194 | add %o1, 2, %o1 ! IEU0 |
||
195 | add %g1, %o5, %g1 ! IEU1 |
||
196 | fmuls %f0, M0, %f1 ! FGM Group |
||
197 | fmuls %f0, M1, %f2 ! FGM Group |
||
198 | fmuls %f8, M0, %f9 ! FGM Group |
||
199 | fmuls %f8, M1, %f10 ! FGM Group |
||
200 | fadds %f1, M12, %f3 ! FGA Group f1 available |
||
201 | st %f3, [%g2 + 0x00] ! LSU |
||
202 | fadds %f2, M13, %f4 ! FGA Group f2 available |
||
203 | st %f4, [%g2 + 0x04] ! LSU |
||
204 | fadds %f9, M12, %f11 ! FGA Group f9 available |
||
205 | st %f11, [%g2 + 0x10] ! LSU |
||
206 | fadds %f10, M13, %f12 ! FGA Group f10 available |
||
207 | st %f12, [%g2 + 0x14] ! LSU |
||
208 | cmp %o1, %o2 ! IEU1 |
||
209 | bne 1b ! CTI |
||
210 | add %g2, 0x20, %g2 ! IEU0 Group |
||
211 | |||
212 | |||
213 | be 3f |
||
214 | nop |
||
215 | |||
216 | |||
217 | fmuls %f0, M0, %f1 |
||
218 | fmuls %f0, M1, %f2 |
||
219 | fadds %f1, M12, %f3 |
||
220 | st %f3, [%g2 + 0x00] |
||
221 | fadds %f2, M13, %f4 |
||
222 | st %f4, [%g2 + 0x04] |
||
223 | |||
224 | |||
225 | ba __set_v4f_2 |
||
226 | nop |
||
227 | |||
228 | |||
229 | _mesa_sparc_transform_points1_2d_no_rot: |
||
230 | ld [%o2 + V4F_STRIDE], %o5 |
||
231 | LDPTR [%o2 + V4F_START], %g1 |
||
232 | LDPTR [%o0 + V4F_START], %g2 |
||
233 | ld [%o2 + V4F_COUNT], %g3 |
||
234 | |||
235 | |||
236 | |||
237 | |||
238 | st %g3, [%o0 + V4F_COUNT] |
||
239 | bl 3f |
||
240 | clr %o1 |
||
241 | |||
242 | |||
243 | andn %g3, 1, %o2 |
||
244 | |||
245 | |||
246 | add %g1, %o5, %g1 ! IEU0 |
||
247 | ld [%g1 + 0x00], %f4 ! LSU Group |
||
248 | add %o1, 2, %o1 ! IEU0 |
||
249 | add %g1, %o5, %g1 ! IEU1 |
||
250 | fmuls %f0, M0, %f1 ! FGM Group |
||
251 | fmuls %f4, M0, %f5 ! FGM Group |
||
252 | fadds %f1, M12, %f3 ! FGA Group, 2 cycle stall, f1 available |
||
253 | st %f3, [%g2 + 0x00] ! LSU |
||
254 | st M13, [%g2 + 0x04] ! LSU Group, f5 available |
||
255 | fadds %f5, M12, %f6 ! FGA |
||
256 | st %f6, [%g2 + 0x10] ! LSU Group |
||
257 | st M13, [%g2 + 0x14] ! LSU Group |
||
258 | cmp %o1, %o2 ! IEU1 |
||
259 | bne 1b ! CTI |
||
260 | add %g2, 0x20, %g2 ! IEU0 Group |
||
261 | |||
262 | |||
263 | be 3f |
||
264 | nop |
||
265 | |||
266 | |||
267 | fmuls %f0, M0, %f1 |
||
268 | fadds %f1, M12, %f3 |
||
269 | st %f3, [%g2 + 0x00] |
||
270 | st M13, [%g2 + 0x04] |
||
271 | |||
272 | |||
273 | ba __set_v4f_2 |
||
274 | nop |
||
275 | |||
276 | |||
277 | _mesa_sparc_transform_points1_3d: |
||
278 | ld [%o2 + V4F_STRIDE], %o5 |
||
279 | LDPTR [%o2 + V4F_START], %g1 |
||
280 | LDPTR [%o0 + V4F_START], %g2 |
||
281 | ld [%o2 + V4F_COUNT], %g3 |
||
282 | |||
283 | |||
284 | |||
285 | |||
286 | st %g3, [%o0 + V4F_COUNT] |
||
287 | bl 3f |
||
288 | clr %o1 |
||
289 | |||
290 | |||
291 | andn %g3, 1, %o2 |
||
292 | |||
293 | |||
294 | add %g1, %o5, %g1 ! IEU0 |
||
295 | ld [%g1 + 0x00], %f4 ! LSU Group |
||
296 | add %o1, 2, %o1 ! IEU0 |
||
297 | add %g1, %o5, %g1 ! IEU1 |
||
298 | fmuls %f0, M0, %f1 ! FGM Group |
||
299 | fmuls %f0, M1, %f2 ! FGM Group |
||
300 | fmuls %f0, M2, %f3 ! FGM Group |
||
301 | fmuls %f4, M0, %f5 ! FGM Group |
||
302 | fadds %f1, M12, %f1 ! FGA Group, f1 available |
||
303 | st %f1, [%g2 + 0x00] ! LSU |
||
304 | fmuls %f4, M1, %f6 ! FGM |
||
305 | fadds %f2, M13, %f2 ! FGA Group, f2 available |
||
306 | st %f2, [%g2 + 0x04] ! LSU |
||
307 | fmuls %f4, M2, %f7 ! FGM |
||
308 | fadds %f3, M14, %f3 ! FGA Group, f3 available |
||
309 | st %f3, [%g2 + 0x08] ! LSU |
||
310 | fadds %f5, M12, %f5 ! FGA Group, f5 available |
||
311 | st %f5, [%g2 + 0x10] ! LSU |
||
312 | fadds %f6, M13, %f6 ! FGA Group, f6 available |
||
313 | st %f6, [%g2 + 0x14] ! LSU |
||
314 | fadds %f7, M14, %f7 ! FGA Group, f7 available |
||
315 | st %f7, [%g2 + 0x18] ! LSU |
||
316 | cmp %o1, %o2 ! IEU1 |
||
317 | bne 1b ! CTI |
||
318 | add %g2, 0x20, %g2 ! IEU0 Group |
||
319 | |||
320 | |||
321 | be 3f |
||
322 | nop |
||
323 | |||
324 | |||
325 | fmuls %f0, M0, %f1 |
||
326 | fmuls %f0, M1, %f2 |
||
327 | fmuls %f0, M2, %f3 |
||
328 | fadds %f1, M12, %f1 |
||
329 | st %f1, [%g2 + 0x00] |
||
330 | fadds %f2, M13, %f2 |
||
331 | st %f2, [%g2 + 0x04] |
||
332 | fadds %f3, M14, %f3 |
||
333 | st %f3, [%g2 + 0x08] |
||
334 | |||
335 | |||
336 | ba __set_v4f_3 |
||
337 | nop |
||
338 | |||
339 | |||
340 | _mesa_sparc_transform_points1_3d_no_rot: |
||
341 | ld [%o2 + V4F_STRIDE], %o5 |
||
342 | LDPTR [%o2 + V4F_START], %g1 |
||
343 | LDPTR [%o0 + V4F_START], %g2 |
||
344 | ld [%o2 + V4F_COUNT], %g3 |
||
345 | |||
346 | |||
347 | |||
348 | |||
349 | st %g3, [%o0 + V4F_COUNT] |
||
350 | bl 3f |
||
351 | clr %o1 |
||
352 | |||
353 | |||
354 | andn %g3, 1, %o2 |
||
355 | |||
356 | |||
357 | add %g1, %o5, %g1 ! IEU0 |
||
358 | ld [%g1 + 0x00], %f2 ! LSU Group |
||
359 | add %o1, 2, %o1 ! IEU0 |
||
360 | add %g1, %o5, %g1 ! IEU1 |
||
361 | fmuls %f0, M0, %f1 ! FGM Group |
||
362 | fmuls %f2, M0, %f3 ! FGM Group |
||
363 | fadds %f1, M12, %f1 ! FGA Group, 2 cycle stall, f1 available |
||
364 | st %f1, [%g2 + 0x00] ! LSU |
||
365 | fadds %f3, M12, %f3 ! FGA Group, f3 available |
||
366 | st M13, [%g2 + 0x04] ! LSU |
||
367 | st M14, [%g2 + 0x08] ! LSU Group |
||
368 | st %f3, [%g2 + 0x10] ! LSU Group |
||
369 | st M13, [%g2 + 0x14] ! LSU Group |
||
370 | st M14, [%g2 + 0x18] ! LSU Group |
||
371 | cmp %o1, %o2 ! IEU1 |
||
372 | bne 1b ! CTI |
||
373 | add %g2, 0x20, %g2 ! IEU0 Group |
||
374 | |||
375 | |||
376 | be 3f |
||
377 | nop |
||
378 | |||
379 | |||
380 | fmuls %f0, M0, %f1 |
||
381 | fadds %f1, M12, %f1 |
||
382 | st %f1, [%g2 + 0x00] |
||
383 | st M13, [%g2 + 0x04] |
||
384 | st M14, [%g2 + 0x08] |
||
385 | |||
386 | |||
387 | ba __set_v4f_3 |
||
388 | nop |
||
389 | |||
390 | |||
391 | _mesa_sparc_transform_points1_perspective: |
||
392 | ld [%o2 + V4F_STRIDE], %o5 |
||
393 | LDPTR [%o2 + V4F_START], %g1 |
||
394 | LDPTR [%o0 + V4F_START], %g2 |
||
395 | ld [%o2 + V4F_COUNT], %g3 |
||
396 | |||
397 | |||
398 | |||
399 | |||
400 | st %g3, [%o0 + V4F_COUNT] |
||
401 | bl 3f |
||
402 | clr %o1 |
||
403 | |||
404 | |||
405 | andn %g3, 1, %o2 |
||
406 | |||
407 | |||
408 | add %g1, %o5, %g1 ! IEU0 |
||
409 | ld [%g1 + 0x00], %f2 ! LSU Group |
||
410 | add %o1, 2, %o1 ! IEU0 |
||
411 | add %g1, %o5, %g1 ! IEU1 |
||
412 | fmuls %f0, M0, %f1 ! FGM Group |
||
413 | st %f1, [%g2 + 0x00] ! LSU |
||
414 | fmuls %f2, M0, %f3 ! FGM Group |
||
415 | st %g0, [%g2 + 0x04] ! LSU |
||
416 | st M14, [%g2 + 0x08] ! LSU Group |
||
417 | st %g0, [%g2 + 0x0c] ! LSU Group |
||
418 | st %f3, [%g2 + 0x10] ! LSU Group |
||
419 | st %g0, [%g2 + 0x14] ! LSU Group |
||
420 | st M14, [%g2 + 0x18] ! LSU Group |
||
421 | st %g0, [%g2 + 0x1c] ! LSU Group |
||
422 | cmp %o1, %o2 ! IEU1 |
||
423 | bne 1b ! CTI |
||
424 | add %g2, 0x20, %g2 ! IEU0 Group |
||
425 | |||
426 | |||
427 | be 3f |
||
428 | nop |
||
429 | |||
430 | |||
431 | fmuls %f0, M0, %f1 |
||
432 | st %f1, [%g2 + 0x00] |
||
433 | st %g0, [%g2 + 0x04] |
||
434 | st M14, [%g2 + 0x08] |
||
435 | st %g0, [%g2 + 0x0c] |
||
436 | |||
437 | |||
438 | ba __set_v4f_4 |
||
439 | nop |
||
440 | |||
441 | |||
442 | _mesa_sparc_transform_points2_general: |
||
443 | ld [%o2 + V4F_STRIDE], %o5 |
||
444 | LDPTR [%o2 + V4F_START], %g1 |
||
445 | LDPTR [%o0 + V4F_START], %g2 |
||
446 | ld [%o2 + V4F_COUNT], %g3 |
||
447 | |||
448 | |||
449 | |||
450 | |||
451 | st %g3, [%o0 + V4F_COUNT] |
||
452 | be 2f |
||
453 | clr %o1 |
||
454 | |||
455 | |||
456 | ld [%g1 + 0x04], %f1 ! LSU Group |
||
457 | add %o1, 1, %o1 ! IEU0 |
||
458 | add %g1, %o5, %g1 ! IEU1 |
||
459 | fmuls %f0, M0, %f2 ! FGM Group |
||
460 | fmuls %f0, M1, %f3 ! FGM Group |
||
461 | fmuls %f0, M2, %f4 ! FGM Group |
||
462 | fmuls %f0, M3, %f5 ! FGM Group |
||
463 | fadds %f2, M12, %f2 ! FGA Group f2 available |
||
464 | fmuls %f1, M4, %f6 ! FGM |
||
465 | fadds %f3, M13, %f3 ! FGA Group f3 available |
||
466 | fmuls %f1, M5, %f7 ! FGM |
||
467 | fadds %f4, M14, %f4 ! FGA Group f4 available |
||
468 | fmuls %f1, M6, %f8 ! FGM |
||
469 | fadds %f5, M15, %f5 ! FGA Group f5 available |
||
470 | fmuls %f1, M7, %f9 ! FGM |
||
471 | fadds %f2, %f6, %f2 ! FGA Group f6 available |
||
472 | st %f2, [%g2 + 0x00] ! LSU |
||
473 | fadds %f3, %f7, %f3 ! FGA Group f7 available |
||
474 | st %f3, [%g2 + 0x04] ! LSU |
||
475 | fadds %f4, %f8, %f4 ! FGA Group f8 available |
||
476 | st %f4, [%g2 + 0x08] ! LSU |
||
477 | fadds %f5, %f9, %f5 ! FGA Group f9 available |
||
478 | st %f5, [%g2 + 0x0c] ! LSU |
||
479 | cmp %o1, %g3 ! IEU1 |
||
480 | bne 1b ! CTI |
||
481 | add %g2, 0x10, %g2 ! IEU0 Group |
||
482 | 2: |
||
483 | ba __set_v4f_4 |
||
484 | nop |
||
485 | |||
486 | |||
487 | _mesa_sparc_transform_points2_identity: |
||
488 | cmp %o2, %o0 |
||
489 | be 3f |
||
490 | ld [%o2 + V4F_STRIDE], %o5 |
||
491 | LDPTR [%o2 + V4F_START], %g1 |
||
492 | LDPTR [%o0 + V4F_START], %g2 |
||
493 | ld [%o2 + V4F_COUNT], %g3 |
||
494 | |||
495 | |||
496 | st %g3, [%o0 + V4F_COUNT] |
||
497 | be 2f |
||
498 | clr %o1 |
||
499 | |||
500 | |||
501 | add %o1, 1, %o1 ! IEU0 |
||
502 | ld [%g1 + 0x04], %f1 ! LSU Group |
||
503 | add %g1, %o5, %g1 ! IEU0 |
||
504 | cmp %o1, %g3 ! IEU1 |
||
505 | st %f0, [%g2 + 0x00] ! LSU Group |
||
506 | st %f1, [%g2 + 0x04] ! LSU Group |
||
507 | bne 1b ! CTI |
||
508 | add %g2, 0x10, %g2 ! IEU0 |
||
509 | 2: |
||
510 | ba __set_v4f_2 |
||
511 | nop |
||
512 | |||
513 | |||
514 | nop |
||
515 | |||
516 | |||
517 | _mesa_sparc_transform_points2_2d: |
||
518 | ld [%o2 + V4F_STRIDE], %o5 |
||
519 | LDPTR [%o2 + V4F_START], %g1 |
||
520 | LDPTR [%o0 + V4F_START], %g2 |
||
521 | ld [%o2 + V4F_COUNT], %g3 |
||
522 | |||
523 | |||
524 | |||
525 | |||
526 | st %g3, [%o0 + V4F_COUNT] |
||
527 | bl 3f |
||
528 | clr %o1 |
||
529 | |||
530 | |||
531 | andn %g3, 1, %o2 |
||
532 | |||
533 | |||
534 | ld [%g1 + 0x04], %f1 ! LSU Group |
||
535 | add %o1, 2, %o1 ! IEU0 |
||
536 | add %g1, %o5, %g1 ! IEU1 |
||
537 | fmuls %f0, M0, %f2 ! FGM |
||
538 | ld [%g1 + 0x00], %f8 ! LSU Group |
||
539 | fmuls %f0, M1, %f3 ! FGM |
||
540 | ld [%g1 + 0x04], %f9 ! LSU Group |
||
541 | fmuls %f1, M4, %f6 ! FGM |
||
542 | fmuls %f1, M5, %f7 ! FGM Group |
||
543 | add %g1, %o5, %g1 ! IEU0 |
||
544 | fmuls %f8, M0, %f10 ! FGM Group f2 available |
||
545 | fadds %f2, M12, %f2 ! FGA |
||
546 | fmuls %f8, M1, %f11 ! FGM Group f3 available |
||
547 | fadds %f3, M13, %f3 ! FGA |
||
548 | fmuls %f9, M4, %f12 ! FGM Group |
||
549 | fmuls %f9, M5, %f13 ! FGM Group |
||
550 | fadds %f10, M12, %f10 ! FGA Group f2, f10 available |
||
551 | fadds %f2, %f6, %f2 ! FGA Group f3, f11 available |
||
552 | st %f2, [%g2 + 0x00] ! LSU |
||
553 | fadds %f11, M13, %f11 ! FGA Group f12 available |
||
554 | fadds %f3, %f7, %f3 ! FGA Group f13 available |
||
555 | st %f3, [%g2 + 0x04] ! LSU |
||
556 | fadds %f10, %f12, %f10 ! FGA Group f10 available |
||
557 | st %f10, [%g2 + 0x10] ! LSU |
||
558 | fadds %f11, %f13, %f11 ! FGA Group f11 available |
||
559 | st %f11, [%g2 + 0x14] ! LSU |
||
560 | cmp %o1, %o2 ! IEU1 |
||
561 | bne 1b ! CTI |
||
562 | add %g2, 0x20, %g2 ! IEU0 Group |
||
563 | |||
564 | |||
565 | be 3f |
||
566 | nop |
||
567 | |||
568 | |||
569 | ld [%g1 + 0x04], %f1 ! LSU Group |
||
570 | fmuls %f0, M0, %f2 ! FGM Group |
||
571 | fmuls %f0, M1, %f3 ! FGM Group |
||
572 | fmuls %f1, M4, %f6 ! FGM Group |
||
573 | fmuls %f1, M5, %f7 ! FGM Group |
||
574 | fadds %f2, M12, %f2 ! FGA Group f2 available |
||
575 | fadds %f3, M13, %f3 ! FGA Group f3 available |
||
576 | fadds %f2, %f6, %f2 ! FGA Group 2 cycle stall, f2 available |
||
577 | st %f2, [%g2 + 0x00] ! LSU |
||
578 | fadds %f3, %f7, %f3 ! FGA Group f3 available |
||
579 | st %f3, [%g2 + 0x04] ! LSU |
||
580 | |||
581 | |||
582 | ba __set_v4f_2 |
||
583 | nop |
||
584 | |||
585 | |||
586 | _mesa_sparc_transform_points2_2d_no_rot: |
||
587 | ld [%o2 + V4F_STRIDE], %o5 |
||
588 | LDPTR [%o2 + V4F_START], %g1 |
||
589 | LDPTR [%o0 + V4F_START], %g2 |
||
590 | ld [%o2 + V4F_COUNT], %g3 |
||
591 | |||
592 | |||
593 | |||
594 | |||
595 | st %g3, [%o0 + V4F_COUNT] |
||
596 | bl 3f |
||
597 | clr %o1 |
||
598 | |||
599 | |||
600 | andn %g3, 1, %o2 |
||
601 | |||
602 | |||
603 | ld [%g1 + 0x04], %f1 ! LSU Group |
||
604 | add %o1, 2, %o1 ! IEU0 |
||
605 | add %g1, %o5, %g1 ! IEU1 |
||
606 | ld [%g1 + 0x00], %f4 ! LSU Group |
||
607 | fmuls %f0, M0, %f2 ! FGM |
||
608 | ld [%g1 + 0x04], %f5 ! LSU Group |
||
609 | fmuls %f1, M5, %f3 ! FGM |
||
610 | fmuls %f4, M0, %f6 ! FGM Group |
||
611 | add %g1, %o5, %g1 ! IEU0 |
||
612 | fmuls %f5, M5, %f7 ! FGM Group |
||
613 | fadds %f2, M12, %f2 ! FGA Group f2 available |
||
614 | st %f2, [%g2 + 0x00] ! LSU |
||
615 | fadds %f3, M13, %f3 ! FGA Group f3 available |
||
616 | st %f3, [%g2 + 0x04] ! LSU |
||
617 | fadds %f6, M12, %f6 ! FGA Group f6 available |
||
618 | st %f6, [%g2 + 0x10] ! LSU |
||
619 | fadds %f7, M13, %f7 ! FGA Group f7 available |
||
620 | st %f7, [%g2 + 0x14] ! LSU |
||
621 | cmp %o1, %o2 ! IEU1 |
||
622 | bne 1b ! CTI |
||
623 | add %g2, 0x20, %g2 ! IEU0 Group |
||
624 | |||
625 | |||
626 | be 3f |
||
627 | nop |
||
628 | |||
629 | |||
630 | ld [%g1 + 0x04], %f1 ! LSU Group |
||
631 | fmuls %f0, M0, %f2 ! FGM Group |
||
632 | fmuls %f1, M5, %f3 ! FGM Group |
||
633 | fadds %f2, M12, %f2 ! FGA Group, 2 cycle stall, f2 available |
||
634 | st %f2, [%g2 + 0x00] ! LSU |
||
635 | fadds %f3, M13, %f3 ! FGA Group f3 available |
||
636 | st %f3, [%g2 + 0x04] ! LSU |
||
637 | |||
638 | |||
639 | ba __set_v4f_2 |
||
640 | nop |
||
641 | |||
642 | |||
643 | .globl _mesa_sparc_transform_points2_3d |
||
644 | _mesa_sparc_transform_points2_3d: |
||
645 | ld [%o2 + V4F_STRIDE], %o5 |
||
646 | ld [%o2 + V4F_START], %g1 |
||
647 | ld [%o0 + V4F_START], %g2 |
||
648 | ld [%o2 + V4F_COUNT], %g3 |
||
649 | |||
650 | |||
651 | |||
652 | |||
653 | st %g3, [%o0 + V4F_COUNT] |
||
654 | bl 3f |
||
655 | clr %o1 |
||
656 | |||
657 | |||
658 | andn %g3, 1, %o2 |
||
659 | |||
660 | |||
661 | ld [%g1 + 0x04], %f1 ! LSU Group |
||
662 | add %o1, 2, %o1 ! IEU0 |
||
663 | add %g1, %o5, %g1 ! IEU1 |
||
664 | ld [%g1 + 0x00], %f9 ! LSU Group |
||
665 | fmuls %f0, M0, %f2 ! FGM |
||
666 | ld [%g1 + 0x04], %f10 ! LSU Group |
||
667 | fmuls %f0, M1, %f3 ! FGM |
||
668 | fmuls %f0, M2, %f4 ! FGM Group |
||
669 | add %g1, %o5, %g1 ! IEU0 |
||
670 | fmuls %f1, M4, %f6 ! FGM Group |
||
671 | fmuls %f1, M5, %f7 ! FGM Group f2 available |
||
672 | fadds %f2, M12, %f2 ! FGA |
||
673 | fmuls %f1, M6, %f8 ! FGM Group f3 available |
||
674 | fadds %f3, M13, %f3 ! FGA |
||
675 | fmuls %f9, M0, %f11 ! FGM Group f4 available |
||
676 | fadds %f4, M14, %f4 ! FGA |
||
677 | fmuls %f9, M1, %f12 ! FGM Group f6 available |
||
678 | fmuls %f9, M2, %f13 ! FGM Group f2, f7 available |
||
679 | fadds %f2, %f6, %f2 ! FGA |
||
680 | st %f2, [%g2 + 0x00] ! LSU |
||
681 | fmuls %f10, M4, %f14 ! FGM Group f3, f8 available |
||
682 | fadds %f3, %f7, %f3 ! FGA |
||
683 | st %f3, [%g2 + 0x04] ! LSU |
||
684 | fmuls %f10, M5, %f15 ! FGM Group f4, f11 available |
||
685 | fadds %f11, M12, %f11 ! FGA |
||
686 | fmuls %f10, M6, %f0 ! FGM Group f12 available |
||
687 | fadds %f12, M13, %f12 ! FGA |
||
688 | fadds %f13, M14, %f13 ! FGA Group f13 available |
||
689 | fadds %f4, %f8, %f4 ! FGA Group f14 available |
||
690 | st %f4, [%g2 + 0x08] ! LSU |
||
691 | fadds %f11, %f14, %f11 ! FGA Group f15, f11 available |
||
692 | st %f11, [%g2 + 0x10] ! LSU |
||
693 | fadds %f12, %f15, %f12 ! FGA Group f0, f12 available |
||
694 | st %f12, [%g2 + 0x14] ! LSU |
||
695 | fadds %f13, %f0, %f13 ! FGA Group f13 available |
||
696 | st %f13, [%g2 + 0x18] ! LSU |
||
697 | |||
698 | |||
699 | bne 1b ! CTI |
||
700 | add %g2, 0x20, %g2 ! IEU0 Group |
||
701 | |||
702 | |||
703 | be 3f |
||
704 | nop |
||
705 | |||
706 | |||
707 | ld [%g1 + 0x04], %f1 ! LSU Group |
||
708 | fmuls %f0, M0, %f2 ! FGM Group |
||
709 | fmuls %f0, M1, %f3 ! FGM Group |
||
710 | fmuls %f0, M2, %f4 ! FGM Group |
||
711 | fmuls %f1, M4, %f6 ! FGM Group |
||
712 | fmuls %f1, M5, %f7 ! FGM Group f2 available |
||
713 | fadds %f2, M12, %f2 ! FGA |
||
714 | fmuls %f1, M6, %f8 ! FGM Group f3 available |
||
715 | fadds %f3, M13, %f3 ! FGA |
||
716 | fadds %f4, M14, %f4 ! FGA Group f4 available |
||
717 | fadds %f2, %f6, %f2 ! FGA Group stall, f2, f6, f7 available |
||
718 | st %f2, [%g2 + 0x00] ! LSU |
||
719 | fadds %f3, %f7, %f3 ! FGA Group f3, f8 available |
||
720 | st %f3, [%g2 + 0x04] ! LSU |
||
721 | fadds %f4, %f8, %f4 ! FGA Group f4 available |
||
722 | st %f4, [%g2 + 0x08] ! LSU |
||
723 | |||
724 | |||
725 | ba __set_v4f_3 |
||
726 | nop |
||
727 | |||
728 | |||
729 | _mesa_sparc_transform_points2_3d_no_rot: |
||
730 | ld [%o2 + V4F_STRIDE], %o5 |
||
731 | LDPTR [%o2 + V4F_START], %g1 |
||
732 | LDPTR [%o0 + V4F_START], %g2 |
||
733 | ld [%o2 + V4F_COUNT], %g3 |
||
734 | |||
735 | |||
736 | |||
737 | |||
738 | st %g3, [%o0 + V4F_COUNT] |
||
739 | bl 3f |
||
740 | clr %o3 |
||
741 | |||
742 | |||
743 | andn %g3, 1, %o2 |
||
744 | |||
745 | |||
746 | ld [%g1 + 0x04], %f1 ! LSU Group |
||
747 | add %o3, 2, %o3 ! IEU0 |
||
748 | add %g1, %o5, %g1 ! IEU1 |
||
749 | ld [%g1 + 0x00], %f4 ! LSU Group |
||
750 | fmuls %f0, M0, %f2 ! FGM |
||
751 | ld [%g1 + 0x04], %f5 ! LSU Group |
||
752 | fmuls %f1, M5, %f3 ! FGM |
||
753 | fmuls %f4, M0, %f6 ! FGM Group |
||
754 | add %g1, %o5, %g1 ! IEU0 |
||
755 | fmuls %f5, M5, %f7 ! FGM Group |
||
756 | fadds %f2, M12, %f2 ! FGA Group f2 available |
||
757 | st %f2, [%g2 + 0x00] ! LSU |
||
758 | fadds %f3, M13, %f3 ! FGA Group f3 available |
||
759 | st %f3, [%g2 + 0x04] ! LSU |
||
760 | fadds %f6, M12, %f6 ! FGA Group f6 available |
||
761 | st M14, [%g2 + 0x08] ! LSU |
||
762 | fadds %f7, M13, %f7 ! FGA Group f7 available |
||
763 | st %f6, [%g2 + 0x10] ! LSU |
||
764 | st %f7, [%g2 + 0x14] ! LSU Group |
||
765 | st M14, [%g2 + 0x18] ! LSU Group |
||
766 | cmp %o3, %o2 ! IEU1 |
||
767 | bne 1b ! CTI |
||
768 | add %g2, 0x20, %g2 ! IEU0 Group |
||
769 | |||
770 | |||
771 | be 3f |
||
772 | nop |
||
773 | |||
774 | |||
775 | ld [%g1 + 0x04], %f1 ! LSU Group |
||
776 | fmuls %f0, M0, %f2 ! FGM Group |
||
777 | fmuls %f1, M5, %f3 ! FGM Group |
||
778 | fadds %f2, M12, %f2 ! FGA Group, 2 cycle stall, f2 available |
||
779 | st %f2, [%g2 + 0x00] ! LSU |
||
780 | fadds %f3, M13, %f3 ! FGA Group f3 available |
||
781 | st %f3, [%g2 + 0x04] ! LSU |
||
782 | st M14, [%g2 + 0x08] ! LSU Group |
||
783 | |||
784 | |||
785 | cmp %g3, 0 |
||
786 | bne __set_v4f_3 |
||
787 | nop |
||
788 | ba __set_v4f_2 |
||
789 | nop |
||
790 | |||
791 | |||
792 | _mesa_sparc_transform_points2_perspective: |
||
793 | ld [%o2 + V4F_STRIDE], %o5 |
||
794 | LDPTR [%o2 + V4F_START], %g1 |
||
795 | LDPTR [%o0 + V4F_START], %g2 |
||
796 | ld [%o2 + V4F_COUNT], %g3 |
||
797 | |||
798 | |||
799 | |||
800 | |||
801 | st %g3, [%o0 + V4F_COUNT] |
||
802 | be 2f |
||
803 | clr %o1 |
||
804 | |||
805 | |||
806 | ld [%g1 + 0x04], %f1 |
||
807 | add %o1, 1, %o1 |
||
808 | add %g1, %o5, %g1 |
||
809 | fmuls %f0, M0, %f2 |
||
810 | st %f2, [%g2 + 0x00] |
||
811 | fmuls %f1, M5, %f3 |
||
812 | st %f3, [%g2 + 0x04] |
||
813 | st M14, [%g2 + 0x08] |
||
814 | st %g0, [%g2 + 0x0c] |
||
815 | cmp %o1, %g3 |
||
816 | bne 1b |
||
817 | add %g2, 0x10, %g2 |
||
818 | 2: |
||
819 | ba __set_v4f_4 |
||
820 | nop |
||
821 | |||
822 | |||
823 | _mesa_sparc_transform_points3_general: |
||
824 | ld [%o2 + V4F_STRIDE], %o5 |
||
825 | LDPTR [%o2 + V4F_START], %g1 |
||
826 | LDPTR [%o0 + V4F_START], %g2 |
||
827 | ld [%o2 + V4F_COUNT], %g3 |
||
828 | |||
829 | |||
830 | |||
831 | |||
832 | st %g3, [%o0 + V4F_COUNT] |
||
833 | be 2f |
||
834 | clr %o1 |
||
835 | |||
836 | |||
837 | ld [%g1 + 0x04], %f1 ! LSU Group |
||
838 | ld [%g1 + 0x08], %f2 ! LSU Group |
||
839 | add %o1, 1, %o1 ! IEU0 |
||
840 | add %g1, %o5, %g1 ! IEU1 |
||
841 | fmuls %f0, M0, %f3 ! FGM |
||
842 | fmuls %f1, M4, %f7 ! FGM Group |
||
843 | fmuls %f0, M1, %f4 ! FGM Group |
||
844 | fmuls %f1, M5, %f8 ! FGM Group |
||
845 | fmuls %f0, M2, %f5 ! FGM Group f3 available |
||
846 | fmuls %f1, M6, %f9 ! FGM Group f7 available |
||
847 | fadds %f3, %f7, %f3 ! FGA |
||
848 | fmuls %f0, M3, %f6 ! FGM Group f4 available |
||
849 | fmuls %f1, M7, %f10 ! FGM Group f8 available |
||
850 | fadds %f4, %f8, %f4 ! FGA |
||
851 | fmuls %f2, M8, %f7 ! FGM Group f5 available |
||
852 | fmuls %f2, M9, %f8 ! FGM Group f9,f3 available |
||
853 | fadds %f5, %f9, %f5 ! FGA |
||
854 | fmuls %f2, M10, %f9 ! FGM Group f6 available |
||
855 | fadds %f6, %f10, %f6 ! FGA Group f10,f4 available |
||
856 | fmuls %f2, M11, %f10 ! FGM |
||
857 | fadds %f3, M12, %f3 ! FGA Group f7 available |
||
858 | fadds %f4, M13, %f4 ! FGA Group f8,f5 available |
||
859 | fadds %f5, M14, %f5 ! FGA Group f9 available |
||
860 | fadds %f6, M15, %f6 ! FGA Group f10,f6 available |
||
861 | fadds %f3, %f7, %f3 ! FGA Group f3 available |
||
862 | st %f3, [%g2 + 0x00] ! LSU |
||
863 | fadds %f4, %f8, %f4 ! FGA Group f4 available |
||
864 | st %f4, [%g2 + 0x04] ! LSU |
||
865 | fadds %f5, %f9, %f5 ! FGA Group f5 available |
||
866 | st %f5, [%g2 + 0x08] ! LSU |
||
867 | fadds %f6, %f10, %f6 ! FGA Group f6 available |
||
868 | st %f6, [%g2 + 0x0c] ! LSU |
||
869 | cmp %o1, %g3 ! IEU1 |
||
870 | bne 1b ! CTI |
||
871 | add %g2, 0x10, %g2 ! IEU0 Group |
||
872 | 2: |
||
873 | ba __set_v4f_4 |
||
874 | nop |
||
875 | |||
876 | |||
877 | _mesa_sparc_transform_points3_identity: |
||
878 | ld [%o2 + V4F_STRIDE], %o5 |
||
879 | LDPTR [%o2 + V4F_START], %g1 |
||
880 | LDPTR [%o0 + V4F_START], %g2 |
||
881 | ld [%o2 + V4F_COUNT], %g3 |
||
882 | |||
883 | |||
884 | st %g3, [%o0 + V4F_COUNT] |
||
885 | be 2f |
||
886 | clr %o1 |
||
887 | |||
888 | |||
889 | ld [%g1 + 0x04], %f1 |
||
890 | ld [%g1 + 0x08], %f2 |
||
891 | add %o1, 1, %o1 |
||
892 | add %g1, %o5, %g1 |
||
893 | cmp %o1, %g3 |
||
894 | st %f0, [%g2 + 0x00] |
||
895 | st %f1, [%g2 + 0x04] |
||
896 | st %f2, [%g2 + 0x08] |
||
897 | bne 1b |
||
898 | add %g2, 0x10, %g2 |
||
899 | 2: |
||
900 | ba __set_v4f_3 |
||
901 | nop |
||
902 | |||
903 | |||
904 | _mesa_sparc_transform_points3_2d: |
||
905 | ld [%o2 + V4F_STRIDE], %o5 |
||
906 | LDPTR [%o2 + V4F_START], %g1 |
||
907 | LDPTR [%o0 + V4F_START], %g2 |
||
908 | ld [%o2 + V4F_COUNT], %g3 |
||
909 | |||
910 | |||
911 | |||
912 | |||
913 | st %g3, [%o0 + V4F_COUNT] |
||
914 | be 2f |
||
915 | clr %o1 |
||
916 | |||
917 | |||
918 | ld [%g1 + 0x04], %f1 ! LSU Group |
||
919 | ld [%g1 + 0x08], %f2 ! LSU Group |
||
920 | add %o1, 1, %o1 ! IEU0 |
||
921 | add %g1, %o5, %g1 ! IEU1 |
||
922 | fmuls %f0, M0, %f3 ! FGM |
||
923 | fmuls %f0, M1, %f4 ! FGM Group |
||
924 | fmuls %f1, M4, %f6 ! FGM Group |
||
925 | fmuls %f1, M5, %f7 ! FGM Group |
||
926 | fadds %f3, M12, %f3 ! FGA Group f3 available |
||
927 | fadds %f4, M13, %f4 ! FGA Group f4 available |
||
928 | fadds %f3, %f6, %f3 ! FGA Group f6 available |
||
929 | st %f3, [%g2 + 0x00] ! LSU |
||
930 | fadds %f4, %f7, %f4 ! FGA Group f7 available |
||
931 | st %f4, [%g2 + 0x04] ! LSU |
||
932 | st %f2, [%g2 + 0x08] ! LSU Group |
||
933 | cmp %o1, %g3 ! IEU1 |
||
934 | bne 1b ! CTI |
||
935 | add %g2, 0x10, %g2 ! IEU0 Group |
||
936 | 2: |
||
937 | ba __set_v4f_3 |
||
938 | nop |
||
939 | |||
940 | |||
941 | _mesa_sparc_transform_points3_2d_no_rot: |
||
942 | ld [%o2 + V4F_STRIDE], %o5 |
||
943 | LDPTR [%o2 + V4F_START], %g1 |
||
944 | LDPTR [%o0 + V4F_START], %g2 |
||
945 | ld [%o2 + V4F_COUNT], %g3 |
||
946 | |||
947 | |||
948 | |||
949 | |||
950 | st %g3, [%o0 + V4F_COUNT] |
||
951 | be 2f |
||
952 | clr %o1 |
||
953 | |||
954 | |||
955 | ld [%g1 + 0x04], %f1 ! LSU Group |
||
956 | ld [%g1 + 0x08], %f2 ! LSU Group |
||
957 | add %o1, 1, %o1 ! IEU0 |
||
958 | add %g1, %o5, %g1 ! IEU1 |
||
959 | fmuls %f0, M0, %f3 ! FGM |
||
960 | fmuls %f1, M5, %f4 ! FGM Group |
||
961 | st %f2, [%g2 + 0x08] ! LSU |
||
962 | fadds %f3, M12, %f3 ! FGA Group |
||
963 | st %f3, [%g2 + 0x00] ! LSU |
||
964 | fadds %f4, M13, %f4 ! FGA Group |
||
965 | st %f4, [%g2 + 0x04] ! LSU |
||
966 | cmp %o1, %g3 ! IEU1 |
||
967 | bne 1b ! CTI |
||
968 | add %g2, 0x10, %g2 ! IEU0 Group |
||
969 | 2: |
||
970 | ba __set_v4f_3 |
||
971 | nop |
||
972 | |||
973 | |||
974 | _mesa_sparc_transform_points3_3d: |
||
975 | ld [%o2 + V4F_STRIDE], %o5 |
||
976 | LDPTR [%o2 + V4F_START], %g1 |
||
977 | LDPTR [%o0 + V4F_START], %g2 |
||
978 | ld [%o2 + V4F_COUNT], %g3 |
||
979 | |||
980 | |||
981 | |||
982 | |||
983 | st %g3, [%o0 + V4F_COUNT] |
||
984 | be 2f |
||
985 | clr %o1 |
||
986 | |||
987 | |||
988 | ld [%g1 + 0x04], %f1 ! LSU Group |
||
989 | ld [%g1 + 0x08], %f2 ! LSU Group |
||
990 | add %o1, 1, %o1 ! IEU0 |
||
991 | add %g1, %o5, %g1 ! IEU1 |
||
992 | fmuls %f0, M0, %f3 ! FGM |
||
993 | fmuls %f1, M4, %f6 ! FGM Group |
||
994 | fmuls %f0, M1, %f4 ! FGM Group |
||
995 | fmuls %f1, M5, %f7 ! FGM Group |
||
996 | fmuls %f0, M2, %f5 ! FGM Group f3 available |
||
997 | fmuls %f1, M6, %f8 ! FGM Group f6 available |
||
998 | fadds %f3, %f6, %f3 ! FGA |
||
999 | fmuls %f2, M8, %f9 ! FGM Group f4 available |
||
1000 | fmuls %f2, M9, %f10 ! FGM Group f7 available |
||
1001 | fadds %f4, %f7, %f4 ! FGA |
||
1002 | fmuls %f2, M10, %f11 ! FGM Group f5 available |
||
1003 | fadds %f5, %f8, %f5 ! FGA Group f8, f3 available |
||
1004 | fadds %f3, %f9, %f3 ! FGA Group f9 available |
||
1005 | fadds %f4, %f10, %f4 ! FGA Group f10, f4 available |
||
1006 | fadds %f5, %f11, %f5 ! FGA Group stall, f11, f5 available |
||
1007 | fadds %f3, M12, %f3 ! FGA Group f3 available |
||
1008 | st %f3, [%g2 + 0x00] ! LSU |
||
1009 | fadds %f4, M13, %f4 ! FGA Group f4 available |
||
1010 | st %f4, [%g2 + 0x04] ! LSU |
||
1011 | fadds %f5, M14, %f5 ! FGA Group f5 available |
||
1012 | st %f5, [%g2 + 0x08] ! LSU |
||
1013 | cmp %o1, %g3 ! IEU1 |
||
1014 | bne 1b ! CTI |
||
1015 | add %g2, 0x10, %g2 ! IEU0 Group |
||
1016 | 2: |
||
1017 | ba __set_v4f_3 |
||
1018 | nop |
||
1019 | |||
1020 | |||
1021 | _mesa_sparc_transform_points3_3d_no_rot: |
||
1022 | ld [%o2 + V4F_STRIDE], %o5 |
||
1023 | LDPTR [%o2 + V4F_START], %g1 |
||
1024 | LDPTR [%o0 + V4F_START], %g2 |
||
1025 | ld [%o2 + V4F_COUNT], %g3 |
||
1026 | |||
1027 | |||
1028 | |||
1029 | |||
1030 | st %g3, [%o0 + V4F_COUNT] |
||
1031 | be 2f |
||
1032 | clr %o1 |
||
1033 | |||
1034 | |||
1035 | ld [%g1 + 0x04], %f1 ! LSU Group |
||
1036 | ld [%g1 + 0x08], %f2 ! LSU Group |
||
1037 | add %o1, 1, %o1 ! IEU0 |
||
1038 | add %g1, %o5, %g1 ! IEU1 |
||
1039 | cmp %o1, %g3 ! IEU1 Group |
||
1040 | fmuls %f0, M0, %f3 ! FGM |
||
1041 | fmuls %f1, M5, %f4 ! FGM Group |
||
1042 | fmuls %f2, M10, %f5 ! FGM Group |
||
1043 | fadds %f3, M12, %f3 ! FGA Group, stall, f3 available |
||
1044 | st %f3, [%g2 + 0x00] ! LSU |
||
1045 | fadds %f4, M13, %f4 ! FGA Group, f4 available |
||
1046 | st %f4, [%g2 + 0x04] ! LSU |
||
1047 | fadds %f5, M14, %f5 ! FGA Group, f5 available |
||
1048 | st %f5, [%g2 + 0x08] ! LEU |
||
1049 | bne 1b ! CTI |
||
1050 | add %g2, 0x10, %g2 ! IEU0 Group |
||
1051 | 2: |
||
1052 | ba __set_v4f_3 |
||
1053 | nop |
||
1054 | |||
1055 | |||
1056 | _mesa_sparc_transform_points3_perspective: |
||
1057 | ld [%o2 + V4F_STRIDE], %o5 |
||
1058 | LDPTR [%o2 + V4F_START], %g1 |
||
1059 | LDPTR [%o0 + V4F_START], %g2 |
||
1060 | ld [%o2 + V4F_COUNT], %g3 |
||
1061 | |||
1062 | |||
1063 | |||
1064 | |||
1065 | st %g3, [%o0 + V4F_COUNT] |
||
1066 | be 2f |
||
1067 | clr %o1 |
||
1068 | |||
1069 | |||
1070 | ld [%g1 + 0x04], %f1 ! LSU Group |
||
1071 | ld [%g1 + 0x08], %f2 ! LSU Group |
||
1072 | add %o1, 1, %o1 ! IEU0 |
||
1073 | add %g1, %o5, %g1 ! IEU1 |
||
1074 | fmuls %f0, M0, %f3 ! FGM |
||
1075 | fmuls %f2, M8, %f6 ! FGM Group |
||
1076 | fmuls %f1, M5, %f4 ! FGM Group |
||
1077 | fmuls %f2, M9, %f7 ! FGM Group |
||
1078 | fmuls %f2, M10, %f5 ! FGM Group f3 available |
||
1079 | fadds %f3, %f6, %f3 ! FGA Group f6 available |
||
1080 | st %f3, [%g2 + 0x00] ! LSU |
||
1081 | fadds %f4, %f7, %f4 ! FGA Group stall, f4, f7 available |
||
1082 | st %f4, [%g2 + 0x04] ! LSU |
||
1083 | fadds %f5, M14, %f5 ! FGA Group |
||
1084 | st %f5, [%g2 + 0x08] ! LSU |
||
1085 | fnegs %f2, %f6 ! FGA Group |
||
1086 | st %f6, [%g2 + 0x0c] ! LSU |
||
1087 | cmp %o1, %g3 ! IEU1 |
||
1088 | bne 1b ! CTI |
||
1089 | add %g2, 0x10, %g2 ! IEU0 Group |
||
1090 | 2: |
||
1091 | ba __set_v4f_4 |
||
1092 | nop |
||
1093 | |||
1094 | |||
1095 | _mesa_sparc_transform_points4_general: |
||
1096 | ld [%o2 + V4F_STRIDE], %o5 |
||
1097 | LDPTR [%o2 + V4F_START], %g1 |
||
1098 | LDPTR [%o0 + V4F_START], %g2 |
||
1099 | ld [%o2 + V4F_COUNT], %g3 |
||
1100 | |||
1101 | |||
1102 | |||
1103 | |||
1104 | st %g3, [%o0 + V4F_COUNT] |
||
1105 | be 2f |
||
1106 | clr %o1 |
||
1107 | |||
1108 | |||
1109 | ld [%g1 + 0x04], %f1 ! LSU Group |
||
1110 | ld [%g1 + 0x08], %f2 ! LSU Group |
||
1111 | ld [%g1 + 0x0c], %f3 ! LSU Group |
||
1112 | add %o1, 1, %o1 ! IEU0 |
||
1113 | add %g1, %o5, %g1 ! IEU1 |
||
1114 | fmuls %f0, M0, %f4 ! FGM Group |
||
1115 | fmuls %f1, M4, %f8 ! FGM Group |
||
1116 | fmuls %f0, M1, %f5 ! FGM Group |
||
1117 | fmuls %f1, M5, %f9 ! FGM Group |
||
1118 | fmuls %f0, M2, %f6 ! FGM Group f4 available |
||
1119 | fmuls %f1, M6, %f10 ! FGM Group f8 available |
||
1120 | fadds %f4, %f8, %f4 ! FGA |
||
1121 | fmuls %f0, M3, %f7 ! FGM Group f5 available |
||
1122 | fmuls %f1, M7, %f11 ! FGM Group f9 available |
||
1123 | fadds %f5, %f9, %f5 ! FGA |
||
1124 | fmuls %f2, M8, %f12 ! FGM Group f6 available |
||
1125 | fmuls %f2, M9, %f13 ! FGM Group f10, f4 available |
||
1126 | fadds %f6, %f10, %f6 ! FGA |
||
1127 | fmuls %f2, M10, %f14 ! FGM Group f7 available |
||
1128 | fmuls %f2, M11, %f15 ! FGM Group f11, f5 available |
||
1129 | fadds %f7, %f11, %f7 ! FGA |
||
1130 | fmuls %f3, M12, %f8 ! FGM Group f12 available |
||
1131 | fadds %f4, %f12, %f4 ! FGA |
||
1132 | fmuls %f3, M13, %f9 ! FGM Group f13, f6 available |
||
1133 | fadds %f5, %f13, %f5 ! FGA |
||
1134 | fmuls %f3, M14, %f10 ! FGM Group f14 available |
||
1135 | fadds %f6, %f14, %f6 ! FGA |
||
1136 | fmuls %f3, M15, %f11 ! FGM Group f15, f7 available |
||
1137 | fadds %f7, %f15, %f7 ! FGA |
||
1138 | fadds %f4, %f8, %f4 ! FGA Group f8, f4 available |
||
1139 | st %f4, [%g2 + 0x00] ! LSU |
||
1140 | fadds %f5, %f9, %f5 ! FGA Group f9, f5 available |
||
1141 | st %f5, [%g2 + 0x04] ! LSU |
||
1142 | fadds %f6, %f10, %f6 ! FGA Group f10, f6 available |
||
1143 | st %f6, [%g2 + 0x08] ! LSU |
||
1144 | fadds %f7, %f11, %f7 ! FGA Group f11, f7 available |
||
1145 | st %f7, [%g2 + 0x0c] ! LSU |
||
1146 | cmp %o1, %g3 ! IEU1 |
||
1147 | bne 1b ! CTI |
||
1148 | add %g2, 0x10, %g2 ! IEU0 Group |
||
1149 | 2: |
||
1150 | ba __set_v4f_4 |
||
1151 | nop |
||
1152 | |||
1153 | |||
1154 | _mesa_sparc_transform_points4_identity: |
||
1155 | ld [%o2 + V4F_STRIDE], %o5 |
||
1156 | LDPTR [%o2 + V4F_START], %g1 |
||
1157 | LDPTR [%o0 + V4F_START], %g2 |
||
1158 | ld [%o2 + V4F_COUNT], %g3 |
||
1159 | |||
1160 | |||
1161 | st %g3, [%o0 + V4F_COUNT] |
||
1162 | be 2f |
||
1163 | clr %o1 |
||
1164 | |||
1165 | |||
1166 | ld [%g1 + 0x04], %f1 |
||
1167 | ld [%g1 + 0x08], %f2 |
||
1168 | add %o1, 1, %o1 |
||
1169 | ld [%g1 + 0x0c], %f3 |
||
1170 | add %g1, %o5, %g1 |
||
1171 | st %f0, [%g2 + 0x00] |
||
1172 | st %f1, [%g2 + 0x04] |
||
1173 | st %f2, [%g2 + 0x08] |
||
1174 | cmp %o1, %g3 |
||
1175 | st %f3, [%g2 + 0x0c] |
||
1176 | bne 1b |
||
1177 | add %g2, 0x10, %g2 |
||
1178 | 2: |
||
1179 | ba __set_v4f_4 |
||
1180 | nop |
||
1181 | |||
1182 | |||
1183 | _mesa_sparc_transform_points4_2d: |
||
1184 | ld [%o2 + V4F_STRIDE], %o5 |
||
1185 | LDPTR [%o2 + V4F_START], %g1 |
||
1186 | LDPTR [%o0 + V4F_START], %g2 |
||
1187 | ld [%o2 + V4F_COUNT], %g3 |
||
1188 | |||
1189 | |||
1190 | |||
1191 | |||
1192 | st %g3, [%o0 + V4F_COUNT] |
||
1193 | be 2f |
||
1194 | clr %o1 |
||
1195 | |||
1196 | |||
1197 | ld [%g1 + 0x04], %f1 ! LSU Group |
||
1198 | ld [%g1 + 0x08], %f2 ! LSU Group |
||
1199 | ld [%g1 + 0x0c], %f3 ! LSU Group |
||
1200 | add %o1, 1, %o1 ! IEU0 |
||
1201 | add %g1, %o5, %g1 ! IEU1 |
||
1202 | fmuls %f0, M0, %f4 ! FGM |
||
1203 | fmuls %f1, M4, %f8 ! FGM Group |
||
1204 | fmuls %f0, M1, %f5 ! FGM Group |
||
1205 | fmuls %f1, M5, %f9 ! FGM Group f4 available |
||
1206 | fmuls %f3, M12, %f12 ! FGM Group |
||
1207 | fmuls %f3, M13, %f13 ! FGM Group f8 available |
||
1208 | fadds %f4, %f8, %f4 ! FGA |
||
1209 | fadds %f5, %f9, %f5 ! FGA Group stall, f5, f9 available |
||
1210 | fadds %f4, %f12, %f4 ! FGA Group 2 cycle stall, f4, f12, f13 avail |
||
1211 | st %f4, [%g2 + 0x00] ! LSU |
||
1212 | fadds %f5, %f13, %f5 ! FGA Group f5 available |
||
1213 | st %f5, [%g2 + 0x04] ! LSU |
||
1214 | st %f2, [%g2 + 0x08] ! LSU Group |
||
1215 | st %f3, [%g2 + 0x0c] ! LSU Group |
||
1216 | cmp %o1, %g3 ! IEU1 |
||
1217 | bne 1b ! CTI |
||
1218 | add %g2, 0x10, %g2 ! IEU0 Group |
||
1219 | 2: |
||
1220 | ba __set_v4f_4 |
||
1221 | nop |
||
1222 | |||
1223 | |||
1224 | _mesa_sparc_transform_points4_2d_no_rot: |
||
1225 | ld [%o2 + V4F_STRIDE], %o5 |
||
1226 | LDPTR [%o2 + V4F_START], %g1 |
||
1227 | LDPTR [%o0 + V4F_START], %g2 |
||
1228 | ld [%o2 + V4F_COUNT], %g3 |
||
1229 | |||
1230 | |||
1231 | |||
1232 | |||
1233 | st %g3, [%o0 + V4F_COUNT] |
||
1234 | be 2f |
||
1235 | clr %o1 |
||
1236 | |||
1237 | |||
1238 | ld [%g1 + 0x04], %f1 |
||
1239 | ld [%g1 + 0x08], %f2 |
||
1240 | ld [%g1 + 0x0c], %f3 |
||
1241 | add %o1, 1, %o1 |
||
1242 | add %g1, %o5, %g1 |
||
1243 | fmuls %f0, M0, %f4 |
||
1244 | fmuls %f3, M12, %f8 |
||
1245 | fmuls %f1, M5, %f5 |
||
1246 | fmuls %f3, M13, %f9 |
||
1247 | fadds %f4, %f8, %f4 |
||
1248 | st %f4, [%g2 + 0x00] |
||
1249 | fadds %f5, %f9, %f5 |
||
1250 | st %f5, [%g2 + 0x04] |
||
1251 | st %f2, [%g2 + 0x08] |
||
1252 | st %f3, [%g2 + 0x0c] |
||
1253 | cmp %o1, %g3 |
||
1254 | bne 1b |
||
1255 | add %g2, 0x10, %g2 |
||
1256 | 2: |
||
1257 | ba __set_v4f_4 |
||
1258 | nop |
||
1259 | |||
1260 | |||
1261 | _mesa_sparc_transform_points4_3d: |
||
1262 | ld [%o2 + V4F_STRIDE], %o5 |
||
1263 | LDPTR [%o2 + V4F_START], %g1 |
||
1264 | LDPTR [%o0 + V4F_START], %g2 |
||
1265 | ld [%o2 + V4F_COUNT], %g3 |
||
1266 | |||
1267 | |||
1268 | |||
1269 | |||
1270 | st %g3, [%o0 + V4F_COUNT] |
||
1271 | be 2f |
||
1272 | clr %o1 |
||
1273 | |||
1274 | |||
1275 | ld [%g1 + 0x04], %f1 ! LSU Group |
||
1276 | ld [%g1 + 0x08], %f2 ! LSU Group |
||
1277 | ld [%g1 + 0x0c], %f3 ! LSU Group |
||
1278 | add %o1, 1, %o1 ! IEU0 |
||
1279 | add %g1, %o5, %g1 ! IEU1 |
||
1280 | fmuls %f0, M0, %f4 ! FGM |
||
1281 | fmuls %f1, M4, %f7 ! FGM Group |
||
1282 | fmuls %f0, M1, %f5 ! FGM Group |
||
1283 | fmuls %f1, M5, %f8 ! FGM Group |
||
1284 | fmuls %f0, M2, %f6 ! FGM Group f4 available |
||
1285 | fmuls %f1, M6, %f9 ! FGM Group f7 available |
||
1286 | fadds %f4, %f7, %f4 ! FGA |
||
1287 | fmuls %f2, M8, %f10 ! FGM Group f5 available |
||
1288 | fmuls %f2, M9, %f11 ! FGM Group f8 available |
||
1289 | fadds %f5, %f8, %f5 ! FGA |
||
1290 | fmuls %f2, M10, %f12 ! FGM Group f6 available |
||
1291 | fmuls %f3, M12, %f13 ! FGM Group f9, f4 available |
||
1292 | fadds %f6, %f9, %f6 ! FGA |
||
1293 | fmuls %f3, M13, %f14 ! FGM Group f10 available |
||
1294 | fadds %f4, %f10, %f4 ! FGA |
||
1295 | fmuls %f3, M14, %f15 ! FGM Group f11, f5 available |
||
1296 | fadds %f5, %f11, %f5 ! FGA |
||
1297 | fadds %f6, %f12, %f6 ! FGA Group stall, f12, f13, f6 available |
||
1298 | fadds %f4, %f13, %f4 ! FGA Group f14, f4 available |
||
1299 | st %f4, [%g2 + 0x00] ! LSU |
||
1300 | fadds %f5, %f14, %f5 ! FGA Group f15, f5 available |
||
1301 | st %f5, [%g2 + 0x04] ! LSU |
||
1302 | fadds %f6, %f15, %f6 ! FGA Group f6 available |
||
1303 | st %f6, [%g2 + 0x08] ! LSU |
||
1304 | st %f3, [%g2 + 0x0c] ! LSU Group |
||
1305 | cmp %o1, %g3 ! IEU1 |
||
1306 | bne 1b ! CTI |
||
1307 | add %g2, 0x10, %g2 ! IEU0 Group |
||
1308 | 2: |
||
1309 | ba __set_v4f_4 |
||
1310 | nop |
||
1311 | |||
1312 | |||
1313 | _mesa_sparc_transform_points4_3d_no_rot: |
||
1314 | ld [%o2 + V4F_STRIDE], %o5 |
||
1315 | LDPTR [%o2 + V4F_START], %g1 |
||
1316 | LDPTR [%o0 + V4F_START], %g2 |
||
1317 | ld [%o2 + V4F_COUNT], %g3 |
||
1318 | |||
1319 | |||
1320 | |||
1321 | |||
1322 | st %g3, [%o0 + V4F_COUNT] |
||
1323 | be 2f |
||
1324 | clr %o1 |
||
1325 | |||
1326 | |||
1327 | ld [%g1 + 0x04], %f1 ! LSU Group |
||
1328 | ld [%g1 + 0x08], %f2 ! LSU Group |
||
1329 | ld [%g1 + 0x0c], %f3 ! LSU Group |
||
1330 | add %o1, 1, %o1 ! IEU0 |
||
1331 | add %g1, %o5, %g1 ! IEU1 |
||
1332 | fmuls %f0, M0, %f4 ! FGM |
||
1333 | fmuls %f3, M12, %f7 ! FGM Group |
||
1334 | fmuls %f1, M5, %f5 ! FGM Group |
||
1335 | fmuls %f3, M13, %f8 ! FGM Group |
||
1336 | fmuls %f2, M10, %f6 ! FGM Group f4 available |
||
1337 | fmuls %f3, M14, %f9 ! FGM Group f7 available |
||
1338 | fadds %f4, %f7, %f4 ! FGA |
||
1339 | st %f4, [%g2 + 0x00] ! LSU |
||
1340 | fadds %f5, %f8, %f5 ! FGA Group stall, f5, f8 available |
||
1341 | st %f5, [%g2 + 0x04] ! LSU |
||
1342 | fadds %f6, %f9, %f6 ! FGA Group stall, f6, f9 available |
||
1343 | st %f6, [%g2 + 0x08] ! LSU |
||
1344 | st %f3, [%g2 + 0x0c] ! LSU Group |
||
1345 | cmp %o1, %g3 ! IEU1 |
||
1346 | bne 1b ! CTI |
||
1347 | add %g2, 0x10, %g2 ! IEU0 Group |
||
1348 | 2: |
||
1349 | ba __set_v4f_4 |
||
1350 | nop |
||
1351 | |||
1352 | |||
1353 | _mesa_sparc_transform_points4_perspective: |
||
1354 | ld [%o2 + V4F_STRIDE], %o5 |
||
1355 | LDPTR [%o2 + V4F_START], %g1 |
||
1356 | LDPTR [%o0 + V4F_START], %g2 |
||
1357 | ld [%o2 + V4F_COUNT], %g3 |
||
1358 | |||
1359 | |||
1360 | |||
1361 | |||
1362 | st %g3, [%o0 + V4F_COUNT] |
||
1363 | be 2f |
||
1364 | clr %o1 |
||
1365 | |||
1366 | |||
1367 | ld [%g1 + 0x04], %f1 ! LSU Group |
||
1368 | ld [%g1 + 0x08], %f2 ! LSU Group |
||
1369 | ld [%g1 + 0x0c], %f3 ! LSU Group |
||
1370 | add %o1, 1, %o1 ! IEU0 |
||
1371 | add %g1, %o5, %g1 ! IEU1 |
||
1372 | fmuls %f0, M0, %f4 ! FGM |
||
1373 | fmuls %f2, M8, %f7 ! FGM Group |
||
1374 | fmuls %f1, M5, %f5 ! FGM Group |
||
1375 | fmuls %f2, M9, %f8 ! FGM Group |
||
1376 | fmuls %f2, M10, %f6 ! FGM Group f4 available |
||
1377 | fmuls %f3, M14, %f9 ! FGM Group f7 available |
||
1378 | fadds %f4, %f7, %f4 ! FGA |
||
1379 | st %f4, [%g2 + 0x00] ! LSU |
||
1380 | fadds %f5, %f8, %f5 ! FGA Group stall, f5, f8 available |
||
1381 | st %f5, [%g2 + 0x04] ! LSU |
||
1382 | fadds %f6, %f9, %f6 ! FGA Group stall, f6, f9 available |
||
1383 | st %f6, [%g2 + 0x08] ! LSU |
||
1384 | fnegs %f2, %f7 ! FGA Group |
||
1385 | st %f7, [%g2 + 0x0c] ! LSU |
||
1386 | cmp %o1, %g3 ! IEU1 |
||
1387 | bne 1b ! CTI |
||
1388 | add %g2, 0x10, %g2 ! IEU0 Group |
||
1389 | 2: |
||
1390 | ba __set_v4f_4 |
||
1391 | nop |
||
1392 |