コード例 #1
0
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);
}
コード例 #2
0
ファイル: mdct_paired.c プロジェクト: Gamer125/wiibrowser
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);
	}
}