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 MATH_ASM_PTR_SIZE 8 11 #include "math/m_vector_asm.h" 12 #else 13 #define LDPTR ld 14 #define MATH_ASM_PTR_SIZE 4 15 #include "math/m_vector_asm.h" 16 #endif 17 18 #define M0 %f16 19 #define M1 %f17 20 #define M2 %f18 21 #define M3 %f19 22 #define M4 %f20 23 #define M5 %f21 24 #define M6 %f22 25 #define M7 %f23 26 #define M8 %f24 27 #define M9 %f25 28 #define M10 %f26 29 #define M11 %f27 30 #define M12 %f28 31 #define M13 %f29 32 #define M14 %f30 33 #define M15 %f31 34 35 #define LDMATRIX_0_1_2_3_12_13_14_15(BASE) \ 36 ldd [BASE + ( 0 * 0x4)], M0; \ 37 ldd [BASE + ( 2 * 0x4)], M2; \ 38 ldd [BASE + (12 * 0x4)], M12; \ 39 ldd [BASE + (14 * 0x4)], M14 40 41 #define LDMATRIX_0_1_12_13(BASE) \ 42 ldd [BASE + ( 0 * 0x4)], M0; \ 43 ldd [BASE + (12 * 0x4)], M12 44 45 #define LDMATRIX_0_12_13(BASE) \ 46 ld [BASE + ( 0 * 0x4)], M0; \ 47 ldd [BASE + (12 * 0x4)], M12 48 49 #define LDMATRIX_0_1_2_12_13_14(BASE) \ 50 ldd [BASE + ( 0 * 0x4)], M0; \ 51 ld [BASE + ( 2 * 0x4)], M2; \ 52 ldd [BASE + (12 * 0x4)], M12; \ 53 ld [BASE + (14 * 0x4)], M14 54 55 #define LDMATRIX_0_12_13_14(BASE) \ 56 ld [BASE + ( 0 * 0x4)], M0; \ 57 ldd [BASE + (12 * 0x4)], M12; \ 58 ld [BASE + (14 * 0x4)], M14 59 60 #define LDMATRIX_0_14(BASE) \ 61 ld [BASE + ( 0 * 0x4)], M0; \ 62 ld [BASE + (14 * 0x4)], M14 63 64 #define LDMATRIX_0_1_2_3_4_5_6_7_12_13_14_15(BASE) \ 65 ldd [BASE + ( 0 * 0x4)], M0; \ 66 ldd [BASE + ( 2 * 0x4)], M2; \ 67 ldd [BASE + ( 4 * 0x4)], M4; \ 68 ldd [BASE + ( 6 * 0x4)], M6; \ 69 ldd [BASE + (12 * 0x4)], M12; \ 70 ldd [BASE + (14 * 0x4)], M14 71 72 #define LDMATRIX_0_5_12_13(BASE) \ 73 ld [BASE + ( 0 * 0x4)], M0; \ 74 ld [BASE + ( 5 * 0x4)], M5; \ 75 ldd [BASE + (12 * 0x4)], M12 76 77 #define LDMATRIX_0_1_2_3_4_5_6_12_13_14(BASE) \ 78 ldd [BASE + ( 0 * 0x4)], M0; \ 79 ldd [BASE + ( 2 * 0x4)], M2; \ 80 ldd [BASE + ( 4 * 0x4)], M4; \ 81 ld [BASE + ( 6 * 0x4)], M6; \ 82 ldd [BASE + (12 * 0x4)], M12; \ 83 ld [BASE + (14 * 0x4)], M14 84 85 #define LDMATRIX_0_5_12_13_14(BASE) \ 86 ld [BASE + ( 0 * 0x4)], M0; \ 87 ld [BASE + ( 5 * 0x4)], M5; \ 88 ldd [BASE + (12 * 0x4)], M12; \ 89 ld [BASE + (14 * 0x4)], M14 90 91 #define LDMATRIX_0_5_14(BASE) \ 92 ld [BASE + ( 0 * 0x4)], M0; \ 93 ld [BASE + ( 5 * 0x4)], M5; \ 94 ld [BASE + (14 * 0x4)], M14 95 96 #define LDMATRIX_0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15(BASE) \ 97 ldd [BASE + ( 0 * 0x4)], M0; \ 98 ldd [BASE + ( 2 * 0x4)], M2; \ 99 ldd [BASE + ( 4 * 0x4)], M4; \ 100 ldd [BASE + ( 6 * 0x4)], M6; \ 101 ldd [BASE + ( 8 * 0x4)], M8; \ 102 ldd [BASE + (10 * 0x4)], M10; \ 103 ldd [BASE + (12 * 0x4)], M12; \ 104 ldd [BASE + (14 * 0x4)], M14 105 106 #define LDMATRIX_0_1_4_5_12_13(BASE) \ 107 ldd [BASE + ( 0 * 0x4)], M0; \ 108 ldd [BASE + ( 4 * 0x4)], M4; \ 109 ldd [BASE + (12 * 0x4)], M12 110 111 #define LDMATRIX_0_5_12_13(BASE) \ 112 ld [BASE + ( 0 * 0x4)], M0; \ 113 ld [BASE + ( 5 * 0x4)], M5; \ 114 ldd [BASE + (12 * 0x4)], M12 115 116 #define LDMATRIX_0_1_2_4_5_6_8_9_10(BASE) \ 117 ldd [BASE + ( 0 * 0x4)], M0; \ 118 ld [BASE + ( 2 * 0x4)], M2; \ 119 ldd [BASE + ( 4 * 0x4)], M4; \ 120 ld [BASE + ( 6 * 0x4)], M6; \ 121 ldd [BASE + ( 8 * 0x4)], M8; \ 122 ld [BASE + (10 * 0x4)], M10 123 124 #define LDMATRIX_0_1_2_4_5_6_8_9_10_12_13_14(BASE) \ 125 ldd [BASE + ( 0 * 0x4)], M0; \ 126 ld [BASE + ( 2 * 0x4)], M2; \ 127 ldd [BASE + ( 4 * 0x4)], M4; \ 128 ld [BASE + ( 6 * 0x4)], M6; \ 129 ldd [BASE + ( 8 * 0x4)], M8; \ 130 ld [BASE + (10 * 0x4)], M10; \ 131 ldd [BASE + (12 * 0x4)], M12; \ 132 ld [BASE + (14 * 0x4)], M14 133 134 #define LDMATRIX_0_5_10(BASE) \ 135 ld [BASE + ( 0 * 0x4)], M0; \ 136 ld [BASE + ( 5 * 0x4)], M5; \ 137 ld [BASE + (10 * 0x4)], M10; 138 139 #define LDMATRIX_0_5_10_12_13_14(BASE) \ 140 ld [BASE + ( 0 * 0x4)], M0; \ 141 ld [BASE + ( 5 * 0x4)], M5; \ 142 ld [BASE + (10 * 0x4)], M10; \ 143 ldd [BASE + (12 * 0x4)], M12; \ 144 ld [BASE + (14 * 0x4)], M14 145 146 #define LDMATRIX_0_5_8_9_10_14(BASE) \ 147 ld [BASE + ( 0 * 0x4)], M0; \ 148 ld [BASE + ( 5 * 0x4)], M5; \ 149 ldd [BASE + ( 8 * 0x4)], M8; \ 150 ld [BASE + (10 * 0x4)], M10; \ 151 ld [BASE + (14 * 0x4)], M14 152 153 #endif /* !(_SPARC_MATRIX_H) */ 154