s10_8pf.c
来自「君正早期ucos系统(只有早期的才不没有打包成库),MPLAYER,文件系统,图」· C语言 代码 · 共 587 行 · 第 1/2 页
C
587 行
alp1 = L_mac (alp1, rr[i3Len + i4], _1_16);// printf(" alp1 = %d, ", alp1);#endif /* initialize 3 indices for i5 inner loop (see i2-i3 loop) */ //move16 (); move16 (); move16 (); i4Len = i4 * L_CODE; for (i5 = ipos[5]; i5 < L_CODE; i5 += step) { ps2 = add (ps1, dn[i5]); alp2 = L_mac (alp1, rrv[i5], _1_4);#ifndef JZ4740_MXU_OPT alp2 = L_mac (alp2, rr[i4][i5], _1_16);#else alp2 = L_mac (alp2, rr[i4Len + i5], _1_16);#endif sq2 = mult (ps2, ps2); alp_16 = round (alp2); s = L_msu (L_mult (alp, sq2), sq, alp_16); //test (); if (s > 0) { sq = sq2; //move16 (); ps = ps2; //move16 (); alp = alp_16; //move16 (); ia = i4; //move16 (); ib = i5; //move16 (); } } } i4 = ia; //move16 (); i5 = ib; //move16 (); i4Len = i4 * L_CODE; i5Len = i5 * L_CODE; /*----------------------------------------------------------------* * i6 and i7 loop: * *----------------------------------------------------------------*/ ps0 = ps; //move16 (); alp0 = L_mult (alp, _1_2); /* initialize 8 indices for next loop (see i2-i3 loop) */ //move16 (); move16 (); move16 (); move16 (); //move16 (); move16 (); move16 (); move16 (); for (i7 = ipos[7]; i7 < L_CODE; i7 += step) {#ifndef JZ4740_MXU_OPT s = L_mult (rr[i7][i7], _1_16); s = L_mac (s, rr[i0][i7], _1_8); s = L_mac (s, rr[i1][i7], _1_8); s = L_mac (s, rr[i2][i7], _1_8); s = L_mac (s, rr[i3][i7], _1_8); s = L_mac (s, rr[i4][i7], _1_8); s = L_mac (s, rr[i5][i7], _1_8);// printf(" s = %d, ", s);#else s = L_mult (rr[i7 * L_CODE + i7], _1_16); s = L_mac (s, rr[i0Len + i7], _1_8); s = L_mac (s, rr[i1Len + i7], _1_8); s = L_mac (s, rr[i2Len + i7], _1_8); s = L_mac (s, rr[i3Len + i7], _1_8); s = L_mac (s, rr[i4Len + i7], _1_8); s = L_mac (s, rr[i5Len + i7], _1_8);// printf(" s = %d\n", s);#endif rrv[i7] = round (s); //move16 (); } /* Default value */ sq = -1; //move16 (); alp = 1; //move16 (); ps = 0; //move16 (); ia = ipos[6]; //move16 (); ib = ipos[7]; //move16 (); /* initialize 8 indices for i6 loop (see i2-i3 loop) */ //move16 (); move16 (); move16 (); move16 (); //move16 (); move16 (); move16 (); move16 (); for (i6 = ipos[6]; i6 < L_CODE; i6 += step) { ps1 = add (ps0, dn[i6]);#ifndef JZ4740_MXU_OPT //did not test alp1 = L_mac (alp0, rr[i6][i6], _1_64); alp1 = L_mac (alp1, rr[i0][i6], _1_32); alp1 = L_mac (alp1, rr[i1][i6], _1_32); alp1 = L_mac (alp1, rr[i2][i6], _1_32); alp1 = L_mac (alp1, rr[i3][i6], _1_32); alp1 = L_mac (alp1, rr[i4][i6], _1_32); alp1 = L_mac (alp1, rr[i5][i6], _1_32);// printf("alp1 = %d, ", alp1); #else alp1 = L_mac (alp0, rr[i6 * L_CODE + i6], _1_64); alp1 = L_mac (alp1, rr[i0Len + i6], _1_32); alp1 = L_mac (alp1, rr[i1Len + i6], _1_32); alp1 = L_mac (alp1, rr[i2Len + i6], _1_32); alp1 = L_mac (alp1, rr[i3Len + i6], _1_32); alp1 = L_mac (alp1, rr[i4Len + i6], _1_32); alp1 = L_mac (alp1, rr[i5Len + i6], _1_32);// printf("alp1 = %d, ", alp1 / 2); #endif /* initialize 3 indices for i7 inner loop (see i2-i3 loop) */ //move16 (); move16 (); move16 (); i6Len = i6 * L_CODE; for (i7 = ipos[7]; i7 < L_CODE; i7 += step) { ps2 = add (ps1, dn[i7]); alp2 = L_mac (alp1, rrv[i7], _1_4);#ifndef JZ4740_MXU_OPT alp2 = L_mac (alp2, rr[i6][i7], _1_32);#else alp2 = L_mac (alp2, rr[i6Len + i7], _1_32);#endif sq2 = mult (ps2, ps2); alp_16 = round (alp2); s = L_msu (L_mult (alp, sq2), sq, alp_16); //test (); if (s > 0) { sq = sq2; //move16 (); ps = ps2; //move16 (); alp = alp_16; //move16 (); ia = i6; //move16 (); ib = i7; //move16 (); } } } i6 = ia; //move16 (); i7 = ib; //move16 (); i6Len = i6 * L_CODE; i7Len = i7 * L_CODE; /* now finished searching a set of 8 pulses */ //test(); if(gsmefrFlag != 0){ /* go on with the two last pulses for GSMEFR */ /*----------------------------------------------------------------* * i8 and i9 loop: * *----------------------------------------------------------------*/ ps0 = ps; //move16 (); alp0 = L_mult (alp, _1_2); /* initialize 10 indices for next loop (see i2-i3 loop) */ //move16 (); move16 (); move16 (); move16 (); move16 (); //move16 (); move16 (); move16 (); move16 (); move16 (); for (i9 = ipos[9]; i9 < L_CODE; i9 += step) {#ifndef JZ4740_MXU_OPT s = L_mult (rr[i9][i9], _1_16); s = L_mac (s, rr[i0][i9], _1_8); s = L_mac (s, rr[i1][i9], _1_8); s = L_mac (s, rr[i2][i9], _1_8); s = L_mac (s, rr[i3][i9], _1_8); s = L_mac (s, rr[i4][i9], _1_8); s = L_mac (s, rr[i5][i9], _1_8); s = L_mac (s, rr[i6][i9], _1_8); s = L_mac (s, rr[i7][i9], _1_8);// printf("s = %d, ", s);#else s = L_mult (rr[i9 * L_CODE + i9], _1_16); s = L_mac (s, rr[i0Len + i9], _1_8); s = L_mac (s, rr[i1Len + i9], _1_8); s = L_mac (s, rr[i2Len + i9], _1_8); s = L_mac (s, rr[i3Len + i9], _1_8); s = L_mac (s, rr[i4Len + i9], _1_8); s = L_mac (s, rr[i5Len + i9], _1_8); s = L_mac (s, rr[i6Len + i9], _1_8); s = L_mac (s, rr[i7Len + i9], _1_8);// printf("s = %d,\n ", s);#endif rrv[i9] = round (s); //move16 (); } /* Default value */ sq = -1; //move16 (); alp = 1; //move16 (); ps = 0; //move16 (); ia = ipos[8]; //move16 (); ib = ipos[9]; //move16 (); /* initialize 10 indices for i8 loop (see i2-i3 loop) */ //move16 (); move16 (); move16 (); move16 (); move16 (); //move16 (); move16 (); move16 (); move16 (); move16 (); for (i8 = ipos[8]; i8 < L_CODE; i8 += step) { ps1 = add (ps0, dn[i8]);#ifndef JZ4740_MXU_OPT alp1 = L_mac (alp0, rr[i8][i8], _1_128); alp1 = L_mac (alp1, rr[i0][i8], _1_64); alp1 = L_mac (alp1, rr[i1][i8], _1_64); alp1 = L_mac (alp1, rr[i2][i8], _1_64); alp1 = L_mac (alp1, rr[i3][i8], _1_64); alp1 = L_mac (alp1, rr[i4][i8], _1_64); alp1 = L_mac (alp1, rr[i5][i8], _1_64); alp1 = L_mac (alp1, rr[i6][i8], _1_64); alp1 = L_mac (alp1, rr[i7][i8], _1_64);#else alp1 = L_mac (alp0, rr[i8 * L_CODE + i8], _1_128); alp1 = L_mac (alp1, rr[i0Len + i8], _1_64); alp1 = L_mac (alp1, rr[i1Len + i8], _1_64); alp1 = L_mac (alp1, rr[i2Len + i8], _1_64); alp1 = L_mac (alp1, rr[i3Len + i8], _1_64); alp1 = L_mac (alp1, rr[i4Len + i8], _1_64); alp1 = L_mac (alp1, rr[i5Len + i8], _1_64); alp1 = L_mac (alp1, rr[i6Len + i8], _1_64); alp1 = L_mac (alp1, rr[i7Len + i8], _1_64);#endif /* initialize 3 indices for i9 inner loop (see i2-i3 loop) */ //move16 (); move16 (); move16 (); i8Len = i8 * L_CODE; for (i9 = ipos[9]; i9 < L_CODE; i9 += step) { ps2 = add (ps1, dn[i9]); alp2 = L_mac (alp1, rrv[i9], _1_8);#ifndef JZ4740_MXU_OPT alp2 = L_mac (alp2, rr[i8][i9], _1_64);#else alp2 = L_mac (alp2, rr[i8Len + i9], _1_64);#endif sq2 = mult (ps2, ps2); alp_16 = round (alp2); s = L_msu (L_mult (alp, sq2), sq, alp_16); //test (); if (s > 0) { sq = sq2; //move16 (); ps = ps2; //move16 (); alp = alp_16; //move16 (); ia = i8; //move16 (); ib = i9; //move16 (); } } } }/* end gsmefrFlag */ /*---------------------------------------------------------------- * * test and memorise if this combination is better than the last one.* *----------------------------------------------------------------*/ s = L_msu (L_mult (alpk, sq), psk, alp); //test (); if (s > 0) { psk = sq; //move16 (); alpk = alp; //move16 (); codvec[0] = i0; //move16 (); codvec[1] = i1; //move16 (); codvec[2] = i2; //move16 (); codvec[3] = i3; //move16 (); codvec[4] = i4; //move16 (); codvec[5] = i5; //move16 (); codvec[6] = i6; //move16 (); codvec[7] = i7; //move16 (); //test(); if (gsmefrFlag != 0) { codvec[8] = ia; //move16 (); codvec[9] = ib; //move16 (); } } /*----------------------------------------------------------------* * Cyclic permutation of i1,i2,i3,i4,i5,i6,i7,(i8 and i9). * *----------------------------------------------------------------*/ pos = ipos[1]; //move16 (); for (j = 1, k = 2; k < nbPulse; j++, k++) { ipos[j] = ipos[k]; //move16 (); } ipos[sub(nbPulse,1)] = pos; //move16 (); } /* end 1..nbTracks loop*/}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?