Merge branch 'mesa_7_7_branch'
[mesa.git] / src / mesa / sparc / sparc_matrix.h
index 4b452fd5e3af59625a5914fd508ceb026fee1270..f677d9bda132b53c332962a97c9b9bdc93dccaa2 100644 (file)
@@ -1,4 +1,36 @@
-/* $Id: sparc_matrix.h,v 1.1 2001/05/23 14:27:03 brianp Exp $ */
+/*
+ * SPARC assembly matrix code.
+ */
+
+#ifndef _SPARC_MATRIX_H
+#define _SPARC_MATRIX_H
+
+#ifdef __arch64__
+#define LDPTR          ldx
+#define MAT_M          0x00
+#define MAT_INV                0x08
+#define V4F_DATA       0x00
+#define V4F_START      0x08
+#define V4F_COUNT      0x10
+#define V4F_STRIDE     0x14
+#define V4F_SIZE       0x18
+#define V4F_FLAGS      0x1c
+#else
+#define LDPTR          ld
+#define MAT_M          0x00
+#define MAT_INV                0x04
+#define V4F_DATA       0x00
+#define V4F_START      0x04
+#define V4F_COUNT      0x08
+#define V4F_STRIDE     0x0c
+#define V4F_SIZE       0x10
+#define V4F_FLAGS      0x14
+#endif
+
+#define VEC_SIZE_1     1
+#define VEC_SIZE_2     3
+#define VEC_SIZE_3     7
+#define VEC_SIZE_4     15
 
 #define M0             %f16
 #define M1             %f17
 #define M14            %f30
 #define M15            %f31
 
