2 /* blend pixel x color --> dst */
6 _op_blend_p_c_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
8 MOV_A2R(ALPHA_256, mm6)
9 MOV_A2R(ALPHA_255, mm5)
14 MUL4_SYM_R2R(mm2, mm3, mm5)
21 MUL4_256_R2R(mm4, mm1)
30 _op_blend_pan_can_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
34 MOV_A2R(ALPHA_255, mm5)
37 MUL4_SYM_R2R(mm2, mm1, mm5)
44 _op_blend_pan_caa_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
48 MOV_A2R(ALPHA_255, mm5)
53 INTERP_256_R2R(mm2, mm3, mm1, mm5)
59 #define _op_blend_pas_c_dp_mmx _op_blend_p_c_dp_mmx
60 #define _op_blend_pan_c_dp_mmx _op_blend_p_c_dp_mmx
61 #define _op_blend_p_can_dp_mmx _op_blend_p_c_dp_mmx
62 #define _op_blend_pas_can_dp_mmx _op_blend_p_c_dp_mmx
63 #define _op_blend_p_caa_dp_mmx _op_blend_p_c_dp_mmx
64 #define _op_blend_pas_caa_dp_mmx _op_blend_p_c_dp_mmx
66 #define _op_blend_p_c_dpan_mmx _op_blend_p_c_dp_mmx
67 #define _op_blend_pas_c_dpan_mmx _op_blend_pas_c_dp_mmx
68 #define _op_blend_pan_c_dpan_mmx _op_blend_pan_c_dp_mmx
69 #define _op_blend_p_can_dpan_mmx _op_blend_p_can_dp_mmx
70 #define _op_blend_pas_can_dpan_mmx _op_blend_pas_can_dp_mmx
71 #define _op_blend_pan_can_dpan_mmx _op_blend_pan_can_dp_mmx
72 #define _op_blend_p_caa_dpan_mmx _op_blend_p_caa_dp_mmx
73 #define _op_blend_pas_caa_dpan_mmx _op_blend_pas_caa_dp_mmx
74 #define _op_blend_pan_caa_dpan_mmx _op_blend_pan_caa_dp_mmx
78 init_blend_pixel_color_span_funcs_mmx(void)
80 op_blend_span_funcs[SP][SM_N][SC][DP][CPU_MMX] = _op_blend_p_c_dp_mmx;
81 op_blend_span_funcs[SP_AS][SM_N][SC][DP][CPU_MMX] = _op_blend_pas_c_dp_mmx;
82 op_blend_span_funcs[SP_AN][SM_N][SC][DP][CPU_MMX] = _op_blend_pan_c_dp_mmx;
83 op_blend_span_funcs[SP][SM_N][SC_AN][DP][CPU_MMX] = _op_blend_p_can_dp_mmx;
84 op_blend_span_funcs[SP_AS][SM_N][SC_AN][DP][CPU_MMX] = _op_blend_pas_can_dp_mmx;
85 op_blend_span_funcs[SP_AN][SM_N][SC_AN][DP][CPU_MMX] = _op_blend_pan_can_dp_mmx;
86 op_blend_span_funcs[SP][SM_N][SC_AA][DP][CPU_MMX] = _op_blend_p_caa_dp_mmx;
87 op_blend_span_funcs[SP_AS][SM_N][SC_AA][DP][CPU_MMX] = _op_blend_pas_caa_dp_mmx;
88 op_blend_span_funcs[SP_AN][SM_N][SC_AA][DP][CPU_MMX] = _op_blend_pan_caa_dp_mmx;
90 op_blend_span_funcs[SP][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_p_c_dpan_mmx;
91 op_blend_span_funcs[SP_AS][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_pas_c_dpan_mmx;
92 op_blend_span_funcs[SP_AN][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_pan_c_dpan_mmx;
93 op_blend_span_funcs[SP][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_blend_p_can_dpan_mmx;
94 op_blend_span_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_blend_pas_can_dpan_mmx;
95 op_blend_span_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_blend_pan_can_dpan_mmx;
96 op_blend_span_funcs[SP][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_p_caa_dpan_mmx;
97 op_blend_span_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_pas_caa_dpan_mmx;
98 op_blend_span_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_pan_caa_dpan_mmx;
104 _op_blend_pt_p_c_dp_mmx(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
105 MOV_A2R(ALPHA_256, mm4)
106 MOV_A2R(ALPHA_255, mm5)
110 MUL4_SYM_R2R(mm2, mm3, mm5)
115 MOV_P2R(*d, mm1, mm0)
116 MUL4_256_R2R(mm4, mm1)
119 MOV_R2P(mm1, *d, mm0)
122 #define _op_blend_pt_pas_c_dp_mmx _op_blend_pt_p_c_dp_mmx
123 #define _op_blend_pt_pan_c_dp_mmx _op_blend_pt_p_c_dp_mmx
124 #define _op_blend_pt_p_can_dp_mmx _op_blend_pt_p_c_dp_mmx
125 #define _op_blend_pt_pas_can_dp_mmx _op_blend_pt_p_c_dp_mmx
126 #define _op_blend_pt_pan_can_dp_mmx _op_blend_pt_p_c_dp_mmx
127 #define _op_blend_pt_p_caa_dp_mmx _op_blend_pt_p_c_dp_mmx
128 #define _op_blend_pt_pas_caa_dp_mmx _op_blend_pt_p_c_dp_mmx
129 #define _op_blend_pt_pan_caa_dp_mmx _op_blend_pt_p_c_dp_mmx
131 #define _op_blend_pt_p_c_dpan_mmx _op_blend_pt_p_c_dp_mmx
132 #define _op_blend_pt_pas_c_dpan_mmx _op_blend_pt_p_c_dp_mmx
133 #define _op_blend_pt_pan_c_dpan_mmx _op_blend_pt_p_c_dp_mmx
134 #define _op_blend_pt_p_can_dpan_mmx _op_blend_pt_p_c_dp_mmx
135 #define _op_blend_pt_pas_can_dpan_mmx _op_blend_pt_p_c_dp_mmx
136 #define _op_blend_pt_pan_can_dpan_mmx _op_blend_pt_p_c_dp_mmx
137 #define _op_blend_pt_p_caa_dpan_mmx _op_blend_pt_p_c_dp_mmx
138 #define _op_blend_pt_pas_caa_dpan_mmx _op_blend_pt_p_c_dp_mmx
139 #define _op_blend_pt_pan_caa_dpan_mmx _op_blend_pt_p_c_dp_mmx
142 init_blend_pixel_color_pt_funcs_mmx(void)
144 op_blend_pt_funcs[SP][SM_N][SC][DP][CPU_MMX] = _op_blend_pt_p_c_dp_mmx;
145 op_blend_pt_funcs[SP_AS][SM_N][SC][DP][CPU_MMX] = _op_blend_pt_pas_c_dp_mmx;
146 op_blend_pt_funcs[SP_AN][SM_N][SC][DP][CPU_MMX] = _op_blend_pt_pan_c_dp_mmx;
147 op_blend_pt_funcs[SP][SM_N][SC_AN][DP][CPU_MMX] = _op_blend_pt_p_can_dp_mmx;
148 op_blend_pt_funcs[SP_AS][SM_N][SC_AN][DP][CPU_MMX] = _op_blend_pt_pas_can_dp_mmx;
149 op_blend_pt_funcs[SP_AN][SM_N][SC_AN][DP][CPU_MMX] = _op_blend_pt_pan_can_dp_mmx;
150 op_blend_pt_funcs[SP][SM_N][SC_AA][DP][CPU_MMX] = _op_blend_pt_p_caa_dp_mmx;
151 op_blend_pt_funcs[SP_AS][SM_N][SC_AA][DP][CPU_MMX] = _op_blend_pt_pas_caa_dp_mmx;
152 op_blend_pt_funcs[SP_AN][SM_N][SC_AA][DP][CPU_MMX] = _op_blend_pt_pan_caa_dp_mmx;
154 op_blend_pt_funcs[SP][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_pt_p_c_dpan_mmx;
155 op_blend_pt_funcs[SP_AS][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_pt_pas_c_dpan_mmx;
156 op_blend_pt_funcs[SP_AN][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_pt_pan_c_dpan_mmx;
157 op_blend_pt_funcs[SP][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_blend_pt_p_can_dpan_mmx;
158 op_blend_pt_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_blend_pt_pas_can_dpan_mmx;
159 op_blend_pt_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_blend_pt_pan_can_dpan_mmx;
160 op_blend_pt_funcs[SP][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_pt_p_caa_dpan_mmx;
161 op_blend_pt_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_pt_pas_caa_dpan_mmx;
162 op_blend_pt_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_pt_pan_caa_dpan_mmx;
168 /* blend_rel pixel x color -> dst */
172 #define _op_blend_rel_p_c_dpan_mmx _op_blend_p_c_dpan_mmx
173 #define _op_blend_rel_pas_c_dpan_mmx _op_blend_pas_c_dpan_mmx
174 #define _op_blend_rel_pan_c_dpan_mmx _op_blend_pan_c_dpan_mmx
175 #define _op_blend_rel_p_can_dpan_mmx _op_blend_p_can_dpan_mmx
176 #define _op_blend_rel_pas_can_dpan_mmx _op_blend_pas_can_dpan_mmx
177 #define _op_blend_rel_pan_can_dpan_mmx _op_blend_pan_can_dpan_mmx
178 #define _op_blend_rel_p_caa_dpan_mmx _op_blend_p_caa_dpan_mmx
179 #define _op_blend_rel_pas_caa_dpan_mmx _op_blend_pas_caa_dpan_mmx
180 #define _op_blend_rel_pan_caa_dpan_mmx _op_blend_pan_caa_dpan_mmx
183 init_blend_rel_pixel_color_span_funcs_mmx(void)
185 op_blend_rel_span_funcs[SP][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_rel_p_c_dpan_mmx;
186 op_blend_rel_span_funcs[SP_AS][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_rel_pas_c_dpan_mmx;
187 op_blend_rel_span_funcs[SP_AN][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_rel_pan_c_dpan_mmx;
188 op_blend_rel_span_funcs[SP][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_blend_rel_p_can_dpan_mmx;
189 op_blend_rel_span_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_blend_rel_pas_can_dpan_mmx;
190 op_blend_rel_span_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_blend_rel_pan_can_dpan_mmx;
191 op_blend_rel_span_funcs[SP][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_rel_p_caa_dpan_mmx;
192 op_blend_rel_span_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_rel_pas_caa_dpan_mmx;
193 op_blend_rel_span_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_rel_pan_caa_dpan_mmx;
199 #define _op_blend_rel_pt_p_c_dpan_mmx _op_blend_pt_p_c_dpan_mmx
200 #define _op_blend_rel_pt_pas_c_dpan_mmx _op_blend_pt_pas_c_dpan_mmx
201 #define _op_blend_rel_pt_pan_c_dpan_mmx _op_blend_pt_pan_c_dpan_mmx
202 #define _op_blend_rel_pt_p_can_dpan_mmx _op_blend_pt_p_can_dpan_mmx
203 #define _op_blend_rel_pt_pas_can_dpan_mmx _op_blend_pt_pas_can_dpan_mmx
204 #define _op_blend_rel_pt_pan_can_dpan_mmx _op_blend_pt_pan_can_dpan_mmx
205 #define _op_blend_rel_pt_p_caa_dpan_mmx _op_blend_pt_p_caa_dpan_mmx
206 #define _op_blend_rel_pt_pas_caa_dpan_mmx _op_blend_pt_pas_caa_dpan_mmx
207 #define _op_blend_rel_pt_pan_caa_dpan_mmx _op_blend_pt_pan_caa_dpan_mmx
210 init_blend_rel_pixel_color_pt_funcs_mmx(void)
212 op_blend_rel_pt_funcs[SP][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_rel_pt_p_c_dpan_mmx;
213 op_blend_rel_pt_funcs[SP_AS][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_rel_pt_pas_c_dpan_mmx;
214 op_blend_rel_pt_funcs[SP_AN][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_rel_pt_pan_c_dpan_mmx;
215 op_blend_rel_pt_funcs[SP][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_blend_rel_pt_p_can_dpan_mmx;
216 op_blend_rel_pt_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_blend_rel_pt_pas_can_dpan_mmx;
217 op_blend_rel_pt_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_blend_rel_pt_pan_can_dpan_mmx;
218 op_blend_rel_pt_funcs[SP][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_rel_pt_p_caa_dpan_mmx;
219 op_blend_rel_pt_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_rel_pt_pas_caa_dpan_mmx;
220 op_blend_rel_pt_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_rel_pt_pan_caa_dpan_mmx;