sparc_matrix.h revision 7943b349d696f8030f0d2f836ad42a762f4c6026
1/* $Id: sparc_matrix.h,v 1.1 2001/05/23 14:27:03 brianp Exp $ */
2
3#define M0		%f16
4#define M1		%f17
5#define M2		%f18
6#define M3		%f19
7#define M4		%f20
8#define M5		%f21
9#define M6		%f22
10#define M7		%f23
11#define M8		%f24
12#define M9		%f25
13#define M10		%f26
14#define M11		%f27
15#define M12		%f28
16#define M13		%f29
17#define M14		%f30
18#define M15		%f31
19
20/* Seems to work, disable if unaligned traps begin to appear... -DaveM */
21#define USE_LD_DOUBLE
22
23#ifndef USE_LD_DOUBLE
24
25#define LDMATRIX_0_1_2_3_12_13_14_15(BASE)	\
26	ld	[BASE + ( 0 * 0x4)], M0;	\
27	ld	[BASE + ( 1 * 0x4)], M1;	\
28	ld	[BASE + ( 2 * 0x4)], M2;	\
29	ld	[BASE + ( 3 * 0x4)], M3;	\
30	ld	[BASE + (12 * 0x4)], M12;	\
31	ld	[BASE + (13 * 0x4)], M13;	\
32	ld	[BASE + (14 * 0x4)], M14;	\
33	ld	[BASE + (15 * 0x4)], M15
34
35#define LDMATRIX_0_1_12_13(BASE)		\
36	ld	[BASE + ( 0 * 0x4)], M0;	\
37	ld	[BASE + ( 1 * 0x4)], M1;	\
38	ld	[BASE + (12 * 0x4)], M12;	\
39	ld	[BASE + (13 * 0x4)], M13
40
41#define LDMATRIX_0_12_13(BASE)			\
42	ld	[BASE + ( 0 * 0x4)], M0;	\
43	ld	[BASE + (12 * 0x4)], M12;	\
44	ld	[BASE + (13 * 0x4)], M13
45
46#define LDMATRIX_0_1_2_12_13_14(BASE)		\
47	ld	[BASE + ( 0 * 0x4)], M0;	\
48	ld	[BASE + ( 1 * 0x4)], M1;	\
49	ld	[BASE + ( 2 * 0x4)], M2;	\
50	ld	[BASE + (12 * 0x4)], M12;	\
51	ld	[BASE + (13 * 0x4)], M13;	\
52	ld	[BASE + (14 * 0x4)], M14
53
54#define LDMATRIX_0_12_13_14(BASE)		\
55	ld	[BASE + ( 0 * 0x4)], M0;	\
56	ld	[BASE + (12 * 0x4)], M12;	\
57	ld	[BASE + (13 * 0x4)], M13;	\
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	ld	[BASE + ( 0 * 0x4)], M0;	\
66	ld	[BASE + ( 1 * 0x4)], M1;	\
67	ld	[BASE + ( 2 * 0x4)], M2;	\
68	ld	[BASE + ( 3 * 0x4)], M3;	\
69	ld	[BASE + ( 4 * 0x4)], M4;	\
70	ld	[BASE + ( 5 * 0x4)], M5;	\
71	ld	[BASE + ( 6 * 0x4)], M6;	\
72	ld	[BASE + ( 7 * 0x4)], M7;	\
73	ld	[BASE + (12 * 0x4)], M12;	\
74	ld	[BASE + (13 * 0x4)], M13;	\
75	ld	[BASE + (14 * 0x4)], M14;	\
76	ld	[BASE + (15 * 0x4)], M15
77
78#define LDMATRIX_0_1_4_5_12_13(BASE) 		\
79	ld	[BASE + ( 0 * 0x4)], M0;	\
80	ld	[BASE + ( 1 * 0x4)], M1;	\
81	ld	[BASE + ( 4 * 0x4)], M4;	\
82	ld	[BASE + ( 5 * 0x4)], M5;	\
83	ld	[BASE + (12 * 0x4)], M12;	\
84	ld	[BASE + (13 * 0x4)], M13
85
86#define LDMATRIX_0_5_12_13(BASE) 		\
87	ld	[BASE + ( 0 * 0x4)], M0;	\
88	ld	[BASE + ( 5 * 0x4)], M5;	\
89	ld	[BASE + (12 * 0x4)], M12;	\
90	ld	[BASE + (13 * 0x4)], M13
91
92#define LDMATRIX_0_1_2_3_4_5_6_12_13_14(BASE)	\
93	ld	[BASE + ( 0 * 0x4)], M0;	\
94	ld	[BASE + ( 1 * 0x4)], M1;	\
95	ld	[BASE + ( 2 * 0x4)], M2;	\
96	ld	[BASE + ( 3 * 0x4)], M3;	\
97	ld	[BASE + ( 4 * 0x4)], M4;	\
98	ld	[BASE + ( 5 * 0x4)], M5;	\
99	ld	[BASE + ( 6 * 0x4)], M6;	\
100	ld	[BASE + (12 * 0x4)], M12;	\
101	ld	[BASE + (13 * 0x4)], M13;	\
102	ld	[BASE + (14 * 0x4)], M14
103
104#define LDMATRIX_0_5_12_13_14(BASE)		\
105	ld	[BASE + ( 0 * 0x4)], M0;	\
106	ld	[BASE + ( 5 * 0x4)], M5;	\
107	ld	[BASE + (12 * 0x4)], M12;	\
108	ld	[BASE + (13 * 0x4)], M13;	\
109	ld	[BASE + (14 * 0x4)], M14
110
111#define LDMATRIX_0_5_14(BASE)			\
112	ld	[BASE + ( 0 * 0x4)], M0;	\
113	ld	[BASE + ( 5 * 0x4)], M5;	\
114	ld	[BASE + (14 * 0x4)], M14
115
116#define LDMATRIX_0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15(BASE) \
117	ld	[BASE + ( 0 * 0x4)], M0;	\
118	ld	[BASE + ( 1 * 0x4)], M1;	\
119	ld	[BASE + ( 2 * 0x4)], M2;	\
120	ld	[BASE + ( 3 * 0x4)], M3;	\
121	ld	[BASE + ( 4 * 0x4)], M4;	\
122	ld	[BASE + ( 5 * 0x4)], M5;	\
123	ld	[BASE + ( 6 * 0x4)], M6;	\
124	ld	[BASE + ( 7 * 0x4)], M7;	\
125	ld	[BASE + ( 8 * 0x4)], M8;	\
126	ld	[BASE + ( 9 * 0x4)], M9;	\
127	ld	[BASE + (10 * 0x4)], M10;	\
128	ld	[BASE + (11 * 0x4)], M11;	\
129	ld	[BASE + (12 * 0x4)], M12;	\
130	ld	[BASE + (13 * 0x4)], M13;	\
131	ld	[BASE + (14 * 0x4)], M14;	\
132	ld	[BASE + (15 * 0x4)], M15
133
134#define LDMATRIX_0_5_12_13(BASE) 		\
135	ld	[BASE + ( 0 * 0x4)], M0;	\
136	ld	[BASE + ( 5 * 0x4)], M5;	\
137	ld	[BASE + (12 * 0x4)], M12;	\
138	ld	[BASE + (13 * 0x4)], M13
139
140#define LDMATRIX_0_1_2_4_5_6_8_9_10_12_13_14(BASE) \
141	ld	[BASE + ( 0 * 0x4)], M0;	\
142	ld	[BASE + ( 1 * 0x4)], M1;	\
143	ld	[BASE + ( 2 * 0x4)], M2;	\
144	ld	[BASE + ( 4 * 0x4)], M4;	\
145	ld	[BASE + ( 5 * 0x4)], M5;	\
146	ld	[BASE + ( 6 * 0x4)], M6;	\
147	ld	[BASE + ( 8 * 0x4)], M8;	\
148	ld	[BASE + ( 9 * 0x4)], M9;	\
149	ld	[BASE + (10 * 0x4)], M10;	\
150	ld	[BASE + (12 * 0x4)], M12;	\
151	ld	[BASE + (13 * 0x4)], M13;	\
152	ld	[BASE + (14 * 0x4)], M14
153
154#define LDMATRIX_0_5_10_12_13_14(BASE) 		\
155	ld	[BASE + ( 0 * 0x4)], M0;	\
156	ld	[BASE + ( 5 * 0x4)], M5;	\
157	ld	[BASE + (10 * 0x4)], M10;	\
158	ld	[BASE + (12 * 0x4)], M12;	\
159	ld	[BASE + (13 * 0x4)], M13;	\
160	ld	[BASE + (14 * 0x4)], M14
161
162#define LDMATRIX_0_5_8_9_10_14(BASE) 		\
163	ld	[BASE + ( 0 * 0x4)], M0;	\
164	ld	[BASE + ( 5 * 0x4)], M5;	\
165	ld	[BASE + ( 8 * 0x4)], M8;	\
166	ld	[BASE + ( 9 * 0x4)], M9;	\
167	ld	[BASE + (10 * 0x4)], M10;	\
168	ld	[BASE + (14 * 0x4)], M14
169
170#else /* !(USE_LD_DOUBLE) */
171
172#define LDMATRIX_0_1_2_3_12_13_14_15(BASE)	\
173	ldd	[BASE + ( 0 * 0x4)], M0;	\
174	ldd	[BASE + ( 2 * 0x4)], M2;	\
175	ldd	[BASE + (12 * 0x4)], M12;	\
176	ldd	[BASE + (14 * 0x4)], M14
177
178#define LDMATRIX_0_1_12_13(BASE)		\
179	ldd	[BASE + ( 0 * 0x4)], M0;	\
180	ldd	[BASE + (12 * 0x4)], M12
181
182#define LDMATRIX_0_12_13(BASE)			\
183	ld	[BASE + ( 0 * 0x4)], M0;	\
184	ldd	[BASE + (12 * 0x4)], M12
185
186#define LDMATRIX_0_1_2_12_13_14(BASE)		\
187	ldd	[BASE + ( 0 * 0x4)], M0;	\
188	ld	[BASE + ( 2 * 0x4)], M2;	\
189	ldd	[BASE + (12 * 0x4)], M12;	\
190	ld	[BASE + (14 * 0x4)], M14
191
192#define LDMATRIX_0_12_13_14(BASE)		\
193	ld	[BASE + ( 0 * 0x4)], M0;	\
194	ldd	[BASE + (12 * 0x4)], M12;	\
195	ld	[BASE + (14 * 0x4)], M14
196
197#define LDMATRIX_0_14(BASE)			\
198	ld	[BASE + ( 0 * 0x4)], M0;	\
199	ld	[BASE + (14 * 0x4)], M14
200
201#define LDMATRIX_0_1_2_3_4_5_6_7_12_13_14_15(BASE) \
202	ldd	[BASE + ( 0 * 0x4)], M0;	\
203	ldd	[BASE + ( 2 * 0x4)], M2;	\
204	ldd	[BASE + ( 4 * 0x4)], M4;	\
205	ldd	[BASE + ( 6 * 0x4)], M6;	\
206	ldd	[BASE + (12 * 0x4)], M12;	\
207	ldd	[BASE + (14 * 0x4)], M14
208
209#define LDMATRIX_0_5_12_13(BASE) 		\
210	ld	[BASE + ( 0 * 0x4)], M0;	\
211	ld	[BASE + ( 5 * 0x4)], M5;	\
212	ldd	[BASE + (12 * 0x4)], M12
213
214#define LDMATRIX_0_1_2_3_4_5_6_12_13_14(BASE)	\
215	ldd	[BASE + ( 0 * 0x4)], M0;	\
216	ldd	[BASE + ( 2 * 0x4)], M2;	\
217	ldd	[BASE + ( 4 * 0x4)], M4;	\
218	ld	[BASE + ( 6 * 0x4)], M6;	\
219	ldd	[BASE + (12 * 0x4)], M12;	\
220	ld	[BASE + (14 * 0x4)], M14
221
222#define LDMATRIX_0_5_12_13_14(BASE)		\
223	ld	[BASE + ( 0 * 0x4)], M0;	\
224	ld	[BASE + ( 5 * 0x4)], M5;	\
225	ldd	[BASE + (12 * 0x4)], M12;	\
226	ld	[BASE + (14 * 0x4)], M14
227
228#define LDMATRIX_0_5_14(BASE)			\
229	ld	[BASE + ( 0 * 0x4)], M0;	\
230	ld	[BASE + ( 5 * 0x4)], M5;	\
231	ld	[BASE + (14 * 0x4)], M14
232
233#define LDMATRIX_0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15(BASE) \
234	ldd	[BASE + ( 0 * 0x4)], M0;	\
235	ldd	[BASE + ( 2 * 0x4)], M2;	\
236	ldd	[BASE + ( 4 * 0x4)], M4;	\
237	ldd	[BASE + ( 6 * 0x4)], M6;	\
238	ldd	[BASE + ( 8 * 0x4)], M8;	\
239	ldd	[BASE + (10 * 0x4)], M10;	\
240	ldd	[BASE + (12 * 0x4)], M12;	\
241	ldd	[BASE + (14 * 0x4)], M14
242
243#define LDMATRIX_0_1_4_5_12_13(BASE) 		\
244	ldd	[BASE + ( 0 * 0x4)], M0;	\
245	ldd	[BASE + ( 4 * 0x4)], M4;	\
246	ldd	[BASE + (12 * 0x4)], M12
247
248#define LDMATRIX_0_5_12_13(BASE) 		\
249	ld	[BASE + ( 0 * 0x4)], M0;	\
250	ld	[BASE + ( 5 * 0x4)], M5;	\
251	ldd	[BASE + (12 * 0x4)], M12
252
253#define LDMATRIX_0_1_2_4_5_6_8_9_10_12_13_14(BASE) \
254	ldd	[BASE + ( 0 * 0x4)], M0;	\
255	ld	[BASE + ( 2 * 0x4)], M2;	\
256	ldd	[BASE + ( 4 * 0x4)], M4;	\
257	ld	[BASE + ( 6 * 0x4)], M6;	\
258	ldd	[BASE + ( 8 * 0x4)], M8;	\
259	ld	[BASE + (10 * 0x4)], M10;	\
260	ldd	[BASE + (12 * 0x4)], M12;	\
261	ld	[BASE + (14 * 0x4)], M14
262
263#define LDMATRIX_0_5_10_12_13_14(BASE) 		\
264	ld	[BASE + ( 0 * 0x4)], M0;	\
265	ld	[BASE + ( 5 * 0x4)], M5;	\
266	ld	[BASE + (10 * 0x4)], M10;	\
267	ldd	[BASE + (12 * 0x4)], M12;	\
268	ld	[BASE + (14 * 0x4)], M14
269
270#define LDMATRIX_0_5_8_9_10_14(BASE) 		\
271	ld	[BASE + ( 0 * 0x4)], M0;	\
272	ld	[BASE + ( 5 * 0x4)], M5;	\
273	ldd	[BASE + ( 8 * 0x4)], M8;	\
274	ld	[BASE + (10 * 0x4)], M10;	\
275	ld	[BASE + (14 * 0x4)], M14
276
277#endif /* USE_LD_DOUBLE */
278