-/* Seems to work, disable if unaligned traps begin to appear... -DaveM */
-#define USE_LD_DOUBLE
-
-#ifndef USE_LD_DOUBLE
-
-#define LDMATRIX_0_1_2_3_12_13_14_15(BASE)     \
-       ld      [BASE + ( 0 * 0x4)], M0;        \
-       ld      [BASE + ( 1 * 0x4)], M1;        \
-       ld      [BASE + ( 2 * 0x4)], M2;        \
-       ld      [BASE + ( 3 * 0x4)], M3;        \
-       ld      [BASE + (12 * 0x4)], M12;       \
-       ld      [BASE + (13 * 0x4)], M13;       \
-       ld      [BASE + (14 * 0x4)], M14;       \
-       ld      [BASE + (15 * 0x4)], M15
-
-#define LDMATRIX_0_1_12_13(BASE)               \
-       ld      [BASE + ( 0 * 0x4)], M0;        \
-       ld      [BASE + ( 1 * 0x4)], M1;        \
-       ld      [BASE + (12 * 0x4)], M12;       \
-       ld      [BASE + (13 * 0x4)], M13
-
-#define LDMATRIX_0_12_13(BASE)                 \
-       ld      [BASE + ( 0 * 0x4)], M0;        \
-       ld      [BASE + (12 * 0x4)], M12;       \
-       ld      [BASE + (13 * 0x4)], M13
-
-#define LDMATRIX_0_1_2_12_13_14(BASE)          \
-       ld      [BASE + ( 0 * 0x4)], M0;        \
-       ld      [BASE + ( 1 * 0x4)], M1;        \
-       ld      [BASE + ( 2 * 0x4)], M2;        \
-       ld      [BASE + (12 * 0x4)], M12;       \
-       ld      [BASE + (13 * 0x4)], M13;       \
-       ld      [BASE + (14 * 0x4)], M14
-
-#define LDMATRIX_0_12_13_14(BASE)              \
-       ld      [BASE + ( 0 * 0x4)], M0;        \
-       ld      [BASE + (12 * 0x4)], M12;       \
-       ld      [BASE + (13 * 0x4)], M13;       \
-       ld      [BASE + (14 * 0x4)], M14
-
-#define LDMATRIX_0_14(BASE)                    \
-       ld      [BASE + ( 0 * 0x4)], M0;        \
-       ld      [BASE + (14 * 0x4)], M14
-
-#define LDMATRIX_0_1_2_3_4_5_6_7_12_13_14_15(BASE) \
-       ld      [BASE + ( 0 * 0x4)], M0;        \
-       ld      [BASE + ( 1 * 0x4)], M1;        \
-       ld      [BASE + ( 2 * 0x4)], M2;        \
-       ld      [BASE + ( 3 * 0x4)], M3;        \
-       ld      [BASE + ( 4 * 0x4)], M4;        \
-       ld      [BASE + ( 5 * 0x4)], M5;        \
-       ld      [BASE + ( 6 * 0x4)], M6;        \
-       ld      [BASE + ( 7 * 0x4)], M7;        \
-       ld      [BASE + (12 * 0x4)], M12;       \
-       ld      [BASE + (13 * 0x4)], M13;       \
-       ld      [BASE + (14 * 0x4)], M14;       \
-       ld      [BASE + (15 * 0x4)], M15
-
-#define LDMATRIX_0_1_4_5_12_13(BASE)           \
-       ld      [BASE + ( 0 * 0x4)], M0;        \
-       ld      [BASE + ( 1 * 0x4)], M1;        \
-       ld      [BASE + ( 4 * 0x4)], M4;        \
-       ld      [BASE + ( 5 * 0x4)], M5;        \
-       ld      [BASE + (12 * 0x4)], M12;       \
-       ld      [BASE + (13 * 0x4)], M13
-
-#define LDMATRIX_0_5_12_13(BASE)               \
-       ld      [BASE + ( 0 * 0x4)], M0;        \
-       ld      [BASE + ( 5 * 0x4)], M5;        \
-       ld      [BASE + (12 * 0x4)], M12;       \
-       ld      [BASE + (13 * 0x4)], M13
-
-#define LDMATRIX_0_1_2_3_4_5_6_12_13_14(BASE)  \
-       ld      [BASE + ( 0 * 0x4)], M0;        \
-       ld      [BASE + ( 1 * 0x4)], M1;        \
-       ld      [BASE + ( 2 * 0x4)], M2;        \
-       ld      [BASE + ( 3 * 0x4)], M3;        \
-       ld      [BASE + ( 4 * 0x4)], M4;        \
-       ld      [BASE + ( 5 * 0x4)], M5;        \
-       ld      [BASE + ( 6 * 0x4)], M6;        \
-       ld      [BASE + (12 * 0x4)], M12;       \
-       ld      [BASE + (13 * 0x4)], M13;       \
-       ld      [BASE + (14 * 0x4)], M14
-
-#define LDMATRIX_0_5_12_13_14(BASE)            \
-       ld      [BASE + ( 0 * 0x4)], M0;        \
-       ld      [BASE + ( 5 * 0x4)], M5;        \
-       ld      [BASE + (12 * 0x4)], M12;       \
-       ld      [BASE + (13 * 0x4)], M13;       \
-       ld      [BASE + (14 * 0x4)], M14
-
-#define LDMATRIX_0_5_14(BASE)                  \
-       ld      [BASE + ( 0 * 0x4)], M0;        \
-       ld      [BASE + ( 5 * 0x4)], M5;        \
-       ld      [BASE + (14 * 0x4)], M14
-
-#define LDMATRIX_0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15(BASE) \
-       ld      [BASE + ( 0 * 0x4)], M0;        \
-       ld      [BASE + ( 1 * 0x4)], M1;        \
-       ld      [BASE + ( 2 * 0x4)], M2;        \
-       ld      [BASE + ( 3 * 0x4)], M3;        \
-       ld      [BASE + ( 4 * 0x4)], M4;        \
-       ld      [BASE + ( 5 * 0x4)], M5;        \
-       ld      [BASE + ( 6 * 0x4)], M6;        \
-       ld      [BASE + ( 7 * 0x4)], M7;        \
-       ld      [BASE + ( 8 * 0x4)], M8;        \
-       ld      [BASE + ( 9 * 0x4)], M9;        \
-       ld      [BASE + (10 * 0x4)], M10;       \
-       ld      [BASE + (11 * 0x4)], M11;       \
-       ld      [BASE + (12 * 0x4)], M12;       \
-       ld      [BASE + (13 * 0x4)], M13;       \
-       ld      [BASE + (14 * 0x4)], M14;       \
-       ld      [BASE + (15 * 0x4)], M15
-
-#define LDMATRIX_0_5_12_13(BASE)               \
-       ld      [BASE + ( 0 * 0x4)], M0;        \
-       ld      [BASE + ( 5 * 0x4)], M5;        \
-       ld      [BASE + (12 * 0x4)], M12;       \
-       ld      [BASE + (13 * 0x4)], M13
-
-#define LDMATRIX_0_1_2_4_5_6_8_9_10_12_13_14(BASE) \
-       ld      [BASE + ( 0 * 0x4)], M0;        \
-       ld      [BASE + ( 1 * 0x4)], M1;        \
-       ld      [BASE + ( 2 * 0x4)], M2;        \
-       ld      [BASE + ( 4 * 0x4)], M4;        \
-       ld      [BASE + ( 5 * 0x4)], M5;        \
-       ld      [BASE + ( 6 * 0x4)], M6;        \
-       ld      [BASE + ( 8 * 0x4)], M8;        \
-       ld      [BASE + ( 9 * 0x4)], M9;        \
-       ld      [BASE + (10 * 0x4)], M10;       \
-       ld      [BASE + (12 * 0x4)], M12;       \
-       ld      [BASE + (13 * 0x4)], M13;       \
-       ld      [BASE + (14 * 0x4)], M14
-
-#define LDMATRIX_0_5_10_12_13_14(BASE)                 \
-       ld      [BASE + ( 0 * 0x4)], M0;        \
-       ld      [BASE + ( 5 * 0x4)], M5;        \
-       ld      [BASE + (10 * 0x4)], M10;       \
-       ld      [BASE + (12 * 0x4)], M12;       \
-       ld      [BASE + (13 * 0x4)], M13;       \
-       ld      [BASE + (14 * 0x4)], M14
-
-#define LDMATRIX_0_5_8_9_10_14(BASE)           \
-       ld      [BASE + ( 0 * 0x4)], M0;        \
-       ld      [BASE + ( 5 * 0x4)], M5;        \
-       ld      [BASE + ( 8 * 0x4)], M8;        \
-       ld      [BASE + ( 9 * 0x4)], M9;        \
-       ld      [BASE + (10 * 0x4)], M10;       \
-       ld      [BASE + (14 * 0x4)], M14
-
-#else /* !(USE_LD_DOUBLE) */
-
 #define LDMATRIX_0_1_2_3_12_13_14_15(BASE)     \
        ldd     [BASE + ( 0 * 0x4)], M0;        \
        ldd     [BASE + ( 2 * 0x4)], M2;        \
        ld      [BASE + ( 5 * 0x4)], M5;        \
        ldd     [BASE + (12 * 0x4)], M12
 
