void test_api () { b = paired_msub (b, c, d); b = paired_madd (b, c, d); b = paired_nmadd (b, c, d); b = paired_nmsub (b, c, d); b = paired_sum0 (a, b, c); b = paired_sum1 (a, b, c); b = paired_div (b, c); b = paired_add (a, c); b = paired_sub (a, c); b = paired_mul (a, c); b = paired_neg (a); b = paired_muls0 (a, c); b = paired_muls1 (a, c); b = paired_madds0 (a, c, d); b = paired_madds1 (a, c, d); b = paired_merge00 (a, c); b = paired_merge01 (a, c); b = paired_merge10 (a, c); b = paired_merge11 (a, c); b = paired_abs (a); b = paired_nabs (a); b = paired_sqrt (a); b = paired_res (a); b = paired_sel (a, b, c); }
void ff_imdct_half_paired(FFTContext *s, FFTSample *output, const FFTSample *input) { int n = 1 << s->mdct_bits; int n2 = n >> 1; int n4 = n >> 2; int n8 = n >> 3; const uint16_t *revtab = s->revtab; const FFTSample *tcos = s->tcos; const FFTSample *tsin = s->tsin; vector float pair[4], sub[2], add[2]; vector float result, cos, sin; FFTSample *base[6][2] = {{input-2,input+n2},{tcos-2,tcos+n4},{tsin-2,tsin+n4}, {output+n4,output+n4-2},{tcos+n8,tcos+n8-2},{tsin+n8,tsin+n8-2}}; int k, j; for (k=0, j=n4-2; k<n8; k+=2, j-=2) { pair[0] = psq_lu(8,base[0][0],0,0); pair[1] = psq_lu(8,base[0][0],0,0); pair[2] = psq_lu(-8,base[0][1],0,0); pair[3] = psq_lu(-8,base[0][1],0,0); cos = psq_lu(8,base[1][0],0,0); sin = psq_lu(8,base[2][0],0,0); CMUL(sub[0],add[0],pair[0],pair[1],pair[2],pair[3],sin,cos); cos = psq_lu(-8,base[1][1],0,0); sin = psq_lu(-8,base[2][1],0,0); CMUL(sub[1],add[1],pair[3],pair[2],pair[1],pair[0],sin,cos); result = paired_merge00(sub[0], add[0]); psq_stx(result,revtab[k]*8,output,0,0); result = paired_merge11(sub[0], add[0]); psq_stx(result,revtab[k+1]*8,output,0,0); result = paired_merge00(sub[1], add[1]); psq_stx(result,revtab[j]*8,output,0,0); result = paired_merge11(sub[1], add[1]); psq_stx(result,revtab[j+1]*8,output,0,0); } s->fft_calc(s, (FFTComplex *)output); for (k=0; k<n8; k+=2) { pair[0] = psq_lu(-8,base[3][0],0,0); pair[1] = psq_l(-8,base[3][0],0,0); cos = psq_lu(-8,base[4][0],0,0); sin = psq_lu(-8,base[5][0],0,0); CMUL(sub[0],add[1],pair[1],pair[0],pair[1],pair[0],cos,sin); pair[0] = psq_lu(8,base[3][1],0,0); pair[1] = psq_l(8,base[3][1],0,0); cos = psq_lu(8,base[4][1],0,0); sin = psq_lu(8,base[5][1],0,0); CMUL(sub[1],add[0],pair[0],pair[1],pair[0],pair[1],cos,sin); result = paired_merge10(sub[0], add[0]); psq_st(result,0,base[3][0],0,0); result = paired_merge01(sub[0], add[0]); psq_stu(result,-8,base[3][0],0,0); result = paired_merge01(sub[1], add[1]); psq_st(result,0,base[3][1],0,0); result = paired_merge10(sub[1], add[1]); psq_stu(result,8,base[3][1],0,0); } }