It does not help as an abstraction and adds dsputil dependencies.
Showing the changes to libavcodec/ppc (6 of 163 files). Show all
Unified · Split
| @@ -476,7 +476,7 @@ static int pix_sum_altivec(uint8_t * pix, int line_size) · 475 unmodified lines | |||
| 476 | return s; | 476 | return s; |
| 477 | } | 477 | } |
| 478 | 478 | ||
| 479 | static void get_pixels_altivec(DCTELEM *restrict block, const uint8_t *pixels, int line_size) | 479 | static void get_pixels_altivec(int16_t *restrict block, const uint8_t *pixels, int line_size) |
| 480 | { | 480 | { |
| 481 | int i; | 481 | int i; |
| 482 | vector unsigned char perm = vec_lvsl(0, pixels); | 482 | vector unsigned char perm = vec_lvsl(0, pixels); |
| @@ -502,7 +502,7 @@ static void get_pixels_altivec(DCTELEM *restrict block, const uint8_t *pixels, i · 19 unmodified lines | |||
| 502 | } | 502 | } |
| 503 | } | 503 | } |
| 504 | 504 | ||
| 505 | static void diff_pixels_altivec(DCTELEM *restrict block, const uint8_t *s1, | 505 | static void diff_pixels_altivec(int16_t *restrict block, const uint8_t *s1, |
| 506 | const uint8_t *s2, int stride) | 506 | const uint8_t *s2, int stride) |
| 507 | { | 507 | { |
| 508 | int i; | 508 | int i; |
| @@ -576,7 +576,7 @@ static void diff_pixels_altivec(DCTELEM *restrict block, const uint8_t *s1, · 67 unmodified lines | |||
| 576 | } | 576 | } |
| 577 | 577 | ||
| 578 | 578 | ||
| 579 | static void clear_block_altivec(DCTELEM *block) { | 579 | static void clear_block_altivec(int16_t *block) { |
| 580 | LOAD_ZERO; | 580 | LOAD_ZERO; |
| 581 | vec_st(zero_s16v, 0, block); | 581 | vec_st(zero_s16v, 0, block); |
| 582 | vec_st(zero_s16v, 16, block); | 582 | vec_st(zero_s16v, 16, block); |
| @@ -47,7 +47,7 @@ distinguish, and use dcbz (32 bytes) or dcbzl (one cache line) as required. · 46 unmodified lines | |||
| 47 | see <http://developer.apple.com/technotes/tn/tn2087.html> | 47 | see <http://developer.apple.com/technotes/tn/tn2087.html> |
| 48 | and <http://developer.apple.com/technotes/tn/tn2086.html> | 48 | and <http://developer.apple.com/technotes/tn/tn2086.html> |
| 49 | */ | 49 | */ |
| 50 | static void clear_blocks_dcbz32_ppc(DCTELEM *blocks) | 50 | static void clear_blocks_dcbz32_ppc(int16_t *blocks) |
| 51 | { | 51 | { |
| 52 | register int misal = ((unsigned long)blocks & 0x00000010); | 52 | register int misal = ((unsigned long)blocks & 0x00000010); |
| 53 | register int i = 0; | 53 | register int i = 0; |
| @@ -58,7 +58,7 @@ static void clear_blocks_dcbz32_ppc(DCTELEM *blocks) · 4 unmodified lines | |||
| 58 | ((unsigned long*)blocks)[3] = 0L; | 58 | ((unsigned long*)blocks)[3] = 0L; |
| 59 | i += 16; | 59 | i += 16; |
| 60 | } | 60 | } |
| 61 | for ( ; i < sizeof(DCTELEM)*6*64-31 ; i += 32) { | 61 | for ( ; i < sizeof(int16_t)*6*64-31 ; i += 32) { |
| 62 | __asm__ volatile("dcbz %0,%1" : : "b" (blocks), "r" (i) : "memory"); | 62 | __asm__ volatile("dcbz %0,%1" : : "b" (blocks), "r" (i) : "memory"); |
| 63 | } | 63 | } |
| 64 | if (misal) { | 64 | if (misal) { |
| @@ -73,7 +73,7 @@ static void clear_blocks_dcbz32_ppc(DCTELEM *blocks) · 8 unmodified lines | |||
| 73 | /* same as above, when dcbzl clear a whole 128B cache line | 73 | /* same as above, when dcbzl clear a whole 128B cache line |
| 74 | i.e. the PPC970 aka G5 */ | 74 | i.e. the PPC970 aka G5 */ |
| 75 | #if HAVE_DCBZL | 75 | #if HAVE_DCBZL |
| 76 | static void clear_blocks_dcbz128_ppc(DCTELEM *blocks) | 76 | static void clear_blocks_dcbz128_ppc(int16_t *blocks) |
| 77 | { | 77 | { |
| 78 | register int misal = ((unsigned long)blocks & 0x0000007f); | 78 | register int misal = ((unsigned long)blocks & 0x0000007f); |
| 79 | register int i = 0; | 79 | register int i = 0; |
| @@ -81,17 +81,17 @@ static void clear_blocks_dcbz128_ppc(DCTELEM *blocks) · 1 unmodified line | |||
| 81 | // we could probably also optimize this case, | 81 | // we could probably also optimize this case, |
| 82 | // but there's not much point as the machines | 82 | // but there's not much point as the machines |
| 83 | // aren't available yet (2003-06-26) | 83 | // aren't available yet (2003-06-26) |
| 84 | memset(blocks, 0, sizeof(DCTELEM)*6*64); | 84 | memset(blocks, 0, sizeof(int16_t)*6*64); |
| 85 | } | 85 | } |
| 86 | else | 86 | else |
| 87 | for ( ; i < sizeof(DCTELEM)*6*64 ; i += 128) { | 87 | for ( ; i < sizeof(int16_t)*6*64 ; i += 128) { |
| 88 | __asm__ volatile("dcbzl %0,%1" : : "b" (blocks), "r" (i) : "memory"); | 88 | __asm__ volatile("dcbzl %0,%1" : : "b" (blocks), "r" (i) : "memory"); |
| 89 | } | 89 | } |
| 90 | } | 90 | } |
| 91 | #else | 91 | #else |
| 92 | static void clear_blocks_dcbz128_ppc(DCTELEM *blocks) | 92 | static void clear_blocks_dcbz128_ppc(int16_t *blocks) |
| 93 | { | 93 | { |
| 94 | memset(blocks, 0, sizeof(DCTELEM)*6*64); | 94 | memset(blocks, 0, sizeof(int16_t)*6*64); |
| 95 | } | 95 | } |
| 96 | #endif | 96 | #endif |
| 97 | 97 | ||
| @@ -315,7 +315,7 @@ H264_MC(avg_, 16, altivec) · 314 unmodified lines | |||
| 315 | va_u32 = vec_splat((vec_u32)va_u8, 0); \ | 315 | va_u32 = vec_splat((vec_u32)va_u8, 0); \ |
| 316 | vec_ste(va_u32, element, (uint32_t*)dst); | 316 | vec_ste(va_u32, element, (uint32_t*)dst); |
| 317 | 317 | ||
| 318 | static void ff_h264_idct_add_altivec(uint8_t *dst, DCTELEM *block, int stride) | 318 | static void ff_h264_idct_add_altivec(uint8_t *dst, int16_t *block, int stride) |
| 319 | { | 319 | { |
| 320 | vec_s16 va0, va1, va2, va3; | 320 | vec_s16 va0, va1, va2, va3; |
| 321 | vec_s16 vz0, vz1, vz2, vz3; | 321 | vec_s16 vz0, vz1, vz2, vz3; |
| @@ -429,7 +429,7 @@ static void ff_h264_idct_add_altivec(uint8_t *dst, DCTELEM *block, int stride) · 107 unmodified lines | |||
| 429 | vec_st( hv, 0, dest ); \ | 429 | vec_st( hv, 0, dest ); \ |
| 430 | } | 430 | } |
| 431 | 431 | ||
| 432 | static void ff_h264_idct8_add_altivec( uint8_t *dst, DCTELEM *dct, int stride ) { | 432 | static void ff_h264_idct8_add_altivec( uint8_t *dst, int16_t *dct, int stride ) { |
| 433 | vec_s16 s0, s1, s2, s3, s4, s5, s6, s7; | 433 | vec_s16 s0, s1, s2, s3, s4, s5, s6, s7; |
| 434 | vec_s16 d0, d1, d2, d3, d4, d5, d6, d7; | 434 | vec_s16 d0, d1, d2, d3, d4, d5, d6, d7; |
| 435 | vec_s16 idct0, idct1, idct2, idct3, idct4, idct5, idct6, idct7; | 435 | vec_s16 idct0, idct1, idct2, idct3, idct4, idct5, idct6, idct7; |
| @@ -473,7 +473,7 @@ static void ff_h264_idct8_add_altivec( uint8_t *dst, DCTELEM *dct, int stride ) · 37 unmodified lines | |||
| 473 | ALTIVEC_STORE_SUM_CLIP(&dst[7*stride], idct7, perm_ldv, perm_stv, sel); | 473 | ALTIVEC_STORE_SUM_CLIP(&dst[7*stride], idct7, perm_ldv, perm_stv, sel); |
| 474 | } | 474 | } |
| 475 | 475 | ||
| 476 | static av_always_inline void h264_idct_dc_add_internal(uint8_t *dst, DCTELEM *block, int stride, int size) | 476 | static av_always_inline void h264_idct_dc_add_internal(uint8_t *dst, int16_t *block, int stride, int size) |
| 477 | { | 477 | { |
| 478 | vec_s16 dc16; | 478 | vec_s16 dc16; |
| 479 | vec_u8 dcplus, dcminus, v0, v1, v2, v3, aligner; | 479 | vec_u8 dcplus, dcminus, v0, v1, v2, v3, aligner; |
| @@ -518,17 +518,17 @@ static av_always_inline void h264_idct_dc_add_internal(uint8_t *dst, DCTELEM *bl · 38 unmodified lines | |||
| 518 | } | 518 | } |
| 519 | } | 519 | } |
| 520 | 520 | ||
| 521 | static void h264_idct_dc_add_altivec(uint8_t *dst, DCTELEM *block, int stride) | 521 | static void h264_idct_dc_add_altivec(uint8_t *dst, int16_t *block, int stride) |
| 522 | { | 522 | { |
| 523 | h264_idct_dc_add_internal(dst, block, stride, 4); | 523 | h264_idct_dc_add_internal(dst, block, stride, 4); |
| 524 | } | 524 | } |
| 525 | 525 | ||
| 526 | static void ff_h264_idct8_dc_add_altivec(uint8_t *dst, DCTELEM *block, int stride) | 526 | static void ff_h264_idct8_dc_add_altivec(uint8_t *dst, int16_t *block, int stride) |
| 527 | { | 527 | { |
| 528 | h264_idct_dc_add_internal(dst, block, stride, 8); | 528 | h264_idct_dc_add_internal(dst, block, stride, 8); |
| 529 | } | 529 | } |
| 530 | 530 | ||
| 531 | static void ff_h264_idct_add16_altivec(uint8_t *dst, const int *block_offset, DCTELEM *block, int stride, const uint8_t nnzc[15*8]){ | 531 | static void ff_h264_idct_add16_altivec(uint8_t *dst, const int *block_offset, int16_t *block, int stride, const uint8_t nnzc[15*8]){ |
| 532 | int i; | 532 | int i; |
| 533 | for(i=0; i<16; i++){ | 533 | for(i=0; i<16; i++){ |
| 534 | int nnz = nnzc[ scan8[i] ]; | 534 | int nnz = nnzc[ scan8[i] ]; |
| @@ -539,7 +539,7 @@ static void ff_h264_idct_add16_altivec(uint8_t *dst, const int *block_offset, DC · 4 unmodified lines | |||
| 539 | } | 539 | } |
| 540 | } | 540 | } |
| 541 | 541 | ||
| 542 | static void ff_h264_idct_add16intra_altivec(uint8_t *dst, const int *block_offset, DCTELEM *block, int stride, const uint8_t nnzc[15*8]){ | 542 | static void ff_h264_idct_add16intra_altivec(uint8_t *dst, const int *block_offset, int16_t *block, int stride, const uint8_t nnzc[15*8]){ |
| 543 | int i; | 543 | int i; |
| 544 | for(i=0; i<16; i++){ | 544 | for(i=0; i<16; i++){ |
| 545 | if(nnzc[ scan8[i] ]) ff_h264_idct_add_altivec(dst + block_offset[i], block + i*16, stride); | 545 | if(nnzc[ scan8[i] ]) ff_h264_idct_add_altivec(dst + block_offset[i], block + i*16, stride); |
| @@ -547,7 +547,7 @@ static void ff_h264_idct_add16intra_altivec(uint8_t *dst, const int *block_offse · 1 unmodified line | |||
| 547 | } | 547 | } |
| 548 | } | 548 | } |
| 549 | 549 | ||
| 550 | static void ff_h264_idct8_add4_altivec(uint8_t *dst, const int *block_offset, DCTELEM *block, int stride, const uint8_t nnzc[15*8]){ | 550 | static void ff_h264_idct8_add4_altivec(uint8_t *dst, const int *block_offset, int16_t *block, int stride, const uint8_t nnzc[15*8]){ |
| 551 | int i; | 551 | int i; |
| 552 | for(i=0; i<16; i+=4){ | 552 | for(i=0; i<16; i+=4){ |
| 553 | int nnz = nnzc[ scan8[i] ]; | 553 | int nnz = nnzc[ scan8[i] ]; |
| @@ -558,7 +558,7 @@ static void ff_h264_idct8_add4_altivec(uint8_t *dst, const int *block_offset, DC · 4 unmodified lines | |||
| 558 | } | 558 | } |
| 559 | } | 559 | } |
| 560 | 560 | ||
| 561 | static void ff_h264_idct_add8_altivec(uint8_t **dest, const int *block_offset, DCTELEM *block, int stride, const uint8_t nnzc[15*8]){ | 561 | static void ff_h264_idct_add8_altivec(uint8_t **dest, const int *block_offset, int16_t *block, int stride, const uint8_t nnzc[15*8]){ |
| 562 | int i, j; | 562 | int i, j; |
| 563 | for (j = 1; j < 3; j++) { | 563 | for (j = 1; j < 3; j++) { |
| 564 | for(i = j * 16; i < j * 16 + 4; i++){ | 564 | for(i = j * 16; i < j * 16 + 4; i++){ |
| @@ -35,7 +35,7 @@ · 34 unmodified lines | |||
| 35 | /* AltiVec version of dct_unquantize_h263 | 35 | /* AltiVec version of dct_unquantize_h263 |
| 36 | this code assumes `block' is 16 bytes-aligned */ | 36 | this code assumes `block' is 16 bytes-aligned */ |
| 37 | static void dct_unquantize_h263_altivec(MpegEncContext *s, | 37 | static void dct_unquantize_h263_altivec(MpegEncContext *s, |
| 38 | DCTELEM *block, int n, int qscale) | 38 | int16_t *block, int n, int qscale) |
| 39 | { | 39 | { |
| 40 | int i, level, qmul, qadd; | 40 | int i, level, qmul, qadd; |
| 41 | int nCoeffs; | 41 | int nCoeffs; |
| @@ -129,7 +129,7 @@ do { \ · 128 unmodified lines | |||
| 129 | 129 | ||
| 130 | /** Do inverse transform on 8x8 block | 130 | /** Do inverse transform on 8x8 block |
| 131 | */ | 131 | */ |
| 132 | static void vc1_inv_trans_8x8_altivec(DCTELEM block[64]) | 132 | static void vc1_inv_trans_8x8_altivec(int16_t block[64]) |
| 133 | { | 133 | { |
| 134 | vector signed short src0, src1, src2, src3, src4, src5, src6, src7; | 134 | vector signed short src0, src1, src2, src3, src4, src5, src6, src7; |
| 135 | vector signed int s0, s1, s2, s3, s4, s5, s6, s7; | 135 | vector signed int s0, s1, s2, s3, s4, s5, s6, s7; |
| @@ -224,7 +224,7 @@ static void vc1_inv_trans_8x8_altivec(DCTELEM block[64]) · 88 unmodified lines | |||
| 224 | 224 | ||
| 225 | /** Do inverse transform on 8x4 part of block | 225 | /** Do inverse transform on 8x4 part of block |
| 226 | */ | 226 | */ |
| 227 | static void vc1_inv_trans_8x4_altivec(uint8_t *dest, int stride, DCTELEM *block) | 227 | static void vc1_inv_trans_8x4_altivec(uint8_t *dest, int stride, int16_t *block) |
| 228 | { | 228 | { |
| 229 | vector signed short src0, src1, src2, src3, src4, src5, src6, src7; | 229 | vector signed short src0, src1, src2, src3, src4, src5, src6, src7; |
| 230 | vector signed int s0, s1, s2, s3, s4, s5, s6, s7; | 230 | vector signed int s0, s1, s2, s3, s4, s5, s6, s7; |
| @@ -116,7 +116,7 @@ static inline vec_s16 M16(vec_s16 a, vec_s16 C) · 115 unmodified lines | |||
| 116 | #define ADD8(a) vec_add(a, eight) | 116 | #define ADD8(a) vec_add(a, eight) |
| 117 | #define SHIFT4(a) vec_sra(a, four) | 117 | #define SHIFT4(a) vec_sra(a, four) |
| 118 | 118 | ||
| 119 | static void vp3_idct_put_altivec(uint8_t *dst, int stride, DCTELEM block[64]) | 119 | static void vp3_idct_put_altivec(uint8_t *dst, int stride, int16_t block[64]) |
| 120 | { | 120 | { |
| 121 | vec_u8 t; | 121 | vec_u8 t; |
| 122 | IDCT_START | 122 | IDCT_START |
| @@ -145,7 +145,7 @@ static void vp3_idct_put_altivec(uint8_t *dst, int stride, DCTELEM block[64]) · 22 unmodified lines | |||
| 145 | memset(block, 0, sizeof(*block) * 64); | 145 | memset(block, 0, sizeof(*block) * 64); |
| 146 | } | 146 | } |
| 147 | 147 | ||
| 148 | static void vp3_idct_add_altivec(uint8_t *dst, int stride, DCTELEM block[64]) | 148 | static void vp3_idct_add_altivec(uint8_t *dst, int stride, int16_t block[64]) |
| 149 | { | 149 | { |
| 150 | LOAD_ZERO; | 150 | LOAD_ZERO; |
| 151 | vec_u8 t, vdst; | 151 | vec_u8 t, vdst; |