+#define LDMATRIX_0_1_2_4_5_6_8_9_10(BASE) \
+       ldd     [BASE + ( 0 * 0x4)], M0;        \
+       ld      [BASE + ( 2 * 0x4)], M2;        \
+       ldd     [BASE + ( 4 * 0x4)], M4;        \
+       ld      [BASE + ( 6 * 0x4)], M6;        \
+       ldd     [BASE + ( 8 * 0x4)], M8;        \
+       ld      [BASE + (10 * 0x4)], M10
+
 #define LDMATRIX_0_1_2_4_5_6_8_9_10_12_13_14(BASE) \
        ldd     [BASE + ( 0 * 0x4)], M0;        \
        ld      [BASE + ( 2 * 0x4)], M2;        \
        ldd     [BASE + (12 * 0x4)], M12;       \
        ld      [BASE + (14 * 0x4)], M14
 
+#define LDMATRIX_0_5_10(BASE)                  \
+       ld      [BASE + ( 0 * 0x4)], M0;        \
+       ld      [BASE + ( 5 * 0x4)], M5;        \
+       ld      [BASE + (10 * 0x4)], M10;       \
+
 #define LDMATRIX_0_5_10_12_13_14(BASE)                 \
        ld      [BASE + ( 0 * 0x4)], M0;        \
        ld      [BASE + ( 5 * 0x4)], M5;        \
        ld      [BASE + (10 * 0x4)], M10;       \
        ld      [BASE + (14 * 0x4)], M14
 
-#endif /* USE_LD_DOUBLE */
+#endif /* !(_SPARC_MATRIX_H) */