aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_i386.c
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_i386.c')
-rw-r--r--libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_i386.c217
1 files changed, 0 insertions, 217 deletions
diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_i386.c b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_i386.c
deleted file mode 100644
index 9b5abe6..0000000
--- a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_i386.c
+++ /dev/null
@@ -1,217 +0,0 @@
1/* blend pixel --> dst */
2
3#ifdef BUILD_MMX
4static void
5_op_blend_p_dp_mmx(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c __UNUSED__, DATA32 *d, int l) {
6 DATA32 *e = d + l;
7 pxor_r2r(mm0, mm0);
8 MOV_A2R(ALPHA_256, mm6)
9 while (d < e)
10 {
11 MOV_P2R(*s, mm2, mm0)
12 MOV_RA2R(mm2, mm1)
13 movq_r2r(mm6, mm3);
14 psubw_r2r(mm1, mm3);
15
16 MOV_P2R(*d, mm1, mm0)
17 MUL4_256_R2R(mm3, mm1)
18
19 paddw_r2r(mm2, mm1);
20 MOV_R2P(mm1, *d, mm0)
21 s++; d++;
22 }
23}
24
25static void
26_op_blend_pas_dp_mmx(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c __UNUSED__, DATA32 *d, int l) {
27 _op_blend_p_dp_mmx(s, m, c, d, l);
28 return;
29 DATA32 *e = d + l;
30 pxor_r2r(mm0, mm0);
31 MOV_A2R(ALPHA_256, mm6)
32 while (d < e)
33 {
34 switch (*s & 0xff000000)
35 {
36 case 0:
37 break;
38 case 0xff000000:
39 *d = *s;
40 break;
41 default :
42 MOV_P2R(*s, mm2, mm0)
43 MOV_RA2R(mm2, mm1)
44 movq_r2r(mm6, mm3);
45 psubw_r2r(mm1, mm3);
46
47 MOV_P2R(*d, mm1, mm0)
48 MUL4_256_R2R(mm3, mm1)
49
50 paddw_r2r(mm2, mm1);
51 MOV_R2P(mm1, *d, mm0)
52 break;
53 }
54 s++; d++;
55 }
56}
57
58#define _op_blend_pan_dp_mmx NULL
59
60#define _op_blend_p_dpan_mmx _op_blend_p_dp_mmx
61#define _op_blend_pas_dpan_mmx _op_blend_pas_dp_mmx
62#define _op_blend_pan_dpan_mmx _op_blend_pan_dp_mmx
63
64static void
65init_blend_pixel_span_funcs_mmx(void)
66{
67 op_blend_span_funcs[SP][SM_N][SC_N][DP][CPU_MMX] = _op_blend_p_dp_mmx;
68 op_blend_span_funcs[SP_AS][SM_N][SC_N][DP][CPU_MMX] = _op_blend_pas_dp_mmx;
69 op_blend_span_funcs[SP_AN][SM_N][SC_N][DP][CPU_MMX] = _op_blend_pan_dp_mmx;
70
71 op_blend_span_funcs[SP][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_p_dpan_mmx;
72 op_blend_span_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_pas_dpan_mmx;
73 op_blend_span_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_pan_dpan_mmx;
74}
75#endif
76
77#ifdef BUILD_MMX
78static void
79_op_blend_pt_p_dp_mmx(DATA32 s, DATA8 m __UNUSED__, DATA32 c __UNUSED__, DATA32 *d) {
80 pxor_r2r(mm0, mm0);
81 MOV_A2R(ALPHA_256, mm6)
82 MOV_P2R(s, mm2, mm0)
83 MOV_RA2R(mm2, mm1)
84 movq_r2r(mm6, mm3);
85 psubw_r2r(mm1, mm3);
86
87 MOV_P2R(*d, mm1, mm0)
88 MUL4_256_R2R(mm3, mm1)
89
90 paddw_r2r(mm2, mm1);
91 MOV_R2P(mm1, *d, mm0)
92}
93
94
95#define _op_blend_pt_pan_dp_mmx NULL
96#define _op_blend_pt_pas_dp_mmx _op_blend_pt_p_dp_mmx
97
98#define _op_blend_pt_p_dpan_mmx _op_blend_pt_p_dp_mmx
99#define _op_blend_pt_pan_dpan_mmx _op_blend_pt_pan_dp_mmx
100#define _op_blend_pt_pas_dpan_mmx _op_blend_pt_pas_dp_mmx
101
102static void
103init_blend_pixel_pt_funcs_mmx(void)
104{
105 op_blend_pt_funcs[SP][SM_N][SC_N][DP][CPU_MMX] = _op_blend_pt_p_dp_mmx;
106 op_blend_pt_funcs[SP_AS][SM_N][SC_N][DP][CPU_MMX] = _op_blend_pt_pas_dp_mmx;
107 op_blend_pt_funcs[SP_AN][SM_N][SC_N][DP][CPU_MMX] = _op_blend_pt_pan_dp_mmx;
108
109 op_blend_pt_funcs[SP][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_pt_p_dpan_mmx;
110 op_blend_pt_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_pt_pas_dpan_mmx;
111 op_blend_pt_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_pt_pan_dpan_mmx;
112}
113#endif
114
115/*-----*/
116
117/* blend_rel pixel -> dst */
118
119#ifdef BUILD_MMX
120static void
121_op_blend_rel_p_dp_mmx(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c __UNUSED__, DATA32 *d, int l) {
122 DATA32 *e = d + l;
123 pxor_r2r(mm0, mm0);
124 MOV_A2R(ALPHA_256, mm6)
125 MOV_A2R(ALPHA_255, mm5)
126 while (d < e)
127 {
128 MOV_P2R(*s, mm2, mm0)
129 MOV_RA2R(mm2, mm1)
130 movq_r2r(mm6, mm3);
131 psubw_r2r(mm1, mm3);
132
133 MOV_P2R(*d, mm1, mm0)
134 MOV_RA2R(mm1, mm4)
135 MUL4_256_R2R(mm3, mm1)
136
137 MUL4_SYM_R2R(mm4, mm2, mm5)
138 paddw_r2r(mm2, mm1);
139 MOV_R2P(mm1, *d, mm0)
140 s++; d++;
141 }
142}
143
144static void
145_op_blend_rel_pan_dp_mmx(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c __UNUSED__, DATA32 *d, int l) {
146 DATA32 *e = d + l;
147 pxor_r2r(mm0, mm0);
148 MOV_A2R(ALPHA_256, mm6)
149 MOV_A2R(ALPHA_255, mm5)
150 while (d < e)
151 {
152 MOV_P2R(*s, mm2, mm0)
153 MOV_PA2R(*d, mm1)
154 MUL4_SYM_R2R(mm2, mm1, mm5)
155 MOV_R2P(mm1, *d, mm0)
156 s++; d++;
157 }
158}
159
160#define _op_blend_rel_pas_dp_mmx _op_blend_rel_p_dp_mmx
161
162#define _op_blend_rel_p_dpan_mmx _op_blend_p_dpan_mmx
163#define _op_blend_rel_pan_dpan_mmx _op_blend_pan_dpan_mmx
164#define _op_blend_rel_pas_dpan_mmx _op_blend_pas_dpan_mmx
165
166static void
167init_blend_rel_pixel_span_funcs_mmx(void)
168{
169 op_blend_rel_span_funcs[SP][SM_N][SC_N][DP][CPU_MMX] = _op_blend_rel_p_dp_mmx;
170 op_blend_rel_span_funcs[SP_AS][SM_N][SC_N][DP][CPU_MMX] = _op_blend_rel_pas_dp_mmx;
171 op_blend_rel_span_funcs[SP_AN][SM_N][SC_N][DP][CPU_MMX] = _op_blend_rel_pan_dp_mmx;
172
173 op_blend_rel_span_funcs[SP][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_p_dpan_mmx;
174 op_blend_rel_span_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_pas_dpan_mmx;
175 op_blend_rel_span_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_pan_dpan_mmx;
176}
177#endif
178
179#ifdef BUILD_MMX
180static void
181_op_blend_rel_pt_p_dp_mmx(DATA32 s, DATA8 m __UNUSED__, DATA32 c __UNUSED__, DATA32 *d) {
182 pxor_r2r(mm0, mm0);
183 MOV_A2R(ALPHA_256, mm6)
184 MOV_A2R(ALPHA_255, mm5)
185
186 MOV_P2R(s, mm2, mm0)
187 MOV_RA2R(mm2, mm1)
188 psubw_r2r(mm1, mm6);
189
190 MOV_P2R(*d, mm1, mm0)
191 MOV_RA2R(mm1, mm4)
192 MUL4_256_R2R(mm6, mm1)
193
194 MUL4_SYM_R2R(mm4, mm2, mm5)
195 paddw_r2r(mm2, mm1);
196 MOV_R2P(mm1, *d, mm0)
197}
198
199#define _op_blend_rel_pt_pas_dp_mmx _op_blend_rel_pt_p_dp_mmx
200#define _op_blend_rel_pt_pan_dp_mmx _op_blend_rel_pt_p_dp_mmx
201
202#define _op_blend_rel_pt_p_dpan_mmx _op_blend_pt_p_dpan_mmx
203#define _op_blend_rel_pt_pas_dpan_mmx _op_blend_pt_pas_dpan_mmx
204#define _op_blend_rel_pt_pan_dpan_mmx _op_blend_pt_pan_dpan_mmx
205
206static void
207init_blend_rel_pixel_pt_funcs_mmx(void)
208{
209 op_blend_rel_pt_funcs[SP][SM_N][SC_N][DP][CPU_MMX] = _op_blend_rel_pt_p_dp_mmx;
210 op_blend_rel_pt_funcs[SP_AS][SM_N][SC_N][DP][CPU_MMX] = _op_blend_rel_pt_pas_dp_mmx;
211 op_blend_rel_pt_funcs[SP_AN][SM_N][SC_N][DP][CPU_MMX] = _op_blend_rel_pt_pan_dp_mmx;
212
213 op_blend_rel_pt_funcs[SP][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_pt_p_dpan_mmx;
214 op_blend_rel_pt_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_pt_pas_dpan_mmx;
215 op_blend_rel_pt_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_pt_pan_dpan_mmx;
216}
217#endif