http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53233

--- Comment #1 from Sean McGovern <gseanmcg at gmail dot com> 2012-05-04 
19:00:05 UTC ---
The code in question (with line numbers):

  93 static void vector_fmul_window_altivec(float *dst, const float *src0,
const float *src1, const float *win, int len)

  94 {

  95     vector float zero, t0, t1, s0, s1, wi, wj;

  96     const vector unsigned char reverse = vcprm(3,2,1,0);

  97     int i,j;

  98 

  99     dst += len;

 100     win += len;

 101     src0+= len;

 102 

 103     zero = (vector float)vec_splat_u32(0);

 104 

 105     for(i=-len*4, j=len*4-16; i<0; i+=16, j-=16) {

 106         s0 = vec_ld(i, src0);

 107         s1 = vec_ld(j, src1);

 108         wi = vec_ld(i, win);

 109         wj = vec_ld(j, win);

 110 

 111         s1 = vec_perm(s1, s1, reverse);

 112         wj = vec_perm(wj, wj, reverse);

 113 

 114         t0 = vec_madd(s0, wj, zero);

 115         t0 = vec_nmsub(s1, wi, t0);

 116         t1 = vec_madd(s0, wi, zero);

 117         t1 = vec_madd(s1, wj, t1);

 118         t1 = vec_perm(t1, t1, reverse);

 119 

 120         vec_st(t0, i, dst);

 121         vec_st(t1, j, dst);

 122     }

 123 }

Reply via email to