17943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
27943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	/* TODO
37943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 *
47943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 * 1) It would be nice if load/store double could be used
57943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 *    at least for the matrix parts.  I think for the matrices
67943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 *    it is safe, but for the vertices it probably is not due to
77943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 *    things like glInterleavedArrays etc.
87943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 *
97943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 *    UPDATE: Trying this now in sparc_matrix.h -DaveM_990624
107943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 *
117943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 * 2) One extremely slick trick would be if we could enclose
127943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 *    groups of xform calls on the same vertices such that
137943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 *    we just load the matrix into f16-->f31 before the calls
147943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 *    and then we would not have to do them here.  This may be
157943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 *    tricky and not much of a gain though.
167943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 */
177943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
18775355a88a0927e2e3a855036c26950397a61d7bdavem#include "sparc_matrix.h"
197943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
20f7f1211b9b0a8fa0e5f5427b74b4eee4dabf65afAurelien Jarno#if defined(SVR4) || defined(__SVR4) || defined(__svr4__) || defined(__arch64__)
21462183fe4cb6df6d90632d9e2cee881c8d26b1cbAlan Hourihane	/* Solaris requires this for 64-bit. */
22462183fe4cb6df6d90632d9e2cee881c8d26b1cbAlan Hourihane        .register %g2, #scratch
23462183fe4cb6df6d90632d9e2cee881c8d26b1cbAlan Hourihane        .register %g3, #scratch
24462183fe4cb6df6d90632d9e2cee881c8d26b1cbAlan Hourihane#endif
25462183fe4cb6df6d90632d9e2cee881c8d26b1cbAlan Hourihane
267943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	.text
277943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	.align	64
287943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
297943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul__set_v4f_1:
307943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o0 + V4F_FLAGS], %g2
317943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	mov	1, %g1
327943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g1, [%o0 + V4F_SIZE]
337943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	or	%g2, VEC_SIZE_1, %g2
347943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	retl
357943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 st	%g2, [%o0 + V4F_FLAGS]
367943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul__set_v4f_2:
377943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o0 + V4F_FLAGS], %g2
387943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	mov	2, %g1
397943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g1, [%o0 + V4F_SIZE]
407943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	or	%g2, VEC_SIZE_2, %g2
417943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	retl
427943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 st	%g2, [%o0 + V4F_FLAGS]
437943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul__set_v4f_3:
447943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o0 + V4F_FLAGS], %g2
457943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	mov	3, %g1
467943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g1, [%o0 + V4F_SIZE]
477943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	or	%g2, VEC_SIZE_3, %g2
487943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	retl
497943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 st	%g2, [%o0 + V4F_FLAGS]
507943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul__set_v4f_4:
517943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o0 + V4F_FLAGS], %g2
527943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	mov	4, %g1
537943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g1, [%o0 + V4F_SIZE]
547943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	or	%g2, VEC_SIZE_4, %g2
557943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	retl
567943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 st	%g2, [%o0 + V4F_FLAGS]
577943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
587943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	/* First the raw versions. */
597943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
607943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	.globl	_mesa_sparc_transform_points1_general
617943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul_mesa_sparc_transform_points1_general:
627943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_STRIDE], %o5
637943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o2 + V4F_START], %g1
647943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o0 + V4F_START], %g2
657943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_COUNT], %g3
667943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
677943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDMATRIX_0_1_2_3_12_13_14_15(%o1)
687943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
697943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%g3, 1
707943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g3, [%o0 + V4F_COUNT]
717943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bl	3f
727943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 clr	%o1
737943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
747943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	2f
757943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 andn	%g3, 1, %o2
767943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
777943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul1:	ld	[%g1 + 0x00], %f0	! LSU	Group
787943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1		! IEU0
797943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x00], %f8	! LSU	Group
807943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%o1, 2, %o1		! IEU0
817943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1		! IEU1
827943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M0, %f1		! FGM	Group	1-cycle stall on %f0
837943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M1, %f2		! FGM	Group
847943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M2, %f3		! FGM	Group
857943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M3, %f4		! FGM	Group
867943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f8, M0, %f9		! FGM	Group	f1 available
877943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f1, M12, %f1		! FGA
887943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f1, [%g2 + 0x00]	! LSU
897943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f8, M1, %f10		! FGM	Group	f2 available
907943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f2, M13, %f2		! FGA
917943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f2, [%g2 + 0x04]	! LSU
927943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f8, M2, %f11		! FGM	Group	f3 available
937943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f3, M14, %f3		! FGA
947943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f3, [%g2 + 0x08]	! LSU
957943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f8, M3, %f12		! FGM	Group	f4 available
967943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f4, M15, %f4		! FGA
977943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f4, [%g2 + 0x0c]	! LSU
987943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f9, M12, %f9		! FGA	Group	f9 available
997943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f9, [%g2 + 0x10]	! LSU
1007943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f10, M13, %f10		! FGA	Group	f10 available
1017943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f10, [%g2 + 0x14]	! LSU
1027943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f11, M14, %f11		! FGA	Group	f11 available
1037943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f11, [%g2 + 0x18]	! LSU
1047943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f12, M15, %f12		! FGA	Group	f12 available
1057943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f12, [%g2 + 0x1c]	! LSU
1067943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %o2		! IEU1
1077943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bne	1b			! CTI
1087943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 add	%g2, 0x20, %g2		! IEU0	Group
1097943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
1107943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %g3
1117943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	3f
1127943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
1137943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
1147943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul2:	ld	[%g1 + 0x00], %f0	! LSU	Group
1157943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M0, %f1		! FGM	Group	1-cycle stall on %f0
1167943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M1, %f2		! FGM	Group
1177943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M2, %f3		! FGM	Group
1187943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M3, %f4		! FGM	Group
1197943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f1, M12, %f1		! FGA	Group
1207943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f1, [%g2 + 0x00]	! LSU
1217943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f2, M13, %f2		! FGA	Group
1227943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f2, [%g2 + 0x04]	! LSU
1237943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f3, M14, %f3		! FGA	Group
1247943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f3, [%g2 + 0x08]	! LSU
1257943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f4, M15, %f4		! FGA	Group
1267943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f4, [%g2 + 0x0c]	! LSU
1277943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
1287943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul3:
1297943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ba	__set_v4f_4
1307943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
1317943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
1327943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	.globl	_mesa_sparc_transform_points1_identity
1337943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul_mesa_sparc_transform_points1_identity:
1347943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o0, %o2
1357943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	4f
1367943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 ld	[%o2 + V4F_STRIDE], %o5
1377943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o2 + V4F_START], %g1
1387943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o0 + V4F_START], %g2
1397943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_COUNT], %g3
1407943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
1417943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%g3, 1
1427943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g3, [%o0 + V4F_COUNT]
1437943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bl	3f
1447943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 clr	%o1
1457943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
1467943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	2f
1477943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 andn	%g3, 1, %o2
1487943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
1497943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul1:	ld	[%g1 + 0x00], %f0	! LSU	Group
1507943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1		! IEU0
1517943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x00], %f1	! LSU	Group
1527943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%o1, 2, %o1		! IEU0
1537943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1		! IEU1
1547943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f0, [%g2 + 0x00]	! LSU	Group
1557943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %o2		! IEU1
1567943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f1, [%g2 + 0x10]	! LSU	Group
1577943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bne	1b			! CTI
1587943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 add	%g2, 0x20, %g2		! IEU0
1597943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
1607943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %g3
1617943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	3f
1627943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
1637943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
1647943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul2:	ld	[%g1 + 0x00], %f0
1657943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	addx	%g0, %g0, %g0
1667943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f0, [%g2 + 0x00]
1677943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
1687943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul3:
1697943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ba	__set_v4f_1
1707943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
1717943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
1727943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul4:	retl
1737943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
1747943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
1757943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	.globl	_mesa_sparc_transform_points1_2d
1767943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul_mesa_sparc_transform_points1_2d:
1777943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_STRIDE], %o5
1787943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o2 + V4F_START], %g1
1797943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o0 + V4F_START], %g2
1807943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_COUNT], %g3
1817943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
1827943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDMATRIX_0_1_12_13(%o1)
1837943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
1847943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%g3, 1
1857943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g3, [%o0 + V4F_COUNT]
1867943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bl	3f
1877943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 clr	%o1
1887943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
1897943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	2f
1907943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 andn	%g3, 1, %o2
1917943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
1927943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul1:	ld	[%g1 + 0x00], %f0	! LSU	Group
1937943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1		! IEU0
1947943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x00], %f8	! LSU	Group
1957943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%o1, 2, %o1		! IEU0
1967943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1		! IEU1
1977943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M0, %f1		! FGM	Group
1987943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M1, %f2		! FGM	Group
1997943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f8, M0, %f9		! FGM	Group
2007943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f8, M1, %f10		! FGM	Group
2017943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f1, M12, %f3		! FGA	Group	f1 available
2027943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f3, [%g2 + 0x00]	! LSU
2037943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f2, M13, %f4		! FGA	Group	f2 available
2047943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f4, [%g2 + 0x04]	! LSU
2057943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f9, M12, %f11		! FGA	Group	f9 available
2067943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f11, [%g2 + 0x10]	! LSU
2077943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f10, M13, %f12		! FGA	Group	f10 available
2087943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f12, [%g2 + 0x14]	! LSU
2097943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %o2		! IEU1
2107943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bne	1b			! CTI
2117943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 add	%g2, 0x20, %g2		! IEU0	Group
2127943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
2137943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %g3
2147943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	3f
2157943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
2167943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
2177943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul2:	ld	[%g1 + 0x00], %f0
2187943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M0, %f1
2197943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M1, %f2
2207943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f1, M12, %f3
2217943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f3, [%g2 + 0x00]
2227943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f2, M13, %f4
2237943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f4, [%g2 + 0x04]
2247943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
2257943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul3:
2267943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ba	__set_v4f_2
2277943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
2287943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
2297943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	.globl	_mesa_sparc_transform_points1_2d_no_rot
2307943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul_mesa_sparc_transform_points1_2d_no_rot:
2317943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_STRIDE], %o5
2327943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o2 + V4F_START], %g1
2337943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o0 + V4F_START], %g2
2347943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_COUNT], %g3
2357943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
2367943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDMATRIX_0_12_13(%o1)
2377943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
2387943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%g3, 1
2397943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g3, [%o0 + V4F_COUNT]
2407943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bl	3f
2417943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 clr	%o1
2427943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
2437943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	2f
2447943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 andn	%g3, 1, %o2
2457943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
2467943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul1:	ld	[%g1 + 0x00], %f0	! LSU	Group
2477943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1		! IEU0
2487943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x00], %f4	! LSU	Group
2497943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%o1, 2, %o1		! IEU0
2507943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1		! IEU1
2517943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M0, %f1		! FGM	Group
2527943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f4, M0, %f5		! FGM	Group
2537943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f1, M12, %f3		! FGA	Group, 2 cycle stall, f1 available
2547943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f3, [%g2 + 0x00]	! LSU
2557943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	M13, [%g2 + 0x04]	! LSU	Group, f5 available
2567943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f5, M12, %f6		! FGA
2577943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f6, [%g2 + 0x10]	! LSU	Group
2587943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	M13, [%g2 + 0x14]	! LSU	Group
2597943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %o2		! IEU1
2607943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bne	1b			! CTI
2617943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 add	%g2, 0x20, %g2		! IEU0	Group
2627943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
2637943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %g3
2647943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	3f
2657943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
2667943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
2677943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul2:	ld	[%g1 + 0x00], %f0
2687943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M0, %f1
2697943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f1, M12, %f3
2707943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f3, [%g2 + 0x00]
2717943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	M13, [%g2 + 0x04]
2727943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
2737943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul3:
2747943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ba	__set_v4f_2
2757943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
2767943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
2777943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	.globl	_mesa_sparc_transform_points1_3d
2787943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul_mesa_sparc_transform_points1_3d:
2797943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_STRIDE], %o5
2807943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o2 + V4F_START], %g1
2817943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o0 + V4F_START], %g2
2827943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_COUNT], %g3
2837943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
2847943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDMATRIX_0_1_2_12_13_14(%o1)
2857943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
2867943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%g3, 1
2877943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g3, [%o0 + V4F_COUNT]
2887943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bl	3f
2897943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 clr	%o1
2907943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
2917943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	2f
2927943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 andn	%g3, 1, %o2
2937943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
2947943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul1:	ld	[%g1 + 0x00], %f0	! LSU	Group
2957943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1		! IEU0
2967943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x00], %f4	! LSU	Group
2977943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%o1, 2, %o1		! IEU0
2987943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1		! IEU1
2997943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M0, %f1		! FGM	Group
3007943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M1, %f2		! FGM	Group
3017943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M2, %f3		! FGM	Group
3027943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f4, M0, %f5		! FGM	Group
3037943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f1, M12, %f1		! FGA	Group, f1 available
3047943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f1, [%g2 + 0x00]	! LSU
3057943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f4, M1, %f6		! FGM
3067943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f2, M13, %f2		! FGA	Group, f2 available
3077943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f2, [%g2 + 0x04]	! LSU
3087943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f4, M2, %f7		! FGM
3097943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f3, M14, %f3		! FGA	Group, f3 available
3107943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f3, [%g2 + 0x08]	! LSU
3117943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f5, M12, %f5		! FGA	Group, f5 available
3127943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f5, [%g2 + 0x10]	! LSU
3137943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f6, M13, %f6		! FGA	Group, f6 available
3147943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f6, [%g2 + 0x14]	! LSU
3157943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f7, M14, %f7		! FGA	Group, f7 available
3167943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f7, [%g2 + 0x18]	! LSU
3177943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %o2		! IEU1
3187943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bne	1b			! CTI
3197943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 add	%g2, 0x20, %g2		! IEU0	Group
3207943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
3217943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %g3
3227943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	3f
3237943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
3247943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
3257943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul2:	ld	[%g1 + 0x00], %f0
3267943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M0, %f1
3277943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M1, %f2
3287943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M2, %f3
3297943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f1, M12, %f1
3307943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f1, [%g2 + 0x00]
3317943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f2, M13, %f2
3327943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f2, [%g2 + 0x04]
3337943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f3, M14, %f3
3347943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f3, [%g2 + 0x08]
3357943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
3367943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul3:
3377943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ba	__set_v4f_3
3387943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
3397943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
3407943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	.globl	_mesa_sparc_transform_points1_3d_no_rot
3417943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul_mesa_sparc_transform_points1_3d_no_rot:
3427943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_STRIDE], %o5
3437943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o2 + V4F_START], %g1
3447943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o0 + V4F_START], %g2
3457943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_COUNT], %g3
3467943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
3477943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDMATRIX_0_12_13_14(%o1)
3487943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
3497943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%g3, 1
3507943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g3, [%o0 + V4F_COUNT]
3517943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bl	3f
3527943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 clr	%o1
3537943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
3547943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	2f
3557943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 andn	%g3, 1, %o2
3567943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
3577943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul1:	ld	[%g1 + 0x00], %f0	! LSU	Group
3587943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1		! IEU0
3597943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x00], %f2	! LSU	Group
3607943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%o1, 2, %o1		! IEU0
3617943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1		! IEU1
3627943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M0, %f1		! FGM	Group
3637943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f2, M0, %f3		! FGM	Group
3647943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f1, M12, %f1		! FGA	Group, 2 cycle stall, f1 available
3657943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f1, [%g2 + 0x00]	! LSU
3667943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f3, M12, %f3		! FGA	Group, f3 available
3677943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	M13, [%g2 + 0x04]	! LSU
3687943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	M14, [%g2 + 0x08]	! LSU	Group
3697943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f3, [%g2 + 0x10]	! LSU	Group
3707943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	M13, [%g2 + 0x14]	! LSU	Group
3717943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	M14, [%g2 + 0x18]	! LSU	Group
3727943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %o2		! IEU1
3737943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bne	1b			! CTI
3747943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 add	%g2, 0x20, %g2		! IEU0	Group
3757943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
3767943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %g3
3777943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	3f
3787943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
3797943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
3807943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul2:	ld	[%g1 + 0x00], %f0
3817943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M0, %f1
3827943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f1, M12, %f1
3837943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f1, [%g2 + 0x00]
3847943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	M13, [%g2 + 0x04]
3857943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	M14, [%g2 + 0x08]
3867943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
3877943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul3:
3887943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ba	__set_v4f_3
3897943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
3907943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
3917943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	.globl	_mesa_sparc_transform_points1_perspective
3927943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul_mesa_sparc_transform_points1_perspective:
3937943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_STRIDE], %o5
3947943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o2 + V4F_START], %g1
3957943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o0 + V4F_START], %g2
3967943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_COUNT], %g3
3977943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
3987943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDMATRIX_0_14(%o1)
3997943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
4007943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%g3, 1
4017943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g3, [%o0 + V4F_COUNT]
4027943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bl	3f
4037943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 clr	%o1
4047943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
4057943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	2f
4067943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 andn	%g3, 1, %o2
4077943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
4087943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul1:	ld	[%g1 + 0x00], %f0	! LSU	Group
4097943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1		! IEU0
4107943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x00], %f2	! LSU	Group
4117943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%o1, 2, %o1		! IEU0
4127943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1		! IEU1
4137943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M0, %f1		! FGM	Group
4147943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f1, [%g2 + 0x00]	! LSU
4157943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f2, M0, %f3		! FGM	Group
4167943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g0, [%g2 + 0x04]	! LSU
4177943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	M14, [%g2 + 0x08]	! LSU	Group
4187943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g0, [%g2 + 0x0c]	! LSU	Group
4197943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f3, [%g2 + 0x10]	! LSU	Group
4207943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g0, [%g2 + 0x14]	! LSU	Group
4217943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	M14, [%g2 + 0x18]	! LSU	Group
4227943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g0, [%g2 + 0x1c]	! LSU	Group
4237943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %o2		! IEU1
4247943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bne	1b			! CTI
4257943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 add	%g2, 0x20, %g2		! IEU0	Group
4267943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
4277943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %g3
4287943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	3f
4297943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
4307943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
4317943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul2:	ld	[%g1 + 0x00], %f0
4327943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M0, %f1
4337943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f1, [%g2 + 0x00]
4347943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g0, [%g2 + 0x04]
4357943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	M14, [%g2 + 0x08]
4367943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g0, [%g2 + 0x0c]
4377943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
4387943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul3:
4397943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ba	__set_v4f_4
4407943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
4417943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
4427943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	.globl	_mesa_sparc_transform_points2_general
4437943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul_mesa_sparc_transform_points2_general:
4447943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_STRIDE], %o5
4457943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o2 + V4F_START], %g1
4467943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o0 + V4F_START], %g2
4477943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_COUNT], %g3
4487943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
4497943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDMATRIX_0_1_2_3_4_5_6_7_12_13_14_15(%o1)
4507943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
4517943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%g3, 0
4527943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g3, [%o0 + V4F_COUNT]
4537943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	2f
4547943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 clr	%o1
4557943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
4567943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul1:	ld	[%g1 + 0x00], %f0	! LSU	Group
4577943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x04], %f1	! LSU	Group
4587943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%o1, 1, %o1		! IEU0
4597943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1		! IEU1
4607943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M0, %f2		! FGM	Group
4617943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M1, %f3		! FGM	Group
4627943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M2, %f4		! FGM	Group
4637943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M3, %f5		! FGM	Group
4647943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f2, M12, %f2		! FGA	Group	f2 available
4657943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M4, %f6		! FGM
4667943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f3, M13, %f3		! FGA	Group	f3 available
4677943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M5, %f7		! FGM
4687943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f4, M14, %f4		! FGA	Group	f4 available
4697943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M6, %f8		! FGM
4707943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f5, M15, %f5		! FGA	Group	f5 available
4717943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M7, %f9		! FGM
4727943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f2, %f6, %f2		! FGA	Group	f6 available
4737943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f2, [%g2 + 0x00]	! LSU
4747943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f3, %f7, %f3		! FGA	Group	f7 available
4757943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f3, [%g2 + 0x04]	! LSU
4767943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f4, %f8, %f4		! FGA	Group	f8 available
4777943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f4, [%g2 + 0x08]	! LSU
4787943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f5, %f9, %f5		! FGA	Group	f9 available
4797943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f5, [%g2 + 0x0c]	! LSU
4807943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %g3		! IEU1
4817943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bne	1b			! CTI
4827943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 add	%g2, 0x10, %g2		! IEU0	Group
4837943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul2:
4847943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ba	__set_v4f_4
4857943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
4867943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
4877943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	.globl	_mesa_sparc_transform_points2_identity
4887943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul_mesa_sparc_transform_points2_identity:
4897943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o2, %o0
4907943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	3f
4917943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 ld	[%o2 + V4F_STRIDE], %o5
4927943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o2 + V4F_START], %g1
4937943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o0 + V4F_START], %g2
4947943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_COUNT], %g3
4957943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
4967943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%g3, 0
4977943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g3, [%o0 + V4F_COUNT]
4987943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	2f
4997943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 clr	%o1
5007943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
5017943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul1:	ld	[%g1 + 0x00], %f0	! LSU	Group
5027943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%o1, 1, %o1		! IEU0
5037943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x04], %f1	! LSU	Group
5047943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1		! IEU0
5057943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %g3		! IEU1
5067943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f0, [%g2 + 0x00]	! LSU	Group
5077943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f1, [%g2 + 0x04]	! LSU	Group
5087943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bne	1b			! CTI
5097943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 add	%g2, 0x10, %g2		! IEU0
5107943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul2:
5117943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ba	__set_v4f_2
5127943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
5137943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
5147943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul3:	retl
5157943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
5167943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
5177943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	.globl	_mesa_sparc_transform_points2_2d
5187943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul_mesa_sparc_transform_points2_2d:
5197943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_STRIDE], %o5
5207943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o2 + V4F_START], %g1
5217943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o0 + V4F_START], %g2
5227943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_COUNT], %g3
5237943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
5247943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDMATRIX_0_1_4_5_12_13(%o1)
5257943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
5267943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%g3, 1
5277943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g3, [%o0 + V4F_COUNT]
5287943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bl	3f
5297943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 clr	%o1
5307943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
5317943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	2f
5327943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 andn	%g3, 1, %o2
5337943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
5347943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul1:	ld	[%g1 + 0x00], %f0	! LSU	Group
5357943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x04], %f1	! LSU	Group
5367943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%o1, 2, %o1		! IEU0
5377943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1		! IEU1
5387943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M0, %f2		! FGM
5397943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x00], %f8	! LSU	Group
5407943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M1, %f3		! FGM
5417943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x04], %f9	! LSU	Group
5427943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M4, %f6		! FGM
5437943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M5, %f7		! FGM	Group
5447943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1		! IEU0
5457943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f8, M0, %f10		! FGM	Group	f2 available
5467943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f2, M12, %f2		! FGA
5477943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f8, M1, %f11		! FGM	Group	f3 available
5487943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f3, M13, %f3		! FGA
5497943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f9, M4, %f12		! FGM	Group
5507943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f9, M5, %f13		! FGM	Group
5517943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f10, M12, %f10		! FGA	Group	f2, f10 available
5527943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f2, %f6, %f2		! FGA	Group	f3, f11 available
5537943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f2, [%g2 + 0x00]	! LSU
5547943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f11, M13, %f11		! FGA	Group	f12 available
5557943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f3, %f7, %f3		! FGA	Group	f13 available
5567943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f3, [%g2 + 0x04]	! LSU
5577943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f10, %f12, %f10	! FGA	Group	f10 available
5587943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f10, [%g2 + 0x10]	! LSU
5597943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f11, %f13, %f11	! FGA	Group	f11 available
5607943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f11, [%g2 + 0x14]	! LSU
5617943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %o2		! IEU1
5627943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bne	1b			! CTI
5637943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 add	%g2, 0x20, %g2		! IEU0	Group
5647943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
5657943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %g3
5667943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	3f
5677943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
5687943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
5697943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul2:	ld	[%g1 + 0x00], %f0	! LSU	Group
5707943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x04], %f1	! LSU	Group
5717943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M0, %f2		! FGM	Group
5727943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M1, %f3		! FGM	Group
5737943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M4, %f6		! FGM	Group
5747943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M5, %f7		! FGM	Group
5757943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f2, M12, %f2		! FGA	Group	f2 available
5767943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f3, M13, %f3		! FGA	Group	f3 available
5777943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f2, %f6, %f2		! FGA	Group	2 cycle stall, f2 available
5787943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f2, [%g2 + 0x00]	! LSU
5797943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f3, %f7, %f3		! FGA	Group	f3 available
5807943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f3, [%g2 + 0x04]	! LSU
5817943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
5827943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul3:
5837943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ba	__set_v4f_2
5847943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
5857943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
5867943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	.globl	_mesa_sparc_transform_points2_2d_no_rot
5877943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul_mesa_sparc_transform_points2_2d_no_rot:
5887943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_STRIDE], %o5
5897943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o2 + V4F_START], %g1
5907943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o0 + V4F_START], %g2
5917943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_COUNT], %g3
5927943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
5937943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDMATRIX_0_5_12_13(%o1)
5947943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
5957943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%g3, 1
5967943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g3, [%o0 + V4F_COUNT]
5977943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bl	3f
5987943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 clr	%o1
5997943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
6007943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	2f
6017943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 andn	%g3, 1, %o2
6027943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
6037943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul1:	ld	[%g1 + 0x00], %f0	! LSU	Group
6047943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x04], %f1	! LSU	Group
6057943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%o1, 2, %o1		! IEU0
6067943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1		! IEU1
6077943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x00], %f4	! LSU	Group
6087943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M0, %f2		! FGM
6097943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x04], %f5	! LSU	Group
6107943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M5, %f3		! FGM
6117943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f4, M0, %f6		! FGM	Group
6127943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1		! IEU0
6137943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f5, M5, %f7		! FGM	Group
6147943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f2, M12, %f2		! FGA	Group	f2 available
6157943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f2, [%g2 + 0x00]	! LSU
6167943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f3, M13, %f3		! FGA	Group	f3 available
6177943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f3, [%g2 + 0x04]	! LSU
6187943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f6, M12, %f6		! FGA	Group	f6 available
6197943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f6, [%g2 + 0x10]	! LSU
6207943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f7, M13, %f7		! FGA	Group	f7 available
6217943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f7, [%g2 + 0x14]	! LSU
6227943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %o2		! IEU1
6237943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bne	1b			! CTI
6247943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 add	%g2, 0x20, %g2		! IEU0	Group
6257943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
6267943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %g3
6277943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	3f
6287943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
6297943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
6307943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul2:	ld	[%g1 + 0x00], %f0	! LSU	Group
6317943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x04], %f1	! LSU	Group
6327943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M0, %f2		! FGM	Group
6337943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M5, %f3		! FGM	Group
6347943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f2, M12, %f2		! FGA	Group, 2 cycle stall, f2 available
6357943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f2, [%g2 + 0x00]	! LSU
6367943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f3, M13, %f3		! FGA	Group	f3 available
6377943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f3, [%g2 + 0x04]	! LSU
6387943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
6397943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul3:
6407943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ba	__set_v4f_2
6417943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
6427943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
6437943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	/* orig: 12 cycles */
6447943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	.globl	_mesa_sparc_transform_points2_3d
6457943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul_mesa_sparc_transform_points2_3d:
6467943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_STRIDE], %o5
6477943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_START], %g1
6487943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o0 + V4F_START], %g2
6497943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_COUNT], %g3
6507943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
6517943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDMATRIX_0_1_2_3_4_5_6_12_13_14(%o1)
6527943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
6537943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%g3, 1
6547943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g3, [%o0 + V4F_COUNT]
6557943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bl	3f
6567943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 clr	%o1
6577943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
6587943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	2f
6597943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 andn	%g3, 1, %o2
6607943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
6617943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul1:	ld	[%g1 + 0x00], %f0	! LSU	Group
6627943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x04], %f1	! LSU	Group
6637943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%o1, 2, %o1		! IEU0
6647943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1		! IEU1
6657943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x00], %f9	! LSU	Group
6667943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M0, %f2		! FGM
6677943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x04], %f10	! LSU	Group
6687943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M1, %f3		! FGM
6697943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M2, %f4		! FGM	Group
6707943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1		! IEU0
6717943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M4, %f6		! FGM	Group
6727943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M5, %f7		! FGM	Group	f2 available
6737943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f2, M12, %f2		! FGA
6747943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M6, %f8		! FGM	Group	f3 available
6757943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f3, M13, %f3		! FGA
6767943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f9, M0, %f11		! FGM	Group	f4 available
6777943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f4, M14, %f4		! FGA
6787943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f9, M1, %f12		! FGM	Group	f6 available
6797943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f9, M2, %f13		! FGM	Group	f2, f7 available
6807943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f2, %f6, %f2		! FGA
6817943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f2, [%g2 + 0x00]	! LSU
6827943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f10, M4, %f14		! FGM	Group	f3, f8 available
6837943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f3, %f7, %f3		! FGA
6847943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f3, [%g2 + 0x04]	! LSU
6857943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f10, M5, %f15		! FGM	Group	f4, f11 available
6867943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f11, M12, %f11		! FGA
6877943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f10, M6, %f0		! FGM	Group	f12 available
6887943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f12, M13, %f12		! FGA
6897943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f13, M14, %f13		! FGA	Group	f13 available
6907943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f4, %f8, %f4		! FGA	Group	f14 available
6917943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f4, [%g2 + 0x08]	! LSU
6927943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f11, %f14, %f11	! FGA	Group	f15, f11 available
6937943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f11, [%g2 + 0x10]	! LSU
6947943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f12, %f15, %f12	! FGA	Group	f0, f12 available
6957943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f12, [%g2 + 0x14]	! LSU
6967943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f13, %f0, %f13		! FGA	Group	f13 available
6977943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f13, [%g2 + 0x18]	! LSU
6987943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
6997943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %o2		! IEU1
7007943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bne	1b			! CTI
7017943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 add	%g2, 0x20, %g2		! IEU0	Group
7027943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
7037943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %g3
7047943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	3f
7057943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
7067943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
7077943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul2:	ld	[%g1 + 0x00], %f0	! LSU	Group
7087943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x04], %f1	! LSU	Group
7097943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M0, %f2		! FGM	Group
7107943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M1, %f3		! FGM	Group
7117943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M2, %f4		! FGM	Group
7127943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M4, %f6		! FGM	Group
7137943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M5, %f7		! FGM	Group	f2 available
7147943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f2, M12, %f2		! FGA
7157943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M6, %f8		! FGM	Group	f3 available
7167943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f3, M13, %f3		! FGA
7177943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f4, M14, %f4		! FGA	Group	f4 available
7187943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f2, %f6, %f2		! FGA	Group	stall, f2, f6, f7 available
7197943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f2, [%g2 + 0x00]	! LSU
7207943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f3, %f7, %f3		! FGA	Group	f3, f8 available
7217943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f3, [%g2 + 0x04]	! LSU
7227943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f4, %f8, %f4		! FGA	Group	f4 available
7237943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f4, [%g2 + 0x08]	! LSU
7247943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
7257943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul3:
7267943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ba	__set_v4f_3
7277943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
7287943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
7297943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	.globl	_mesa_sparc_transform_points2_3d_no_rot
7307943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul_mesa_sparc_transform_points2_3d_no_rot:
7317943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_STRIDE], %o5
7327943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o2 + V4F_START], %g1
7337943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o0 + V4F_START], %g2
7347943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_COUNT], %g3
7357943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
7367943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDMATRIX_0_5_12_13_14(%o1)
7377943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
7387943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%g3, 1
7397943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g3, [%o0 + V4F_COUNT]
7407943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bl	3f
7417943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 clr	%o3
7427943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
7437943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	2f
7447943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 andn	%g3, 1, %o2
7457943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
7467943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul1:	ld	[%g1 + 0x00], %f0	! LSU	Group
7477943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x04], %f1	! LSU	Group
7487943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%o3, 2, %o3		! IEU0
7497943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1		! IEU1
7507943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x00], %f4	! LSU	Group
7517943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M0, %f2		! FGM
7527943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x04], %f5	! LSU	Group
7537943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M5, %f3		! FGM
7547943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f4, M0, %f6		! FGM	Group
7557943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1		! IEU0
7567943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f5, M5, %f7		! FGM	Group
7577943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f2, M12, %f2		! FGA	Group	f2 available
7587943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f2, [%g2 + 0x00]	! LSU
7597943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f3, M13, %f3		! FGA	Group	f3 available
7607943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f3, [%g2 + 0x04]	! LSU
7617943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f6, M12, %f6		! FGA	Group	f6 available
7627943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	M14, [%g2 + 0x08]	! LSU
7637943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f7, M13, %f7		! FGA	Group	f7 available
7647943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f6, [%g2 + 0x10]	! LSU
7657943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f7, [%g2 + 0x14]	! LSU	Group
7667943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	M14, [%g2 + 0x18]	! LSU	Group
7677943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o3, %o2		! IEU1
7687943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bne	1b			! CTI
7697943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 add	%g2, 0x20, %g2		! IEU0	Group
7707943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
7717943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o3, %g3
7727943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	3f
7737943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
7747943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
7757943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul2:	ld	[%g1 + 0x00], %f0	! LSU	Group
7767943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x04], %f1	! LSU	Group
7777943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M0, %f2		! FGM	Group
7787943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M5, %f3		! FGM	Group
7797943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f2, M12, %f2		! FGA	Group, 2 cycle stall, f2 available
7807943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f2, [%g2 + 0x00]	! LSU
7817943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f3, M13, %f3		! FGA	Group	f3 available
7827943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f3, [%g2 + 0x04]	! LSU
7837943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	M14, [%g2 + 0x08]	! LSU	Group
7847943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
7857943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul3:	ld	[%o1 + (14 * 0x4)], %g3
7867943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%g3, 0
7877943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bne	__set_v4f_3
7887943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
7897943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ba	__set_v4f_2
7907943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
7917943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
7927943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	.globl	_mesa_sparc_transform_points2_perspective
7937943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul_mesa_sparc_transform_points2_perspective:
7947943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_STRIDE], %o5
7957943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o2 + V4F_START], %g1
7967943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o0 + V4F_START], %g2
7977943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_COUNT], %g3
7987943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
7997943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDMATRIX_0_5_14(%o1)
8007943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
8017943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%g3, 0
8027943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g3, [%o0 + V4F_COUNT]
8037943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	2f
8047943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 clr	%o1
8057943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
8067943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul1:	ld	[%g1 + 0x00], %f0
8077943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x04], %f1
8087943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%o1, 1, %o1
8097943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1
8107943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M0, %f2
8117943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f2, [%g2 + 0x00]
8127943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M5, %f3
8137943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f3, [%g2 + 0x04]
8147943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	M14, [%g2 + 0x08]
8157943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g0, [%g2 + 0x0c]
8167943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %g3
8177943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bne	1b
8187943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 add	%g2, 0x10, %g2
8197943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul2:
8207943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ba	__set_v4f_4
8217943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
8227943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
8237943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	.globl	_mesa_sparc_transform_points3_general
8247943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul_mesa_sparc_transform_points3_general:
8257943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_STRIDE], %o5
8267943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o2 + V4F_START], %g1
8277943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o0 + V4F_START], %g2
8287943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_COUNT], %g3
8297943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
8307943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDMATRIX_0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15(%o1)
8317943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
8327943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%g3, 0
8337943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g3, [%o0 + V4F_COUNT]
8347943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	2f
8357943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 clr	%o1
8367943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
8377943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul1:	ld	[%g1 + 0x00], %f0	! LSU	Group
8387943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x04], %f1	! LSU	Group
8397943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x08], %f2	! LSU	Group
8407943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%o1, 1, %o1		! IEU0
8417943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1		! IEU1
8427943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M0, %f3		! FGM
8437943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M4, %f7		! FGM	Group
8447943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M1, %f4		! FGM	Group
8457943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M5, %f8		! FGM	Group
8467943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M2, %f5		! FGM	Group	f3 available
8477943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M6, %f9		! FGM	Group	f7 available
8487943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f3, %f7, %f3		! FGA
8497943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M3, %f6		! FGM	Group	f4 available
8507943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M7, %f10		! FGM	Group	f8 available
8517943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f4, %f8, %f4		! FGA
8527943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f2, M8, %f7		! FGM	Group	f5 available
8537943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f2, M9, %f8		! FGM	Group	f9,f3 available
8547943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f5, %f9, %f5		! FGA
8557943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f2, M10, %f9		! FGM	Group	f6 available
8567943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f6, %f10, %f6		! FGA	Group	f10,f4 available
8577943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f2, M11, %f10		! FGM
8587943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f3, M12, %f3		! FGA	Group	f7 available
8597943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f4, M13, %f4		! FGA	Group	f8,f5 available
8607943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f5, M14, %f5		! FGA	Group	f9 available
8617943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f6, M15, %f6		! FGA	Group	f10,f6 available
8627943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f3, %f7, %f3		! FGA	Group	f3 available
8637943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f3, [%g2 + 0x00]	! LSU
8647943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f4, %f8, %f4		! FGA	Group	f4 available
8657943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f4, [%g2 + 0x04]	! LSU
8667943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f5, %f9, %f5		! FGA	Group	f5 available
8677943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f5, [%g2 + 0x08]	! LSU
8687943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f6, %f10, %f6		! FGA	Group	f6 available
8697943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f6, [%g2 + 0x0c]	! LSU
8707943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %g3		! IEU1
8717943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bne	1b			! CTI
8727943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 add	%g2, 0x10, %g2		! IEU0	Group
8737943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul2:
8747943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ba	__set_v4f_4
8757943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
8767943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
8777943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	.globl	_mesa_sparc_transform_points3_identity
8787943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul_mesa_sparc_transform_points3_identity:
8797943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_STRIDE], %o5
8807943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o2 + V4F_START], %g1
8817943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o0 + V4F_START], %g2
8827943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_COUNT], %g3
8837943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
8847943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%g3, 0
8857943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g3, [%o0 + V4F_COUNT]
8867943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	2f
8877943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 clr	%o1
8887943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
8897943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul1:	ld	[%g1 + 0x00], %f0
8907943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x04], %f1
8917943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x08], %f2
8927943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%o1, 1, %o1
8937943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1
8947943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %g3
8957943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f0, [%g2 + 0x00]
8967943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f1, [%g2 + 0x04]
8977943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f2, [%g2 + 0x08]
8987943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bne	1b
8997943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 add	%g2, 0x10, %g2
9007943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul2:
9017943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ba	__set_v4f_3
9027943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
9037943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
9047943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	.globl	_mesa_sparc_transform_points3_2d
9057943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul_mesa_sparc_transform_points3_2d:
9067943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_STRIDE], %o5
9077943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o2 + V4F_START], %g1
9087943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o0 + V4F_START], %g2
9097943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_COUNT], %g3
9107943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
9117943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDMATRIX_0_1_4_5_12_13(%o1)
9127943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
9137943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%g3, 0
9147943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g3, [%o0 + V4F_COUNT]
9157943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	2f
9167943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 clr	%o1
9177943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
9187943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul1:	ld	[%g1 + 0x00], %f0	! LSU	Group
9197943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x04], %f1	! LSU	Group
9207943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x08], %f2	! LSU	Group
9217943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%o1, 1, %o1		! IEU0
9227943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1		! IEU1
9237943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M0, %f3		! FGM
9247943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M1, %f4		! FGM	Group
9257943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M4, %f6		! FGM	Group
9267943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M5, %f7		! FGM	Group
9277943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f3, M12, %f3		! FGA	Group	f3 available
9287943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f4, M13, %f4		! FGA	Group	f4 available
9297943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f3, %f6, %f3		! FGA	Group	f6 available
9307943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f3, [%g2 + 0x00]	! LSU
9317943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f4, %f7, %f4		! FGA	Group	f7 available
9327943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f4, [%g2 + 0x04]	! LSU
9337943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f2, [%g2 + 0x08]	! LSU	Group
9347943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %g3		! IEU1
9357943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bne	1b			! CTI
9367943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 add	%g2, 0x10, %g2		! IEU0	Group
9377943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul2:
9387943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ba	__set_v4f_3
9397943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
9407943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
9417943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	.globl	_mesa_sparc_transform_points3_2d_no_rot
9427943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul_mesa_sparc_transform_points3_2d_no_rot:
9437943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_STRIDE], %o5
9447943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o2 + V4F_START], %g1
9457943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o0 + V4F_START], %g2
9467943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_COUNT], %g3
9477943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
9487943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDMATRIX_0_5_12_13(%o1)
9497943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
9507943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%g3, 0
9517943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g3, [%o0 + V4F_COUNT]
9527943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	2f
9537943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 clr	%o1
9547943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
9557943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul1:	ld	[%g1 + 0x00], %f0	! LSU	Group
9567943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x04], %f1	! LSU	Group
9577943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x08], %f2	! LSU	Group
9587943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%o1, 1, %o1		! IEU0
9597943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1		! IEU1
9607943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M0, %f3		! FGM
9617943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M5, %f4		! FGM	Group
9627943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f2, [%g2 + 0x08]	! LSU
9637943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f3, M12, %f3		! FGA	Group
9647943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f3, [%g2 + 0x00]	! LSU
9657943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f4, M13, %f4		! FGA	Group
9667943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f4, [%g2 + 0x04]	! LSU
9677943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %g3		! IEU1
9687943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bne	1b			! CTI
9697943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 add	%g2, 0x10, %g2		! IEU0	Group
9707943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul2:
9717943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ba	__set_v4f_3
9727943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
9737943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
9747943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	.globl	_mesa_sparc_transform_points3_3d
9757943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul_mesa_sparc_transform_points3_3d:
9767943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_STRIDE], %o5
9777943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o2 + V4F_START], %g1
9787943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o0 + V4F_START], %g2
9797943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_COUNT], %g3
9807943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
9817943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDMATRIX_0_1_2_4_5_6_8_9_10_12_13_14(%o1)
9827943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
9837943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%g3, 0
9847943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g3, [%o0 + V4F_COUNT]
9857943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	2f
9867943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 clr	%o1
9877943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
9887943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul1:	ld	[%g1 + 0x00], %f0	! LSU	Group
9897943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x04], %f1	! LSU	Group
9907943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x08], %f2	! LSU	Group
9917943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%o1, 1, %o1		! IEU0
9927943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1		! IEU1
9937943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M0, %f3		! FGM
9947943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M4, %f6		! FGM	Group
9957943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M1, %f4		! FGM	Group
9967943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M5, %f7		! FGM	Group
9977943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M2, %f5		! FGM	Group	f3 available
9987943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M6, %f8		! FGM	Group	f6 available
9997943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f3, %f6, %f3		! FGA
10007943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f2, M8, %f9		! FGM	Group	f4 available
10017943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f2, M9, %f10		! FGM	Group	f7 available
10027943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f4, %f7, %f4		! FGA
10037943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f2, M10, %f11		! FGM	Group	f5 available
10047943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f5, %f8, %f5		! FGA	Group	f8, f3 available
10057943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f3, %f9, %f3		! FGA	Group	f9 available
10067943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f4, %f10, %f4		! FGA	Group	f10, f4 available
10077943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f5, %f11, %f5		! FGA	Group	stall, f11, f5 available
10087943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f3, M12, %f3		! FGA	Group	f3 available
10097943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f3, [%g2 + 0x00]	! LSU
10107943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f4, M13, %f4		! FGA	Group	f4 available
10117943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f4, [%g2 + 0x04]	! LSU
10127943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f5, M14, %f5		! FGA	Group	f5 available
10137943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f5, [%g2 + 0x08]	! LSU
10147943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %g3		! IEU1
10157943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bne	1b			! CTI
10167943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 add	%g2, 0x10, %g2		! IEU0	Group
10177943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul2:
10187943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ba	__set_v4f_3
10197943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
10207943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
10217943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	.globl	_mesa_sparc_transform_points3_3d_no_rot
10227943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul_mesa_sparc_transform_points3_3d_no_rot:
10237943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_STRIDE], %o5
10247943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o2 + V4F_START], %g1
10257943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o0 + V4F_START], %g2
10267943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_COUNT], %g3
10277943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
10287943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDMATRIX_0_5_10_12_13_14(%o1)
10297943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
10307943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%g3, 0
10317943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g3, [%o0 + V4F_COUNT]
10327943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	2f
10337943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 clr	%o1
10347943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
10357943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul1:	ld	[%g1 + 0x00], %f0	! LSU	Group
10367943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x04], %f1	! LSU	Group
10377943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x08], %f2	! LSU	Group
10387943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%o1, 1, %o1		! IEU0
10397943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1		! IEU1
10407943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %g3		! IEU1	Group
10417943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M0, %f3		! FGM
10427943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M5, %f4		! FGM	Group
10437943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f2, M10, %f5		! FGM	Group
10447943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f3, M12, %f3		! FGA	Group, stall, f3 available
10457943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f3, [%g2 + 0x00]	! LSU
10467943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f4, M13, %f4		! FGA	Group, f4 available
10477943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f4, [%g2 + 0x04]	! LSU
10487943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f5, M14, %f5		! FGA	Group, f5 available
10497943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f5, [%g2 + 0x08]	! LEU
10507943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bne	1b			! CTI
10517943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 add	%g2, 0x10, %g2		! IEU0	Group
10527943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul2:
10537943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ba	__set_v4f_3
10547943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
10557943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
10567943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	.globl	_mesa_sparc_transform_points3_perspective
10577943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul_mesa_sparc_transform_points3_perspective:
10587943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_STRIDE], %o5
10597943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o2 + V4F_START], %g1
10607943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o0 + V4F_START], %g2
10617943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_COUNT], %g3
10627943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
10637943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDMATRIX_0_5_8_9_10_14(%o1)
10647943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
10657943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%g3, 0
10667943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g3, [%o0 + V4F_COUNT]
10677943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	2f
10687943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 clr	%o1
10697943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
10707943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul1:	ld	[%g1 + 0x00], %f0	! LSU	Group
10717943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x04], %f1	! LSU	Group
10727943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x08], %f2	! LSU	Group
10737943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%o1, 1, %o1		! IEU0
10747943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1		! IEU1
10757943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M0, %f3		! FGM
10767943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f2, M8, %f6		! FGM	Group
10777943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M5, %f4		! FGM	Group
10787943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f2, M9, %f7		! FGM	Group
10797943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f2, M10, %f5		! FGM	Group	f3 available
10807943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f3, %f6, %f3		! FGA	Group	f6 available
10817943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f3, [%g2 + 0x00]	! LSU
10827943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f4, %f7, %f4		! FGA	Group	stall, f4, f7 available
10837943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f4, [%g2 + 0x04]	! LSU
10847943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f5, M14, %f5		! FGA	Group
10857943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f5, [%g2 + 0x08]	! LSU
10867943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fnegs	%f2, %f6		! FGA	Group
10877943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f6, [%g2 + 0x0c]	! LSU
10887943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %g3		! IEU1
10897943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bne	1b			! CTI
10907943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 add	%g2, 0x10, %g2		! IEU0	Group
10917943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul2:
10927943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ba	__set_v4f_4
10937943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
10947943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
10957943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	.globl	_mesa_sparc_transform_points4_general
10967943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul_mesa_sparc_transform_points4_general:
10977943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_STRIDE], %o5
10987943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o2 + V4F_START], %g1
10997943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o0 + V4F_START], %g2
11007943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_COUNT], %g3
11017943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
11027943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDMATRIX_0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15(%o1)
11037943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
11047943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%g3, 0
11057943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g3, [%o0 + V4F_COUNT]
11067943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	2f
11077943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 clr	%o1
11087943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
11097943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul1:	ld	[%g1 + 0x00], %f0	! LSU	Group
11107943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x04], %f1	! LSU	Group
11117943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x08], %f2	! LSU	Group
11127943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x0c], %f3	! LSU	Group
11137943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%o1, 1, %o1		! IEU0
11147943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1		! IEU1
11157943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M0, %f4		! FGM	Group
11167943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M4, %f8		! FGM	Group
11177943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M1, %f5		! FGM	Group
11187943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M5, %f9		! FGM	Group
11197943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M2, %f6		! FGM	Group	f4 available
11207943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M6, %f10		! FGM	Group	f8 available
11217943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f4, %f8, %f4		! FGA
11227943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M3, %f7		! FGM	Group	f5 available
11237943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M7, %f11		! FGM	Group	f9 available
11247943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f5, %f9, %f5		! FGA
11257943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f2, M8, %f12		! FGM	Group	f6 available
11267943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f2, M9, %f13		! FGM	Group	f10, f4 available
11277943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f6, %f10, %f6		! FGA
11287943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f2, M10, %f14		! FGM	Group	f7 available
11297943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f2, M11, %f15		! FGM	Group	f11, f5 available
11307943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f7, %f11, %f7		! FGA
11317943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f3, M12, %f8		! FGM	Group	f12 available
11327943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f4, %f12, %f4		! FGA
11337943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f3, M13, %f9		! FGM	Group	f13, f6 available
11347943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f5, %f13, %f5		! FGA
11357943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f3, M14, %f10		! FGM	Group	f14 available
11367943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f6, %f14, %f6		! FGA
11377943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f3, M15, %f11		! FGM	Group	f15, f7 available
11387943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f7, %f15, %f7		! FGA
11397943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f4, %f8, %f4		! FGA	Group	f8, f4 available
11407943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f4, [%g2 + 0x00]	! LSU
11417943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f5, %f9, %f5		! FGA	Group	f9, f5 available
11427943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f5, [%g2 + 0x04]	! LSU
11437943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f6, %f10, %f6		! FGA	Group	f10, f6 available
11447943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f6, [%g2 + 0x08]	! LSU
11457943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f7, %f11, %f7		! FGA	Group	f11, f7 available
11467943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f7, [%g2 + 0x0c]	! LSU
11477943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %g3		! IEU1
11487943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bne	1b			! CTI
11497943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 add	%g2, 0x10, %g2		! IEU0	Group
11507943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul2:
11517943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ba	__set_v4f_4
11527943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
11537943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
11547943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	.globl	_mesa_sparc_transform_points4_identity
11557943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul_mesa_sparc_transform_points4_identity:
11567943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_STRIDE], %o5
11577943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o2 + V4F_START], %g1
11587943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o0 + V4F_START], %g2
11597943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_COUNT], %g3
11607943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
11617943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%g3, 0
11627943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g3, [%o0 + V4F_COUNT]
11637943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	2f
11647943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 clr	%o1
11657943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
11667943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul1:	ld	[%g1 + 0x00], %f0
11677943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x04], %f1
11687943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x08], %f2
11697943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%o1, 1, %o1
11707943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x0c], %f3
11717943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1
11727943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f0, [%g2 + 0x00]
11737943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f1, [%g2 + 0x04]
11747943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f2, [%g2 + 0x08]
11757943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %g3
11767943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f3, [%g2 + 0x0c]
11777943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bne	1b
11787943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 add	%g2, 0x10, %g2
11797943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul2:
11807943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ba	__set_v4f_4
11817943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
11827943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
11837943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	.globl	_mesa_sparc_transform_points4_2d
11847943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul_mesa_sparc_transform_points4_2d:
11857943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_STRIDE], %o5
11867943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o2 + V4F_START], %g1
11877943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o0 + V4F_START], %g2
11887943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_COUNT], %g3
11897943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
11907943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDMATRIX_0_1_4_5_12_13(%o1)
11917943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
11927943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%g3, 0
11937943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g3, [%o0 + V4F_COUNT]
11947943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	2f
11957943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 clr	%o1
11967943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
11977943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul1:	ld	[%g1 + 0x00], %f0	! LSU	Group
11987943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x04], %f1	! LSU	Group
11997943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x08], %f2	! LSU	Group
12007943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x0c], %f3	! LSU	Group
12017943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%o1, 1, %o1		! IEU0
12027943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1		! IEU1
12037943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M0, %f4		! FGM
12047943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M4, %f8		! FGM	Group
12057943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M1, %f5		! FGM	Group
12067943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M5, %f9		! FGM	Group	f4 available
12077943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f3, M12, %f12		! FGM	Group
12087943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f3, M13, %f13		! FGM	Group	f8 available
12097943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f4, %f8, %f4		! FGA
12107943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f5, %f9, %f5		! FGA	Group	stall, f5, f9 available
12117943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f4, %f12, %f4		! FGA	Group	2 cycle stall, f4, f12, f13 avail
12127943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f4, [%g2 + 0x00]	! LSU
12137943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f5, %f13, %f5		! FGA	Group	f5 available
12147943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f5, [%g2 + 0x04]	! LSU
12157943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f2, [%g2 + 0x08]	! LSU	Group
12167943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f3, [%g2 + 0x0c]	! LSU	Group
12177943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %g3		! IEU1
12187943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bne	1b			! CTI
12197943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 add	%g2, 0x10, %g2		! IEU0	Group
12207943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul2:
12217943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ba	__set_v4f_4
12227943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
12237943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
12247943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	.globl	_mesa_sparc_transform_points4_2d_no_rot
12257943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul_mesa_sparc_transform_points4_2d_no_rot:
12267943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_STRIDE], %o5
12277943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o2 + V4F_START], %g1
12287943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o0 + V4F_START], %g2
12297943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_COUNT], %g3
12307943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
12317943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDMATRIX_0_1_4_5_12_13(%o1)
12327943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
12337943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%g3, 0
12347943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g3, [%o0 + V4F_COUNT]
12357943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	2f
12367943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 clr	%o1
12377943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
12387943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul1:	ld	[%g1 + 0x00], %f0
12397943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x04], %f1
12407943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x08], %f2
12417943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x0c], %f3
12427943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%o1, 1, %o1
12437943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1
12447943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M0, %f4
12457943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f3, M12, %f8
12467943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M5, %f5
12477943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f3, M13, %f9
12487943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f4, %f8, %f4
12497943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f4, [%g2 + 0x00]
12507943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f5, %f9, %f5
12517943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f5, [%g2 + 0x04]
12527943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f2, [%g2 + 0x08]
12537943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f3, [%g2 + 0x0c]
12547943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %g3
12557943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bne	1b
12567943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 add	%g2, 0x10, %g2
12577943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul2:
12587943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ba	__set_v4f_4
12597943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
12607943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
12617943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	.globl	_mesa_sparc_transform_points4_3d
12627943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul_mesa_sparc_transform_points4_3d:
12637943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_STRIDE], %o5
12647943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o2 + V4F_START], %g1
12657943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o0 + V4F_START], %g2
12667943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_COUNT], %g3
12677943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
12687943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDMATRIX_0_1_2_4_5_6_8_9_10_12_13_14(%o1)
12697943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
12707943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%g3, 0
12717943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g3, [%o0 + V4F_COUNT]
12727943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	2f
12737943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 clr	%o1
12747943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
12757943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul1:	ld	[%g1 + 0x00], %f0	! LSU	Group
12767943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x04], %f1	! LSU	Group
12777943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x08], %f2	! LSU	Group
12787943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x0c], %f3	! LSU	Group
12797943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%o1, 1, %o1		! IEU0
12807943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1		! IEU1
12817943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M0, %f4		! FGM
12827943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M4, %f7		! FGM	Group
12837943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M1, %f5		! FGM	Group
12847943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M5, %f8		! FGM	Group
12857943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M2, %f6		! FGM	Group	f4 available
12867943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M6, %f9		! FGM	Group	f7 available
12877943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f4, %f7, %f4		! FGA
12887943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f2, M8, %f10		! FGM	Group	f5 available
12897943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f2, M9, %f11		! FGM	Group	f8 available
12907943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f5, %f8, %f5		! FGA
12917943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f2, M10, %f12		! FGM	Group	f6 available
12927943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f3, M12, %f13		! FGM	Group	f9, f4 available
12937943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f6, %f9, %f6		! FGA
12947943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f3, M13, %f14		! FGM	Group	f10 available
12957943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f4, %f10, %f4		! FGA
12967943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f3, M14, %f15		! FGM	Group	f11, f5 available
12977943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f5, %f11, %f5		! FGA
12987943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f6, %f12, %f6		! FGA	Group	stall, f12, f13, f6 available
12997943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f4, %f13, %f4		! FGA	Group	f14, f4 available
13007943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f4, [%g2 + 0x00]	! LSU
13017943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f5, %f14, %f5		! FGA	Group	f15, f5 available
13027943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f5, [%g2 + 0x04]	! LSU
13037943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f6, %f15, %f6		! FGA	Group	f6 available
13047943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f6, [%g2 + 0x08]	! LSU
13057943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f3, [%g2 + 0x0c]	! LSU	Group
13067943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %g3		! IEU1
13077943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bne	1b			! CTI
13087943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 add	%g2, 0x10, %g2		! IEU0	Group
13097943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul2:
13107943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ba	__set_v4f_4
13117943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
13127943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
13137943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	.globl	_mesa_sparc_transform_points4_3d_no_rot
13147943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul_mesa_sparc_transform_points4_3d_no_rot:
13157943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_STRIDE], %o5
13167943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o2 + V4F_START], %g1
13177943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o0 + V4F_START], %g2
13187943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_COUNT], %g3
13197943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
13207943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDMATRIX_0_5_10_12_13_14(%o1)
13217943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
13227943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%g3, 0
13237943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g3, [%o0 + V4F_COUNT]
13247943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	2f
13257943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 clr	%o1
13267943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
13277943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul1:	ld	[%g1 + 0x00], %f0	! LSU	Group
13287943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x04], %f1	! LSU	Group
13297943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x08], %f2	! LSU	Group
13307943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x0c], %f3	! LSU	Group
13317943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%o1, 1, %o1		! IEU0
13327943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1		! IEU1
13337943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M0, %f4		! FGM
13347943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f3, M12, %f7		! FGM	Group
13357943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M5, %f5		! FGM	Group
13367943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f3, M13, %f8		! FGM	Group
13377943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f2, M10, %f6		! FGM	Group	f4 available
13387943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f3, M14, %f9		! FGM	Group	f7 available
13397943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f4, %f7, %f4		! FGA
13407943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f4, [%g2 + 0x00]	! LSU
13417943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f5, %f8, %f5		! FGA	Group	stall, f5, f8 available
13427943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f5, [%g2 + 0x04]	! LSU
13437943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f6, %f9, %f6		! FGA	Group	stall, f6, f9 available
13447943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f6, [%g2 + 0x08]	! LSU
13457943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f3, [%g2 + 0x0c]	! LSU	Group
13467943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %g3		! IEU1
13477943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bne	1b			! CTI
13487943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 add	%g2, 0x10, %g2		! IEU0	Group
13497943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul2:
13507943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ba	__set_v4f_4
13517943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
13527943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
13537943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	.globl	_mesa_sparc_transform_points4_perspective
13547943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul_mesa_sparc_transform_points4_perspective:
13557943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_STRIDE], %o5
13567943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o2 + V4F_START], %g1
13577943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDPTR	[%o0 + V4F_START], %g2
13587943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%o2 + V4F_COUNT], %g3
13597943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
13607943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	LDMATRIX_0_5_8_9_10_14(%o1)
13617943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
13627943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%g3, 0
13637943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%g3, [%o0 + V4F_COUNT]
13647943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	be	2f
13657943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 clr	%o1
13667943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
13677943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul1:	ld	[%g1 + 0x00], %f0	! LSU	Group
13687943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x04], %f1	! LSU	Group
13697943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x08], %f2	! LSU	Group
13707943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[%g1 + 0x0c], %f3	! LSU	Group
13717943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%o1, 1, %o1		! IEU0
13727943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	add	%g1, %o5, %g1		! IEU1
13737943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f0, M0, %f4		! FGM
13747943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f2, M8, %f7		! FGM	Group
13757943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f1, M5, %f5		! FGM	Group
13767943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f2, M9, %f8		! FGM	Group
13777943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f2, M10, %f6		! FGM	Group	f4 available
13787943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fmuls	%f3, M14, %f9		! FGM	Group	f7 available
13797943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f4, %f7, %f4		! FGA
13807943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f4, [%g2 + 0x00]	! LSU
13817943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f5, %f8, %f5		! FGA	Group	stall, f5, f8 available
13827943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f5, [%g2 + 0x04]	! LSU
13837943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fadds	%f6, %f9, %f6		! FGA	Group	stall, f6, f9 available
13847943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f6, [%g2 + 0x08]	! LSU
13857943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	fnegs	%f2, %f7		! FGA	Group
13867943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	st	%f7, [%g2 + 0x0c]	! LSU
13877943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	cmp	%o1, %g3		! IEU1
13887943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	bne	1b			! CTI
13897943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 add	%g2, 0x10, %g2		! IEU0	Group
13907943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul2:
13917943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ba	__set_v4f_4
13927943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	 nop
1393