4 * 1) It would be nice if load/store double could be used
5 * at least for the matrix parts. I think for the matrices
6 * it is safe, but for the vertices it probably is not due to
7 * things like glInterleavedArrays etc.
9 * UPDATE: Trying this now in sparc_matrix.h -DaveM_990624
11 * 2) One extremely slick trick would be if we could enclose
12 * groups of xform calls on the same vertices such that
13 * we just load the matrix into f16-->f31 before the calls
14 * and then we would not have to do them here. This may be
15 * tricky and not much of a gain though.
18 #include "sparc_matrix.h"
20 #if defined(SVR4) || defined(__SVR4) || defined(__svr4__) || defined(__arch64__)
21 /* Solaris requires this for 64-bit. */
22 .register %g2, #scratch
23 .register %g3, #scratch
30 ld [%o0 + V4F_FLAGS], %g2
32 st %g1, [%o0 + V4F_SIZE]
33 or %g2, VEC_SIZE_1, %g2
35 st %g2, [%o0 + V4F_FLAGS]
37 ld [%o0 + V4F_FLAGS], %g2
39 st %g1, [%o0 + V4F_SIZE]
40 or %g2, VEC_SIZE_2, %g2
42 st %g2, [%o0 + V4F_FLAGS]
44 ld [%o0 + V4F_FLAGS], %g2
46 st %g1, [%o0 + V4F_SIZE]
47 or %g2, VEC_SIZE_3, %g2
49 st %g2, [%o0 + V4F_FLAGS]
51 ld [%o0 + V4F_FLAGS], %g2
53 st %g1, [%o0 + V4F_SIZE]
54 or %g2, VEC_SIZE_4, %g2
56 st %g2, [%o0 + V4F_FLAGS]
58 /* First the raw versions. */
60 .globl _mesa_sparc_transform_points1_general
61 _mesa_sparc_transform_points1_general:
62 ld [%o2 + V4F_STRIDE], %o5
63 LDPTR [%o2 + V4F_START], %g1
64 LDPTR [%o0 + V4F_START], %g2
65 ld [%o2 + V4F_COUNT], %g3
67 LDMATRIX_0_1_2_3_12_13_14_15(%o1)
70 st %g3, [%o0 + V4F_COUNT]
77 1: ld [%g1 + 0x00], %f0 ! LSU Group
78 add %g1, %o5, %g1 ! IEU0
79 ld [%g1 + 0x00], %f8 ! LSU Group
80 add %o1, 2, %o1 ! IEU0
81 add %g1, %o5, %g1 ! IEU1
82 fmuls %f0, M0, %f1 ! FGM Group 1-cycle stall on %f0
83 fmuls %f0, M1, %f2 ! FGM Group
84 fmuls %f0, M2, %f3 ! FGM Group
85 fmuls %f0, M3, %f4 ! FGM Group
86 fmuls %f8, M0, %f9 ! FGM Group f1 available
87 fadds %f1, M12, %f1 ! FGA
88 st %f1, [%g2 + 0x00] ! LSU
89 fmuls %f8, M1, %f10 ! FGM Group f2 available
90 fadds %f2, M13, %f2 ! FGA
91 st %f2, [%g2 + 0x04] ! LSU
92 fmuls %f8, M2, %f11 ! FGM Group f3 available
93 fadds %f3, M14, %f3 ! FGA
94 st %f3, [%g2 + 0x08] ! LSU
95 fmuls %f8, M3, %f12 ! FGM Group f4 available
96 fadds %f4, M15, %f4 ! FGA
97 st %f4, [%g2 + 0x0c] ! LSU
98 fadds %f9, M12, %f9 ! FGA Group f9 available
99 st %f9, [%g2 + 0x10] ! LSU
100 fadds %f10, M13, %f10 ! FGA Group f10 available
101 st %f10, [%g2 + 0x14] ! LSU
102 fadds %f11, M14, %f11 ! FGA Group f11 available
103 st %f11, [%g2 + 0x18] ! LSU
104 fadds %f12, M15, %f12 ! FGA Group f12 available
105 st %f12, [%g2 + 0x1c] ! LSU
108 add %g2, 0x20, %g2 ! IEU0 Group
114 2: ld [%g1 + 0x00], %f0 ! LSU Group
115 fmuls %f0, M0, %f1 ! FGM Group 1-cycle stall on %f0
116 fmuls %f0, M1, %f2 ! FGM Group
117 fmuls %f0, M2, %f3 ! FGM Group
118 fmuls %f0, M3, %f4 ! FGM Group
119 fadds %f1, M12, %f1 ! FGA Group
120 st %f1, [%g2 + 0x00] ! LSU
121 fadds %f2, M13, %f2 ! FGA Group
122 st %f2, [%g2 + 0x04] ! LSU
123 fadds %f3, M14, %f3 ! FGA Group
124 st %f3, [%g2 + 0x08] ! LSU
125 fadds %f4, M15, %f4 ! FGA Group
126 st %f4, [%g2 + 0x0c] ! LSU
132 .globl _mesa_sparc_transform_points1_identity
133 _mesa_sparc_transform_points1_identity:
136 ld [%o2 + V4F_STRIDE], %o5
137 LDPTR [%o2 + V4F_START], %g1
138 LDPTR [%o0 + V4F_START], %g2
139 ld [%o2 + V4F_COUNT], %g3
142 st %g3, [%o0 + V4F_COUNT]
149 1: ld [%g1 + 0x00], %f0 ! LSU Group
150 add %g1, %o5, %g1 ! IEU0
151 ld [%g1 + 0x00], %f1 ! LSU Group
152 add %o1, 2, %o1 ! IEU0
153 add %g1, %o5, %g1 ! IEU1
154 st %f0, [%g2 + 0x00] ! LSU Group
156 st %f1, [%g2 + 0x10] ! LSU Group
158 add %g2, 0x20, %g2 ! IEU0
164 2: ld [%g1 + 0x00], %f0
175 .globl _mesa_sparc_transform_points1_2d
176 _mesa_sparc_transform_points1_2d:
177 ld [%o2 + V4F_STRIDE], %o5
178 LDPTR [%o2 + V4F_START], %g1
179 LDPTR [%o0 + V4F_START], %g2
180 ld [%o2 + V4F_COUNT], %g3
182 LDMATRIX_0_1_12_13(%o1)
185 st %g3, [%o0 + V4F_COUNT]
192 1: ld [%g1 + 0x00], %f0 ! LSU Group
193 add %g1, %o5, %g1 ! IEU0
194 ld [%g1 + 0x00], %f8 ! LSU Group
195 add %o1, 2, %o1 ! IEU0
196 add %g1, %o5, %g1 ! IEU1
197 fmuls %f0, M0, %f1 ! FGM Group
198 fmuls %f0, M1, %f2 ! FGM Group
199 fmuls %f8, M0, %f9 ! FGM Group
200 fmuls %f8, M1, %f10 ! FGM Group
201 fadds %f1, M12, %f3 ! FGA Group f1 available
202 st %f3, [%g2 + 0x00] ! LSU
203 fadds %f2, M13, %f4 ! FGA Group f2 available
204 st %f4, [%g2 + 0x04] ! LSU
205 fadds %f9, M12, %f11 ! FGA Group f9 available
206 st %f11, [%g2 + 0x10] ! LSU
207 fadds %f10, M13, %f12 ! FGA Group f10 available
208 st %f12, [%g2 + 0x14] ! LSU
211 add %g2, 0x20, %g2 ! IEU0 Group
217 2: ld [%g1 + 0x00], %f0
229 .globl _mesa_sparc_transform_points1_2d_no_rot
230 _mesa_sparc_transform_points1_2d_no_rot:
231 ld [%o2 + V4F_STRIDE], %o5
232 LDPTR [%o2 + V4F_START], %g1
233 LDPTR [%o0 + V4F_START], %g2
234 ld [%o2 + V4F_COUNT], %g3
236 LDMATRIX_0_12_13(%o1)
239 st %g3, [%o0 + V4F_COUNT]
246 1: ld [%g1 + 0x00], %f0 ! LSU Group
247 add %g1, %o5, %g1 ! IEU0
248 ld [%g1 + 0x00], %f4 ! LSU Group
249 add %o1, 2, %o1 ! IEU0
250 add %g1, %o5, %g1 ! IEU1
251 fmuls %f0, M0, %f1 ! FGM Group
252 fmuls %f4, M0, %f5 ! FGM Group
253 fadds %f1, M12, %f3 ! FGA Group, 2 cycle stall, f1 available
254 st %f3, [%g2 + 0x00] ! LSU
255 st M13, [%g2 + 0x04] ! LSU Group, f5 available
256 fadds %f5, M12, %f6 ! FGA
257 st %f6, [%g2 + 0x10] ! LSU Group
258 st M13, [%g2 + 0x14] ! LSU Group
261 add %g2, 0x20, %g2 ! IEU0 Group
267 2: ld [%g1 + 0x00], %f0
277 .globl _mesa_sparc_transform_points1_3d
278 _mesa_sparc_transform_points1_3d:
279 ld [%o2 + V4F_STRIDE], %o5
280 LDPTR [%o2 + V4F_START], %g1
281 LDPTR [%o0 + V4F_START], %g2
282 ld [%o2 + V4F_COUNT], %g3
284 LDMATRIX_0_1_2_12_13_14(%o1)
287 st %g3, [%o0 + V4F_COUNT]
294 1: ld [%g1 + 0x00], %f0 ! LSU Group
295 add %g1, %o5, %g1 ! IEU0
296 ld [%g1 + 0x00], %f4 ! LSU Group
297 add %o1, 2, %o1 ! IEU0
298 add %g1, %o5, %g1 ! IEU1
299 fmuls %f0, M0, %f1 ! FGM Group
300 fmuls %f0, M1, %f2 ! FGM Group
301 fmuls %f0, M2, %f3 ! FGM Group
302 fmuls %f4, M0, %f5 ! FGM Group
303 fadds %f1, M12, %f1 ! FGA Group, f1 available
304 st %f1, [%g2 + 0x00] ! LSU
305 fmuls %f4, M1, %f6 ! FGM
306 fadds %f2, M13, %f2 ! FGA Group, f2 available
307 st %f2, [%g2 + 0x04] ! LSU
308 fmuls %f4, M2, %f7 ! FGM
309 fadds %f3, M14, %f3 ! FGA Group, f3 available
310 st %f3, [%g2 + 0x08] ! LSU
311 fadds %f5, M12, %f5 ! FGA Group, f5 available
312 st %f5, [%g2 + 0x10] ! LSU
313 fadds %f6, M13, %f6 ! FGA Group, f6 available
314 st %f6, [%g2 + 0x14] ! LSU
315 fadds %f7, M14, %f7 ! FGA Group, f7 available
316 st %f7, [%g2 + 0x18] ! LSU
319 add %g2, 0x20, %g2 ! IEU0 Group
325 2: ld [%g1 + 0x00], %f0
340 .globl _mesa_sparc_transform_points1_3d_no_rot
341 _mesa_sparc_transform_points1_3d_no_rot:
342 ld [%o2 + V4F_STRIDE], %o5
343 LDPTR [%o2 + V4F_START], %g1
344 LDPTR [%o0 + V4F_START], %g2
345 ld [%o2 + V4F_COUNT], %g3
347 LDMATRIX_0_12_13_14(%o1)
350 st %g3, [%o0 + V4F_COUNT]
357 1: ld [%g1 + 0x00], %f0 ! LSU Group
358 add %g1, %o5, %g1 ! IEU0
359 ld [%g1 + 0x00], %f2 ! LSU Group
360 add %o1, 2, %o1 ! IEU0
361 add %g1, %o5, %g1 ! IEU1
362 fmuls %f0, M0, %f1 ! FGM Group
363 fmuls %f2, M0, %f3 ! FGM Group
364 fadds %f1, M12, %f1 ! FGA Group, 2 cycle stall, f1 available
365 st %f1, [%g2 + 0x00] ! LSU
366 fadds %f3, M12, %f3 ! FGA Group, f3 available
367 st M13, [%g2 + 0x04] ! LSU
368 st M14, [%g2 + 0x08] ! LSU Group
369 st %f3, [%g2 + 0x10] ! LSU Group
370 st M13, [%g2 + 0x14] ! LSU Group
371 st M14, [%g2 + 0x18] ! LSU Group
374 add %g2, 0x20, %g2 ! IEU0 Group
380 2: ld [%g1 + 0x00], %f0
391 .globl _mesa_sparc_transform_points1_perspective
392 _mesa_sparc_transform_points1_perspective:
393 ld [%o2 + V4F_STRIDE], %o5
394 LDPTR [%o2 + V4F_START], %g1
395 LDPTR [%o0 + V4F_START], %g2
396 ld [%o2 + V4F_COUNT], %g3
401 st %g3, [%o0 + V4F_COUNT]
408 1: ld [%g1 + 0x00], %f0 ! LSU Group
409 add %g1, %o5, %g1 ! IEU0
410 ld [%g1 + 0x00], %f2 ! LSU Group
411 add %o1, 2, %o1 ! IEU0
412 add %g1, %o5, %g1 ! IEU1
413 fmuls %f0, M0, %f1 ! FGM Group
414 st %f1, [%g2 + 0x00] ! LSU
415 fmuls %f2, M0, %f3 ! FGM Group
416 st %g0, [%g2 + 0x04] ! LSU
417 st M14, [%g2 + 0x08] ! LSU Group
418 st %g0, [%g2 + 0x0c] ! LSU Group
419 st %f3, [%g2 + 0x10] ! LSU Group
420 st %g0, [%g2 + 0x14] ! LSU Group
421 st M14, [%g2 + 0x18] ! LSU Group
422 st %g0, [%g2 + 0x1c] ! LSU Group
425 add %g2, 0x20, %g2 ! IEU0 Group
431 2: ld [%g1 + 0x00], %f0
442 .globl _mesa_sparc_transform_points2_general
443 _mesa_sparc_transform_points2_general:
444 ld [%o2 + V4F_STRIDE], %o5
445 LDPTR [%o2 + V4F_START], %g1
446 LDPTR [%o0 + V4F_START], %g2
447 ld [%o2 + V4F_COUNT], %g3
449 LDMATRIX_0_1_2_3_4_5_6_7_12_13_14_15(%o1)
452 st %g3, [%o0 + V4F_COUNT]
456 1: ld [%g1 + 0x00], %f0 ! LSU Group
457 ld [%g1 + 0x04], %f1 ! LSU Group
458 add %o1, 1, %o1 ! IEU0
459 add %g1, %o5, %g1 ! IEU1
460 fmuls %f0, M0, %f2 ! FGM Group
461 fmuls %f0, M1, %f3 ! FGM Group
462 fmuls %f0, M2, %f4 ! FGM Group
463 fmuls %f0, M3, %f5 ! FGM Group
464 fadds %f2, M12, %f2 ! FGA Group f2 available
465 fmuls %f1, M4, %f6 ! FGM
466 fadds %f3, M13, %f3 ! FGA Group f3 available
467 fmuls %f1, M5, %f7 ! FGM
468 fadds %f4, M14, %f4 ! FGA Group f4 available
469 fmuls %f1, M6, %f8 ! FGM
470 fadds %f5, M15, %f5 ! FGA Group f5 available
471 fmuls %f1, M7, %f9 ! FGM
472 fadds %f2, %f6, %f2 ! FGA Group f6 available
473 st %f2, [%g2 + 0x00] ! LSU
474 fadds %f3, %f7, %f3 ! FGA Group f7 available
475 st %f3, [%g2 + 0x04] ! LSU
476 fadds %f4, %f8, %f4 ! FGA Group f8 available
477 st %f4, [%g2 + 0x08] ! LSU
478 fadds %f5, %f9, %f5 ! FGA Group f9 available
479 st %f5, [%g2 + 0x0c] ! LSU
482 add %g2, 0x10, %g2 ! IEU0 Group
487 .globl _mesa_sparc_transform_points2_identity
488 _mesa_sparc_transform_points2_identity:
491 ld [%o2 + V4F_STRIDE], %o5
492 LDPTR [%o2 + V4F_START], %g1
493 LDPTR [%o0 + V4F_START], %g2
494 ld [%o2 + V4F_COUNT], %g3
497 st %g3, [%o0 + V4F_COUNT]
501 1: ld [%g1 + 0x00], %f0 ! LSU Group
502 add %o1, 1, %o1 ! IEU0
503 ld [%g1 + 0x04], %f1 ! LSU Group
504 add %g1, %o5, %g1 ! IEU0
506 st %f0, [%g2 + 0x00] ! LSU Group
507 st %f1, [%g2 + 0x04] ! LSU Group
509 add %g2, 0x10, %g2 ! IEU0
517 .globl _mesa_sparc_transform_points2_2d
518 _mesa_sparc_transform_points2_2d:
519 ld [%o2 + V4F_STRIDE], %o5
520 LDPTR [%o2 + V4F_START], %g1
521 LDPTR [%o0 + V4F_START], %g2
522 ld [%o2 + V4F_COUNT], %g3
524 LDMATRIX_0_1_4_5_12_13(%o1)
527 st %g3, [%o0 + V4F_COUNT]
534 1: ld [%g1 + 0x00], %f0 ! LSU Group
535 ld [%g1 + 0x04], %f1 ! LSU Group
536 add %o1, 2, %o1 ! IEU0
537 add %g1, %o5, %g1 ! IEU1
538 fmuls %f0, M0, %f2 ! FGM
539 ld [%g1 + 0x00], %f8 ! LSU Group
540 fmuls %f0, M1, %f3 ! FGM
541 ld [%g1 + 0x04], %f9 ! LSU Group
542 fmuls %f1, M4, %f6 ! FGM
543 fmuls %f1, M5, %f7 ! FGM Group
544 add %g1, %o5, %g1 ! IEU0
545 fmuls %f8, M0, %f10 ! FGM Group f2 available
546 fadds %f2, M12, %f2 ! FGA
547 fmuls %f8, M1, %f11 ! FGM Group f3 available
548 fadds %f3, M13, %f3 ! FGA
549 fmuls %f9, M4, %f12 ! FGM Group
550 fmuls %f9, M5, %f13 ! FGM Group
551 fadds %f10, M12, %f10 ! FGA Group f2, f10 available
552 fadds %f2, %f6, %f2 ! FGA Group f3, f11 available
553 st %f2, [%g2 + 0x00] ! LSU
554 fadds %f11, M13, %f11 ! FGA Group f12 available
555 fadds %f3, %f7, %f3 ! FGA Group f13 available
556 st %f3, [%g2 + 0x04] ! LSU
557 fadds %f10, %f12, %f10 ! FGA Group f10 available
558 st %f10, [%g2 + 0x10] ! LSU
559 fadds %f11, %f13, %f11 ! FGA Group f11 available
560 st %f11, [%g2 + 0x14] ! LSU
563 add %g2, 0x20, %g2 ! IEU0 Group
569 2: ld [%g1 + 0x00], %f0 ! LSU Group
570 ld [%g1 + 0x04], %f1 ! LSU Group
571 fmuls %f0, M0, %f2 ! FGM Group
572 fmuls %f0, M1, %f3 ! FGM Group
573 fmuls %f1, M4, %f6 ! FGM Group
574 fmuls %f1, M5, %f7 ! FGM Group
575 fadds %f2, M12, %f2 ! FGA Group f2 available
576 fadds %f3, M13, %f3 ! FGA Group f3 available
577 fadds %f2, %f6, %f2 ! FGA Group 2 cycle stall, f2 available
578 st %f2, [%g2 + 0x00] ! LSU
579 fadds %f3, %f7, %f3 ! FGA Group f3 available
580 st %f3, [%g2 + 0x04] ! LSU
586 .globl _mesa_sparc_transform_points2_2d_no_rot
587 _mesa_sparc_transform_points2_2d_no_rot:
588 ld [%o2 + V4F_STRIDE], %o5
589 LDPTR [%o2 + V4F_START], %g1
590 LDPTR [%o0 + V4F_START], %g2
591 ld [%o2 + V4F_COUNT], %g3
593 LDMATRIX_0_5_12_13(%o1)
596 st %g3, [%o0 + V4F_COUNT]
603 1: ld [%g1 + 0x00], %f0 ! LSU Group
604 ld [%g1 + 0x04], %f1 ! LSU Group
605 add %o1, 2, %o1 ! IEU0
606 add %g1, %o5, %g1 ! IEU1
607 ld [%g1 + 0x00], %f4 ! LSU Group
608 fmuls %f0, M0, %f2 ! FGM
609 ld [%g1 + 0x04], %f5 ! LSU Group
610 fmuls %f1, M5, %f3 ! FGM
611 fmuls %f4, M0, %f6 ! FGM Group
612 add %g1, %o5, %g1 ! IEU0
613 fmuls %f5, M5, %f7 ! FGM Group
614 fadds %f2, M12, %f2 ! FGA Group f2 available
615 st %f2, [%g2 + 0x00] ! LSU
616 fadds %f3, M13, %f3 ! FGA Group f3 available
617 st %f3, [%g2 + 0x04] ! LSU
618 fadds %f6, M12, %f6 ! FGA Group f6 available
619 st %f6, [%g2 + 0x10] ! LSU
620 fadds %f7, M13, %f7 ! FGA Group f7 available
621 st %f7, [%g2 + 0x14] ! LSU
624 add %g2, 0x20, %g2 ! IEU0 Group
630 2: ld [%g1 + 0x00], %f0 ! LSU Group
631 ld [%g1 + 0x04], %f1 ! LSU Group
632 fmuls %f0, M0, %f2 ! FGM Group
633 fmuls %f1, M5, %f3 ! FGM Group
634 fadds %f2, M12, %f2 ! FGA Group, 2 cycle stall, f2 available
635 st %f2, [%g2 + 0x00] ! LSU
636 fadds %f3, M13, %f3 ! FGA Group f3 available
637 st %f3, [%g2 + 0x04] ! LSU
643 /* orig: 12 cycles */
644 .globl _mesa_sparc_transform_points2_3d
645 _mesa_sparc_transform_points2_3d:
646 ld [%o2 + V4F_STRIDE], %o5
647 ld [%o2 + V4F_START], %g1
648 ld [%o0 + V4F_START], %g2
649 ld [%o2 + V4F_COUNT], %g3
651 LDMATRIX_0_1_2_3_4_5_6_12_13_14(%o1)
654 st %g3, [%o0 + V4F_COUNT]
661 1: ld [%g1 + 0x00], %f0 ! LSU Group
662 ld [%g1 + 0x04], %f1 ! LSU Group
663 add %o1, 2, %o1 ! IEU0
664 add %g1, %o5, %g1 ! IEU1
665 ld [%g1 + 0x00], %f9 ! LSU Group
666 fmuls %f0, M0, %f2 ! FGM
667 ld [%g1 + 0x04], %f10 ! LSU Group
668 fmuls %f0, M1, %f3 ! FGM
669 fmuls %f0, M2, %f4 ! FGM Group
670 add %g1, %o5, %g1 ! IEU0
671 fmuls %f1, M4, %f6 ! FGM Group
672 fmuls %f1, M5, %f7 ! FGM Group f2 available
673 fadds %f2, M12, %f2 ! FGA
674 fmuls %f1, M6, %f8 ! FGM Group f3 available
675 fadds %f3, M13, %f3 ! FGA
676 fmuls %f9, M0, %f11 ! FGM Group f4 available
677 fadds %f4, M14, %f4 ! FGA
678 fmuls %f9, M1, %f12 ! FGM Group f6 available
679 fmuls %f9, M2, %f13 ! FGM Group f2, f7 available
680 fadds %f2, %f6, %f2 ! FGA
681 st %f2, [%g2 + 0x00] ! LSU
682 fmuls %f10, M4, %f14 ! FGM Group f3, f8 available
683 fadds %f3, %f7, %f3 ! FGA
684 st %f3, [%g2 + 0x04] ! LSU
685 fmuls %f10, M5, %f15 ! FGM Group f4, f11 available
686 fadds %f11, M12, %f11 ! FGA
687 fmuls %f10, M6, %f0 ! FGM Group f12 available
688 fadds %f12, M13, %f12 ! FGA
689 fadds %f13, M14, %f13 ! FGA Group f13 available
690 fadds %f4, %f8, %f4 ! FGA Group f14 available
691 st %f4, [%g2 + 0x08] ! LSU
692 fadds %f11, %f14, %f11 ! FGA Group f15, f11 available
693 st %f11, [%g2 + 0x10] ! LSU
694 fadds %f12, %f15, %f12 ! FGA Group f0, f12 available
695 st %f12, [%g2 + 0x14] ! LSU
696 fadds %f13, %f0, %f13 ! FGA Group f13 available
697 st %f13, [%g2 + 0x18] ! LSU
701 add %g2, 0x20, %g2 ! IEU0 Group
707 2: ld [%g1 + 0x00], %f0 ! LSU Group
708 ld [%g1 + 0x04], %f1 ! LSU Group
709 fmuls %f0, M0, %f2 ! FGM Group
710 fmuls %f0, M1, %f3 ! FGM Group
711 fmuls %f0, M2, %f4 ! FGM Group
712 fmuls %f1, M4, %f6 ! FGM Group
713 fmuls %f1, M5, %f7 ! FGM Group f2 available
714 fadds %f2, M12, %f2 ! FGA
715 fmuls %f1, M6, %f8 ! FGM Group f3 available
716 fadds %f3, M13, %f3 ! FGA
717 fadds %f4, M14, %f4 ! FGA Group f4 available
718 fadds %f2, %f6, %f2 ! FGA Group stall, f2, f6, f7 available
719 st %f2, [%g2 + 0x00] ! LSU
720 fadds %f3, %f7, %f3 ! FGA Group f3, f8 available
721 st %f3, [%g2 + 0x04] ! LSU
722 fadds %f4, %f8, %f4 ! FGA Group f4 available
723 st %f4, [%g2 + 0x08] ! LSU
729 .globl _mesa_sparc_transform_points2_3d_no_rot
730 _mesa_sparc_transform_points2_3d_no_rot:
731 ld [%o2 + V4F_STRIDE], %o5
732 LDPTR [%o2 + V4F_START], %g1
733 LDPTR [%o0 + V4F_START], %g2
734 ld [%o2 + V4F_COUNT], %g3
736 LDMATRIX_0_5_12_13_14(%o1)
739 st %g3, [%o0 + V4F_COUNT]
746 1: ld [%g1 + 0x00], %f0 ! LSU Group
747 ld [%g1 + 0x04], %f1 ! LSU Group
748 add %o3, 2, %o3 ! IEU0
749 add %g1, %o5, %g1 ! IEU1
750 ld [%g1 + 0x00], %f4 ! LSU Group
751 fmuls %f0, M0, %f2 ! FGM
752 ld [%g1 + 0x04], %f5 ! LSU Group
753 fmuls %f1, M5, %f3 ! FGM
754 fmuls %f4, M0, %f6 ! FGM Group
755 add %g1, %o5, %g1 ! IEU0
756 fmuls %f5, M5, %f7 ! FGM Group
757 fadds %f2, M12, %f2 ! FGA Group f2 available
758 st %f2, [%g2 + 0x00] ! LSU
759 fadds %f3, M13, %f3 ! FGA Group f3 available
760 st %f3, [%g2 + 0x04] ! LSU
761 fadds %f6, M12, %f6 ! FGA Group f6 available
762 st M14, [%g2 + 0x08] ! LSU
763 fadds %f7, M13, %f7 ! FGA Group f7 available
764 st %f6, [%g2 + 0x10] ! LSU
765 st %f7, [%g2 + 0x14] ! LSU Group
766 st M14, [%g2 + 0x18] ! LSU Group
769 add %g2, 0x20, %g2 ! IEU0 Group
775 2: ld [%g1 + 0x00], %f0 ! LSU Group
776 ld [%g1 + 0x04], %f1 ! LSU Group
777 fmuls %f0, M0, %f2 ! FGM Group
778 fmuls %f1, M5, %f3 ! FGM Group
779 fadds %f2, M12, %f2 ! FGA Group, 2 cycle stall, f2 available
780 st %f2, [%g2 + 0x00] ! LSU
781 fadds %f3, M13, %f3 ! FGA Group f3 available
782 st %f3, [%g2 + 0x04] ! LSU
783 st M14, [%g2 + 0x08] ! LSU Group
785 3: ld [%o1 + (14 * 0x4)], %g3
792 .globl _mesa_sparc_transform_points2_perspective
793 _mesa_sparc_transform_points2_perspective:
794 ld [%o2 + V4F_STRIDE], %o5
795 LDPTR [%o2 + V4F_START], %g1
796 LDPTR [%o0 + V4F_START], %g2
797 ld [%o2 + V4F_COUNT], %g3
802 st %g3, [%o0 + V4F_COUNT]
806 1: ld [%g1 + 0x00], %f0
823 .globl _mesa_sparc_transform_points3_general
824 _mesa_sparc_transform_points3_general:
825 ld [%o2 + V4F_STRIDE], %o5
826 LDPTR [%o2 + V4F_START], %g1
827 LDPTR [%o0 + V4F_START], %g2
828 ld [%o2 + V4F_COUNT], %g3
830 LDMATRIX_0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15(%o1)
833 st %g3, [%o0 + V4F_COUNT]
837 1: ld [%g1 + 0x00], %f0 ! LSU Group
838 ld [%g1 + 0x04], %f1 ! LSU Group
839 ld [%g1 + 0x08], %f2 ! LSU Group
840 add %o1, 1, %o1 ! IEU0
841 add %g1, %o5, %g1 ! IEU1
842 fmuls %f0, M0, %f3 ! FGM
843 fmuls %f1, M4, %f7 ! FGM Group
844 fmuls %f0, M1, %f4 ! FGM Group
845 fmuls %f1, M5, %f8 ! FGM Group
846 fmuls %f0, M2, %f5 ! FGM Group f3 available
847 fmuls %f1, M6, %f9 ! FGM Group f7 available
848 fadds %f3, %f7, %f3 ! FGA
849 fmuls %f0, M3, %f6 ! FGM Group f4 available
850 fmuls %f1, M7, %f10 ! FGM Group f8 available
851 fadds %f4, %f8, %f4 ! FGA
852 fmuls %f2, M8, %f7 ! FGM Group f5 available
853 fmuls %f2, M9, %f8 ! FGM Group f9,f3 available
854 fadds %f5, %f9, %f5 ! FGA
855 fmuls %f2, M10, %f9 ! FGM Group f6 available
856 fadds %f6, %f10, %f6 ! FGA Group f10,f4 available
857 fmuls %f2, M11, %f10 ! FGM
858 fadds %f3, M12, %f3 ! FGA Group f7 available
859 fadds %f4, M13, %f4 ! FGA Group f8,f5 available
860 fadds %f5, M14, %f5 ! FGA Group f9 available
861 fadds %f6, M15, %f6 ! FGA Group f10,f6 available
862 fadds %f3, %f7, %f3 ! FGA Group f3 available
863 st %f3, [%g2 + 0x00] ! LSU
864 fadds %f4, %f8, %f4 ! FGA Group f4 available
865 st %f4, [%g2 + 0x04] ! LSU
866 fadds %f5, %f9, %f5 ! FGA Group f5 available
867 st %f5, [%g2 + 0x08] ! LSU
868 fadds %f6, %f10, %f6 ! FGA Group f6 available
869 st %f6, [%g2 + 0x0c] ! LSU
872 add %g2, 0x10, %g2 ! IEU0 Group
877 .globl _mesa_sparc_transform_points3_identity
878 _mesa_sparc_transform_points3_identity:
879 ld [%o2 + V4F_STRIDE], %o5
880 LDPTR [%o2 + V4F_START], %g1
881 LDPTR [%o0 + V4F_START], %g2
882 ld [%o2 + V4F_COUNT], %g3
885 st %g3, [%o0 + V4F_COUNT]
889 1: ld [%g1 + 0x00], %f0
904 .globl _mesa_sparc_transform_points3_2d
905 _mesa_sparc_transform_points3_2d:
906 ld [%o2 + V4F_STRIDE], %o5
907 LDPTR [%o2 + V4F_START], %g1
908 LDPTR [%o0 + V4F_START], %g2
909 ld [%o2 + V4F_COUNT], %g3
911 LDMATRIX_0_1_4_5_12_13(%o1)
914 st %g3, [%o0 + V4F_COUNT]
918 1: ld [%g1 + 0x00], %f0 ! LSU Group
919 ld [%g1 + 0x04], %f1 ! LSU Group
920 ld [%g1 + 0x08], %f2 ! LSU Group
921 add %o1, 1, %o1 ! IEU0
922 add %g1, %o5, %g1 ! IEU1
923 fmuls %f0, M0, %f3 ! FGM
924 fmuls %f0, M1, %f4 ! FGM Group
925 fmuls %f1, M4, %f6 ! FGM Group
926 fmuls %f1, M5, %f7 ! FGM Group
927 fadds %f3, M12, %f3 ! FGA Group f3 available
928 fadds %f4, M13, %f4 ! FGA Group f4 available
929 fadds %f3, %f6, %f3 ! FGA Group f6 available
930 st %f3, [%g2 + 0x00] ! LSU
931 fadds %f4, %f7, %f4 ! FGA Group f7 available
932 st %f4, [%g2 + 0x04] ! LSU
933 st %f2, [%g2 + 0x08] ! LSU Group
936 add %g2, 0x10, %g2 ! IEU0 Group
941 .globl _mesa_sparc_transform_points3_2d_no_rot
942 _mesa_sparc_transform_points3_2d_no_rot:
943 ld [%o2 + V4F_STRIDE], %o5
944 LDPTR [%o2 + V4F_START], %g1
945 LDPTR [%o0 + V4F_START], %g2
946 ld [%o2 + V4F_COUNT], %g3
948 LDMATRIX_0_5_12_13(%o1)
951 st %g3, [%o0 + V4F_COUNT]
955 1: ld [%g1 + 0x00], %f0 ! LSU Group
956 ld [%g1 + 0x04], %f1 ! LSU Group
957 ld [%g1 + 0x08], %f2 ! LSU Group
958 add %o1, 1, %o1 ! IEU0
959 add %g1, %o5, %g1 ! IEU1
960 fmuls %f0, M0, %f3 ! FGM
961 fmuls %f1, M5, %f4 ! FGM Group
962 st %f2, [%g2 + 0x08] ! LSU
963 fadds %f3, M12, %f3 ! FGA Group
964 st %f3, [%g2 + 0x00] ! LSU
965 fadds %f4, M13, %f4 ! FGA Group
966 st %f4, [%g2 + 0x04] ! LSU
969 add %g2, 0x10, %g2 ! IEU0 Group
974 .globl _mesa_sparc_transform_points3_3d
975 _mesa_sparc_transform_points3_3d:
976 ld [%o2 + V4F_STRIDE], %o5
977 LDPTR [%o2 + V4F_START], %g1
978 LDPTR [%o0 + V4F_START], %g2
979 ld [%o2 + V4F_COUNT], %g3
981 LDMATRIX_0_1_2_4_5_6_8_9_10_12_13_14(%o1)
984 st %g3, [%o0 + V4F_COUNT]
988 1: ld [%g1 + 0x00], %f0 ! LSU Group
989 ld [%g1 + 0x04], %f1 ! LSU Group
990 ld [%g1 + 0x08], %f2 ! LSU Group
991 add %o1, 1, %o1 ! IEU0
992 add %g1, %o5, %g1 ! IEU1
993 fmuls %f0, M0, %f3 ! FGM
994 fmuls %f1, M4, %f6 ! FGM Group
995 fmuls %f0, M1, %f4 ! FGM Group
996 fmuls %f1, M5, %f7 ! FGM Group
997 fmuls %f0, M2, %f5 ! FGM Group f3 available
998 fmuls %f1, M6, %f8 ! FGM Group f6 available
999 fadds %f3, %f6, %f3 ! FGA
1000 fmuls %f2, M8, %f9 ! FGM Group f4 available
1001 fmuls %f2, M9, %f10 ! FGM Group f7 available
1002 fadds %f4, %f7, %f4 ! FGA
1003 fmuls %f2, M10, %f11 ! FGM Group f5 available
1004 fadds %f5, %f8, %f5 ! FGA Group f8, f3 available
1005 fadds %f3, %f9, %f3 ! FGA Group f9 available
1006 fadds %f4, %f10, %f4 ! FGA Group f10, f4 available
1007 fadds %f5, %f11, %f5 ! FGA Group stall, f11, f5 available
1008 fadds %f3, M12, %f3 ! FGA Group f3 available
1009 st %f3, [%g2 + 0x00] ! LSU
1010 fadds %f4, M13, %f4 ! FGA Group f4 available
1011 st %f4, [%g2 + 0x04] ! LSU
1012 fadds %f5, M14, %f5 ! FGA Group f5 available
1013 st %f5, [%g2 + 0x08] ! LSU
1016 add %g2, 0x10, %g2 ! IEU0 Group
1021 .globl _mesa_sparc_transform_points3_3d_no_rot
1022 _mesa_sparc_transform_points3_3d_no_rot:
1023 ld [%o2 + V4F_STRIDE], %o5
1024 LDPTR [%o2 + V4F_START], %g1
1025 LDPTR [%o0 + V4F_START], %g2
1026 ld [%o2 + V4F_COUNT], %g3
1028 LDMATRIX_0_5_10_12_13_14(%o1)
1031 st %g3, [%o0 + V4F_COUNT]
1035 1: ld [%g1 + 0x00], %f0 ! LSU Group
1036 ld [%g1 + 0x04], %f1 ! LSU Group
1037 ld [%g1 + 0x08], %f2 ! LSU Group
1038 add %o1, 1, %o1 ! IEU0
1039 add %g1, %o5, %g1 ! IEU1
1040 cmp %o1, %g3 ! IEU1 Group
1041 fmuls %f0, M0, %f3 ! FGM
1042 fmuls %f1, M5, %f4 ! FGM Group
1043 fmuls %f2, M10, %f5 ! FGM Group
1044 fadds %f3, M12, %f3 ! FGA Group, stall, f3 available
1045 st %f3, [%g2 + 0x00] ! LSU
1046 fadds %f4, M13, %f4 ! FGA Group, f4 available
1047 st %f4, [%g2 + 0x04] ! LSU
1048 fadds %f5, M14, %f5 ! FGA Group, f5 available
1049 st %f5, [%g2 + 0x08] ! LEU
1051 add %g2, 0x10, %g2 ! IEU0 Group
1056 .globl _mesa_sparc_transform_points3_perspective
1057 _mesa_sparc_transform_points3_perspective:
1058 ld [%o2 + V4F_STRIDE], %o5
1059 LDPTR [%o2 + V4F_START], %g1
1060 LDPTR [%o0 + V4F_START], %g2
1061 ld [%o2 + V4F_COUNT], %g3
1063 LDMATRIX_0_5_8_9_10_14(%o1)
1066 st %g3, [%o0 + V4F_COUNT]
1070 1: ld [%g1 + 0x00], %f0 ! LSU Group
1071 ld [%g1 + 0x04], %f1 ! LSU Group
1072 ld [%g1 + 0x08], %f2 ! LSU Group
1073 add %o1, 1, %o1 ! IEU0
1074 add %g1, %o5, %g1 ! IEU1
1075 fmuls %f0, M0, %f3 ! FGM
1076 fmuls %f2, M8, %f6 ! FGM Group
1077 fmuls %f1, M5, %f4 ! FGM Group
1078 fmuls %f2, M9, %f7 ! FGM Group
1079 fmuls %f2, M10, %f5 ! FGM Group f3 available
1080 fadds %f3, %f6, %f3 ! FGA Group f6 available
1081 st %f3, [%g2 + 0x00] ! LSU
1082 fadds %f4, %f7, %f4 ! FGA Group stall, f4, f7 available
1083 st %f4, [%g2 + 0x04] ! LSU
1084 fadds %f5, M14, %f5 ! FGA Group
1085 st %f5, [%g2 + 0x08] ! LSU
1086 fnegs %f2, %f6 ! FGA Group
1087 st %f6, [%g2 + 0x0c] ! LSU
1090 add %g2, 0x10, %g2 ! IEU0 Group
1095 .globl _mesa_sparc_transform_points4_general
1096 _mesa_sparc_transform_points4_general:
1097 ld [%o2 + V4F_STRIDE], %o5
1098 LDPTR [%o2 + V4F_START], %g1
1099 LDPTR [%o0 + V4F_START], %g2
1100 ld [%o2 + V4F_COUNT], %g3
1102 LDMATRIX_0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15(%o1)
1105 st %g3, [%o0 + V4F_COUNT]
1109 1: ld [%g1 + 0x00], %f0 ! LSU Group
1110 ld [%g1 + 0x04], %f1 ! LSU Group
1111 ld [%g1 + 0x08], %f2 ! LSU Group
1112 ld [%g1 + 0x0c], %f3 ! LSU Group
1113 add %o1, 1, %o1 ! IEU0
1114 add %g1, %o5, %g1 ! IEU1
1115 fmuls %f0, M0, %f4 ! FGM Group
1116 fmuls %f1, M4, %f8 ! FGM Group
1117 fmuls %f0, M1, %f5 ! FGM Group
1118 fmuls %f1, M5, %f9 ! FGM Group
1119 fmuls %f0, M2, %f6 ! FGM Group f4 available
1120 fmuls %f1, M6, %f10 ! FGM Group f8 available
1121 fadds %f4, %f8, %f4 ! FGA
1122 fmuls %f0, M3, %f7 ! FGM Group f5 available
1123 fmuls %f1, M7, %f11 ! FGM Group f9 available
1124 fadds %f5, %f9, %f5 ! FGA
1125 fmuls %f2, M8, %f12 ! FGM Group f6 available
1126 fmuls %f2, M9, %f13 ! FGM Group f10, f4 available
1127 fadds %f6, %f10, %f6 ! FGA
1128 fmuls %f2, M10, %f14 ! FGM Group f7 available
1129 fmuls %f2, M11, %f15 ! FGM Group f11, f5 available
1130 fadds %f7, %f11, %f7 ! FGA
1131 fmuls %f3, M12, %f8 ! FGM Group f12 available
1132 fadds %f4, %f12, %f4 ! FGA
1133 fmuls %f3, M13, %f9 ! FGM Group f13, f6 available
1134 fadds %f5, %f13, %f5 ! FGA
1135 fmuls %f3, M14, %f10 ! FGM Group f14 available
1136 fadds %f6, %f14, %f6 ! FGA
1137 fmuls %f3, M15, %f11 ! FGM Group f15, f7 available
1138 fadds %f7, %f15, %f7 ! FGA
1139 fadds %f4, %f8, %f4 ! FGA Group f8, f4 available
1140 st %f4, [%g2 + 0x00] ! LSU
1141 fadds %f5, %f9, %f5 ! FGA Group f9, f5 available
1142 st %f5, [%g2 + 0x04] ! LSU
1143 fadds %f6, %f10, %f6 ! FGA Group f10, f6 available
1144 st %f6, [%g2 + 0x08] ! LSU
1145 fadds %f7, %f11, %f7 ! FGA Group f11, f7 available
1146 st %f7, [%g2 + 0x0c] ! LSU
1149 add %g2, 0x10, %g2 ! IEU0 Group
1154 .globl _mesa_sparc_transform_points4_identity
1155 _mesa_sparc_transform_points4_identity:
1156 ld [%o2 + V4F_STRIDE], %o5
1157 LDPTR [%o2 + V4F_START], %g1
1158 LDPTR [%o0 + V4F_START], %g2
1159 ld [%o2 + V4F_COUNT], %g3
1162 st %g3, [%o0 + V4F_COUNT]
1166 1: ld [%g1 + 0x00], %f0
1167 ld [%g1 + 0x04], %f1
1168 ld [%g1 + 0x08], %f2
1170 ld [%g1 + 0x0c], %f3
1172 st %f0, [%g2 + 0x00]
1173 st %f1, [%g2 + 0x04]
1174 st %f2, [%g2 + 0x08]
1176 st %f3, [%g2 + 0x0c]
1183 .globl _mesa_sparc_transform_points4_2d
1184 _mesa_sparc_transform_points4_2d:
1185 ld [%o2 + V4F_STRIDE], %o5
1186 LDPTR [%o2 + V4F_START], %g1
1187 LDPTR [%o0 + V4F_START], %g2
1188 ld [%o2 + V4F_COUNT], %g3
1190 LDMATRIX_0_1_4_5_12_13(%o1)
1193 st %g3, [%o0 + V4F_COUNT]
1197 1: ld [%g1 + 0x00], %f0 ! LSU Group
1198 ld [%g1 + 0x04], %f1 ! LSU Group
1199 ld [%g1 + 0x08], %f2 ! LSU Group
1200 ld [%g1 + 0x0c], %f3 ! LSU Group
1201 add %o1, 1, %o1 ! IEU0
1202 add %g1, %o5, %g1 ! IEU1
1203 fmuls %f0, M0, %f4 ! FGM
1204 fmuls %f1, M4, %f8 ! FGM Group
1205 fmuls %f0, M1, %f5 ! FGM Group
1206 fmuls %f1, M5, %f9 ! FGM Group f4 available
1207 fmuls %f3, M12, %f12 ! FGM Group
1208 fmuls %f3, M13, %f13 ! FGM Group f8 available
1209 fadds %f4, %f8, %f4 ! FGA
1210 fadds %f5, %f9, %f5 ! FGA Group stall, f5, f9 available
1211 fadds %f4, %f12, %f4 ! FGA Group 2 cycle stall, f4, f12, f13 avail
1212 st %f4, [%g2 + 0x00] ! LSU
1213 fadds %f5, %f13, %f5 ! FGA Group f5 available
1214 st %f5, [%g2 + 0x04] ! LSU
1215 st %f2, [%g2 + 0x08] ! LSU Group
1216 st %f3, [%g2 + 0x0c] ! LSU Group
1219 add %g2, 0x10, %g2 ! IEU0 Group
1224 .globl _mesa_sparc_transform_points4_2d_no_rot
1225 _mesa_sparc_transform_points4_2d_no_rot:
1226 ld [%o2 + V4F_STRIDE], %o5
1227 LDPTR [%o2 + V4F_START], %g1
1228 LDPTR [%o0 + V4F_START], %g2
1229 ld [%o2 + V4F_COUNT], %g3
1231 LDMATRIX_0_1_4_5_12_13(%o1)
1234 st %g3, [%o0 + V4F_COUNT]
1238 1: ld [%g1 + 0x00], %f0
1239 ld [%g1 + 0x04], %f1
1240 ld [%g1 + 0x08], %f2
1241 ld [%g1 + 0x0c], %f3
1249 st %f4, [%g2 + 0x00]
1251 st %f5, [%g2 + 0x04]
1252 st %f2, [%g2 + 0x08]
1253 st %f3, [%g2 + 0x0c]
1261 .globl _mesa_sparc_transform_points4_3d
1262 _mesa_sparc_transform_points4_3d:
1263 ld [%o2 + V4F_STRIDE], %o5
1264 LDPTR [%o2 + V4F_START], %g1
1265 LDPTR [%o0 + V4F_START], %g2
1266 ld [%o2 + V4F_COUNT], %g3
1268 LDMATRIX_0_1_2_4_5_6_8_9_10_12_13_14(%o1)
1271 st %g3, [%o0 + V4F_COUNT]
1275 1: ld [%g1 + 0x00], %f0 ! LSU Group
1276 ld [%g1 + 0x04], %f1 ! LSU Group
1277 ld [%g1 + 0x08], %f2 ! LSU Group
1278 ld [%g1 + 0x0c], %f3 ! LSU Group
1279 add %o1, 1, %o1 ! IEU0
1280 add %g1, %o5, %g1 ! IEU1
1281 fmuls %f0, M0, %f4 ! FGM
1282 fmuls %f1, M4, %f7 ! FGM Group
1283 fmuls %f0, M1, %f5 ! FGM Group
1284 fmuls %f1, M5, %f8 ! FGM Group
1285 fmuls %f0, M2, %f6 ! FGM Group f4 available
1286 fmuls %f1, M6, %f9 ! FGM Group f7 available
1287 fadds %f4, %f7, %f4 ! FGA
1288 fmuls %f2, M8, %f10 ! FGM Group f5 available
1289 fmuls %f2, M9, %f11 ! FGM Group f8 available
1290 fadds %f5, %f8, %f5 ! FGA
1291 fmuls %f2, M10, %f12 ! FGM Group f6 available
1292 fmuls %f3, M12, %f13 ! FGM Group f9, f4 available
1293 fadds %f6, %f9, %f6 ! FGA
1294 fmuls %f3, M13, %f14 ! FGM Group f10 available
1295 fadds %f4, %f10, %f4 ! FGA
1296 fmuls %f3, M14, %f15 ! FGM Group f11, f5 available
1297 fadds %f5, %f11, %f5 ! FGA
1298 fadds %f6, %f12, %f6 ! FGA Group stall, f12, f13, f6 available
1299 fadds %f4, %f13, %f4 ! FGA Group f14, f4 available
1300 st %f4, [%g2 + 0x00] ! LSU
1301 fadds %f5, %f14, %f5 ! FGA Group f15, f5 available
1302 st %f5, [%g2 + 0x04] ! LSU
1303 fadds %f6, %f15, %f6 ! FGA Group f6 available
1304 st %f6, [%g2 + 0x08] ! LSU
1305 st %f3, [%g2 + 0x0c] ! LSU Group
1308 add %g2, 0x10, %g2 ! IEU0 Group
1313 .globl _mesa_sparc_transform_points4_3d_no_rot
1314 _mesa_sparc_transform_points4_3d_no_rot:
1315 ld [%o2 + V4F_STRIDE], %o5
1316 LDPTR [%o2 + V4F_START], %g1
1317 LDPTR [%o0 + V4F_START], %g2
1318 ld [%o2 + V4F_COUNT], %g3
1320 LDMATRIX_0_5_10_12_13_14(%o1)
1323 st %g3, [%o0 + V4F_COUNT]
1327 1: ld [%g1 + 0x00], %f0 ! LSU Group
1328 ld [%g1 + 0x04], %f1 ! LSU Group
1329 ld [%g1 + 0x08], %f2 ! LSU Group
1330 ld [%g1 + 0x0c], %f3 ! LSU Group
1331 add %o1, 1, %o1 ! IEU0
1332 add %g1, %o5, %g1 ! IEU1
1333 fmuls %f0, M0, %f4 ! FGM
1334 fmuls %f3, M12, %f7 ! FGM Group
1335 fmuls %f1, M5, %f5 ! FGM Group
1336 fmuls %f3, M13, %f8 ! FGM Group
1337 fmuls %f2, M10, %f6 ! FGM Group f4 available
1338 fmuls %f3, M14, %f9 ! FGM Group f7 available
1339 fadds %f4, %f7, %f4 ! FGA
1340 st %f4, [%g2 + 0x00] ! LSU
1341 fadds %f5, %f8, %f5 ! FGA Group stall, f5, f8 available
1342 st %f5, [%g2 + 0x04] ! LSU
1343 fadds %f6, %f9, %f6 ! FGA Group stall, f6, f9 available
1344 st %f6, [%g2 + 0x08] ! LSU
1345 st %f3, [%g2 + 0x0c] ! LSU Group
1348 add %g2, 0x10, %g2 ! IEU0 Group
1353 .globl _mesa_sparc_transform_points4_perspective
1354 _mesa_sparc_transform_points4_perspective:
1355 ld [%o2 + V4F_STRIDE], %o5
1356 LDPTR [%o2 + V4F_START], %g1
1357 LDPTR [%o0 + V4F_START], %g2
1358 ld [%o2 + V4F_COUNT], %g3
1360 LDMATRIX_0_5_8_9_10_14(%o1)
1363 st %g3, [%o0 + V4F_COUNT]
1367 1: ld [%g1 + 0x00], %f0 ! LSU Group
1368 ld [%g1 + 0x04], %f1 ! LSU Group
1369 ld [%g1 + 0x08], %f2 ! LSU Group
1370 ld [%g1 + 0x0c], %f3 ! LSU Group
1371 add %o1, 1, %o1 ! IEU0
1372 add %g1, %o5, %g1 ! IEU1
1373 fmuls %f0, M0, %f4 ! FGM
1374 fmuls %f2, M8, %f7 ! FGM Group
1375 fmuls %f1, M5, %f5 ! FGM Group
1376 fmuls %f2, M9, %f8 ! FGM Group
1377 fmuls %f2, M10, %f6 ! FGM Group f4 available
1378 fmuls %f3, M14, %f9 ! FGM Group f7 available
1379 fadds %f4, %f7, %f4 ! FGA
1380 st %f4, [%g2 + 0x00] ! LSU
1381 fadds %f5, %f8, %f5 ! FGA Group stall, f5, f8 available
1382 st %f5, [%g2 + 0x04] ! LSU
1383 fadds %f6, %f9, %f6 ! FGA Group stall, f6, f9 available
1384 st %f6, [%g2 + 0x08] ! LSU
1385 fnegs %f2, %f7 ! FGA Group
1386 st %f7, [%g2 + 0x0c] ! LSU
1389 add %g2, 0x10, %g2 ! IEU0 Group