2 /* blend color --> dst */
6 _op_blend_c_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
14 MUL4_256_R2R(mm3, mm1)
21 #define _op_blend_caa_dp_mmx _op_blend_c_dp_mmx
23 #define _op_blend_c_dpan_mmx _op_blend_c_dp_mmx
24 #define _op_blend_caa_dpan_mmx _op_blend_c_dpan_mmx
27 init_blend_color_span_funcs_mmx(void)
29 op_blend_span_funcs[SP_N][SM_N][SC][DP][CPU_MMX] = _op_blend_c_dp_mmx;
30 op_blend_span_funcs[SP_N][SM_N][SC_AA][DP][CPU_MMX] = _op_blend_caa_dp_mmx;
32 op_blend_span_funcs[SP_N][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_c_dpan_mmx;
33 op_blend_span_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_caa_dpan_mmx;
39 _op_blend_pt_c_dp_mmx(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
45 MUL4_256_R2R(mm3, mm1)
50 #define _op_blend_pt_caa_dp_mmx _op_blend_pt_c_dp_mmx
52 #define _op_blend_pt_c_dpan_mmx _op_blend_pt_c_dp_mmx
53 #define _op_blend_pt_caa_dpan_mmx _op_blend_pt_c_dpan_mmx
56 init_blend_color_pt_funcs_mmx(void)
58 op_blend_pt_funcs[SP_N][SM_N][SC][DP][CPU_MMX] = _op_blend_pt_c_dp_mmx;
59 op_blend_pt_funcs[SP_N][SM_N][SC_AA][DP][CPU_MMX] = _op_blend_pt_caa_dp_mmx;
61 op_blend_pt_funcs[SP_N][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_pt_c_dpan_mmx;
62 op_blend_pt_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_pt_caa_dpan_mmx;
67 /* blend_rel color -> dst */
71 _op_blend_rel_c_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
77 MOV_A2R(ALPHA_255, mm5)
81 MUL4_256_R2R(mm3, mm1)
82 MUL4_SYM_R2R(mm2, mm4, mm5)
89 #define _op_blend_rel_caa_dp_mmx _op_blend_rel_c_dp_mmx
91 #define _op_blend_rel_c_dpan_mmx _op_blend_c_dpan_mmx
92 #define _op_blend_rel_caa_dpan_mmx _op_blend_caa_dpan_mmx
95 init_blend_rel_color_span_funcs_mmx(void)
97 op_blend_rel_span_funcs[SP_N][SM_N][SC][DP][CPU_MMX] = _op_blend_rel_c_dp_mmx;
98 op_blend_rel_span_funcs[SP_N][SM_N][SC_AA][DP][CPU_MMX] = _op_blend_rel_caa_dp_mmx;
100 op_blend_rel_span_funcs[SP_N][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_rel_c_dpan_mmx;
101 op_blend_rel_span_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_rel_caa_dpan_mmx;
107 _op_blend_rel_pt_c_dp_mmx(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
109 MOV_A2R(ALPHA_256, mm6)
110 MOV_A2R(ALPHA_255, mm5)
116 MOV_P2R(*d, mm1, mm0)
118 MUL4_256_R2R(mm6, mm1)
120 MUL4_SYM_R2R(mm4, mm2, mm5)
122 MOV_R2P(mm1, *d, mm0)
125 #define _op_blend_rel_pt_caa_dp_mmx _op_blend_rel_pt_c_dp_mmx
127 #define _op_blend_rel_pt_c_dpan_mmx _op_blend_pt_c_dpan_mmx
128 #define _op_blend_rel_pt_caa_dpan_mmx _op_blend_pt_caa_dpan_mmx
131 init_blend_rel_color_pt_funcs_mmx(void)
133 op_blend_rel_pt_funcs[SP_N][SM_N][SC][DP][CPU_MMX] = _op_blend_rel_pt_c_dp_mmx;
134 op_blend_rel_pt_funcs[SP_N][SM_N][SC_AA][DP][CPU_MMX] = _op_blend_rel_pt_caa_dp_mmx;
136 op_blend_rel_pt_funcs[SP_N][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_rel_pt_c_dpan_mmx;
137 op_blend_rel_pt_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_rel_pt_caa_dpan_mmx;