Mercurial > libavcodec.hg
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 |