| /* |
| * 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 M2 %f18 |
| #define M3 %f19 |
| #define M4 %f20 |
| #define M5 %f21 |
| #define M6 %f22 |
| #define M7 %f23 |
| #define M8 %f24 |
| #define M9 %f25 |
| #define M10 %f26 |
| #define M11 %f27 |
| #define M12 %f28 |
| #define M13 %f29 |
| #define M14 %f30 |
| #define M15 %f31 |
| |
| #define LDMATRIX_0_1_2_3_12_13_14_15(BASE) \ |
| ldd [BASE + ( 0 * 0x4)], M0; \ |
| ldd [BASE + ( 2 * 0x4)], M2; \ |
| ldd [BASE + (12 * 0x4)], M12; \ |
| ldd [BASE + (14 * 0x4)], M14 |
| |
| #define LDMATRIX_0_1_12_13(BASE) \ |
| ldd [BASE + ( 0 * 0x4)], M0; \ |
| ldd [BASE + (12 * 0x4)], M12 |
| |
| #define LDMATRIX_0_12_13(BASE) \ |
| ld [BASE + ( 0 * 0x4)], M0; \ |
| ldd [BASE + (12 * 0x4)], M12 |
| |
| #define LDMATRIX_0_1_2_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_12_13_14(BASE) \ |
| ld [BASE + ( 0 * 0x4)], M0; \ |
| ldd [BASE + (12 * 0x4)], M12; \ |
| 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) \ |
| ldd [BASE + ( 0 * 0x4)], M0; \ |
| ldd [BASE + ( 2 * 0x4)], M2; \ |
| ldd [BASE + ( 4 * 0x4)], M4; \ |
| ldd [BASE + ( 6 * 0x4)], M6; \ |
| ldd [BASE + (12 * 0x4)], M12; \ |
| ldd [BASE + (14 * 0x4)], M14 |
| |
| #define LDMATRIX_0_5_12_13(BASE) \ |
| ld [BASE + ( 0 * 0x4)], M0; \ |
| ld [BASE + ( 5 * 0x4)], M5; \ |
| ldd [BASE + (12 * 0x4)], M12 |
| |
| #define LDMATRIX_0_1_2_3_4_5_6_12_13_14(BASE) \ |
| ldd [BASE + ( 0 * 0x4)], M0; \ |
| ldd [BASE + ( 2 * 0x4)], M2; \ |
| ldd [BASE + ( 4 * 0x4)], M4; \ |
| ld [BASE + ( 6 * 0x4)], M6; \ |
| ldd [BASE + (12 * 0x4)], M12; \ |
| ld [BASE + (14 * 0x4)], M14 |
| |
| #define LDMATRIX_0_5_12_13_14(BASE) \ |
| ld [BASE + ( 0 * 0x4)], M0; \ |
| ld [BASE + ( 5 * 0x4)], M5; \ |
| ldd [BASE + (12 * 0x4)], M12; \ |
| 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) \ |
| ldd [BASE + ( 0 * 0x4)], M0; \ |
| ldd [BASE + ( 2 * 0x4)], M2; \ |
| ldd [BASE + ( 4 * 0x4)], M4; \ |
| ldd [BASE + ( 6 * 0x4)], M6; \ |
| ldd [BASE + ( 8 * 0x4)], M8; \ |
| ldd [BASE + (10 * 0x4)], M10; \ |
| ldd [BASE + (12 * 0x4)], M12; \ |
| ldd [BASE + (14 * 0x4)], M14 |
| |
| #define LDMATRIX_0_1_4_5_12_13(BASE) \ |
| ldd [BASE + ( 0 * 0x4)], M0; \ |
| ldd [BASE + ( 4 * 0x4)], M4; \ |
| ldd [BASE + (12 * 0x4)], M12 |
| |
| #define LDMATRIX_0_5_12_13(BASE) \ |
| ld [BASE + ( 0 * 0x4)], M0; \ |
| 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 + ( 4 * 0x4)], M4; \ |
| ld [BASE + ( 6 * 0x4)], M6; \ |
| ldd [BASE + ( 8 * 0x4)], M8; \ |
| ld [BASE + (10 * 0x4)], M10; \ |
| 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; \ |
| ldd [BASE + (12 * 0x4)], M12; \ |
| ld [BASE + (14 * 0x4)], M14 |
| |
| #define LDMATRIX_0_5_8_9_10_14(BASE) \ |
| ld [BASE + ( 0 * 0x4)], M0; \ |
| ld [BASE + ( 5 * 0x4)], M5; \ |
| ldd [BASE + ( 8 * 0x4)], M8; \ |
| ld [BASE + (10 * 0x4)], M10; \ |
| ld [BASE + (14 * 0x4)], M14 |
| |
| #endif /* !(_SPARC_MATRIX_H) */ |