Home | History | Annotate | Download | only in sparc
      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