blob: f677d9bda132b53c332962a97c9b9bdc93dccaa2 [file] [log] [blame]
Brian Paul9a90cd42003-12-01 22:40:26 +00001/*
2 * SPARC assembly matrix code.
3 */
davem69775355a2001-06-05 23:54:00 +00004
5#ifndef _SPARC_MATRIX_H
6#define _SPARC_MATRIX_H
7
Ian Romanick9f23a3a2005-07-28 00:11:10 +00008#ifdef __arch64__
davem69775355a2001-06-05 23:54:00 +00009#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
Brian Paul7943b342001-05-23 14:27:03 +000034
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
Brian Paul7943b342001-05-23 14:27:03 +000052#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
davem69775355a2001-06-05 23:54:00 +0000133#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
Brian Paul7943b342001-05-23 14:27:03 +0000141#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
davem696f365c22001-06-06 11:46:04 +0000151#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
Brian Paul7943b342001-05-23 14:27:03 +0000156#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
davem69775355a2001-06-05 23:54:00 +0000170#endif /* !(_SPARC_MATRIX_H) */