1 /* 2 * SPARC assembly matrix code. 3 */ 4 5 #ifndef _SPARC_MATRIX_H 6 #define _SPARC_MATRIX_H 7 8 #ifdef __arch64__ 9 #define LDPTR ldx 10 #define MAT_M 0x00 11 #define MAT_INV 0x08 12 #define V4F_DATA 0x00 13 #define V4F_START 0x08 14 #define V4F_COUNT 0x10 15 #define V4F_STRIDE 0x14 16 #define V4F_SIZE 0x18 17 #define V4F_FLAGS 0x1c 18 #else 19 #define LDPTR ld 20 #define MAT_M 0x00 21 #define MAT_INV 0x04 22 #define V4F_DATA 0x00 23 #define V4F_START 0x04 24 #define V4F_COUNT 0x08 25 #define V4F_STRIDE 0x0c 26 #define V4F_SIZE 0x10 27 #define V4F_FLAGS 0x14 28 #endif 29 30 #define VEC_SIZE_1 1 31 #define VEC_SIZE_2 3 32 #define VEC_SIZE_3 7 33 #define VEC_SIZE_4 15 34 35 #define M0 %f16 36 #define M1 %f17 37 #define M2 %f18 38 #define M3 %f19 39 #define M4 %f20 40 #define M5 %f21 41 #define M6 %f22 42 #define M7 %f23 43 #define M8 %f24 44 #define M9 %f25 45 #define M10 %f26 46 #define M11 %f27 47 #define M12 %f28 48 #define M13 %f29 49 #define M14 %f30 50 #define M15 %f31 51 52 #define LDMATRIX_0_1_2_3_12_13_14_15(BASE) \ 53 ldd [BASE + ( 0 * 0x4)], M0; \ 54 ldd [BASE + ( 2 * 0x4)], M2; \ 55 ldd [BASE + (12 * 0x4)], M12; \ 56 ldd [BASE + (14 * 0x4)], M14 57 58 #define LDMATRIX_0_1_12_13(BASE) \ 59 ldd [BASE + ( 0 * 0x4)], M0; \ 60 ldd [BASE + (12 * 0x4)], M12 61 62 #define LDMATRIX_0_12_13(BASE) \ 63 ld [BASE + ( 0 * 0x4)], M0; \ 64 ldd [BASE + (12 * 0x4)], M12 65 66 #define LDMATRIX_0_1_2_12_13_14(BASE) \ 67 ldd [BASE + ( 0 * 0x4)], M0; \ 68 ld [BASE + ( 2 * 0x4)], M2; \ 69 ldd [BASE + (12 * 0x4)], M12; \ 70 ld [BASE + (14 * 0x4)], M14 71 72 #define LDMATRIX_0_12_13_14(BASE) \ 73 ld [BASE + ( 0 * 0x4)], M0; \ 74 ldd [BASE + (12 * 0x4)], M12; \ 75 ld [BASE + (14 * 0x4)], M14 76 77 #define LDMATRIX_0_14(BASE) \ 78 ld [BASE + ( 0 * 0x4)], M0; \ 79 ld [BASE + (14 * 0x4)], M14 80 81 #define LDMATRIX_0_1_2_3_4_5_6_7_12_13_14_15(BASE) \ 82 ldd [BASE + ( 0 * 0x4)], M0; \ 83 ldd [BASE + ( 2 * 0x4)], M2; \ 84 ldd [BASE + ( 4 * 0x4)], M4; \ 85 ldd [BASE + ( 6 * 0x4)], M6; \ 86 ldd [BASE + (12 * 0x4)], M12; \ 87 ldd [BASE + (14 * 0x4)], M14 88 89 #define LDMATRIX_0_5_12_13(BASE) \ 90 ld [BASE + ( 0 * 0x4)], M0; \ 91 ld [BASE + ( 5 * 0x4)], M5; \ 92 ldd [BASE + (12 * 0x4)], M12 93 94 #define LDMATRIX_0_1_2_3_4_5_6_12_13_14(BASE) \ 95 ldd [BASE + ( 0 * 0x4)], M0; \ 96 ldd [BASE + ( 2 * 0x4)], M2; \ 97 ldd [BASE + ( 4 * 0x4)], M4; \ 98 ld [BASE + ( 6 * 0x4)], M6; \ 99 ldd [BASE + (12 * 0x4)], M12; \ 100 ld [BASE + (14 * 0x4)], M14 101 102 #define LDMATRIX_0_5_12_13_14(BASE) \ 103 ld [BASE + ( 0 * 0x4)], M0; \ 104 ld [BASE + ( 5 * 0x4)], M5; \ 105 ldd [BASE + (12 * 0x4)], M12; \ 106 ld [BASE + (14 * 0x4)], M14 107 108 #define LDMATRIX_0_5_14(BASE) \ 109 ld [BASE + ( 0 * 0x4)], M0; \ 110 ld [BASE + ( 5 * 0x4)], M5; \ 111 ld [BASE + (14 * 0x4)], M14 112 113 #define LDMATRIX_0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15(BASE) \ 114 ldd [BASE + ( 0 * 0x4)], M0; \ 115 ldd [BASE + ( 2 * 0x4)], M2; \ 116 ldd [BASE + ( 4 * 0x4)], M4; \ 117 ldd [BASE + ( 6 * 0x4)], M6; \ 118 ldd [BASE + ( 8 * 0x4)], M8; \ 119 ldd [BASE + (10 * 0x4)], M10; \ 120 ldd [BASE + (12 * 0x4)], M12; \ 121 ldd [BASE + (14 * 0x4)], M14 122 123 #define LDMATRIX_0_1_4_5_12_13(BASE) \ 124 ldd [BASE + ( 0 * 0x4)], M0; \ 125 ldd [BASE + ( 4 * 0x4)], M4; \ 126 ldd [BASE + (12 * 0x4)], M12 127 128 #define LDMATRIX_0_5_12_13(BASE) \ 129 ld [BASE + ( 0 * 0x4)], M0; \ 130 ld [BASE + ( 5 * 0x4)], M5; \ 131 ldd [BASE + (12 * 0x4)], M12 132 133 #define LDMATRIX_0_1_2_4_5_6_8_9_10(BASE) \ 134 ldd [BASE + ( 0 * 0x4)], M0; \ 135 ld [BASE + ( 2 * 0x4)], M2; \ 136 ldd [BASE + ( 4 * 0x4)], M4; \ 137 ld [BASE + ( 6 * 0x4)], M6; \ 138 ldd [BASE + ( 8 * 0x4)], M8; \ 139 ld [BASE + (10 * 0x4)], M10 140 141 #define LDMATRIX_0_1_2_4_5_6_8_9_10_12_13_14(BASE) \ 142 ldd [BASE + ( 0 * 0x4)], M0; \ 143 ld [BASE + ( 2 * 0x4)], M2; \ 144 ldd [BASE + ( 4 * 0x4)], M4; \ 145 ld [BASE + ( 6 * 0x4)], M6; \ 146 ldd [BASE + ( 8 * 0x4)], M8; \ 147 ld [BASE + (10 * 0x4)], M10; \ 148 ldd [BASE + (12 * 0x4)], M12; \ 149 ld [BASE + (14 * 0x4)], M14 150 151 #define LDMATRIX_0_5_10(BASE) \ 152 ld [BASE + ( 0 * 0x4)], M0; \ 153 ld [BASE + ( 5 * 0x4)], M5; \ 154 ld [BASE + (10 * 0x4)], M10; \ 155 156 #define LDMATRIX_0_5_10_12_13_14(BASE) \ 157 ld [BASE + ( 0 * 0x4)], M0; \ 158 ld [BASE + ( 5 * 0x4)], M5; \ 159 ld [BASE + (10 * 0x4)], M10; \ 160 ldd [BASE + (12 * 0x4)], M12; \ 161 ld [BASE + (14 * 0x4)], M14 162 163 #define LDMATRIX_0_5_8_9_10_14(BASE) \ 164 ld [BASE + ( 0 * 0x4)], M0; \ 165 ld [BASE + ( 5 * 0x4)], M5; \ 166 ldd [BASE + ( 8 * 0x4)], M8; \ 167 ld [BASE + (10 * 0x4)], M10; \ 168 ld [BASE + (14 * 0x4)], M14 169 170 #endif /* !(_SPARC_MATRIX_H) */ 171