2 /* blend pixel --> dst */
6 _op_blend_p_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
9 MOV_A2R(ALPHA_256, mm6)
18 MUL4_256_R2R(mm3, mm1)
27 _op_blend_pas_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
30 MOV_A2R(ALPHA_256, mm6)
33 switch (*s & 0xff000000)
47 MUL4_256_R2R(mm3, mm1)
57 #define _op_blend_pan_dp_mmx NULL
59 #define _op_blend_p_dpan_mmx _op_blend_p_dp_mmx
60 #define _op_blend_pas_dpan_mmx _op_blend_pas_dp_mmx
61 #define _op_blend_pan_dpan_mmx _op_blend_pan_dp_mmx
64 init_blend_pixel_span_funcs_mmx(void)
66 op_blend_span_funcs[SP][SM_N][SC_N][DP][CPU_MMX] = _op_blend_p_dp_mmx;
67 op_blend_span_funcs[SP_AS][SM_N][SC_N][DP][CPU_MMX] = _op_blend_pas_dp_mmx;
68 op_blend_span_funcs[SP_AN][SM_N][SC_N][DP][CPU_MMX] = _op_blend_pan_dp_mmx;
70 op_blend_span_funcs[SP][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_p_dpan_mmx;
71 op_blend_span_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_pas_dpan_mmx;
72 op_blend_span_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_pan_dpan_mmx;
78 _op_blend_pt_p_dp_mmx(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
80 MOV_A2R(ALPHA_256, mm6)
87 MUL4_256_R2R(mm3, mm1)
94 #define _op_blend_pt_pan_dp_mmx NULL
95 #define _op_blend_pt_pas_dp_mmx _op_blend_pt_p_dp_mmx
97 #define _op_blend_pt_p_dpan_mmx _op_blend_pt_p_dp_mmx
98 #define _op_blend_pt_pan_dpan_mmx _op_blend_pt_pan_dp_mmx
99 #define _op_blend_pt_pas_dpan_mmx _op_blend_pt_pas_dp_mmx
102 init_blend_pixel_pt_funcs_mmx(void)
104 op_blend_pt_funcs[SP][SM_N][SC_N][DP][CPU_MMX] = _op_blend_pt_p_dp_mmx;
105 op_blend_pt_funcs[SP_AS][SM_N][SC_N][DP][CPU_MMX] = _op_blend_pt_pas_dp_mmx;
106 op_blend_pt_funcs[SP_AN][SM_N][SC_N][DP][CPU_MMX] = _op_blend_pt_pan_dp_mmx;
108 op_blend_pt_funcs[SP][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_pt_p_dpan_mmx;
109 op_blend_pt_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_pt_pas_dpan_mmx;
110 op_blend_pt_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_pt_pan_dpan_mmx;
116 /* blend_rel pixel -> dst */
120 _op_blend_rel_p_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
123 MOV_A2R(ALPHA_256, mm6)
124 MOV_A2R(ALPHA_255, mm5)
127 MOV_P2R(*s, mm2, mm0)
132 MOV_P2R(*d, mm1, mm0)
134 MUL4_256_R2R(mm3, mm1)
136 MUL4_SYM_R2R(mm4, mm2, mm5)
138 MOV_R2P(mm1, *d, mm0)
144 _op_blend_rel_pan_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
147 MOV_A2R(ALPHA_256, mm6)
148 MOV_A2R(ALPHA_255, mm5)
151 MOV_P2R(*s, mm2, mm0)
153 MUL4_SYM_R2R(mm2, mm1, mm5)
154 MOV_R2P(mm1, *d, mm0)
159 #define _op_blend_rel_pas_dp_mmx _op_blend_rel_p_dp_mmx
161 #define _op_blend_rel_p_dpan_mmx _op_blend_p_dpan_mmx
162 #define _op_blend_rel_pan_dpan_mmx _op_blend_pan_dpan_mmx
163 #define _op_blend_rel_pas_dpan_mmx _op_blend_pas_dpan_mmx
166 init_blend_rel_pixel_span_funcs_mmx(void)
168 op_blend_rel_span_funcs[SP][SM_N][SC_N][DP][CPU_MMX] = _op_blend_rel_p_dp_mmx;
169 op_blend_rel_span_funcs[SP_AS][SM_N][SC_N][DP][CPU_MMX] = _op_blend_rel_pas_dp_mmx;
170 op_blend_rel_span_funcs[SP_AN][SM_N][SC_N][DP][CPU_MMX] = _op_blend_rel_pan_dp_mmx;
172 op_blend_rel_span_funcs[SP][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_p_dpan_mmx;
173 op_blend_rel_span_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_pas_dpan_mmx;
174 op_blend_rel_span_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_pan_dpan_mmx;
180 _op_blend_rel_pt_p_dp_mmx(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
182 MOV_A2R(ALPHA_256, mm6)
183 MOV_A2R(ALPHA_255, mm5)
189 MOV_P2R(*d, mm1, mm0)
191 MUL4_256_R2R(mm6, mm1)
193 MUL4_SYM_R2R(mm4, mm2, mm5)
195 MOV_R2P(mm1, *d, mm0)
198 #define _op_blend_rel_pt_pas_dp_mmx _op_blend_rel_pt_p_dp_mmx
199 #define _op_blend_rel_pt_pan_dp_mmx _op_blend_rel_pt_p_dp_mmx
201 #define _op_blend_rel_pt_p_dpan_mmx _op_blend_pt_p_dpan_mmx
202 #define _op_blend_rel_pt_pas_dpan_mmx _op_blend_pt_pas_dpan_mmx
203 #define _op_blend_rel_pt_pan_dpan_mmx _op_blend_pt_pan_dpan_mmx
206 init_blend_rel_pixel_pt_funcs_mmx(void)
208 op_blend_rel_pt_funcs[SP][SM_N][SC_N][DP][CPU_MMX] = _op_blend_rel_pt_p_dp_mmx;
209 op_blend_rel_pt_funcs[SP_AS][SM_N][SC_N][DP][CPU_MMX] = _op_blend_rel_pt_pas_dp_mmx;
210 op_blend_rel_pt_funcs[SP_AN][SM_N][SC_N][DP][CPU_MMX] = _op_blend_rel_pt_pan_dp_mmx;
212 op_blend_rel_pt_funcs[SP][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_pt_p_dpan_mmx;
213 op_blend_rel_pt_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_pt_pas_dpan_mmx;
214 op_blend_rel_pt_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_pt_pan_dpan_mmx;