2 /* blend mask x color -> dst */
6 _op_blend_mas_c_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
9 MOV_A2R(ALPHA_256, mm6)
21 MUL4_256_R2R(mm4, mm1)
28 MUL4_256_R2R(mm2, mm3)
35 MUL4_256_R2R(mm7, mm1)
46 _op_blend_mas_can_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
50 MOV_A2R(ALPHA_255, mm5)
65 INTERP_256_R2R(mm3, mm4, mm1, mm5)
73 #define _op_blend_mas_cn_dp_mmx _op_blend_mas_can_dp_mmx
74 #define _op_blend_mas_caa_dp_mmx _op_blend_mas_c_dp_mmx
76 #define _op_blend_mas_c_dpan_mmx _op_blend_mas_c_dp_mmx
77 #define _op_blend_mas_cn_dpan_mmx _op_blend_mas_cn_dp_mmx
78 #define _op_blend_mas_can_dpan_mmx _op_blend_mas_can_dp_mmx
79 #define _op_blend_mas_caa_dpan_mmx _op_blend_mas_caa_dp_mmx
82 init_blend_mask_color_span_funcs_mmx(void)
84 op_blend_span_funcs[SP_N][SM_AS][SC][DP][CPU_MMX] = _op_blend_mas_c_dp_mmx;
85 op_blend_span_funcs[SP_N][SM_AS][SC_N][DP][CPU_MMX] = _op_blend_mas_cn_dp_mmx;
86 op_blend_span_funcs[SP_N][SM_AS][SC_AN][DP][CPU_MMX] = _op_blend_mas_can_dp_mmx;
87 op_blend_span_funcs[SP_N][SM_AS][SC_AA][DP][CPU_MMX] = _op_blend_mas_caa_dp_mmx;
89 op_blend_span_funcs[SP_N][SM_AS][SC][DP_AN][CPU_MMX] = _op_blend_mas_c_dpan_mmx;
90 op_blend_span_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_blend_mas_cn_dpan_mmx;
91 op_blend_span_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_MMX] = _op_blend_mas_can_dpan_mmx;
92 op_blend_span_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_MMX] = _op_blend_mas_caa_dpan_mmx;
98 _op_blend_pt_mas_c_dp_mmx(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
101 MOV_A2R(ALPHA_256, mm6)
104 MUL4_256_R2R(mm2, mm3)
109 MOV_P2R(*d, mm1, mm0)
110 MUL4_256_R2R(mm6, mm1)
113 MOV_R2P(mm1, *d, mm0)
117 #define _op_blend_pt_mas_cn_dp_mmx _op_blend_pt_mas_c_dp_mmx
118 #define _op_blend_pt_mas_can_dp_mmx _op_blend_pt_mas_c_dp_mmx
119 #define _op_blend_pt_mas_caa_dp_mmx _op_blend_pt_mas_c_dp_mmx
121 #define _op_blend_pt_mas_c_dpan_mmx _op_blend_pt_mas_c_dp_mmx
122 #define _op_blend_pt_mas_cn_dpan_mmx _op_blend_pt_mas_cn_dp_mmx
123 #define _op_blend_pt_mas_can_dpan_mmx _op_blend_pt_mas_can_dp_mmx
124 #define _op_blend_pt_mas_caa_dpan_mmx _op_blend_pt_mas_caa_dp_mmx
127 init_blend_mask_color_pt_funcs_mmx(void)
129 op_blend_pt_funcs[SP_N][SM_AS][SC][DP][CPU_MMX] = _op_blend_pt_mas_c_dp_mmx;
130 op_blend_pt_funcs[SP_N][SM_AS][SC_N][DP][CPU_MMX] = _op_blend_pt_mas_cn_dp_mmx;
131 op_blend_pt_funcs[SP_N][SM_AS][SC_AN][DP][CPU_MMX] = _op_blend_pt_mas_can_dp_mmx;
132 op_blend_pt_funcs[SP_N][SM_AS][SC_AA][DP][CPU_MMX] = _op_blend_pt_mas_caa_dp_mmx;
134 op_blend_pt_funcs[SP_N][SM_AS][SC][DP_AN][CPU_MMX] = _op_blend_pt_mas_c_dpan_mmx;
135 op_blend_pt_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_blend_pt_mas_cn_dpan_mmx;
136 op_blend_pt_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_MMX] = _op_blend_pt_mas_can_dpan_mmx;
137 op_blend_pt_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_MMX] = _op_blend_pt_mas_caa_dpan_mmx;
143 /* blend_rel mask x color -> dst */
147 _op_blend_rel_mas_c_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
150 MOV_A2R(ALPHA_256, mm6)
151 MOV_A2R(ALPHA_255, mm5)
162 MUL4_256_R2R(mm2, mm3)
168 MOV_P2R(*d, mm1, mm0)
170 MUL4_256_R2R(mm7, mm1)
172 MUL4_SYM_R2R(mm4, mm3, mm5)
175 MOV_R2P(mm1, *d, mm0)
182 #define _op_blend_rel_mas_cn_dp_mmx _op_blend_rel_mas_c_dp_mmx
183 #define _op_blend_rel_mas_can_dp_mmx _op_blend_rel_mas_c_dp_mmx
184 #define _op_blend_rel_mas_caa_dp_mmx _op_blend_rel_mas_c_dp_mmx
186 #define _op_blend_rel_mas_c_dpan_mmx _op_blend_mas_c_dpan_mmx
187 #define _op_blend_rel_mas_cn_dpan_mmx _op_blend_mas_cn_dpan_mmx
188 #define _op_blend_rel_mas_can_dpan_mmx _op_blend_mas_can_dpan_mmx
189 #define _op_blend_rel_mas_caa_dpan_mmx _op_blend_mas_caa_dpan_mmx
192 init_blend_rel_mask_color_span_funcs_mmx(void)
194 op_blend_rel_span_funcs[SP_N][SM_AS][SC][DP][CPU_MMX] = _op_blend_rel_mas_c_dp_mmx;
195 op_blend_rel_span_funcs[SP_N][SM_AS][SC_N][DP][CPU_MMX] = _op_blend_rel_mas_cn_dp_mmx;
196 op_blend_rel_span_funcs[SP_N][SM_AS][SC_AN][DP][CPU_MMX] = _op_blend_rel_mas_can_dp_mmx;
197 op_blend_rel_span_funcs[SP_N][SM_AS][SC_AA][DP][CPU_MMX] = _op_blend_rel_mas_caa_dp_mmx;
199 op_blend_rel_span_funcs[SP_N][SM_AS][SC][DP_AN][CPU_MMX] = _op_blend_rel_mas_c_dpan_mmx;
200 op_blend_rel_span_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_mas_cn_dpan_mmx;
201 op_blend_rel_span_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_MMX] = _op_blend_rel_mas_can_dpan_mmx;
202 op_blend_rel_span_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_MMX] = _op_blend_rel_mas_caa_dpan_mmx;
208 _op_blend_rel_pt_mas_c_dp_mmx(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
210 MOV_A2R(ALPHA_256, mm6)
211 MOV_A2R(ALPHA_255, mm5)
215 MUL4_256_R2R(mm2, mm3)
220 MOV_P2R(*d, mm1, mm0)
222 MUL4_256_R2R(mm6, mm1)
224 MUL4_SYM_R2R(mm4, mm3, mm5)
227 MOV_R2P(mm1, *d, mm0)
230 #define _op_blend_rel_pt_mas_cn_dp_mmx _op_blend_rel_pt_mas_c_dp_mmx
231 #define _op_blend_rel_pt_mas_can_dp_mmx _op_blend_rel_pt_mas_c_dp_mmx
232 #define _op_blend_rel_pt_mas_caa_dp_mmx _op_blend_rel_pt_mas_c_dp_mmx
234 #define _op_blend_rel_pt_mas_c_dpan_mmx _op_blend_pt_mas_c_dpan_mmx
235 #define _op_blend_rel_pt_mas_cn_dpan_mmx _op_blend_pt_mas_cn_dpan_mmx
236 #define _op_blend_rel_pt_mas_can_dpan_mmx _op_blend_pt_mas_can_dpan_mmx
237 #define _op_blend_rel_pt_mas_caa_dpan_mmx _op_blend_pt_mas_caa_dpan_mmx
240 init_blend_rel_mask_color_pt_funcs_mmx(void)
242 op_blend_rel_pt_funcs[SP_N][SM_AS][SC][DP][CPU_MMX] = _op_blend_rel_pt_mas_c_dp_mmx;
243 op_blend_rel_pt_funcs[SP_N][SM_AS][SC_N][DP][CPU_MMX] = _op_blend_rel_pt_mas_cn_dp_mmx;
244 op_blend_rel_pt_funcs[SP_N][SM_AS][SC_AN][DP][CPU_MMX] = _op_blend_rel_pt_mas_can_dp_mmx;
245 op_blend_rel_pt_funcs[SP_N][SM_AS][SC_AA][DP][CPU_MMX] = _op_blend_rel_pt_mas_caa_dp_mmx;
247 op_blend_rel_pt_funcs[SP_N][SM_AS][SC][DP_AN][CPU_MMX] = _op_blend_rel_pt_mas_c_dpan_mmx;
248 op_blend_rel_pt_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_pt_mas_cn_dpan_mmx;
249 op_blend_rel_pt_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_MMX] = _op_blend_rel_pt_mas_can_dpan_mmx;
250 op_blend_rel_pt_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_MMX] = _op_blend_rel_pt_mas_caa_dpan_mmx;