19a90cd40c6e510484e018afd087a4c239b616ee0Brian Paul/*
29a90cd40c6e510484e018afd087a4c239b616ee0Brian Paul * SPARC assembly matrix code.
39a90cd40c6e510484e018afd087a4c239b616ee0Brian Paul */
4775355a88a0927e2e3a855036c26950397a61d7bdavem
5775355a88a0927e2e3a855036c26950397a61d7bdavem#ifndef _SPARC_MATRIX_H
6775355a88a0927e2e3a855036c26950397a61d7bdavem#define _SPARC_MATRIX_H
7775355a88a0927e2e3a855036c26950397a61d7bdavem
89f23a3a1bff6c8af93e651273c9887bbf119f555Ian Romanick#ifdef __arch64__
9775355a88a0927e2e3a855036c26950397a61d7bdavem#define LDPTR		ldx
10775355a88a0927e2e3a855036c26950397a61d7bdavem#define MAT_M		0x00
11775355a88a0927e2e3a855036c26950397a61d7bdavem#define MAT_INV		0x08
12775355a88a0927e2e3a855036c26950397a61d7bdavem#define V4F_DATA	0x00
13775355a88a0927e2e3a855036c26950397a61d7bdavem#define V4F_START	0x08
14775355a88a0927e2e3a855036c26950397a61d7bdavem#define V4F_COUNT	0x10
15775355a88a0927e2e3a855036c26950397a61d7bdavem#define V4F_STRIDE	0x14
16775355a88a0927e2e3a855036c26950397a61d7bdavem#define V4F_SIZE	0x18
17775355a88a0927e2e3a855036c26950397a61d7bdavem#define V4F_FLAGS	0x1c
18775355a88a0927e2e3a855036c26950397a61d7bdavem#else
19775355a88a0927e2e3a855036c26950397a61d7bdavem#define LDPTR		ld
20775355a88a0927e2e3a855036c26950397a61d7bdavem#define MAT_M		0x00
21775355a88a0927e2e3a855036c26950397a61d7bdavem#define MAT_INV		0x04
22775355a88a0927e2e3a855036c26950397a61d7bdavem#define V4F_DATA	0x00
23775355a88a0927e2e3a855036c26950397a61d7bdavem#define V4F_START	0x04
24775355a88a0927e2e3a855036c26950397a61d7bdavem#define V4F_COUNT	0x08
25775355a88a0927e2e3a855036c26950397a61d7bdavem#define V4F_STRIDE	0x0c
26775355a88a0927e2e3a855036c26950397a61d7bdavem#define V4F_SIZE	0x10
27775355a88a0927e2e3a855036c26950397a61d7bdavem#define V4F_FLAGS	0x14
28775355a88a0927e2e3a855036c26950397a61d7bdavem#endif
29775355a88a0927e2e3a855036c26950397a61d7bdavem
30775355a88a0927e2e3a855036c26950397a61d7bdavem#define VEC_SIZE_1   	1
31775355a88a0927e2e3a855036c26950397a61d7bdavem#define VEC_SIZE_2   	3
32775355a88a0927e2e3a855036c26950397a61d7bdavem#define VEC_SIZE_3   	7
33775355a88a0927e2e3a855036c26950397a61d7bdavem#define VEC_SIZE_4   	15
347943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
357943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define M0		%f16
367943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define M1		%f17
377943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define M2		%f18
387943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define M3		%f19
397943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define M4		%f20
407943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define M5		%f21
417943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define M6		%f22
427943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define M7		%f23
437943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define M8		%f24
447943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define M9		%f25
457943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define M10		%f26
467943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define M11		%f27
477943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define M12		%f28
487943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define M13		%f29
497943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define M14		%f30
507943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define M15		%f31
517943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
527943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define LDMATRIX_0_1_2_3_12_13_14_15(BASE)	\
537943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + ( 0 * 0x4)], M0;	\
547943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + ( 2 * 0x4)], M2;	\
557943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + (12 * 0x4)], M12;	\
567943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + (14 * 0x4)], M14
577943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
587943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define LDMATRIX_0_1_12_13(BASE)		\
597943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + ( 0 * 0x4)], M0;	\
607943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + (12 * 0x4)], M12
617943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
627943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define LDMATRIX_0_12_13(BASE)			\
637943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[BASE + ( 0 * 0x4)], M0;	\
647943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + (12 * 0x4)], M12
657943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
667943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define LDMATRIX_0_1_2_12_13_14(BASE)		\
677943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + ( 0 * 0x4)], M0;	\
687943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[BASE + ( 2 * 0x4)], M2;	\
697943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + (12 * 0x4)], M12;	\
707943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[BASE + (14 * 0x4)], M14
717943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
727943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define LDMATRIX_0_12_13_14(BASE)		\
737943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[BASE + ( 0 * 0x4)], M0;	\
747943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + (12 * 0x4)], M12;	\
757943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[BASE + (14 * 0x4)], M14
767943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
777943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define LDMATRIX_0_14(BASE)			\
787943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[BASE + ( 0 * 0x4)], M0;	\
797943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[BASE + (14 * 0x4)], M14
807943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
817943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define LDMATRIX_0_1_2_3_4_5_6_7_12_13_14_15(BASE) \
827943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + ( 0 * 0x4)], M0;	\
837943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + ( 2 * 0x4)], M2;	\
847943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + ( 4 * 0x4)], M4;	\
857943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + ( 6 * 0x4)], M6;	\
867943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + (12 * 0x4)], M12;	\
877943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + (14 * 0x4)], M14
887943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
897943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define LDMATRIX_0_5_12_13(BASE) 		\
907943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[BASE + ( 0 * 0x4)], M0;	\
917943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[BASE + ( 5 * 0x4)], M5;	\
927943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + (12 * 0x4)], M12
937943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
947943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define LDMATRIX_0_1_2_3_4_5_6_12_13_14(BASE)	\
957943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + ( 0 * 0x4)], M0;	\
967943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + ( 2 * 0x4)], M2;	\
977943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + ( 4 * 0x4)], M4;	\
987943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[BASE + ( 6 * 0x4)], M6;	\
997943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + (12 * 0x4)], M12;	\
1007943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[BASE + (14 * 0x4)], M14
1017943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
1027943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define LDMATRIX_0_5_12_13_14(BASE)		\
1037943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[BASE + ( 0 * 0x4)], M0;	\
1047943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[BASE + ( 5 * 0x4)], M5;	\
1057943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + (12 * 0x4)], M12;	\
1067943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[BASE + (14 * 0x4)], M14
1077943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
1087943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define LDMATRIX_0_5_14(BASE)			\
1097943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[BASE + ( 0 * 0x4)], M0;	\
1107943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[BASE + ( 5 * 0x4)], M5;	\
1117943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[BASE + (14 * 0x4)], M14
1127943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
1137943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define LDMATRIX_0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15(BASE) \
1147943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + ( 0 * 0x4)], M0;	\
1157943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + ( 2 * 0x4)], M2;	\
1167943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + ( 4 * 0x4)], M4;	\
1177943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + ( 6 * 0x4)], M6;	\
1187943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + ( 8 * 0x4)], M8;	\
1197943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + (10 * 0x4)], M10;	\
1207943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + (12 * 0x4)], M12;	\
1217943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + (14 * 0x4)], M14
1227943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
1237943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define LDMATRIX_0_1_4_5_12_13(BASE) 		\
1247943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + ( 0 * 0x4)], M0;	\
1257943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + ( 4 * 0x4)], M4;	\
1267943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + (12 * 0x4)], M12
1277943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
1287943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define LDMATRIX_0_5_12_13(BASE) 		\
1297943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[BASE + ( 0 * 0x4)], M0;	\
1307943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[BASE + ( 5 * 0x4)], M5;	\
1317943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + (12 * 0x4)], M12
1327943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
133775355a88a0927e2e3a855036c26950397a61d7bdavem#define LDMATRIX_0_1_2_4_5_6_8_9_10(BASE) \
134775355a88a0927e2e3a855036c26950397a61d7bdavem	ldd	[BASE + ( 0 * 0x4)], M0;	\
135775355a88a0927e2e3a855036c26950397a61d7bdavem	ld	[BASE + ( 2 * 0x4)], M2;	\
136775355a88a0927e2e3a855036c26950397a61d7bdavem	ldd	[BASE + ( 4 * 0x4)], M4;	\
137775355a88a0927e2e3a855036c26950397a61d7bdavem	ld	[BASE + ( 6 * 0x4)], M6;	\
138775355a88a0927e2e3a855036c26950397a61d7bdavem	ldd	[BASE + ( 8 * 0x4)], M8;	\
139775355a88a0927e2e3a855036c26950397a61d7bdavem	ld	[BASE + (10 * 0x4)], M10
140775355a88a0927e2e3a855036c26950397a61d7bdavem
1417943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define LDMATRIX_0_1_2_4_5_6_8_9_10_12_13_14(BASE) \
1427943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + ( 0 * 0x4)], M0;	\
1437943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[BASE + ( 2 * 0x4)], M2;	\
1447943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + ( 4 * 0x4)], M4;	\
1457943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[BASE + ( 6 * 0x4)], M6;	\
1467943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + ( 8 * 0x4)], M8;	\
1477943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[BASE + (10 * 0x4)], M10;	\
1487943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + (12 * 0x4)], M12;	\
1497943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[BASE + (14 * 0x4)], M14
1507943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
1516f365c21d796310a9ea70d8420e6879eb5abb6aedavem#define LDMATRIX_0_5_10(BASE) 			\
1526f365c21d796310a9ea70d8420e6879eb5abb6aedavem	ld	[BASE + ( 0 * 0x4)], M0;	\
1536f365c21d796310a9ea70d8420e6879eb5abb6aedavem	ld	[BASE + ( 5 * 0x4)], M5;	\
1546f365c21d796310a9ea70d8420e6879eb5abb6aedavem	ld	[BASE + (10 * 0x4)], M10;	\
1556f365c21d796310a9ea70d8420e6879eb5abb6aedavem
1567943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define LDMATRIX_0_5_10_12_13_14(BASE) 		\
1577943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[BASE + ( 0 * 0x4)], M0;	\
1587943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[BASE + ( 5 * 0x4)], M5;	\
1597943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[BASE + (10 * 0x4)], M10;	\
1607943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + (12 * 0x4)], M12;	\
1617943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[BASE + (14 * 0x4)], M14
1627943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
1637943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define LDMATRIX_0_5_8_9_10_14(BASE) 		\
1647943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[BASE + ( 0 * 0x4)], M0;	\
1657943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[BASE + ( 5 * 0x4)], M5;	\
1667943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ldd	[BASE + ( 8 * 0x4)], M8;	\
1677943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[BASE + (10 * 0x4)], M10;	\
1687943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul	ld	[BASE + (14 * 0x4)], M14
1697943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul
170775355a88a0927e2e3a855036c26950397a61d7bdavem#endif /* !(_SPARC_MATRIX_H) */
171