Merge branch 'mesa_7_5_branch' into mesa_7_6_branch
[mesa.git] / src / mesa / sparc / sparc_matrix.h
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) */