Mercurial > libavcodec.hg
comparison ppc/dsputil_altivec.c @ 8307:bf5bc1f4cba0 libavcodec
add Altivec implementation of clear_block
author | gpoirier |
---|---|
date | Fri, 12 Dec 2008 09:59:00 +0000 |
parents | 266d4949aa15 |
children | 68e959302527 |
comparison
equal
deleted
inserted
replaced
8306:ddecbc18fe94 | 8307:bf5bc1f4cba0 |
---|---|
24 | 24 |
25 #include "gcc_fixes.h" | 25 #include "gcc_fixes.h" |
26 | 26 |
27 #include "dsputil_ppc.h" | 27 #include "dsputil_ppc.h" |
28 #include "util_altivec.h" | 28 #include "util_altivec.h" |
29 #include "types_altivec.h" | |
29 | 30 |
30 int sad16_x2_altivec(void *v, uint8_t *pix1, uint8_t *pix2, int line_size, int h) | 31 int sad16_x2_altivec(void *v, uint8_t *pix1, uint8_t *pix2, int line_size, int h) |
31 { | 32 { |
32 int i; | 33 int i; |
33 DECLARE_ALIGNED_16(int, s); | 34 DECLARE_ALIGNED_16(int, s); |
570 s1 += stride; | 571 s1 += stride; |
571 s2 += stride; | 572 s2 += stride; |
572 block += 8; | 573 block += 8; |
573 } | 574 } |
574 } | 575 } |
576 | |
577 | |
578 static void clear_block_altivec(DCTELEM *block) { | |
579 LOAD_ZERO; | |
580 vec_st(zero_s16v, 0, block); | |
581 vec_st(zero_s16v, 16, block); | |
582 vec_st(zero_s16v, 32, block); | |
583 vec_st(zero_s16v, 48, block); | |
584 vec_st(zero_s16v, 64, block); | |
585 vec_st(zero_s16v, 80, block); | |
586 vec_st(zero_s16v, 96, block); | |
587 vec_st(zero_s16v, 112, block); | |
588 } | |
589 | |
575 | 590 |
576 void add_bytes_altivec(uint8_t *dst, uint8_t *src, int w) { | 591 void add_bytes_altivec(uint8_t *dst, uint8_t *src, int w) { |
577 register int i; | 592 register int i; |
578 register vector unsigned char vdst, vsrc; | 593 register vector unsigned char vdst, vsrc; |
579 | 594 |
1418 c->sse[1]= sse8_altivec; | 1433 c->sse[1]= sse8_altivec; |
1419 c->sse[0]= sse16_altivec; | 1434 c->sse[0]= sse16_altivec; |
1420 c->pix_sum = pix_sum_altivec; | 1435 c->pix_sum = pix_sum_altivec; |
1421 c->diff_pixels = diff_pixels_altivec; | 1436 c->diff_pixels = diff_pixels_altivec; |
1422 c->get_pixels = get_pixels_altivec; | 1437 c->get_pixels = get_pixels_altivec; |
1438 c->clear_block = clear_block_altivec; | |
1423 c->add_bytes= add_bytes_altivec; | 1439 c->add_bytes= add_bytes_altivec; |
1424 c->put_pixels_tab[0][0] = put_pixels16_altivec; | 1440 c->put_pixels_tab[0][0] = put_pixels16_altivec; |
1425 /* the two functions do the same thing, so use the same code */ | 1441 /* the two functions do the same thing, so use the same code */ |
1426 c->put_no_rnd_pixels_tab[0][0] = put_pixels16_altivec; | 1442 c->put_no_rnd_pixels_tab[0][0] = put_pixels16_altivec; |
1427 c->avg_pixels_tab[0][0] = avg_pixels16_altivec; | 1443 c->avg_pixels_tab[0][0] = avg_pixels16_altivec; |