Loading lib_com/edct_fx.c +16 −3 Original line number Diff line number Diff line Loading @@ -314,13 +314,21 @@ void edct_16fx( i2 = shl(i,1); L_tmp = L_mult(x[i2],edct_table[i]);/*Q(Qx+16) */ #ifdef BASOP_NOGLOB Lacc = L_mac_o(L_tmp,*px,*pt, &Overflow);/*Q(Qx+16) */ re2[i] = round_fx_o(L_shl_o(Lacc, Q_edct, &Overflow), &Overflow); /* Q(Qx+Q_edct) */ #else Lacc = L_mac(L_tmp,*px,*pt);/*Q(Qx+16) */ re2[i] = round_fx(L_shl(Lacc, Q_edct)); /* Q(Qx+Q_edct) */ #endif L_tmp = L_mult(*px,edct_table[i]);/*Q(Qx+16) */ #ifdef BASOP_NOGLOB Lacc = L_msu_o(L_tmp,x[i2],*pt, &Overflow);/*Q(Qx+16) */ im2[i] = round_fx_o(L_shl_o(Lacc, Q_edct, &Overflow), &Overflow); /* Q(Qx+Q_edct) */ #else Lacc = L_msu(L_tmp,x[i2],*pt);/*Q(Qx+16) */ im2[i] = round_fx(L_shl(Lacc, Q_edct)); /* Q(Qx+Q_edct) */ #endif px -= 2; pt--; } Loading Loading @@ -352,7 +360,11 @@ void edct_16fx( #endif tmp = mult_r(re2[i],fact); /*Q(Qx+Q_edct) */ #ifdef BASOP_NOGLOB im[i] = add_o(im2[i],tmp, &Overflow); /*Q(Qx+Q_edct) */ move16(); #else im[i] = add(im2[i],tmp); /*Q(Qx+Q_edct) */ move16(); #endif } /* Post-rotate and obtain the output data */ Loading @@ -363,10 +375,11 @@ void edct_16fx( i2 = shl(i,1); L_tmp = L_mult(re[i],edct_table[i]);/*Q(Qx+Q_edct+16) */ Lacc = L_mac(L_tmp,im[i],*pt);/*Q(Qx+Q_edct+16) */ #ifdef BASOP_NOGLOB Lacc = L_mac_o(L_tmp, im[i], *pt, &Overflow);/*Q(Qx+Q_edct+16) */ y[i2] = round_fx_o(L_shr_o(Lacc,Q_edct, &Overflow), &Overflow); /* Q(Qx) */ #else /* BASOP_NOGLOB */ Lacc = L_mac(L_tmp, im[i], *pt);/*Q(Qx+Q_edct+16) */ y[i2] = round_fx(L_shr(Lacc,Q_edct)); /* Q(Qx) */ #endif /* BASOP_NOGLOB */ Loading lib_com/fft_fx.c +264 −41 Original line number Diff line number Diff line Loading @@ -1715,14 +1715,17 @@ static void cftfsub_16fx( #else x0r = sub(a[j],a[j1]); #endif x0i = sub(a[j + 1],a[j1 + 1]); #ifdef BASOP_NOGLOB x0i = sub_o(a[j + 1], a[j1 + 1], &Overflow); a[j] = add_o(a[j], a[j1], &Overflow); move16(); a[j + 1] = add_o(a[j + 1], a[j1 + 1], &Overflow); #else x0i = sub(a[j + 1], a[j1 + 1]); a[j] = add(a[j],a[j1]); #endif move16(); a[j + 1] = add(a[j + 1], a[j1 + 1]); #endif move16(); a[j1] = x0r; move16(); Loading @@ -1748,7 +1751,9 @@ static void cft1st_16fx( Word16 x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i; Word16 tmp; Word32 L_tmp; #ifdef BASOP_NOGLOB Flag Overflow = 0; #endif x0r = add(a[0],a[2]); x0i = add(a[1],a[3]); x1r = sub(a[0],a[2]); Loading Loading @@ -1834,6 +1839,23 @@ static void cft1st_16fx( L_tmp = L_shl(Mult_32_32(wk2i,wk1r),1);/*Q29 */ wk3i = L_sub(L_shl(L_tmp,1),wk1i);/*Q30 */ #ifdef BASOP_NOGLOB x0r = add_o(a[j],a[j + 2], &Overflow); x0i = add_o(a[j + 1],a[j + 3], &Overflow); x1r = sub_o(a[j],a[j + 2], &Overflow); x1i = sub_o(a[j + 1],a[j + 3], &Overflow); x2r = add_o(a[j + 4],a[j + 6], &Overflow); x2i = add_o(a[j + 5],a[j + 7], &Overflow); x3r = sub_o(a[j + 4],a[j + 6], &Overflow); x3i = sub_o(a[j + 5],a[j + 7], &Overflow); a[j] = add_o(x0r,x2r, &Overflow); move16(); a[j + 1] = add_o(x0i,x2i, &Overflow); move16(); x0r = sub_o(x0r, x2r, &Overflow); x0i = sub_o(x0i, x2i, &Overflow); #else x0r = add(a[j], a[j + 2]); x0i = add(a[j + 1], a[j + 3]); x1r = sub(a[j], a[j + 2]); Loading @@ -1849,32 +1871,67 @@ static void cft1st_16fx( x0r = sub(x0r, x2r); x0i = sub(x0i, x2i); #endif L_tmp = Mult_32_16(wk2r,x0r);/*Q(15+Qx+Q_edct) */ L_tmp = Msub_32_16(L_tmp,wk2i,x0i); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j + 4] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ #else a[j + 4] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ #endif L_tmp = Mult_32_16(wk2r,x0i);/*Q(15+Qx+Q_edct) */ L_tmp = Madd_32_16(L_tmp,wk2i,x0r); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j + 5] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ x0r = sub_o(x1r, x3i, &Overflow); x0i = add_o(x1i, x3r, &Overflow); #else a[j + 5] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ x0r = sub(x1r, x3i); x0i = add(x1i, x3r); #endif L_tmp = Mult_32_16(wk1r,x0r);/*Q(15+Qx+Q_edct) */ L_tmp = Msub_32_16(L_tmp,wk1i,x0i); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j + 2] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ #else a[j + 2] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ #endif L_tmp = Mult_32_16(wk1r,x0i);/*Q(15+Qx+Q_edct) */ L_tmp = Madd_32_16(L_tmp,wk1i,x0r); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j + 3] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ x0r = add_o(x1r,x3i, &Overflow); x0i = sub_o(x1i,x3r, &Overflow); #else a[j + 3] = round_fx(L_shl(L_tmp, 1)); /*Q(Qx+Q_edct) */ x0r = add(x1r, x3i); x0i = sub(x1i, x3r); #endif L_tmp = Mult_32_16(wk3r,x0r); /*Q(15+Qx+Q_edct) */ L_tmp = Msub_32_16(L_tmp,wk3i,x0i); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j + 6] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ #else a[j + 6] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ #endif L_tmp = Mult_32_16(wk3r,x0i); /*Q(15+Qx+Q_edct) */ L_tmp = Madd_32_16(L_tmp,wk3i,x0r); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j + 7] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ wk1r = w[k2 + 2]; move32(); wk1i = w[k2 + 3]; move32(); L_tmp = L_shl_o(Mult_32_32(wk2r,wk1i),1, &Overflow);/*Q29 */ wk3r = L_sub_o(wk1r,L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q30 */ L_tmp = L_shl_o(Mult_32_32(wk2r,wk1r),1, &Overflow);/*Q29 */ wk3i = L_sub_o(L_shl_o(L_tmp,1, &Overflow),wk1i, &Overflow); /*Q30 */ #else a[j + 7] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ wk1r = w[k2 + 2]; move32(); Loading @@ -1884,7 +1941,22 @@ static void cft1st_16fx( L_tmp = L_shl(Mult_32_32(wk2r,wk1r),1);/*Q29 */ wk3i = L_sub(L_shl(L_tmp,1),wk1i); /*Q30 */ #endif #ifdef BASOP_NOGLOB x0r = add_o(a[j + 8],a[j + 10], &Overflow); x0i = add_o(a[j + 9],a[j + 11], &Overflow); x1r = sub_o(a[j + 8],a[j + 10], &Overflow); x1i = sub_o(a[j + 9],a[j + 11], &Overflow); x2r = add_o(a[j + 12],a[j + 14], &Overflow); x2i = add_o(a[j + 13],a[j + 15], &Overflow); x3r = sub_o(a[j + 12],a[j + 14], &Overflow); x3i = sub_o(a[j + 13],a[j + 15], &Overflow); a[j + 8] = add_o(x0r,x2r, &Overflow); move16(); a[j + 9] = add_o(x0i,x2i, &Overflow); x0r = sub_o(x0r, x2r, &Overflow); x0i = sub_o(x0i, x2i, &Overflow); #else x0r = add(a[j + 8],a[j + 10]); x0i = add(a[j + 9],a[j + 11]); x1r = sub(a[j + 8],a[j + 10]); Loading @@ -1897,39 +1969,66 @@ static void cft1st_16fx( move16(); a[j + 9] = add(x0i,x2i); move16(); x0r = sub(x0r, x2r); x0i = sub(x0i, x2i); #endif tmp = negate(x0r); L_tmp = Mult_32_16(wk2i,tmp);/*Q(15+Qx+Q_edct) */ L_tmp = Msub_32_16(L_tmp,wk2r,x0i); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j + 12] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ #else a[j + 12] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ #endif tmp = negate(x0i); L_tmp = Mult_32_16(wk2i,tmp);/*Q(15+Qx+Q_edct) */ L_tmp = Madd_32_16(L_tmp,wk2r,x0r); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j + 13] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ x0r = sub_o(x1r,x3i, &Overflow); x0i = add_o(x1i,x3r, &Overflow); #else a[j + 13] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ x0r = sub(x1r,x3i); x0i = add(x1i,x3r); #endif L_tmp = Mult_32_16(wk1r,x0r);/*Q(15+Qx+Q_edct) */ L_tmp = Msub_32_16(L_tmp,wk1i,x0i); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j + 10] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ #else a[j + 10] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ #endif L_tmp = Mult_32_16(wk1r,x0i);/*Q(15+Qx+Q_edct) */ L_tmp = Madd_32_16(L_tmp,wk1i,x0r); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j + 11] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ x0r = add_o(x1r,x3i, &Overflow); x0i = sub_o(x1i,x3r, &Overflow); #else a[j + 11] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ x0r = add(x1r,x3i); x0i = sub(x1i,x3r); #endif L_tmp = Mult_32_16(wk3r,x0r); /*Q(15+Qx+Q_edct) */ L_tmp = Msub_32_16(L_tmp,wk3i,x0i); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j + 14] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ #else a[j + 14] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ #endif L_tmp = Mult_32_16(wk3r,x0i); /*Q(15+Qx+Q_edct) */ L_tmp = Madd_32_16(L_tmp,wk3i,x0r); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j + 15] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ #else a[j + 15] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ #endif } return; Loading @@ -1952,7 +2051,9 @@ static void cftmdl_16fx( Word16 tmp, tmp2; Word32 L_tmp; Word32 L_x0r, L_x0i; #ifdef BASOP_NOGLOB Flag Overflow = 0; #endif m = shl(l, 2); move16(); FOR (j = 0; j < l; j += 2) Loading @@ -1960,6 +2061,32 @@ static void cftmdl_16fx( j1 = add(j,l); j2 = add(j1,l); j3 = add(j2,l); #ifdef BASOP_NOGLOB x0r = add_o(a[j],a[j1], &Overflow); x0i = add_o(a[j + 1],a[j1 + 1], &Overflow); x1r = sub_o(a[j],a[j1], &Overflow); x1i = sub_o(a[j + 1],a[j1 + 1], &Overflow); x2r = add_o(a[j2],a[j3], &Overflow); x2i = add_o(a[j2 + 1],a[j3 + 1], &Overflow); x3r = sub_o(a[j2],a[j3], &Overflow); x3i = sub_o(a[j2 + 1],a[j3 + 1], &Overflow); a[j] = add_o(x0r,x2r, &Overflow); move16(); a[j + 1] = add_o(x0i,x2i, &Overflow); move16(); a[j2] = sub_o(x0r,x2r, &Overflow); move16(); a[j2 + 1] = sub_o(x0i,x2i, &Overflow); move16(); a[j1] = sub_o(x1r,x3i, &Overflow); move16(); a[j1 + 1] = add_o(x1i,x3r, &Overflow); move16(); a[j3] = add_o(x1r,x3i, &Overflow); move16(); a[j3 + 1] = sub_o(x1i,x3r, &Overflow); move16(); #else x0r = add(a[j],a[j1]); x0i = add(a[j + 1],a[j1 + 1]); x1r = sub(a[j],a[j1]); Loading @@ -1984,6 +2111,7 @@ static void cftmdl_16fx( move16(); a[j3 + 1] = sub(x1i,x3r); move16(); #endif } wk1r = w[2]; Loading @@ -1994,6 +2122,28 @@ static void cftmdl_16fx( j1 = add(j,l); j2 = add(j1,l); j3 = add(j2,l); #ifdef BASOP_NOGLOB x0r = add_o(a[j],a[j1], &Overflow); x0i = add_o(a[j + 1],a[j1 + 1], &Overflow); x1r = sub_o(a[j],a[j1], &Overflow); x1i = sub_o(a[j + 1],a[j1 + 1], &Overflow); x2r = add_o(a[j2],a[j3], &Overflow); x2i = add_o(a[j2 + 1],a[j3 + 1], &Overflow); x3r = sub_o(a[j2],a[j3], &Overflow); x3i = sub_o(a[j2 + 1],a[j3 + 1], &Overflow); a[j] = add_o(x0r,x2r, &Overflow); move16(); a[j + 1] = add_o(x0i,x2i, &Overflow); move16(); a[j2] = sub_o(x2i,x0i, &Overflow); move16(); a[j2 + 1] = sub_o(x0r,x2r, &Overflow); move16(); x0r = sub_o(x1r,x3i, &Overflow); x0i = add_o(x1i,x3r, &Overflow); tmp = sub_o(x0r,x0i, &Overflow); #else x0r = add(a[j],a[j1]); x0i = add(a[j + 1],a[j1 + 1]); x1r = sub(a[j],a[j1]); Loading @@ -2014,22 +2164,46 @@ static void cftmdl_16fx( x0r = sub(x1r,x3i); x0i = add(x1i,x3r); tmp = sub(x0r,x0i); #endif L_tmp = Mult_32_16(wk1r,tmp);/*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j1] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ tmp = add_o(x0r, x0i, &Overflow); #else a[j1] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ tmp = add(x0r, x0i); #endif L_tmp = Mult_32_16(wk1r,tmp); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j1 + 1] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ x0r = add_o(x3i,x1r, &Overflow); x0i = sub_o(x3r,x1i, &Overflow); tmp = sub_o(x0i,x0r, &Overflow); #else a[j1 + 1] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ x0r = add(x3i,x1r); x0i = sub(x3r,x1i); tmp = sub(x0i,x0r); #endif L_tmp = Mult_32_16(wk1r,tmp);/*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j3] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ tmp = add_o(x0i,x0r, &Overflow); #else a[j3] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ tmp = add(x0i,x0r); #endif L_tmp = Mult_32_16(wk1r,tmp); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j3 + 1] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ #else a[j3 + 1] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ #endif } k1 = 0; Loading Loading @@ -2107,18 +2281,42 @@ static void cftmdl_16fx( move32(); wk1i = w[k2 + 3]; move32(); #ifdef BASOP_NOGLOB L_tmp = L_shl_o(Mult_32_32(wk2r,wk1i),1, &Overflow);/*Q29 */ wk3r = L_sub_o(wk1r,L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q30 */ L_tmp = L_shl_o(Mult_32_32(wk2r,wk1r),1, &Overflow);/*Q29 */ wk3i = L_sub_o(L_shl_o(L_tmp,1, &Overflow),wk1i, &Overflow); /*Q30 */ #else L_tmp = L_shl(Mult_32_32(wk2r,wk1i),1);/*Q29 */ wk3r = L_sub(wk1r,L_shl(L_tmp,1)); /*Q30 */ L_tmp = L_shl(Mult_32_32(wk2r,wk1r),1);/*Q29 */ wk3i = L_sub(L_shl(L_tmp,1),wk1i); /*Q30 */ #endif tmp2 = add(l,add(k,m)); FOR (j = add(k,m); j < tmp2; j += 2) { j1 = add(j,l); j2 = add(j1,l); j3 = add(j2,l); #ifdef BASOP_NOGLOB x0r = add_o(a[j],a[j1], &Overflow); x0i = add_o(a[j + 1],a[j1 + 1], &Overflow); x1r = sub_o(a[j],a[j1], &Overflow); x1i = sub_o(a[j + 1],a[j1 + 1], &Overflow); x2r = add_o(a[j2],a[j3], &Overflow); x2i = add_o(a[j2 + 1],a[j3 + 1], &Overflow); x3r = sub_o(a[j2],a[j3], &Overflow); x3i = sub_o(a[j2 + 1],a[j3 + 1], &Overflow); a[j] = add_o(x0r,x2r, &Overflow); move16(); a[j + 1] = add_o(x0i,x2i, &Overflow); move16(); x0r = sub_o(x0r,x2r, &Overflow); x0i = sub_o(x0i,x2i, &Overflow); #else x0r = add(a[j],a[j1]); x0i = add(a[j + 1],a[j1 + 1]); x1r = sub(a[j],a[j1]); Loading @@ -2134,38 +2332,63 @@ static void cftmdl_16fx( x0r = sub(x0r,x2r); x0i = sub(x0i,x2i); #endif tmp = negate(x0r); L_tmp = Mult_32_16(wk2i,tmp);/*Q(15+Qx+Q_edct) */ L_tmp = Msub_32_16(L_tmp,wk2r,x0i); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j2] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ #else a[j2] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ #endif tmp = negate(x0i); L_tmp = Mult_32_16(wk2i,tmp);/*Q(15+Qx+Q_edct) */ L_tmp = Madd_32_16(L_tmp,wk2r,x0r); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j2 + 1] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ x0r = sub_o(x1r,x3i, &Overflow); x0i = add_o(x1i,x3r, &Overflow); #else a[j2 + 1] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ x0r = sub(x1r,x3i); x0i = add(x1i,x3r); #endif L_tmp = Mult_32_16(wk1r,x0r);/*Q(15+Qx+Q_edct) */ L_tmp = Msub_32_16(L_tmp,wk1i,x0i); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j1] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ #else a[j1] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ #endif L_tmp = Mult_32_16(wk1r,x0i);/*Q(15+Qx+Q_edct) */ L_tmp = Madd_32_16(L_tmp,wk1i,x0r); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j1 + 1] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ x0r = add_o(x1r,x3i, &Overflow); x0i = sub_o(x1i,x3r, &Overflow); #else a[j1 + 1] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ x0r = add(x1r,x3i); x0i = sub(x1i,x3r); #endif L_tmp = Mult_32_16(wk3r,x0r); /*Q(15+Qx+Q_edct) */ L_tmp = Msub_32_16(L_tmp,wk3i,x0i); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j3] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ #else a[j3] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ #endif L_tmp = Mult_32_16(wk3r,x0i); /*Q(15+Qx+Q_edct) */ L_tmp = Madd_32_16(L_tmp,wk3i,x0r); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j3 + 1] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ #else a[j3 + 1] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ #endif } } Loading Loading
lib_com/edct_fx.c +16 −3 Original line number Diff line number Diff line Loading @@ -314,13 +314,21 @@ void edct_16fx( i2 = shl(i,1); L_tmp = L_mult(x[i2],edct_table[i]);/*Q(Qx+16) */ #ifdef BASOP_NOGLOB Lacc = L_mac_o(L_tmp,*px,*pt, &Overflow);/*Q(Qx+16) */ re2[i] = round_fx_o(L_shl_o(Lacc, Q_edct, &Overflow), &Overflow); /* Q(Qx+Q_edct) */ #else Lacc = L_mac(L_tmp,*px,*pt);/*Q(Qx+16) */ re2[i] = round_fx(L_shl(Lacc, Q_edct)); /* Q(Qx+Q_edct) */ #endif L_tmp = L_mult(*px,edct_table[i]);/*Q(Qx+16) */ #ifdef BASOP_NOGLOB Lacc = L_msu_o(L_tmp,x[i2],*pt, &Overflow);/*Q(Qx+16) */ im2[i] = round_fx_o(L_shl_o(Lacc, Q_edct, &Overflow), &Overflow); /* Q(Qx+Q_edct) */ #else Lacc = L_msu(L_tmp,x[i2],*pt);/*Q(Qx+16) */ im2[i] = round_fx(L_shl(Lacc, Q_edct)); /* Q(Qx+Q_edct) */ #endif px -= 2; pt--; } Loading Loading @@ -352,7 +360,11 @@ void edct_16fx( #endif tmp = mult_r(re2[i],fact); /*Q(Qx+Q_edct) */ #ifdef BASOP_NOGLOB im[i] = add_o(im2[i],tmp, &Overflow); /*Q(Qx+Q_edct) */ move16(); #else im[i] = add(im2[i],tmp); /*Q(Qx+Q_edct) */ move16(); #endif } /* Post-rotate and obtain the output data */ Loading @@ -363,10 +375,11 @@ void edct_16fx( i2 = shl(i,1); L_tmp = L_mult(re[i],edct_table[i]);/*Q(Qx+Q_edct+16) */ Lacc = L_mac(L_tmp,im[i],*pt);/*Q(Qx+Q_edct+16) */ #ifdef BASOP_NOGLOB Lacc = L_mac_o(L_tmp, im[i], *pt, &Overflow);/*Q(Qx+Q_edct+16) */ y[i2] = round_fx_o(L_shr_o(Lacc,Q_edct, &Overflow), &Overflow); /* Q(Qx) */ #else /* BASOP_NOGLOB */ Lacc = L_mac(L_tmp, im[i], *pt);/*Q(Qx+Q_edct+16) */ y[i2] = round_fx(L_shr(Lacc,Q_edct)); /* Q(Qx) */ #endif /* BASOP_NOGLOB */ Loading
lib_com/fft_fx.c +264 −41 Original line number Diff line number Diff line Loading @@ -1715,14 +1715,17 @@ static void cftfsub_16fx( #else x0r = sub(a[j],a[j1]); #endif x0i = sub(a[j + 1],a[j1 + 1]); #ifdef BASOP_NOGLOB x0i = sub_o(a[j + 1], a[j1 + 1], &Overflow); a[j] = add_o(a[j], a[j1], &Overflow); move16(); a[j + 1] = add_o(a[j + 1], a[j1 + 1], &Overflow); #else x0i = sub(a[j + 1], a[j1 + 1]); a[j] = add(a[j],a[j1]); #endif move16(); a[j + 1] = add(a[j + 1], a[j1 + 1]); #endif move16(); a[j1] = x0r; move16(); Loading @@ -1748,7 +1751,9 @@ static void cft1st_16fx( Word16 x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i; Word16 tmp; Word32 L_tmp; #ifdef BASOP_NOGLOB Flag Overflow = 0; #endif x0r = add(a[0],a[2]); x0i = add(a[1],a[3]); x1r = sub(a[0],a[2]); Loading Loading @@ -1834,6 +1839,23 @@ static void cft1st_16fx( L_tmp = L_shl(Mult_32_32(wk2i,wk1r),1);/*Q29 */ wk3i = L_sub(L_shl(L_tmp,1),wk1i);/*Q30 */ #ifdef BASOP_NOGLOB x0r = add_o(a[j],a[j + 2], &Overflow); x0i = add_o(a[j + 1],a[j + 3], &Overflow); x1r = sub_o(a[j],a[j + 2], &Overflow); x1i = sub_o(a[j + 1],a[j + 3], &Overflow); x2r = add_o(a[j + 4],a[j + 6], &Overflow); x2i = add_o(a[j + 5],a[j + 7], &Overflow); x3r = sub_o(a[j + 4],a[j + 6], &Overflow); x3i = sub_o(a[j + 5],a[j + 7], &Overflow); a[j] = add_o(x0r,x2r, &Overflow); move16(); a[j + 1] = add_o(x0i,x2i, &Overflow); move16(); x0r = sub_o(x0r, x2r, &Overflow); x0i = sub_o(x0i, x2i, &Overflow); #else x0r = add(a[j], a[j + 2]); x0i = add(a[j + 1], a[j + 3]); x1r = sub(a[j], a[j + 2]); Loading @@ -1849,32 +1871,67 @@ static void cft1st_16fx( x0r = sub(x0r, x2r); x0i = sub(x0i, x2i); #endif L_tmp = Mult_32_16(wk2r,x0r);/*Q(15+Qx+Q_edct) */ L_tmp = Msub_32_16(L_tmp,wk2i,x0i); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j + 4] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ #else a[j + 4] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ #endif L_tmp = Mult_32_16(wk2r,x0i);/*Q(15+Qx+Q_edct) */ L_tmp = Madd_32_16(L_tmp,wk2i,x0r); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j + 5] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ x0r = sub_o(x1r, x3i, &Overflow); x0i = add_o(x1i, x3r, &Overflow); #else a[j + 5] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ x0r = sub(x1r, x3i); x0i = add(x1i, x3r); #endif L_tmp = Mult_32_16(wk1r,x0r);/*Q(15+Qx+Q_edct) */ L_tmp = Msub_32_16(L_tmp,wk1i,x0i); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j + 2] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ #else a[j + 2] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ #endif L_tmp = Mult_32_16(wk1r,x0i);/*Q(15+Qx+Q_edct) */ L_tmp = Madd_32_16(L_tmp,wk1i,x0r); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j + 3] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ x0r = add_o(x1r,x3i, &Overflow); x0i = sub_o(x1i,x3r, &Overflow); #else a[j + 3] = round_fx(L_shl(L_tmp, 1)); /*Q(Qx+Q_edct) */ x0r = add(x1r, x3i); x0i = sub(x1i, x3r); #endif L_tmp = Mult_32_16(wk3r,x0r); /*Q(15+Qx+Q_edct) */ L_tmp = Msub_32_16(L_tmp,wk3i,x0i); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j + 6] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ #else a[j + 6] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ #endif L_tmp = Mult_32_16(wk3r,x0i); /*Q(15+Qx+Q_edct) */ L_tmp = Madd_32_16(L_tmp,wk3i,x0r); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j + 7] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ wk1r = w[k2 + 2]; move32(); wk1i = w[k2 + 3]; move32(); L_tmp = L_shl_o(Mult_32_32(wk2r,wk1i),1, &Overflow);/*Q29 */ wk3r = L_sub_o(wk1r,L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q30 */ L_tmp = L_shl_o(Mult_32_32(wk2r,wk1r),1, &Overflow);/*Q29 */ wk3i = L_sub_o(L_shl_o(L_tmp,1, &Overflow),wk1i, &Overflow); /*Q30 */ #else a[j + 7] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ wk1r = w[k2 + 2]; move32(); Loading @@ -1884,7 +1941,22 @@ static void cft1st_16fx( L_tmp = L_shl(Mult_32_32(wk2r,wk1r),1);/*Q29 */ wk3i = L_sub(L_shl(L_tmp,1),wk1i); /*Q30 */ #endif #ifdef BASOP_NOGLOB x0r = add_o(a[j + 8],a[j + 10], &Overflow); x0i = add_o(a[j + 9],a[j + 11], &Overflow); x1r = sub_o(a[j + 8],a[j + 10], &Overflow); x1i = sub_o(a[j + 9],a[j + 11], &Overflow); x2r = add_o(a[j + 12],a[j + 14], &Overflow); x2i = add_o(a[j + 13],a[j + 15], &Overflow); x3r = sub_o(a[j + 12],a[j + 14], &Overflow); x3i = sub_o(a[j + 13],a[j + 15], &Overflow); a[j + 8] = add_o(x0r,x2r, &Overflow); move16(); a[j + 9] = add_o(x0i,x2i, &Overflow); x0r = sub_o(x0r, x2r, &Overflow); x0i = sub_o(x0i, x2i, &Overflow); #else x0r = add(a[j + 8],a[j + 10]); x0i = add(a[j + 9],a[j + 11]); x1r = sub(a[j + 8],a[j + 10]); Loading @@ -1897,39 +1969,66 @@ static void cft1st_16fx( move16(); a[j + 9] = add(x0i,x2i); move16(); x0r = sub(x0r, x2r); x0i = sub(x0i, x2i); #endif tmp = negate(x0r); L_tmp = Mult_32_16(wk2i,tmp);/*Q(15+Qx+Q_edct) */ L_tmp = Msub_32_16(L_tmp,wk2r,x0i); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j + 12] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ #else a[j + 12] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ #endif tmp = negate(x0i); L_tmp = Mult_32_16(wk2i,tmp);/*Q(15+Qx+Q_edct) */ L_tmp = Madd_32_16(L_tmp,wk2r,x0r); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j + 13] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ x0r = sub_o(x1r,x3i, &Overflow); x0i = add_o(x1i,x3r, &Overflow); #else a[j + 13] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ x0r = sub(x1r,x3i); x0i = add(x1i,x3r); #endif L_tmp = Mult_32_16(wk1r,x0r);/*Q(15+Qx+Q_edct) */ L_tmp = Msub_32_16(L_tmp,wk1i,x0i); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j + 10] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ #else a[j + 10] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ #endif L_tmp = Mult_32_16(wk1r,x0i);/*Q(15+Qx+Q_edct) */ L_tmp = Madd_32_16(L_tmp,wk1i,x0r); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j + 11] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ x0r = add_o(x1r,x3i, &Overflow); x0i = sub_o(x1i,x3r, &Overflow); #else a[j + 11] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ x0r = add(x1r,x3i); x0i = sub(x1i,x3r); #endif L_tmp = Mult_32_16(wk3r,x0r); /*Q(15+Qx+Q_edct) */ L_tmp = Msub_32_16(L_tmp,wk3i,x0i); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j + 14] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ #else a[j + 14] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ #endif L_tmp = Mult_32_16(wk3r,x0i); /*Q(15+Qx+Q_edct) */ L_tmp = Madd_32_16(L_tmp,wk3i,x0r); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j + 15] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ #else a[j + 15] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ #endif } return; Loading @@ -1952,7 +2051,9 @@ static void cftmdl_16fx( Word16 tmp, tmp2; Word32 L_tmp; Word32 L_x0r, L_x0i; #ifdef BASOP_NOGLOB Flag Overflow = 0; #endif m = shl(l, 2); move16(); FOR (j = 0; j < l; j += 2) Loading @@ -1960,6 +2061,32 @@ static void cftmdl_16fx( j1 = add(j,l); j2 = add(j1,l); j3 = add(j2,l); #ifdef BASOP_NOGLOB x0r = add_o(a[j],a[j1], &Overflow); x0i = add_o(a[j + 1],a[j1 + 1], &Overflow); x1r = sub_o(a[j],a[j1], &Overflow); x1i = sub_o(a[j + 1],a[j1 + 1], &Overflow); x2r = add_o(a[j2],a[j3], &Overflow); x2i = add_o(a[j2 + 1],a[j3 + 1], &Overflow); x3r = sub_o(a[j2],a[j3], &Overflow); x3i = sub_o(a[j2 + 1],a[j3 + 1], &Overflow); a[j] = add_o(x0r,x2r, &Overflow); move16(); a[j + 1] = add_o(x0i,x2i, &Overflow); move16(); a[j2] = sub_o(x0r,x2r, &Overflow); move16(); a[j2 + 1] = sub_o(x0i,x2i, &Overflow); move16(); a[j1] = sub_o(x1r,x3i, &Overflow); move16(); a[j1 + 1] = add_o(x1i,x3r, &Overflow); move16(); a[j3] = add_o(x1r,x3i, &Overflow); move16(); a[j3 + 1] = sub_o(x1i,x3r, &Overflow); move16(); #else x0r = add(a[j],a[j1]); x0i = add(a[j + 1],a[j1 + 1]); x1r = sub(a[j],a[j1]); Loading @@ -1984,6 +2111,7 @@ static void cftmdl_16fx( move16(); a[j3 + 1] = sub(x1i,x3r); move16(); #endif } wk1r = w[2]; Loading @@ -1994,6 +2122,28 @@ static void cftmdl_16fx( j1 = add(j,l); j2 = add(j1,l); j3 = add(j2,l); #ifdef BASOP_NOGLOB x0r = add_o(a[j],a[j1], &Overflow); x0i = add_o(a[j + 1],a[j1 + 1], &Overflow); x1r = sub_o(a[j],a[j1], &Overflow); x1i = sub_o(a[j + 1],a[j1 + 1], &Overflow); x2r = add_o(a[j2],a[j3], &Overflow); x2i = add_o(a[j2 + 1],a[j3 + 1], &Overflow); x3r = sub_o(a[j2],a[j3], &Overflow); x3i = sub_o(a[j2 + 1],a[j3 + 1], &Overflow); a[j] = add_o(x0r,x2r, &Overflow); move16(); a[j + 1] = add_o(x0i,x2i, &Overflow); move16(); a[j2] = sub_o(x2i,x0i, &Overflow); move16(); a[j2 + 1] = sub_o(x0r,x2r, &Overflow); move16(); x0r = sub_o(x1r,x3i, &Overflow); x0i = add_o(x1i,x3r, &Overflow); tmp = sub_o(x0r,x0i, &Overflow); #else x0r = add(a[j],a[j1]); x0i = add(a[j + 1],a[j1 + 1]); x1r = sub(a[j],a[j1]); Loading @@ -2014,22 +2164,46 @@ static void cftmdl_16fx( x0r = sub(x1r,x3i); x0i = add(x1i,x3r); tmp = sub(x0r,x0i); #endif L_tmp = Mult_32_16(wk1r,tmp);/*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j1] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ tmp = add_o(x0r, x0i, &Overflow); #else a[j1] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ tmp = add(x0r, x0i); #endif L_tmp = Mult_32_16(wk1r,tmp); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j1 + 1] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ x0r = add_o(x3i,x1r, &Overflow); x0i = sub_o(x3r,x1i, &Overflow); tmp = sub_o(x0i,x0r, &Overflow); #else a[j1 + 1] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ x0r = add(x3i,x1r); x0i = sub(x3r,x1i); tmp = sub(x0i,x0r); #endif L_tmp = Mult_32_16(wk1r,tmp);/*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j3] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ tmp = add_o(x0i,x0r, &Overflow); #else a[j3] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ tmp = add(x0i,x0r); #endif L_tmp = Mult_32_16(wk1r,tmp); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j3 + 1] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ #else a[j3 + 1] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ #endif } k1 = 0; Loading Loading @@ -2107,18 +2281,42 @@ static void cftmdl_16fx( move32(); wk1i = w[k2 + 3]; move32(); #ifdef BASOP_NOGLOB L_tmp = L_shl_o(Mult_32_32(wk2r,wk1i),1, &Overflow);/*Q29 */ wk3r = L_sub_o(wk1r,L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q30 */ L_tmp = L_shl_o(Mult_32_32(wk2r,wk1r),1, &Overflow);/*Q29 */ wk3i = L_sub_o(L_shl_o(L_tmp,1, &Overflow),wk1i, &Overflow); /*Q30 */ #else L_tmp = L_shl(Mult_32_32(wk2r,wk1i),1);/*Q29 */ wk3r = L_sub(wk1r,L_shl(L_tmp,1)); /*Q30 */ L_tmp = L_shl(Mult_32_32(wk2r,wk1r),1);/*Q29 */ wk3i = L_sub(L_shl(L_tmp,1),wk1i); /*Q30 */ #endif tmp2 = add(l,add(k,m)); FOR (j = add(k,m); j < tmp2; j += 2) { j1 = add(j,l); j2 = add(j1,l); j3 = add(j2,l); #ifdef BASOP_NOGLOB x0r = add_o(a[j],a[j1], &Overflow); x0i = add_o(a[j + 1],a[j1 + 1], &Overflow); x1r = sub_o(a[j],a[j1], &Overflow); x1i = sub_o(a[j + 1],a[j1 + 1], &Overflow); x2r = add_o(a[j2],a[j3], &Overflow); x2i = add_o(a[j2 + 1],a[j3 + 1], &Overflow); x3r = sub_o(a[j2],a[j3], &Overflow); x3i = sub_o(a[j2 + 1],a[j3 + 1], &Overflow); a[j] = add_o(x0r,x2r, &Overflow); move16(); a[j + 1] = add_o(x0i,x2i, &Overflow); move16(); x0r = sub_o(x0r,x2r, &Overflow); x0i = sub_o(x0i,x2i, &Overflow); #else x0r = add(a[j],a[j1]); x0i = add(a[j + 1],a[j1 + 1]); x1r = sub(a[j],a[j1]); Loading @@ -2134,38 +2332,63 @@ static void cftmdl_16fx( x0r = sub(x0r,x2r); x0i = sub(x0i,x2i); #endif tmp = negate(x0r); L_tmp = Mult_32_16(wk2i,tmp);/*Q(15+Qx+Q_edct) */ L_tmp = Msub_32_16(L_tmp,wk2r,x0i); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j2] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ #else a[j2] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ #endif tmp = negate(x0i); L_tmp = Mult_32_16(wk2i,tmp);/*Q(15+Qx+Q_edct) */ L_tmp = Madd_32_16(L_tmp,wk2r,x0r); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j2 + 1] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ x0r = sub_o(x1r,x3i, &Overflow); x0i = add_o(x1i,x3r, &Overflow); #else a[j2 + 1] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ x0r = sub(x1r,x3i); x0i = add(x1i,x3r); #endif L_tmp = Mult_32_16(wk1r,x0r);/*Q(15+Qx+Q_edct) */ L_tmp = Msub_32_16(L_tmp,wk1i,x0i); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j1] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ #else a[j1] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ #endif L_tmp = Mult_32_16(wk1r,x0i);/*Q(15+Qx+Q_edct) */ L_tmp = Madd_32_16(L_tmp,wk1i,x0r); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j1 + 1] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ x0r = add_o(x1r,x3i, &Overflow); x0i = sub_o(x1i,x3r, &Overflow); #else a[j1 + 1] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ x0r = add(x1r,x3i); x0i = sub(x1i,x3r); #endif L_tmp = Mult_32_16(wk3r,x0r); /*Q(15+Qx+Q_edct) */ L_tmp = Msub_32_16(L_tmp,wk3i,x0i); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j3] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ #else a[j3] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ #endif L_tmp = Mult_32_16(wk3r,x0i); /*Q(15+Qx+Q_edct) */ L_tmp = Madd_32_16(L_tmp,wk3i,x0r); /*Q(15+Qx+Q_edct) */ #ifdef BASOP_NOGLOB a[j3 + 1] = round_fx_o(L_shl_o(L_tmp,1, &Overflow), &Overflow); /*Q(Qx+Q_edct) */ #else a[j3 + 1] = round_fx(L_shl(L_tmp,1)); /*Q(Qx+Q_edct) */ #endif } } Loading