aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/evas/src/lib/engines/common/evas_op_copy/op_copy_pixel_color_i386.c
diff options
context:
space:
mode:
authorDavid Walter Seikel2012-01-04 18:41:13 +1000
committerDavid Walter Seikel2012-01-04 18:41:13 +1000
commitdd7595a3475407a7fa96a97393bae8c5220e8762 (patch)
treee341e911d7eb911a51684a7412ef7f7c7605d28e /libraries/evas/src/lib/engines/common/evas_op_copy/op_copy_pixel_color_i386.c
parentAdd the skeleton. (diff)
downloadSledjHamr-dd7595a3475407a7fa96a97393bae8c5220e8762.zip
SledjHamr-dd7595a3475407a7fa96a97393bae8c5220e8762.tar.gz
SledjHamr-dd7595a3475407a7fa96a97393bae8c5220e8762.tar.bz2
SledjHamr-dd7595a3475407a7fa96a97393bae8c5220e8762.tar.xz
Add the base Enlightenment Foundation Libraries - eina, eet, evas, ecore, embryo, and edje.
Note that embryo wont be used, but I'm not sure yet if you can build edje without it.
Diffstat (limited to 'libraries/evas/src/lib/engines/common/evas_op_copy/op_copy_pixel_color_i386.c')
-rw-r--r--libraries/evas/src/lib/engines/common/evas_op_copy/op_copy_pixel_color_i386.c255
1 files changed, 255 insertions, 0 deletions
diff --git a/libraries/evas/src/lib/engines/common/evas_op_copy/op_copy_pixel_color_i386.c b/libraries/evas/src/lib/engines/common/evas_op_copy/op_copy_pixel_color_i386.c
new file mode 100644
index 0000000..fb5bc70
--- /dev/null
+++ b/libraries/evas/src/lib/engines/common/evas_op_copy/op_copy_pixel_color_i386.c
@@ -0,0 +1,255 @@
1/* copy pixel x color --> dst */
2
3#ifdef BUILD_MMX
4static void
5_op_copy_p_c_dp_mmx(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) {
6 DATA32 *e = d + l;
7 pxor_r2r(mm0, mm0);
8 MOV_P2R(c, mm3, mm0)
9 MOV_A2R(ALPHA_255, mm5)
10 while (d < e) {
11 MOV_P2R(*s, mm2, mm0)
12 MUL4_SYM_R2R(mm3, mm2, mm5);
13 MOV_R2P(mm2, *d, mm0)
14 s++; d++;
15 }
16}
17
18
19static void
20_op_copy_p_caa_dp_mmx(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) {
21 DATA32 *e = d + l;
22 c = 1 + (c >> 24);
23 MOV_A2R(c, mm3)
24 pxor_r2r(mm0, mm0);
25 while (d < e) {
26 MOV_P2R(*s, mm2, mm0)
27 MUL4_256_R2R(mm3, mm2);
28 MOV_R2P(mm2, *d, mm0)
29 s++; d++;
30 }
31}
32
33
34#define _op_copy_pas_c_dp_mmx _op_copy_p_c_dp_mmx
35#define _op_copy_pan_c_dp_mmx _op_copy_p_c_dp_mmx
36#define _op_copy_p_can_dp_mmx _op_copy_p_c_dp_mmx
37#define _op_copy_pas_can_dp_mmx _op_copy_pas_c_dp_mmx
38#define _op_copy_pan_can_dp_mmx _op_copy_pan_c_dp_mmx
39#define _op_copy_pas_caa_dp_mmx _op_copy_p_caa_dp_mmx
40#define _op_copy_pan_caa_dp_mmx _op_copy_p_caa_dp_mmx
41
42#define _op_copy_p_c_dpan_mmx _op_copy_p_c_dp_mmx
43#define _op_copy_pas_c_dpan_mmx _op_copy_pas_c_dp_mmx
44#define _op_copy_pan_c_dpan_mmx _op_copy_pan_c_dp_mmx
45#define _op_copy_p_can_dpan_mmx _op_copy_p_can_dp_mmx
46#define _op_copy_pas_can_dpan_mmx _op_copy_pas_can_dp_mmx
47#define _op_copy_pan_can_dpan_mmx _op_copy_pan_can_dp_mmx
48#define _op_copy_p_caa_dpan_mmx _op_copy_p_caa_dp_mmx
49#define _op_copy_pas_caa_dpan_mmx _op_copy_pas_caa_dp_mmx
50#define _op_copy_pan_caa_dpan_mmx _op_copy_pan_caa_dp_mmx
51
52static void
53init_copy_pixel_color_span_funcs_mmx(void)
54{
55 op_copy_span_funcs[SP][SM_N][SC][DP][CPU_MMX] = _op_copy_p_c_dp_mmx;
56 op_copy_span_funcs[SP_AS][SM_N][SC][DP][CPU_MMX] = _op_copy_pas_c_dp_mmx;
57 op_copy_span_funcs[SP_AN][SM_N][SC][DP][CPU_MMX] = _op_copy_pan_c_dp_mmx;
58 op_copy_span_funcs[SP][SM_N][SC_AN][DP][CPU_MMX] = _op_copy_p_can_dp_mmx;
59 op_copy_span_funcs[SP_AS][SM_N][SC_AN][DP][CPU_MMX] = _op_copy_pas_can_dp_mmx;
60 op_copy_span_funcs[SP_AN][SM_N][SC_AN][DP][CPU_MMX] = _op_copy_pan_can_dp_mmx;
61 op_copy_span_funcs[SP][SM_N][SC_AA][DP][CPU_MMX] = _op_copy_p_caa_dp_mmx;
62 op_copy_span_funcs[SP_AS][SM_N][SC_AA][DP][CPU_MMX] = _op_copy_pas_caa_dp_mmx;
63 op_copy_span_funcs[SP_AN][SM_N][SC_AA][DP][CPU_MMX] = _op_copy_pan_caa_dp_mmx;
64
65 op_copy_span_funcs[SP][SM_N][SC][DP_AN][CPU_MMX] = _op_copy_p_c_dpan_mmx;
66 op_copy_span_funcs[SP_AS][SM_N][SC][DP_AN][CPU_MMX] = _op_copy_pas_c_dpan_mmx;
67 op_copy_span_funcs[SP_AN][SM_N][SC][DP_AN][CPU_MMX] = _op_copy_pan_c_dpan_mmx;
68 op_copy_span_funcs[SP][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_copy_p_can_dpan_mmx;
69 op_copy_span_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_copy_pas_can_dpan_mmx;
70 op_copy_span_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_copy_pan_can_dpan_mmx;
71 op_copy_span_funcs[SP][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_copy_p_caa_dpan_mmx;
72 op_copy_span_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_copy_pas_caa_dpan_mmx;
73 op_copy_span_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_copy_pan_caa_dpan_mmx;
74}
75#endif
76
77#ifdef BUILD_MMX
78static void
79_op_copy_pt_p_c_dp_mmx(DATA32 s, DATA8 m __UNUSED__, DATA32 c, DATA32 *d) {
80 pxor_r2r(mm0, mm0);
81 MOV_A2R(ALPHA_255, mm5)
82 MOV_P2R(c, mm2, mm0)
83 MOV_P2R(s, mm2, mm0)
84 MUL4_SYM_R2R(mm3, mm2, mm5);
85 MOV_R2P(mm2, *d, mm0)
86}
87
88#define _op_copy_pt_pas_c_dp_mmx _op_copy_pt_p_c_dp_mmx
89#define _op_copy_pt_pan_c_dp_mmx _op_copy_pt_p_c_dp_mmx
90#define _op_copy_pt_p_can_dp_mmx _op_copy_pt_p_c_dp_mmx
91#define _op_copy_pt_pas_can_dp_mmx _op_copy_pt_p_c_dp_mmx
92#define _op_copy_pt_pan_can_dp_mmx _op_copy_pt_p_c_dp_mmx
93#define _op_copy_pt_p_caa_dp_mmx _op_copy_pt_p_c_dp_mmx
94#define _op_copy_pt_pas_caa_dp_mmx _op_copy_pt_p_c_dp_mmx
95#define _op_copy_pt_pan_caa_dp_mmx _op_copy_pt_p_c_dp_mmx
96
97#define _op_copy_pt_p_c_dpan_mmx _op_copy_pt_p_c_dp_mmx
98#define _op_copy_pt_pas_c_dpan_mmx _op_copy_pt_pas_c_dp_mmx
99#define _op_copy_pt_pan_c_dpan_mmx _op_copy_pt_pan_c_dp_mmx
100#define _op_copy_pt_p_can_dpan_mmx _op_copy_pt_p_can_dp_mmx
101#define _op_copy_pt_pas_can_dpan_mmx _op_copy_pt_pas_can_dp_mmx
102#define _op_copy_pt_pan_can_dpan_mmx _op_copy_pt_pan_can_dp_mmx
103#define _op_copy_pt_p_caa_dpan_mmx _op_copy_pt_p_caa_dp_mmx
104#define _op_copy_pt_pas_caa_dpan_mmx _op_copy_pt_pas_caa_dp_mmx
105#define _op_copy_pt_pan_caa_dpan_mmx _op_copy_pt_pan_caa_dp_mmx
106
107static void
108init_copy_pixel_color_pt_funcs_mmx(void)
109{
110 op_copy_pt_funcs[SP][SM_N][SC][DP][CPU_MMX] = _op_copy_pt_p_c_dp_mmx;
111 op_copy_pt_funcs[SP_AS][SM_N][SC][DP][CPU_MMX] = _op_copy_pt_pas_c_dp_mmx;
112 op_copy_pt_funcs[SP_AN][SM_N][SC][DP][CPU_MMX] = _op_copy_pt_pan_c_dp_mmx;
113 op_copy_pt_funcs[SP][SM_N][SC_AN][DP][CPU_MMX] = _op_copy_pt_p_can_dp_mmx;
114 op_copy_pt_funcs[SP_AS][SM_N][SC_AN][DP][CPU_MMX] = _op_copy_pt_pas_can_dp_mmx;
115 op_copy_pt_funcs[SP_AN][SM_N][SC_AN][DP][CPU_MMX] = _op_copy_pt_pan_can_dp_mmx;
116 op_copy_pt_funcs[SP][SM_N][SC_AA][DP][CPU_MMX] = _op_copy_pt_p_caa_dp_mmx;
117 op_copy_pt_funcs[SP_AS][SM_N][SC_AA][DP][CPU_MMX] = _op_copy_pt_pas_caa_dp_mmx;
118 op_copy_pt_funcs[SP_AN][SM_N][SC_AA][DP][CPU_MMX] = _op_copy_pt_pan_caa_dp_mmx;
119
120 op_copy_pt_funcs[SP][SM_N][SC][DP_AN][CPU_MMX] = _op_copy_pt_p_c_dpan_mmx;
121 op_copy_pt_funcs[SP_AS][SM_N][SC][DP_AN][CPU_MMX] = _op_copy_pt_pas_c_dpan_mmx;
122 op_copy_pt_funcs[SP_AN][SM_N][SC][DP_AN][CPU_MMX] = _op_copy_pt_pan_c_dpan_mmx;
123 op_copy_pt_funcs[SP][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_copy_pt_p_can_dpan_mmx;
124 op_copy_pt_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_copy_pt_pas_can_dpan_mmx;
125 op_copy_pt_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_copy_pt_pan_can_dpan_mmx;
126 op_copy_pt_funcs[SP][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_copy_pt_p_caa_dpan_mmx;
127 op_copy_pt_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_copy_pt_pas_caa_dpan_mmx;
128 op_copy_pt_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_copy_pt_pan_caa_dpan_mmx;
129}
130#endif
131
132/*-----*/
133
134/* copy_rel pixel x color --> dst */
135
136#ifdef BUILD_MMX
137static void
138_op_copy_rel_p_c_dp_mmx(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) {
139 DATA32 *e = d + l;
140 pxor_r2r(mm0, mm0);
141 MOV_P2R(c, mm3, mm0)
142 MOV_A2R(ALPHA_255, mm5)
143 while (d < e) {
144 MOV_PA2R(*d, mm1)
145 MOV_P2R(*s, mm2, mm0)
146 MUL4_SYM_R2R(mm3, mm2, mm5);
147 MUL4_SYM_R2R(mm2, mm1, mm5);
148 MOV_R2P(mm1, *d, mm0)
149 s++; d++;
150 }
151}
152
153
154#define _op_copy_rel_pas_c_dp_mmx _op_copy_rel_p_c_dp_mmx
155#define _op_copy_rel_pan_c_dp_mmx _op_copy_rel_p_c_dp_mmx
156#define _op_copy_rel_p_can_dp_mmx _op_copy_rel_p_c_dp_mmx
157#define _op_copy_rel_pas_can_dp_mmx _op_copy_rel_p_c_dp_mmx
158#define _op_copy_rel_pan_can_dp_mmx _op_copy_rel_p_c_dp_mmx
159#define _op_copy_rel_p_caa_dp_mmx _op_copy_rel_p_c_dp_mmx
160#define _op_copy_rel_pas_caa_dp_mmx _op_copy_rel_p_c_dp_mmx
161#define _op_copy_rel_pan_caa_dp_mmx _op_copy_rel_p_c_dp_mmx
162
163#define _op_copy_rel_p_c_dpan_mmx _op_copy_p_c_dpan_mmx
164#define _op_copy_rel_pas_c_dpan_mmx _op_copy_pas_c_dpan_mmx
165#define _op_copy_rel_pan_c_dpan_mmx _op_copy_pan_c_dpan_mmx
166#define _op_copy_rel_p_can_dpan_mmx _op_copy_p_can_dpan_mmx
167#define _op_copy_rel_pas_can_dpan_mmx _op_copy_pas_can_dpan_mmx
168#define _op_copy_rel_pan_can_dpan_mmx _op_copy_pan_can_dpan_mmx
169#define _op_copy_rel_p_caa_dpan_mmx _op_copy_p_caa_dpan_mmx
170#define _op_copy_rel_pas_caa_dpan_mmx _op_copy_pas_caa_dpan_mmx
171#define _op_copy_rel_pan_caa_dpan_mmx _op_copy_pan_caa_dpan_mmx
172
173static void
174init_copy_rel_pixel_color_span_funcs_mmx(void)
175{
176 op_copy_rel_span_funcs[SP][SM_N][SC][DP][CPU_MMX] = _op_copy_rel_p_c_dp_mmx;
177 op_copy_rel_span_funcs[SP_AS][SM_N][SC][DP][CPU_MMX] = _op_copy_rel_pas_c_dp_mmx;
178 op_copy_rel_span_funcs[SP_AN][SM_N][SC][DP][CPU_MMX] = _op_copy_rel_pan_c_dp_mmx;
179 op_copy_rel_span_funcs[SP][SM_N][SC_AN][DP][CPU_MMX] = _op_copy_rel_p_can_dp_mmx;
180 op_copy_rel_span_funcs[SP_AS][SM_N][SC_AN][DP][CPU_MMX] = _op_copy_rel_pas_can_dp_mmx;
181 op_copy_rel_span_funcs[SP_AN][SM_N][SC_AN][DP][CPU_MMX] = _op_copy_rel_pan_can_dp_mmx;
182 op_copy_rel_span_funcs[SP][SM_N][SC_AA][DP][CPU_MMX] = _op_copy_rel_p_caa_dp_mmx;
183 op_copy_rel_span_funcs[SP_AS][SM_N][SC_AA][DP][CPU_MMX] = _op_copy_rel_pas_caa_dp_mmx;
184 op_copy_rel_span_funcs[SP_AN][SM_N][SC_AA][DP][CPU_MMX] = _op_copy_rel_pan_caa_dp_mmx;
185
186 op_copy_rel_span_funcs[SP][SM_N][SC][DP_AN][CPU_MMX] = _op_copy_rel_p_c_dpan_mmx;
187 op_copy_rel_span_funcs[SP_AS][SM_N][SC][DP_AN][CPU_MMX] = _op_copy_rel_pas_c_dpan_mmx;
188 op_copy_rel_span_funcs[SP_AN][SM_N][SC][DP_AN][CPU_MMX] = _op_copy_rel_pan_c_dpan_mmx;
189 op_copy_rel_span_funcs[SP][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_copy_rel_p_can_dpan_mmx;
190 op_copy_rel_span_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_copy_rel_pas_can_dpan_mmx;
191 op_copy_rel_span_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_copy_rel_pan_can_dpan_mmx;
192 op_copy_rel_span_funcs[SP][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_copy_rel_p_caa_dpan_mmx;
193 op_copy_rel_span_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_copy_rel_pas_caa_dpan_mmx;
194 op_copy_rel_span_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_copy_rel_pan_caa_dpan_mmx;
195}
196#endif
197
198#ifdef BUILD_MMX
199static void
200_op_copy_rel_pt_p_c_dp_mmx(DATA32 s, DATA8 m __UNUSED__, DATA32 c, DATA32 *d) {
201 pxor_r2r(mm0, mm0);
202 MOV_P2R(c, mm3, mm0)
203 MOV_A2R(ALPHA_255, mm5)
204 MOV_PA2R(*d, mm1)
205 MOV_P2R(s, mm2, mm0)
206 MUL4_SYM_R2R(mm3, mm2, mm5);
207 MUL4_SYM_R2R(mm2, mm1, mm5);
208 MOV_R2P(mm1, *d, mm0)
209}
210
211
212#define _op_copy_rel_pt_pas_c_dp_mmx _op_copy_rel_pt_p_c_dp_mmx
213#define _op_copy_rel_pt_pan_c_dp_mmx _op_copy_rel_pt_p_c_dp_mmx
214#define _op_copy_rel_pt_p_can_dp_mmx _op_copy_rel_pt_p_c_dp_mmx
215#define _op_copy_rel_pt_pas_can_dp_mmx _op_copy_rel_pt_p_c_dp_mmx
216#define _op_copy_rel_pt_pan_can_dp_mmx _op_copy_rel_pt_p_c_dp_mmx
217#define _op_copy_rel_pt_p_caa_dp_mmx _op_copy_rel_pt_p_c_dp_mmx
218#define _op_copy_rel_pt_pas_caa_dp_mmx _op_copy_rel_pt_p_c_dp_mmx
219#define _op_copy_rel_pt_pan_caa_dp_mmx _op_copy_rel_pt_p_c_dp_mmx
220
221#define _op_copy_rel_pt_p_c_dpan_mmx _op_copy_pt_p_c_dpan_mmx
222#define _op_copy_rel_pt_pas_c_dpan_mmx _op_copy_pt_pas_c_dpan_mmx
223#define _op_copy_rel_pt_pan_c_dpan_mmx _op_copy_pt_pan_c_dpan_mmx
224#define _op_copy_rel_pt_p_can_dpan_mmx _op_copy_pt_p_can_dpan_mmx
225#define _op_copy_rel_pt_pas_can_dpan_mmx _op_copy_pt_pas_can_dpan_mmx
226#define _op_copy_rel_pt_pan_can_dpan_mmx _op_copy_pt_pan_can_dpan_mmx
227#define _op_copy_rel_pt_p_caa_dpan_mmx _op_copy_pt_p_caa_dpan_mmx
228#define _op_copy_rel_pt_pas_caa_dpan_mmx _op_copy_pt_pas_caa_dpan_mmx
229#define _op_copy_rel_pt_pan_caa_dpan_mmx _op_copy_pt_pan_caa_dpan_mmx
230
231
232static void
233init_copy_rel_pixel_color_pt_funcs_mmx(void)
234{
235 op_copy_rel_pt_funcs[SP][SM_N][SC][DP][CPU_MMX] = _op_copy_rel_pt_p_c_dp_mmx;
236 op_copy_rel_pt_funcs[SP_AS][SM_N][SC][DP][CPU_MMX] = _op_copy_rel_pt_pas_c_dp_mmx;
237 op_copy_rel_pt_funcs[SP_AN][SM_N][SC][DP][CPU_MMX] = _op_copy_rel_pt_pan_c_dp_mmx;
238 op_copy_rel_pt_funcs[SP][SM_N][SC_AN][DP][CPU_MMX] = _op_copy_rel_pt_p_can_dp_mmx;
239 op_copy_rel_pt_funcs[SP_AS][SM_N][SC_AN][DP][CPU_MMX] = _op_copy_rel_pt_pas_can_dp_mmx;
240 op_copy_rel_pt_funcs[SP_AN][SM_N][SC_AN][DP][CPU_MMX] = _op_copy_rel_pt_pan_can_dp_mmx;
241 op_copy_rel_pt_funcs[SP][SM_N][SC_AA][DP][CPU_MMX] = _op_copy_rel_pt_p_caa_dp_mmx;
242 op_copy_rel_pt_funcs[SP_AS][SM_N][SC_AA][DP][CPU_MMX] = _op_copy_rel_pt_pas_caa_dp_mmx;
243 op_copy_rel_pt_funcs[SP_AN][SM_N][SC_AA][DP][CPU_MMX] = _op_copy_rel_pt_pan_caa_dp_mmx;
244
245 op_copy_rel_pt_funcs[SP][SM_N][SC][DP_AN][CPU_MMX] = _op_copy_rel_pt_p_c_dpan_mmx;
246 op_copy_rel_pt_funcs[SP_AS][SM_N][SC][DP_AN][CPU_MMX] = _op_copy_rel_pt_pas_c_dpan_mmx;
247 op_copy_rel_pt_funcs[SP_AN][SM_N][SC][DP_AN][CPU_MMX] = _op_copy_rel_pt_pan_c_dpan_mmx;
248 op_copy_rel_pt_funcs[SP][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_copy_rel_pt_p_can_dpan_mmx;
249 op_copy_rel_pt_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_copy_rel_pt_pas_can_dpan_mmx;
250 op_copy_rel_pt_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_copy_rel_pt_pan_can_dpan_mmx;
251 op_copy_rel_pt_funcs[SP][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_copy_rel_pt_p_caa_dpan_mmx;
252 op_copy_rel_pt_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_copy_rel_pt_pas_caa_dpan_mmx;
253 op_copy_rel_pt_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_copy_rel_pt_pan_caa_dpan_mmx;
254}
255#endif