Tizen 2.0 Release
[profile/ivi/osmesa.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) */