comparison alpha/dsputil_alpha.c @ 670:340e3ba84119 libavcodec

Synthesize pixels16 functions from pixels functions.
author mellum
date Fri, 13 Sep 2002 23:27:01 +0000
parents 76fef3b11680
children 107a56aa74f5
comparison
equal deleted inserted replaced
669:b4bddbde44f3 670:340e3ba84119
222 pix_l = npix_l; \ 222 pix_l = npix_l; \
223 pix_h = npix_h; \ 223 pix_h = npix_h; \
224 } while (--h); \ 224 } while (--h); \
225 } while (0) 225 } while (0)
226 226
227 #define MAKE_OP(OPNAME, SUFF, OPKIND, STORE) \ 227 #define MAKE_OP(OPNAME, SUFF, OPKIND, STORE) \
228 static void OPNAME ## _pixels ## SUFF ## _axp \ 228 static void OPNAME ## _pixels ## SUFF ## _axp \
229 (uint8_t *restrict block, const uint8_t *restrict pixels, \ 229 (uint8_t *restrict block, const uint8_t *restrict pixels, \
230 int line_size, int h) \ 230 int line_size, int h) \
231 { \ 231 { \
232 if ((size_t) pixels & 0x7) { \ 232 if ((size_t) pixels & 0x7) { \
233 OPKIND(uldq, STORE); \ 233 OPKIND(uldq, STORE); \
234 } else { \ 234 } else { \
235 OPKIND(ldq, STORE); \ 235 OPKIND(ldq, STORE); \
236 } \ 236 } \
237 } \
238 \
239 static void OPNAME ## _pixels16 ## SUFF ## _axp \
240 (uint8_t *restrict block, const uint8_t *restrict pixels, \
241 int line_size, int h) \
242 { \
243 OPNAME ## _pixels ## SUFF ## _axp(block, pixels, line_size, h); \
244 OPNAME ## _pixels ## SUFF ## _axp(block + 8, pixels + 8, line_size, h); \
237 } 245 }
238 246
239 #define PIXOP(OPNAME, STORE) \ 247 #define PIXOP(OPNAME, STORE) \
240 MAKE_OP(OPNAME, , OP, STORE) \ 248 MAKE_OP(OPNAME, , OP, STORE) \
241 MAKE_OP(OPNAME, _x2, OP_X2, STORE) \ 249 MAKE_OP(OPNAME, _x2, OP_X2, STORE) \
266 274
267 #undef STORE 275 #undef STORE
268 #define STORE(l, b) stq(AVG2(l, ldq(b)), b); 276 #define STORE(l, b) stq(AVG2(l, ldq(b)), b);
269 PIXOP(avg_no_rnd, STORE); 277 PIXOP(avg_no_rnd, STORE);
270 278
279 void put_pixels16_axp_asm(uint8_t *block, const uint8_t *pixels,
280 int line_size, int h)
281 {
282 put_pixels_axp_asm(block, pixels, line_size, h);
283 put_pixels_axp_asm(block + 8, pixels + 8, line_size, h);
284 }
285
271 void dsputil_init_alpha(void) 286 void dsputil_init_alpha(void)
272 { 287 {
288 put_pixels_tab[0][0] = put_pixels16_axp_asm;
289 put_pixels_tab[0][1] = put_pixels16_x2_axp;
290 put_pixels_tab[0][2] = put_pixels16_y2_axp;
291 put_pixels_tab[0][3] = put_pixels16_xy2_axp;
292
293 put_no_rnd_pixels_tab[0][0] = put_pixels16_axp_asm;
294 put_no_rnd_pixels_tab[0][1] = put_no_rnd_pixels16_x2_axp;
295 put_no_rnd_pixels_tab[0][2] = put_no_rnd_pixels16_y2_axp;
296 put_no_rnd_pixels_tab[0][3] = put_no_rnd_pixels16_xy2_axp;
297
298 avg_pixels_tab[0][0] = avg_pixels16_axp;
299 avg_pixels_tab[0][1] = avg_pixels16_x2_axp;
300 avg_pixels_tab[0][2] = avg_pixels16_y2_axp;
301 avg_pixels_tab[0][3] = avg_pixels16_xy2_axp;
302
303 avg_no_rnd_pixels_tab[0][0] = avg_no_rnd_pixels16_axp;
304 avg_no_rnd_pixels_tab[0][1] = avg_no_rnd_pixels16_x2_axp;
305 avg_no_rnd_pixels_tab[0][2] = avg_no_rnd_pixels16_y2_axp;
306 avg_no_rnd_pixels_tab[0][3] = avg_no_rnd_pixels16_xy2_axp;
307
273 put_pixels_tab[1][0] = put_pixels_axp_asm; 308 put_pixels_tab[1][0] = put_pixels_axp_asm;
274 put_pixels_tab[1][1] = put_pixels_x2_axp; 309 put_pixels_tab[1][1] = put_pixels_x2_axp;
275 put_pixels_tab[1][2] = put_pixels_y2_axp; 310 put_pixels_tab[1][2] = put_pixels_y2_axp;
276 put_pixels_tab[1][3] = put_pixels_xy2_axp; 311 put_pixels_tab[1][3] = put_pixels_xy2_axp;
277 312