diff --git a/libavcodec/ppc/dsputil_altivec.c b/libavcodec/ppc/dsputil_altivec.c index f292bf6143..3f1d50747d 100644 --- a/libavcodec/ppc/dsputil_altivec.c +++ b/libavcodec/ppc/dsputil_altivec.c @@ -1702,7 +1702,7 @@ static void vorbis_inverse_coupling_altivec(float *mag, float *ang, int blocksize) { int i; - vector float m, a; + vector float m, a, s0, s1; vector bool int t0, t1; const vector unsigned int v_31 = //XXX vec_add(vec_add(vec_splat_u32(15),vec_splat_u32(15)),vec_splat_u32(1)); @@ -1711,11 +1711,11 @@ static void vorbis_inverse_coupling_altivec(float *mag, float *ang, a = vec_ld(0, ang+i); t0 = vec_cmple(m, (vector float)vec_splat_u32(0)); t1 = vec_cmple(a, (vector float)vec_splat_u32(0)); - a = vec_xor(a, vec_sl((vector unsigned int)t0, v_31)); // (a ^ sign(m)) - t0 = vec_and(a, t1); - t1 = vec_andc(a, t1); - a = vec_add(m, t0); - m = vec_sub(m, t1); + a = vec_xor(a, (vector float) vec_sl((vector unsigned int)t0, v_31)); + s0 = vec_and(a, t1); + s1 = vec_andc(a, t1); + a = vec_add(m, s0); + m = vec_sub(m, s1); vec_ste(a, 0, ang+i); vec_ste(m, 0, mag+i); }