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