avcodec/ppc/hevcdsp: Fix build failures with powerpc-linux-gnu-gcc-4.8 with --disable-optimizations

The affected functions could also be changed into macros, this is the
smaller change to fix it though. And avoids (probably) less readable macros
The extra code should be optimized out when optimizations are done as all values
are known at build after inlining.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit 2c64a6bcd2)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
Michael Niedermayer 2018-12-04 16:29:40 +01:00
parent c3e263b862
commit 7070de99c0
1 changed files with 15 additions and 2 deletions

View File

@ -57,7 +57,13 @@ static void transform4x4(vec_s16 src_01, vec_s16 src_23, vec_s32 res[4],
e1 = vec_msums(src_02, trans4[2], zero);
o1 = vec_msums(src_13, trans4[3], zero);
add = vec_sl(vec_splat_s32(1), vec_splat_u32(shift - 1));
switch(shift) {
case 7: add = vec_sl(vec_splat_s32(1), vec_splat_u32( 7 - 1)); break;
case 10: add = vec_sl(vec_splat_s32(1), vec_splat_u32(10 - 1)); break;
case 12: add = vec_sl(vec_splat_s32(1), vec_splat_u32(12 - 1)); break;
default: abort();
}
e0 = vec_add(e0, add);
e1 = vec_add(e1, add);
@ -70,7 +76,14 @@ static void transform4x4(vec_s16 src_01, vec_s16 src_23, vec_s32 res[4],
static void scale(vec_s32 res[4], vec_s16 res_packed[2], int shift)
{
int i;
vec_u32 v_shift = vec_splat_u32(shift);
vec_u32 v_shift;
switch(shift) {
case 7: v_shift = vec_splat_u32(7) ; break;
case 10: v_shift = vec_splat_u32(10); break;
case 12: v_shift = vec_splat_u32(12); break;
default: abort();
}
for (i = 0; i < 4; i++)
res[i] = vec_sra(res[i], v_shift);