From 5eb3b2fca0aa795b23956dd8f8b64d077bf4fef0 Mon Sep 17 00:00:00 2001 From: Jianzhong Xu Date: Tue, 31 Jul 2018 10:34:27 -0400 Subject: [PATCH 1/1] DSPLIB: optimized signal processing functions for TI DSPs --- ti/dsplib/.metadata/.tirex/tirex_logo_256.png | Bin 0 -> 10383 bytes ti/dsplib/Makedocs.mk | 39 + ti/dsplib/MakedocsBundle.mk | 66 + .../docs/bundle/DSPLIB_C64Px_TestReport.html | 1767 +++++++ .../docs/bundle/DSPLIB_C66x_TestReport.html | 4039 +++++++++++++++++ .../docs/bundle/DSPLIB_C674x_TestReport.html | 807 ++++ ti/dsplib/docs/bundle/doxygen/doxyfile.xdt | 315 ++ ti/dsplib/docs/bundle/doxygen/doxygen.h | 477 ++ .../doxygen/images/dsplib_c64P_directory.jpg | Bin 0 -> 37181 bytes .../doxygen/images/dsplib_c66_directory.jpg | Bin 0 -> 35376 bytes .../doxygen/images/dsplib_c674_directory.jpg | Bin 0 -> 36317 bytes ti/dsplib/docs/bundle/doxygen/release.h.xdt | 375 ++ ti/dsplib/docs/bundle/manifest/doxyfile.xdt | 260 ++ ti/dsplib/docs/bundle/manifest/manifest.h | 30 + .../docs/doxygen/TI_Templates/tifooter.htm | 4 + .../docs/doxygen/TI_Templates/tiheader.htm | 12 + .../docs/doxygen/TI_Templates/tilogo.gif | Bin 0 -> 1137 bytes .../docs/doxygen/TI_Templates/titagline.gif | Bin 0 -> 653 bytes ti/dsplib/docs/doxygen/doxyfile.xdt | 262 ++ ti/dsplib/docs/doxygen/doxygen.h | 59 + ti/dsplib/docs/doxygen/release.h | 247 + ti/dsplib/docs/dsplib/README.txt | 45 + .../dsplib_3_0_0_6_release_notes.html | 228 + .../dsplib_3_0_0_7_release_notes.html | 228 + .../dsplib_3_0_0_8_release_notes.html | 225 + .../dsplib_3_0_1_0_release_notes.html | 225 + .../dsplib_3_1_0_0_release_notes.html | 241 + .../dsplib_3_1_1_0_release_notes.html | 223 + .../dsplib_3_1_1_1_release_notes.html | 0 .../dsplib_3_2_0_0_release_notes.html | 222 + .../dsplib_3_2_0_1_release_notes.html | 222 + .../dsplib/docs/relnotes_archive/tilogo.gif | Bin 0 -> 1137 bytes .../docs/relnotes_archive/titagline.gif | Bin 0 -> 653 bytes ti/dsplib/docs/dsplib/package.xs | 22 + .../docs/manifest/Software_Manifest.html | 281 ++ ti/dsplib/docs/manifest/manifest.xml | 100 + ti/dsplib/docs/manifest/manifest.xml.xdt | 107 + .../dsplib_3_0_0_6_release_notes.html | 106 + .../dsplib_3_0_0_8_release_notes.html | 105 + .../dsplib_3_0_1_0_release_notes.html | 106 + .../dsplib_3_1_0_0_release_notes.html | 124 + .../dsplib_3_1_1_0_release_notes.html | 120 + .../dsplib_3_1_1_1_release_notes.html | 120 + .../dsplib_3_2_0_0_release_notes.html | 122 + .../dsplib_3_2_0_1_release_notes.html | 120 + ti/dsplib/docs/relnotes_archive/tilogo.gif | Bin 0 -> 1137 bytes ti/dsplib/docs/relnotes_archive/titagline.gif | Bin 0 -> 653 bytes .../DSPF_dp_qrd_example.c | 247 + .../examples/QRD_dp_least_squares_ex/lnk.cmd | 84 + .../SVD_dp_rank_ex/DSPF_dp_svd_example.c | 224 + ti/dsplib/examples/SVD_dp_rank_ex/lnk.cmd | 83 + ti/dsplib/examples/example.xs | 75 + ti/dsplib/examples/fft_ex/Readme.txt | 19 + ti/dsplib/examples/fft_ex/c64P/lnk.cmd | 68 + ti/dsplib/examples/fft_ex/c66/lnk.cmd | 73 + ti/dsplib/examples/fft_ex/fft_example.c | 213 + .../examples/fft_ex/gen_twiddle_fft16x16.c | 153 + .../examples/fft_ex/gen_twiddle_fft16x16.h | 44 + .../examples/fft_ex/gen_twiddle_fft16x32.c | 145 + .../examples/fft_ex/gen_twiddle_fft16x32.h | 43 + .../examples/fft_ex/gen_twiddle_fft32x32.c | 148 + .../examples/fft_ex/gen_twiddle_fft32x32.h | 43 + ti/dsplib/examples/fft_ex/refOutput.jpg | Bin 0 -> 240853 bytes ti/dsplib/examples/fft_sp_ex/Readme.txt | 19 + ti/dsplib/examples/fft_sp_ex/c66/lnk.cmd | 73 + ti/dsplib/examples/fft_sp_ex/c674/lnk.cmd | 78 + ti/dsplib/examples/fft_sp_ex/fft_example_sp.c | 203 + ti/dsplib/examples/fft_sp_ex/refOutput.jpg | Bin 0 -> 44034 bytes ti/dsplib/examples/package.bld.xdt | 78 + ti/dsplib/examples/package.xdc | 4 + ti/dsplib/package.bld | 870 ++++ ti/dsplib/package.ccs.json.xdt | 14 + ti/dsplib/package.tirex.json.xdt | 41 + ti/dsplib/package.xdc | 5 + ti/dsplib/scripts/build_release.bat | 465 ++ ti/dsplib/scripts/genTestReport.js | 25 + ti/dsplib/scripts/gerrit-cherry-pick.sh | 250 + ti/dsplib/scripts/install_tools.bat | 447 ++ ti/dsplib/scripts/pull_patches.sh | 15 + ti/dsplib/scripts/reporevs.sh | 23 + ti/dsplib/scripts/test_report.html.xdt | 450 ++ ti/dsplib/setxdcpath.js | 77 + .../src/DSPF_blk_eswap16/DSPF_blk_eswap16.h | 57 + .../DSPF_blk_eswap16/c674/DSPF_blk_eswap16.c | 128 + .../DSPF_blk_eswap16/c674/DSPF_blk_eswap16.h | 104 + .../c674/DSPF_blk_eswap16_cn.c | 113 + .../c674/DSPF_blk_eswap16_cn.h | 63 + .../c674/DSPF_blk_eswap16_d.c | 261 ++ .../src/DSPF_blk_eswap32/DSPF_blk_eswap32.h | 57 + .../DSPF_blk_eswap32/c674/DSPF_blk_eswap32.c | 127 + .../DSPF_blk_eswap32/c674/DSPF_blk_eswap32.h | 104 + .../c674/DSPF_blk_eswap32_cn.c | 117 + .../c674/DSPF_blk_eswap32_cn.h | 63 + .../c674/DSPF_blk_eswap32_d.c | 279 ++ .../src/DSPF_blk_eswap64/DSPF_blk_eswap64.h | 57 + .../DSPF_blk_eswap64/c674/DSPF_blk_eswap64.c | 133 + .../DSPF_blk_eswap64/c674/DSPF_blk_eswap64.h | 105 + .../c674/DSPF_blk_eswap64_cn.c | 129 + .../c674/DSPF_blk_eswap64_cn.h | 64 + .../c674/DSPF_blk_eswap64_d.c | 294 ++ .../src/DSPF_dp_cholesky/DSPF_dp_cholesky.h | 56 + .../DSPF_dp_cholesky/c66/DSPF_dp_cholesky.c | 234 + .../DSPF_dp_cholesky/c66/DSPF_dp_cholesky.h | 170 + .../c66/DSPF_dp_cholesky_cn.c | 174 + .../c66/DSPF_dp_cholesky_cn.h | 54 + .../DSPF_dp_cholesky/c66/DSPF_dp_cholesky_d.c | 396 ++ ti/dsplib/src/DSPF_dp_cholesky/c66/lnk.cmd | 83 + .../DSPF_dp_cholesky_cmplx.h | 57 + .../c66/DSPF_dp_cholesky_cmplx.c | 351 ++ .../c66/DSPF_dp_cholesky_cmplx.h | 175 + .../c66/DSPF_dp_cholesky_cmplx_cn.c | 299 ++ .../c66/DSPF_dp_cholesky_cmplx_cn.h | 53 + .../c66/DSPF_dp_cholesky_cmplx_d.c | 606 +++ .../src/DSPF_dp_cholesky_cmplx/c66/lnk.cmd | 83 + .../src/DSPF_dp_fftDPxDP/DSPF_dp_fftDPxDP.h | 56 + .../DSPF_dp_fftDPxDP/c66/DSPF_dp_fftDPxDP.c | 230 + .../DSPF_dp_fftDPxDP/c66/DSPF_dp_fftDPxDP.h | 91 + .../c66/DSPF_dp_fftDPxDP_cn.c | 230 + .../c66/DSPF_dp_fftDPxDP_cn.h | 53 + .../DSPF_dp_fftDPxDP/c66/DSPF_dp_fftDPxDP_d.c | 229 + .../src/DSPF_dp_ifftDPxDP/DSPF_dp_ifftDPxDP.h | 55 + .../DSPF_dp_ifftDPxDP/c66/DSPF_dp_ifftDPxDP.c | 238 + .../DSPF_dp_ifftDPxDP/c66/DSPF_dp_ifftDPxDP.h | 95 + .../c66/DSPF_dp_ifftDPxDP_cn.c | 232 + .../c66/DSPF_dp_ifftDPxDP_cn.h | 53 + .../c66/DSPF_dp_ifftDPxDP_d.c | 229 + ti/dsplib/src/DSPF_dp_lud/DSPF_dp_lud.h | 56 + ti/dsplib/src/DSPF_dp_lud/c66/DSPF_dp_lud.c | 148 + ti/dsplib/src/DSPF_dp_lud/c66/DSPF_dp_lud.h | 102 + .../src/DSPF_dp_lud/c66/DSPF_dp_lud_cn.c | 132 + .../src/DSPF_dp_lud/c66/DSPF_dp_lud_cn.h | 51 + ti/dsplib/src/DSPF_dp_lud/c66/DSPF_dp_lud_d.c | 285 ++ ti/dsplib/src/DSPF_dp_lud/c66/lnk.cmd | 83 + .../src/DSPF_dp_lud_cmplx/DSPF_dp_lud_cmplx.h | 56 + .../DSPF_dp_lud_cmplx/c66/DSPF_dp_lud_cmplx.c | 197 + .../DSPF_dp_lud_cmplx/c66/DSPF_dp_lud_cmplx.h | 105 + .../c66/DSPF_dp_lud_cmplx_cn.c | 398 ++ .../c66/DSPF_dp_lud_cmplx_cn.h | 51 + .../c66/DSPF_dp_lud_cmplx_d.c | 373 ++ ti/dsplib/src/DSPF_dp_lud_cmplx/c66/lnk.cmd | 83 + .../src/DSPF_dp_lud_inv/DSPF_dp_lud_inv.h | 56 + .../src/DSPF_dp_lud_inv/c66/DSPF_dp_lud_inv.c | 168 + .../src/DSPF_dp_lud_inv/c66/DSPF_dp_lud_inv.h | 101 + .../DSPF_dp_lud_inv/c66/DSPF_dp_lud_inv_cn.c | 132 + .../DSPF_dp_lud_inv/c66/DSPF_dp_lud_inv_cn.h | 52 + .../DSPF_dp_lud_inv/c66/DSPF_dp_lud_inv_d.c | 323 ++ ti/dsplib/src/DSPF_dp_lud_inv/c66/lnk.cmd | 83 + .../DSPF_dp_lud_inv_cmplx.h | 57 + .../c66/DSPF_dp_lud_inv_cmplx.c | 261 ++ .../c66/DSPF_dp_lud_inv_cmplx.h | 102 + .../c66/DSPF_dp_lud_inv_cmplx_cn.c | 211 + .../c66/DSPF_dp_lud_inv_cmplx_cn.h | 52 + .../c66/DSPF_dp_lud_inv_cmplx_d.c | 446 ++ .../src/DSPF_dp_lud_inv_cmplx/c66/lnk.cmd | 83 + .../src/DSPF_dp_lud_sol/DSPF_dp_lud_sol.h | 56 + .../src/DSPF_dp_lud_sol/c66/DSPF_dp_lud_sol.c | 117 + .../src/DSPF_dp_lud_sol/c66/DSPF_dp_lud_sol.h | 108 + .../c66/DSPF_dp_lud_sol_66_LE_ELF/.project | 53 + .../DSPF_dp_lud_sol/c66/DSPF_dp_lud_sol_cn.c | 90 + .../DSPF_dp_lud_sol/c66/DSPF_dp_lud_sol_cn.h | 52 + .../DSPF_dp_lud_sol/c66/DSPF_dp_lud_sol_d.c | 321 ++ ti/dsplib/src/DSPF_dp_lud_sol/c66/lnk.cmd | 83 + .../DSPF_dp_lud_sol_cmplx.h | 57 + .../c66/DSPF_dp_lud_sol_cmplx.c | 174 + .../c66/DSPF_dp_lud_sol_cmplx.h | 111 + .../c66/DSPF_dp_lud_sol_cmplx_cn.c | 160 + .../c66/DSPF_dp_lud_sol_cmplx_cn.h | 52 + .../c66/DSPF_dp_lud_sol_cmplx_d.c | 428 ++ .../src/DSPF_dp_lud_sol_cmplx/c66/lnk.cmd | 83 + .../DSPF_dp_mat_mul_gemm.h | 55 + .../c66/DSPF_dp_mat_mul_gemm.c | 110 + .../c66/DSPF_dp_mat_mul_gemm.h | 97 + .../c66/DSPF_dp_mat_mul_gemm_cn.c | 67 + .../c66/DSPF_dp_mat_mul_gemm_cn.h | 54 + .../c66/DSPF_dp_mat_mul_gemm_d.c | 291 ++ .../DSPF_dp_mat_submat_copy.h | 55 + .../c66/DSPF_dp_mat_submat_copy.c | 77 + .../c66/DSPF_dp_mat_submat_copy.h | 93 + .../c66/DSPF_dp_mat_submat_copy_cn.c | 64 + .../c66/DSPF_dp_mat_submat_copy_cn.h | 53 + .../c66/DSPF_dp_mat_submat_copy_d.c | 264 ++ .../src/DSPF_dp_mat_trans/DSPF_dp_mat_trans.h | 55 + .../DSPF_dp_mat_trans/c66/DSPF_dp_mat_trans.c | 65 + .../DSPF_dp_mat_trans/c66/DSPF_dp_mat_trans.h | 90 + .../c66/DSPF_dp_mat_trans_cn.c | 60 + .../c66/DSPF_dp_mat_trans_cn.h | 54 + .../c66/DSPF_dp_mat_trans_d.c | 264 ++ ti/dsplib/src/DSPF_dp_qrd/DSPF_dp_qrd.h | 56 + ti/dsplib/src/DSPF_dp_qrd/c66/DSPF_dp_qrd.c | 267 ++ ti/dsplib/src/DSPF_dp_qrd/c66/DSPF_dp_qrd.h | 184 + .../src/DSPF_dp_qrd/c66/DSPF_dp_qrd_cn.c | 199 + .../src/DSPF_dp_qrd/c66/DSPF_dp_qrd_cn.h | 53 + ti/dsplib/src/DSPF_dp_qrd/c66/DSPF_dp_qrd_d.c | 463 ++ ti/dsplib/src/DSPF_dp_qrd/c66/lnk.cmd | 83 + .../src/DSPF_dp_qrd_cmplx/DSPF_dp_qrd_cmplx.h | 57 + .../DSPF_dp_qrd_cmplx/c66/DSPF_dp_qrd_cmplx.c | 396 ++ .../DSPF_dp_qrd_cmplx/c66/DSPF_dp_qrd_cmplx.h | 187 + .../c66/DSPF_dp_qrd_cmplx_cn.c | 367 ++ .../c66/DSPF_dp_qrd_cmplx_cn.h | 53 + .../c66/DSPF_dp_qrd_cmplx_d.c | 654 +++ ti/dsplib/src/DSPF_dp_qrd_cmplx/c66/lnk.cmd | 83 + ti/dsplib/src/DSPF_dp_svd/DSPF_dp_svd.h | 56 + ti/dsplib/src/DSPF_dp_svd/c66/DSPF_dp_svd.c | 724 +++ ti/dsplib/src/DSPF_dp_svd/c66/DSPF_dp_svd.h | 136 + .../src/DSPF_dp_svd/c66/DSPF_dp_svd_cn.c | 498 ++ .../src/DSPF_dp_svd/c66/DSPF_dp_svd_cn.h | 54 + ti/dsplib/src/DSPF_dp_svd/c66/DSPF_dp_svd_d.c | 508 +++ ti/dsplib/src/DSPF_dp_svd/c66/lnk.cmd | 83 + .../src/DSPF_dp_svd_cmplx/DSPF_dp_svd_cmplx.h | 56 + .../DSPF_dp_svd_cmplx/c66/DSPF_dp_svd_cmplx.c | 1155 +++++ .../DSPF_dp_svd_cmplx/c66/DSPF_dp_svd_cmplx.h | 135 + .../c66/DSPF_dp_svd_cmplx_cn.c | 974 ++++ .../c66/DSPF_dp_svd_cmplx_cn.h | 51 + .../c66/DSPF_dp_svd_cmplx_d.c | 627 +++ ti/dsplib/src/DSPF_dp_svd_cmplx/c66/lnk.cmd | 83 + ti/dsplib/src/DSPF_fltoq15/DSPF_fltoq15.h | 57 + .../src/DSPF_fltoq15/c674/DSPF_fltoq15.c | 146 + .../src/DSPF_fltoq15/c674/DSPF_fltoq15.h | 98 + .../src/DSPF_fltoq15/c674/DSPF_fltoq15_cn.c | 101 + .../src/DSPF_fltoq15/c674/DSPF_fltoq15_cn.h | 57 + .../src/DSPF_fltoq15/c674/DSPF_fltoq15_d.c | 291 ++ ti/dsplib/src/DSPF_q15tofl/DSPF_q15tofl.h | 57 + .../src/DSPF_q15tofl/c674/DSPF_q15tofl.c | 133 + .../src/DSPF_q15tofl/c674/DSPF_q15tofl.h | 97 + .../src/DSPF_q15tofl/c674/DSPF_q15tofl_cn.c | 90 + .../src/DSPF_q15tofl/c674/DSPF_q15tofl_cn.h | 57 + .../src/DSPF_q15tofl/c674/DSPF_q15tofl_d.c | 243 + .../src/DSPF_sp_autocor/DSPF_sp_autocor.h | 58 + .../src/DSPF_sp_autocor/c66/DSPF_sp_autocor.c | 192 + .../src/DSPF_sp_autocor/c66/DSPF_sp_autocor.h | 97 + .../DSPF_sp_autocor/c66/DSPF_sp_autocor_cn.c | 63 + .../DSPF_sp_autocor/c66/DSPF_sp_autocor_cn.h | 53 + .../DSPF_sp_autocor/c66/DSPF_sp_autocor_d.c | 271 ++ .../DSPF_sp_autocor/c674/DSPF_sp_autocor.c | 108 + .../DSPF_sp_autocor/c674/DSPF_sp_autocor.h | 97 + .../DSPF_sp_autocor/c674/DSPF_sp_autocor_cn.c | 63 + .../DSPF_sp_autocor/c674/DSPF_sp_autocor_cn.h | 53 + .../DSPF_sp_autocor/c674/DSPF_sp_autocor_d.c | 271 ++ ti/dsplib/src/DSPF_sp_biquad/DSPF_sp_biquad.h | 58 + .../src/DSPF_sp_biquad/c66/DSPF_sp_biquad.c | 93 + .../src/DSPF_sp_biquad/c66/DSPF_sp_biquad.h | 91 + .../DSPF_sp_biquad/c66/DSPF_sp_biquad_cn.c | 63 + .../DSPF_sp_biquad/c66/DSPF_sp_biquad_cn.h | 54 + .../src/DSPF_sp_biquad/c66/DSPF_sp_biquad_d.c | 271 ++ .../src/DSPF_sp_biquad/c674/DSPF_sp_biquad.c | 93 + .../src/DSPF_sp_biquad/c674/DSPF_sp_biquad.h | 91 + .../DSPF_sp_biquad/c674/DSPF_sp_biquad_cn.c | 63 + .../DSPF_sp_biquad/c674/DSPF_sp_biquad_cn.h | 54 + .../DSPF_sp_biquad/c674/DSPF_sp_biquad_d.c | 271 ++ .../DSPF_sp_bitrev_cplx/DSPF_sp_bitrev_cplx.h | 58 + .../c66/DSPF_sp_bitrev_cplx.c | 103 + .../c66/DSPF_sp_bitrev_cplx.h | 96 + .../c66/DSPF_sp_bitrev_cplx_cn.c | 111 + .../c66/DSPF_sp_bitrev_cplx_cn.h | 52 + .../c66/DSPF_sp_bitrev_cplx_d.c | 250 + .../c674/DSPF_sp_bitrev_cplx.c | 103 + .../c674/DSPF_sp_bitrev_cplx.h | 96 + .../c674/DSPF_sp_bitrev_cplx_cn.c | 111 + .../c674/DSPF_sp_bitrev_cplx_cn.h | 52 + .../c674/DSPF_sp_bitrev_cplx_d.c | 250 + .../src/DSPF_sp_blk_move/DSPF_sp_blk_move.h | 57 + .../DSPF_sp_blk_move/c674/DSPF_sp_blk_move.c | 106 + .../DSPF_sp_blk_move/c674/DSPF_sp_blk_move.h | 93 + .../c674/DSPF_sp_blk_move_cn.c | 82 + .../c674/DSPF_sp_blk_move_cn.h | 53 + .../c674/DSPF_sp_blk_move_d.c | 273 ++ .../DSPF_sp_cfftr2_dit/DSPF_sp_cfftr2_dit.h | 56 + .../c674/DSPF_sp_cfftr2_dit.h | 96 + .../c674/DSPF_sp_cfftr2_dit.s | 444 ++ .../c674/DSPF_sp_cfftr2_dit_cn.c | 85 + .../c674/DSPF_sp_cfftr2_dit_cn.h | 52 + .../c674/DSPF_sp_cfftr2_dit_d.c | 205 + .../DSPF_sp_cfftr4_dif/DSPF_sp_cfftr4_dif.h | 56 + .../c674/DSPF_sp_cfftr4_dif.h | 89 + .../c674/DSPF_sp_cfftr4_dif.s | 345 ++ .../c674/DSPF_sp_cfftr4_dif_cn.c | 114 + .../c674/DSPF_sp_cfftr4_dif_cn.h | 52 + .../c674/DSPF_sp_cfftr4_dif_d.c | 253 ++ .../src/DSPF_sp_cholesky/DSPF_sp_cholesky.h | 56 + .../DSPF_sp_cholesky/c66/DSPF_sp_cholesky.c | 294 ++ .../DSPF_sp_cholesky/c66/DSPF_sp_cholesky.h | 167 + .../c66/DSPF_sp_cholesky_cn.c | 178 + .../c66/DSPF_sp_cholesky_cn.h | 54 + .../DSPF_sp_cholesky/c66/DSPF_sp_cholesky_d.c | 417 ++ ti/dsplib/src/DSPF_sp_cholesky/c66/lnk.cmd | 83 + .../DSPF_sp_cholesky_cmplx.h | 57 + .../c66/DSPF_sp_cholesky_cmplx.c | 437 ++ .../c66/DSPF_sp_cholesky_cmplx.h | 174 + .../c66/DSPF_sp_cholesky_cmplx_cn.c | 299 ++ .../c66/DSPF_sp_cholesky_cmplx_cn.h | 53 + .../c66/DSPF_sp_cholesky_cmplx_d.c | 615 +++ .../src/DSPF_sp_cholesky_cmplx/c66/lnk.cmd | 83 + ti/dsplib/src/DSPF_sp_convol/DSPF_sp_convol.h | 58 + .../src/DSPF_sp_convol/c66/DSPF_sp_convol.c | 155 + .../src/DSPF_sp_convol/c66/DSPF_sp_convol.h | 95 + .../DSPF_sp_convol/c66/DSPF_sp_convol_cn.c | 67 + .../DSPF_sp_convol/c66/DSPF_sp_convol_cn.h | 54 + .../src/DSPF_sp_convol/c66/DSPF_sp_convol_d.c | 284 ++ .../src/DSPF_sp_convol/c674/DSPF_sp_convol.c | 106 + .../src/DSPF_sp_convol/c674/DSPF_sp_convol.h | 95 + .../DSPF_sp_convol/c674/DSPF_sp_convol_cn.c | 67 + .../DSPF_sp_convol/c674/DSPF_sp_convol_cn.h | 54 + .../DSPF_sp_convol/c674/DSPF_sp_convol_d.c | 284 ++ .../src/DSPF_sp_dotp_cplx/DSPF_sp_dotp_cplx.h | 58 + .../DSPF_sp_dotp_cplx/c66/DSPF_sp_dotp_cplx.c | 138 + .../DSPF_sp_dotp_cplx/c66/DSPF_sp_dotp_cplx.h | 94 + .../c66/DSPF_sp_dotp_cplx_cn.c | 66 + .../c66/DSPF_sp_dotp_cplx_cn.h | 54 + .../c66/DSPF_sp_dotp_cplx_d.c | 240 + .../c674/DSPF_sp_dotp_cplx.c | 79 + .../c674/DSPF_sp_dotp_cplx.h | 94 + .../c674/DSPF_sp_dotp_cplx_cn.c | 66 + .../c674/DSPF_sp_dotp_cplx_cn.h | 54 + .../c674/DSPF_sp_dotp_cplx_d.c | 240 + .../src/DSPF_sp_dotprod/DSPF_sp_dotprod.h | 58 + .../src/DSPF_sp_dotprod/c66/DSPF_sp_dotprod.c | 66 + .../src/DSPF_sp_dotprod/c66/DSPF_sp_dotprod.h | 88 + .../DSPF_sp_dotprod/c66/DSPF_sp_dotprod_cn.c | 61 + .../DSPF_sp_dotprod/c66/DSPF_sp_dotprod_cn.h | 53 + .../DSPF_sp_dotprod/c66/DSPF_sp_dotprod_d.c | 237 + .../DSPF_sp_dotprod/c674/DSPF_sp_dotprod.bak | 82 + .../DSPF_sp_dotprod/c674/DSPF_sp_dotprod.c | 66 + .../DSPF_sp_dotprod/c674/DSPF_sp_dotprod.h | 88 + .../DSPF_sp_dotprod/c674/DSPF_sp_dotprod_cn.c | 61 + .../DSPF_sp_dotprod/c674/DSPF_sp_dotprod_cn.h | 53 + .../DSPF_sp_dotprod/c674/DSPF_sp_dotprod_d.c | 237 + .../DSPF_sp_dotprod/vc98/DSPF_sp_dotprod.exe | Bin 0 -> 84480 bytes ti/dsplib/src/DSPF_sp_erand/DSPF_sp_erand.h | 56 + .../src/DSPF_sp_erand/c66/DSPF_sp_erand.c | 425 ++ .../src/DSPF_sp_erand/c66/DSPF_sp_erand.h | 111 + .../src/DSPF_sp_erand/c66/DSPF_sp_erand_cn.c | 384 ++ .../src/DSPF_sp_erand/c66/DSPF_sp_erand_cn.h | 84 + .../src/DSPF_sp_erand/c66/DSPF_sp_erand_d.c | 227 + ti/dsplib/src/DSPF_sp_erand/c66/lnk.cmd | 84 + .../src/DSPF_sp_fftSPxSP/DSPF_sp_fftSPxSP.h | 58 + .../DSPF_sp_fftSPxSP/c66/DSPF_sp_fftSPxSP.h | 88 + .../DSPF_sp_fftSPxSP/c66/DSPF_sp_fftSPxSP.sa | 437 ++ .../c66/DSPF_sp_fftSPxSP_cn.c | 246 + .../c66/DSPF_sp_fftSPxSP_cn.h | 53 + .../DSPF_sp_fftSPxSP/c66/DSPF_sp_fftSPxSP_d.c | 280 ++ .../c66/DSPF_sp_fftSPxSP_opt.c | 719 +++ .../c66/DSPF_sp_fftSPxSP_opt.h | 59 + .../DSPF_sp_fftSPxSP/c674/DSPF_sp_fftSPxSP.h | 88 + .../DSPF_sp_fftSPxSP/c674/DSPF_sp_fftSPxSP.s | 604 +++ .../c674/DSPF_sp_fftSPxSP_cn.c | 244 + .../c674/DSPF_sp_fftSPxSP_cn.h | 53 + .../c674/DSPF_sp_fftSPxSP_d.c | 257 ++ .../DSPF_sp_fftSPxSP_r2c.h | 56 + .../c66/DSPF_sp_fftSPxSP_r2c.c | 193 + .../c66/DSPF_sp_fftSPxSP_r2c.h | 90 + .../c66/DSPF_sp_fftSPxSP_r2c_cn.c | 246 + .../c66/DSPF_sp_fftSPxSP_r2c_cn.h | 53 + .../c66/DSPF_sp_fftSPxSP_r2c_d.c | 300 ++ .../src/DSPF_sp_fir_cplx/DSPF_sp_fir_cplx.h | 58 + .../DSPF_sp_fir_cplx/c66/DSPF_sp_fir_cplx.c | 167 + .../DSPF_sp_fir_cplx/c66/DSPF_sp_fir_cplx.h | 99 + .../c66/DSPF_sp_fir_cplx_cn.c | 72 + .../c66/DSPF_sp_fir_cplx_cn.h | 54 + .../DSPF_sp_fir_cplx/c66/DSPF_sp_fir_cplx_d.c | 302 ++ .../DSPF_sp_fir_cplx/c674/DSPF_sp_fir_cplx.h | 96 + .../DSPF_sp_fir_cplx/c674/DSPF_sp_fir_cplx.s | 303 ++ .../c674/DSPF_sp_fir_cplx_cn.c | 72 + .../c674/DSPF_sp_fir_cplx_cn.h | 54 + .../c674/DSPF_sp_fir_cplx_d.c | 330 ++ .../c674/DSPF_sp_fir_cplx_opt.c | 102 + .../src/DSPF_sp_fir_gen/DSPF_sp_fir_gen.h | 58 + .../src/DSPF_sp_fir_gen/c66/DSPF_sp_fir_gen.c | 174 + .../src/DSPF_sp_fir_gen/c66/DSPF_sp_fir_gen.h | 102 + .../DSPF_sp_fir_gen/c66/DSPF_sp_fir_gen_cn.c | 71 + .../DSPF_sp_fir_gen/c66/DSPF_sp_fir_gen_cn.h | 57 + .../DSPF_sp_fir_gen/c66/DSPF_sp_fir_gen_d.c | 280 ++ .../DSPF_sp_fir_gen/c674/DSPF_sp_fir_gen.c | 144 + .../DSPF_sp_fir_gen/c674/DSPF_sp_fir_gen.h | 102 + .../DSPF_sp_fir_gen/c674/DSPF_sp_fir_gen_cn.c | 71 + .../DSPF_sp_fir_gen/c674/DSPF_sp_fir_gen_cn.h | 57 + .../DSPF_sp_fir_gen/c674/DSPF_sp_fir_gen_d.c | 280 ++ ti/dsplib/src/DSPF_sp_fir_r2/DSPF_sp_fir_r2.h | 58 + .../src/DSPF_sp_fir_r2/c66/DSPF_sp_fir_r2.c | 124 + .../src/DSPF_sp_fir_r2/c66/DSPF_sp_fir_r2.h | 97 + .../DSPF_sp_fir_r2/c66/DSPF_sp_fir_r2_cn.c | 68 + .../DSPF_sp_fir_r2/c66/DSPF_sp_fir_r2_cn.h | 54 + .../src/DSPF_sp_fir_r2/c66/DSPF_sp_fir_r2_d.c | 281 ++ .../src/DSPF_sp_fir_r2/c674/DSPF_sp_fir_r2.h | 94 + .../src/DSPF_sp_fir_r2/c674/DSPF_sp_fir_r2.s | 361 ++ .../DSPF_sp_fir_r2/c674/DSPF_sp_fir_r2_cn.c | 68 + .../DSPF_sp_fir_r2/c674/DSPF_sp_fir_r2_cn.h | 54 + .../DSPF_sp_fir_r2/c674/DSPF_sp_fir_r2_d.c | 315 ++ .../DSPF_sp_fir_r2/c674/DSPF_sp_fir_r2_opt.c | 83 + .../src/DSPF_sp_fircirc/DSPF_sp_fircirc.h | 58 + .../src/DSPF_sp_fircirc/c66/DSPF_sp_fircirc.c | 156 + .../src/DSPF_sp_fircirc/c66/DSPF_sp_fircirc.h | 99 + .../DSPF_sp_fircirc/c66/DSPF_sp_fircirc_cn.c | 72 + .../DSPF_sp_fircirc/c66/DSPF_sp_fircirc_cn.h | 60 + .../DSPF_sp_fircirc/c66/DSPF_sp_fircirc_d.c | 284 ++ .../DSPF_sp_fircirc/c674/DSPF_sp_fircirc.c | 103 + .../DSPF_sp_fircirc/c674/DSPF_sp_fircirc.h | 99 + .../DSPF_sp_fircirc/c674/DSPF_sp_fircirc_cn.c | 72 + .../DSPF_sp_fircirc/c674/DSPF_sp_fircirc_cn.h | 60 + .../DSPF_sp_fircirc/c674/DSPF_sp_fircirc_d.c | 284 ++ .../DSPF_sp_icfftr2_dif/DSPF_sp_icfftr2_dif.h | 56 + .../c674/DSPF_sp_icfftr2_dif.h | 90 + .../c674/DSPF_sp_icfftr2_dif.s | 497 ++ .../c674/DSPF_sp_icfftr2_dif_cn.c | 86 + .../c674/DSPF_sp_icfftr2_dif_cn.h | 52 + .../c674/DSPF_sp_icfftr2_dif_d.c | 251 + .../src/DSPF_sp_ifftSPxSP/DSPF_sp_ifftSPxSP.h | 58 + .../DSPF_sp_ifftSPxSP/c66/DSPF_sp_ifftSPxSP.h | 90 + .../c66/DSPF_sp_ifftSPxSP.sa | 463 ++ .../c66/DSPF_sp_ifftSPxSP_cn.c | 244 + .../c66/DSPF_sp_ifftSPxSP_cn.h | 53 + .../c66/DSPF_sp_ifftSPxSP_d.c | 280 ++ .../c66/DSPF_sp_ifftSPxSP_opt.c | 727 +++ .../c66/DSPF_sp_ifftSPxSP_opt.h | 59 + .../c674/DSPF_sp_ifftSPxSP.h | 90 + .../c674/DSPF_sp_ifftSPxSP.s | 611 +++ .../c674/DSPF_sp_ifftSPxSP_cn.c | 242 + .../c674/DSPF_sp_ifftSPxSP_cn.h | 53 + .../c674/DSPF_sp_ifftSPxSP_d.c | 253 ++ .../DSPF_sp_ifftSPxSP_c2r.h | 56 + .../c66/DSPF_sp_ifftSPxSP_c2r.c | 179 + .../c66/DSPF_sp_ifftSPxSP_c2r.h | 92 + .../c66/DSPF_sp_ifftSPxSP_c2r_cn.c | 244 + .../c66/DSPF_sp_ifftSPxSP_c2r_cn.h | 53 + .../c66/DSPF_sp_ifftSPxSP_c2r_d.c | 310 ++ ti/dsplib/src/DSPF_sp_iir/DSPF_sp_iir.h | 58 + ti/dsplib/src/DSPF_sp_iir/c66/DSPF_sp_iir.c | 104 + ti/dsplib/src/DSPF_sp_iir/c66/DSPF_sp_iir.h | 100 + .../src/DSPF_sp_iir/c66/DSPF_sp_iir_cn.c | 71 + .../src/DSPF_sp_iir/c66/DSPF_sp_iir_cn.h | 58 + ti/dsplib/src/DSPF_sp_iir/c66/DSPF_sp_iir_d.c | 257 ++ ti/dsplib/src/DSPF_sp_iir/c674/DSPF_sp_iir.h | 101 + ti/dsplib/src/DSPF_sp_iir/c674/DSPF_sp_iir.s | 455 ++ .../src/DSPF_sp_iir/c674/DSPF_sp_iir_cn.c | 71 + .../src/DSPF_sp_iir/c674/DSPF_sp_iir_cn.h | 58 + .../src/DSPF_sp_iir/c674/DSPF_sp_iir_d.c | 294 ++ .../src/DSPF_sp_iir/c674/DSPF_sp_iir_opt.c | 102 + ti/dsplib/src/DSPF_sp_iirlat/DSPF_sp_iirlat.h | 58 + .../src/DSPF_sp_iirlat/c66/DSPF_sp_iirlat.c | 170 + .../src/DSPF_sp_iirlat/c66/DSPF_sp_iirlat.h | 101 + .../DSPF_sp_iirlat/c66/DSPF_sp_iirlat_cn.c | 71 + .../DSPF_sp_iirlat/c66/DSPF_sp_iirlat_cn.h | 60 + .../src/DSPF_sp_iirlat/c66/DSPF_sp_iirlat_d.c | 277 ++ .../src/DSPF_sp_iirlat/c674/DSPF_sp_iirlat.h | 98 + .../src/DSPF_sp_iirlat/c674/DSPF_sp_iirlat.s | 399 ++ .../DSPF_sp_iirlat/c674/DSPF_sp_iirlat_cn.c | 71 + .../DSPF_sp_iirlat/c674/DSPF_sp_iirlat_cn.h | 54 + .../DSPF_sp_iirlat/c674/DSPF_sp_iirlat_d.c | 310 ++ .../DSPF_sp_iirlat/c674/DSPF_sp_iirlat_opt.c | 127 + ti/dsplib/src/DSPF_sp_lms/DSPF_sp_lms.h | 58 + ti/dsplib/src/DSPF_sp_lms/c66/DSPF_sp_lms.c | 150 + ti/dsplib/src/DSPF_sp_lms/c66/DSPF_sp_lms.h | 100 + .../src/DSPF_sp_lms/c66/DSPF_sp_lms_cn.c | 73 + .../src/DSPF_sp_lms/c66/DSPF_sp_lms_cn.h | 54 + ti/dsplib/src/DSPF_sp_lms/c66/DSPF_sp_lms_d.c | 339 ++ ti/dsplib/src/DSPF_sp_lms/c674/DSPF_sp_lms.c | 101 + ti/dsplib/src/DSPF_sp_lms/c674/DSPF_sp_lms.h | 100 + .../src/DSPF_sp_lms/c674/DSPF_sp_lms_cn.c | 73 + .../src/DSPF_sp_lms/c674/DSPF_sp_lms_cn.h | 54 + .../src/DSPF_sp_lms/c674/DSPF_sp_lms_d.c | 339 ++ ti/dsplib/src/DSPF_sp_lud/DSPF_sp_lud.h | 56 + ti/dsplib/src/DSPF_sp_lud/c66/DSPF_sp_lud.c | 212 + ti/dsplib/src/DSPF_sp_lud/c66/DSPF_sp_lud.h | 102 + .../src/DSPF_sp_lud/c66/DSPF_sp_lud_cn.c | 131 + .../src/DSPF_sp_lud/c66/DSPF_sp_lud_cn.h | 51 + ti/dsplib/src/DSPF_sp_lud/c66/DSPF_sp_lud_d.c | 293 ++ ti/dsplib/src/DSPF_sp_lud/c66/lnk.cmd | 83 + .../src/DSPF_sp_lud_cmplx/DSPF_sp_lud_cmplx.h | 56 + .../DSPF_sp_lud_cmplx/c66/DSPF_sp_lud_cmplx.c | 224 + .../DSPF_sp_lud_cmplx/c66/DSPF_sp_lud_cmplx.h | 103 + .../c66/DSPF_sp_lud_cmplx_cn.c | 176 + .../c66/DSPF_sp_lud_cmplx_cn.h | 51 + .../c66/DSPF_sp_lud_cmplx_d.c | 368 ++ ti/dsplib/src/DSPF_sp_lud_cmplx/c66/lnk.cmd | 83 + .../src/DSPF_sp_lud_inv/DSPF_sp_lud_inv.h | 56 + .../src/DSPF_sp_lud_inv/c66/DSPF_sp_lud_inv.c | 174 + .../src/DSPF_sp_lud_inv/c66/DSPF_sp_lud_inv.h | 99 + .../DSPF_sp_lud_inv/c66/DSPF_sp_lud_inv_cn.c | 131 + .../DSPF_sp_lud_inv/c66/DSPF_sp_lud_inv_cn.h | 51 + .../DSPF_sp_lud_inv/c66/DSPF_sp_lud_inv_d.c | 365 ++ ti/dsplib/src/DSPF_sp_lud_inv/c66/lnk.cmd | 83 + .../DSPF_sp_lud_inv_cmplx.h | 57 + .../c66/DSPF_sp_lud_inv_cmplx.c | 295 ++ .../c66/DSPF_sp_lud_inv_cmplx.h | 102 + .../c66/DSPF_sp_lud_inv_cmplx_cn.c | 213 + .../c66/DSPF_sp_lud_inv_cmplx_cn.h | 53 + .../c66/DSPF_sp_lud_inv_cmplx_d.c | 440 ++ .../src/DSPF_sp_lud_inv_cmplx/c66/lnk.cmd | 83 + .../src/DSPF_sp_lud_sol/DSPF_sp_lud_sol.h | 56 + .../src/DSPF_sp_lud_sol/c66/DSPF_sp_lud_sol.c | 115 + .../src/DSPF_sp_lud_sol/c66/DSPF_sp_lud_sol.h | 110 + .../DSPF_sp_lud_sol/c66/DSPF_sp_lud_sol_cn.c | 90 + .../DSPF_sp_lud_sol/c66/DSPF_sp_lud_sol_cn.h | 52 + .../DSPF_sp_lud_sol/c66/DSPF_sp_lud_sol_d.c | 332 ++ ti/dsplib/src/DSPF_sp_lud_sol/c66/lnk.cmd | 83 + .../DSPF_sp_lud_sol_cmplx.h | 57 + .../c66/DSPF_sp_lud_sol_cmplx.c | 206 + .../c66/DSPF_sp_lud_sol_cmplx.h | 112 + .../c66/DSPF_sp_lud_sol_cmplx_cn.c | 158 + .../c66/DSPF_sp_lud_sol_cmplx_cn.h | 51 + .../c66/DSPF_sp_lud_sol_cmplx_d.c | 421 ++ .../src/DSPF_sp_lud_sol_cmplx/c66/lnk.cmd | 83 + .../src/DSPF_sp_mat_mul/DSPF_sp_mat_mul.h | 58 + .../src/DSPF_sp_mat_mul/c66/DSPF_sp_mat_mul.c | 179 + .../src/DSPF_sp_mat_mul/c66/DSPF_sp_mat_mul.h | 98 + .../DSPF_sp_mat_mul/c66/DSPF_sp_mat_mul_cn.c | 71 + .../DSPF_sp_mat_mul/c66/DSPF_sp_mat_mul_cn.h | 54 + .../DSPF_sp_mat_mul/c66/DSPF_sp_mat_mul_d.c | 291 ++ .../DSPF_sp_mat_mul/c674/DSPF_sp_mat_mul.h | 104 + .../DSPF_sp_mat_mul/c674/DSPF_sp_mat_mul.s | 383 ++ .../DSPF_sp_mat_mul/c674/DSPF_sp_mat_mul_cn.c | 71 + .../DSPF_sp_mat_mul/c674/DSPF_sp_mat_mul_cn.h | 54 + .../DSPF_sp_mat_mul/c674/DSPF_sp_mat_mul_d.c | 322 ++ .../c674/DSPF_sp_mat_mul_opt.c | 121 + .../DSPF_sp_mat_mul_cplx.h | 58 + .../c66/DSPF_sp_mat_mul_cplx.c | 191 + .../c66/DSPF_sp_mat_mul_cplx.h | 97 + .../c66/DSPF_sp_mat_mul_cplx_cn.c | 75 + .../c66/DSPF_sp_mat_mul_cplx_cn.h | 60 + .../c66/DSPF_sp_mat_mul_cplx_d.c | 296 ++ .../c674/DSPF_sp_mat_mul_cplx.h | 94 + .../c674/DSPF_sp_mat_mul_cplx.s | 318 ++ .../c674/DSPF_sp_mat_mul_cplx_cn.c | 75 + .../c674/DSPF_sp_mat_mul_cplx_cn.h | 54 + .../c674/DSPF_sp_mat_mul_cplx_d.c | 348 ++ .../c674/DSPF_sp_mat_mul_cplx_opt.c | 114 + .../DSPF_sp_mat_mul_gemm.h | 57 + .../c66/DSPF_sp_mat_mul_gemm.c | 184 + .../c66/DSPF_sp_mat_mul_gemm.h | 97 + .../c66/DSPF_sp_mat_mul_gemm_cn.c | 67 + .../c66/DSPF_sp_mat_mul_gemm_cn.h | 54 + .../c66/DSPF_sp_mat_mul_gemm_d.c | 294 ++ .../c674/DSPF_sp_mat_mul_gemm.c | 188 + .../c674/DSPF_sp_mat_mul_gemm.h | 97 + .../c674/DSPF_sp_mat_mul_gemm_cn.c | 67 + .../c674/DSPF_sp_mat_mul_gemm_cn.h | 54 + .../c674/DSPF_sp_mat_mul_gemm_d.c | 294 ++ .../DSPF_sp_mat_mul_gemm_cplx.h | 57 + .../c66/DSPF_sp_mat_mul_gemm_cplx.c | 208 + .../c66/DSPF_sp_mat_mul_gemm_cplx.h | 98 + .../c66/DSPF_sp_mat_mul_gemm_cplx_cn.c | 73 + .../c66/DSPF_sp_mat_mul_gemm_cplx_cn.h | 54 + .../c66/DSPF_sp_mat_mul_gemm_cplx_d.c | 291 ++ .../c674/DSPF_sp_mat_mul_gemm_cplx.c | 148 + .../c674/DSPF_sp_mat_mul_gemm_cplx.h | 98 + .../c674/DSPF_sp_mat_mul_gemm_cplx_cn.c | 73 + .../c674/DSPF_sp_mat_mul_gemm_cplx_cn.h | 54 + .../c674/DSPF_sp_mat_mul_gemm_cplx_d.c | 291 ++ .../DSPF_sp_mat_submat_copy.h | 55 + .../c66/DSPF_sp_mat_submat_copy.c | 87 + .../c66/DSPF_sp_mat_submat_copy.h | 95 + .../c66/DSPF_sp_mat_submat_copy_cn.c | 65 + .../c66/DSPF_sp_mat_submat_copy_cn.h | 53 + .../c66/DSPF_sp_mat_submat_copy_d.c | 264 ++ .../DSPF_sp_mat_submat_copy_cplx.h | 55 + .../c66/DSPF_sp_mat_submat_copy_cplx.c | 77 + .../c66/DSPF_sp_mat_submat_copy_cplx.h | 95 + .../c66/DSPF_sp_mat_submat_copy_cplx_cn.c | 69 + .../c66/DSPF_sp_mat_submat_copy_cplx_cn.h | 53 + .../c66/DSPF_sp_mat_submat_copy_cplx_d.c | 264 ++ .../src/DSPF_sp_mat_trans/DSPF_sp_mat_trans.h | 58 + .../DSPF_sp_mat_trans/c66/DSPF_sp_mat_trans.c | 108 + .../DSPF_sp_mat_trans/c66/DSPF_sp_mat_trans.h | 91 + .../c66/DSPF_sp_mat_trans_cn.c | 60 + .../c66/DSPF_sp_mat_trans_cn.h | 54 + .../c66/DSPF_sp_mat_trans_d.c | 264 ++ .../c674/DSPF_sp_mat_trans.c | 80 + .../c674/DSPF_sp_mat_trans.h | 91 + .../c674/DSPF_sp_mat_trans_cn.c | 60 + .../c674/DSPF_sp_mat_trans_cn.h | 54 + .../c674/DSPF_sp_mat_trans_d.c | 264 ++ .../DSPF_sp_mat_trans_cplx.h | 55 + .../c66/DSPF_sp_mat_trans_cplx.c | 65 + .../c66/DSPF_sp_mat_trans_cplx.h | 90 + .../c66/DSPF_sp_mat_trans_cplx_cn.c | 63 + .../c66/DSPF_sp_mat_trans_cplx_cn.h | 54 + .../c66/DSPF_sp_mat_trans_cplx_d.c | 264 ++ ti/dsplib/src/DSPF_sp_maxidx/DSPF_sp_maxidx.h | 58 + .../src/DSPF_sp_maxidx/c66/DSPF_sp_maxidx.c | 171 + .../src/DSPF_sp_maxidx/c66/DSPF_sp_maxidx.h | 87 + .../DSPF_sp_maxidx/c66/DSPF_sp_maxidx_cn.c | 66 + .../DSPF_sp_maxidx/c66/DSPF_sp_maxidx_cn.h | 53 + .../src/DSPF_sp_maxidx/c66/DSPF_sp_maxidx_d.c | 226 + .../src/DSPF_sp_maxidx/c674/DSPF_sp_maxidx.c | 112 + .../src/DSPF_sp_maxidx/c674/DSPF_sp_maxidx.h | 87 + .../DSPF_sp_maxidx/c674/DSPF_sp_maxidx_cn.c | 66 + .../DSPF_sp_maxidx/c674/DSPF_sp_maxidx_cn.h | 53 + .../DSPF_sp_maxidx/c674/DSPF_sp_maxidx_d.c | 226 + ti/dsplib/src/DSPF_sp_maxval/DSPF_sp_maxval.h | 58 + .../src/DSPF_sp_maxval/c66/DSPF_sp_maxval.c | 97 + .../src/DSPF_sp_maxval/c66/DSPF_sp_maxval.h | 88 + .../DSPF_sp_maxval/c66/DSPF_sp_maxval_cn.c | 65 + .../DSPF_sp_maxval/c66/DSPF_sp_maxval_cn.h | 53 + .../src/DSPF_sp_maxval/c66/DSPF_sp_maxval_d.c | 232 + .../src/DSPF_sp_maxval/c674/DSPF_sp_maxval.c | 97 + .../src/DSPF_sp_maxval/c674/DSPF_sp_maxval.h | 88 + .../DSPF_sp_maxval/c674/DSPF_sp_maxval_cn.c | 66 + .../DSPF_sp_maxval/c674/DSPF_sp_maxval_cn.h | 53 + .../DSPF_sp_maxval/c674/DSPF_sp_maxval_d.c | 232 + ti/dsplib/src/DSPF_sp_minerr/DSPF_sp_minerr.h | 58 + .../src/DSPF_sp_minerr/c66/DSPF_sp_minerr.c | 97 + .../src/DSPF_sp_minerr/c66/DSPF_sp_minerr.h | 94 + .../DSPF_sp_minerr/c66/DSPF_sp_minerr_cn.c | 74 + .../DSPF_sp_minerr/c66/DSPF_sp_minerr_cn.h | 54 + .../src/DSPF_sp_minerr/c66/DSPF_sp_minerr_d.c | 443 ++ .../src/DSPF_sp_minerr/c674/DSPF_sp_minerr.c | 97 + .../src/DSPF_sp_minerr/c674/DSPF_sp_minerr.h | 94 + .../DSPF_sp_minerr/c674/DSPF_sp_minerr_cn.c | 74 + .../DSPF_sp_minerr/c674/DSPF_sp_minerr_cn.h | 54 + .../DSPF_sp_minerr/c674/DSPF_sp_minerr_d.c | 443 ++ ti/dsplib/src/DSPF_sp_minval/DSPF_sp_minval.h | 58 + .../src/DSPF_sp_minval/c66/DSPF_sp_minval.c | 96 + .../src/DSPF_sp_minval/c66/DSPF_sp_minval.h | 88 + .../DSPF_sp_minval/c66/DSPF_sp_minval_cn.c | 63 + .../DSPF_sp_minval/c66/DSPF_sp_minval_cn.h | 53 + .../src/DSPF_sp_minval/c66/DSPF_sp_minval_d.c | 231 + .../src/DSPF_sp_minval/c674/DSPF_sp_minval.c | 96 + .../src/DSPF_sp_minval/c674/DSPF_sp_minval.h | 88 + .../DSPF_sp_minval/c674/DSPF_sp_minval_cn.c | 63 + .../DSPF_sp_minval/c674/DSPF_sp_minval_cn.h | 53 + .../DSPF_sp_minval/c674/DSPF_sp_minval_d.c | 231 + ti/dsplib/src/DSPF_sp_nrand/DSPF_sp_nrand.h | 56 + .../src/DSPF_sp_nrand/c66/DSPF_sp_nrand.c | 424 ++ .../src/DSPF_sp_nrand/c66/DSPF_sp_nrand.h | 111 + .../src/DSPF_sp_nrand/c66/DSPF_sp_nrand_cn.c | 383 ++ .../src/DSPF_sp_nrand/c66/DSPF_sp_nrand_cn.h | 89 + .../src/DSPF_sp_nrand/c66/DSPF_sp_nrand_d.c | 227 + ti/dsplib/src/DSPF_sp_nrand/c66/lnk.cmd | 84 + ti/dsplib/src/DSPF_sp_qrd/DSPF_sp_qrd.h | 56 + ti/dsplib/src/DSPF_sp_qrd/c66/DSPF_sp_qrd.c | 266 ++ ti/dsplib/src/DSPF_sp_qrd/c66/DSPF_sp_qrd.h | 182 + .../src/DSPF_sp_qrd/c66/DSPF_sp_qrd_cn.c | 196 + .../src/DSPF_sp_qrd/c66/DSPF_sp_qrd_cn.h | 53 + ti/dsplib/src/DSPF_sp_qrd/c66/DSPF_sp_qrd_d.c | 478 ++ ti/dsplib/src/DSPF_sp_qrd/c66/lnk.cmd | 83 + .../src/DSPF_sp_qrd_cmplx/DSPF_sp_qrd_cmplx.h | 56 + .../DSPF_sp_qrd_cmplx/c66/DSPF_sp_qrd_cmplx.c | 456 ++ .../DSPF_sp_qrd_cmplx/c66/DSPF_sp_qrd_cmplx.h | 188 + .../c66/DSPF_sp_qrd_cmplx_cn.c | 367 ++ .../c66/DSPF_sp_qrd_cmplx_cn.h | 53 + .../c66/DSPF_sp_qrd_cmplx_d.c | 655 +++ ti/dsplib/src/DSPF_sp_qrd_cmplx/c66/lnk.cmd | 83 + ti/dsplib/src/DSPF_sp_svd/DSPF_sp_svd.h | 56 + ti/dsplib/src/DSPF_sp_svd/c66/DSPF_sp_svd.c | 719 +++ ti/dsplib/src/DSPF_sp_svd/c66/DSPF_sp_svd.h | 136 + .../src/DSPF_sp_svd/c66/DSPF_sp_svd_cn.c | 496 ++ .../src/DSPF_sp_svd/c66/DSPF_sp_svd_cn.h | 54 + ti/dsplib/src/DSPF_sp_svd/c66/DSPF_sp_svd_d.c | 513 +++ ti/dsplib/src/DSPF_sp_svd/c66/lnk.cmd | 83 + .../src/DSPF_sp_svd_cmplx/DSPF_sp_svd_cmplx.h | 56 + .../DSPF_sp_svd_cmplx/c66/DSPF_sp_svd_cmplx.c | 1031 +++++ .../DSPF_sp_svd_cmplx/c66/DSPF_sp_svd_cmplx.h | 135 + .../c66/DSPF_sp_svd_cmplx_cn.c | 975 ++++ .../c66/DSPF_sp_svd_cmplx_cn.h | 51 + .../c66/DSPF_sp_svd_cmplx_d.c | 634 +++ ti/dsplib/src/DSPF_sp_svd_cmplx/c66/lnk.cmd | 83 + ti/dsplib/src/DSPF_sp_urand/DSPF_sp_urand.h | 56 + .../src/DSPF_sp_urand/c66/DSPF_sp_urand.c | 84 + .../src/DSPF_sp_urand/c66/DSPF_sp_urand.h | 105 + .../src/DSPF_sp_urand/c66/DSPF_sp_urand_cn.c | 119 + .../src/DSPF_sp_urand/c66/DSPF_sp_urand_cn.h | 88 + .../src/DSPF_sp_urand/c66/DSPF_sp_urand_d.c | 263 ++ ti/dsplib/src/DSPF_sp_urand/c66/lnk.cmd | 84 + ti/dsplib/src/DSPF_sp_vecadd/DSPF_sp_vecadd.h | 56 + .../src/DSPF_sp_vecadd/c66/DSPF_sp_vecadd.c | 102 + .../src/DSPF_sp_vecadd/c66/DSPF_sp_vecadd.h | 93 + .../DSPF_sp_vecadd/c66/DSPF_sp_vecadd_cn.c | 63 + .../DSPF_sp_vecadd/c66/DSPF_sp_vecadd_cn.h | 57 + .../src/DSPF_sp_vecadd/c66/DSPF_sp_vecadd_d.c | 169 + ti/dsplib/src/DSPF_sp_vecmul/DSPF_sp_vecmul.h | 58 + .../src/DSPF_sp_vecmul/c66/DSPF_sp_vecmul.c | 66 + .../src/DSPF_sp_vecmul/c66/DSPF_sp_vecmul.h | 91 + .../DSPF_sp_vecmul/c66/DSPF_sp_vecmul_cn.c | 59 + .../DSPF_sp_vecmul/c66/DSPF_sp_vecmul_cn.h | 54 + .../src/DSPF_sp_vecmul/c66/DSPF_sp_vecmul_d.c | 293 ++ .../src/DSPF_sp_vecmul/c674/DSPF_sp_vecmul.c | 66 + .../src/DSPF_sp_vecmul/c674/DSPF_sp_vecmul.h | 91 + .../DSPF_sp_vecmul/c674/DSPF_sp_vecmul_cn.c | 59 + .../DSPF_sp_vecmul/c674/DSPF_sp_vecmul_cn.h | 54 + .../DSPF_sp_vecmul/c674/DSPF_sp_vecmul_d.c | 293 ++ .../src/DSPF_sp_vecrecip/DSPF_sp_vecrecip.h | 58 + .../DSPF_sp_vecrecip/c66/DSPF_sp_vecrecip.c | 85 + .../DSPF_sp_vecrecip/c66/DSPF_sp_vecrecip.h | 95 + .../c66/DSPF_sp_vecrecip_cn.c | 58 + .../c66/DSPF_sp_vecrecip_cn.h | 53 + .../DSPF_sp_vecrecip/c66/DSPF_sp_vecrecip_d.c | 228 + .../DSPF_sp_vecrecip/c674/DSPF_sp_vecrecip.c | 77 + .../DSPF_sp_vecrecip/c674/DSPF_sp_vecrecip.h | 95 + .../c674/DSPF_sp_vecrecip_cn.c | 58 + .../c674/DSPF_sp_vecrecip_cn.h | 53 + .../c674/DSPF_sp_vecrecip_d.c | 228 + .../src/DSPF_sp_vecsum_sq/DSPF_sp_vecsum_sq.h | 58 + .../DSPF_sp_vecsum_sq/c66/DSPF_sp_vecsum_sq.c | 106 + .../DSPF_sp_vecsum_sq/c66/DSPF_sp_vecsum_sq.h | 86 + .../c66/DSPF_sp_vecsum_sq_cn.c | 61 + .../c66/DSPF_sp_vecsum_sq_cn.h | 53 + .../c66/DSPF_sp_vecsum_sq_d.c | 233 + .../c674/DSPF_sp_vecsum_sq.c | 67 + .../c674/DSPF_sp_vecsum_sq.h | 87 + .../c674/DSPF_sp_vecsum_sq_cn.c | 61 + .../c674/DSPF_sp_vecsum_sq_cn.h | 53 + .../c674/DSPF_sp_vecsum_sq_d.c | 233 + ti/dsplib/src/DSPF_sp_w_vec/DSPF_sp_w_vec.h | 58 + .../src/DSPF_sp_w_vec/c66/DSPF_sp_w_vec.c | 79 + .../src/DSPF_sp_w_vec/c66/DSPF_sp_w_vec.h | 92 + .../src/DSPF_sp_w_vec/c66/DSPF_sp_w_vec_cn.c | 59 + .../src/DSPF_sp_w_vec/c66/DSPF_sp_w_vec_cn.h | 54 + .../src/DSPF_sp_w_vec/c66/DSPF_sp_w_vec_d.c | 244 + .../src/DSPF_sp_w_vec/c674/DSPF_sp_w_vec.c | 80 + .../src/DSPF_sp_w_vec/c674/DSPF_sp_w_vec.h | 92 + .../src/DSPF_sp_w_vec/c674/DSPF_sp_w_vec_cn.c | 59 + .../src/DSPF_sp_w_vec/c674/DSPF_sp_w_vec_cn.h | 54 + .../src/DSPF_sp_w_vec/c674/DSPF_sp_w_vec_d.c | 244 + ti/dsplib/src/DSP_add16/DSP_add16.h | 58 + ti/dsplib/src/DSP_add16/c64P/DSP_add16.c | 102 + ti/dsplib/src/DSP_add16/c64P/DSP_add16.h | 97 + ti/dsplib/src/DSP_add16/c64P/DSP_add16_cn.c | 63 + ti/dsplib/src/DSP_add16/c64P/DSP_add16_cn.h | 58 + ti/dsplib/src/DSP_add16/c64P/DSP_add16_d.c | 206 + ti/dsplib/src/DSP_add16/c66/DSP_add16.c | 102 + ti/dsplib/src/DSP_add16/c66/DSP_add16.h | 97 + ti/dsplib/src/DSP_add16/c66/DSP_add16_cn.c | 63 + ti/dsplib/src/DSP_add16/c66/DSP_add16_cn.h | 58 + ti/dsplib/src/DSP_add16/c66/DSP_add16_d.c | 206 + ti/dsplib/src/DSP_add32/DSP_add32.h | 58 + ti/dsplib/src/DSP_add32/c64P/DSP_add32.c | 102 + ti/dsplib/src/DSP_add32/c64P/DSP_add32.h | 97 + ti/dsplib/src/DSP_add32/c64P/DSP_add32_cn.c | 63 + ti/dsplib/src/DSP_add32/c64P/DSP_add32_cn.h | 57 + ti/dsplib/src/DSP_add32/c64P/DSP_add32_d.c | 169 + ti/dsplib/src/DSP_add32/c66/DSP_add32.c | 102 + ti/dsplib/src/DSP_add32/c66/DSP_add32.h | 97 + ti/dsplib/src/DSP_add32/c66/DSP_add32_cn.c | 63 + ti/dsplib/src/DSP_add32/c66/DSP_add32_cn.h | 57 + ti/dsplib/src/DSP_add32/c66/DSP_add32_d.c | 169 + ti/dsplib/src/DSP_autocor/DSP_autocor.h | 58 + ti/dsplib/src/DSP_autocor/c64P/DSP_autocor.c | 475 ++ ti/dsplib/src/DSP_autocor/c64P/DSP_autocor.h | 119 + .../src/DSP_autocor/c64P/DSP_autocor_cn.c | 136 + .../src/DSP_autocor/c64P/DSP_autocor_cn.h | 62 + .../src/DSP_autocor/c64P/DSP_autocor_d.c | 302 ++ ti/dsplib/src/DSP_autocor/c66/DSP_autocor.c | 477 ++ ti/dsplib/src/DSP_autocor/c66/DSP_autocor.h | 119 + .../src/DSP_autocor/c66/DSP_autocor_cn.c | 136 + .../src/DSP_autocor/c66/DSP_autocor_cn.h | 62 + ti/dsplib/src/DSP_autocor/c66/DSP_autocor_d.c | 302 ++ ti/dsplib/src/DSP_bexp/DSP_bexp.h | 58 + ti/dsplib/src/DSP_bexp/c64P/DSP_bexp.c | 116 + ti/dsplib/src/DSP_bexp/c64P/DSP_bexp.h | 100 + ti/dsplib/src/DSP_bexp/c64P/DSP_bexp_cn.c | 108 + ti/dsplib/src/DSP_bexp/c64P/DSP_bexp_cn.h | 63 + ti/dsplib/src/DSP_bexp/c64P/DSP_bexp_d.c | 259 ++ ti/dsplib/src/DSP_bexp/c66/DSP_bexp.c | 116 + ti/dsplib/src/DSP_bexp/c66/DSP_bexp.h | 100 + ti/dsplib/src/DSP_bexp/c66/DSP_bexp_cn.c | 108 + ti/dsplib/src/DSP_bexp/c66/DSP_bexp_cn.h | 63 + ti/dsplib/src/DSP_bexp/c66/DSP_bexp_d.c | 259 ++ .../src/DSP_blk_eswap16/DSP_blk_eswap16.h | 58 + .../DSP_blk_eswap16/c64P/DSP_blk_eswap16.c | 130 + .../DSP_blk_eswap16/c64P/DSP_blk_eswap16.h | 104 + .../DSP_blk_eswap16/c64P/DSP_blk_eswap16_cn.c | 115 + .../DSP_blk_eswap16/c64P/DSP_blk_eswap16_cn.h | 63 + .../DSP_blk_eswap16/c64P/DSP_blk_eswap16_d.c | 261 ++ .../src/DSP_blk_eswap16/c66/DSP_blk_eswap16.c | 130 + .../src/DSP_blk_eswap16/c66/DSP_blk_eswap16.h | 104 + .../DSP_blk_eswap16/c66/DSP_blk_eswap16_cn.c | 115 + .../DSP_blk_eswap16/c66/DSP_blk_eswap16_cn.h | 63 + .../DSP_blk_eswap16/c66/DSP_blk_eswap16_d.c | 261 ++ .../src/DSP_blk_eswap32/DSP_blk_eswap32.h | 58 + .../DSP_blk_eswap32/c64P/DSP_blk_eswap32.c | 129 + .../DSP_blk_eswap32/c64P/DSP_blk_eswap32.h | 104 + .../DSP_blk_eswap32/c64P/DSP_blk_eswap32_cn.c | 119 + .../DSP_blk_eswap32/c64P/DSP_blk_eswap32_cn.h | 63 + .../DSP_blk_eswap32/c64P/DSP_blk_eswap32_d.c | 279 ++ .../src/DSP_blk_eswap32/c66/DSP_blk_eswap32.c | 129 + .../src/DSP_blk_eswap32/c66/DSP_blk_eswap32.h | 104 + .../DSP_blk_eswap32/c66/DSP_blk_eswap32_cn.c | 119 + .../DSP_blk_eswap32/c66/DSP_blk_eswap32_cn.h | 63 + .../DSP_blk_eswap32/c66/DSP_blk_eswap32_d.c | 279 ++ .../src/DSP_blk_eswap64/DSP_blk_eswap64.h | 58 + .../DSP_blk_eswap64/c64P/DSP_blk_eswap64.c | 135 + .../DSP_blk_eswap64/c64P/DSP_blk_eswap64.h | 105 + .../DSP_blk_eswap64/c64P/DSP_blk_eswap64_cn.c | 131 + .../DSP_blk_eswap64/c64P/DSP_blk_eswap64_cn.h | 64 + .../DSP_blk_eswap64/c64P/DSP_blk_eswap64_d.c | 294 ++ .../src/DSP_blk_eswap64/c66/DSP_blk_eswap64.c | 135 + .../src/DSP_blk_eswap64/c66/DSP_blk_eswap64.h | 105 + .../DSP_blk_eswap64/c66/DSP_blk_eswap64_cn.c | 131 + .../DSP_blk_eswap64/c66/DSP_blk_eswap64_cn.h | 64 + .../DSP_blk_eswap64/c66/DSP_blk_eswap64_d.c | 294 ++ ti/dsplib/src/DSP_blk_move/DSP_blk_move.h | 58 + .../src/DSP_blk_move/c64P/DSP_blk_move.c | 110 + .../src/DSP_blk_move/c64P/DSP_blk_move.h | 97 + .../src/DSP_blk_move/c64P/DSP_blk_move_cn.c | 95 + .../src/DSP_blk_move/c64P/DSP_blk_move_cn.h | 63 + .../src/DSP_blk_move/c64P/DSP_blk_move_d.c | 270 ++ ti/dsplib/src/DSP_blk_move/c66/DSP_blk_move.c | 110 + ti/dsplib/src/DSP_blk_move/c66/DSP_blk_move.h | 97 + .../src/DSP_blk_move/c66/DSP_blk_move_cn.c | 95 + .../src/DSP_blk_move/c66/DSP_blk_move_cn.h | 63 + .../src/DSP_blk_move/c66/DSP_blk_move_d.c | 271 ++ ti/dsplib/src/DSP_dotp_sqr/DSP_dotp_sqr.h | 58 + .../src/DSP_dotp_sqr/c64P/DSP_dotp_sqr.c | 115 + .../src/DSP_dotp_sqr/c64P/DSP_dotp_sqr.h | 100 + .../src/DSP_dotp_sqr/c64P/DSP_dotp_sqr_cn.c | 69 + .../src/DSP_dotp_sqr/c64P/DSP_dotp_sqr_cn.h | 59 + .../src/DSP_dotp_sqr/c64P/DSP_dotp_sqr_d.c | 279 ++ ti/dsplib/src/DSP_dotp_sqr/c66/DSP_dotp_sqr.c | 115 + ti/dsplib/src/DSP_dotp_sqr/c66/DSP_dotp_sqr.h | 100 + .../src/DSP_dotp_sqr/c66/DSP_dotp_sqr_cn.c | 69 + .../src/DSP_dotp_sqr/c66/DSP_dotp_sqr_cn.h | 65 + .../src/DSP_dotp_sqr/c66/DSP_dotp_sqr_d.c | 279 ++ ti/dsplib/src/DSP_dotprod/DSP_dotprod.h | 58 + ti/dsplib/src/DSP_dotprod/c64P/DSP_dotprod.c | 112 + ti/dsplib/src/DSP_dotprod/c64P/DSP_dotprod.h | 96 + .../src/DSP_dotprod/c64P/DSP_dotprod_cn.c | 65 + .../src/DSP_dotprod/c64P/DSP_dotprod_cn.h | 57 + .../src/DSP_dotprod/c64P/DSP_dotprod_d.c | 255 ++ ti/dsplib/src/DSP_dotprod/c66/DSP_dotprod.c | 111 + ti/dsplib/src/DSP_dotprod/c66/DSP_dotprod.h | 96 + .../src/DSP_dotprod/c66/DSP_dotprod_cn.c | 65 + .../src/DSP_dotprod/c66/DSP_dotprod_cn.h | 57 + ti/dsplib/src/DSP_dotprod/c66/DSP_dotprod_d.c | 255 ++ ti/dsplib/src/DSP_fft16x16/DSP_fft16x16.h | 58 + .../src/DSP_fft16x16/c64P/DSP_fft16x16.h | 108 + .../src/DSP_fft16x16/c64P/DSP_fft16x16_cn.c | 753 +++ .../src/DSP_fft16x16/c64P/DSP_fft16x16_cn.h | 64 + .../src/DSP_fft16x16/c64P/DSP_fft16x16_d.c | 336 ++ .../src/DSP_fft16x16/c64P/DSP_fft16x16_i.c | 1571 +++++++ .../src/DSP_fft16x16/c64P/DSP_fft16x16_i.h | 58 + .../src/DSP_fft16x16/c64P/DSP_fft16x16_sa.sa | 991 ++++ .../DSP_fft16x16/c64P/gen_twiddle_fft16x16.c | 163 + .../DSP_fft16x16/c64P/gen_twiddle_fft16x16.h | 41 + ti/dsplib/src/DSP_fft16x16/c66/DSP_fft16x16.c | 1478 ++++++ ti/dsplib/src/DSP_fft16x16/c66/DSP_fft16x16.h | 105 + .../src/DSP_fft16x16/c66/DSP_fft16x16_cn.c | 589 +++ .../src/DSP_fft16x16/c66/DSP_fft16x16_cn.h | 64 + .../src/DSP_fft16x16/c66/DSP_fft16x16_d.c | 306 ++ .../DSP_fft16x16/c66/gen_twiddle_fft16x16.c | 153 + .../DSP_fft16x16/c66/gen_twiddle_fft16x16.h | 44 + .../src/DSP_fft16x16_imre/DSP_fft16x16_imre.h | 58 + .../c64P/DSP_fft16x16_imre.h | 110 + .../c64P/DSP_fft16x16_imre_cn.c | 751 +++ .../c64P/DSP_fft16x16_imre_cn.h | 64 + .../c64P/DSP_fft16x16_imre_d.c | 413 ++ .../c64P/DSP_fft16x16_imre_i.c | 1468 ++++++ .../c64P/DSP_fft16x16_imre_i.h | 59 + .../c64P/DSP_fft16x16_imre_sa.sa | 996 ++++ .../c64P/gen_twiddle_fft16x16_imre.c | 191 + .../c64P/gen_twiddle_fft16x16_imre.h | 51 + .../DSP_fft16x16_imre/c66/DSP_fft16x16_imre.c | 1499 ++++++ .../DSP_fft16x16_imre/c66/DSP_fft16x16_imre.h | 104 + .../c66/DSP_fft16x16_imre_cn.c | 593 +++ .../c66/DSP_fft16x16_imre_cn.h | 64 + .../c66/DSP_fft16x16_imre_d.c | 306 ++ .../c66/gen_twiddle_fft16x16_imre.c | 157 + .../c66/gen_twiddle_fft16x16_imre.h | 43 + ti/dsplib/src/DSP_fft16x16r/DSP_fft16x16r.h | 58 + .../src/DSP_fft16x16r/c64P/DSP_fft16x16r.bak | 120 + .../src/DSP_fft16x16r/c64P/DSP_fft16x16r.h | 121 + .../src/DSP_fft16x16r/c64P/DSP_fft16x16r_cn.c | 1025 +++++ .../src/DSP_fft16x16r/c64P/DSP_fft16x16r_cn.h | 67 + .../src/DSP_fft16x16r/c64P/DSP_fft16x16r_d.c | 437 ++ .../src/DSP_fft16x16r/c64P/DSP_fft16x16r_i.c | 1922 ++++++++ .../src/DSP_fft16x16r/c64P/DSP_fft16x16r_i.h | 62 + .../DSP_fft16x16r/c64P/DSP_fft16x16r_sa.sa | 1231 +++++ .../DSP_fft16x16r/c64P/gen_twiddle_fft16x16.c | 164 + .../DSP_fft16x16r/c64P/gen_twiddle_fft16x16.h | 42 + .../src/DSP_fft16x16r/c66/DSP_fft16x16r.c | 1447 ++++++ .../src/DSP_fft16x16r/c66/DSP_fft16x16r.h | 114 + .../src/DSP_fft16x16r/c66/DSP_fft16x16r_cn.c | 668 +++ .../src/DSP_fft16x16r/c66/DSP_fft16x16r_cn.h | 67 + .../src/DSP_fft16x16r/c66/DSP_fft16x16r_d.c | 320 ++ .../DSP_fft16x16r/c66/gen_twiddle_fft16x16r.c | 151 + .../DSP_fft16x16r/c66/gen_twiddle_fft16x16r.h | 43 + ti/dsplib/src/DSP_fft16x32/DSP_fft16x32.h | 58 + .../src/DSP_fft16x32/c64P/DSP_fft16x32.h | 107 + .../src/DSP_fft16x32/c64P/DSP_fft16x32_cn.c | 763 ++++ .../src/DSP_fft16x32/c64P/DSP_fft16x32_cn.h | 64 + .../src/DSP_fft16x32/c64P/DSP_fft16x32_d.c | 404 ++ .../src/DSP_fft16x32/c64P/DSP_fft16x32_i.c | 1391 ++++++ .../src/DSP_fft16x32/c64P/DSP_fft16x32_i.h | 59 + .../src/DSP_fft16x32/c64P/DSP_fft16x32_sa.sa | 828 ++++ .../DSP_fft16x32/c64P/gen_twiddle_fft16x32.c | 127 + .../DSP_fft16x32/c64P/gen_twiddle_fft16x32.h | 43 + ti/dsplib/src/DSP_fft16x32/c66/DSP_fft16x32.c | 1180 +++++ ti/dsplib/src/DSP_fft16x32/c66/DSP_fft16x32.h | 106 + .../src/DSP_fft16x32/c66/DSP_fft16x32_cn.c | 608 +++ .../src/DSP_fft16x32/c66/DSP_fft16x32_cn.h | 64 + .../src/DSP_fft16x32/c66/DSP_fft16x32_d.c | 372 ++ .../DSP_fft16x32/c66/gen_twiddle_fft16x32.c | 145 + .../DSP_fft16x32/c66/gen_twiddle_fft16x32.h | 43 + ti/dsplib/src/DSP_fft32x32/DSP_fft32x32.h | 58 + .../src/DSP_fft32x32/c64P/DSP_fft32x32.h | 108 + .../src/DSP_fft32x32/c64P/DSP_fft32x32_cn.c | 727 +++ .../src/DSP_fft32x32/c64P/DSP_fft32x32_cn.h | 64 + .../src/DSP_fft32x32/c64P/DSP_fft32x32_d.c | 410 ++ .../src/DSP_fft32x32/c64P/DSP_fft32x32_i.c | 1629 +++++++ .../src/DSP_fft32x32/c64P/DSP_fft32x32_i.h | 58 + .../src/DSP_fft32x32/c64P/DSP_fft32x32_sa.sa | 937 ++++ .../DSP_fft32x32/c64P/gen_twiddle_fft32x32.c | 125 + .../DSP_fft32x32/c64P/gen_twiddle_fft32x32.h | 43 + ti/dsplib/src/DSP_fft32x32/c66/DSP_fft32x32.c | 1367 ++++++ ti/dsplib/src/DSP_fft32x32/c66/DSP_fft32x32.h | 106 + .../src/DSP_fft32x32/c66/DSP_fft32x32_cn.c | 739 +++ .../src/DSP_fft32x32/c66/DSP_fft32x32_cn.h | 64 + .../src/DSP_fft32x32/c66/DSP_fft32x32_d.c | 376 ++ .../DSP_fft32x32/c66/gen_twiddle_fft32x32.c | 148 + .../DSP_fft32x32/c66/gen_twiddle_fft32x32.h | 43 + ti/dsplib/src/DSP_fft32x32s/DSP_fft32x32s.h | 58 + .../src/DSP_fft32x32s/c64P/DSP_fft32x32s.h | 111 + .../src/DSP_fft32x32s/c64P/DSP_fft32x32s_cn.c | 725 +++ .../src/DSP_fft32x32s/c64P/DSP_fft32x32s_cn.h | 65 + .../src/DSP_fft32x32s/c64P/DSP_fft32x32s_d.c | 545 +++ .../src/DSP_fft32x32s/c64P/DSP_fft32x32s_i.c | 1518 +++++++ .../src/DSP_fft32x32s/c64P/DSP_fft32x32s_i.h | 59 + .../DSP_fft32x32s/c64P/DSP_fft32x32s_sa.sa | 885 ++++ .../DSP_fft32x32s/c64P/gen_twiddle_fft32x32.c | 126 + .../DSP_fft32x32s/c64P/gen_twiddle_fft32x32.h | 43 + .../src/DSP_fft32x32s/c66/DSP_fft32x32s.c | 1365 ++++++ .../src/DSP_fft32x32s/c66/DSP_fft32x32s.h | 109 + .../src/DSP_fft32x32s/c66/DSP_fft32x32s_cn.c | 742 +++ .../src/DSP_fft32x32s/c66/DSP_fft32x32s_cn.h | 65 + .../src/DSP_fft32x32s/c66/DSP_fft32x32s_d.c | 377 ++ .../DSP_fft32x32s/c66/gen_twiddle_fft32x32s.c | 148 + .../DSP_fft32x32s/c66/gen_twiddle_fft32x32s.h | 43 + ti/dsplib/src/DSP_fir_cplx/DSP_fir_cplx.h | 58 + .../src/DSP_fir_cplx/c64P/DSP_fir_cplx.c | 267 ++ .../src/DSP_fir_cplx/c64P/DSP_fir_cplx.h | 102 + .../src/DSP_fir_cplx/c64P/DSP_fir_cplx_cn.c | 109 + .../src/DSP_fir_cplx/c64P/DSP_fir_cplx_cn.h | 65 + .../src/DSP_fir_cplx/c64P/DSP_fir_cplx_d.c | 304 ++ ti/dsplib/src/DSP_fir_cplx/c66/DSP_fir_cplx.c | 311 ++ ti/dsplib/src/DSP_fir_cplx/c66/DSP_fir_cplx.h | 103 + .../src/DSP_fir_cplx/c66/DSP_fir_cplx_cn.c | 109 + .../src/DSP_fir_cplx/c66/DSP_fir_cplx_cn.h | 65 + .../src/DSP_fir_cplx/c66/DSP_fir_cplx_d.c | 314 ++ .../DSP_fir_cplx_hM4X4/DSP_fir_cplx_hM4X4.h | 58 + .../c64P/DSP_fir_cplx_hM4X4.c | 267 ++ .../c64P/DSP_fir_cplx_hM4X4.h | 102 + .../c64P/DSP_fir_cplx_hM4X4_cn.c | 109 + .../c64P/DSP_fir_cplx_hM4X4_cn.h | 65 + .../c64P/DSP_fir_cplx_hM4X4_d.c | 307 ++ .../c66/DSP_fir_cplx_hM4X4.c | 317 ++ .../c66/DSP_fir_cplx_hM4X4.h | 103 + .../c66/DSP_fir_cplx_hM4X4_cn.c | 109 + .../c66/DSP_fir_cplx_hM4X4_cn.h | 65 + .../c66/DSP_fir_cplx_hM4X4_d.c | 317 ++ ti/dsplib/src/DSP_fir_gen/DSP_fir_gen.h | 58 + ti/dsplib/src/DSP_fir_gen/c64P/DSP_fir_gen.c | 493 ++ ti/dsplib/src/DSP_fir_gen/c64P/DSP_fir_gen.h | 100 + .../src/DSP_fir_gen/c64P/DSP_fir_gen_cn.c | 90 + .../src/DSP_fir_gen/c64P/DSP_fir_gen_cn.h | 59 + .../src/DSP_fir_gen/c64P/DSP_fir_gen_d.c | 279 ++ ti/dsplib/src/DSP_fir_gen/c66/DSP_fir_gen.c | 308 ++ ti/dsplib/src/DSP_fir_gen/c66/DSP_fir_gen.h | 100 + .../src/DSP_fir_gen/c66/DSP_fir_gen_cn.c | 90 + .../src/DSP_fir_gen/c66/DSP_fir_gen_cn.h | 65 + ti/dsplib/src/DSP_fir_gen/c66/DSP_fir_gen_d.c | 279 ++ .../DSP_fir_gen_hM17_rA8X8.h | 58 + .../c64P/DSP_fir_gen_hM17_rA8X8.c | 526 +++ .../c64P/DSP_fir_gen_hM17_rA8X8.h | 99 + .../c64P/DSP_fir_gen_hM17_rA8X8_cn.c | 91 + .../c64P/DSP_fir_gen_hM17_rA8X8_cn.h | 65 + .../c64P/DSP_fir_gen_hM17_rA8X8_d.c | 283 ++ .../c66/DSP_fir_gen_hM17_rA8X8.c | 351 ++ .../c66/DSP_fir_gen_hM17_rA8X8.h | 100 + .../c66/DSP_fir_gen_hM17_rA8X8_cn.c | 91 + .../c66/DSP_fir_gen_hM17_rA8X8_cn.h | 65 + .../c66/DSP_fir_gen_hM17_rA8X8_d.c | 283 ++ ti/dsplib/src/DSP_fir_r4/DSP_fir_r4.h | 58 + ti/dsplib/src/DSP_fir_r4/c64P/DSP_fir_r4.c | 282 ++ ti/dsplib/src/DSP_fir_r4/c64P/DSP_fir_r4.h | 101 + ti/dsplib/src/DSP_fir_r4/c64P/DSP_fir_r4_cn.c | 97 + ti/dsplib/src/DSP_fir_r4/c64P/DSP_fir_r4_cn.h | 65 + ti/dsplib/src/DSP_fir_r4/c64P/DSP_fir_r4_d.c | 292 ++ ti/dsplib/src/DSP_fir_r4/c66/DSP_fir_r4.c | 247 + ti/dsplib/src/DSP_fir_r4/c66/DSP_fir_r4.h | 101 + ti/dsplib/src/DSP_fir_r4/c66/DSP_fir_r4_cn.c | 97 + ti/dsplib/src/DSP_fir_r4/c66/DSP_fir_r4_cn.h | 65 + ti/dsplib/src/DSP_fir_r4/c66/DSP_fir_r4_d.c | 292 ++ ti/dsplib/src/DSP_fir_r8/DSP_fir_r8.h | 58 + ti/dsplib/src/DSP_fir_r8/c64P/DSP_fir_r8.c | 373 ++ ti/dsplib/src/DSP_fir_r8/c64P/DSP_fir_r8.h | 105 + ti/dsplib/src/DSP_fir_r8/c64P/DSP_fir_r8_cn.c | 97 + ti/dsplib/src/DSP_fir_r8/c64P/DSP_fir_r8_cn.h | 65 + ti/dsplib/src/DSP_fir_r8/c64P/DSP_fir_r8_d.c | 292 ++ ti/dsplib/src/DSP_fir_r8/c66/DSP_fir_r8.c | 250 + ti/dsplib/src/DSP_fir_r8/c66/DSP_fir_r8.h | 106 + ti/dsplib/src/DSP_fir_r8/c66/DSP_fir_r8_cn.c | 97 + ti/dsplib/src/DSP_fir_r8/c66/DSP_fir_r8_cn.h | 65 + ti/dsplib/src/DSP_fir_r8/c66/DSP_fir_r8_d.c | 292 ++ ti/dsplib/src/DSP_fir_r8_h16/DSP_fir_r8_h16.h | 58 + .../src/DSP_fir_r8_h16/c66/DSP_fir_r8_h16.c | 357 ++ .../src/DSP_fir_r8_h16/c66/DSP_fir_r8_h16.h | 99 + .../DSP_fir_r8_h16/c66/DSP_fir_r8_h16_cn.c | 93 + .../DSP_fir_r8_h16/c66/DSP_fir_r8_h16_cn.h | 64 + .../src/DSP_fir_r8_h16/c66/DSP_fir_r8_h16_d.c | 271 ++ .../src/DSP_fir_r8_h16/c674/DSP_fir_r8_h16.c | 230 + .../src/DSP_fir_r8_h16/c674/DSP_fir_r8_h16.h | 98 + .../DSP_fir_r8_h16/c674/DSP_fir_r8_h16_cn.c | 93 + .../DSP_fir_r8_h16/c674/DSP_fir_r8_h16_cn.h | 64 + .../DSP_fir_r8_h16/c674/DSP_fir_r8_h16_d.c | 271 ++ ti/dsplib/src/DSP_fir_r8_h24/DSP_fir_r8_h24.h | 58 + .../src/DSP_fir_r8_h24/c66/DSP_fir_r8_h24.c | 447 ++ .../src/DSP_fir_r8_h24/c66/DSP_fir_r8_h24.h | 99 + .../DSP_fir_r8_h24/c66/DSP_fir_r8_h24_cn.c | 93 + .../DSP_fir_r8_h24/c66/DSP_fir_r8_h24_cn.h | 64 + .../src/DSP_fir_r8_h24/c66/DSP_fir_r8_h24_d.c | 273 ++ .../src/DSP_fir_r8_h24/c674/DSP_fir_r8_h24.c | 282 ++ .../src/DSP_fir_r8_h24/c674/DSP_fir_r8_h24.h | 98 + .../DSP_fir_r8_h24/c674/DSP_fir_r8_h24_cn.c | 93 + .../DSP_fir_r8_h24/c674/DSP_fir_r8_h24_cn.h | 64 + .../DSP_fir_r8_h24/c674/DSP_fir_r8_h24_d.c | 273 ++ ti/dsplib/src/DSP_fir_r8_h8/DSP_fir_r8_h8.h | 58 + .../src/DSP_fir_r8_h8/c66/DSP_fir_r8_h8.c | 255 ++ .../src/DSP_fir_r8_h8/c66/DSP_fir_r8_h8.h | 99 + .../src/DSP_fir_r8_h8/c66/DSP_fir_r8_h8_cn.c | 93 + .../src/DSP_fir_r8_h8/c66/DSP_fir_r8_h8_cn.h | 64 + .../src/DSP_fir_r8_h8/c66/DSP_fir_r8_h8_d.c | 269 ++ .../src/DSP_fir_r8_h8/c674/DSP_fir_r8_h8.c | 182 + .../src/DSP_fir_r8_h8/c674/DSP_fir_r8_h8.h | 98 + .../src/DSP_fir_r8_h8/c674/DSP_fir_r8_h8_cn.c | 93 + .../src/DSP_fir_r8_h8/c674/DSP_fir_r8_h8_cn.h | 64 + .../src/DSP_fir_r8_h8/c674/DSP_fir_r8_h8_d.c | 269 ++ .../DSP_fir_r8_hM16_rM8A8X8.h | 58 + .../c64P/DSP_fir_r8_hM16_rM8A8X8.c | 374 ++ .../c64P/DSP_fir_r8_hM16_rM8A8X8.h | 101 + .../c64P/DSP_fir_r8_hM16_rM8A8X8_cn.c | 98 + .../c64P/DSP_fir_r8_hM16_rM8A8X8_cn.h | 65 + .../c64P/DSP_fir_r8_hM16_rM8A8X8_d.c | 292 ++ .../c66/DSP_fir_r8_hM16_rM8A8X8.c | 344 ++ .../c66/DSP_fir_r8_hM16_rM8A8X8.h | 102 + .../c66/DSP_fir_r8_hM16_rM8A8X8_cn.c | 98 + .../c66/DSP_fir_r8_hM16_rM8A8X8_cn.h | 65 + .../c66/DSP_fir_r8_hM16_rM8A8X8_d.c | 292 ++ ti/dsplib/src/DSP_fir_sym/DSP_fir_sym.h | 58 + ti/dsplib/src/DSP_fir_sym/c64P/DSP_fir_sym.c | 427 ++ ti/dsplib/src/DSP_fir_sym/c64P/DSP_fir_sym.h | 109 + .../src/DSP_fir_sym/c64P/DSP_fir_sym_cn.c | 110 + .../src/DSP_fir_sym/c64P/DSP_fir_sym_cn.h | 67 + .../src/DSP_fir_sym/c64P/DSP_fir_sym_d.c | 266 ++ ti/dsplib/src/DSP_fir_sym/c66/DSP_fir_sym.c | 355 ++ ti/dsplib/src/DSP_fir_sym/c66/DSP_fir_sym.h | 109 + .../src/DSP_fir_sym/c66/DSP_fir_sym_cn.c | 110 + .../src/DSP_fir_sym/c66/DSP_fir_sym_cn.h | 67 + ti/dsplib/src/DSP_fir_sym/c66/DSP_fir_sym_d.c | 266 ++ ti/dsplib/src/DSP_firlms2/DSP_firlms2.h | 58 + ti/dsplib/src/DSP_firlms2/c64P/DSP_firlms2.c | 186 + ti/dsplib/src/DSP_firlms2/c64P/DSP_firlms2.h | 100 + .../src/DSP_firlms2/c64P/DSP_firlms2_cn.c | 68 + .../src/DSP_firlms2/c64P/DSP_firlms2_cn.h | 58 + .../src/DSP_firlms2/c64P/DSP_firlms2_d.c | 319 ++ ti/dsplib/src/DSP_firlms2/c66/DSP_firlms2.c | 202 + ti/dsplib/src/DSP_firlms2/c66/DSP_firlms2.h | 100 + .../src/DSP_firlms2/c66/DSP_firlms2_cn.c | 68 + .../src/DSP_firlms2/c66/DSP_firlms2_cn.h | 58 + ti/dsplib/src/DSP_firlms2/c66/DSP_firlms2_d.c | 319 ++ ti/dsplib/src/DSP_fltoq15/DSP_fltoq15.h | 58 + ti/dsplib/src/DSP_fltoq15/c64P/DSP_fltoq15.c | 145 + ti/dsplib/src/DSP_fltoq15/c64P/DSP_fltoq15.h | 98 + .../src/DSP_fltoq15/c64P/DSP_fltoq15_cn.c | 106 + .../src/DSP_fltoq15/c64P/DSP_fltoq15_cn.h | 57 + .../src/DSP_fltoq15/c64P/DSP_fltoq15_d.c | 291 ++ ti/dsplib/src/DSP_fltoq15/c66/DSP_fltoq15.c | 160 + ti/dsplib/src/DSP_fltoq15/c66/DSP_fltoq15.h | 98 + .../src/DSP_fltoq15/c66/DSP_fltoq15_cn.c | 106 + .../src/DSP_fltoq15/c66/DSP_fltoq15_cn.h | 63 + ti/dsplib/src/DSP_fltoq15/c66/DSP_fltoq15_d.c | 291 ++ ti/dsplib/src/DSP_ifft16x16/DSP_ifft16x16.h | 58 + .../src/DSP_ifft16x16/c64P/DSP_ifft16x16.h | 106 + .../src/DSP_ifft16x16/c64P/DSP_ifft16x16_cn.c | 667 +++ .../src/DSP_ifft16x16/c64P/DSP_ifft16x16_cn.h | 64 + .../src/DSP_ifft16x16/c64P/DSP_ifft16x16_d.c | 420 ++ .../src/DSP_ifft16x16/c64P/DSP_ifft16x16_i.c | 1338 ++++++ .../src/DSP_ifft16x16/c64P/DSP_ifft16x16_i.h | 64 + .../DSP_ifft16x16/c64P/DSP_ifft16x16_sa.sa | 890 ++++ .../c64P/gen_twiddle_ifft16x16.c | 190 + .../c64P/gen_twiddle_ifft16x16.h | 47 + .../src/DSP_ifft16x16/c66/DSP_ifft16x16.c | 1489 ++++++ .../src/DSP_ifft16x16/c66/DSP_ifft16x16.h | 106 + .../src/DSP_ifft16x16/c66/DSP_ifft16x16_cn.c | 634 +++ .../src/DSP_ifft16x16/c66/DSP_ifft16x16_cn.h | 64 + .../src/DSP_ifft16x16/c66/DSP_ifft16x16_d.c | 388 ++ .../DSP_ifft16x16/c66/gen_twiddle_ifft16x16.c | 152 + .../DSP_ifft16x16/c66/gen_twiddle_ifft16x16.h | 42 + .../DSP_ifft16x16_imre/DSP_ifft16x16_imre.h | 58 + .../c64P/DSP_ifft16x16_imre.h | 107 + .../c64P/DSP_ifft16x16_imre_cn.c | 666 +++ .../c64P/DSP_ifft16x16_imre_cn.h | 64 + .../c64P/DSP_ifft16x16_imre_d.c | 408 ++ .../c64P/DSP_ifft16x16_imre_i.c | 1433 ++++++ .../c64P/DSP_ifft16x16_imre_i.h | 64 + .../c64P/DSP_ifft16x16_imre_sa.sa | 876 ++++ .../c64P/gen_twiddle_ifft16x16_imre.c | 161 + .../c64P/gen_twiddle_ifft16x16_imre.h | 42 + .../c66/DSP_ifft16x16_imre.c | 1520 +++++++ .../c66/DSP_ifft16x16_imre.h | 107 + .../c66/DSP_ifft16x16_imre_cn.c | 619 +++ .../c66/DSP_ifft16x16_imre_cn.h | 64 + .../c66/DSP_ifft16x16_imre_d.c | 308 ++ .../c66/gen_twiddle_ifft16x16_imre.c | 155 + .../c66/gen_twiddle_ifft16x16_imre.h | 43 + ti/dsplib/src/DSP_ifft16x32/DSP_ifft16x32.h | 58 + .../src/DSP_ifft16x32/c64P/DSP_ifft16x32.h | 107 + .../src/DSP_ifft16x32/c64P/DSP_ifft16x32_cn.c | 784 ++++ .../src/DSP_ifft16x32/c64P/DSP_ifft16x32_cn.h | 64 + .../src/DSP_ifft16x32/c64P/DSP_ifft16x32_d.c | 547 +++ .../src/DSP_ifft16x32/c64P/DSP_ifft16x32_i.c | 1429 ++++++ .../src/DSP_ifft16x32/c64P/DSP_ifft16x32_i.h | 64 + .../DSP_ifft16x32/c64P/DSP_ifft16x32_sa.sa | 828 ++++ .../DSP_ifft16x32/c64P/gen_twiddle_fft16x32.c | 126 + .../DSP_ifft16x32/c64P/gen_twiddle_fft16x32.h | 42 + .../src/DSP_ifft16x32/c66/DSP_ifft16x32.c | 1180 +++++ .../src/DSP_ifft16x32/c66/DSP_ifft16x32.h | 107 + .../src/DSP_ifft16x32/c66/DSP_ifft16x32_cn.c | 607 +++ .../src/DSP_ifft16x32/c66/DSP_ifft16x32_cn.h | 64 + .../src/DSP_ifft16x32/c66/DSP_ifft16x32_d.c | 375 ++ .../DSP_ifft16x32/c66/gen_twiddle_ifft16x32.c | 145 + .../DSP_ifft16x32/c66/gen_twiddle_ifft16x32.h | 42 + ti/dsplib/src/DSP_ifft32x32/DSP_ifft32x32.h | 58 + .../src/DSP_ifft32x32/c64P/DSP_ifft32x32.h | 107 + .../src/DSP_ifft32x32/c64P/DSP_ifft32x32_cn.c | 711 +++ .../src/DSP_ifft32x32/c64P/DSP_ifft32x32_cn.h | 64 + .../src/DSP_ifft32x32/c64P/DSP_ifft32x32_d.c | 409 ++ .../src/DSP_ifft32x32/c64P/DSP_ifft32x32_i.c | 1565 +++++++ .../src/DSP_ifft32x32/c64P/DSP_ifft32x32_i.h | 65 + .../DSP_ifft32x32/c64P/DSP_ifft32x32_sa.sa | 913 ++++ .../DSP_ifft32x32/c64P/gen_twiddle_fft32x32.c | 125 + .../DSP_ifft32x32/c64P/gen_twiddle_fft32x32.h | 43 + .../src/DSP_ifft32x32/c66/DSP_ifft32x32.c | 1363 ++++++ .../src/DSP_ifft32x32/c66/DSP_ifft32x32.h | 107 + .../src/DSP_ifft32x32/c66/DSP_ifft32x32_cn.c | 723 +++ .../src/DSP_ifft32x32/c66/DSP_ifft32x32_cn.h | 64 + .../src/DSP_ifft32x32/c66/DSP_ifft32x32_d.c | 379 ++ .../DSP_ifft32x32/c66/gen_twiddle_ifft32x32.c | 147 + .../DSP_ifft32x32/c66/gen_twiddle_ifft32x32.h | 43 + ti/dsplib/src/DSP_iir/DSP_iir.h | 58 + ti/dsplib/src/DSP_iir/c64P/DSP_iir.c | 123 + ti/dsplib/src/DSP_iir/c64P/DSP_iir.h | 112 + ti/dsplib/src/DSP_iir/c64P/DSP_iir_cn.c | 75 + ti/dsplib/src/DSP_iir/c64P/DSP_iir_cn.h | 60 + ti/dsplib/src/DSP_iir/c64P/DSP_iir_d.c | 272 ++ ti/dsplib/src/DSP_iir/c66/DSP_iir.c | 125 + ti/dsplib/src/DSP_iir/c66/DSP_iir.h | 112 + ti/dsplib/src/DSP_iir/c66/DSP_iir_cn.c | 75 + ti/dsplib/src/DSP_iir/c66/DSP_iir_cn.h | 60 + ti/dsplib/src/DSP_iir/c66/DSP_iir_d.c | 272 ++ ti/dsplib/src/DSP_iir_lat/DSP_iir_lat.h | 58 + ti/dsplib/src/DSP_iir_lat/c64P/DSP_iir_lat.c | 225 + ti/dsplib/src/DSP_iir_lat/c64P/DSP_iir_lat.h | 109 + .../src/DSP_iir_lat/c64P/DSP_iir_lat_cn.c | 112 + .../src/DSP_iir_lat/c64P/DSP_iir_lat_cn.h | 60 + .../src/DSP_iir_lat/c64P/DSP_iir_lat_d.c | 300 ++ ti/dsplib/src/DSP_iir_lat/c66/DSP_iir_lat.c | 223 + ti/dsplib/src/DSP_iir_lat/c66/DSP_iir_lat.h | 109 + .../src/DSP_iir_lat/c66/DSP_iir_lat_cn.c | 112 + .../src/DSP_iir_lat/c66/DSP_iir_lat_cn.h | 66 + ti/dsplib/src/DSP_iir_lat/c66/DSP_iir_lat_d.c | 300 ++ ti/dsplib/src/DSP_iir_ss/DSP_iir_ss.h | 58 + ti/dsplib/src/DSP_iir_ss/c64P/DSP_iir_ss.c | 238 + ti/dsplib/src/DSP_iir_ss/c64P/DSP_iir_ss.h | 97 + ti/dsplib/src/DSP_iir_ss/c64P/DSP_iir_ss_cn.c | 99 + ti/dsplib/src/DSP_iir_ss/c64P/DSP_iir_ss_cn.h | 64 + ti/dsplib/src/DSP_iir_ss/c64P/DSP_iir_ss_d.c | 310 ++ ti/dsplib/src/DSP_iir_ss/c66/DSP_iir_ss.c | 238 + ti/dsplib/src/DSP_iir_ss/c66/DSP_iir_ss.h | 97 + ti/dsplib/src/DSP_iir_ss/c66/DSP_iir_ss_cn.c | 99 + ti/dsplib/src/DSP_iir_ss/c66/DSP_iir_ss_cn.h | 64 + ti/dsplib/src/DSP_iir_ss/c66/DSP_iir_ss_d.c | 310 ++ ti/dsplib/src/DSP_mat_mul/DSP_mat_mul.h | 58 + ti/dsplib/src/DSP_mat_mul/c64P/DSP_mat_mul.c | 270 ++ ti/dsplib/src/DSP_mat_mul/c64P/DSP_mat_mul.h | 108 + .../src/DSP_mat_mul/c64P/DSP_mat_mul_cn.c | 121 + .../src/DSP_mat_mul/c64P/DSP_mat_mul_cn.h | 64 + .../src/DSP_mat_mul/c64P/DSP_mat_mul_d.c | 351 ++ ti/dsplib/src/DSP_mat_mul/c66/DSP_mat_mul.c | 270 ++ ti/dsplib/src/DSP_mat_mul/c66/DSP_mat_mul.h | 108 + .../src/DSP_mat_mul/c66/DSP_mat_mul_cn.c | 121 + .../src/DSP_mat_mul/c66/DSP_mat_mul_cn.h | 64 + ti/dsplib/src/DSP_mat_mul/c66/DSP_mat_mul_d.c | 329 ++ .../src/DSP_mat_mul_cplx/DSP_mat_mul_cplx.h | 58 + .../DSP_mat_mul_cplx/c64P/DSP_mat_mul_cplx.c | 289 ++ .../DSP_mat_mul_cplx/c64P/DSP_mat_mul_cplx.h | 108 + .../c64P/DSP_mat_mul_cplx_cn.c | 118 + .../c64P/DSP_mat_mul_cplx_cn.h | 58 + .../c64P/DSP_mat_mul_cplx_d.c | 291 ++ .../DSP_mat_mul_cplx/c66/DSP_mat_mul_cplx.c | 279 ++ .../DSP_mat_mul_cplx/c66/DSP_mat_mul_cplx.h | 108 + .../c66/DSP_mat_mul_cplx_cn.c | 118 + .../c66/DSP_mat_mul_cplx_cn.h | 64 + .../DSP_mat_mul_cplx/c66/DSP_mat_mul_cplx_d.c | 291 ++ ti/dsplib/src/DSP_mat_trans/DSP_mat_trans.h | 58 + .../src/DSP_mat_trans/c64P/DSP_mat_trans.c | 286 ++ .../src/DSP_mat_trans/c64P/DSP_mat_trans.h | 94 + .../src/DSP_mat_trans/c64P/DSP_mat_trans_cn.c | 100 + .../src/DSP_mat_trans/c64P/DSP_mat_trans_cn.h | 64 + .../src/DSP_mat_trans/c64P/DSP_mat_trans_d.c | 318 ++ .../src/DSP_mat_trans/c66/DSP_mat_trans.c | 286 ++ .../src/DSP_mat_trans/c66/DSP_mat_trans.h | 94 + .../src/DSP_mat_trans/c66/DSP_mat_trans_cn.c | 100 + .../src/DSP_mat_trans/c66/DSP_mat_trans_cn.h | 64 + .../src/DSP_mat_trans/c66/DSP_mat_trans_d.c | 318 ++ ti/dsplib/src/DSP_maxidx/DSP_maxidx.h | 58 + ti/dsplib/src/DSP_maxidx/c64P/DSP_maxidx.c | 241 + ti/dsplib/src/DSP_maxidx/c64P/DSP_maxidx.h | 97 + ti/dsplib/src/DSP_maxidx/c64P/DSP_maxidx_cn.c | 103 + ti/dsplib/src/DSP_maxidx/c64P/DSP_maxidx_cn.h | 56 + ti/dsplib/src/DSP_maxidx/c64P/DSP_maxidx_d.c | 239 + ti/dsplib/src/DSP_maxidx/c66/DSP_maxidx.c | 215 + ti/dsplib/src/DSP_maxidx/c66/DSP_maxidx.h | 97 + ti/dsplib/src/DSP_maxidx/c66/DSP_maxidx_cn.c | 103 + ti/dsplib/src/DSP_maxidx/c66/DSP_maxidx_cn.h | 56 + ti/dsplib/src/DSP_maxidx/c66/DSP_maxidx_d.c | 236 + ti/dsplib/src/DSP_maxval/DSP_maxval.h | 58 + ti/dsplib/src/DSP_maxval/c64P/DSP_maxval.c | 138 + ti/dsplib/src/DSP_maxval/c64P/DSP_maxval.h | 91 + ti/dsplib/src/DSP_maxval/c64P/DSP_maxval_cn.c | 63 + ti/dsplib/src/DSP_maxval/c64P/DSP_maxval_cn.h | 56 + ti/dsplib/src/DSP_maxval/c64P/DSP_maxval_d.c | 192 + ti/dsplib/src/DSP_maxval/c66/DSP_maxval.c | 138 + ti/dsplib/src/DSP_maxval/c66/DSP_maxval.h | 91 + ti/dsplib/src/DSP_maxval/c66/DSP_maxval_cn.c | 63 + ti/dsplib/src/DSP_maxval/c66/DSP_maxval_cn.h | 56 + ti/dsplib/src/DSP_maxval/c66/DSP_maxval_d.c | 192 + ti/dsplib/src/DSP_minerror/DSP_minerror.h | 58 + .../src/DSP_minerror/c64P/DSP_minerror.c | 539 +++ .../src/DSP_minerror/c64P/DSP_minerror.h | 95 + .../src/DSP_minerror/c64P/DSP_minerror_cn.c | 107 + .../src/DSP_minerror/c64P/DSP_minerror_cn.h | 64 + .../src/DSP_minerror/c64P/DSP_minerror_d.c | 486 ++ ti/dsplib/src/DSP_minerror/c66/DSP_minerror.c | 539 +++ ti/dsplib/src/DSP_minerror/c66/DSP_minerror.h | 95 + .../src/DSP_minerror/c66/DSP_minerror_cn.c | 107 + .../src/DSP_minerror/c66/DSP_minerror_cn.h | 64 + .../src/DSP_minerror/c66/DSP_minerror_d.c | 486 ++ ti/dsplib/src/DSP_minval/DSP_minval.h | 58 + ti/dsplib/src/DSP_minval/c64P/DSP_minval.c | 136 + ti/dsplib/src/DSP_minval/c64P/DSP_minval.h | 91 + ti/dsplib/src/DSP_minval/c64P/DSP_minval_cn.c | 63 + ti/dsplib/src/DSP_minval/c64P/DSP_minval_cn.h | 56 + ti/dsplib/src/DSP_minval/c64P/DSP_minval_d.c | 192 + ti/dsplib/src/DSP_minval/c66/DSP_minval.c | 136 + ti/dsplib/src/DSP_minval/c66/DSP_minval.h | 91 + ti/dsplib/src/DSP_minval/c66/DSP_minval_cn.c | 63 + ti/dsplib/src/DSP_minval/c66/DSP_minval_cn.h | 56 + ti/dsplib/src/DSP_minval/c66/DSP_minval_d.c | 192 + ti/dsplib/src/DSP_mul32/DSP_mul32.h | 58 + ti/dsplib/src/DSP_mul32/c64P/DSP_mul32.c | 106 + ti/dsplib/src/DSP_mul32/c64P/DSP_mul32.h | 98 + ti/dsplib/src/DSP_mul32/c64P/DSP_mul32_cn.c | 65 + ti/dsplib/src/DSP_mul32/c64P/DSP_mul32_cn.h | 57 + ti/dsplib/src/DSP_mul32/c64P/DSP_mul32_d.c | 172 + ti/dsplib/src/DSP_mul32/c66/DSP_mul32.c | 106 + ti/dsplib/src/DSP_mul32/c66/DSP_mul32.h | 98 + ti/dsplib/src/DSP_mul32/c66/DSP_mul32_cn.c | 65 + ti/dsplib/src/DSP_mul32/c66/DSP_mul32_cn.h | 63 + ti/dsplib/src/DSP_mul32/c66/DSP_mul32_d.c | 172 + ti/dsplib/src/DSP_neg32/DSP_neg32.h | 58 + ti/dsplib/src/DSP_neg32/c64P/DSP_neg32.c | 101 + ti/dsplib/src/DSP_neg32/c64P/DSP_neg32.h | 93 + ti/dsplib/src/DSP_neg32/c64P/DSP_neg32_cn.c | 63 + ti/dsplib/src/DSP_neg32/c64P/DSP_neg32_cn.h | 56 + ti/dsplib/src/DSP_neg32/c64P/DSP_neg32_d.c | 180 + ti/dsplib/src/DSP_neg32/c66/DSP_neg32.c | 101 + ti/dsplib/src/DSP_neg32/c66/DSP_neg32.h | 93 + ti/dsplib/src/DSP_neg32/c66/DSP_neg32_cn.c | 63 + ti/dsplib/src/DSP_neg32/c66/DSP_neg32_cn.h | 56 + ti/dsplib/src/DSP_neg32/c66/DSP_neg32_d.c | 180 + ti/dsplib/src/DSP_q15tofl/DSP_q15tofl.h | 58 + ti/dsplib/src/DSP_q15tofl/c64P/DSP_q15tofl.c | 132 + ti/dsplib/src/DSP_q15tofl/c64P/DSP_q15tofl.h | 97 + .../src/DSP_q15tofl/c64P/DSP_q15tofl_cn.c | 94 + .../src/DSP_q15tofl/c64P/DSP_q15tofl_cn.h | 57 + .../src/DSP_q15tofl/c64P/DSP_q15tofl_d.c | 259 ++ ti/dsplib/src/DSP_q15tofl/c66/DSP_q15tofl.c | 161 + ti/dsplib/src/DSP_q15tofl/c66/DSP_q15tofl.h | 97 + .../src/DSP_q15tofl/c66/DSP_q15tofl_cn.c | 94 + .../src/DSP_q15tofl/c66/DSP_q15tofl_cn.h | 63 + ti/dsplib/src/DSP_q15tofl/c66/DSP_q15tofl_d.c | 243 + ti/dsplib/src/DSP_recip16/DSP_recip16.h | 58 + ti/dsplib/src/DSP_recip16/c64P/DSP_recip16.c | 129 + ti/dsplib/src/DSP_recip16/c64P/DSP_recip16.h | 100 + .../src/DSP_recip16/c64P/DSP_recip16_cn.c | 108 + .../src/DSP_recip16/c64P/DSP_recip16_cn.h | 58 + .../src/DSP_recip16/c64P/DSP_recip16_d.c | 284 ++ ti/dsplib/src/DSP_recip16/c66/DSP_recip16.c | 150 + ti/dsplib/src/DSP_recip16/c66/DSP_recip16.h | 100 + .../src/DSP_recip16/c66/DSP_recip16_cn.c | 108 + .../src/DSP_recip16/c66/DSP_recip16_cn.h | 58 + ti/dsplib/src/DSP_recip16/c66/DSP_recip16_d.c | 284 ++ ti/dsplib/src/DSP_urand16/DSP_urand16.h | 56 + ti/dsplib/src/DSP_urand16/c66/DSP_urand16.c | 65 + ti/dsplib/src/DSP_urand16/c66/DSP_urand16.h | 100 + .../src/DSP_urand16/c66/DSP_urand16_cn.c | 60 + .../src/DSP_urand16/c66/DSP_urand16_cn.h | 82 + ti/dsplib/src/DSP_urand16/c66/DSP_urand16_d.c | 247 + ti/dsplib/src/DSP_urand16/c66/lnk.cmd | 84 + ti/dsplib/src/DSP_urand32/DSP_urand32.h | 56 + .../src/DSP_urand32/c66/DSPF_sp_math_i.h | 195 + ti/dsplib/src/DSP_urand32/c66/DSP_urand32.c | 206 + ti/dsplib/src/DSP_urand32/c66/DSP_urand32.h | 349 ++ .../src/DSP_urand32/c66/DSP_urand32_cn.c | 290 ++ .../src/DSP_urand32/c66/DSP_urand32_cn.h | 143 + ti/dsplib/src/DSP_urand32/c66/DSP_urand32_d.c | 250 + ti/dsplib/src/DSP_urand32/c66/lnk.cmd | 84 + ti/dsplib/src/DSP_vecsumsq/DSP_vecsumsq.h | 58 + .../src/DSP_vecsumsq/c64P/DSP_vecsumsq.c | 120 + .../src/DSP_vecsumsq/c64P/DSP_vecsumsq.h | 91 + .../src/DSP_vecsumsq/c64P/DSP_vecsumsq_cn.c | 80 + .../src/DSP_vecsumsq/c64P/DSP_vecsumsq_cn.h | 56 + .../src/DSP_vecsumsq/c64P/DSP_vecsumsq_d.c | 263 ++ ti/dsplib/src/DSP_vecsumsq/c66/DSP_vecsumsq.c | 120 + ti/dsplib/src/DSP_vecsumsq/c66/DSP_vecsumsq.h | 91 + .../src/DSP_vecsumsq/c66/DSP_vecsumsq_cn.c | 80 + .../src/DSP_vecsumsq/c66/DSP_vecsumsq_cn.h | 56 + .../src/DSP_vecsumsq/c66/DSP_vecsumsq_d.c | 263 ++ ti/dsplib/src/DSP_w_vec/DSP_w_vec.h | 58 + ti/dsplib/src/DSP_w_vec/c64P/DSP_w_vec.c | 161 + ti/dsplib/src/DSP_w_vec/c64P/DSP_w_vec.h | 98 + ti/dsplib/src/DSP_w_vec/c64P/DSP_w_vec_cn.c | 92 + ti/dsplib/src/DSP_w_vec/c64P/DSP_w_vec_cn.h | 65 + ti/dsplib/src/DSP_w_vec/c64P/DSP_w_vec_d.c | 295 ++ ti/dsplib/src/DSP_w_vec/c66/DSP_w_vec.c | 161 + ti/dsplib/src/DSP_w_vec/c66/DSP_w_vec.h | 98 + ti/dsplib/src/DSP_w_vec/c66/DSP_w_vec_cn.c | 92 + ti/dsplib/src/DSP_w_vec/c66/DSP_w_vec_cn.h | 65 + ti/dsplib/src/DSP_w_vec/c66/DSP_w_vec_d.c | 295 ++ ti/dsplib/src/common/c64P/lnk.cmd | 75 + ti/dsplib/src/common/c66/lnk.cmd | 83 + ti/dsplib/src/common/c674/lnk.cmd | 83 + 1330 files changed, 244887 insertions(+) create mode 100644 ti/dsplib/.metadata/.tirex/tirex_logo_256.png create mode 100644 ti/dsplib/Makedocs.mk create mode 100644 ti/dsplib/MakedocsBundle.mk create mode 100644 ti/dsplib/docs/bundle/DSPLIB_C64Px_TestReport.html create mode 100644 ti/dsplib/docs/bundle/DSPLIB_C66x_TestReport.html create mode 100644 ti/dsplib/docs/bundle/DSPLIB_C674x_TestReport.html create mode 100644 ti/dsplib/docs/bundle/doxygen/doxyfile.xdt create mode 100644 ti/dsplib/docs/bundle/doxygen/doxygen.h create mode 100644 ti/dsplib/docs/bundle/doxygen/images/dsplib_c64P_directory.jpg create mode 100644 ti/dsplib/docs/bundle/doxygen/images/dsplib_c66_directory.jpg create mode 100644 ti/dsplib/docs/bundle/doxygen/images/dsplib_c674_directory.jpg create mode 100644 ti/dsplib/docs/bundle/doxygen/release.h.xdt create mode 100644 ti/dsplib/docs/bundle/manifest/doxyfile.xdt create mode 100644 ti/dsplib/docs/bundle/manifest/manifest.h create mode 100644 ti/dsplib/docs/doxygen/TI_Templates/tifooter.htm create mode 100644 ti/dsplib/docs/doxygen/TI_Templates/tiheader.htm create mode 100644 ti/dsplib/docs/doxygen/TI_Templates/tilogo.gif create mode 100644 ti/dsplib/docs/doxygen/TI_Templates/titagline.gif create mode 100644 ti/dsplib/docs/doxygen/doxyfile.xdt create mode 100644 ti/dsplib/docs/doxygen/doxygen.h create mode 100644 ti/dsplib/docs/doxygen/release.h create mode 100644 ti/dsplib/docs/dsplib/README.txt create mode 100644 ti/dsplib/docs/dsplib/docs/relnotes_archive/dsplib_3_0_0_6_release_notes.html create mode 100644 ti/dsplib/docs/dsplib/docs/relnotes_archive/dsplib_3_0_0_7_release_notes.html create mode 100644 ti/dsplib/docs/dsplib/docs/relnotes_archive/dsplib_3_0_0_8_release_notes.html create mode 100644 ti/dsplib/docs/dsplib/docs/relnotes_archive/dsplib_3_0_1_0_release_notes.html create mode 100644 ti/dsplib/docs/dsplib/docs/relnotes_archive/dsplib_3_1_0_0_release_notes.html create mode 100644 ti/dsplib/docs/dsplib/docs/relnotes_archive/dsplib_3_1_1_0_release_notes.html create mode 100644 ti/dsplib/docs/dsplib/docs/relnotes_archive/dsplib_3_1_1_1_release_notes.html create mode 100644 ti/dsplib/docs/dsplib/docs/relnotes_archive/dsplib_3_2_0_0_release_notes.html create mode 100644 ti/dsplib/docs/dsplib/docs/relnotes_archive/dsplib_3_2_0_1_release_notes.html create mode 100644 ti/dsplib/docs/dsplib/docs/relnotes_archive/tilogo.gif create mode 100644 ti/dsplib/docs/dsplib/docs/relnotes_archive/titagline.gif create mode 100644 ti/dsplib/docs/dsplib/package.xs create mode 100644 ti/dsplib/docs/manifest/Software_Manifest.html create mode 100644 ti/dsplib/docs/manifest/manifest.xml create mode 100644 ti/dsplib/docs/manifest/manifest.xml.xdt create mode 100644 ti/dsplib/docs/relnotes_archive/dsplib_3_0_0_6_release_notes.html create mode 100644 ti/dsplib/docs/relnotes_archive/dsplib_3_0_0_8_release_notes.html create mode 100644 ti/dsplib/docs/relnotes_archive/dsplib_3_0_1_0_release_notes.html create mode 100644 ti/dsplib/docs/relnotes_archive/dsplib_3_1_0_0_release_notes.html create mode 100644 ti/dsplib/docs/relnotes_archive/dsplib_3_1_1_0_release_notes.html create mode 100644 ti/dsplib/docs/relnotes_archive/dsplib_3_1_1_1_release_notes.html create mode 100644 ti/dsplib/docs/relnotes_archive/dsplib_3_2_0_0_release_notes.html create mode 100644 ti/dsplib/docs/relnotes_archive/dsplib_3_2_0_1_release_notes.html create mode 100644 ti/dsplib/docs/relnotes_archive/tilogo.gif create mode 100644 ti/dsplib/docs/relnotes_archive/titagline.gif create mode 100644 ti/dsplib/examples/QRD_dp_least_squares_ex/DSPF_dp_qrd_example.c create mode 100644 ti/dsplib/examples/QRD_dp_least_squares_ex/lnk.cmd create mode 100644 ti/dsplib/examples/SVD_dp_rank_ex/DSPF_dp_svd_example.c create mode 100644 ti/dsplib/examples/SVD_dp_rank_ex/lnk.cmd create mode 100644 ti/dsplib/examples/example.xs create mode 100644 ti/dsplib/examples/fft_ex/Readme.txt create mode 100644 ti/dsplib/examples/fft_ex/c64P/lnk.cmd create mode 100644 ti/dsplib/examples/fft_ex/c66/lnk.cmd create mode 100644 ti/dsplib/examples/fft_ex/fft_example.c create mode 100644 ti/dsplib/examples/fft_ex/gen_twiddle_fft16x16.c create mode 100644 ti/dsplib/examples/fft_ex/gen_twiddle_fft16x16.h create mode 100644 ti/dsplib/examples/fft_ex/gen_twiddle_fft16x32.c create mode 100644 ti/dsplib/examples/fft_ex/gen_twiddle_fft16x32.h create mode 100644 ti/dsplib/examples/fft_ex/gen_twiddle_fft32x32.c create mode 100644 ti/dsplib/examples/fft_ex/gen_twiddle_fft32x32.h create mode 100644 ti/dsplib/examples/fft_ex/refOutput.jpg create mode 100644 ti/dsplib/examples/fft_sp_ex/Readme.txt create mode 100644 ti/dsplib/examples/fft_sp_ex/c66/lnk.cmd create mode 100644 ti/dsplib/examples/fft_sp_ex/c674/lnk.cmd create mode 100644 ti/dsplib/examples/fft_sp_ex/fft_example_sp.c create mode 100644 ti/dsplib/examples/fft_sp_ex/refOutput.jpg create mode 100644 ti/dsplib/examples/package.bld.xdt create mode 100644 ti/dsplib/examples/package.xdc create mode 100644 ti/dsplib/package.bld create mode 100644 ti/dsplib/package.ccs.json.xdt create mode 100644 ti/dsplib/package.tirex.json.xdt create mode 100644 ti/dsplib/package.xdc create mode 100644 ti/dsplib/scripts/build_release.bat create mode 100644 ti/dsplib/scripts/genTestReport.js create mode 100644 ti/dsplib/scripts/gerrit-cherry-pick.sh create mode 100644 ti/dsplib/scripts/install_tools.bat create mode 100644 ti/dsplib/scripts/pull_patches.sh create mode 100644 ti/dsplib/scripts/reporevs.sh create mode 100644 ti/dsplib/scripts/test_report.html.xdt create mode 100644 ti/dsplib/setxdcpath.js create mode 100644 ti/dsplib/src/DSPF_blk_eswap16/DSPF_blk_eswap16.h create mode 100644 ti/dsplib/src/DSPF_blk_eswap16/c674/DSPF_blk_eswap16.c create mode 100644 ti/dsplib/src/DSPF_blk_eswap16/c674/DSPF_blk_eswap16.h create mode 100644 ti/dsplib/src/DSPF_blk_eswap16/c674/DSPF_blk_eswap16_cn.c create mode 100644 ti/dsplib/src/DSPF_blk_eswap16/c674/DSPF_blk_eswap16_cn.h create mode 100644 ti/dsplib/src/DSPF_blk_eswap16/c674/DSPF_blk_eswap16_d.c create mode 100644 ti/dsplib/src/DSPF_blk_eswap32/DSPF_blk_eswap32.h create mode 100644 ti/dsplib/src/DSPF_blk_eswap32/c674/DSPF_blk_eswap32.c create mode 100644 ti/dsplib/src/DSPF_blk_eswap32/c674/DSPF_blk_eswap32.h create mode 100644 ti/dsplib/src/DSPF_blk_eswap32/c674/DSPF_blk_eswap32_cn.c create mode 100644 ti/dsplib/src/DSPF_blk_eswap32/c674/DSPF_blk_eswap32_cn.h create mode 100644 ti/dsplib/src/DSPF_blk_eswap32/c674/DSPF_blk_eswap32_d.c create mode 100644 ti/dsplib/src/DSPF_blk_eswap64/DSPF_blk_eswap64.h create mode 100644 ti/dsplib/src/DSPF_blk_eswap64/c674/DSPF_blk_eswap64.c create mode 100644 ti/dsplib/src/DSPF_blk_eswap64/c674/DSPF_blk_eswap64.h create mode 100644 ti/dsplib/src/DSPF_blk_eswap64/c674/DSPF_blk_eswap64_cn.c create mode 100644 ti/dsplib/src/DSPF_blk_eswap64/c674/DSPF_blk_eswap64_cn.h create mode 100644 ti/dsplib/src/DSPF_blk_eswap64/c674/DSPF_blk_eswap64_d.c create mode 100644 ti/dsplib/src/DSPF_dp_cholesky/DSPF_dp_cholesky.h create mode 100644 ti/dsplib/src/DSPF_dp_cholesky/c66/DSPF_dp_cholesky.c create mode 100644 ti/dsplib/src/DSPF_dp_cholesky/c66/DSPF_dp_cholesky.h create mode 100644 ti/dsplib/src/DSPF_dp_cholesky/c66/DSPF_dp_cholesky_cn.c create mode 100644 ti/dsplib/src/DSPF_dp_cholesky/c66/DSPF_dp_cholesky_cn.h create mode 100644 ti/dsplib/src/DSPF_dp_cholesky/c66/DSPF_dp_cholesky_d.c create mode 100644 ti/dsplib/src/DSPF_dp_cholesky/c66/lnk.cmd create mode 100644 ti/dsplib/src/DSPF_dp_cholesky_cmplx/DSPF_dp_cholesky_cmplx.h create mode 100644 ti/dsplib/src/DSPF_dp_cholesky_cmplx/c66/DSPF_dp_cholesky_cmplx.c create mode 100644 ti/dsplib/src/DSPF_dp_cholesky_cmplx/c66/DSPF_dp_cholesky_cmplx.h create mode 100644 ti/dsplib/src/DSPF_dp_cholesky_cmplx/c66/DSPF_dp_cholesky_cmplx_cn.c create mode 100644 ti/dsplib/src/DSPF_dp_cholesky_cmplx/c66/DSPF_dp_cholesky_cmplx_cn.h create mode 100644 ti/dsplib/src/DSPF_dp_cholesky_cmplx/c66/DSPF_dp_cholesky_cmplx_d.c create mode 100644 ti/dsplib/src/DSPF_dp_cholesky_cmplx/c66/lnk.cmd create mode 100644 ti/dsplib/src/DSPF_dp_fftDPxDP/DSPF_dp_fftDPxDP.h create mode 100644 ti/dsplib/src/DSPF_dp_fftDPxDP/c66/DSPF_dp_fftDPxDP.c create mode 100644 ti/dsplib/src/DSPF_dp_fftDPxDP/c66/DSPF_dp_fftDPxDP.h create mode 100644 ti/dsplib/src/DSPF_dp_fftDPxDP/c66/DSPF_dp_fftDPxDP_cn.c create mode 100644 ti/dsplib/src/DSPF_dp_fftDPxDP/c66/DSPF_dp_fftDPxDP_cn.h create mode 100644 ti/dsplib/src/DSPF_dp_fftDPxDP/c66/DSPF_dp_fftDPxDP_d.c create mode 100644 ti/dsplib/src/DSPF_dp_ifftDPxDP/DSPF_dp_ifftDPxDP.h create mode 100644 ti/dsplib/src/DSPF_dp_ifftDPxDP/c66/DSPF_dp_ifftDPxDP.c create mode 100644 ti/dsplib/src/DSPF_dp_ifftDPxDP/c66/DSPF_dp_ifftDPxDP.h create mode 100644 ti/dsplib/src/DSPF_dp_ifftDPxDP/c66/DSPF_dp_ifftDPxDP_cn.c create mode 100644 ti/dsplib/src/DSPF_dp_ifftDPxDP/c66/DSPF_dp_ifftDPxDP_cn.h create mode 100644 ti/dsplib/src/DSPF_dp_ifftDPxDP/c66/DSPF_dp_ifftDPxDP_d.c create mode 100644 ti/dsplib/src/DSPF_dp_lud/DSPF_dp_lud.h create mode 100644 ti/dsplib/src/DSPF_dp_lud/c66/DSPF_dp_lud.c create mode 100644 ti/dsplib/src/DSPF_dp_lud/c66/DSPF_dp_lud.h create mode 100644 ti/dsplib/src/DSPF_dp_lud/c66/DSPF_dp_lud_cn.c create mode 100644 ti/dsplib/src/DSPF_dp_lud/c66/DSPF_dp_lud_cn.h create mode 100644 ti/dsplib/src/DSPF_dp_lud/c66/DSPF_dp_lud_d.c create mode 100644 ti/dsplib/src/DSPF_dp_lud/c66/lnk.cmd create mode 100644 ti/dsplib/src/DSPF_dp_lud_cmplx/DSPF_dp_lud_cmplx.h create mode 100644 ti/dsplib/src/DSPF_dp_lud_cmplx/c66/DSPF_dp_lud_cmplx.c create mode 100644 ti/dsplib/src/DSPF_dp_lud_cmplx/c66/DSPF_dp_lud_cmplx.h create mode 100644 ti/dsplib/src/DSPF_dp_lud_cmplx/c66/DSPF_dp_lud_cmplx_cn.c create mode 100644 ti/dsplib/src/DSPF_dp_lud_cmplx/c66/DSPF_dp_lud_cmplx_cn.h create mode 100644 ti/dsplib/src/DSPF_dp_lud_cmplx/c66/DSPF_dp_lud_cmplx_d.c create mode 100644 ti/dsplib/src/DSPF_dp_lud_cmplx/c66/lnk.cmd create mode 100644 ti/dsplib/src/DSPF_dp_lud_inv/DSPF_dp_lud_inv.h create mode 100644 ti/dsplib/src/DSPF_dp_lud_inv/c66/DSPF_dp_lud_inv.c create mode 100644 ti/dsplib/src/DSPF_dp_lud_inv/c66/DSPF_dp_lud_inv.h create mode 100644 ti/dsplib/src/DSPF_dp_lud_inv/c66/DSPF_dp_lud_inv_cn.c create mode 100644 ti/dsplib/src/DSPF_dp_lud_inv/c66/DSPF_dp_lud_inv_cn.h create mode 100644 ti/dsplib/src/DSPF_dp_lud_inv/c66/DSPF_dp_lud_inv_d.c create mode 100644 ti/dsplib/src/DSPF_dp_lud_inv/c66/lnk.cmd create mode 100644 ti/dsplib/src/DSPF_dp_lud_inv_cmplx/DSPF_dp_lud_inv_cmplx.h create mode 100644 ti/dsplib/src/DSPF_dp_lud_inv_cmplx/c66/DSPF_dp_lud_inv_cmplx.c create mode 100644 ti/dsplib/src/DSPF_dp_lud_inv_cmplx/c66/DSPF_dp_lud_inv_cmplx.h create mode 100644 ti/dsplib/src/DSPF_dp_lud_inv_cmplx/c66/DSPF_dp_lud_inv_cmplx_cn.c create mode 100644 ti/dsplib/src/DSPF_dp_lud_inv_cmplx/c66/DSPF_dp_lud_inv_cmplx_cn.h create mode 100644 ti/dsplib/src/DSPF_dp_lud_inv_cmplx/c66/DSPF_dp_lud_inv_cmplx_d.c create mode 100644 ti/dsplib/src/DSPF_dp_lud_inv_cmplx/c66/lnk.cmd create mode 100644 ti/dsplib/src/DSPF_dp_lud_sol/DSPF_dp_lud_sol.h create mode 100644 ti/dsplib/src/DSPF_dp_lud_sol/c66/DSPF_dp_lud_sol.c create mode 100644 ti/dsplib/src/DSPF_dp_lud_sol/c66/DSPF_dp_lud_sol.h create mode 100644 ti/dsplib/src/DSPF_dp_lud_sol/c66/DSPF_dp_lud_sol_66_LE_ELF/.project create mode 100644 ti/dsplib/src/DSPF_dp_lud_sol/c66/DSPF_dp_lud_sol_cn.c create mode 100644 ti/dsplib/src/DSPF_dp_lud_sol/c66/DSPF_dp_lud_sol_cn.h create mode 100644 ti/dsplib/src/DSPF_dp_lud_sol/c66/DSPF_dp_lud_sol_d.c create mode 100644 ti/dsplib/src/DSPF_dp_lud_sol/c66/lnk.cmd create mode 100644 ti/dsplib/src/DSPF_dp_lud_sol_cmplx/DSPF_dp_lud_sol_cmplx.h create mode 100644 ti/dsplib/src/DSPF_dp_lud_sol_cmplx/c66/DSPF_dp_lud_sol_cmplx.c create mode 100644 ti/dsplib/src/DSPF_dp_lud_sol_cmplx/c66/DSPF_dp_lud_sol_cmplx.h create mode 100644 ti/dsplib/src/DSPF_dp_lud_sol_cmplx/c66/DSPF_dp_lud_sol_cmplx_cn.c create mode 100644 ti/dsplib/src/DSPF_dp_lud_sol_cmplx/c66/DSPF_dp_lud_sol_cmplx_cn.h create mode 100644 ti/dsplib/src/DSPF_dp_lud_sol_cmplx/c66/DSPF_dp_lud_sol_cmplx_d.c create mode 100644 ti/dsplib/src/DSPF_dp_lud_sol_cmplx/c66/lnk.cmd create mode 100644 ti/dsplib/src/DSPF_dp_mat_mul_gemm/DSPF_dp_mat_mul_gemm.h create mode 100644 ti/dsplib/src/DSPF_dp_mat_mul_gemm/c66/DSPF_dp_mat_mul_gemm.c create mode 100644 ti/dsplib/src/DSPF_dp_mat_mul_gemm/c66/DSPF_dp_mat_mul_gemm.h create mode 100644 ti/dsplib/src/DSPF_dp_mat_mul_gemm/c66/DSPF_dp_mat_mul_gemm_cn.c create mode 100644 ti/dsplib/src/DSPF_dp_mat_mul_gemm/c66/DSPF_dp_mat_mul_gemm_cn.h create mode 100644 ti/dsplib/src/DSPF_dp_mat_mul_gemm/c66/DSPF_dp_mat_mul_gemm_d.c create mode 100644 ti/dsplib/src/DSPF_dp_mat_submat_copy/DSPF_dp_mat_submat_copy.h create mode 100644 ti/dsplib/src/DSPF_dp_mat_submat_copy/c66/DSPF_dp_mat_submat_copy.c create mode 100644 ti/dsplib/src/DSPF_dp_mat_submat_copy/c66/DSPF_dp_mat_submat_copy.h create mode 100644 ti/dsplib/src/DSPF_dp_mat_submat_copy/c66/DSPF_dp_mat_submat_copy_cn.c create mode 100644 ti/dsplib/src/DSPF_dp_mat_submat_copy/c66/DSPF_dp_mat_submat_copy_cn.h create mode 100644 ti/dsplib/src/DSPF_dp_mat_submat_copy/c66/DSPF_dp_mat_submat_copy_d.c create mode 100644 ti/dsplib/src/DSPF_dp_mat_trans/DSPF_dp_mat_trans.h create mode 100644 ti/dsplib/src/DSPF_dp_mat_trans/c66/DSPF_dp_mat_trans.c create mode 100644 ti/dsplib/src/DSPF_dp_mat_trans/c66/DSPF_dp_mat_trans.h create mode 100644 ti/dsplib/src/DSPF_dp_mat_trans/c66/DSPF_dp_mat_trans_cn.c create mode 100644 ti/dsplib/src/DSPF_dp_mat_trans/c66/DSPF_dp_mat_trans_cn.h create mode 100644 ti/dsplib/src/DSPF_dp_mat_trans/c66/DSPF_dp_mat_trans_d.c create mode 100644 ti/dsplib/src/DSPF_dp_qrd/DSPF_dp_qrd.h create mode 100644 ti/dsplib/src/DSPF_dp_qrd/c66/DSPF_dp_qrd.c create mode 100644 ti/dsplib/src/DSPF_dp_qrd/c66/DSPF_dp_qrd.h create mode 100644 ti/dsplib/src/DSPF_dp_qrd/c66/DSPF_dp_qrd_cn.c create mode 100644 ti/dsplib/src/DSPF_dp_qrd/c66/DSPF_dp_qrd_cn.h create mode 100644 ti/dsplib/src/DSPF_dp_qrd/c66/DSPF_dp_qrd_d.c create mode 100644 ti/dsplib/src/DSPF_dp_qrd/c66/lnk.cmd create mode 100644 ti/dsplib/src/DSPF_dp_qrd_cmplx/DSPF_dp_qrd_cmplx.h create mode 100644 ti/dsplib/src/DSPF_dp_qrd_cmplx/c66/DSPF_dp_qrd_cmplx.c create mode 100644 ti/dsplib/src/DSPF_dp_qrd_cmplx/c66/DSPF_dp_qrd_cmplx.h create mode 100644 ti/dsplib/src/DSPF_dp_qrd_cmplx/c66/DSPF_dp_qrd_cmplx_cn.c create mode 100644 ti/dsplib/src/DSPF_dp_qrd_cmplx/c66/DSPF_dp_qrd_cmplx_cn.h create mode 100644 ti/dsplib/src/DSPF_dp_qrd_cmplx/c66/DSPF_dp_qrd_cmplx_d.c create mode 100644 ti/dsplib/src/DSPF_dp_qrd_cmplx/c66/lnk.cmd create mode 100644 ti/dsplib/src/DSPF_dp_svd/DSPF_dp_svd.h create mode 100644 ti/dsplib/src/DSPF_dp_svd/c66/DSPF_dp_svd.c create mode 100644 ti/dsplib/src/DSPF_dp_svd/c66/DSPF_dp_svd.h create mode 100644 ti/dsplib/src/DSPF_dp_svd/c66/DSPF_dp_svd_cn.c create mode 100644 ti/dsplib/src/DSPF_dp_svd/c66/DSPF_dp_svd_cn.h create mode 100644 ti/dsplib/src/DSPF_dp_svd/c66/DSPF_dp_svd_d.c create mode 100644 ti/dsplib/src/DSPF_dp_svd/c66/lnk.cmd create mode 100644 ti/dsplib/src/DSPF_dp_svd_cmplx/DSPF_dp_svd_cmplx.h create mode 100644 ti/dsplib/src/DSPF_dp_svd_cmplx/c66/DSPF_dp_svd_cmplx.c create mode 100644 ti/dsplib/src/DSPF_dp_svd_cmplx/c66/DSPF_dp_svd_cmplx.h create mode 100644 ti/dsplib/src/DSPF_dp_svd_cmplx/c66/DSPF_dp_svd_cmplx_cn.c create mode 100644 ti/dsplib/src/DSPF_dp_svd_cmplx/c66/DSPF_dp_svd_cmplx_cn.h create mode 100644 ti/dsplib/src/DSPF_dp_svd_cmplx/c66/DSPF_dp_svd_cmplx_d.c create mode 100644 ti/dsplib/src/DSPF_dp_svd_cmplx/c66/lnk.cmd create mode 100644 ti/dsplib/src/DSPF_fltoq15/DSPF_fltoq15.h create mode 100644 ti/dsplib/src/DSPF_fltoq15/c674/DSPF_fltoq15.c create mode 100644 ti/dsplib/src/DSPF_fltoq15/c674/DSPF_fltoq15.h create mode 100644 ti/dsplib/src/DSPF_fltoq15/c674/DSPF_fltoq15_cn.c create mode 100644 ti/dsplib/src/DSPF_fltoq15/c674/DSPF_fltoq15_cn.h create mode 100644 ti/dsplib/src/DSPF_fltoq15/c674/DSPF_fltoq15_d.c create mode 100644 ti/dsplib/src/DSPF_q15tofl/DSPF_q15tofl.h create mode 100644 ti/dsplib/src/DSPF_q15tofl/c674/DSPF_q15tofl.c create mode 100644 ti/dsplib/src/DSPF_q15tofl/c674/DSPF_q15tofl.h create mode 100644 ti/dsplib/src/DSPF_q15tofl/c674/DSPF_q15tofl_cn.c create mode 100644 ti/dsplib/src/DSPF_q15tofl/c674/DSPF_q15tofl_cn.h create mode 100644 ti/dsplib/src/DSPF_q15tofl/c674/DSPF_q15tofl_d.c create mode 100644 ti/dsplib/src/DSPF_sp_autocor/DSPF_sp_autocor.h create mode 100644 ti/dsplib/src/DSPF_sp_autocor/c66/DSPF_sp_autocor.c create mode 100644 ti/dsplib/src/DSPF_sp_autocor/c66/DSPF_sp_autocor.h create mode 100644 ti/dsplib/src/DSPF_sp_autocor/c66/DSPF_sp_autocor_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_autocor/c66/DSPF_sp_autocor_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_autocor/c66/DSPF_sp_autocor_d.c create mode 100644 ti/dsplib/src/DSPF_sp_autocor/c674/DSPF_sp_autocor.c create mode 100644 ti/dsplib/src/DSPF_sp_autocor/c674/DSPF_sp_autocor.h create mode 100644 ti/dsplib/src/DSPF_sp_autocor/c674/DSPF_sp_autocor_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_autocor/c674/DSPF_sp_autocor_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_autocor/c674/DSPF_sp_autocor_d.c create mode 100644 ti/dsplib/src/DSPF_sp_biquad/DSPF_sp_biquad.h create mode 100644 ti/dsplib/src/DSPF_sp_biquad/c66/DSPF_sp_biquad.c create mode 100644 ti/dsplib/src/DSPF_sp_biquad/c66/DSPF_sp_biquad.h create mode 100644 ti/dsplib/src/DSPF_sp_biquad/c66/DSPF_sp_biquad_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_biquad/c66/DSPF_sp_biquad_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_biquad/c66/DSPF_sp_biquad_d.c create mode 100644 ti/dsplib/src/DSPF_sp_biquad/c674/DSPF_sp_biquad.c create mode 100644 ti/dsplib/src/DSPF_sp_biquad/c674/DSPF_sp_biquad.h create mode 100644 ti/dsplib/src/DSPF_sp_biquad/c674/DSPF_sp_biquad_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_biquad/c674/DSPF_sp_biquad_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_biquad/c674/DSPF_sp_biquad_d.c create mode 100644 ti/dsplib/src/DSPF_sp_bitrev_cplx/DSPF_sp_bitrev_cplx.h create mode 100644 ti/dsplib/src/DSPF_sp_bitrev_cplx/c66/DSPF_sp_bitrev_cplx.c create mode 100644 ti/dsplib/src/DSPF_sp_bitrev_cplx/c66/DSPF_sp_bitrev_cplx.h create mode 100644 ti/dsplib/src/DSPF_sp_bitrev_cplx/c66/DSPF_sp_bitrev_cplx_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_bitrev_cplx/c66/DSPF_sp_bitrev_cplx_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_bitrev_cplx/c66/DSPF_sp_bitrev_cplx_d.c create mode 100644 ti/dsplib/src/DSPF_sp_bitrev_cplx/c674/DSPF_sp_bitrev_cplx.c create mode 100644 ti/dsplib/src/DSPF_sp_bitrev_cplx/c674/DSPF_sp_bitrev_cplx.h create mode 100644 ti/dsplib/src/DSPF_sp_bitrev_cplx/c674/DSPF_sp_bitrev_cplx_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_bitrev_cplx/c674/DSPF_sp_bitrev_cplx_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_bitrev_cplx/c674/DSPF_sp_bitrev_cplx_d.c create mode 100644 ti/dsplib/src/DSPF_sp_blk_move/DSPF_sp_blk_move.h create mode 100644 ti/dsplib/src/DSPF_sp_blk_move/c674/DSPF_sp_blk_move.c create mode 100644 ti/dsplib/src/DSPF_sp_blk_move/c674/DSPF_sp_blk_move.h create mode 100644 ti/dsplib/src/DSPF_sp_blk_move/c674/DSPF_sp_blk_move_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_blk_move/c674/DSPF_sp_blk_move_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_blk_move/c674/DSPF_sp_blk_move_d.c create mode 100644 ti/dsplib/src/DSPF_sp_cfftr2_dit/DSPF_sp_cfftr2_dit.h create mode 100644 ti/dsplib/src/DSPF_sp_cfftr2_dit/c674/DSPF_sp_cfftr2_dit.h create mode 100644 ti/dsplib/src/DSPF_sp_cfftr2_dit/c674/DSPF_sp_cfftr2_dit.s create mode 100644 ti/dsplib/src/DSPF_sp_cfftr2_dit/c674/DSPF_sp_cfftr2_dit_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_cfftr2_dit/c674/DSPF_sp_cfftr2_dit_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_cfftr2_dit/c674/DSPF_sp_cfftr2_dit_d.c create mode 100644 ti/dsplib/src/DSPF_sp_cfftr4_dif/DSPF_sp_cfftr4_dif.h create mode 100644 ti/dsplib/src/DSPF_sp_cfftr4_dif/c674/DSPF_sp_cfftr4_dif.h create mode 100644 ti/dsplib/src/DSPF_sp_cfftr4_dif/c674/DSPF_sp_cfftr4_dif.s create mode 100644 ti/dsplib/src/DSPF_sp_cfftr4_dif/c674/DSPF_sp_cfftr4_dif_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_cfftr4_dif/c674/DSPF_sp_cfftr4_dif_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_cfftr4_dif/c674/DSPF_sp_cfftr4_dif_d.c create mode 100644 ti/dsplib/src/DSPF_sp_cholesky/DSPF_sp_cholesky.h create mode 100644 ti/dsplib/src/DSPF_sp_cholesky/c66/DSPF_sp_cholesky.c create mode 100644 ti/dsplib/src/DSPF_sp_cholesky/c66/DSPF_sp_cholesky.h create mode 100644 ti/dsplib/src/DSPF_sp_cholesky/c66/DSPF_sp_cholesky_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_cholesky/c66/DSPF_sp_cholesky_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_cholesky/c66/DSPF_sp_cholesky_d.c create mode 100644 ti/dsplib/src/DSPF_sp_cholesky/c66/lnk.cmd create mode 100644 ti/dsplib/src/DSPF_sp_cholesky_cmplx/DSPF_sp_cholesky_cmplx.h create mode 100644 ti/dsplib/src/DSPF_sp_cholesky_cmplx/c66/DSPF_sp_cholesky_cmplx.c create mode 100644 ti/dsplib/src/DSPF_sp_cholesky_cmplx/c66/DSPF_sp_cholesky_cmplx.h create mode 100644 ti/dsplib/src/DSPF_sp_cholesky_cmplx/c66/DSPF_sp_cholesky_cmplx_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_cholesky_cmplx/c66/DSPF_sp_cholesky_cmplx_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_cholesky_cmplx/c66/DSPF_sp_cholesky_cmplx_d.c create mode 100644 ti/dsplib/src/DSPF_sp_cholesky_cmplx/c66/lnk.cmd create mode 100644 ti/dsplib/src/DSPF_sp_convol/DSPF_sp_convol.h create mode 100644 ti/dsplib/src/DSPF_sp_convol/c66/DSPF_sp_convol.c create mode 100644 ti/dsplib/src/DSPF_sp_convol/c66/DSPF_sp_convol.h create mode 100644 ti/dsplib/src/DSPF_sp_convol/c66/DSPF_sp_convol_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_convol/c66/DSPF_sp_convol_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_convol/c66/DSPF_sp_convol_d.c create mode 100644 ti/dsplib/src/DSPF_sp_convol/c674/DSPF_sp_convol.c create mode 100644 ti/dsplib/src/DSPF_sp_convol/c674/DSPF_sp_convol.h create mode 100644 ti/dsplib/src/DSPF_sp_convol/c674/DSPF_sp_convol_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_convol/c674/DSPF_sp_convol_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_convol/c674/DSPF_sp_convol_d.c create mode 100644 ti/dsplib/src/DSPF_sp_dotp_cplx/DSPF_sp_dotp_cplx.h create mode 100644 ti/dsplib/src/DSPF_sp_dotp_cplx/c66/DSPF_sp_dotp_cplx.c create mode 100644 ti/dsplib/src/DSPF_sp_dotp_cplx/c66/DSPF_sp_dotp_cplx.h create mode 100644 ti/dsplib/src/DSPF_sp_dotp_cplx/c66/DSPF_sp_dotp_cplx_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_dotp_cplx/c66/DSPF_sp_dotp_cplx_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_dotp_cplx/c66/DSPF_sp_dotp_cplx_d.c create mode 100644 ti/dsplib/src/DSPF_sp_dotp_cplx/c674/DSPF_sp_dotp_cplx.c create mode 100644 ti/dsplib/src/DSPF_sp_dotp_cplx/c674/DSPF_sp_dotp_cplx.h create mode 100644 ti/dsplib/src/DSPF_sp_dotp_cplx/c674/DSPF_sp_dotp_cplx_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_dotp_cplx/c674/DSPF_sp_dotp_cplx_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_dotp_cplx/c674/DSPF_sp_dotp_cplx_d.c create mode 100644 ti/dsplib/src/DSPF_sp_dotprod/DSPF_sp_dotprod.h create mode 100644 ti/dsplib/src/DSPF_sp_dotprod/c66/DSPF_sp_dotprod.c create mode 100644 ti/dsplib/src/DSPF_sp_dotprod/c66/DSPF_sp_dotprod.h create mode 100644 ti/dsplib/src/DSPF_sp_dotprod/c66/DSPF_sp_dotprod_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_dotprod/c66/DSPF_sp_dotprod_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_dotprod/c66/DSPF_sp_dotprod_d.c create mode 100644 ti/dsplib/src/DSPF_sp_dotprod/c674/DSPF_sp_dotprod.bak create mode 100644 ti/dsplib/src/DSPF_sp_dotprod/c674/DSPF_sp_dotprod.c create mode 100644 ti/dsplib/src/DSPF_sp_dotprod/c674/DSPF_sp_dotprod.h create mode 100644 ti/dsplib/src/DSPF_sp_dotprod/c674/DSPF_sp_dotprod_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_dotprod/c674/DSPF_sp_dotprod_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_dotprod/c674/DSPF_sp_dotprod_d.c create mode 100644 ti/dsplib/src/DSPF_sp_dotprod/vc98/DSPF_sp_dotprod.exe create mode 100644 ti/dsplib/src/DSPF_sp_erand/DSPF_sp_erand.h create mode 100644 ti/dsplib/src/DSPF_sp_erand/c66/DSPF_sp_erand.c create mode 100644 ti/dsplib/src/DSPF_sp_erand/c66/DSPF_sp_erand.h create mode 100644 ti/dsplib/src/DSPF_sp_erand/c66/DSPF_sp_erand_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_erand/c66/DSPF_sp_erand_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_erand/c66/DSPF_sp_erand_d.c create mode 100644 ti/dsplib/src/DSPF_sp_erand/c66/lnk.cmd create mode 100644 ti/dsplib/src/DSPF_sp_fftSPxSP/DSPF_sp_fftSPxSP.h create mode 100644 ti/dsplib/src/DSPF_sp_fftSPxSP/c66/DSPF_sp_fftSPxSP.h create mode 100644 ti/dsplib/src/DSPF_sp_fftSPxSP/c66/DSPF_sp_fftSPxSP.sa create mode 100644 ti/dsplib/src/DSPF_sp_fftSPxSP/c66/DSPF_sp_fftSPxSP_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_fftSPxSP/c66/DSPF_sp_fftSPxSP_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_fftSPxSP/c66/DSPF_sp_fftSPxSP_d.c create mode 100644 ti/dsplib/src/DSPF_sp_fftSPxSP/c66/DSPF_sp_fftSPxSP_opt.c create mode 100644 ti/dsplib/src/DSPF_sp_fftSPxSP/c66/DSPF_sp_fftSPxSP_opt.h create mode 100644 ti/dsplib/src/DSPF_sp_fftSPxSP/c674/DSPF_sp_fftSPxSP.h create mode 100644 ti/dsplib/src/DSPF_sp_fftSPxSP/c674/DSPF_sp_fftSPxSP.s create mode 100644 ti/dsplib/src/DSPF_sp_fftSPxSP/c674/DSPF_sp_fftSPxSP_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_fftSPxSP/c674/DSPF_sp_fftSPxSP_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_fftSPxSP/c674/DSPF_sp_fftSPxSP_d.c create mode 100644 ti/dsplib/src/DSPF_sp_fftSPxSP_r2c/DSPF_sp_fftSPxSP_r2c.h create mode 100644 ti/dsplib/src/DSPF_sp_fftSPxSP_r2c/c66/DSPF_sp_fftSPxSP_r2c.c create mode 100644 ti/dsplib/src/DSPF_sp_fftSPxSP_r2c/c66/DSPF_sp_fftSPxSP_r2c.h create mode 100644 ti/dsplib/src/DSPF_sp_fftSPxSP_r2c/c66/DSPF_sp_fftSPxSP_r2c_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_fftSPxSP_r2c/c66/DSPF_sp_fftSPxSP_r2c_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_fftSPxSP_r2c/c66/DSPF_sp_fftSPxSP_r2c_d.c create mode 100644 ti/dsplib/src/DSPF_sp_fir_cplx/DSPF_sp_fir_cplx.h create mode 100644 ti/dsplib/src/DSPF_sp_fir_cplx/c66/DSPF_sp_fir_cplx.c create mode 100644 ti/dsplib/src/DSPF_sp_fir_cplx/c66/DSPF_sp_fir_cplx.h create mode 100644 ti/dsplib/src/DSPF_sp_fir_cplx/c66/DSPF_sp_fir_cplx_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_fir_cplx/c66/DSPF_sp_fir_cplx_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_fir_cplx/c66/DSPF_sp_fir_cplx_d.c create mode 100644 ti/dsplib/src/DSPF_sp_fir_cplx/c674/DSPF_sp_fir_cplx.h create mode 100644 ti/dsplib/src/DSPF_sp_fir_cplx/c674/DSPF_sp_fir_cplx.s create mode 100644 ti/dsplib/src/DSPF_sp_fir_cplx/c674/DSPF_sp_fir_cplx_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_fir_cplx/c674/DSPF_sp_fir_cplx_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_fir_cplx/c674/DSPF_sp_fir_cplx_d.c create mode 100644 ti/dsplib/src/DSPF_sp_fir_cplx/c674/DSPF_sp_fir_cplx_opt.c create mode 100644 ti/dsplib/src/DSPF_sp_fir_gen/DSPF_sp_fir_gen.h create mode 100644 ti/dsplib/src/DSPF_sp_fir_gen/c66/DSPF_sp_fir_gen.c create mode 100644 ti/dsplib/src/DSPF_sp_fir_gen/c66/DSPF_sp_fir_gen.h create mode 100644 ti/dsplib/src/DSPF_sp_fir_gen/c66/DSPF_sp_fir_gen_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_fir_gen/c66/DSPF_sp_fir_gen_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_fir_gen/c66/DSPF_sp_fir_gen_d.c create mode 100644 ti/dsplib/src/DSPF_sp_fir_gen/c674/DSPF_sp_fir_gen.c create mode 100644 ti/dsplib/src/DSPF_sp_fir_gen/c674/DSPF_sp_fir_gen.h create mode 100644 ti/dsplib/src/DSPF_sp_fir_gen/c674/DSPF_sp_fir_gen_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_fir_gen/c674/DSPF_sp_fir_gen_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_fir_gen/c674/DSPF_sp_fir_gen_d.c create mode 100644 ti/dsplib/src/DSPF_sp_fir_r2/DSPF_sp_fir_r2.h create mode 100644 ti/dsplib/src/DSPF_sp_fir_r2/c66/DSPF_sp_fir_r2.c create mode 100644 ti/dsplib/src/DSPF_sp_fir_r2/c66/DSPF_sp_fir_r2.h create mode 100644 ti/dsplib/src/DSPF_sp_fir_r2/c66/DSPF_sp_fir_r2_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_fir_r2/c66/DSPF_sp_fir_r2_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_fir_r2/c66/DSPF_sp_fir_r2_d.c create mode 100644 ti/dsplib/src/DSPF_sp_fir_r2/c674/DSPF_sp_fir_r2.h create mode 100644 ti/dsplib/src/DSPF_sp_fir_r2/c674/DSPF_sp_fir_r2.s create mode 100644 ti/dsplib/src/DSPF_sp_fir_r2/c674/DSPF_sp_fir_r2_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_fir_r2/c674/DSPF_sp_fir_r2_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_fir_r2/c674/DSPF_sp_fir_r2_d.c create mode 100644 ti/dsplib/src/DSPF_sp_fir_r2/c674/DSPF_sp_fir_r2_opt.c create mode 100644 ti/dsplib/src/DSPF_sp_fircirc/DSPF_sp_fircirc.h create mode 100644 ti/dsplib/src/DSPF_sp_fircirc/c66/DSPF_sp_fircirc.c create mode 100644 ti/dsplib/src/DSPF_sp_fircirc/c66/DSPF_sp_fircirc.h create mode 100644 ti/dsplib/src/DSPF_sp_fircirc/c66/DSPF_sp_fircirc_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_fircirc/c66/DSPF_sp_fircirc_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_fircirc/c66/DSPF_sp_fircirc_d.c create mode 100644 ti/dsplib/src/DSPF_sp_fircirc/c674/DSPF_sp_fircirc.c create mode 100644 ti/dsplib/src/DSPF_sp_fircirc/c674/DSPF_sp_fircirc.h create mode 100644 ti/dsplib/src/DSPF_sp_fircirc/c674/DSPF_sp_fircirc_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_fircirc/c674/DSPF_sp_fircirc_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_fircirc/c674/DSPF_sp_fircirc_d.c create mode 100644 ti/dsplib/src/DSPF_sp_icfftr2_dif/DSPF_sp_icfftr2_dif.h create mode 100644 ti/dsplib/src/DSPF_sp_icfftr2_dif/c674/DSPF_sp_icfftr2_dif.h create mode 100644 ti/dsplib/src/DSPF_sp_icfftr2_dif/c674/DSPF_sp_icfftr2_dif.s create mode 100644 ti/dsplib/src/DSPF_sp_icfftr2_dif/c674/DSPF_sp_icfftr2_dif_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_icfftr2_dif/c674/DSPF_sp_icfftr2_dif_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_icfftr2_dif/c674/DSPF_sp_icfftr2_dif_d.c create mode 100644 ti/dsplib/src/DSPF_sp_ifftSPxSP/DSPF_sp_ifftSPxSP.h create mode 100644 ti/dsplib/src/DSPF_sp_ifftSPxSP/c66/DSPF_sp_ifftSPxSP.h create mode 100644 ti/dsplib/src/DSPF_sp_ifftSPxSP/c66/DSPF_sp_ifftSPxSP.sa create mode 100644 ti/dsplib/src/DSPF_sp_ifftSPxSP/c66/DSPF_sp_ifftSPxSP_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_ifftSPxSP/c66/DSPF_sp_ifftSPxSP_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_ifftSPxSP/c66/DSPF_sp_ifftSPxSP_d.c create mode 100644 ti/dsplib/src/DSPF_sp_ifftSPxSP/c66/DSPF_sp_ifftSPxSP_opt.c create mode 100644 ti/dsplib/src/DSPF_sp_ifftSPxSP/c66/DSPF_sp_ifftSPxSP_opt.h create mode 100644 ti/dsplib/src/DSPF_sp_ifftSPxSP/c674/DSPF_sp_ifftSPxSP.h create mode 100644 ti/dsplib/src/DSPF_sp_ifftSPxSP/c674/DSPF_sp_ifftSPxSP.s create mode 100644 ti/dsplib/src/DSPF_sp_ifftSPxSP/c674/DSPF_sp_ifftSPxSP_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_ifftSPxSP/c674/DSPF_sp_ifftSPxSP_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_ifftSPxSP/c674/DSPF_sp_ifftSPxSP_d.c create mode 100644 ti/dsplib/src/DSPF_sp_ifftSPxSP_c2r/DSPF_sp_ifftSPxSP_c2r.h create mode 100644 ti/dsplib/src/DSPF_sp_ifftSPxSP_c2r/c66/DSPF_sp_ifftSPxSP_c2r.c create mode 100644 ti/dsplib/src/DSPF_sp_ifftSPxSP_c2r/c66/DSPF_sp_ifftSPxSP_c2r.h create mode 100644 ti/dsplib/src/DSPF_sp_ifftSPxSP_c2r/c66/DSPF_sp_ifftSPxSP_c2r_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_ifftSPxSP_c2r/c66/DSPF_sp_ifftSPxSP_c2r_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_ifftSPxSP_c2r/c66/DSPF_sp_ifftSPxSP_c2r_d.c create mode 100644 ti/dsplib/src/DSPF_sp_iir/DSPF_sp_iir.h create mode 100644 ti/dsplib/src/DSPF_sp_iir/c66/DSPF_sp_iir.c create mode 100644 ti/dsplib/src/DSPF_sp_iir/c66/DSPF_sp_iir.h create mode 100644 ti/dsplib/src/DSPF_sp_iir/c66/DSPF_sp_iir_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_iir/c66/DSPF_sp_iir_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_iir/c66/DSPF_sp_iir_d.c create mode 100644 ti/dsplib/src/DSPF_sp_iir/c674/DSPF_sp_iir.h create mode 100644 ti/dsplib/src/DSPF_sp_iir/c674/DSPF_sp_iir.s create mode 100644 ti/dsplib/src/DSPF_sp_iir/c674/DSPF_sp_iir_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_iir/c674/DSPF_sp_iir_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_iir/c674/DSPF_sp_iir_d.c create mode 100644 ti/dsplib/src/DSPF_sp_iir/c674/DSPF_sp_iir_opt.c create mode 100644 ti/dsplib/src/DSPF_sp_iirlat/DSPF_sp_iirlat.h create mode 100644 ti/dsplib/src/DSPF_sp_iirlat/c66/DSPF_sp_iirlat.c create mode 100644 ti/dsplib/src/DSPF_sp_iirlat/c66/DSPF_sp_iirlat.h create mode 100644 ti/dsplib/src/DSPF_sp_iirlat/c66/DSPF_sp_iirlat_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_iirlat/c66/DSPF_sp_iirlat_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_iirlat/c66/DSPF_sp_iirlat_d.c create mode 100644 ti/dsplib/src/DSPF_sp_iirlat/c674/DSPF_sp_iirlat.h create mode 100644 ti/dsplib/src/DSPF_sp_iirlat/c674/DSPF_sp_iirlat.s create mode 100644 ti/dsplib/src/DSPF_sp_iirlat/c674/DSPF_sp_iirlat_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_iirlat/c674/DSPF_sp_iirlat_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_iirlat/c674/DSPF_sp_iirlat_d.c create mode 100644 ti/dsplib/src/DSPF_sp_iirlat/c674/DSPF_sp_iirlat_opt.c create mode 100644 ti/dsplib/src/DSPF_sp_lms/DSPF_sp_lms.h create mode 100644 ti/dsplib/src/DSPF_sp_lms/c66/DSPF_sp_lms.c create mode 100644 ti/dsplib/src/DSPF_sp_lms/c66/DSPF_sp_lms.h create mode 100644 ti/dsplib/src/DSPF_sp_lms/c66/DSPF_sp_lms_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_lms/c66/DSPF_sp_lms_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_lms/c66/DSPF_sp_lms_d.c create mode 100644 ti/dsplib/src/DSPF_sp_lms/c674/DSPF_sp_lms.c create mode 100644 ti/dsplib/src/DSPF_sp_lms/c674/DSPF_sp_lms.h create mode 100644 ti/dsplib/src/DSPF_sp_lms/c674/DSPF_sp_lms_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_lms/c674/DSPF_sp_lms_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_lms/c674/DSPF_sp_lms_d.c create mode 100644 ti/dsplib/src/DSPF_sp_lud/DSPF_sp_lud.h create mode 100644 ti/dsplib/src/DSPF_sp_lud/c66/DSPF_sp_lud.c create mode 100644 ti/dsplib/src/DSPF_sp_lud/c66/DSPF_sp_lud.h create mode 100644 ti/dsplib/src/DSPF_sp_lud/c66/DSPF_sp_lud_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_lud/c66/DSPF_sp_lud_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_lud/c66/DSPF_sp_lud_d.c create mode 100644 ti/dsplib/src/DSPF_sp_lud/c66/lnk.cmd create mode 100644 ti/dsplib/src/DSPF_sp_lud_cmplx/DSPF_sp_lud_cmplx.h create mode 100644 ti/dsplib/src/DSPF_sp_lud_cmplx/c66/DSPF_sp_lud_cmplx.c create mode 100644 ti/dsplib/src/DSPF_sp_lud_cmplx/c66/DSPF_sp_lud_cmplx.h create mode 100644 ti/dsplib/src/DSPF_sp_lud_cmplx/c66/DSPF_sp_lud_cmplx_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_lud_cmplx/c66/DSPF_sp_lud_cmplx_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_lud_cmplx/c66/DSPF_sp_lud_cmplx_d.c create mode 100644 ti/dsplib/src/DSPF_sp_lud_cmplx/c66/lnk.cmd create mode 100644 ti/dsplib/src/DSPF_sp_lud_inv/DSPF_sp_lud_inv.h create mode 100644 ti/dsplib/src/DSPF_sp_lud_inv/c66/DSPF_sp_lud_inv.c create mode 100644 ti/dsplib/src/DSPF_sp_lud_inv/c66/DSPF_sp_lud_inv.h create mode 100644 ti/dsplib/src/DSPF_sp_lud_inv/c66/DSPF_sp_lud_inv_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_lud_inv/c66/DSPF_sp_lud_inv_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_lud_inv/c66/DSPF_sp_lud_inv_d.c create mode 100644 ti/dsplib/src/DSPF_sp_lud_inv/c66/lnk.cmd create mode 100644 ti/dsplib/src/DSPF_sp_lud_inv_cmplx/DSPF_sp_lud_inv_cmplx.h create mode 100644 ti/dsplib/src/DSPF_sp_lud_inv_cmplx/c66/DSPF_sp_lud_inv_cmplx.c create mode 100644 ti/dsplib/src/DSPF_sp_lud_inv_cmplx/c66/DSPF_sp_lud_inv_cmplx.h create mode 100644 ti/dsplib/src/DSPF_sp_lud_inv_cmplx/c66/DSPF_sp_lud_inv_cmplx_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_lud_inv_cmplx/c66/DSPF_sp_lud_inv_cmplx_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_lud_inv_cmplx/c66/DSPF_sp_lud_inv_cmplx_d.c create mode 100644 ti/dsplib/src/DSPF_sp_lud_inv_cmplx/c66/lnk.cmd create mode 100644 ti/dsplib/src/DSPF_sp_lud_sol/DSPF_sp_lud_sol.h create mode 100644 ti/dsplib/src/DSPF_sp_lud_sol/c66/DSPF_sp_lud_sol.c create mode 100644 ti/dsplib/src/DSPF_sp_lud_sol/c66/DSPF_sp_lud_sol.h create mode 100644 ti/dsplib/src/DSPF_sp_lud_sol/c66/DSPF_sp_lud_sol_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_lud_sol/c66/DSPF_sp_lud_sol_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_lud_sol/c66/DSPF_sp_lud_sol_d.c create mode 100644 ti/dsplib/src/DSPF_sp_lud_sol/c66/lnk.cmd create mode 100644 ti/dsplib/src/DSPF_sp_lud_sol_cmplx/DSPF_sp_lud_sol_cmplx.h create mode 100644 ti/dsplib/src/DSPF_sp_lud_sol_cmplx/c66/DSPF_sp_lud_sol_cmplx.c create mode 100644 ti/dsplib/src/DSPF_sp_lud_sol_cmplx/c66/DSPF_sp_lud_sol_cmplx.h create mode 100644 ti/dsplib/src/DSPF_sp_lud_sol_cmplx/c66/DSPF_sp_lud_sol_cmplx_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_lud_sol_cmplx/c66/DSPF_sp_lud_sol_cmplx_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_lud_sol_cmplx/c66/DSPF_sp_lud_sol_cmplx_d.c create mode 100644 ti/dsplib/src/DSPF_sp_lud_sol_cmplx/c66/lnk.cmd create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul/DSPF_sp_mat_mul.h create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul/c66/DSPF_sp_mat_mul.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul/c66/DSPF_sp_mat_mul.h create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul/c66/DSPF_sp_mat_mul_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul/c66/DSPF_sp_mat_mul_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul/c66/DSPF_sp_mat_mul_d.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul/c674/DSPF_sp_mat_mul.h create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul/c674/DSPF_sp_mat_mul.s create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul/c674/DSPF_sp_mat_mul_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul/c674/DSPF_sp_mat_mul_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul/c674/DSPF_sp_mat_mul_d.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul/c674/DSPF_sp_mat_mul_opt.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul_cplx/DSPF_sp_mat_mul_cplx.h create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul_cplx/c66/DSPF_sp_mat_mul_cplx.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul_cplx/c66/DSPF_sp_mat_mul_cplx.h create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul_cplx/c66/DSPF_sp_mat_mul_cplx_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul_cplx/c66/DSPF_sp_mat_mul_cplx_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul_cplx/c66/DSPF_sp_mat_mul_cplx_d.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul_cplx/c674/DSPF_sp_mat_mul_cplx.h create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul_cplx/c674/DSPF_sp_mat_mul_cplx.s create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul_cplx/c674/DSPF_sp_mat_mul_cplx_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul_cplx/c674/DSPF_sp_mat_mul_cplx_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul_cplx/c674/DSPF_sp_mat_mul_cplx_d.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul_cplx/c674/DSPF_sp_mat_mul_cplx_opt.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul_gemm/DSPF_sp_mat_mul_gemm.h create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul_gemm/c66/DSPF_sp_mat_mul_gemm.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul_gemm/c66/DSPF_sp_mat_mul_gemm.h create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul_gemm/c66/DSPF_sp_mat_mul_gemm_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul_gemm/c66/DSPF_sp_mat_mul_gemm_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul_gemm/c66/DSPF_sp_mat_mul_gemm_d.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul_gemm/c674/DSPF_sp_mat_mul_gemm.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul_gemm/c674/DSPF_sp_mat_mul_gemm.h create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul_gemm/c674/DSPF_sp_mat_mul_gemm_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul_gemm/c674/DSPF_sp_mat_mul_gemm_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul_gemm/c674/DSPF_sp_mat_mul_gemm_d.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul_gemm_cplx/DSPF_sp_mat_mul_gemm_cplx.h create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul_gemm_cplx/c66/DSPF_sp_mat_mul_gemm_cplx.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul_gemm_cplx/c66/DSPF_sp_mat_mul_gemm_cplx.h create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul_gemm_cplx/c66/DSPF_sp_mat_mul_gemm_cplx_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul_gemm_cplx/c66/DSPF_sp_mat_mul_gemm_cplx_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul_gemm_cplx/c66/DSPF_sp_mat_mul_gemm_cplx_d.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul_gemm_cplx/c674/DSPF_sp_mat_mul_gemm_cplx.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul_gemm_cplx/c674/DSPF_sp_mat_mul_gemm_cplx.h create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul_gemm_cplx/c674/DSPF_sp_mat_mul_gemm_cplx_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul_gemm_cplx/c674/DSPF_sp_mat_mul_gemm_cplx_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_mat_mul_gemm_cplx/c674/DSPF_sp_mat_mul_gemm_cplx_d.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_submat_copy/DSPF_sp_mat_submat_copy.h create mode 100644 ti/dsplib/src/DSPF_sp_mat_submat_copy/c66/DSPF_sp_mat_submat_copy.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_submat_copy/c66/DSPF_sp_mat_submat_copy.h create mode 100644 ti/dsplib/src/DSPF_sp_mat_submat_copy/c66/DSPF_sp_mat_submat_copy_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_submat_copy/c66/DSPF_sp_mat_submat_copy_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_mat_submat_copy/c66/DSPF_sp_mat_submat_copy_d.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_submat_copy_cplx/DSPF_sp_mat_submat_copy_cplx.h create mode 100644 ti/dsplib/src/DSPF_sp_mat_submat_copy_cplx/c66/DSPF_sp_mat_submat_copy_cplx.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_submat_copy_cplx/c66/DSPF_sp_mat_submat_copy_cplx.h create mode 100644 ti/dsplib/src/DSPF_sp_mat_submat_copy_cplx/c66/DSPF_sp_mat_submat_copy_cplx_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_submat_copy_cplx/c66/DSPF_sp_mat_submat_copy_cplx_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_mat_submat_copy_cplx/c66/DSPF_sp_mat_submat_copy_cplx_d.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_trans/DSPF_sp_mat_trans.h create mode 100644 ti/dsplib/src/DSPF_sp_mat_trans/c66/DSPF_sp_mat_trans.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_trans/c66/DSPF_sp_mat_trans.h create mode 100644 ti/dsplib/src/DSPF_sp_mat_trans/c66/DSPF_sp_mat_trans_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_trans/c66/DSPF_sp_mat_trans_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_mat_trans/c66/DSPF_sp_mat_trans_d.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_trans/c674/DSPF_sp_mat_trans.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_trans/c674/DSPF_sp_mat_trans.h create mode 100644 ti/dsplib/src/DSPF_sp_mat_trans/c674/DSPF_sp_mat_trans_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_trans/c674/DSPF_sp_mat_trans_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_mat_trans/c674/DSPF_sp_mat_trans_d.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_trans_cplx/DSPF_sp_mat_trans_cplx.h create mode 100644 ti/dsplib/src/DSPF_sp_mat_trans_cplx/c66/DSPF_sp_mat_trans_cplx.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_trans_cplx/c66/DSPF_sp_mat_trans_cplx.h create mode 100644 ti/dsplib/src/DSPF_sp_mat_trans_cplx/c66/DSPF_sp_mat_trans_cplx_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_mat_trans_cplx/c66/DSPF_sp_mat_trans_cplx_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_mat_trans_cplx/c66/DSPF_sp_mat_trans_cplx_d.c create mode 100644 ti/dsplib/src/DSPF_sp_maxidx/DSPF_sp_maxidx.h create mode 100644 ti/dsplib/src/DSPF_sp_maxidx/c66/DSPF_sp_maxidx.c create mode 100644 ti/dsplib/src/DSPF_sp_maxidx/c66/DSPF_sp_maxidx.h create mode 100644 ti/dsplib/src/DSPF_sp_maxidx/c66/DSPF_sp_maxidx_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_maxidx/c66/DSPF_sp_maxidx_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_maxidx/c66/DSPF_sp_maxidx_d.c create mode 100644 ti/dsplib/src/DSPF_sp_maxidx/c674/DSPF_sp_maxidx.c create mode 100644 ti/dsplib/src/DSPF_sp_maxidx/c674/DSPF_sp_maxidx.h create mode 100644 ti/dsplib/src/DSPF_sp_maxidx/c674/DSPF_sp_maxidx_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_maxidx/c674/DSPF_sp_maxidx_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_maxidx/c674/DSPF_sp_maxidx_d.c create mode 100644 ti/dsplib/src/DSPF_sp_maxval/DSPF_sp_maxval.h create mode 100644 ti/dsplib/src/DSPF_sp_maxval/c66/DSPF_sp_maxval.c create mode 100644 ti/dsplib/src/DSPF_sp_maxval/c66/DSPF_sp_maxval.h create mode 100644 ti/dsplib/src/DSPF_sp_maxval/c66/DSPF_sp_maxval_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_maxval/c66/DSPF_sp_maxval_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_maxval/c66/DSPF_sp_maxval_d.c create mode 100644 ti/dsplib/src/DSPF_sp_maxval/c674/DSPF_sp_maxval.c create mode 100644 ti/dsplib/src/DSPF_sp_maxval/c674/DSPF_sp_maxval.h create mode 100644 ti/dsplib/src/DSPF_sp_maxval/c674/DSPF_sp_maxval_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_maxval/c674/DSPF_sp_maxval_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_maxval/c674/DSPF_sp_maxval_d.c create mode 100644 ti/dsplib/src/DSPF_sp_minerr/DSPF_sp_minerr.h create mode 100644 ti/dsplib/src/DSPF_sp_minerr/c66/DSPF_sp_minerr.c create mode 100644 ti/dsplib/src/DSPF_sp_minerr/c66/DSPF_sp_minerr.h create mode 100644 ti/dsplib/src/DSPF_sp_minerr/c66/DSPF_sp_minerr_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_minerr/c66/DSPF_sp_minerr_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_minerr/c66/DSPF_sp_minerr_d.c create mode 100644 ti/dsplib/src/DSPF_sp_minerr/c674/DSPF_sp_minerr.c create mode 100644 ti/dsplib/src/DSPF_sp_minerr/c674/DSPF_sp_minerr.h create mode 100644 ti/dsplib/src/DSPF_sp_minerr/c674/DSPF_sp_minerr_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_minerr/c674/DSPF_sp_minerr_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_minerr/c674/DSPF_sp_minerr_d.c create mode 100644 ti/dsplib/src/DSPF_sp_minval/DSPF_sp_minval.h create mode 100644 ti/dsplib/src/DSPF_sp_minval/c66/DSPF_sp_minval.c create mode 100644 ti/dsplib/src/DSPF_sp_minval/c66/DSPF_sp_minval.h create mode 100644 ti/dsplib/src/DSPF_sp_minval/c66/DSPF_sp_minval_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_minval/c66/DSPF_sp_minval_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_minval/c66/DSPF_sp_minval_d.c create mode 100644 ti/dsplib/src/DSPF_sp_minval/c674/DSPF_sp_minval.c create mode 100644 ti/dsplib/src/DSPF_sp_minval/c674/DSPF_sp_minval.h create mode 100644 ti/dsplib/src/DSPF_sp_minval/c674/DSPF_sp_minval_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_minval/c674/DSPF_sp_minval_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_minval/c674/DSPF_sp_minval_d.c create mode 100644 ti/dsplib/src/DSPF_sp_nrand/DSPF_sp_nrand.h create mode 100644 ti/dsplib/src/DSPF_sp_nrand/c66/DSPF_sp_nrand.c create mode 100644 ti/dsplib/src/DSPF_sp_nrand/c66/DSPF_sp_nrand.h create mode 100644 ti/dsplib/src/DSPF_sp_nrand/c66/DSPF_sp_nrand_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_nrand/c66/DSPF_sp_nrand_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_nrand/c66/DSPF_sp_nrand_d.c create mode 100644 ti/dsplib/src/DSPF_sp_nrand/c66/lnk.cmd create mode 100644 ti/dsplib/src/DSPF_sp_qrd/DSPF_sp_qrd.h create mode 100644 ti/dsplib/src/DSPF_sp_qrd/c66/DSPF_sp_qrd.c create mode 100644 ti/dsplib/src/DSPF_sp_qrd/c66/DSPF_sp_qrd.h create mode 100644 ti/dsplib/src/DSPF_sp_qrd/c66/DSPF_sp_qrd_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_qrd/c66/DSPF_sp_qrd_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_qrd/c66/DSPF_sp_qrd_d.c create mode 100644 ti/dsplib/src/DSPF_sp_qrd/c66/lnk.cmd create mode 100644 ti/dsplib/src/DSPF_sp_qrd_cmplx/DSPF_sp_qrd_cmplx.h create mode 100644 ti/dsplib/src/DSPF_sp_qrd_cmplx/c66/DSPF_sp_qrd_cmplx.c create mode 100644 ti/dsplib/src/DSPF_sp_qrd_cmplx/c66/DSPF_sp_qrd_cmplx.h create mode 100644 ti/dsplib/src/DSPF_sp_qrd_cmplx/c66/DSPF_sp_qrd_cmplx_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_qrd_cmplx/c66/DSPF_sp_qrd_cmplx_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_qrd_cmplx/c66/DSPF_sp_qrd_cmplx_d.c create mode 100644 ti/dsplib/src/DSPF_sp_qrd_cmplx/c66/lnk.cmd create mode 100644 ti/dsplib/src/DSPF_sp_svd/DSPF_sp_svd.h create mode 100644 ti/dsplib/src/DSPF_sp_svd/c66/DSPF_sp_svd.c create mode 100644 ti/dsplib/src/DSPF_sp_svd/c66/DSPF_sp_svd.h create mode 100644 ti/dsplib/src/DSPF_sp_svd/c66/DSPF_sp_svd_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_svd/c66/DSPF_sp_svd_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_svd/c66/DSPF_sp_svd_d.c create mode 100644 ti/dsplib/src/DSPF_sp_svd/c66/lnk.cmd create mode 100644 ti/dsplib/src/DSPF_sp_svd_cmplx/DSPF_sp_svd_cmplx.h create mode 100644 ti/dsplib/src/DSPF_sp_svd_cmplx/c66/DSPF_sp_svd_cmplx.c create mode 100644 ti/dsplib/src/DSPF_sp_svd_cmplx/c66/DSPF_sp_svd_cmplx.h create mode 100644 ti/dsplib/src/DSPF_sp_svd_cmplx/c66/DSPF_sp_svd_cmplx_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_svd_cmplx/c66/DSPF_sp_svd_cmplx_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_svd_cmplx/c66/DSPF_sp_svd_cmplx_d.c create mode 100644 ti/dsplib/src/DSPF_sp_svd_cmplx/c66/lnk.cmd create mode 100644 ti/dsplib/src/DSPF_sp_urand/DSPF_sp_urand.h create mode 100644 ti/dsplib/src/DSPF_sp_urand/c66/DSPF_sp_urand.c create mode 100644 ti/dsplib/src/DSPF_sp_urand/c66/DSPF_sp_urand.h create mode 100644 ti/dsplib/src/DSPF_sp_urand/c66/DSPF_sp_urand_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_urand/c66/DSPF_sp_urand_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_urand/c66/DSPF_sp_urand_d.c create mode 100644 ti/dsplib/src/DSPF_sp_urand/c66/lnk.cmd create mode 100644 ti/dsplib/src/DSPF_sp_vecadd/DSPF_sp_vecadd.h create mode 100644 ti/dsplib/src/DSPF_sp_vecadd/c66/DSPF_sp_vecadd.c create mode 100644 ti/dsplib/src/DSPF_sp_vecadd/c66/DSPF_sp_vecadd.h create mode 100644 ti/dsplib/src/DSPF_sp_vecadd/c66/DSPF_sp_vecadd_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_vecadd/c66/DSPF_sp_vecadd_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_vecadd/c66/DSPF_sp_vecadd_d.c create mode 100644 ti/dsplib/src/DSPF_sp_vecmul/DSPF_sp_vecmul.h create mode 100644 ti/dsplib/src/DSPF_sp_vecmul/c66/DSPF_sp_vecmul.c create mode 100644 ti/dsplib/src/DSPF_sp_vecmul/c66/DSPF_sp_vecmul.h create mode 100644 ti/dsplib/src/DSPF_sp_vecmul/c66/DSPF_sp_vecmul_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_vecmul/c66/DSPF_sp_vecmul_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_vecmul/c66/DSPF_sp_vecmul_d.c create mode 100644 ti/dsplib/src/DSPF_sp_vecmul/c674/DSPF_sp_vecmul.c create mode 100644 ti/dsplib/src/DSPF_sp_vecmul/c674/DSPF_sp_vecmul.h create mode 100644 ti/dsplib/src/DSPF_sp_vecmul/c674/DSPF_sp_vecmul_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_vecmul/c674/DSPF_sp_vecmul_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_vecmul/c674/DSPF_sp_vecmul_d.c create mode 100644 ti/dsplib/src/DSPF_sp_vecrecip/DSPF_sp_vecrecip.h create mode 100644 ti/dsplib/src/DSPF_sp_vecrecip/c66/DSPF_sp_vecrecip.c create mode 100644 ti/dsplib/src/DSPF_sp_vecrecip/c66/DSPF_sp_vecrecip.h create mode 100644 ti/dsplib/src/DSPF_sp_vecrecip/c66/DSPF_sp_vecrecip_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_vecrecip/c66/DSPF_sp_vecrecip_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_vecrecip/c66/DSPF_sp_vecrecip_d.c create mode 100644 ti/dsplib/src/DSPF_sp_vecrecip/c674/DSPF_sp_vecrecip.c create mode 100644 ti/dsplib/src/DSPF_sp_vecrecip/c674/DSPF_sp_vecrecip.h create mode 100644 ti/dsplib/src/DSPF_sp_vecrecip/c674/DSPF_sp_vecrecip_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_vecrecip/c674/DSPF_sp_vecrecip_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_vecrecip/c674/DSPF_sp_vecrecip_d.c create mode 100644 ti/dsplib/src/DSPF_sp_vecsum_sq/DSPF_sp_vecsum_sq.h create mode 100644 ti/dsplib/src/DSPF_sp_vecsum_sq/c66/DSPF_sp_vecsum_sq.c create mode 100644 ti/dsplib/src/DSPF_sp_vecsum_sq/c66/DSPF_sp_vecsum_sq.h create mode 100644 ti/dsplib/src/DSPF_sp_vecsum_sq/c66/DSPF_sp_vecsum_sq_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_vecsum_sq/c66/DSPF_sp_vecsum_sq_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_vecsum_sq/c66/DSPF_sp_vecsum_sq_d.c create mode 100644 ti/dsplib/src/DSPF_sp_vecsum_sq/c674/DSPF_sp_vecsum_sq.c create mode 100644 ti/dsplib/src/DSPF_sp_vecsum_sq/c674/DSPF_sp_vecsum_sq.h create mode 100644 ti/dsplib/src/DSPF_sp_vecsum_sq/c674/DSPF_sp_vecsum_sq_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_vecsum_sq/c674/DSPF_sp_vecsum_sq_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_vecsum_sq/c674/DSPF_sp_vecsum_sq_d.c create mode 100644 ti/dsplib/src/DSPF_sp_w_vec/DSPF_sp_w_vec.h create mode 100644 ti/dsplib/src/DSPF_sp_w_vec/c66/DSPF_sp_w_vec.c create mode 100644 ti/dsplib/src/DSPF_sp_w_vec/c66/DSPF_sp_w_vec.h create mode 100644 ti/dsplib/src/DSPF_sp_w_vec/c66/DSPF_sp_w_vec_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_w_vec/c66/DSPF_sp_w_vec_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_w_vec/c66/DSPF_sp_w_vec_d.c create mode 100644 ti/dsplib/src/DSPF_sp_w_vec/c674/DSPF_sp_w_vec.c create mode 100644 ti/dsplib/src/DSPF_sp_w_vec/c674/DSPF_sp_w_vec.h create mode 100644 ti/dsplib/src/DSPF_sp_w_vec/c674/DSPF_sp_w_vec_cn.c create mode 100644 ti/dsplib/src/DSPF_sp_w_vec/c674/DSPF_sp_w_vec_cn.h create mode 100644 ti/dsplib/src/DSPF_sp_w_vec/c674/DSPF_sp_w_vec_d.c create mode 100644 ti/dsplib/src/DSP_add16/DSP_add16.h create mode 100644 ti/dsplib/src/DSP_add16/c64P/DSP_add16.c create mode 100644 ti/dsplib/src/DSP_add16/c64P/DSP_add16.h create mode 100644 ti/dsplib/src/DSP_add16/c64P/DSP_add16_cn.c create mode 100644 ti/dsplib/src/DSP_add16/c64P/DSP_add16_cn.h create mode 100644 ti/dsplib/src/DSP_add16/c64P/DSP_add16_d.c create mode 100644 ti/dsplib/src/DSP_add16/c66/DSP_add16.c create mode 100644 ti/dsplib/src/DSP_add16/c66/DSP_add16.h create mode 100644 ti/dsplib/src/DSP_add16/c66/DSP_add16_cn.c create mode 100644 ti/dsplib/src/DSP_add16/c66/DSP_add16_cn.h create mode 100644 ti/dsplib/src/DSP_add16/c66/DSP_add16_d.c create mode 100644 ti/dsplib/src/DSP_add32/DSP_add32.h create mode 100644 ti/dsplib/src/DSP_add32/c64P/DSP_add32.c create mode 100644 ti/dsplib/src/DSP_add32/c64P/DSP_add32.h create mode 100644 ti/dsplib/src/DSP_add32/c64P/DSP_add32_cn.c create mode 100644 ti/dsplib/src/DSP_add32/c64P/DSP_add32_cn.h create mode 100644 ti/dsplib/src/DSP_add32/c64P/DSP_add32_d.c create mode 100644 ti/dsplib/src/DSP_add32/c66/DSP_add32.c create mode 100644 ti/dsplib/src/DSP_add32/c66/DSP_add32.h create mode 100644 ti/dsplib/src/DSP_add32/c66/DSP_add32_cn.c create mode 100644 ti/dsplib/src/DSP_add32/c66/DSP_add32_cn.h create mode 100644 ti/dsplib/src/DSP_add32/c66/DSP_add32_d.c create mode 100644 ti/dsplib/src/DSP_autocor/DSP_autocor.h create mode 100644 ti/dsplib/src/DSP_autocor/c64P/DSP_autocor.c create mode 100644 ti/dsplib/src/DSP_autocor/c64P/DSP_autocor.h create mode 100644 ti/dsplib/src/DSP_autocor/c64P/DSP_autocor_cn.c create mode 100644 ti/dsplib/src/DSP_autocor/c64P/DSP_autocor_cn.h create mode 100644 ti/dsplib/src/DSP_autocor/c64P/DSP_autocor_d.c create mode 100644 ti/dsplib/src/DSP_autocor/c66/DSP_autocor.c create mode 100644 ti/dsplib/src/DSP_autocor/c66/DSP_autocor.h create mode 100644 ti/dsplib/src/DSP_autocor/c66/DSP_autocor_cn.c create mode 100644 ti/dsplib/src/DSP_autocor/c66/DSP_autocor_cn.h create mode 100644 ti/dsplib/src/DSP_autocor/c66/DSP_autocor_d.c create mode 100644 ti/dsplib/src/DSP_bexp/DSP_bexp.h create mode 100644 ti/dsplib/src/DSP_bexp/c64P/DSP_bexp.c create mode 100644 ti/dsplib/src/DSP_bexp/c64P/DSP_bexp.h create mode 100644 ti/dsplib/src/DSP_bexp/c64P/DSP_bexp_cn.c create mode 100644 ti/dsplib/src/DSP_bexp/c64P/DSP_bexp_cn.h create mode 100644 ti/dsplib/src/DSP_bexp/c64P/DSP_bexp_d.c create mode 100644 ti/dsplib/src/DSP_bexp/c66/DSP_bexp.c create mode 100644 ti/dsplib/src/DSP_bexp/c66/DSP_bexp.h create mode 100644 ti/dsplib/src/DSP_bexp/c66/DSP_bexp_cn.c create mode 100644 ti/dsplib/src/DSP_bexp/c66/DSP_bexp_cn.h create mode 100644 ti/dsplib/src/DSP_bexp/c66/DSP_bexp_d.c create mode 100644 ti/dsplib/src/DSP_blk_eswap16/DSP_blk_eswap16.h create mode 100644 ti/dsplib/src/DSP_blk_eswap16/c64P/DSP_blk_eswap16.c create mode 100644 ti/dsplib/src/DSP_blk_eswap16/c64P/DSP_blk_eswap16.h create mode 100644 ti/dsplib/src/DSP_blk_eswap16/c64P/DSP_blk_eswap16_cn.c create mode 100644 ti/dsplib/src/DSP_blk_eswap16/c64P/DSP_blk_eswap16_cn.h create mode 100644 ti/dsplib/src/DSP_blk_eswap16/c64P/DSP_blk_eswap16_d.c create mode 100644 ti/dsplib/src/DSP_blk_eswap16/c66/DSP_blk_eswap16.c create mode 100644 ti/dsplib/src/DSP_blk_eswap16/c66/DSP_blk_eswap16.h create mode 100644 ti/dsplib/src/DSP_blk_eswap16/c66/DSP_blk_eswap16_cn.c create mode 100644 ti/dsplib/src/DSP_blk_eswap16/c66/DSP_blk_eswap16_cn.h create mode 100644 ti/dsplib/src/DSP_blk_eswap16/c66/DSP_blk_eswap16_d.c create mode 100644 ti/dsplib/src/DSP_blk_eswap32/DSP_blk_eswap32.h create mode 100644 ti/dsplib/src/DSP_blk_eswap32/c64P/DSP_blk_eswap32.c create mode 100644 ti/dsplib/src/DSP_blk_eswap32/c64P/DSP_blk_eswap32.h create mode 100644 ti/dsplib/src/DSP_blk_eswap32/c64P/DSP_blk_eswap32_cn.c create mode 100644 ti/dsplib/src/DSP_blk_eswap32/c64P/DSP_blk_eswap32_cn.h create mode 100644 ti/dsplib/src/DSP_blk_eswap32/c64P/DSP_blk_eswap32_d.c create mode 100644 ti/dsplib/src/DSP_blk_eswap32/c66/DSP_blk_eswap32.c create mode 100644 ti/dsplib/src/DSP_blk_eswap32/c66/DSP_blk_eswap32.h create mode 100644 ti/dsplib/src/DSP_blk_eswap32/c66/DSP_blk_eswap32_cn.c create mode 100644 ti/dsplib/src/DSP_blk_eswap32/c66/DSP_blk_eswap32_cn.h create mode 100644 ti/dsplib/src/DSP_blk_eswap32/c66/DSP_blk_eswap32_d.c create mode 100644 ti/dsplib/src/DSP_blk_eswap64/DSP_blk_eswap64.h create mode 100644 ti/dsplib/src/DSP_blk_eswap64/c64P/DSP_blk_eswap64.c create mode 100644 ti/dsplib/src/DSP_blk_eswap64/c64P/DSP_blk_eswap64.h create mode 100644 ti/dsplib/src/DSP_blk_eswap64/c64P/DSP_blk_eswap64_cn.c create mode 100644 ti/dsplib/src/DSP_blk_eswap64/c64P/DSP_blk_eswap64_cn.h create mode 100644 ti/dsplib/src/DSP_blk_eswap64/c64P/DSP_blk_eswap64_d.c create mode 100644 ti/dsplib/src/DSP_blk_eswap64/c66/DSP_blk_eswap64.c create mode 100644 ti/dsplib/src/DSP_blk_eswap64/c66/DSP_blk_eswap64.h create mode 100644 ti/dsplib/src/DSP_blk_eswap64/c66/DSP_blk_eswap64_cn.c create mode 100644 ti/dsplib/src/DSP_blk_eswap64/c66/DSP_blk_eswap64_cn.h create mode 100644 ti/dsplib/src/DSP_blk_eswap64/c66/DSP_blk_eswap64_d.c create mode 100644 ti/dsplib/src/DSP_blk_move/DSP_blk_move.h create mode 100644 ti/dsplib/src/DSP_blk_move/c64P/DSP_blk_move.c create mode 100644 ti/dsplib/src/DSP_blk_move/c64P/DSP_blk_move.h create mode 100644 ti/dsplib/src/DSP_blk_move/c64P/DSP_blk_move_cn.c create mode 100644 ti/dsplib/src/DSP_blk_move/c64P/DSP_blk_move_cn.h create mode 100644 ti/dsplib/src/DSP_blk_move/c64P/DSP_blk_move_d.c create mode 100644 ti/dsplib/src/DSP_blk_move/c66/DSP_blk_move.c create mode 100644 ti/dsplib/src/DSP_blk_move/c66/DSP_blk_move.h create mode 100644 ti/dsplib/src/DSP_blk_move/c66/DSP_blk_move_cn.c create mode 100644 ti/dsplib/src/DSP_blk_move/c66/DSP_blk_move_cn.h create mode 100644 ti/dsplib/src/DSP_blk_move/c66/DSP_blk_move_d.c create mode 100644 ti/dsplib/src/DSP_dotp_sqr/DSP_dotp_sqr.h create mode 100644 ti/dsplib/src/DSP_dotp_sqr/c64P/DSP_dotp_sqr.c create mode 100644 ti/dsplib/src/DSP_dotp_sqr/c64P/DSP_dotp_sqr.h create mode 100644 ti/dsplib/src/DSP_dotp_sqr/c64P/DSP_dotp_sqr_cn.c create mode 100644 ti/dsplib/src/DSP_dotp_sqr/c64P/DSP_dotp_sqr_cn.h create mode 100644 ti/dsplib/src/DSP_dotp_sqr/c64P/DSP_dotp_sqr_d.c create mode 100644 ti/dsplib/src/DSP_dotp_sqr/c66/DSP_dotp_sqr.c create mode 100644 ti/dsplib/src/DSP_dotp_sqr/c66/DSP_dotp_sqr.h create mode 100644 ti/dsplib/src/DSP_dotp_sqr/c66/DSP_dotp_sqr_cn.c create mode 100644 ti/dsplib/src/DSP_dotp_sqr/c66/DSP_dotp_sqr_cn.h create mode 100644 ti/dsplib/src/DSP_dotp_sqr/c66/DSP_dotp_sqr_d.c create mode 100644 ti/dsplib/src/DSP_dotprod/DSP_dotprod.h create mode 100644 ti/dsplib/src/DSP_dotprod/c64P/DSP_dotprod.c create mode 100644 ti/dsplib/src/DSP_dotprod/c64P/DSP_dotprod.h create mode 100644 ti/dsplib/src/DSP_dotprod/c64P/DSP_dotprod_cn.c create mode 100644 ti/dsplib/src/DSP_dotprod/c64P/DSP_dotprod_cn.h create mode 100644 ti/dsplib/src/DSP_dotprod/c64P/DSP_dotprod_d.c create mode 100644 ti/dsplib/src/DSP_dotprod/c66/DSP_dotprod.c create mode 100644 ti/dsplib/src/DSP_dotprod/c66/DSP_dotprod.h create mode 100644 ti/dsplib/src/DSP_dotprod/c66/DSP_dotprod_cn.c create mode 100644 ti/dsplib/src/DSP_dotprod/c66/DSP_dotprod_cn.h create mode 100644 ti/dsplib/src/DSP_dotprod/c66/DSP_dotprod_d.c create mode 100644 ti/dsplib/src/DSP_fft16x16/DSP_fft16x16.h create mode 100644 ti/dsplib/src/DSP_fft16x16/c64P/DSP_fft16x16.h create mode 100644 ti/dsplib/src/DSP_fft16x16/c64P/DSP_fft16x16_cn.c create mode 100644 ti/dsplib/src/DSP_fft16x16/c64P/DSP_fft16x16_cn.h create mode 100644 ti/dsplib/src/DSP_fft16x16/c64P/DSP_fft16x16_d.c create mode 100644 ti/dsplib/src/DSP_fft16x16/c64P/DSP_fft16x16_i.c create mode 100644 ti/dsplib/src/DSP_fft16x16/c64P/DSP_fft16x16_i.h create mode 100644 ti/dsplib/src/DSP_fft16x16/c64P/DSP_fft16x16_sa.sa create mode 100644 ti/dsplib/src/DSP_fft16x16/c64P/gen_twiddle_fft16x16.c create mode 100644 ti/dsplib/src/DSP_fft16x16/c64P/gen_twiddle_fft16x16.h create mode 100644 ti/dsplib/src/DSP_fft16x16/c66/DSP_fft16x16.c create mode 100644 ti/dsplib/src/DSP_fft16x16/c66/DSP_fft16x16.h create mode 100644 ti/dsplib/src/DSP_fft16x16/c66/DSP_fft16x16_cn.c create mode 100644 ti/dsplib/src/DSP_fft16x16/c66/DSP_fft16x16_cn.h create mode 100644 ti/dsplib/src/DSP_fft16x16/c66/DSP_fft16x16_d.c create mode 100644 ti/dsplib/src/DSP_fft16x16/c66/gen_twiddle_fft16x16.c create mode 100644 ti/dsplib/src/DSP_fft16x16/c66/gen_twiddle_fft16x16.h create mode 100644 ti/dsplib/src/DSP_fft16x16_imre/DSP_fft16x16_imre.h create mode 100644 ti/dsplib/src/DSP_fft16x16_imre/c64P/DSP_fft16x16_imre.h create mode 100644 ti/dsplib/src/DSP_fft16x16_imre/c64P/DSP_fft16x16_imre_cn.c create mode 100644 ti/dsplib/src/DSP_fft16x16_imre/c64P/DSP_fft16x16_imre_cn.h create mode 100644 ti/dsplib/src/DSP_fft16x16_imre/c64P/DSP_fft16x16_imre_d.c create mode 100644 ti/dsplib/src/DSP_fft16x16_imre/c64P/DSP_fft16x16_imre_i.c create mode 100644 ti/dsplib/src/DSP_fft16x16_imre/c64P/DSP_fft16x16_imre_i.h create mode 100644 ti/dsplib/src/DSP_fft16x16_imre/c64P/DSP_fft16x16_imre_sa.sa create mode 100644 ti/dsplib/src/DSP_fft16x16_imre/c64P/gen_twiddle_fft16x16_imre.c create mode 100644 ti/dsplib/src/DSP_fft16x16_imre/c64P/gen_twiddle_fft16x16_imre.h create mode 100644 ti/dsplib/src/DSP_fft16x16_imre/c66/DSP_fft16x16_imre.c create mode 100644 ti/dsplib/src/DSP_fft16x16_imre/c66/DSP_fft16x16_imre.h create mode 100644 ti/dsplib/src/DSP_fft16x16_imre/c66/DSP_fft16x16_imre_cn.c create mode 100644 ti/dsplib/src/DSP_fft16x16_imre/c66/DSP_fft16x16_imre_cn.h create mode 100644 ti/dsplib/src/DSP_fft16x16_imre/c66/DSP_fft16x16_imre_d.c create mode 100644 ti/dsplib/src/DSP_fft16x16_imre/c66/gen_twiddle_fft16x16_imre.c create mode 100644 ti/dsplib/src/DSP_fft16x16_imre/c66/gen_twiddle_fft16x16_imre.h create mode 100644 ti/dsplib/src/DSP_fft16x16r/DSP_fft16x16r.h create mode 100644 ti/dsplib/src/DSP_fft16x16r/c64P/DSP_fft16x16r.bak create mode 100644 ti/dsplib/src/DSP_fft16x16r/c64P/DSP_fft16x16r.h create mode 100644 ti/dsplib/src/DSP_fft16x16r/c64P/DSP_fft16x16r_cn.c create mode 100644 ti/dsplib/src/DSP_fft16x16r/c64P/DSP_fft16x16r_cn.h create mode 100644 ti/dsplib/src/DSP_fft16x16r/c64P/DSP_fft16x16r_d.c create mode 100644 ti/dsplib/src/DSP_fft16x16r/c64P/DSP_fft16x16r_i.c create mode 100644 ti/dsplib/src/DSP_fft16x16r/c64P/DSP_fft16x16r_i.h create mode 100644 ti/dsplib/src/DSP_fft16x16r/c64P/DSP_fft16x16r_sa.sa create mode 100644 ti/dsplib/src/DSP_fft16x16r/c64P/gen_twiddle_fft16x16.c create mode 100644 ti/dsplib/src/DSP_fft16x16r/c64P/gen_twiddle_fft16x16.h create mode 100644 ti/dsplib/src/DSP_fft16x16r/c66/DSP_fft16x16r.c create mode 100644 ti/dsplib/src/DSP_fft16x16r/c66/DSP_fft16x16r.h create mode 100644 ti/dsplib/src/DSP_fft16x16r/c66/DSP_fft16x16r_cn.c create mode 100644 ti/dsplib/src/DSP_fft16x16r/c66/DSP_fft16x16r_cn.h create mode 100644 ti/dsplib/src/DSP_fft16x16r/c66/DSP_fft16x16r_d.c create mode 100644 ti/dsplib/src/DSP_fft16x16r/c66/gen_twiddle_fft16x16r.c create mode 100644 ti/dsplib/src/DSP_fft16x16r/c66/gen_twiddle_fft16x16r.h create mode 100644 ti/dsplib/src/DSP_fft16x32/DSP_fft16x32.h create mode 100644 ti/dsplib/src/DSP_fft16x32/c64P/DSP_fft16x32.h create mode 100644 ti/dsplib/src/DSP_fft16x32/c64P/DSP_fft16x32_cn.c create mode 100644 ti/dsplib/src/DSP_fft16x32/c64P/DSP_fft16x32_cn.h create mode 100644 ti/dsplib/src/DSP_fft16x32/c64P/DSP_fft16x32_d.c create mode 100644 ti/dsplib/src/DSP_fft16x32/c64P/DSP_fft16x32_i.c create mode 100644 ti/dsplib/src/DSP_fft16x32/c64P/DSP_fft16x32_i.h create mode 100644 ti/dsplib/src/DSP_fft16x32/c64P/DSP_fft16x32_sa.sa create mode 100644 ti/dsplib/src/DSP_fft16x32/c64P/gen_twiddle_fft16x32.c create mode 100644 ti/dsplib/src/DSP_fft16x32/c64P/gen_twiddle_fft16x32.h create mode 100644 ti/dsplib/src/DSP_fft16x32/c66/DSP_fft16x32.c create mode 100644 ti/dsplib/src/DSP_fft16x32/c66/DSP_fft16x32.h create mode 100644 ti/dsplib/src/DSP_fft16x32/c66/DSP_fft16x32_cn.c create mode 100644 ti/dsplib/src/DSP_fft16x32/c66/DSP_fft16x32_cn.h create mode 100644 ti/dsplib/src/DSP_fft16x32/c66/DSP_fft16x32_d.c create mode 100644 ti/dsplib/src/DSP_fft16x32/c66/gen_twiddle_fft16x32.c create mode 100644 ti/dsplib/src/DSP_fft16x32/c66/gen_twiddle_fft16x32.h create mode 100644 ti/dsplib/src/DSP_fft32x32/DSP_fft32x32.h create mode 100644 ti/dsplib/src/DSP_fft32x32/c64P/DSP_fft32x32.h create mode 100644 ti/dsplib/src/DSP_fft32x32/c64P/DSP_fft32x32_cn.c create mode 100644 ti/dsplib/src/DSP_fft32x32/c64P/DSP_fft32x32_cn.h create mode 100644 ti/dsplib/src/DSP_fft32x32/c64P/DSP_fft32x32_d.c create mode 100644 ti/dsplib/src/DSP_fft32x32/c64P/DSP_fft32x32_i.c create mode 100644 ti/dsplib/src/DSP_fft32x32/c64P/DSP_fft32x32_i.h create mode 100644 ti/dsplib/src/DSP_fft32x32/c64P/DSP_fft32x32_sa.sa create mode 100644 ti/dsplib/src/DSP_fft32x32/c64P/gen_twiddle_fft32x32.c create mode 100644 ti/dsplib/src/DSP_fft32x32/c64P/gen_twiddle_fft32x32.h create mode 100644 ti/dsplib/src/DSP_fft32x32/c66/DSP_fft32x32.c create mode 100644 ti/dsplib/src/DSP_fft32x32/c66/DSP_fft32x32.h create mode 100644 ti/dsplib/src/DSP_fft32x32/c66/DSP_fft32x32_cn.c create mode 100644 ti/dsplib/src/DSP_fft32x32/c66/DSP_fft32x32_cn.h create mode 100644 ti/dsplib/src/DSP_fft32x32/c66/DSP_fft32x32_d.c create mode 100644 ti/dsplib/src/DSP_fft32x32/c66/gen_twiddle_fft32x32.c create mode 100644 ti/dsplib/src/DSP_fft32x32/c66/gen_twiddle_fft32x32.h create mode 100644 ti/dsplib/src/DSP_fft32x32s/DSP_fft32x32s.h create mode 100644 ti/dsplib/src/DSP_fft32x32s/c64P/DSP_fft32x32s.h create mode 100644 ti/dsplib/src/DSP_fft32x32s/c64P/DSP_fft32x32s_cn.c create mode 100644 ti/dsplib/src/DSP_fft32x32s/c64P/DSP_fft32x32s_cn.h create mode 100644 ti/dsplib/src/DSP_fft32x32s/c64P/DSP_fft32x32s_d.c create mode 100644 ti/dsplib/src/DSP_fft32x32s/c64P/DSP_fft32x32s_i.c create mode 100644 ti/dsplib/src/DSP_fft32x32s/c64P/DSP_fft32x32s_i.h create mode 100644 ti/dsplib/src/DSP_fft32x32s/c64P/DSP_fft32x32s_sa.sa create mode 100644 ti/dsplib/src/DSP_fft32x32s/c64P/gen_twiddle_fft32x32.c create mode 100644 ti/dsplib/src/DSP_fft32x32s/c64P/gen_twiddle_fft32x32.h create mode 100644 ti/dsplib/src/DSP_fft32x32s/c66/DSP_fft32x32s.c create mode 100644 ti/dsplib/src/DSP_fft32x32s/c66/DSP_fft32x32s.h create mode 100644 ti/dsplib/src/DSP_fft32x32s/c66/DSP_fft32x32s_cn.c create mode 100644 ti/dsplib/src/DSP_fft32x32s/c66/DSP_fft32x32s_cn.h create mode 100644 ti/dsplib/src/DSP_fft32x32s/c66/DSP_fft32x32s_d.c create mode 100644 ti/dsplib/src/DSP_fft32x32s/c66/gen_twiddle_fft32x32s.c create mode 100644 ti/dsplib/src/DSP_fft32x32s/c66/gen_twiddle_fft32x32s.h create mode 100644 ti/dsplib/src/DSP_fir_cplx/DSP_fir_cplx.h create mode 100644 ti/dsplib/src/DSP_fir_cplx/c64P/DSP_fir_cplx.c create mode 100644 ti/dsplib/src/DSP_fir_cplx/c64P/DSP_fir_cplx.h create mode 100644 ti/dsplib/src/DSP_fir_cplx/c64P/DSP_fir_cplx_cn.c create mode 100644 ti/dsplib/src/DSP_fir_cplx/c64P/DSP_fir_cplx_cn.h create mode 100644 ti/dsplib/src/DSP_fir_cplx/c64P/DSP_fir_cplx_d.c create mode 100644 ti/dsplib/src/DSP_fir_cplx/c66/DSP_fir_cplx.c create mode 100644 ti/dsplib/src/DSP_fir_cplx/c66/DSP_fir_cplx.h create mode 100644 ti/dsplib/src/DSP_fir_cplx/c66/DSP_fir_cplx_cn.c create mode 100644 ti/dsplib/src/DSP_fir_cplx/c66/DSP_fir_cplx_cn.h create mode 100644 ti/dsplib/src/DSP_fir_cplx/c66/DSP_fir_cplx_d.c create mode 100644 ti/dsplib/src/DSP_fir_cplx_hM4X4/DSP_fir_cplx_hM4X4.h create mode 100644 ti/dsplib/src/DSP_fir_cplx_hM4X4/c64P/DSP_fir_cplx_hM4X4.c create mode 100644 ti/dsplib/src/DSP_fir_cplx_hM4X4/c64P/DSP_fir_cplx_hM4X4.h create mode 100644 ti/dsplib/src/DSP_fir_cplx_hM4X4/c64P/DSP_fir_cplx_hM4X4_cn.c create mode 100644 ti/dsplib/src/DSP_fir_cplx_hM4X4/c64P/DSP_fir_cplx_hM4X4_cn.h create mode 100644 ti/dsplib/src/DSP_fir_cplx_hM4X4/c64P/DSP_fir_cplx_hM4X4_d.c create mode 100644 ti/dsplib/src/DSP_fir_cplx_hM4X4/c66/DSP_fir_cplx_hM4X4.c create mode 100644 ti/dsplib/src/DSP_fir_cplx_hM4X4/c66/DSP_fir_cplx_hM4X4.h create mode 100644 ti/dsplib/src/DSP_fir_cplx_hM4X4/c66/DSP_fir_cplx_hM4X4_cn.c create mode 100644 ti/dsplib/src/DSP_fir_cplx_hM4X4/c66/DSP_fir_cplx_hM4X4_cn.h create mode 100644 ti/dsplib/src/DSP_fir_cplx_hM4X4/c66/DSP_fir_cplx_hM4X4_d.c create mode 100644 ti/dsplib/src/DSP_fir_gen/DSP_fir_gen.h create mode 100644 ti/dsplib/src/DSP_fir_gen/c64P/DSP_fir_gen.c create mode 100644 ti/dsplib/src/DSP_fir_gen/c64P/DSP_fir_gen.h create mode 100644 ti/dsplib/src/DSP_fir_gen/c64P/DSP_fir_gen_cn.c create mode 100644 ti/dsplib/src/DSP_fir_gen/c64P/DSP_fir_gen_cn.h create mode 100644 ti/dsplib/src/DSP_fir_gen/c64P/DSP_fir_gen_d.c create mode 100644 ti/dsplib/src/DSP_fir_gen/c66/DSP_fir_gen.c create mode 100644 ti/dsplib/src/DSP_fir_gen/c66/DSP_fir_gen.h create mode 100644 ti/dsplib/src/DSP_fir_gen/c66/DSP_fir_gen_cn.c create mode 100644 ti/dsplib/src/DSP_fir_gen/c66/DSP_fir_gen_cn.h create mode 100644 ti/dsplib/src/DSP_fir_gen/c66/DSP_fir_gen_d.c create mode 100644 ti/dsplib/src/DSP_fir_gen_hM17_rA8X8/DSP_fir_gen_hM17_rA8X8.h create mode 100644 ti/dsplib/src/DSP_fir_gen_hM17_rA8X8/c64P/DSP_fir_gen_hM17_rA8X8.c create mode 100644 ti/dsplib/src/DSP_fir_gen_hM17_rA8X8/c64P/DSP_fir_gen_hM17_rA8X8.h create mode 100644 ti/dsplib/src/DSP_fir_gen_hM17_rA8X8/c64P/DSP_fir_gen_hM17_rA8X8_cn.c create mode 100644 ti/dsplib/src/DSP_fir_gen_hM17_rA8X8/c64P/DSP_fir_gen_hM17_rA8X8_cn.h create mode 100644 ti/dsplib/src/DSP_fir_gen_hM17_rA8X8/c64P/DSP_fir_gen_hM17_rA8X8_d.c create mode 100644 ti/dsplib/src/DSP_fir_gen_hM17_rA8X8/c66/DSP_fir_gen_hM17_rA8X8.c create mode 100644 ti/dsplib/src/DSP_fir_gen_hM17_rA8X8/c66/DSP_fir_gen_hM17_rA8X8.h create mode 100644 ti/dsplib/src/DSP_fir_gen_hM17_rA8X8/c66/DSP_fir_gen_hM17_rA8X8_cn.c create mode 100644 ti/dsplib/src/DSP_fir_gen_hM17_rA8X8/c66/DSP_fir_gen_hM17_rA8X8_cn.h create mode 100644 ti/dsplib/src/DSP_fir_gen_hM17_rA8X8/c66/DSP_fir_gen_hM17_rA8X8_d.c create mode 100644 ti/dsplib/src/DSP_fir_r4/DSP_fir_r4.h create mode 100644 ti/dsplib/src/DSP_fir_r4/c64P/DSP_fir_r4.c create mode 100644 ti/dsplib/src/DSP_fir_r4/c64P/DSP_fir_r4.h create mode 100644 ti/dsplib/src/DSP_fir_r4/c64P/DSP_fir_r4_cn.c create mode 100644 ti/dsplib/src/DSP_fir_r4/c64P/DSP_fir_r4_cn.h create mode 100644 ti/dsplib/src/DSP_fir_r4/c64P/DSP_fir_r4_d.c create mode 100644 ti/dsplib/src/DSP_fir_r4/c66/DSP_fir_r4.c create mode 100644 ti/dsplib/src/DSP_fir_r4/c66/DSP_fir_r4.h create mode 100644 ti/dsplib/src/DSP_fir_r4/c66/DSP_fir_r4_cn.c create mode 100644 ti/dsplib/src/DSP_fir_r4/c66/DSP_fir_r4_cn.h create mode 100644 ti/dsplib/src/DSP_fir_r4/c66/DSP_fir_r4_d.c create mode 100644 ti/dsplib/src/DSP_fir_r8/DSP_fir_r8.h create mode 100644 ti/dsplib/src/DSP_fir_r8/c64P/DSP_fir_r8.c create mode 100644 ti/dsplib/src/DSP_fir_r8/c64P/DSP_fir_r8.h create mode 100644 ti/dsplib/src/DSP_fir_r8/c64P/DSP_fir_r8_cn.c create mode 100644 ti/dsplib/src/DSP_fir_r8/c64P/DSP_fir_r8_cn.h create mode 100644 ti/dsplib/src/DSP_fir_r8/c64P/DSP_fir_r8_d.c create mode 100644 ti/dsplib/src/DSP_fir_r8/c66/DSP_fir_r8.c create mode 100644 ti/dsplib/src/DSP_fir_r8/c66/DSP_fir_r8.h create mode 100644 ti/dsplib/src/DSP_fir_r8/c66/DSP_fir_r8_cn.c create mode 100644 ti/dsplib/src/DSP_fir_r8/c66/DSP_fir_r8_cn.h create mode 100644 ti/dsplib/src/DSP_fir_r8/c66/DSP_fir_r8_d.c create mode 100644 ti/dsplib/src/DSP_fir_r8_h16/DSP_fir_r8_h16.h create mode 100644 ti/dsplib/src/DSP_fir_r8_h16/c66/DSP_fir_r8_h16.c create mode 100644 ti/dsplib/src/DSP_fir_r8_h16/c66/DSP_fir_r8_h16.h create mode 100644 ti/dsplib/src/DSP_fir_r8_h16/c66/DSP_fir_r8_h16_cn.c create mode 100644 ti/dsplib/src/DSP_fir_r8_h16/c66/DSP_fir_r8_h16_cn.h create mode 100644 ti/dsplib/src/DSP_fir_r8_h16/c66/DSP_fir_r8_h16_d.c create mode 100644 ti/dsplib/src/DSP_fir_r8_h16/c674/DSP_fir_r8_h16.c create mode 100644 ti/dsplib/src/DSP_fir_r8_h16/c674/DSP_fir_r8_h16.h create mode 100644 ti/dsplib/src/DSP_fir_r8_h16/c674/DSP_fir_r8_h16_cn.c create mode 100644 ti/dsplib/src/DSP_fir_r8_h16/c674/DSP_fir_r8_h16_cn.h create mode 100644 ti/dsplib/src/DSP_fir_r8_h16/c674/DSP_fir_r8_h16_d.c create mode 100644 ti/dsplib/src/DSP_fir_r8_h24/DSP_fir_r8_h24.h create mode 100644 ti/dsplib/src/DSP_fir_r8_h24/c66/DSP_fir_r8_h24.c create mode 100644 ti/dsplib/src/DSP_fir_r8_h24/c66/DSP_fir_r8_h24.h create mode 100644 ti/dsplib/src/DSP_fir_r8_h24/c66/DSP_fir_r8_h24_cn.c create mode 100644 ti/dsplib/src/DSP_fir_r8_h24/c66/DSP_fir_r8_h24_cn.h create mode 100644 ti/dsplib/src/DSP_fir_r8_h24/c66/DSP_fir_r8_h24_d.c create mode 100644 ti/dsplib/src/DSP_fir_r8_h24/c674/DSP_fir_r8_h24.c create mode 100644 ti/dsplib/src/DSP_fir_r8_h24/c674/DSP_fir_r8_h24.h create mode 100644 ti/dsplib/src/DSP_fir_r8_h24/c674/DSP_fir_r8_h24_cn.c create mode 100644 ti/dsplib/src/DSP_fir_r8_h24/c674/DSP_fir_r8_h24_cn.h create mode 100644 ti/dsplib/src/DSP_fir_r8_h24/c674/DSP_fir_r8_h24_d.c create mode 100644 ti/dsplib/src/DSP_fir_r8_h8/DSP_fir_r8_h8.h create mode 100644 ti/dsplib/src/DSP_fir_r8_h8/c66/DSP_fir_r8_h8.c create mode 100644 ti/dsplib/src/DSP_fir_r8_h8/c66/DSP_fir_r8_h8.h create mode 100644 ti/dsplib/src/DSP_fir_r8_h8/c66/DSP_fir_r8_h8_cn.c create mode 100644 ti/dsplib/src/DSP_fir_r8_h8/c66/DSP_fir_r8_h8_cn.h create mode 100644 ti/dsplib/src/DSP_fir_r8_h8/c66/DSP_fir_r8_h8_d.c create mode 100644 ti/dsplib/src/DSP_fir_r8_h8/c674/DSP_fir_r8_h8.c create mode 100644 ti/dsplib/src/DSP_fir_r8_h8/c674/DSP_fir_r8_h8.h create mode 100644 ti/dsplib/src/DSP_fir_r8_h8/c674/DSP_fir_r8_h8_cn.c create mode 100644 ti/dsplib/src/DSP_fir_r8_h8/c674/DSP_fir_r8_h8_cn.h create mode 100644 ti/dsplib/src/DSP_fir_r8_h8/c674/DSP_fir_r8_h8_d.c create mode 100644 ti/dsplib/src/DSP_fir_r8_hM16_rM8A8X8/DSP_fir_r8_hM16_rM8A8X8.h create mode 100644 ti/dsplib/src/DSP_fir_r8_hM16_rM8A8X8/c64P/DSP_fir_r8_hM16_rM8A8X8.c create mode 100644 ti/dsplib/src/DSP_fir_r8_hM16_rM8A8X8/c64P/DSP_fir_r8_hM16_rM8A8X8.h create mode 100644 ti/dsplib/src/DSP_fir_r8_hM16_rM8A8X8/c64P/DSP_fir_r8_hM16_rM8A8X8_cn.c create mode 100644 ti/dsplib/src/DSP_fir_r8_hM16_rM8A8X8/c64P/DSP_fir_r8_hM16_rM8A8X8_cn.h create mode 100644 ti/dsplib/src/DSP_fir_r8_hM16_rM8A8X8/c64P/DSP_fir_r8_hM16_rM8A8X8_d.c create mode 100644 ti/dsplib/src/DSP_fir_r8_hM16_rM8A8X8/c66/DSP_fir_r8_hM16_rM8A8X8.c create mode 100644 ti/dsplib/src/DSP_fir_r8_hM16_rM8A8X8/c66/DSP_fir_r8_hM16_rM8A8X8.h create mode 100644 ti/dsplib/src/DSP_fir_r8_hM16_rM8A8X8/c66/DSP_fir_r8_hM16_rM8A8X8_cn.c create mode 100644 ti/dsplib/src/DSP_fir_r8_hM16_rM8A8X8/c66/DSP_fir_r8_hM16_rM8A8X8_cn.h create mode 100644 ti/dsplib/src/DSP_fir_r8_hM16_rM8A8X8/c66/DSP_fir_r8_hM16_rM8A8X8_d.c create mode 100644 ti/dsplib/src/DSP_fir_sym/DSP_fir_sym.h create mode 100644 ti/dsplib/src/DSP_fir_sym/c64P/DSP_fir_sym.c create mode 100644 ti/dsplib/src/DSP_fir_sym/c64P/DSP_fir_sym.h create mode 100644 ti/dsplib/src/DSP_fir_sym/c64P/DSP_fir_sym_cn.c create mode 100644 ti/dsplib/src/DSP_fir_sym/c64P/DSP_fir_sym_cn.h create mode 100644 ti/dsplib/src/DSP_fir_sym/c64P/DSP_fir_sym_d.c create mode 100644 ti/dsplib/src/DSP_fir_sym/c66/DSP_fir_sym.c create mode 100644 ti/dsplib/src/DSP_fir_sym/c66/DSP_fir_sym.h create mode 100644 ti/dsplib/src/DSP_fir_sym/c66/DSP_fir_sym_cn.c create mode 100644 ti/dsplib/src/DSP_fir_sym/c66/DSP_fir_sym_cn.h create mode 100644 ti/dsplib/src/DSP_fir_sym/c66/DSP_fir_sym_d.c create mode 100644 ti/dsplib/src/DSP_firlms2/DSP_firlms2.h create mode 100644 ti/dsplib/src/DSP_firlms2/c64P/DSP_firlms2.c create mode 100644 ti/dsplib/src/DSP_firlms2/c64P/DSP_firlms2.h create mode 100644 ti/dsplib/src/DSP_firlms2/c64P/DSP_firlms2_cn.c create mode 100644 ti/dsplib/src/DSP_firlms2/c64P/DSP_firlms2_cn.h create mode 100644 ti/dsplib/src/DSP_firlms2/c64P/DSP_firlms2_d.c create mode 100644 ti/dsplib/src/DSP_firlms2/c66/DSP_firlms2.c create mode 100644 ti/dsplib/src/DSP_firlms2/c66/DSP_firlms2.h create mode 100644 ti/dsplib/src/DSP_firlms2/c66/DSP_firlms2_cn.c create mode 100644 ti/dsplib/src/DSP_firlms2/c66/DSP_firlms2_cn.h create mode 100644 ti/dsplib/src/DSP_firlms2/c66/DSP_firlms2_d.c create mode 100644 ti/dsplib/src/DSP_fltoq15/DSP_fltoq15.h create mode 100644 ti/dsplib/src/DSP_fltoq15/c64P/DSP_fltoq15.c create mode 100644 ti/dsplib/src/DSP_fltoq15/c64P/DSP_fltoq15.h create mode 100644 ti/dsplib/src/DSP_fltoq15/c64P/DSP_fltoq15_cn.c create mode 100644 ti/dsplib/src/DSP_fltoq15/c64P/DSP_fltoq15_cn.h create mode 100644 ti/dsplib/src/DSP_fltoq15/c64P/DSP_fltoq15_d.c create mode 100644 ti/dsplib/src/DSP_fltoq15/c66/DSP_fltoq15.c create mode 100644 ti/dsplib/src/DSP_fltoq15/c66/DSP_fltoq15.h create mode 100644 ti/dsplib/src/DSP_fltoq15/c66/DSP_fltoq15_cn.c create mode 100644 ti/dsplib/src/DSP_fltoq15/c66/DSP_fltoq15_cn.h create mode 100644 ti/dsplib/src/DSP_fltoq15/c66/DSP_fltoq15_d.c create mode 100644 ti/dsplib/src/DSP_ifft16x16/DSP_ifft16x16.h create mode 100644 ti/dsplib/src/DSP_ifft16x16/c64P/DSP_ifft16x16.h create mode 100644 ti/dsplib/src/DSP_ifft16x16/c64P/DSP_ifft16x16_cn.c create mode 100644 ti/dsplib/src/DSP_ifft16x16/c64P/DSP_ifft16x16_cn.h create mode 100644 ti/dsplib/src/DSP_ifft16x16/c64P/DSP_ifft16x16_d.c create mode 100644 ti/dsplib/src/DSP_ifft16x16/c64P/DSP_ifft16x16_i.c create mode 100644 ti/dsplib/src/DSP_ifft16x16/c64P/DSP_ifft16x16_i.h create mode 100644 ti/dsplib/src/DSP_ifft16x16/c64P/DSP_ifft16x16_sa.sa create mode 100644 ti/dsplib/src/DSP_ifft16x16/c64P/gen_twiddle_ifft16x16.c create mode 100644 ti/dsplib/src/DSP_ifft16x16/c64P/gen_twiddle_ifft16x16.h create mode 100644 ti/dsplib/src/DSP_ifft16x16/c66/DSP_ifft16x16.c create mode 100644 ti/dsplib/src/DSP_ifft16x16/c66/DSP_ifft16x16.h create mode 100644 ti/dsplib/src/DSP_ifft16x16/c66/DSP_ifft16x16_cn.c create mode 100644 ti/dsplib/src/DSP_ifft16x16/c66/DSP_ifft16x16_cn.h create mode 100644 ti/dsplib/src/DSP_ifft16x16/c66/DSP_ifft16x16_d.c create mode 100644 ti/dsplib/src/DSP_ifft16x16/c66/gen_twiddle_ifft16x16.c create mode 100644 ti/dsplib/src/DSP_ifft16x16/c66/gen_twiddle_ifft16x16.h create mode 100644 ti/dsplib/src/DSP_ifft16x16_imre/DSP_ifft16x16_imre.h create mode 100644 ti/dsplib/src/DSP_ifft16x16_imre/c64P/DSP_ifft16x16_imre.h create mode 100644 ti/dsplib/src/DSP_ifft16x16_imre/c64P/DSP_ifft16x16_imre_cn.c create mode 100644 ti/dsplib/src/DSP_ifft16x16_imre/c64P/DSP_ifft16x16_imre_cn.h create mode 100644 ti/dsplib/src/DSP_ifft16x16_imre/c64P/DSP_ifft16x16_imre_d.c create mode 100644 ti/dsplib/src/DSP_ifft16x16_imre/c64P/DSP_ifft16x16_imre_i.c create mode 100644 ti/dsplib/src/DSP_ifft16x16_imre/c64P/DSP_ifft16x16_imre_i.h create mode 100644 ti/dsplib/src/DSP_ifft16x16_imre/c64P/DSP_ifft16x16_imre_sa.sa create mode 100644 ti/dsplib/src/DSP_ifft16x16_imre/c64P/gen_twiddle_ifft16x16_imre.c create mode 100644 ti/dsplib/src/DSP_ifft16x16_imre/c64P/gen_twiddle_ifft16x16_imre.h create mode 100644 ti/dsplib/src/DSP_ifft16x16_imre/c66/DSP_ifft16x16_imre.c create mode 100644 ti/dsplib/src/DSP_ifft16x16_imre/c66/DSP_ifft16x16_imre.h create mode 100644 ti/dsplib/src/DSP_ifft16x16_imre/c66/DSP_ifft16x16_imre_cn.c create mode 100644 ti/dsplib/src/DSP_ifft16x16_imre/c66/DSP_ifft16x16_imre_cn.h create mode 100644 ti/dsplib/src/DSP_ifft16x16_imre/c66/DSP_ifft16x16_imre_d.c create mode 100644 ti/dsplib/src/DSP_ifft16x16_imre/c66/gen_twiddle_ifft16x16_imre.c create mode 100644 ti/dsplib/src/DSP_ifft16x16_imre/c66/gen_twiddle_ifft16x16_imre.h create mode 100644 ti/dsplib/src/DSP_ifft16x32/DSP_ifft16x32.h create mode 100644 ti/dsplib/src/DSP_ifft16x32/c64P/DSP_ifft16x32.h create mode 100644 ti/dsplib/src/DSP_ifft16x32/c64P/DSP_ifft16x32_cn.c create mode 100644 ti/dsplib/src/DSP_ifft16x32/c64P/DSP_ifft16x32_cn.h create mode 100644 ti/dsplib/src/DSP_ifft16x32/c64P/DSP_ifft16x32_d.c create mode 100644 ti/dsplib/src/DSP_ifft16x32/c64P/DSP_ifft16x32_i.c create mode 100644 ti/dsplib/src/DSP_ifft16x32/c64P/DSP_ifft16x32_i.h create mode 100644 ti/dsplib/src/DSP_ifft16x32/c64P/DSP_ifft16x32_sa.sa create mode 100644 ti/dsplib/src/DSP_ifft16x32/c64P/gen_twiddle_fft16x32.c create mode 100644 ti/dsplib/src/DSP_ifft16x32/c64P/gen_twiddle_fft16x32.h create mode 100644 ti/dsplib/src/DSP_ifft16x32/c66/DSP_ifft16x32.c create mode 100644 ti/dsplib/src/DSP_ifft16x32/c66/DSP_ifft16x32.h create mode 100644 ti/dsplib/src/DSP_ifft16x32/c66/DSP_ifft16x32_cn.c create mode 100644 ti/dsplib/src/DSP_ifft16x32/c66/DSP_ifft16x32_cn.h create mode 100644 ti/dsplib/src/DSP_ifft16x32/c66/DSP_ifft16x32_d.c create mode 100644 ti/dsplib/src/DSP_ifft16x32/c66/gen_twiddle_ifft16x32.c create mode 100644 ti/dsplib/src/DSP_ifft16x32/c66/gen_twiddle_ifft16x32.h create mode 100644 ti/dsplib/src/DSP_ifft32x32/DSP_ifft32x32.h create mode 100644 ti/dsplib/src/DSP_ifft32x32/c64P/DSP_ifft32x32.h create mode 100644 ti/dsplib/src/DSP_ifft32x32/c64P/DSP_ifft32x32_cn.c create mode 100644 ti/dsplib/src/DSP_ifft32x32/c64P/DSP_ifft32x32_cn.h create mode 100644 ti/dsplib/src/DSP_ifft32x32/c64P/DSP_ifft32x32_d.c create mode 100644 ti/dsplib/src/DSP_ifft32x32/c64P/DSP_ifft32x32_i.c create mode 100644 ti/dsplib/src/DSP_ifft32x32/c64P/DSP_ifft32x32_i.h create mode 100644 ti/dsplib/src/DSP_ifft32x32/c64P/DSP_ifft32x32_sa.sa create mode 100644 ti/dsplib/src/DSP_ifft32x32/c64P/gen_twiddle_fft32x32.c create mode 100644 ti/dsplib/src/DSP_ifft32x32/c64P/gen_twiddle_fft32x32.h create mode 100644 ti/dsplib/src/DSP_ifft32x32/c66/DSP_ifft32x32.c create mode 100644 ti/dsplib/src/DSP_ifft32x32/c66/DSP_ifft32x32.h create mode 100644 ti/dsplib/src/DSP_ifft32x32/c66/DSP_ifft32x32_cn.c create mode 100644 ti/dsplib/src/DSP_ifft32x32/c66/DSP_ifft32x32_cn.h create mode 100644 ti/dsplib/src/DSP_ifft32x32/c66/DSP_ifft32x32_d.c create mode 100644 ti/dsplib/src/DSP_ifft32x32/c66/gen_twiddle_ifft32x32.c create mode 100644 ti/dsplib/src/DSP_ifft32x32/c66/gen_twiddle_ifft32x32.h create mode 100644 ti/dsplib/src/DSP_iir/DSP_iir.h create mode 100644 ti/dsplib/src/DSP_iir/c64P/DSP_iir.c create mode 100644 ti/dsplib/src/DSP_iir/c64P/DSP_iir.h create mode 100644 ti/dsplib/src/DSP_iir/c64P/DSP_iir_cn.c create mode 100644 ti/dsplib/src/DSP_iir/c64P/DSP_iir_cn.h create mode 100644 ti/dsplib/src/DSP_iir/c64P/DSP_iir_d.c create mode 100644 ti/dsplib/src/DSP_iir/c66/DSP_iir.c create mode 100644 ti/dsplib/src/DSP_iir/c66/DSP_iir.h create mode 100644 ti/dsplib/src/DSP_iir/c66/DSP_iir_cn.c create mode 100644 ti/dsplib/src/DSP_iir/c66/DSP_iir_cn.h create mode 100644 ti/dsplib/src/DSP_iir/c66/DSP_iir_d.c create mode 100644 ti/dsplib/src/DSP_iir_lat/DSP_iir_lat.h create mode 100644 ti/dsplib/src/DSP_iir_lat/c64P/DSP_iir_lat.c create mode 100644 ti/dsplib/src/DSP_iir_lat/c64P/DSP_iir_lat.h create mode 100644 ti/dsplib/src/DSP_iir_lat/c64P/DSP_iir_lat_cn.c create mode 100644 ti/dsplib/src/DSP_iir_lat/c64P/DSP_iir_lat_cn.h create mode 100644 ti/dsplib/src/DSP_iir_lat/c64P/DSP_iir_lat_d.c create mode 100644 ti/dsplib/src/DSP_iir_lat/c66/DSP_iir_lat.c create mode 100644 ti/dsplib/src/DSP_iir_lat/c66/DSP_iir_lat.h create mode 100644 ti/dsplib/src/DSP_iir_lat/c66/DSP_iir_lat_cn.c create mode 100644 ti/dsplib/src/DSP_iir_lat/c66/DSP_iir_lat_cn.h create mode 100644 ti/dsplib/src/DSP_iir_lat/c66/DSP_iir_lat_d.c create mode 100644 ti/dsplib/src/DSP_iir_ss/DSP_iir_ss.h create mode 100644 ti/dsplib/src/DSP_iir_ss/c64P/DSP_iir_ss.c create mode 100644 ti/dsplib/src/DSP_iir_ss/c64P/DSP_iir_ss.h create mode 100644 ti/dsplib/src/DSP_iir_ss/c64P/DSP_iir_ss_cn.c create mode 100644 ti/dsplib/src/DSP_iir_ss/c64P/DSP_iir_ss_cn.h create mode 100644 ti/dsplib/src/DSP_iir_ss/c64P/DSP_iir_ss_d.c create mode 100644 ti/dsplib/src/DSP_iir_ss/c66/DSP_iir_ss.c create mode 100644 ti/dsplib/src/DSP_iir_ss/c66/DSP_iir_ss.h create mode 100644 ti/dsplib/src/DSP_iir_ss/c66/DSP_iir_ss_cn.c create mode 100644 ti/dsplib/src/DSP_iir_ss/c66/DSP_iir_ss_cn.h create mode 100644 ti/dsplib/src/DSP_iir_ss/c66/DSP_iir_ss_d.c create mode 100644 ti/dsplib/src/DSP_mat_mul/DSP_mat_mul.h create mode 100644 ti/dsplib/src/DSP_mat_mul/c64P/DSP_mat_mul.c create mode 100644 ti/dsplib/src/DSP_mat_mul/c64P/DSP_mat_mul.h create mode 100644 ti/dsplib/src/DSP_mat_mul/c64P/DSP_mat_mul_cn.c create mode 100644 ti/dsplib/src/DSP_mat_mul/c64P/DSP_mat_mul_cn.h create mode 100644 ti/dsplib/src/DSP_mat_mul/c64P/DSP_mat_mul_d.c create mode 100644 ti/dsplib/src/DSP_mat_mul/c66/DSP_mat_mul.c create mode 100644 ti/dsplib/src/DSP_mat_mul/c66/DSP_mat_mul.h create mode 100644 ti/dsplib/src/DSP_mat_mul/c66/DSP_mat_mul_cn.c create mode 100644 ti/dsplib/src/DSP_mat_mul/c66/DSP_mat_mul_cn.h create mode 100644 ti/dsplib/src/DSP_mat_mul/c66/DSP_mat_mul_d.c create mode 100644 ti/dsplib/src/DSP_mat_mul_cplx/DSP_mat_mul_cplx.h create mode 100644 ti/dsplib/src/DSP_mat_mul_cplx/c64P/DSP_mat_mul_cplx.c create mode 100644 ti/dsplib/src/DSP_mat_mul_cplx/c64P/DSP_mat_mul_cplx.h create mode 100644 ti/dsplib/src/DSP_mat_mul_cplx/c64P/DSP_mat_mul_cplx_cn.c create mode 100644 ti/dsplib/src/DSP_mat_mul_cplx/c64P/DSP_mat_mul_cplx_cn.h create mode 100644 ti/dsplib/src/DSP_mat_mul_cplx/c64P/DSP_mat_mul_cplx_d.c create mode 100644 ti/dsplib/src/DSP_mat_mul_cplx/c66/DSP_mat_mul_cplx.c create mode 100644 ti/dsplib/src/DSP_mat_mul_cplx/c66/DSP_mat_mul_cplx.h create mode 100644 ti/dsplib/src/DSP_mat_mul_cplx/c66/DSP_mat_mul_cplx_cn.c create mode 100644 ti/dsplib/src/DSP_mat_mul_cplx/c66/DSP_mat_mul_cplx_cn.h create mode 100644 ti/dsplib/src/DSP_mat_mul_cplx/c66/DSP_mat_mul_cplx_d.c create mode 100644 ti/dsplib/src/DSP_mat_trans/DSP_mat_trans.h create mode 100644 ti/dsplib/src/DSP_mat_trans/c64P/DSP_mat_trans.c create mode 100644 ti/dsplib/src/DSP_mat_trans/c64P/DSP_mat_trans.h create mode 100644 ti/dsplib/src/DSP_mat_trans/c64P/DSP_mat_trans_cn.c create mode 100644 ti/dsplib/src/DSP_mat_trans/c64P/DSP_mat_trans_cn.h create mode 100644 ti/dsplib/src/DSP_mat_trans/c64P/DSP_mat_trans_d.c create mode 100644 ti/dsplib/src/DSP_mat_trans/c66/DSP_mat_trans.c create mode 100644 ti/dsplib/src/DSP_mat_trans/c66/DSP_mat_trans.h create mode 100644 ti/dsplib/src/DSP_mat_trans/c66/DSP_mat_trans_cn.c create mode 100644 ti/dsplib/src/DSP_mat_trans/c66/DSP_mat_trans_cn.h create mode 100644 ti/dsplib/src/DSP_mat_trans/c66/DSP_mat_trans_d.c create mode 100644 ti/dsplib/src/DSP_maxidx/DSP_maxidx.h create mode 100644 ti/dsplib/src/DSP_maxidx/c64P/DSP_maxidx.c create mode 100644 ti/dsplib/src/DSP_maxidx/c64P/DSP_maxidx.h create mode 100644 ti/dsplib/src/DSP_maxidx/c64P/DSP_maxidx_cn.c create mode 100644 ti/dsplib/src/DSP_maxidx/c64P/DSP_maxidx_cn.h create mode 100644 ti/dsplib/src/DSP_maxidx/c64P/DSP_maxidx_d.c create mode 100644 ti/dsplib/src/DSP_maxidx/c66/DSP_maxidx.c create mode 100644 ti/dsplib/src/DSP_maxidx/c66/DSP_maxidx.h create mode 100644 ti/dsplib/src/DSP_maxidx/c66/DSP_maxidx_cn.c create mode 100644 ti/dsplib/src/DSP_maxidx/c66/DSP_maxidx_cn.h create mode 100644 ti/dsplib/src/DSP_maxidx/c66/DSP_maxidx_d.c create mode 100644 ti/dsplib/src/DSP_maxval/DSP_maxval.h create mode 100644 ti/dsplib/src/DSP_maxval/c64P/DSP_maxval.c create mode 100644 ti/dsplib/src/DSP_maxval/c64P/DSP_maxval.h create mode 100644 ti/dsplib/src/DSP_maxval/c64P/DSP_maxval_cn.c create mode 100644 ti/dsplib/src/DSP_maxval/c64P/DSP_maxval_cn.h create mode 100644 ti/dsplib/src/DSP_maxval/c64P/DSP_maxval_d.c create mode 100644 ti/dsplib/src/DSP_maxval/c66/DSP_maxval.c create mode 100644 ti/dsplib/src/DSP_maxval/c66/DSP_maxval.h create mode 100644 ti/dsplib/src/DSP_maxval/c66/DSP_maxval_cn.c create mode 100644 ti/dsplib/src/DSP_maxval/c66/DSP_maxval_cn.h create mode 100644 ti/dsplib/src/DSP_maxval/c66/DSP_maxval_d.c create mode 100644 ti/dsplib/src/DSP_minerror/DSP_minerror.h create mode 100644 ti/dsplib/src/DSP_minerror/c64P/DSP_minerror.c create mode 100644 ti/dsplib/src/DSP_minerror/c64P/DSP_minerror.h create mode 100644 ti/dsplib/src/DSP_minerror/c64P/DSP_minerror_cn.c create mode 100644 ti/dsplib/src/DSP_minerror/c64P/DSP_minerror_cn.h create mode 100644 ti/dsplib/src/DSP_minerror/c64P/DSP_minerror_d.c create mode 100644 ti/dsplib/src/DSP_minerror/c66/DSP_minerror.c create mode 100644 ti/dsplib/src/DSP_minerror/c66/DSP_minerror.h create mode 100644 ti/dsplib/src/DSP_minerror/c66/DSP_minerror_cn.c create mode 100644 ti/dsplib/src/DSP_minerror/c66/DSP_minerror_cn.h create mode 100644 ti/dsplib/src/DSP_minerror/c66/DSP_minerror_d.c create mode 100644 ti/dsplib/src/DSP_minval/DSP_minval.h create mode 100644 ti/dsplib/src/DSP_minval/c64P/DSP_minval.c create mode 100644 ti/dsplib/src/DSP_minval/c64P/DSP_minval.h create mode 100644 ti/dsplib/src/DSP_minval/c64P/DSP_minval_cn.c create mode 100644 ti/dsplib/src/DSP_minval/c64P/DSP_minval_cn.h create mode 100644 ti/dsplib/src/DSP_minval/c64P/DSP_minval_d.c create mode 100644 ti/dsplib/src/DSP_minval/c66/DSP_minval.c create mode 100644 ti/dsplib/src/DSP_minval/c66/DSP_minval.h create mode 100644 ti/dsplib/src/DSP_minval/c66/DSP_minval_cn.c create mode 100644 ti/dsplib/src/DSP_minval/c66/DSP_minval_cn.h create mode 100644 ti/dsplib/src/DSP_minval/c66/DSP_minval_d.c create mode 100644 ti/dsplib/src/DSP_mul32/DSP_mul32.h create mode 100644 ti/dsplib/src/DSP_mul32/c64P/DSP_mul32.c create mode 100644 ti/dsplib/src/DSP_mul32/c64P/DSP_mul32.h create mode 100644 ti/dsplib/src/DSP_mul32/c64P/DSP_mul32_cn.c create mode 100644 ti/dsplib/src/DSP_mul32/c64P/DSP_mul32_cn.h create mode 100644 ti/dsplib/src/DSP_mul32/c64P/DSP_mul32_d.c create mode 100644 ti/dsplib/src/DSP_mul32/c66/DSP_mul32.c create mode 100644 ti/dsplib/src/DSP_mul32/c66/DSP_mul32.h create mode 100644 ti/dsplib/src/DSP_mul32/c66/DSP_mul32_cn.c create mode 100644 ti/dsplib/src/DSP_mul32/c66/DSP_mul32_cn.h create mode 100644 ti/dsplib/src/DSP_mul32/c66/DSP_mul32_d.c create mode 100644 ti/dsplib/src/DSP_neg32/DSP_neg32.h create mode 100644 ti/dsplib/src/DSP_neg32/c64P/DSP_neg32.c create mode 100644 ti/dsplib/src/DSP_neg32/c64P/DSP_neg32.h create mode 100644 ti/dsplib/src/DSP_neg32/c64P/DSP_neg32_cn.c create mode 100644 ti/dsplib/src/DSP_neg32/c64P/DSP_neg32_cn.h create mode 100644 ti/dsplib/src/DSP_neg32/c64P/DSP_neg32_d.c create mode 100644 ti/dsplib/src/DSP_neg32/c66/DSP_neg32.c create mode 100644 ti/dsplib/src/DSP_neg32/c66/DSP_neg32.h create mode 100644 ti/dsplib/src/DSP_neg32/c66/DSP_neg32_cn.c create mode 100644 ti/dsplib/src/DSP_neg32/c66/DSP_neg32_cn.h create mode 100644 ti/dsplib/src/DSP_neg32/c66/DSP_neg32_d.c create mode 100644 ti/dsplib/src/DSP_q15tofl/DSP_q15tofl.h create mode 100644 ti/dsplib/src/DSP_q15tofl/c64P/DSP_q15tofl.c create mode 100644 ti/dsplib/src/DSP_q15tofl/c64P/DSP_q15tofl.h create mode 100644 ti/dsplib/src/DSP_q15tofl/c64P/DSP_q15tofl_cn.c create mode 100644 ti/dsplib/src/DSP_q15tofl/c64P/DSP_q15tofl_cn.h create mode 100644 ti/dsplib/src/DSP_q15tofl/c64P/DSP_q15tofl_d.c create mode 100644 ti/dsplib/src/DSP_q15tofl/c66/DSP_q15tofl.c create mode 100644 ti/dsplib/src/DSP_q15tofl/c66/DSP_q15tofl.h create mode 100644 ti/dsplib/src/DSP_q15tofl/c66/DSP_q15tofl_cn.c create mode 100644 ti/dsplib/src/DSP_q15tofl/c66/DSP_q15tofl_cn.h create mode 100644 ti/dsplib/src/DSP_q15tofl/c66/DSP_q15tofl_d.c create mode 100644 ti/dsplib/src/DSP_recip16/DSP_recip16.h create mode 100644 ti/dsplib/src/DSP_recip16/c64P/DSP_recip16.c create mode 100644 ti/dsplib/src/DSP_recip16/c64P/DSP_recip16.h create mode 100644 ti/dsplib/src/DSP_recip16/c64P/DSP_recip16_cn.c create mode 100644 ti/dsplib/src/DSP_recip16/c64P/DSP_recip16_cn.h create mode 100644 ti/dsplib/src/DSP_recip16/c64P/DSP_recip16_d.c create mode 100644 ti/dsplib/src/DSP_recip16/c66/DSP_recip16.c create mode 100644 ti/dsplib/src/DSP_recip16/c66/DSP_recip16.h create mode 100644 ti/dsplib/src/DSP_recip16/c66/DSP_recip16_cn.c create mode 100644 ti/dsplib/src/DSP_recip16/c66/DSP_recip16_cn.h create mode 100644 ti/dsplib/src/DSP_recip16/c66/DSP_recip16_d.c create mode 100644 ti/dsplib/src/DSP_urand16/DSP_urand16.h create mode 100644 ti/dsplib/src/DSP_urand16/c66/DSP_urand16.c create mode 100644 ti/dsplib/src/DSP_urand16/c66/DSP_urand16.h create mode 100644 ti/dsplib/src/DSP_urand16/c66/DSP_urand16_cn.c create mode 100644 ti/dsplib/src/DSP_urand16/c66/DSP_urand16_cn.h create mode 100644 ti/dsplib/src/DSP_urand16/c66/DSP_urand16_d.c create mode 100644 ti/dsplib/src/DSP_urand16/c66/lnk.cmd create mode 100644 ti/dsplib/src/DSP_urand32/DSP_urand32.h create mode 100644 ti/dsplib/src/DSP_urand32/c66/DSPF_sp_math_i.h create mode 100644 ti/dsplib/src/DSP_urand32/c66/DSP_urand32.c create mode 100644 ti/dsplib/src/DSP_urand32/c66/DSP_urand32.h create mode 100644 ti/dsplib/src/DSP_urand32/c66/DSP_urand32_cn.c create mode 100644 ti/dsplib/src/DSP_urand32/c66/DSP_urand32_cn.h create mode 100644 ti/dsplib/src/DSP_urand32/c66/DSP_urand32_d.c create mode 100644 ti/dsplib/src/DSP_urand32/c66/lnk.cmd create mode 100644 ti/dsplib/src/DSP_vecsumsq/DSP_vecsumsq.h create mode 100644 ti/dsplib/src/DSP_vecsumsq/c64P/DSP_vecsumsq.c create mode 100644 ti/dsplib/src/DSP_vecsumsq/c64P/DSP_vecsumsq.h create mode 100644 ti/dsplib/src/DSP_vecsumsq/c64P/DSP_vecsumsq_cn.c create mode 100644 ti/dsplib/src/DSP_vecsumsq/c64P/DSP_vecsumsq_cn.h create mode 100644 ti/dsplib/src/DSP_vecsumsq/c64P/DSP_vecsumsq_d.c create mode 100644 ti/dsplib/src/DSP_vecsumsq/c66/DSP_vecsumsq.c create mode 100644 ti/dsplib/src/DSP_vecsumsq/c66/DSP_vecsumsq.h create mode 100644 ti/dsplib/src/DSP_vecsumsq/c66/DSP_vecsumsq_cn.c create mode 100644 ti/dsplib/src/DSP_vecsumsq/c66/DSP_vecsumsq_cn.h create mode 100644 ti/dsplib/src/DSP_vecsumsq/c66/DSP_vecsumsq_d.c create mode 100644 ti/dsplib/src/DSP_w_vec/DSP_w_vec.h create mode 100644 ti/dsplib/src/DSP_w_vec/c64P/DSP_w_vec.c create mode 100644 ti/dsplib/src/DSP_w_vec/c64P/DSP_w_vec.h create mode 100644 ti/dsplib/src/DSP_w_vec/c64P/DSP_w_vec_cn.c create mode 100644 ti/dsplib/src/DSP_w_vec/c64P/DSP_w_vec_cn.h create mode 100644 ti/dsplib/src/DSP_w_vec/c64P/DSP_w_vec_d.c create mode 100644 ti/dsplib/src/DSP_w_vec/c66/DSP_w_vec.c create mode 100644 ti/dsplib/src/DSP_w_vec/c66/DSP_w_vec.h create mode 100644 ti/dsplib/src/DSP_w_vec/c66/DSP_w_vec_cn.c create mode 100644 ti/dsplib/src/DSP_w_vec/c66/DSP_w_vec_cn.h create mode 100644 ti/dsplib/src/DSP_w_vec/c66/DSP_w_vec_d.c create mode 100644 ti/dsplib/src/common/c64P/lnk.cmd create mode 100644 ti/dsplib/src/common/c66/lnk.cmd create mode 100644 ti/dsplib/src/common/c674/lnk.cmd diff --git a/ti/dsplib/.metadata/.tirex/tirex_logo_256.png b/ti/dsplib/.metadata/.tirex/tirex_logo_256.png new file mode 100644 index 0000000000000000000000000000000000000000..9daef11827fada54876443b76fac408d5483c1d0 GIT binary patch literal 10383 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 ./docs/DSPLIB_Users_Manual.html + +$(MANIFEST_DOC): ./$(SWMPATH)/manifest.h + -@echo generating Software Manifest ... + if test ! -d ./$(SWMHTML); then mkdir ./$(SWMHTML); fi + @cp $(TI_DOXYGEN_TEMPLATES)/*.* ./$(SWMHTML) + doxygen ./$(SWMPATH)/Doxyfile + xs -f $(REDIRECT) ./manifest/html/index.html > ./docs/DSPLIB_Software_Manifest.html + +#$(ECLIPSE_DIR): ./eclipse/dsplib.xml ./eclipse/dsplib_toc.xml +# -@echo generating Eclipse Plugin ... +# xs xdc.tools.eclipsePluginGen -o . -x ./eclipse/dsplib.xml -c ./eclipse/dsplib_toc.xml + + +# End of Makedocs.mk diff --git a/ti/dsplib/docs/bundle/DSPLIB_C64Px_TestReport.html b/ti/dsplib/docs/bundle/DSPLIB_C64Px_TestReport.html new file mode 100644 index 0000000..6cfac21 --- /dev/null +++ b/ti/dsplib/docs/bundle/DSPLIB_C64Px_TestReport.html @@ -0,0 +1,1767 @@ + + + + + Project Runner Data + + + + + +

Texas Instruments Test Results

+

DSPLIB 3.4.0.0 C64Px

+

+ +
+

 

+

Session Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EndiannessObject FormatLink
Little EndianCOFF FormatView Results
ELF FormatView Results
Big EndianCOFF FormatView Results
ELF FormatView Results
+
+ + +
+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Test Parameters
Precision:Fixed Point
Endianness:Little
Object File Format:COFF
Platform:CCS Simulator
Cores Used: 1
CCS Version:5.4.0.00091
CGT Version:7.4.2
KERNELRESULTCYCLE FORMULAPROGRAM
MEMORY
EQUATIONVARIABLES
DSP_add16Passed 3/8*Nx + 31 N/A 96
DSP_add32Passed 3/4*Nx + 30 N/A 96
DSP_autocorPassed 1/8*Nx*Nr + 42/8*Nr + 40N/A 512
DSP_bexpPassed 1/2*Nx + 39 N/A 224
DSP_blk_eswap16Passed 1/4*n_hwords + 30 N/A 160
DSP_blk_eswap32Passed 1/2*n_words + 32 N/A 192
DSP_blk_eswap64Passed 1*n_dbls + 32 N/A 192
DSP_blk_movePassed 1/4*Nx + 27 N/A 64
DSP_dotprodPassed 1/4*Nx + 41 N/A 96
DSP_dotp_sqrPassed 1/2*Nx + 41 N/A 128
DSP_fft16x16Passed 527 (N=128) 1009 (N=256)N/A 928
DSP_fft16x16_rPassed 620 (N=128) 1138 (N=256)N/A 1024
DSP_fft16x16_imrePassed 527 (N=128) 1009 (N=256)N/A 960
DSP_fft16x32Passed 893 (N=128) 1682 (N=256)N/A 1664
DSP_fft32x32Passed 1009 (N=128) 1956 (N=256)N/A 1824
DSP_fft32x32sPassed 1072 (N=128) 2064 (N=256)N/A 1856
DSP_firlms2Passed 1*NH + 46 N/A 160
DSP_fir_cplxPassed 8/8*Nr*Nh + 17/8*Nr + 8/8*Nh + 76N/A 896
DSP_fir_cplx_hM4X4Passed 8/8*Nr*Nh + 17/8*Nr + 8/8*Nh + 76N/A 896
DSP_fir_genPassed 3/16*Nr*Nh + 80/16*Nr + 51N/A 448
DSP_fir_gen_hM17_rA8X8Passed 1/4*Nr*Nh + 19/4*Nr + 60N/A 768
DSP_fir_r4Passed 1/4*Nr*Nh + 17/4*Nr + 39N/A 320
DSP_fir_r8Passed 1/4*Nr*Nh + 19/4*Nr + 43N/A 544
DSP_fir_r8_hM16_rM8A8X8Passed 1/4*Nr*Nh + 19/4*Nr + 43N/A 544
DSP_fir_symPassed 7/16*Nr*Nh + 84/16*Nr + 39N/A 512
DSP_fltoq15Passed 2*Nx + 32 N/A 160
DSP_ifft16x16Passed 527 (N=128) 1009 (N=256)N/A 960
DSP_ifft16x16_imrePassed 527 (N=128) 1009 (N=256)N/A 928
DSP_ifft16x32Passed 901 (N=128) 1719 (N=256)N/A 1408
DSP_ifft32x32Passed 985 (N=128) 1840 (N=256)N/A 2016
DSP_iir_real16Passed 4*Nx + 48 N/A 480
DSP_iir_latPassed 5/4*Nr*Nh + 92/4*Nr + 36N/A 320
DSP_iir_ssPassed 4/8*nCoefs + 39 N/A 192
DSP_mat_mulPassed 2/8*r1*c2*c1 + 22/8*r1*c2 + 38/8*c2 + 31N/A 512
DSP_mat_mul_cplxPassed 1/2*r1*c2*c1 + 13/2*r1*c2 + 11/2*r1 + 42N/A 672
DSP_mat_transPassed 9/16*R*C + 38N/A 352
DSP_maxidxPassed 3/16*Nx + 85 N/A 320
DSP_maxvalPassed 1/8*Nx + 34 N/A 128
DSP_minerrorPassed 685N/A 1120
DSP_minvalPassed 1/8*Nx + 37 N/A 128
DSP_mul32Passed 3/4*Nx + 34 N/A 96
DSP_neg32Passed 1/2*Nx + 28 N/A 96
DSP_q15toflPassed 2*Nx + 36 N/A 192
DSP_recip16Passed 9*Nx + 44 N/A 224
DSP_vecsum_sqPassed 1/4*Nx + 35 N/A 64
DSP_w_vecPassed 3/8*Nr + 43 N/A 160
+

Top +

+ +
+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Test Parameters
Precision:Fixed Point
Endianness:Little
Object File Format:ELF
Platform:CCS Simulator
Cores Used: 1
CCS Version:5.4.0.00091
CGT Version:7.4.2
KERNELRESULTCYCLE FORMULAPROGRAM
MEMORY
EQUATIONVARIABLES
DSP_add16Passed 3/8*Nx + 31 N/A 96
DSP_add32Passed 3/4*Nx + 30 N/A 96
DSP_autocorPassed 1/8*Nx*Nr + 42/8*Nr + 40N/A 512
DSP_bexpPassed 1/2*Nx + 39 N/A 224
DSP_blk_eswap16Passed 1/4*n_hwords + 30 N/A 160
DSP_blk_eswap32Passed 1/2*n_words + 32 N/A 192
DSP_blk_eswap64Passed 1*n_dbls + 32 N/A 192
DSP_blk_movePassed 1/4*Nx + 27 N/A 64
DSP_dotprodPassed 1/4*Nx + 41 N/A 96
DSP_dotp_sqrPassed 1/2*Nx + 41 N/A 128
DSP_fft16x16Passed 527 (N=128) 1009 (N=256)N/A 928
DSP_fft16x16_rPassed 620 (N=128) 1138 (N=256)N/A 1024
DSP_fft16x16_imrePassed 527 (N=128) 1009 (N=256)N/A 960
DSP_fft16x32Passed 893 (N=128) 1682 (N=256)N/A 1664
DSP_fft32x32Passed 1009 (N=128) 1956 (N=256)N/A 1824
DSP_fft32x32sPassed 1072 (N=128) 2064 (N=256)N/A 1856
DSP_firlms2Passed 1*NH + 46 N/A 160
DSP_fir_cplxPassed 8/8*Nr*Nh + 17/8*Nr + 8/8*Nh + 76N/A 896
DSP_fir_cplx_hM4X4Passed 8/8*Nr*Nh + 17/8*Nr + 8/8*Nh + 76N/A 896
DSP_fir_genPassed 3/16*Nr*Nh + 80/16*Nr + 51N/A 448
DSP_fir_gen_hM17_rA8X8Passed 1/4*Nr*Nh + 19/4*Nr + 60N/A 768
DSP_fir_r4Passed 1/4*Nr*Nh + 17/4*Nr + 39N/A 320
DSP_fir_r8Passed 1/4*Nr*Nh + 19/4*Nr + 43N/A 544
DSP_fir_r8_hM16_rM8A8X8Passed 1/4*Nr*Nh + 19/4*Nr + 43N/A 544
DSP_fir_symPassed 7/16*Nr*Nh + 84/16*Nr + 39N/A 512
DSP_fltoq15Passed 2*Nx + 32 N/A 160
DSP_ifft16x16Passed 527 (N=128) 1009 (N=256)N/A 960
DSP_ifft16x16_imrePassed 527 (N=128) 1009 (N=256)N/A 928
DSP_ifft16x32Passed 901 (N=128) 1719 (N=256)N/A 1408
DSP_ifft32x32Passed 985 (N=128) 1840 (N=256)N/A 2016
DSP_iir_real16Passed 4*Nx + 48 N/A 480
DSP_iir_latPassed 5/4*Nr*Nh + 92/4*Nr + 36N/A 320
DSP_iir_ssPassed 4/8*nCoefs + 39 N/A 192
DSP_mat_mulPassed 2/8*r1*c2*c1 + 22/8*r1*c2 + 38/8*c2 + 31N/A 512
DSP_mat_mul_cplxPassed 1/2*r1*c2*c1 + 13/2*r1*c2 + 11/2*r1 + 42N/A 672
DSP_mat_transPassed 9/16*R*C + 38N/A 352
DSP_maxidxPassed 3/16*Nx + 85 N/A 320
DSP_maxvalPassed 1/8*Nx + 34 N/A 128
DSP_minerrorPassed 685N/A 1120
DSP_minvalPassed 1/8*Nx + 37 N/A 128
DSP_mul32Passed 3/4*Nx + 34 N/A 96
DSP_neg32Passed 1/2*Nx + 28 N/A 96
DSP_q15toflPassed 2*Nx + 36 N/A 192
DSP_recip16Passed 9*Nx + 44 N/A 224
DSP_vecsum_sqPassed 1/4*Nx + 35 N/A 64
DSP_w_vecPassed 3/8*Nr + 43 N/A 160
+

Top +

+ +
+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Test Parameters
Precision:Fixed Point
Endianness:Big
Object File Format:COFF
Platform:CCS Simulator
Cores Used: 1
CCS Version:5.4.0.00091
CGT Version:7.4.2
KERNELRESULTCYCLE FORMULAPROGRAM
MEMORY
EQUATIONVARIABLES
DSP_add16Passed 3/8*Nx + 31 N/A 96
DSP_add32Passed 3/4*Nx + 30 N/A 96
DSP_autocorPassed 1/8*Nx*Nr + 40/8*Nr + 42N/A 512
DSP_bexpPassed 1/2*Nx + 39 N/A 224
DSP_blk_eswap16Passed 1/4*n_hwords + 30 N/A 160
DSP_blk_eswap32Passed 1/2*n_words + 32 N/A 192
DSP_blk_eswap64Passed 1*n_dbls + 32 N/A 192
DSP_blk_movePassed 1/4*Nx + 27 N/A 64
DSP_dotprodPassed 1/4*Nx + 41 N/A 96
DSP_dotp_sqrPassed 1/2*Nx + 41 N/A 128
DSP_fft16x16Passed 507 (N=128) 993 (N=256)N/A 896
DSP_fft16x16_rPassed 612 (N=128) 1130 (N=256)N/A 1024
DSP_fft16x16_imrePassed 527 (N=128) 1009 (N=256)N/A 960
DSP_fft16x32Passed 893 (N=128) 1722 (N=256)N/A 1344
DSP_fft32x32Passed 1054 (N=128) 2001 (N=256)N/A 1888
DSP_fft32x32sPassed 1031 (N=128) 1978 (N=256)N/A 1888
DSP_firlms2Passed 1*NH + 46 N/A 160
DSP_fir_cplxPassed 8/8*Nr*Nh + 19/8*Nr + 8/8*Nh + 75N/A 896
DSP_fir_cplx_hM4X4Passed 8/8*Nr*Nh + 19/8*Nr + 8/8*Nh + 75N/A 896
DSP_fir_genPassed 3/16*Nr*Nh + 72/16*Nr + 51N/A 416
DSP_fir_gen_hM17_rA8X8Passed 1/4*Nr*Nh + 21/4*Nr + 57N/A 768
DSP_fir_r4Passed 1/4*Nr*Nh + 15/4*Nr + 39N/A 320
DSP_fir_r8Passed 1/4*Nr*Nh + 19/4*Nr + 43N/A 544
DSP_fir_r8_hM16_rM8A8X8Passed 1/4*Nr*Nh + 19/4*Nr + 43N/A 544
DSP_fir_symPassed 6/16*Nr*Nh + 96/16*Nr + 44N/A 512
DSP_fltoq15Passed 2*Nx + 32 N/A 160
DSP_ifft16x16Passed 527 (N=128) 1009 (N=256)N/A 960
DSP_ifft16x16_imrePassed 507 (N=128) 993 (N=256)N/A 896
DSP_ifft16x32Passed 902 (N=128) 1717 (N=256)N/A 1376
DSP_ifft32x32Passed 1002 (N=128) 1856 (N=256)N/A 1472
DSP_iir_real16Passed 4*Nx + 48 N/A 480
DSP_iir_latPassed 5/4*Nr*Nh + 92/4*Nr + 36N/A 320
DSP_iir_ssPassed 5/8*nCoefs + 38 N/A 192
DSP_mat_mulPassed 2/8*r1*c2*c1 + 21/8*r1*c2 + 38/8*c2 + 31N/A 512
DSP_mat_mul_cplxPassed 1/2*r1*c2*c1 + 13/2*r1*c2 + 11/2*r1 + 42N/A 736
DSP_mat_transPassed 9/16*R*C + 40N/A 352
DSP_maxidxPassed 3/16*Nx + 85 N/A 320
DSP_maxvalPassed 1/8*Nx + 34 N/A 128
DSP_minerrorPassed 686N/A 1120
DSP_minvalPassed 1/8*Nx + 37 N/A 128
DSP_mul32Passed 3/4*Nx + 34 N/A 96
DSP_neg32Passed 1/2*Nx + 28 N/A 96
DSP_q15toflPassed 2*Nx + 36 N/A 192
DSP_recip16Passed 9*Nx + 44 N/A 224
DSP_vecsum_sqPassed 1/4*Nx + 35 N/A 64
DSP_w_vecPassed 3/8*Nr + 43 N/A 160
+

Top +

+ +
+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Test Parameters
Precision:Fixed Point
Endianness:Big
Object File Format:ELF
Platform:CCS Simulator
Cores Used: 1
CCS Version:5.4.0.00091
CGT Version:7.4.2
KERNELRESULTCYCLE FORMULAPROGRAM
MEMORY
EQUATIONVARIABLES
DSP_add16Passed 3/8*Nx + 31 N/A 96
DSP_add32Passed 3/4*Nx + 30 N/A 96
DSP_autocorPassed 1/8*Nx*Nr + 40/8*Nr + 42N/A 512
DSP_bexpPassed 1/2*Nx + 39 N/A 224
DSP_blk_eswap16Passed 1/4*n_hwords + 30 N/A 160
DSP_blk_eswap32Passed 1/2*n_words + 32 N/A 192
DSP_blk_eswap64Passed 1*n_dbls + 32 N/A 192
DSP_blk_movePassed 1/4*Nx + 27 N/A 64
DSP_dotprodPassed 1/4*Nx + 41 N/A 96
DSP_dotp_sqrPassed 1/2*Nx + 41 N/A 128
DSP_fft16x16Passed 507 (N=128) 993 (N=256)N/A 896
DSP_fft16x16_rPassed 612 (N=128) 1130 (N=256)N/A 1024
DSP_fft16x16_imrePassed 527 (N=128) 1009 (N=256)N/A 960
DSP_fft16x32Passed 893 (N=128) 1722 (N=256)N/A 1344
DSP_fft32x32Passed 1054 (N=128) 2001 (N=256)N/A 1888
DSP_fft32x32sPassed 1031 (N=128) 1978 (N=256)N/A 1888
DSP_firlms2Passed 1*NH + 46 N/A 160
DSP_fir_cplxPassed 8/8*Nr*Nh + 19/8*Nr + 8/8*Nh + 75N/A 896
DSP_fir_cplx_hM4X4Passed 8/8*Nr*Nh + 19/8*Nr + 8/8*Nh + 75N/A 896
DSP_fir_genPassed 3/16*Nr*Nh + 72/16*Nr + 51N/A 416
DSP_fir_gen_hM17_rA8X8Passed 1/4*Nr*Nh + 21/4*Nr + 57N/A 768
DSP_fir_r4Passed 1/4*Nr*Nh + 15/4*Nr + 39N/A 320
DSP_fir_r8Passed 1/4*Nr*Nh + 19/4*Nr + 43N/A 544
DSP_fir_r8_hM16_rM8A8X8Passed 1/4*Nr*Nh + 19/4*Nr + 43N/A 544
DSP_fir_symPassed 6/16*Nr*Nh + 96/16*Nr + 44N/A 512
DSP_fltoq15Passed 2*Nx + 32 N/A 160
DSP_ifft16x16Passed 527 (N=128) 1009 (N=256)N/A 960
DSP_ifft16x16_imrePassed 507 (N=128) 993 (N=256)N/A 896
DSP_ifft16x32Passed 902 (N=128) 1717 (N=256)N/A 1376
DSP_ifft32x32Passed 1002 (N=128) 1856 (N=256)N/A 1472
DSP_iir_real16Passed 4*Nx + 48 N/A 480
DSP_iir_latPassed 5/4*Nr*Nh + 92/4*Nr + 36N/A 320
DSP_iir_ssPassed 5/8*nCoefs + 38 N/A 192
DSP_mat_mulPassed 2/8*r1*c2*c1 + 21/8*r1*c2 + 38/8*c2 + 31N/A 512
DSP_mat_mul_cplxPassed 1/2*r1*c2*c1 + 13/2*r1*c2 + 11/2*r1 + 42N/A 736
DSP_mat_transPassed 9/16*R*C + 40N/A 352
DSP_maxidxPassed 3/16*Nx + 85 N/A 320
DSP_maxvalPassed 1/8*Nx + 34 N/A 128
DSP_minerrorPassed 686N/A 1120
DSP_minvalPassed 1/8*Nx + 37 N/A 128
DSP_mul32Passed 3/4*Nx + 34 N/A 96
DSP_neg32Passed 1/2*Nx + 28 N/A 96
DSP_q15toflPassed 2*Nx + 36 N/A 192
DSP_recip16Passed 9*Nx + 44 N/A 224
DSP_vecsum_sqPassed 1/4*Nx + 35 N/A 64
DSP_w_vecPassed 3/8*Nr + 43 N/A 160
+

Top +

+ + + + + + diff --git a/ti/dsplib/docs/bundle/DSPLIB_C66x_TestReport.html b/ti/dsplib/docs/bundle/DSPLIB_C66x_TestReport.html new file mode 100644 index 0000000..0415262 --- /dev/null +++ b/ti/dsplib/docs/bundle/DSPLIB_C66x_TestReport.html @@ -0,0 +1,4039 @@ + + + + + Project Runner Data + + + + + +

Texas Instruments Test Results

+

DSPLIB 3.4.0.0 C66x

+

+ +
+

 

+

Session Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EndiannessObject FormatLink
Little EndianCOFF FormatView Results
ELF FormatView Results
Big EndianCOFF FormatView Results
ELF FormatView Results
+
+ + +
+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Test Parameters
Precision:Fixed Point
Endianness:Little
Object File Format:COFF
Platform:CCS Simulator
Cores Used: 1
CCS Version:5.4.0.00091
CGT Version:7.4.2
KERNELRESULTCYCLE FORMULAPROGRAM
MEMORY
EQUATIONVARIABLES
DSPF_dp_choleskyPassed 190827 (order= 64) 1276587 (order=128)N/A 1056
DSPF_dp_cholesky_cmplxPassed 56371 (order=32) 254507 (order=64)N/A 1440
DSPF_dp_fftDPxDPPassed 1670 (N=128) 3174 (N=256)N/A 1216
DSPF_dp_ifftDPxDPPassed 1703 (N=128) 3211 (N=256)N/A 1376
DSPF_dp_ludPassed 1210244 (order=64) 9375741 (order=128)N/A 1152
DSPF_dp_lud_cmplxPassed 292209 (order=32) 1900101 (order=64)N/A 1248
DSPF_dp_lud_invPassed 2480865 (order=64) 19160321 (order=128)N/A 3872
DSPF_dp_lud_inv_cmplxPassed 836318 (order=32) 6338958 (order=64)N/A 4480
DSPF_dp_lud_solPassed 26541 (order=64) 85807 (order=128)N/A 3296
DSPF_dp_lud_sol_cmplxPassed 10911 (order=32) 30007 (order=64)N/A 3328
DSPF_dp_mat_mul_gemmPassed 1/2*r1*c2*c1 + 12/2*r1*c2 + 20/2*c2 + 23N/A 608
DSPF_dp_mat_submat_copyPassed 1*R*C + 13*C + 22N/A 288
DSPF_dp_mat_transPassed 1*R*C + 6*R + 28N/A 128
DSPF_dp_qrdPassed 1322665 (order=64) 9633129 (order=128)N/A 1056
DSPF_dp_qrd_cmplxPassed 279010 (order=32) 1842114 (order=64)N/A 1888
DSPF_dp_svdPassed 13784456 (order=64) 99337108 (order=128)N/A 7584
DSPF_dp_svd_cmplxPassed 4693942 (order=32) 26228468 (order=64)N/A 11968
DSPF_sp_autocorPassed 1/4*Nx*Nr + 23/4*Nr + 34N/A 448
DSPF_sp_biquadPassed 7*Nx + 61 N/A 352
DSPF_sp_bitrev_cplxPassed 9/4*Nx + 38 N/A 288
DSPF_sp_choleskyPassed 5209 (order=16) 21819 (order=32)N/A 1984
DSPF_sp_cholesky_cmplxPassed 52740 (order= 32) 250820 (order= 64)N/A 1056
DSPF_sp_convolPassed 3/8*Ny*Nh + 80/8*Ny + 32N/A 288
DSPF_sp_dotp_cplxPassed 1/2*Nx + 45 N/A 256
DSPF_sp_dotp_cplxPassed 1/2*Nx + 48 N/A 320
DSPF_sp_erandPassed 4185 (N=128) 8173 (N=256)N/A 672
DSPF_sp_fftSPxSPPassed 816 (N=128) 1481 (N=256)N/A 1152
DSPF_sp_fftSPxSPPassed 579 (N=128) 1136 (N=256)N/A 2048
DSPF_sp_fircircPassed 2/4*Ny*Nh + 19/4*Ny + 34N/A 384
DSPF_sp_fir_cplxPassed 2/4*Nh*Nr + 40/4*Nr + 23N/A 512
DSPF_sp_fir_genPassed 1/4*Nr*Nh + 24/4*Nr + 34N/A 448
DSPF_sp_fir_r2Passed 3/8*Nr*Nh + 38/8*Nr + 44N/A 512
DSPF_sp_ifftSPxSPPassed 824 (N=128) 1494 (N=256)N/A 2368
DSPF_sp_ifftSPxSP_r2cPassed 574 (N=128) 1110 (N=256)N/A 2368
DSPF_sp_iirPassed 8*Nr + 48 N/A 480
DSPF_sp_iirlatPassed 7/4*Nx*Nk + 104/4*Nx + 50N/A 384
DSPF_sp_lmsPassed 1*Nx*Nh + 29*Nx + 37N/A 384
DSPF_sp_ludPassed 718676 (order=64) 5310351 (order=128)N/A 1280
DSPF_sp_lud_cmplxPassed 285634 (order=32) 1874678 (order=64)N/A 1248
DSPF_sp_lud_invPassed 2029020 (order=64) 15318956 (order=128)N/A 4224
DSPF_sp_lud_inv_cmplxPassed 492068 (order=32) 3551300 (order=64)N/A 3104
DSPF_sp_lud_solPassed 24943 (order=64) 79035 (order=128)N/A 1280
DSPF_sp_lud_sol_cmplxPassed 10398 (order=32) 28926 (order=64)N/A 3808
DSPF_sp_mat_mulPassed 3/8*r1*c2*c1 + 40/8*r1*c2 + 80/8*r1 + 18N/A 416
DSPF_sp_mat_mul_cplxPassed 5/8*r1*c2*c1 + 58/8*r1*c2 + 100/8*r1 + 30N/A 672
DSPF_sp_mat_mul_gemmPassed 7/32*r1*c2*c1 + 108/32*r1*c2 + 408/32*c2 + 57N/A 1184
DSPF_sp_mat_mul_gemm_cplxPassed 1/2*r1*c2*c1 + 13/2*r1*c2 + 28/2*c2 + 36N/A 672
DSPF_sp_mat_submat_copyPassed 1/2*R*C + 26/2*C + 26N/A 256
DSPF_sp_mat_submat_copy_cplxPassed 1*R*C + 13*C + 22N/A 288
DSPF_sp_mat_transPassed 1/2*R*C + 8/2*R + 29N/A 192
DSPF_sp_mat_trans_cplxPassed 1*R*C + 6*R + 28N/A 128
DSPF_sp_maxidxPassed 3/4*Nx + 25 N/A 192
DSPF_sp_maxvalPassed 1/2*Nx + 25 N/A 160
DSPF_sp_minerrPassed 1321N/A 288
DSPF_sp_minvalPassed 1/2*Nx + 25 N/A 160
DSPF_sp_nrandPassed 5715 (N=128) 11164 (N=256)N/A 672
DSPF_sp_qrdPassed 1293235 (order=64) 3427172 (order=90)N/A 992
DSPF_sp_qrd_cmplxPassed 218589 (order=32) 1403741 (order=64)N/A 1536
DSPF_sp_svdPassed 9528872 (order=64) 68556197 (order=128)N/A 7424
DSPF_sp_svd_cmplxPassed 3505934 (order=32) 19381832 (order=64)N/A 9984
DSPF_sp_urandPassed 9*Nx + 53 N/A 960
DSPF_sp_vecaddPassed 3/4*Nx + 24 N/A 96
DSPF_sp_vecmulPassed 3/4*Nx + 24 N/A 96
DSPF_sp_vecrecipPassed 3/2*Nx + 36 N/A 192
DSPF_sp_vecsum_sqPassed 1/4*Nx + 51 N/A 416
DSPF_sp_w_vecPassed 3/4*Nx + 27 N/A 128
DSP_add16Passed 3/8*Nx + 22 N/A 96
DSP_add32Passed 3/4*Nx + 22 N/A 96
DSP_autocorPassed 1/8*Nx*Nr + 42/8*Nr + 41N/A 576
DSP_bexpPassed 1/2*Nx + 31 N/A 224
DSP_blk_eswap16Passed 1/4*n_hwords + 22 N/A 192
DSP_blk_eswap32Passed 1/2*n_words + 24 N/A 224
DSP_blk_eswap64Passed 1*n_dbls + 24 N/A 224
DSP_blk_movePassed 1/4*Nx + 19 N/A 64
DSP_dotprodPassed 1/4*Nx + 31 N/A 96
DSP_dotp_sqrPassed 1/2*Nx + 31 N/A 128
DSP_fft16x16Passed 454 (N=128) 743 (N=256)N/A 1472
DSP_fft16x16_rPassed 458 (N=128) 841 (N=256)N/A 1344
DSP_fft16x16_imrePassed 454 (N=128) 743 (N=256)N/A 1472
DSP_fft16x32Passed 813 (N=128) 1469 (N=256)N/A 2496
DSP_fft32x32Passed 801 (N=128) 1457 (N=256)N/A 1248
DSP_fft32x32sPassed 792 (N=128) 1448 (N=256)N/A 1280
DSP_firlms2Passed 3/4*NH + 37 N/A 160
DSP_fir_cplxPassed 3/8*Nr*Nh + 32/8*Nr + 28N/A 320
DSP_fir_cplx_hM4X4Passed 5/16*Nr*Nh + 76/16*Nr + 35N/A 416
DSP_fir_genPassed 5/32*Nr*Nh + 60/32*Nr + 53N/A 768
DSP_fir_gen_hM17_rA8X8Passed 4/32*Nr*Nh + 68/32*Nr + 41N/A 512
DSP_fir_r4Passed 1/8*Nr*Nh + 16/8*Nr + 41N/A 640
DSP_fir_r8Passed 1/8*Nr*Nh + 16/8*Nr + 41N/A 640
DSP_fir_r8_h16Passed 3/2*Nr + 40 N/A 320
DSP_fir_r8_h24Passed 11/4*Nr + 41 N/A 352
DSP_fir_r8_h8Passed 1*Nr + 42 N/A 256
DSP_fir_r8_hM16_rM8A8X8Passed 7/64*Nr*Nh + 208/64*Nr + 48N/A 672
DSP_fir_r8Passed 5/16*Nr*Nh + 100/16*Nr + 34N/A 416
DSP_fltoq15Passed 1/2*Nx + 33 N/A 160
DSP_ifft16x16Passed 454 (N=128) 743 (N=256)N/A 1472
DSP_ifft16x16_imrePassed 454 (N=128) 743 (N=256)N/A 1472
DSP_ifft16x32Passed 758 (N=128) 1414 (N=256)N/A 1184
DSP_ifft32x32Passed 805 (N=128) 1461 (N=256)N/A 1248
DSP_iir_real16Passed 4*Nx + 34 N/A 480
DSP_iir_latPassed 5/4*Nx*Nk + 92/4*Nx + 28N/A 352
DSP_iir_ssPassed 4/8*nCoefs + 31 N/A 192
DSP_mat_mulPassed 2/8*r1*c2*c1 + 21/8*r1*c2 + 38/8*c2 + 23N/A 512
DSP_mat_mul_cplxPassed 1/4*r1*c2*c1 + 26/4*r1*c2 + 24/4*r1 + 36N/A 480
DSP_mat_transPassed 1/2*R*C + 31N/A 352
DSP_maxidxPassed 3/16*Nx + 72 N/A 256
DSP_maxvalPassed 1/8*Nx + 26 N/A 128
DSP_minerrorPassed 609N/A 416
DSP_minvalPassed 1/8*Nx + 29 N/A 128
DSP_mul32Passed 3/4*Nx + 26 N/A 96
DSP_neg32Passed 1/2*Nx + 21 N/A 96
DSP_q15toflPassed 1/2*Nx + 34 N/A 128
DSP_recip16Passed 8*Nx + 45 N/A 256
DSP_urand16Passed 3*Nx + 32 N/A 352
DSP_urand32Passed 9*Nx + 35 N/A 672
DSP_vecsum_sqPassed 1/4*Nx + 25 N/A 64
DSP_w_vecPassed 3/8*Nr + 35 N/A 160
+

Top +

+ +
+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Test Parameters
Precision:Fixed Point
Endianness:Little
Object File Format:ELF
Platform:CCS Simulator
Cores Used: 1
CCS Version:5.4.0.00091
CGT Version:7.4.2
KERNELRESULTCYCLE FORMULAPROGRAM
MEMORY
EQUATIONVARIABLES
DSPF_dp_choleskyPassed 190827 (order= 64) 1276587 (order=128)N/A 1056
DSPF_dp_cholesky_cmplxPassed 56179 (order=32) 254123 (order=64)N/A 1440
DSPF_dp_fftDPxDPPassed 1670 (N=128) 3174 (N=256)N/A 1216
DSPF_dp_ifftDPxDPPassed 1703 (N=128) 3211 (N=256)N/A 1376
DSPF_dp_ludPassed 1210244 (order=64) 9375741 (order=128)N/A 1152
DSPF_dp_lud_cmplxPassed 289047 (order=32) 1887627 (order=64)N/A 1248
DSPF_dp_lud_invPassed 2480865 (order=64) 19160321 (order=128)N/A 3872
DSPF_dp_lud_inv_cmplxPassed 836318 (order=32) 6338958 (order=64)N/A 4480
DSPF_dp_lud_solPassed 26541 (order=64) 85807 (order=128)N/A 3296
DSPF_dp_lud_sol_cmplxPassed 10911 (order=32) 30007 (order=64)N/A 3328
DSPF_dp_mat_mul_gemmPassed 1/2*r1*c2*c1 + 12/2*r1*c2 + 20/2*c2 + 23N/A 608
DSPF_dp_mat_submat_copyPassed 1*R*C + 13*C + 22N/A 288
DSPF_dp_mat_transPassed 1*R*C + 6*R + 28N/A 128
DSPF_dp_qrdPassed 1322287 (order=64) 9632367 (order=128)N/A 1056
DSPF_dp_qrd_cmplxPassed 278824 (order=32) 1841736 (order=64)N/A 1888
DSPF_dp_svdPassed 13738472 (order=64) 99158236 (order=128)N/A 7584
DSPF_dp_svd_cmplxPassed 4637406 (order=32) 26016854 (order=64)N/A 11968
DSPF_sp_autocorPassed 1/4*Nx*Nr + 23/4*Nr + 34N/A 448
DSPF_sp_biquadPassed 7*Nx + 61 N/A 352
DSPF_sp_bitrev_cplxPassed 9/4*Nx + 38 N/A 288
DSPF_sp_choleskyPassed 5209 (order=16) 21819 (order=32)N/A 1984
DSPF_sp_cholesky_cmplxPassed 52548 (order= 32) 250436 (order= 64)N/A 1056
DSPF_sp_convolPassed 3/8*Ny*Nh + 80/8*Ny + 32N/A 288
DSPF_sp_dotp_cplxPassed 1/2*Nx + 45 N/A 256
DSPF_sp_dotp_cplxPassed 1/2*Nx + 48 N/A 320
DSPF_sp_erandPassed 4185 (N=128) 8173 (N=256)N/A 640
DSPF_sp_fftSPxSPPassed 816 (N=128) 1481 (N=256)N/A 1152
DSPF_sp_fftSPxSPPassed 579 (N=128) 1136 (N=256)N/A 2048
DSPF_sp_fircircPassed 2/4*Ny*Nh + 19/4*Ny + 34N/A 384
DSPF_sp_fir_cplxPassed 2/4*Nh*Nr + 40/4*Nr + 23N/A 512
DSPF_sp_fir_genPassed 1/4*Nr*Nh + 24/4*Nr + 34N/A 448
DSPF_sp_fir_r2Passed 3/8*Nr*Nh + 38/8*Nr + 44N/A 512
DSPF_sp_ifftSPxSPPassed 824 (N=128) 1494 (N=256)N/A 2368
DSPF_sp_ifftSPxSP_r2cPassed 574 (N=128) 1110 (N=256)N/A 2368
DSPF_sp_iirPassed 8*Nr + 48 N/A 480
DSPF_sp_iirlatPassed 7/4*Nx*Nk + 104/4*Nx + 50N/A 384
DSPF_sp_lmsPassed 1*Nx*Nh + 29*Nx + 37N/A 384
DSPF_sp_ludPassed 718676 (order=64) 5310351 (order=128)N/A 1280
DSPF_sp_lud_cmplxPassed 282472 (order=32) 1862204 (order=64)N/A 1248
DSPF_sp_lud_invPassed 2029020 (order=64) 15318956 (order=128)N/A 4224
DSPF_sp_lud_inv_cmplxPassed 492068 (order=32) 3551300 (order=64)N/A 3104
DSPF_sp_lud_solPassed 24943 (order=64) 79035 (order=128)N/A 1280
DSPF_sp_lud_sol_cmplxPassed 10398 (order=32) 28926 (order=64)N/A 3808
DSPF_sp_mat_mulPassed 3/8*r1*c2*c1 + 40/8*r1*c2 + 80/8*r1 + 18N/A 416
DSPF_sp_mat_mul_cplxPassed 5/8*r1*c2*c1 + 58/8*r1*c2 + 100/8*r1 + 30N/A 672
DSPF_sp_mat_mul_gemmPassed 7/32*r1*c2*c1 + 108/32*r1*c2 + 408/32*c2 + 57N/A 1184
DSPF_sp_mat_mul_gemm_cplxPassed 1/2*r1*c2*c1 + 13/2*r1*c2 + 28/2*c2 + 36N/A 672
DSPF_sp_mat_submat_copyPassed 1/2*R*C + 26/2*C + 26N/A 256
DSPF_sp_mat_submat_copy_cplxPassed 1*R*C + 13*C + 22N/A 288
DSPF_sp_mat_transPassed 1/2*R*C + 8/2*R + 29N/A 192
DSPF_sp_mat_trans_cplxPassed 1*R*C + 6*R + 28N/A 128
DSPF_sp_maxidxPassed 3/4*Nx + 25 N/A 192
DSPF_sp_maxvalPassed 1/2*Nx + 25 N/A 160
DSPF_sp_minerrPassed 1321N/A 288
DSPF_sp_minvalPassed 1/2*Nx + 25 N/A 160
DSPF_sp_nrandPassed 5715 (N=128) 11164 (N=256)N/A 640
DSPF_sp_qrdPassed 1292857 (order=64) 3426638 (order=90)N/A 992
DSPF_sp_qrd_cmplxPassed 218403 (order=32) 1403363 (order=64)N/A 1536
DSPF_sp_svdPassed 9493706 (order=64) 68419055 (order=128)N/A 7424
DSPF_sp_svd_cmplxPassed 3468548 (order=32) 19241206 (order=64)N/A 9984
DSPF_sp_urandPassed 9*Nx + 53 N/A 928
DSPF_sp_vecaddPassed 3/4*Nx + 24 N/A 96
DSPF_sp_vecmulPassed 3/4*Nx + 24 N/A 96
DSPF_sp_vecrecipPassed 3/2*Nx + 36 N/A 192
DSPF_sp_vecsum_sqPassed 1/4*Nx + 51 N/A 416
DSPF_sp_w_vecPassed 3/4*Nx + 27 N/A 128
DSP_add16Passed 3/8*Nx + 22 N/A 96
DSP_add32Passed 3/4*Nx + 22 N/A 96
DSP_autocorPassed 1/8*Nx*Nr + 42/8*Nr + 41N/A 576
DSP_bexpPassed 1/2*Nx + 31 N/A 224
DSP_blk_eswap16Passed 1/4*n_hwords + 22 N/A 192
DSP_blk_eswap32Passed 1/2*n_words + 24 N/A 224
DSP_blk_eswap64Passed 1*n_dbls + 24 N/A 224
DSP_blk_movePassed 1/4*Nx + 19 N/A 64
DSP_dotprodPassed 1/4*Nx + 31 N/A 96
DSP_dotp_sqrPassed 1/2*Nx + 31 N/A 128
DSP_fft16x16Passed 454 (N=128) 743 (N=256)N/A 1472
DSP_fft16x16_rPassed 458 (N=128) 841 (N=256)N/A 1344
DSP_fft16x16_imrePassed 454 (N=128) 743 (N=256)N/A 1472
DSP_fft16x32Passed 813 (N=128) 1469 (N=256)N/A 2496
DSP_fft32x32Passed 801 (N=128) 1457 (N=256)N/A 1248
DSP_fft32x32sPassed 792 (N=128) 1448 (N=256)N/A 1280
DSP_firlms2Passed 3/4*NH + 37 N/A 160
DSP_fir_cplxPassed 3/8*Nr*Nh + 32/8*Nr + 28N/A 320
DSP_fir_cplx_hM4X4Passed 5/16*Nr*Nh + 76/16*Nr + 35N/A 416
DSP_fir_genPassed 5/32*Nr*Nh + 60/32*Nr + 53N/A 768
DSP_fir_gen_hM17_rA8X8Passed 4/32*Nr*Nh + 68/32*Nr + 41N/A 512
DSP_fir_r4Passed 1/8*Nr*Nh + 16/8*Nr + 41N/A 640
DSP_fir_r8Passed 1/8*Nr*Nh + 16/8*Nr + 41N/A 640
DSP_fir_r8_h16Passed 3/2*Nr + 40 N/A 320
DSP_fir_r8_h24Passed 11/4*Nr + 41 N/A 352
DSP_fir_r8_h8Passed 1*Nr + 42 N/A 256
DSP_fir_r8_hM16_rM8A8X8Passed 7/64*Nr*Nh + 208/64*Nr + 48N/A 672
DSP_fir_r8Passed 5/16*Nr*Nh + 100/16*Nr + 34N/A 416
DSP_fltoq15Passed 1/2*Nx + 33 N/A 160
DSP_ifft16x16Passed 454 (N=128) 743 (N=256)N/A 1472
DSP_ifft16x16_imrePassed 454 (N=128) 743 (N=256)N/A 1472
DSP_ifft16x32Passed 758 (N=128) 1414 (N=256)N/A 1184
DSP_ifft32x32Passed 805 (N=128) 1461 (N=256)N/A 1248
DSP_iir_real16Passed 4*Nx + 34 N/A 480
DSP_iir_latPassed 5/4*Nx*Nk + 92/4*Nx + 28N/A 352
DSP_iir_ssPassed 4/8*nCoefs + 31 N/A 192
DSP_mat_mulPassed 2/8*r1*c2*c1 + 21/8*r1*c2 + 38/8*c2 + 23N/A 512
DSP_mat_mul_cplxPassed 1/4*r1*c2*c1 + 26/4*r1*c2 + 24/4*r1 + 36N/A 480
DSP_mat_transPassed 1/2*R*C + 31N/A 352
DSP_maxidxPassed 3/16*Nx + 72 N/A 256
DSP_maxvalPassed 1/8*Nx + 26 N/A 128
DSP_minerrorPassed 609N/A 416
DSP_minvalPassed 1/8*Nx + 29 N/A 128
DSP_mul32Passed 3/4*Nx + 26 N/A 96
DSP_neg32Passed 1/2*Nx + 21 N/A 96
DSP_q15toflPassed 1/2*Nx + 34 N/A 128
DSP_recip16Passed 8*Nx + 45 N/A 256
DSP_urand16Passed 3*Nx + 32 N/A 352
DSP_urand32Passed 9*Nx + 35 N/A 640
DSP_vecsum_sqPassed 1/4*Nx + 25 N/A 64
DSP_w_vecPassed 3/8*Nr + 35 N/A 160
+

Top +

+ +
+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Test Parameters
Precision:Fixed Point
Endianness:Big
Object File Format:COFF
Platform:CCS Simulator
Cores Used: 1
CCS Version:5.4.0.00091
CGT Version:7.4.2
KERNELRESULTCYCLE FORMULAPROGRAM
MEMORY
EQUATIONVARIABLES
DSPF_dp_choleskyPassed 190827 (order= 64) 1276587 (order=128)N/A 1056
DSPF_dp_cholesky_cmplxPassed 56371 (order=32) 254507 (order=64)N/A 1440
DSPF_dp_fftDPxDPPassed 1670 (N=128) 3174 (N=256)N/A 1216
DSPF_dp_ifftDPxDPPassed 1703 (N=128) 3211 (N=256)N/A 1376
DSPF_dp_ludPassed 1210244 (order=64) 9375741 (order=128)N/A 1152
DSPF_dp_lud_cmplxPassed 292209 (order=32) 1900101 (order=64)N/A 1248
DSPF_dp_lud_invPassed 2480865 (order=64) 19160321 (order=128)N/A 3872
DSPF_dp_lud_inv_cmplxPassed 836318 (order=32) 6338958 (order=64)N/A 4480
DSPF_dp_lud_solPassed 26541 (order=64) 85807 (order=128)N/A 3296
DSPF_dp_lud_sol_cmplxPassed 10911 (order=32) 30007 (order=64)N/A 3328
DSPF_dp_mat_mul_gemmPassed 1/2*r1*c2*c1 + 12/2*r1*c2 + 20/2*c2 + 23N/A 608
DSPF_dp_mat_submat_copyPassed 1*R*C + 13*C + 22N/A 288
DSPF_dp_mat_transPassed 1*R*C + 6*R + 28N/A 128
DSPF_dp_qrdPassed 1322665 (order=64) 9633129 (order=128)N/A 1056
DSPF_dp_qrd_cmplxPassed 279010 (order=32) 1842114 (order=64)N/A 1888
DSPF_dp_svdPassed 13784456 (order=64) 99337108 (order=128)N/A 7584
DSPF_dp_svd_cmplxPassed 4693942 (order=32) 26228468 (order=64)N/A 11968
DSPF_sp_autocorPassed 1/4*Nx*Nr + 26/4*Nr + 36N/A 448
DSPF_sp_biquadPassed 7*Nx + 57 N/A 320
DSPF_sp_bitrev_cplxPassed 9/4*Nx + 38 N/A 288
DSPF_sp_choleskyPassed 5209 (order=16) 21819 (order=32)N/A 1984
DSPF_sp_cholesky_cmplxPassed 49418 (order= 32) 237018 (order= 64)N/A 960
DSPF_sp_convolPassed 3/8*Ny*Nh + 80/8*Ny + 32N/A 288
DSPF_sp_dotp_cplxPassed 1/2*Nx + 45 N/A 256
DSPF_sp_dotp_cplxPassed 1/2*Nx + 47 N/A 288
DSPF_sp_erandPassed 4185 (N=128) 8173 (N=256)N/A 672
DSPF_sp_fftSPxSPPassed 823 (N=128) 1491 (N=256)N/A 1504
DSPF_sp_fftSPxSPPassed 590 (N=128) 1144 (N=256)N/A 2496
DSPF_sp_fircircPassed 2/4*Ny*Nh + 23/4*Ny + 34N/A 384
DSPF_sp_fir_cplxPassed 2/4*Nh*Nr + 34/4*Nr + 23N/A 448
DSPF_sp_fir_genPassed 1/4*Nr*Nh + 21/4*Nr + 30N/A 448
DSPF_sp_fir_r2Passed 3/8*Nr*Nh + 38/8*Nr + 41N/A 512
DSPF_sp_ifftSPxSPPassed 824 (N=128) 1494 (N=256)N/A 2368
DSPF_sp_ifftSPxSP_r2cPassed 575 (N=128) 1111 (N=256)N/A 2368
DSPF_sp_iirPassed 8*Nr + 48 N/A 480
DSPF_sp_iirlatPassed 7/4*Nx*Nk + 104/4*Nx + 50N/A 352
DSPF_sp_lmsPassed 1*Nx*Nh + 29*Nx + 36N/A 352
DSPF_sp_ludPassed 718676 (order=64) 5310351 (order=128)N/A 1280
DSPF_sp_lud_cmplxPassed 274145 (order=32) 1785125 (order=64)N/A 1184
DSPF_sp_lud_invPassed 2029020 (order=64) 15318956 (order=128)N/A 4224
DSPF_sp_lud_inv_cmplxPassed 467637 (order=32) 3408277 (order=64)N/A 2944
DSPF_sp_lud_solPassed 24943 (order=64) 79035 (order=128)N/A 1280
DSPF_sp_lud_sol_cmplxPassed 10615 (order=32) 29367 (order=64)N/A 3648
DSPF_sp_mat_mulPassed 3/8*r1*c2*c1 + 40/8*r1*c2 + 80/8*r1 + 18N/A 416
DSPF_sp_mat_mul_cplxPassed 5/8*r1*c2*c1 + 48/8*r1*c2 + 100/8*r1 + 25N/A 640
DSPF_sp_mat_mul_gemmPassed 7/32*r1*c2*c1 + 90/32*r1*c2 + 384/32*c2 + 64N/A 1216
DSPF_sp_mat_mul_gemm_cplxPassed 1/2*r1*c2*c1 + 12/2*r1*c2 + 28/2*c2 + 36N/A 640
DSPF_sp_mat_submat_copyPassed 1/2*R*C + 26/2*C + 26N/A 256
DSPF_sp_mat_submat_copy_cplxPassed 1*R*C + 13*C + 22N/A 288
DSPF_sp_mat_transPassed 1/2*R*C + 7/2*R + 29N/A 192
DSPF_sp_mat_trans_cplxPassed 1*R*C + 6*R + 28N/A 128
DSPF_sp_maxidxPassed 3/4*Nx + 25 N/A 192
DSPF_sp_maxvalPassed 1/2*Nx + 25 N/A 160
DSPF_sp_minerrPassed 1321N/A 288
DSPF_sp_minvalPassed 1/2*Nx + 25 N/A 160
DSPF_sp_nrandPassed 5715 (N=128) 11164 (N=256)N/A 672
DSPF_sp_qrdPassed 1293235 (order=64) 3427172 (order=90)N/A 992
DSPF_sp_qrd_cmplxPassed 215520 (order=32) 1391456 (order=64)N/A 1440
DSPF_sp_svdPassed 9528792 (order=64) 68556039 (order=128)N/A 7392
DSPF_sp_svd_cmplxPassed 3213902 (order=32) 18268130 (order=64)N/A 8640
DSPF_sp_urandPassed 9*Nx + 53 N/A 960
DSPF_sp_vecaddPassed 3/4*Nx + 24 N/A 96
DSPF_sp_vecmulPassed 3/4*Nx + 24 N/A 96
DSPF_sp_vecrecipPassed 3/2*Nx + 36 N/A 192
DSPF_sp_vecsum_sqPassed 1/4*Nx + 51 N/A 416
DSPF_sp_w_vecPassed 3/4*Nx + 27 N/A 128
DSP_add16Passed 3/8*Nx + 22 N/A 96
DSP_add32Passed 3/4*Nx + 22 N/A 96
DSP_autocorPassed 1/8*Nx*Nr + 38/8*Nr + 33N/A 512
DSP_bexpPassed 1/2*Nx + 31 N/A 224
DSP_blk_eswap16Passed 1/4*n_hwords + 22 N/A 192
DSP_blk_eswap32Passed 1/2*n_words + 24 N/A 224
DSP_blk_eswap64Passed 1*n_dbls + 24 N/A 224
DSP_blk_movePassed 1/4*Nx + 19 N/A 64
DSP_dotprodPassed 1/4*Nx + 31 N/A 96
DSP_dotp_sqrPassed 1/2*Nx + 31 N/A 128
DSP_fft16x16Passed 454 (N=128) 743 (N=256)N/A 1504
DSP_fft16x16_rPassed 458 (N=128) 841 (N=256)N/A 1344
DSP_fft16x16_imrePassed 454 (N=128) 743 (N=256)N/A 1504
DSP_fft16x32Passed 758 (N=128) 1414 (N=256)N/A 1184
DSP_fft32x32Passed 804 (N=128) 1460 (N=256)N/A 1248
DSP_fft32x32sPassed 796 (N=128) 1452 (N=256)N/A 1248
DSP_firlms2Passed 3/4*NH + 37 N/A 160
DSP_fir_cplxPassed 3/8*Nr*Nh + 30/8*Nr + 28N/A 320
DSP_fir_cplx_hM4X4Passed 5/16*Nr*Nh + 76/16*Nr + 38N/A 448
DSP_fir_genPassed 5/32*Nr*Nh + 64/32*Nr + 53N/A 768
DSP_fir_gen_hM17_rA8X8Passed 5/32*Nr*Nh + 76/32*Nr + 43N/A 544
DSP_fir_r4Passed 1/8*Nr*Nh + 16/8*Nr + 41N/A 640
DSP_fir_r8Passed 1/8*Nr*Nh + 16/8*Nr + 41N/A 608
DSP_fir_r8_h16Passed 3/2*Nr + 45 N/A 288
DSP_fir_r8_h24Passed 10/4*Nr + 46 N/A 480
DSP_fir_r8_h8Passed 1*Nr + 38 N/A 224
DSP_fir_r8_hM16_rM8A8X8Passed 7/64*Nr*Nh + 248/64*Nr + 50N/A 704
DSP_fir_r8Passed 5/16*Nr*Nh + 100/16*Nr + 35N/A 448
DSP_fltoq15Passed 1/2*Nx + 33 N/A 160
DSP_ifft16x16Passed 454 (N=128) 743 (N=256)N/A 1504
DSP_ifft16x16_imrePassed 454 (N=128) 743 (N=256)N/A 1504
DSP_ifft16x32Passed 811 (N=128) 1467 (N=256)N/A 2464
DSP_ifft32x32Passed 801 (N=128) 1457 (N=256)N/A 1248
DSP_iir_real16Passed 4*Nx + 35 N/A 480
DSP_iir_latPassed 5/4*Nx*Nk + 92/4*Nx + 28N/A 352
DSP_iir_ssPassed 5/8*nCoefs + 30 N/A 224
DSP_mat_mulPassed 2/8*r1*c2*c1 + 21/8*r1*c2 + 38/8*c2 + 22N/A 512
DSP_mat_mul_cplxPassed 1/4*r1*c2*c1 + 27/4*r1*c2 + 24/4*r1 + 36N/A 480
DSP_mat_transPassed 1/2*R*C + 35N/A 352
DSP_maxidxPassed 3/16*Nx + 72 N/A 256
DSP_maxvalPassed 1/8*Nx + 26 N/A 128
DSP_minerrorPassed 612N/A 416
DSP_minvalPassed 1/8*Nx + 29 N/A 128
DSP_mul32Passed 3/4*Nx + 26 N/A 96
DSP_neg32Passed 1/2*Nx + 21 N/A 96
DSP_q15toflPassed 1/2*Nx + 34 N/A 128
DSP_recip16Passed 8*Nx + 45 N/A 256
DSP_urand16Passed 3*Nx + 32 N/A 352
DSP_urand32Passed 9*Nx + 35 N/A 672
DSP_vecsum_sqPassed 1/4*Nx + 25 N/A 64
DSP_w_vecPassed 3/8*Nr + 35 N/A 160
+

Top +

+ +
+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Test Parameters
Precision:Fixed Point
Endianness:Big
Object File Format:ELF
Platform:CCS Simulator
Cores Used: 1
CCS Version:5.4.0.00091
CGT Version:7.4.2
KERNELRESULTCYCLE FORMULAPROGRAM
MEMORY
EQUATIONVARIABLES
DSPF_dp_choleskyPassed 190827 (order= 64) 1276587 (order=128)N/A 1056
DSPF_dp_cholesky_cmplxPassed 56179 (order=32) 254123 (order=64)N/A 1440
DSPF_dp_fftDPxDPPassed 1670 (N=128) 3174 (N=256)N/A 1216
DSPF_dp_ifftDPxDPPassed 1703 (N=128) 3211 (N=256)N/A 1376
DSPF_dp_ludPassed 1210244 (order=64) 9375741 (order=128)N/A 1152
DSPF_dp_lud_cmplxPassed 289047 (order=32) 1887627 (order=64)N/A 1248
DSPF_dp_lud_invPassed 2480865 (order=64) 19160321 (order=128)N/A 3872
DSPF_dp_lud_inv_cmplxPassed 836318 (order=32) 6338958 (order=64)N/A 4480
DSPF_dp_lud_solPassed 26541 (order=64) 85807 (order=128)N/A 3296
DSPF_dp_lud_sol_cmplxPassed 10911 (order=32) 30007 (order=64)N/A 3328
DSPF_dp_mat_mul_gemmPassed 1/2*r1*c2*c1 + 12/2*r1*c2 + 20/2*c2 + 23N/A 608
DSPF_dp_mat_submat_copyPassed 1*R*C + 13*C + 22N/A 288
DSPF_dp_mat_transPassed 1*R*C + 6*R + 28N/A 128
DSPF_dp_qrdPassed 1322287 (order=64) 9632367 (order=128)N/A 1056
DSPF_dp_qrd_cmplxPassed 278824 (order=32) 1841736 (order=64)N/A 1888
DSPF_dp_svdPassed 13738472 (order=64) 99158236 (order=128)N/A 7584
DSPF_dp_svd_cmplxPassed 4637406 (order=32) 26016854 (order=64)N/A 11968
DSPF_sp_autocorPassed 1/4*Nx*Nr + 26/4*Nr + 36N/A 448
DSPF_sp_biquadPassed 7*Nx + 57 N/A 320
DSPF_sp_bitrev_cplxPassed 9/4*Nx + 38 N/A 288
DSPF_sp_choleskyPassed 5209 (order=16) 21819 (order=32)N/A 1984
DSPF_sp_cholesky_cmplxPassed 49226 (order= 32) 236634 (order= 64)N/A 960
DSPF_sp_convolPassed 3/8*Ny*Nh + 80/8*Ny + 32N/A 288
DSPF_sp_dotp_cplxPassed 1/2*Nx + 45 N/A 256
DSPF_sp_dotp_cplxPassed 1/2*Nx + 47 N/A 288
DSPF_sp_erandPassed 4185 (N=128) 8173 (N=256)N/A 640
DSPF_sp_fftSPxSPPassed 823 (N=128) 1491 (N=256)N/A 1504
DSPF_sp_fftSPxSPPassed 590 (N=128) 1144 (N=256)N/A 2496
DSPF_sp_fircircPassed 2/4*Ny*Nh + 23/4*Ny + 34N/A 384
DSPF_sp_fir_cplxPassed 2/4*Nh*Nr + 34/4*Nr + 23N/A 448
DSPF_sp_fir_genPassed 1/4*Nr*Nh + 21/4*Nr + 30N/A 448
DSPF_sp_fir_r2Passed 3/8*Nr*Nh + 38/8*Nr + 41N/A 512
DSPF_sp_ifftSPxSPPassed 824 (N=128) 1494 (N=256)N/A 2368
DSPF_sp_ifftSPxSP_r2cPassed 575 (N=128) 1111 (N=256)N/A 2368
DSPF_sp_iirPassed 8*Nr + 48 N/A 480
DSPF_sp_iirlatPassed 7/4*Nx*Nk + 104/4*Nx + 50N/A 352
DSPF_sp_lmsPassed 1*Nx*Nh + 29*Nx + 36N/A 352
DSPF_sp_ludPassed 718676 (order=64) 5310351 (order=128)N/A 1280
DSPF_sp_lud_cmplxPassed 270983 (order=32) 1772651 (order=64)N/A 1184
DSPF_sp_lud_invPassed 2029020 (order=64) 15318956 (order=128)N/A 4224
DSPF_sp_lud_inv_cmplxPassed 467637 (order=32) 3408277 (order=64)N/A 2944
DSPF_sp_lud_solPassed 24943 (order=64) 79035 (order=128)N/A 1280
DSPF_sp_lud_sol_cmplxPassed 10615 (order=32) 29367 (order=64)N/A 3648
DSPF_sp_mat_mulPassed 3/8*r1*c2*c1 + 40/8*r1*c2 + 80/8*r1 + 18N/A 416
DSPF_sp_mat_mul_cplxPassed 5/8*r1*c2*c1 + 48/8*r1*c2 + 100/8*r1 + 25N/A 640
DSPF_sp_mat_mul_gemmPassed 7/32*r1*c2*c1 + 90/32*r1*c2 + 384/32*c2 + 64N/A 1216
DSPF_sp_mat_mul_gemm_cplxPassed 1/2*r1*c2*c1 + 12/2*r1*c2 + 28/2*c2 + 36N/A 640
DSPF_sp_mat_submat_copyPassed 1/2*R*C + 26/2*C + 26N/A 256
DSPF_sp_mat_submat_copy_cplxPassed 1*R*C + 13*C + 22N/A 288
DSPF_sp_mat_transPassed 1/2*R*C + 7/2*R + 29N/A 192
DSPF_sp_mat_trans_cplxPassed 1*R*C + 6*R + 28N/A 128
DSPF_sp_maxidxPassed 3/4*Nx + 25 N/A 192
DSPF_sp_maxvalPassed 1/2*Nx + 25 N/A 160
DSPF_sp_minerrPassed 1321N/A 288
DSPF_sp_minvalPassed 1/2*Nx + 25 N/A 160
DSPF_sp_nrandPassed 5715 (N=128) 11164 (N=256)N/A 640
DSPF_sp_qrdPassed 1292857 (order=64) 3426638 (order=90)N/A 992
DSPF_sp_qrd_cmplxPassed 215334 (order=32) 1391078 (order=64)N/A 1440
DSPF_sp_svdPassed 9493626 (order=64) 68418897 (order=128)N/A 7392
DSPF_sp_svd_cmplxPassed 3178336 (order=32) 18130086 (order=64)N/A 8640
DSPF_sp_urandPassed 9*Nx + 53 N/A 928
DSPF_sp_vecaddPassed 3/4*Nx + 24 N/A 96
DSPF_sp_vecmulPassed 3/4*Nx + 24 N/A 96
DSPF_sp_vecrecipPassed 3/2*Nx + 36 N/A 192
DSPF_sp_vecsum_sqPassed 1/4*Nx + 51 N/A 416
DSPF_sp_w_vecPassed 3/4*Nx + 27 N/A 128
DSP_add16Passed 3/8*Nx + 22 N/A 96
DSP_add32Passed 3/4*Nx + 22 N/A 96
DSP_autocorPassed 1/8*Nx*Nr + 38/8*Nr + 33N/A 512
DSP_bexpPassed 1/2*Nx + 31 N/A 224
DSP_blk_eswap16Passed 1/4*n_hwords + 22 N/A 192
DSP_blk_eswap32Passed 1/2*n_words + 24 N/A 224
DSP_blk_eswap64Passed 1*n_dbls + 24 N/A 224
DSP_blk_movePassed 1/4*Nx + 19 N/A 64
DSP_dotprodPassed 1/4*Nx + 31 N/A 96
DSP_dotp_sqrPassed 1/2*Nx + 31 N/A 128
DSP_fft16x16Passed 454 (N=128) 743 (N=256)N/A 1504
DSP_fft16x16_rPassed 458 (N=128) 841 (N=256)N/A 1344
DSP_fft16x16_imrePassed 454 (N=128) 743 (N=256)N/A 1504
DSP_fft16x32Passed 758 (N=128) 1414 (N=256)N/A 1184
DSP_fft32x32Passed 804 (N=128) 1460 (N=256)N/A 1248
DSP_fft32x32sPassed 796 (N=128) 1452 (N=256)N/A 1248
DSP_firlms2Passed 3/4*NH + 37 N/A 160
DSP_fir_cplxPassed 3/8*Nr*Nh + 30/8*Nr + 28N/A 320
DSP_fir_cplx_hM4X4Passed 5/16*Nr*Nh + 76/16*Nr + 38N/A 448
DSP_fir_genPassed 5/32*Nr*Nh + 64/32*Nr + 53N/A 768
DSP_fir_gen_hM17_rA8X8Passed 5/32*Nr*Nh + 76/32*Nr + 43N/A 544
DSP_fir_r4Passed 1/8*Nr*Nh + 16/8*Nr + 41N/A 640
DSP_fir_r8Passed 1/8*Nr*Nh + 16/8*Nr + 41N/A 608
DSP_fir_r8_h16Passed 3/2*Nr + 45 N/A 288
DSP_fir_r8_h24Passed 10/4*Nr + 46 N/A 480
DSP_fir_r8_h8Passed 1*Nr + 38 N/A 224
DSP_fir_r8_hM16_rM8A8X8Passed 7/64*Nr*Nh + 248/64*Nr + 50N/A 704
DSP_fir_r8Passed 5/16*Nr*Nh + 100/16*Nr + 35N/A 448
DSP_fltoq15Passed 1/2*Nx + 33 N/A 160
DSP_ifft16x16Passed 454 (N=128) 743 (N=256)N/A 1504
DSP_ifft16x16_imrePassed 454 (N=128) 743 (N=256)N/A 1504
DSP_ifft16x32Passed 811 (N=128) 1467 (N=256)N/A 2464
DSP_ifft32x32Passed 801 (N=128) 1457 (N=256)N/A 1248
DSP_iir_real16Passed 4*Nx + 35 N/A 480
DSP_iir_latPassed 5/4*Nx*Nk + 92/4*Nx + 28N/A 352
DSP_iir_ssPassed 5/8*nCoefs + 30 N/A 224
DSP_mat_mulPassed 2/8*r1*c2*c1 + 21/8*r1*c2 + 38/8*c2 + 22N/A 512
DSP_mat_mul_cplxPassed 1/4*r1*c2*c1 + 27/4*r1*c2 + 24/4*r1 + 36N/A 480
DSP_mat_transPassed 1/2*R*C + 35N/A 352
DSP_maxidxPassed 3/16*Nx + 72 N/A 256
DSP_maxvalPassed 1/8*Nx + 26 N/A 128
DSP_minerrorPassed 612N/A 416
DSP_minvalPassed 1/8*Nx + 29 N/A 128
DSP_mul32Passed 3/4*Nx + 26 N/A 96
DSP_neg32Passed 1/2*Nx + 21 N/A 96
DSP_q15toflPassed 1/2*Nx + 34 N/A 128
DSP_recip16Passed 8*Nx + 45 N/A 256
DSP_urand16Passed 3*Nx + 32 N/A 352
DSP_urand32Passed 9*Nx + 35 N/A 640
DSP_vecsum_sqPassed 1/4*Nx + 25 N/A 64
DSP_w_vecPassed 3/8*Nr + 35 N/A 160
+

Top +

+ + + + + + diff --git a/ti/dsplib/docs/bundle/DSPLIB_C674x_TestReport.html b/ti/dsplib/docs/bundle/DSPLIB_C674x_TestReport.html new file mode 100644 index 0000000..e24532c --- /dev/null +++ b/ti/dsplib/docs/bundle/DSPLIB_C674x_TestReport.html @@ -0,0 +1,807 @@ + + + + + Project Runner Data + + + + + +

Texas Instruments Test Results

+

DSPLIB 3.4.0.0 C674x

+

+ +
+

 

+

Session Summary

+ + + + + + + + + + + + + + + + + + + +
EndiannessObject FormatLink
Little EndianCOFF FormatView Results
ELF FormatView Results
+
+ + +
+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Test Parameters
Precision:Fixed Point
Endianness:Little
Object File Format:COFF
Platform:CCS Simulator
Cores Used: 1
CCS Version:5.4.0.00091
CGT Version:7.4.2
KERNELRESULTCYCLE FORMULAPROGRAM
MEMORY
EQUATIONVARIABLES
DSPF_blk_eswap16Passed 1/4*n_hwords + 30 N/A 160
DSPF_blk_eswap32Passed 1/2*n_words + 32 N/A 192
DSPF_blk_eswap64Passed 1*n_dbls + 32 N/A 192
DSPF_fltoq15Passed 1*Nx + 49 N/A 160
DSPF_q15toflPassed 1/2*Nx + 37 N/A 128
DSPF_sp_autocorPassed 4/8*Nx*Nr + 25/8*Nr + 40N/A 1248
DSPF_sp_biquadPassed 8*Nx + 72 N/A 352
DSPF_sp_bitrev_cplxPassed 9/4*Nx + 49 N/A 288
DSPF_sp_blk_movePassed 1/2*Nx + 27 N/A 64
Cycle Counts:Passed 4156 (N=256)N/A 1152
Cycle Counts:Passed 4755 (N=256)N/A 896
DSPF_sp_convolPassed 4/8*Ny*Nh + 21/8*Ny + 55N/A 1184
DSPF_sp_dotp_cplxPassed 1/2*Nx + 57 N/A 288
DSPF_sp_dotp_cplxPassed 1*Nx + 41 N/A 224
DSPF_sp_fftSPxSPPassed 1069 (N=128) 1965 (N=256)N/A 928
DSPF_sp_fircircPassed 2/3*Ny*Nh + 7/3*Ny + 2/3*Nh + 51N/A 1376
DSPF_sp_fir_cplxPassed 2*Nh*Nr + 2*Nr + 50N/A 608
DSPF_sp_fir_genPassed 10/16*Nr*Nh + 55N/A 416
DSPF_sp_fir_r2Passed 1/2*Nr*Nh + 2/2*Nr + 53N/A 832
Cycle Counts:Passed 5137 (N=256)N/A 1280
DSPF_sp_ifftSPxSPPassed 1089 (N=128) 1985 (N=256)N/A 960
DSPF_sp_iirPassed 21/2*Nr + 89 N/A 928
DSPF_sp_iirlatPassed 8/4*Nx*Nk + 132/4*Nx + 45N/A 864
DSPF_sp_lmsPassed 2*Nx*Nh + 32*Nx + 31N/A 256
DSPF_sp_mat_mulPassed 1/2*r1*c2*c1 + 12/2*r1*c2 + 9/2*r1 + 41N/A 864
DSPF_sp_mat_mul_cplxPassed 2*r1*c2*c1 + 53N/A 672
DSPF_sp_mat_mul_gemmPassed 16/32*r1*c2*c1 + 100/32*r1*c2 + 336/32*c2 + 54N/A 1440
DSPF_sp_mat_mul_gemm_cplxPassed 4/2*r1*c2*c1 + 19/2*r1*c2 + 18/2*c2 + 49N/A 864
DSPF_sp_mat_transPassed 1/2*R*C + 8/2*R + 38N/A 192
DSPF_sp_maxidxPassed 3/4*Nx + 33 N/A 192
DSPF_sp_maxvalPassed 1/2*Nx + 33 N/A 128
DSPF_sp_minerrPassed 1337N/A 288
DSPF_sp_minvalPassed 1/2*Nx + 33 N/A 128
DSPF_sp_vecmulPassed 3/4*Nx + 32 N/A 96
DSPF_sp_vecrecipPassed 2*Nx + 70 N/A 480
DSPF_sp_vecsum_sqPassed 1/2*Nx + 76 N/A 352
DSPF_sp_w_vecPassed 1*Nx + 38 N/A 96
DSP_fir_r8_h16Passed 10/4*Nr + 53 N/A 416
DSP_fir_r8_h24Passed 16/4*Nr + 62 N/A 608
DSP_fir_r8_h8Passed 5/4*Nr + 42 N/A 672
+

Top +

+ +
+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Test Parameters
Precision:Fixed Point
Endianness:Little
Object File Format:ELF
Platform:CCS Simulator
Cores Used: 1
CCS Version:5.4.0.00091
CGT Version:7.4.2
KERNELRESULTCYCLE FORMULAPROGRAM
MEMORY
EQUATIONVARIABLES
DSPF_blk_eswap16Passed 1/4*n_hwords + 30 N/A 160
DSPF_blk_eswap32Passed 1/2*n_words + 32 N/A 192
DSPF_blk_eswap64Passed 1*n_dbls + 32 N/A 192
DSPF_fltoq15Passed 1*Nx + 49 N/A 160
DSPF_q15toflPassed 1/2*Nx + 37 N/A 128
DSPF_sp_autocorPassed 4/8*Nx*Nr + 25/8*Nr + 40N/A 1248
DSPF_sp_biquadPassed 8*Nx + 72 N/A 352
DSPF_sp_bitrev_cplxPassed 9/4*Nx + 49 N/A 288
DSPF_sp_blk_movePassed 1/2*Nx + 27 N/A 64
Cycle Counts:Passed 4156 (N=256)N/A 1152
Cycle Counts:Passed 4755 (N=256)N/A 896
DSPF_sp_convolPassed 4/8*Ny*Nh + 21/8*Ny + 55N/A 1184
DSPF_sp_dotp_cplxPassed 1/2*Nx + 57 N/A 288
DSPF_sp_dotp_cplxPassed 1*Nx + 41 N/A 224
DSPF_sp_fftSPxSPPassed 1069 (N=128) 1965 (N=256)N/A 928
DSPF_sp_fircircPassed 2/3*Ny*Nh + 7/3*Ny + 2/3*Nh + 51N/A 1376
DSPF_sp_fir_cplxPassed 2*Nh*Nr + 2*Nr + 50N/A 608
DSPF_sp_fir_genPassed 10/16*Nr*Nh + 55N/A 416
DSPF_sp_fir_r2Passed 1/2*Nr*Nh + 2/2*Nr + 53N/A 832
Cycle Counts:Passed 5137 (N=256)N/A 1280
DSPF_sp_ifftSPxSPPassed 1089 (N=128) 1985 (N=256)N/A 960
DSPF_sp_iirPassed 21/2*Nr + 89 N/A 928
DSPF_sp_iirlatPassed 8/4*Nx*Nk + 132/4*Nx + 45N/A 864
DSPF_sp_lmsPassed 2*Nx*Nh + 32*Nx + 31N/A 256
DSPF_sp_mat_mulPassed 1/2*r1*c2*c1 + 12/2*r1*c2 + 9/2*r1 + 41N/A 864
DSPF_sp_mat_mul_cplxPassed 2*r1*c2*c1 + 53N/A 672
DSPF_sp_mat_mul_gemmPassed 16/32*r1*c2*c1 + 100/32*r1*c2 + 336/32*c2 + 54N/A 1440
DSPF_sp_mat_mul_gemm_cplxPassed 4/2*r1*c2*c1 + 19/2*r1*c2 + 18/2*c2 + 49N/A 864
DSPF_sp_mat_transPassed 1/2*R*C + 8/2*R + 38N/A 192
DSPF_sp_maxidxPassed 3/4*Nx + 33 N/A 192
DSPF_sp_maxvalPassed 1/2*Nx + 33 N/A 128
DSPF_sp_minerrPassed 1337N/A 288
DSPF_sp_minvalPassed 1/2*Nx + 33 N/A 128
DSPF_sp_vecmulPassed 3/4*Nx + 32 N/A 96
DSPF_sp_vecrecipPassed 2*Nx + 70 N/A 480
DSPF_sp_vecsum_sqPassed 1/2*Nx + 76 N/A 352
DSPF_sp_w_vecPassed 1*Nx + 38 N/A 96
DSP_fir_r8_h16Passed 10/4*Nr + 53 N/A 416
DSP_fir_r8_h24Passed 16/4*Nr + 62 N/A 608
DSP_fir_r8_h8Passed 5/4*Nr + 42 N/A 672
+

Top +

+ + + + + + + + diff --git a/ti/dsplib/docs/bundle/doxygen/doxyfile.xdt b/ti/dsplib/docs/bundle/doxygen/doxyfile.xdt new file mode 100644 index 0000000..496ccef --- /dev/null +++ b/ti/dsplib/docs/bundle/doxygen/doxyfile.xdt @@ -0,0 +1,315 @@ +%%{ +/*! + * This template implements the Doxyfile + */ + /* Versioning */ + var ver = this.version; + var packageVersion = "\"Release "+ver[0]+"."+ver[1]+"."+ver[2]+"."+ver[3]; + switch (ver[4]) { + case 0: quality = "Pre-alpha"; + break; + case 1: quality = "Alpha"; + break; + case 2: quality = "Beta"; + break; + case 3: quality = ""; + break; + } + if (quality.length != 0) { + packageVersion = packageVersion.concat (" "+quality + "\""); + } + else { + packageVersion = packageVersion.concat ("\""); + } + + var target_x = this.ext; + var target = target_x.slice(0,target_x.length-1); + + var target_tru = new String(target_x); + if (target_x.match("c64Px")) { + target_tru = "c64x+"; + } + + var ver_string = ver[0] + "_" + ver[1] + "_" + ver[2] + "_" + ver[3]; + if (quality.length != 0) { + ver_string = ver_string.concat("_" + quality); + } + + /* Get capitalized bundle name */ + var bundleName = this.bundlename.toUpperCase(); + var quotedBundleName = "\"" + bundleName + "\""; + + /* Get test report link */ + switch(target) { + case "c66": + var testReport = "DSPLIB_C66x_TestReport.html"; + break; + case "c64P": + var testReport = "DSPLIB_C64Px_TestReport.html"; + break; + case "c674": + var testReport = "DSPLIB_C674x_TestReport.html"; + break; + } + +%%} + +# Doxyfile 1.5.1-p1 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = `quotedBundleName` +PROJECT_NUMBER = `packageVersion` +OUTPUT_DIRECTORY = ./docs/doxygen +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = YES +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = YES +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 2 +ALIASES = "PACKAGE =`bundleName`" \ + "package =`this.bundlename`" \ + "TARGET =`target`" \ + "TARGETX =`target_x`" \ + "TARGETN =`target_tru`" \ + "PKGTESTREP =`testReport`" \ + "PKGRELNOTES =`this.bundlename`_`ver_string`_release_notes.html" \ + "PKGMANHTML =`bundleName`_Users_Manual.html" \ + "PKGMANCHM =`bundleName`_Users_Manual.chm" \ + "PKGSWMFEST =`bundleName`_Software_Manifest.html" \ + "PKGDIR =`this.bundlename`_`target_x`_`ver_string`" \ + "PKGINSTDIR =`bundleName`_INSTALL_DIR" \ + "PKGMANLINK =./`this.bundlename`_html/index.html" \ + "PKGMODLINK =./`this.bundlename`_html/modules.html" \ + "PKGHEADER =`this.bundlename`.h" \ + "KERNELEX =DSP_fft16x16" \ + "TSTYLE =rules=\"none\" frame=\"box\" cellspacing=\"4\" cellpadding=\"4\" width=\"650px\" style=\"background-color: #ffff99; border: 2px #000000 solid;\"" \ + "NSTYLE =rules=\"none\" frame=\"box\" cellspacing=\"1\" cellpadding=\"1\" style=\"background-color: #ffff99; border: 1px #000000 solid;\"" \ + "ASTYLE =style=\"color: #ff0000; background-color: #ffff99\"" \ + "CSTYLE =width=\"150px\"" \ + "BLANK =target=\"_blank\"" \ + "SECSTART =
" \ + "SECEND =

 

" \ + "SPACER =

 

" \ + "HLINE =
" +OPTIMIZE_OUTPUT_FOR_C = YES +OPTIMIZE_OUTPUT_JAVA = NO +BUILTIN_STL_SUPPORT = NO +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = YES +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = YES +EXTRACT_PRIVATE = YES +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = NO +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = NO +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = `target.toUpperCase()` +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = NO +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = ./docs/doxygen +FILE_PATTERNS = *.h +RECURSIVE = NO +EXCLUDE = ./package ./version.h ./docs/doxygen/release.h +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = YES +IMAGE_PATH = ./docs/doxygen/images +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = YES +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +REFERENCES_LINK_SOURCE = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = NO +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = ./docs/doxygen/html/tiheader.htm +HTML_FOOTER = ./docs/doxygen/html/tifooter.htm +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = YES +CHM_FILE = ../../`bundleName`_Users_Manual.chm +HHC_LOCATION = hhc.exe +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = NO +TREEVIEW_WIDTH = 250 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = YES +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = NO +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = YES +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = YES +CALLER_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = gif +DOT_PATH = +DOTFILE_DIRS = ./ +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1024 +MAX_DOT_GRAPH_DEPTH = 1000 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO diff --git a/ti/dsplib/docs/bundle/doxygen/doxygen.h b/ti/dsplib/docs/bundle/doxygen/doxygen.h new file mode 100644 index 0000000..c4b24b5 --- /dev/null +++ b/ti/dsplib/docs/bundle/doxygen/doxygen.h @@ -0,0 +1,477 @@ +/* ======================================================================== * + * DSPLIB -- TI Digital Signal Processing Library * + * * + * Doxygen generation header file * + * * + * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ * + * * + * * + * Redistribution and use in source and binary forms, with or without * + * modification, are permitted provided that the following conditions * + * are met: * + * * + * Redistributions of source code must retain the above copyright * + * notice, this list of conditions and the following disclaimer. * + * * + * Redistributions in binary form must reproduce the above copyright * + * notice, this list of conditions and the following disclaimer in the * + * documentation and/or other materials provided with the * + * distribution. * + * * + * Neither the name of Texas Instruments Incorporated nor the names of * + * its contributors may be used to endorse or promote products derived * + * from this software without specific prior written permission. * + * * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * + * ======================================================================== */ + +/** + * @mainpage @PACKAGE User's Manual (@TARGETN) + * + * @HLINE + * + *
+ *

 

+ * @section start Getting Started + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Introduction@PACKAGE features and advantages
Package ContentsWhat the installation provides and where
BuildingHow to build @PACKAGE using CCS Projects or GNU make
IntegrationHow to integrate @PACKAGE into your code
ExamplesExample projects provided with @PACKAGE
API ReferenceDetailed usage for all @PACKAGE kernels
+ *
+ * + * + *
+ *

 

+ * @section dox Additional Documents + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Release NotesNew features, device support, known issues, etc.
Software ManifestLink to manifests for all packages in delivery
Cycle BenchmarksCycle and memory benchmarking
+ *
+ * + * + *
+ *

 

+ * @section linx Helpful Links + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Code Gen ToolsDownload site for TI DSP code generation tools
Code Composer StudioDownload site for Code Composer Studio IDE Version 4.2 and 5.0
TI-RTOS E2E ForumForum for @PACKAGE questions or remarks
Library WikiFind and download the latest DSPLIB release
+ *
+ * + * @SPACER + */ + +/** + * @page intro Introduction + * + *
Back
+ * + * The TI C6000 @PACKAGE is an optimized DSP Function Library for C programmers. It includes many + * C-callable, optimized, general-purpose signal-processing routines. These routines are typically + * used in computationally-intensive real-time applications where optimal execution speed is critical. + * By using these routines, you can achieve execution speeds considerably faster than equivalent code + * written in standard ANSI C language. In addition, by providing ready-to-use DSP functions, TI @PACKAGE + * can significantly shorten your DSP application development time. + * + * @SPACER + * + * @section features Features and Benefits + * @SECSTART + * The TI @TARGETN @PACKAGE contains commonly used digital signal processing routines, + * as well as source code that allows you to modify functions to match your + * specific needs. + * + * - ANSI C source code models + * - C-callable routines fully compatible with the TI C6000 compiler + * - Host library to enable PC based development and testing + * - CCS V5 projects to rebuild library or individual routines unit test. + * - Benchmarks + * - Tested against reference C model + * - Unit-test for each routines. + * @SECEND + * + * @section routines Software Routines + * @SECSTART + * The rich set of software routines included in @PACKAGE are organized into + * seven functional categories: + * + * -# Adaptive filtering + * -# Correlation + * -# Fast Fourier Transform + * -# Filtering and convolution + * -# Math + * -# Matrix + * -# Miscellaneous + * @SECEND + * + */ + + +/** + * @page install Package Contents + * + *
Back
+ * + * Unless otherwise specified, the @PACKAGE package installs under + * C:\\ti\\ in directory @PKGDIR. + * The directory structure of the installed package will look similar to that + * displayed below in Figure 1, though the install folder will match the installation + * version. + * + * + * @if C66 + * + * @elseif C64P + * + * @elseif C674 + * + * @else + * + * @endif + *
+ * @image html dsplib_c66_directory.jpg "Figure 1. @TARGETN @PACKAGE Directory Structure" + *
+ * @image html dsplib_c64P_directory.jpg "Figure 1. @TARGETN @PACKAGE Directory Structure" + *
+ * @image html dsplib_c674_directory.jpg "Figure 1. @TARGETN @PACKAGE Directory Structure" + *
+ * ERROR: UNRECOGNIZED TARGET + *
+ * + * The files that comprise the @PACKAGE installation can be categorized into the + * following five categories. + * + * -# Documentation + * -# Component Repository + * -# Kernel Source + * -# Eclipse Support + * -# Internal Meta Data + * + * The sections that follow provide details for each category. + * + * @SPACER + * + * @section documents Documentation + * @SECSTART + * Installation places all @PACKAGE documentation in a @c @b Docs directory in the + * @PACKAGE root. The following documentation comes with the delivery: + * + * - @PKGMANCHM (this document, CHM format) + * - @PKGMANHTML (this document, HTML format) + * - Release Notes + * - Software Manifest + * - Cycle Benchmarks + * @SECEND + * + * @section repository Component Repository + * @SECSTART + * The installation creates a @c @b Components directory in the @PACKAGE root + * folder. This directory serves as a repository for all packages included + * in the @PACKAGE installation. Each package in this repository is compressed. + * @SECEND + * + * @section kernelsrc Kernel Source + * @SECSTART + * The installation also creates a @c @b Packages directory in the @PACKAGE root + * folder. This directory holds all kernels contained within the @PACKAGE + * library. This directory follows the standard TI directory structure. As an + * example, the files that comprise the @PACKAGE kernel @c @b @KERNELEX will be + * located, relative to the @PACKAGE root installation directory, at + * packages/ti/@package/src/@KERNELEX/. + * + * Each Kernel is delivered with a CCSV5 project that illustrates + * the kernel API and performs several validation tests. Each project provides + * an estimate of kernel cycle and program memory requirements. + * @SECEND + * + * @section eclipsedir Eclipse Support + * @SECSTART + * The @c @b Eclipse directory contains all files required for @PACKAGE to be + * recognized by Eclipse (Code Composer Studio) as a plug-in. This is a support + * directory and can be safely ignored. + * @SECEND + * + * @section metadata Internal Meta Data + * @SECSTART + * The @PACKAGE installation creates a @c @b Package directory. This directory + * contains meta information required by the TI packaging tools. This is a + * support directory and can be safely ignored. + * @SECEND + * + */ + + +/** + * @page examples Examples + * + *
Back
+ * + * The FFT example is provided in the examples folder. + * This example demonstrates the usage of the various FFT kernels provided with the @PACKAGE. + * The example shows: + * + * - Twiddle factor generation for the various kernels + * - Scaling that needs to be applied to get similar output when using different kernels + * - Demonstrates the usage of FFT APIs + * + * The examples folder contains an FFT CCS V5 project and a ReadMe.txt. + * + */ + + +/** + * @page integrate Integration + * + *
Back
+ * + * Since @PACKAGE is a collection of individual kernels, any combination of the + * kernels that comprise @PACKAGE may be integrated into a system individually. + * Integration, for single or multiple kernels, requires four simple steps: + * + * -# Compile @PACKAGE for @TARGETN (optional) + * -# Add API calls within system code + * -# Compile system code + * -# Link @PACKAGE + * + * The sections that follow provide details regarding the above four steps. + * + * @SPACER + * + * @section compile Compile @PACKAGE for @TARGETN (optional) + * @SECSTART + * On installation, the @PACKAGE libraries are built and ready to link. Therefore, + * this step is only required when the original kernel source code has been refined + * or contributions have been added. See @ref building for details regarding + * re-building @PACKAGE . + * @SECEND + * + * @section kernelcalls Add @PACKAGE API Calls + * @SECSTART + * Add calls to @PACKAGE kernels within the system source code as necessary. + * Any system source file that contains calls to an @PACKAGE kernel will require + * that the @PACKAGE header file @PKGHEADER is included. See the + * @PACKAGE Function Reference for details on individual + * kernel APIs. + * @SECEND + * + * @section syscompile System Compilation + * @SECSTART + * To re-compile the system code, the path to the packages directory will + * need to be added to the compiler's include path search list. This path will + * depend on the @PACKAGE root installation directory. This allows the main + * @PACKAGE header file to be moved from within the installation directory and + * still recognize the individual kernel headers. + * @SECEND + * + * @section linking Linking @PACKAGE + * @SECSTART + * The path to the @PACKAGE libraries must be provided to the linker via:
+ * -l /packages/ti/dsplib/lib/dsplib.lib + * @SECEND + * + */ + + +/** + * @page building @PACKAGE Build Process + * + *
Back
+ * + * @PACKAGE is provided with two methods for re-building libraries. For those + * familiar with TI's Code Composer Studio (Eclipse-based) IDE, we provide project + * for rebuilding library with relative ease. Likewise, many + * developers are more comfortable with the GNU Make utility. As such, we also + * provide Makefiles to re-build the @PACKAGE library. + * + * @SPACER + * + * @section ccs_howto Code Composer Studio + * @SECSTART + * This release of @PACKAGE provides Code Composer Studio (CCS) Version 5 project + * to re-build library. This project is located in the @c @b packages/ti/@package/lib folder. + * + * Follow the instructions at @ref ccs_build for more details. + * @SECEND + * + * @section gnu_howto GNU Makefile + * @SECSTART + * A GNU @b makefile is provided for rebuilding @PACKAGE via the GNU make utility. + * This file is located in the @c @b packages/ti/@package folder. The makefile provides + * a list of all tools, common build utilities and build rules required for re-building @PACKAGE binary. + * + * Follow the instructions at @ref gnu_build for more details. + * @SECEND + * + */ + +/** + * @page ccs_build CCS Build Process + * + *
Back
+ * + * To build any specific kernel for test, benchmarking or to pull in source code changes - + * just locate the associated project file, load it and run within the CCS environment. + * The sections below provide all necessary details to get started. + * + * -# Required Tools + * -# Re-build @PACKAGE Library + * -# Build Individual @PACKAGE Kernel + * + * The sections that follow detail each item above. + * + * @SPACER + * + * @section ccs_tools Required Tools + * @SECSTART + * The following tools are required to build @PACKAGE using CCS (links provided). + * Download and install all tools to a single local (@c @b C:) directory, + * for example, c:\\ti. + * + * - Code Generation Tools + * - Code Composer Studio + * + * @note A "My.TI" account is required for download and can be registered at my.ti.com + * @SECEND + * + * @section ccs_compile_all @PACKAGE Build Procedure + * @SECSTART + * + * The @PACKAGE package supports CCSV5.2 & above. The @PACKAGE may be build following the procedure below: + * + * -# Open the CCSv5 application + * -# Import the @PACKAGE @b makefile based project + * - Open the @b Project menu + * - Select Import Existing Eclipse Project + * - Import from the @PACKAGE @c @b packages/ti/@package/lib directory + * -# Build the project + * - Select Rebuild Active Project from @b Project menu + * + * @SECEND + * + * @section ccs_compile_knl Individual Kernel Build Procedure + * @SECSTART + * Any individual kernel within @PACKAGE may be compiled and tested via CCS following + * the procedure below: + * + * -# Open the CCSV5 application + * -# Import the @PACKAGE kernel project + * - Open the @b Project menu + * - Select Import Existing Eclipse Project + * - Import from the @PACKAGE @c @b /packages/ti/@package/src/\ directory + * -# Use the @b Debug/Release profile for debugging/modifing/optimizing kernels + * - Open the @b Project menu + * - Select Active Build Configuration and set to @b Debug/Release + * -# Build and test the project + * - Select Rebuild Active Project from @b Project menu + * - Test using the proper target configuration + * + * @SECEND + * + */ + + +/** + * @page gnu_build GNU Make Build Process + * + *
Back
+ * + * A GNU @b makefile is also provided for rebuilding @PACKAGE via the GNU make utility. + * This file is located in the @c @b packages/ti/@package folder. The makefile provides + * a list of all tools, common build utilities and build rules required for generating + * @PACKAGE binary. + * + * -# Required Tools + * -# Re-build @PACKAGE Library + * + * The sections that follow detail each item above. + * + * @SPACER + * + * @section gnu_tools Required Tools + * @SECSTART + * The following tools are required to build @PACKAGE using GNU make (links provided). + * Download and install all tools to a single local (@c @b C:) directory, + * for example, c:\\ti. + * + * - Code Generation Tools + * - GNU Make (External Tool) + * + * @note A "My.TI" account is required for download and can be registered at my.ti.com + * @SECEND + * + * + * @section gnu_compile_all @PACKAGE Build Procedure + * @SECSTART + * The @PACKAGE may be compiled using GNU make following the procedure below. + * Note that the first three items are followed by two options, either of which + * may be used to accomplish the goal. + * + * -# Add @b cygwin/bin to the environment PATH (Windows only) + * -# Correct the @b C6x_GEN_INSTALL_DIR path in the @b makefile (two options) + * - Directly modify the makefile OR + * - Set the @b C6x_GEN_INSTALL_DIR in the environment with the proper tools path + * -# Build the library + * - Enter make all to build the library + * - Enter make clean to clean all generated object files and artifacts + * @SECEND + * + */ + + diff --git a/ti/dsplib/docs/bundle/doxygen/images/dsplib_c64P_directory.jpg b/ti/dsplib/docs/bundle/doxygen/images/dsplib_c64P_directory.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6de84040e2f60603216460c343045938675a264d GIT binary patch literal 37181 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 Lv7rEi_2%&3NO?mP literal 0 HcmV?d00001 diff --git a/ti/dsplib/docs/bundle/doxygen/images/dsplib_c66_directory.jpg b/ti/dsplib/docs/bundle/doxygen/images/dsplib_c66_directory.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cfb6eca77ae4510ebc143bf91eb798565fe219a8 GIT binary patch literal 35376 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 literal 0 HcmV?d00001 diff --git a/ti/dsplib/docs/bundle/doxygen/images/dsplib_c674_directory.jpg b/ti/dsplib/docs/bundle/doxygen/images/dsplib_c674_directory.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dd227f28caa6240801ca60e095ac45a36d0b9d34 GIT binary patch literal 36317 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 + * + *

Contents

+ * + *
    + *
  1. Introduction + *
  2. Getting Started + *
  3. Documentation
    + *
  4. What's New
    + *
  5. Fixed Bugs
    + *
  6. Upgrade and Compatibility Information
    + *
  7. Device Support
    + *
  8. Validation Information
    + *
  9. Known Issues
    + *
  10. Technical Support
    + *
+ * + * + *
+ * + *

Introduction

+ * + * The TI C6000 DSPLIB is an optimized DSP Function Library for C programmers. It includes many + * C-callable, optimized, general-purpose signal-processing routines. These routines are typically + * used in computationally-intensive real-time applications where optimal execution speed is critical. + * + *
+ * + *

Getting Started

+ * + * The DSPLIB User's Manual provides + * the documentation and references necessary to integrate DSPLIB Library routines + * into a development platform. + * + * + *
+ * + *

Documentation

+ * + * The following documentation is available: + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
User's Manual[HTML]
+ * [CHM] + *
Test Report[HTML]
+ *
Software Manifest[HTML]
+ *
Release Notes Archive[LINK] + *
+ * + *
+ * + *

Dependencies

+ * + * This release of DSPLIB depends on the following libraries: + *
    + *
  1. MATHLIB 3.1.0.0 + *
+ * + * + *
+ * + *

What's New

+ * + * The following new kernels were added: + *
    + *
  1. SP/DP Cholesky Complex Matrix Decomposition. + *
  2. SP/DP LU Matrix Decomposition. + *
  3. SP/DP LU Complex Matrix Decomposition. + *
  4. SP/DP LUD Linear Solver. + *
  5. SP/DP LUD Complex Linear Solver. + *
  6. SP/DP LUD Matrix Inversion. + *
  7. SP/DP LUD Complex Matrix Inversion. + *
  8. SP/DP QR Matrix Decomposition. + *
  9. SP/DP QR Complex Matrix Decomposition. + *
  10. SP/DP SV Matrix Decomposition. + *
  11. SP/DP SV Complex Matrix Decomposition. + *
+ * + * + *
+ * + *

Fixed Bugs

+ * The following bugs were fixed: + *
    + *
  1. Compilation error in building the FFT_Example_674_LE_COFF project. + *
  2. Incorrect output from DSPF_sp_fir_cplx. + *
  3. DSPLIB C66 regression tests failed for DSPF_sp_iirlat and DSP_ifft16x32. + *
  4. DSPLIB C674 regression tests failed for DSPF_sp_fir_cplx and DSPF_sp_iirlat. + *
+ * + * + *
+ * + *

Upgrade and Compatibility Information

+ * + * This version of `packageU` is compatible with the last released + * version: + * + * + * + * + * + * + * + * + * + * + *
YES X
NO
+ * + * + * + * + * + * + *
Note: + *
    + *
  1. Package compatibility keys are independent of component release + * versions. For more information visit: + * Package Versioning and Compatibility + *
+ *
+ * + * + *
+ * + *

Device Support

+ * + * This release supports the following device families: + * + *
    +%for (var i=0; i `DEVICES[i]` DSP (`FORMATS[i]`, `ENDIANS[i]` format) +%} + *
+ * + * + *
+ * + *

Validation Information

+ * + * This release was built and validated using the following tools: + * + *
    + *
  • XDC Tools version: `XDCVER` + *
  • RTSC Packaging Standard version: `this.pkgStdVer` + *
  • C6000 Code Generation Tools version: `CGTVER` + *
  • Code Composer Studio version: `CCSVER` + *
  • GNU make version: `GMKDIR` + *
+ * + * + *
+ * + *

Known Issues

+ * + * + *
+ * + *

Technical Support

+ * + * Questions regarding the `packageU` library should be directed to the + * Texas Instruments + * TI-RTOS E2E Forum. Please include the text "`packageU`" in the title + * and add "`DEVICES[0]`" and "`packageU`" tags to your post. + * + *
+ * + *

Package Versioning and Compatibility

+ * + *

Compatibility Keys

+ * + * Compatibility keys serve two primary purposes: + * + *
    + *
  1. Enable tooling to identify incompatibilities between components + *
  2. Convey a level of compatibility between different releases to set + * end user expectations. + *
+ * + * Each compatibility key is composed of 4 comma-delimited numbers - represented here + * by the letters M, S, R and P [M,S,R,P]. The table below provides a descriptive reference for + * compatibility key intention. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Compatibility Key Reference
Key Meaning Description
1 (M=Major)Break in compatibilityThe package consumer is required to re-write the calling source code to use the package
2 (S=Source)Source compatibilityThe package consumerÂ’s source code doesn't require change, but does require a recompile
3 (R=Radix)Introduction of new featuresCompatibility with previous interfaces is not broken. If libraries are provided by the package, + * an application must re-link with the new libraries, but is not required to recompile its source
4 (P=Patch)Bug fixes onlyIf libraries are provided by the package, an application must re-link with the new libraries, + * but is not required to recompile its source.
+ * + * + *
+ * + * + *

Versioning

+ * + * Each package version is composed of 4 period-delimited numbers - represented here + * by the letters M, m, p and b [M.m.p.b]. The table below provides a descriptive + * reference regarding package version numbering. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Package Version Reference
Digit Meaning Description
1 (M=Major)Major revisionIncremented when the new version is substantially different from the previous + * For example, a new module added or an existing module's algorithm significantly + * altered.
2 (m=minor)Minor revisionIncremented when the new version has changed but not in a major way. For example, + * some minor changes in the API or feature set.
3 (p=patch)Patch numberIncremented for all other source code changes. This include any packaging support + * code.
4 (b=build)Build numberIncremented for each release delivery to CM. Reset for any change to M, m or p
+ * + */ diff --git a/ti/dsplib/docs/bundle/manifest/doxyfile.xdt b/ti/dsplib/docs/bundle/manifest/doxyfile.xdt new file mode 100644 index 0000000..94d140b --- /dev/null +++ b/ti/dsplib/docs/bundle/manifest/doxyfile.xdt @@ -0,0 +1,260 @@ +%%{ +/*! + * This template implements the Doxyfile + */ + /* Versioning */ + var ver = this.version; + var packageVersion = "\"Release "+ver[0]+"."+ver[1]+"."+ver[2]+"."+ver[3]; + switch (ver[4]) { + case 0: quality = " Pre-alpha"; + break; + case 1: quality = " Alpha"; + break; + case 2: quality = " Beta"; + break; + case 3: quality = ""; + break; + } + packageVersion = packageVersion.concat (quality + "\""); + + /* Get capitalized bundle name */ + var bundleName = this.bundlename.toUpperCase(); + var quotedBundleName = "\"" + bundleName + "\""; +%%} + +# Doxyfile 1.5.1-p1 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = `quotedBundleName` +PROJECT_NUMBER = `packageVersion` +OUTPUT_DIRECTORY = ./docs/manifest +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = YES +BRIEF_MEMBER_DESC = NO +REPEAT_BRIEF = NO +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = NO +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 2 +ALIASES = "COMP=`bundleName`" \ + "HLINE=
" +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +BUILTIN_STL_SUPPORT = NO +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = NO +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = YES +EXTRACT_PRIVATE = YES +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = NO +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = NO +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = `this.bundleComponents` +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = NO +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = ./docs/manifest +FILE_PATTERNS = manifest.h +RECURSIVE = NO +EXCLUDE = *.h +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = ./docs/manifest +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = YES +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +REFERENCES_LINK_SOURCE = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = NO +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = ./docs/manifest/html/tiheader.htm +HTML_FOOTER = ./docs/manifest/html/tifooter.htm +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = YES +CHM_FILE = +HHC_LOCATION = hhc.exe +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = YES +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = NO +TREEVIEW_WIDTH = 250 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = YES +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = NO +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = YES +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = YES +CALLER_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = gif +DOT_PATH = +DOTFILE_DIRS = ./ +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1024 +MAX_DOT_GRAPH_DEPTH = 1000 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO diff --git a/ti/dsplib/docs/bundle/manifest/manifest.h b/ti/dsplib/docs/bundle/manifest/manifest.h new file mode 100644 index 0000000..609c621 --- /dev/null +++ b/ti/dsplib/docs/bundle/manifest/manifest.h @@ -0,0 +1,30 @@ +/* + * This is the header file which doxygen parses to generate the main + * software manifest page + */ + +/** + * @mainpage DSPLIB Bundle Software Manifest + * + *
+ * + * @section packages Individual Package Software Manifests + * + * - DSPLIB Software Manifest + * + */ + +/* + * Copyright © 2010 Texas Instruments Incorporated. All rights reserved. + * + * Information in this document is subject to change without notice. + * Texas Instruments may have pending patent applications, trademarks, + * copyrights, or other intellectual property rights covering matter in this + * document. The furnishing of this document is given for usage with Texas + * Instruments products only and does not give you any license to the + * intellectual property that might be contained within this document. + * Texas Instruments makes no implied or expressed warranties in this document + * and is not responsible for the products based from this document. + * + * + */ diff --git a/ti/dsplib/docs/doxygen/TI_Templates/tifooter.htm b/ti/dsplib/docs/doxygen/TI_Templates/tifooter.htm new file mode 100644 index 0000000..4bdf9c9 --- /dev/null +++ b/ti/dsplib/docs/doxygen/TI_Templates/tifooter.htm @@ -0,0 +1,4 @@ +
+Copyright $year, Texas Instruments Incorporated + + diff --git a/ti/dsplib/docs/doxygen/TI_Templates/tiheader.htm b/ti/dsplib/docs/doxygen/TI_Templates/tiheader.htm new file mode 100644 index 0000000..4f088b2 --- /dev/null +++ b/ti/dsplib/docs/doxygen/TI_Templates/tiheader.htm @@ -0,0 +1,12 @@ + + +$title + + + + + + + + +
diff --git a/ti/dsplib/docs/doxygen/TI_Templates/tilogo.gif b/ti/dsplib/docs/doxygen/TI_Templates/tilogo.gif new file mode 100644 index 0000000000000000000000000000000000000000..f2fab2da7bf35dbc41b8edb749d037d25d157df0 GIT binary patch literal 1137 zcmV-%1djVhNk%w1Vcq~X0HOc@00030|NpzYyKirAKR-VP1_tQp=olCnA^8LV00000 zEC2ui0NwyL000C32)f+}*y*TU5yZ>M)j$~<`XsWJk>%MR-&vb3yc&_h!@BhG{ za7Zi~kI1BQ$!t2G(5Q5JD+~hIEP=`;TC>`&ICupIwt&IlFmB_@;4J|waNB2Jvtckd z2nc|8f-HGvYia-nS$huz0*{c90s}QxYKVh1aB+%fh7ST}q5*6)b65qLnxhAFn`fyF zd!?bU2ac3AbgDFk0d)YUxp27=1+`lRfXmAVx6J_0feO#147Yp))(*QD)!Sps(HNGO z1GT$(1F7i163Ef$V0`FX2ce7r>I_z$SOyX36u5__SeZJG%m5ly(BGnU#1yDQ2kw-C z1F!z2`B#en;2wss1~_zQ0c1gKwVr{=7Xe3Ol*x95K&%GcA}R=_ zPthL&SI+GzvvjE|kp&a|`k6>Tsw^a>p3(R3k^lo+Y8gnSEPzrqS=9L1i8K^d3K>P! z3;=diRtGLm-3+F{BEe!CJKe;`U>dhyedi4guyJdFf#>uU5cn9a<5P7)Wt9m4j5RoD zG(YYe7Au=MY7VeN_4upVpL{N?HreV|+`A3(VnJg?Cz#C_y8#dzTSB)!VTdv<4iqu9 zGH6=)8SZ=m=id_jg|4nmpX*(y8PsBcwL1rSX8sgJFC2pIUyr6QIQEZf_)f82u{;cH zPC~l>3C*<98st^i7#~oPLfvM-(3OR1R|vM4AMu4Y$v^4=HlB6q?d8B*^EosRG9tDI z%5I6#6<=1TY-Qa=>f|RPZk;*j-vON%pojtqnzlfD83{m(fx|WU2p!Tvx0pgh)d5E+ z>u|`}eCz?%0Ei33W!5EWR5`(WH~F*xj*G-nfKf-%)c{i3J#d_3@{FleTCo6mk|JO& z#vo2YVz?!W3ub8{kMsPrVPWUw1Ob-Rbn-_nl#J%f9~6K&pLp;^6&NIf-6Gj+9^z!9 zi*sR-Mgs@^SX~}+a1*-eXewzE4b+J-64WH*gw~Mx3pgzSs+Ugx zltlQLggQ#}(o|-B2558rxfsl^j})tEjqb3zWMt2U` zNWo7QK|<#Rf~CR~r)SjKVp3EIhR-Cm;8q(z8v!=gOKU-ur>Is*iAIas;Hd^aXiOE@ zl45GSakSB58s(B9+BWCO_F^Dbp%aVp)I4loHpk}*1pWw#=U#It;Ky&) zw8LYL7Yp_ulH(e^MS@_lx1LeCovifIL9^U)%%Y4%&U}wC%IK$5k@dmZ68ywA1WZ(d+%-(kN^NX D-#`uN literal 0 HcmV?d00001 diff --git a/ti/dsplib/docs/doxygen/TI_Templates/titagline.gif b/ti/dsplib/docs/doxygen/TI_Templates/titagline.gif new file mode 100644 index 0000000000000000000000000000000000000000..743a0249e3fbf0c14128aad036beac9611724b72 GIT binary patch literal 653 zcmV;80&@LFNk%w1VLAaC0J8u9{{R60|NsAXcK^4x|Ba3R*4F>+?f)Sm|Mm6%qoe=F z$NxV+|6E-EM)j$~<` zXsWJk>%MR-&vb3yc&_h!@BhG{a7Zi~kI1BQ$!t2Gw?jiPAW)&$tkyRG3=)Lyb{q4?ux(04jo%^#;w z*?fH?FK40yz>tYW`UvcVcnaqIoI4?Fq;N+~u~C{vt6Qy6Wh(SipkZFWX}As^J9y^W zt`Y_`NHE8sm_C0PSE5plu4l*mN)hBoKq_d^d>v}M`Gz3^3EmDM3umBIUdyW+Pw?0_ zaafZmRRSPp%@m;om><<_Iaqe0(VypT@`T{(INO=`z6rF<+u&TgB%o~tZ9;>Bx4Sn} z%p0 + * Introduction, + * Documentation, + * What's New + * Upgrade and Compatibility Information, + * Host Intrinsic Library Support, + * Device Support, + * Validation Information, + * Known Issues, + * Version Information, + * Technical Support + *

+ * + * + * + * + * + * + * + * + *
+ *

Introduction

+ * The TI C6000 DSPLIB is an optimized DSP Function Library for C programmers. It includes many + * C-callable, optimized, general-purpose signal-processing routines. These routines are typically + * used in computationally-intensive real-time applications where optimal execution speed is critical. + * + * back to top + * + * + * + * + * + * + *
+ * + *

Documentation

+ *

The following documentation is available:

+ * - DSPLIB User's Guide + * + *

Release notes from previous releases are also available in the + * relnotes_archive + * directory.

+ * + * back to top + * + * + * + * + * + * + *
+ * + * + *

What's New

+ *

The following new features were added for C66x: + *

    + *
  1. SP/DP Cholesky Complex Matrix Decomposition. + *
  2. SP/DP LU Matrix Decomposition. + *
  3. SP/DP LU Complex Matrix Decomposition. + *
  4. SP/DP LUD Linear Solver. + *
  5. SP/DP LUD Complex Linear Solver. + *
  6. SP/DP LUD Matrix Inversion. + *
  7. SP/DP LUD Complex Matrix Inversion. + *
  8. SP/DP QR Matrix Decomposition. + *
  9. SP/DP QR Complex Matrix Decomposition. + *
  10. SP/DP SV Matrix Decomposition. + *
  11. SP/DP SV Complex Matrix Decomposition. + *
+ * + *

+ * + * + * back to top + * + * + * + * + * + * + *
+ * + *

Upgrade and + * Compatibility Information

+ * + * This ti.dsplib release is not backward compatible with the last released version. + * + * + * Please note that the package compatibility keys are independent of XDC product release numbers. + * + * Package compatibility keys are intended to: + * + * -# Enable tooling to identify incompatibilities between components, and + * -# Convey a level of compatibility between different releases to set end user expectations. + * + * Package compatibility keys are composed of 4 comma-delimited numbers - M, S, R, P - where: + * + * - M = Major - A difference in M indicates a break in compatibility. The package consumer is required to re-write its source code in order to use the package. + * - S = Source - A difference in S indicates source compatibility. The package consumerÂ’s source code doesn't require change, but does require a recompile. + * - R = Radix - A difference in R indicates an introduction of new features, but compatibility with previous interfaces is not broken. If libraries are provided by the package, an application must re-link with the new libraries, but is not required to recompile its source. + * - P = Patch - A difference in P indicates that only bugs have been fixed in the latest package and no new features have been introduced. If libraries are provided by the package, an application must re-link with the new libraries, but is not required to recompile its source. + * + * back to top + * + * + * + * + * + *
+ * + *

Device Support

+ * + * This release supports the following device families: + * + *
    + *
  • C64x+ DSP + *
  • C674x DSP + *
  • C66x DSP + *
+ * + * back to top + * + * + * + * + * + * + *
+ * + *

Host Intrinsic Library Support

+ * + * This release supports Host Intrinsic Library. Please refer to + * Texas Instruments + * Host Intrinsic Library Wiki Page for more information. + * + * back to top + * + * + * + * + * + * + * + + *
+ * + *

Validation Information

+ * + * This release was built and validated using the following tools: + * + *
    + *
  • XDC Tools version 3.25.00.48 + *
  • C6x Code Generation Tools version 7.4.2 + *
  • CCS 5.4 + *
+ * + * + * back to top + * + * + * + * + * + + *
+ * + *

Known Issues

+ * + *
    + *
  • DSPLIB package expanded in the graphical editor the information displayed is not correct (IR #081767) + *
+ * + * back to top + * + *
+ * + * + * + * + * + * + + *

Version Information

+ * + * This product's version follows a version format, M.m.p.b, + * where M is a single digit Major number, m is single digit minor number, + * p is a single digit patch number and b is an unrestricted set of digits used as an incrementing build counter. + + *

Please note that version numbers and compatibility keys are + * NOT the same. For an explanation of compatibility keys, please refer to + * the 'Upgrade and Compatibility Information' section. + * + * back to top + * + * + * + * + * + *


+ *

Technical Support

+ * + * Questions regarding the DSPLIB library should be directed to the + * Texas Instruments + * BIOS E2E Forum. Please include the text DSPLIB in the title and add + * the DSPLIB tag to your post. + * + * back to top + * + * + * + */ diff --git a/ti/dsplib/docs/dsplib/README.txt b/ti/dsplib/docs/dsplib/README.txt new file mode 100644 index 0000000..5b6c005 --- /dev/null +++ b/ti/dsplib/docs/dsplib/README.txt @@ -0,0 +1,45 @@ +DSPLIB Release Directory Structure +=================================== + +-----+-----components + | + +-----docs + | + +-----eclipse + | + +-----examples + | + +-----package + | + +-----packages + + +components - Zipped files for the source code +docs - various documentation +eclipse - eclipse plugin files for the IDE +examples - contains example driver files +package - Internal release files. +packages - Source code for the component. This is the unzipped code from the components folder. + + + + +Documentation +======================== +The documents are placed in docs directory. + +The user guide documents in this directory can be viewed several ways: + -- docs/DSPLIB_Users_Manual.chm: Using Microsoft HTML Help file on Windows. + -- docs/DSPLIB_Users_Manual.html: Using any web browser. + -- Using the Eclipse Help viewer from CCSV4/CCSV5. + +The Software Manifest can be viewed at: + -- docs/DSPLIB_Software_Manifest.html: Using any web browser. + +The Release Notes and its history can be viewed at: + -- dsplib_3_4_0_x_release_notes.html: Using any web browser. + + +Note: Please see the user guide for quick link to API reference, rebuilding library and all other information. + + diff --git a/ti/dsplib/docs/dsplib/docs/relnotes_archive/dsplib_3_0_0_6_release_notes.html b/ti/dsplib/docs/dsplib/docs/relnotes_archive/dsplib_3_0_0_6_release_notes.html new file mode 100644 index 0000000..0779990 --- /dev/null +++ b/ti/dsplib/docs/dsplib/docs/relnotes_archive/dsplib_3_0_0_6_release_notes.html @@ -0,0 +1,228 @@ + + +DSPLIB Bundle Release Notes + + + + + + + + +
+ +

DSPLIB 3.0.0.7 Release Notes

+

May 2, 2011

+

DSPLIB Bundle Release Notes

+

+


+

+

Contents

+

+

    +
  1. +Introduction
  2. +
  3. +Getting Started
  4. +
  5. +Documentation
    +
  6. +
  7. +What's New
    +
  8. +
  9. +Upgrade and Compatibility Information
    +
  10. +
  11. +Device Support
    +
  12. +
  13. +Validation Information
    +
  14. +
  15. +Benchmark Information
    +
  16. +
  17. +Known Issues
    +
  18. +
  19. +Technical Support
    +
  20. +
  21. +Component Release Notes
    +
  22. +
+

+


+

+

Introduction

+

+The DSPLIB bundle is an optimized DSP Function Library package together with the software tools (SWTOOLS) package in bundle format to simplify the release procedure.

+


+

+

Getting Started

+

+The DSPLIB User's Manual provides the documentation and references necessary to integrate DSPLIB Library routines into a development platform.

+


+

+

Documentation

+

+The following documentation is available:

+ + + + + + + + + +
User's Manual [HTML]
+ [CHM]
Test Report [HTML]
+
Software Manifest [HTML]
+
Release Notes Archive [LINK]
+

+


+

+

What's New

+

+The following new features were added:

    +
  1. +Initial release
  2. +
+

+The following bugs have been resolved:

    +
  1. +N/A
  2. +
+

+


+

+

Upgrade and Compatibility Information

+

+This version of ti.dsplib is compatible with the last released version:

+ + + + + +
YES X
NO
+

+ + + +
Note:
    +
  1. +Package compatibility keys are independent of component release versions. For more information visit: Package Versioning and Compatibility
  2. +
+
+

+


+

+

Device Support

+

+This release supports the following device families:

+

    +
  • +C64x+ DSP
  • +
  • +C66x DSP
  • +
+

+


+

+

Validation Information

+

+This release was built and validated using the following tools:

+

    +
  • +XDC Tools version 3.20.05.76
  • +
  • +C6x Code Generation Tools version 7.2.0
  • +
  • +CCS 4.2
  • +
+

+


+

+

Benchmark Information

+

+Benchmark information can be found in the test report.

+Test Report

+[HTML]
+

+


+

+

Known Issues

+

+

    +
  1. +None
  2. +
+

+


+

+

Technical Support

+

+Questions regarding this library, or any of the components comtained within, should be directed to the Texas Instruments BIOS Forum. Please include the text "DSPLIB" in the title of the post.

+


+

+

Component Release Notes

+

+

    +
  1. +TI.DSPLIB Release Notes

    +

  2. +
+

+


+

+

Package Versioning and Compatibility

+

+

Compatibility Keys

+

+Compatibility keys serve two primary purposes:

+

    +
  1. +Enable tooling to identify incompatibilities between components
  2. +
  3. +Convey a level of compatibility between different releases to set end user expectations.
  4. +
+

+Each compatibility key is composed of 4 comma-delimited numbers - represented here by the letters M, S, R and P [M,S,R,P]. The table below provides a descriptive reference for compatibility key intention.

+ + + + + + + + + + + + +
Compatibility Key Reference
Key Meaning Description
1 (M=Major) Break in compatibility The package consumer is required to re-write the calling source code to use the package
2 (S=Source) Source compatibility The package consumerÂ’s source code doesn't require change, but does require a recompile
3 (R=Radix) Introduction of new features Compatibility with previous interfaces is not broken. If libraries are provided by the package, an application must re-link with the new libraries, but is not required to recompile its source
4 (P=Patch) Bug fixes only If libraries are provided by the package, an application must re-link with the new libraries, but is not required to recompile its source.
+

+


+

+

Versioning

+

+Each package version is composed of 4 period-delimited numbers - represented here by the letters M, m, p and b [M.m.p.b]. The table below provides a descriptive reference regarding package version numbering.

+ + + + + + + + + + + + +
Package Version Reference
Digit Meaning Description
1 (M=Major) Major revision Incremented when the new version is substantially different from the previous For example, a new module added or an existing module's algorithm significantly altered.
2 (m=minor) Minor revision Incremented when the new version has changed but not in a major way. For example, some minor changes in the API or feature set.
3 (p=patch) Patch number Incremented for all other source code changes. This include any packaging support code.
4 (b=build) Build number Incremented for each release delivery to CM. Reset for any change to M, m or p
+


+Copyright 2011, Texas Instruments Incorporated + + diff --git a/ti/dsplib/docs/dsplib/docs/relnotes_archive/dsplib_3_0_0_7_release_notes.html b/ti/dsplib/docs/dsplib/docs/relnotes_archive/dsplib_3_0_0_7_release_notes.html new file mode 100644 index 0000000..0779990 --- /dev/null +++ b/ti/dsplib/docs/dsplib/docs/relnotes_archive/dsplib_3_0_0_7_release_notes.html @@ -0,0 +1,228 @@ + + +DSPLIB Bundle Release Notes + + + + + + + + +
+ +

DSPLIB 3.0.0.7 Release Notes

+

May 2, 2011

+

DSPLIB Bundle Release Notes

+

+


+

+

Contents

+

+

    +
  1. +Introduction
  2. +
  3. +Getting Started
  4. +
  5. +Documentation
    +
  6. +
  7. +What's New
    +
  8. +
  9. +Upgrade and Compatibility Information
    +
  10. +
  11. +Device Support
    +
  12. +
  13. +Validation Information
    +
  14. +
  15. +Benchmark Information
    +
  16. +
  17. +Known Issues
    +
  18. +
  19. +Technical Support
    +
  20. +
  21. +Component Release Notes
    +
  22. +
+

+


+

+

Introduction

+

+The DSPLIB bundle is an optimized DSP Function Library package together with the software tools (SWTOOLS) package in bundle format to simplify the release procedure.

+


+

+

Getting Started

+

+The DSPLIB User's Manual provides the documentation and references necessary to integrate DSPLIB Library routines into a development platform.

+


+

+

Documentation

+

+The following documentation is available:

+ + + + + + + + + +
User's Manual [HTML]
+ [CHM]
Test Report [HTML]
+
Software Manifest [HTML]
+
Release Notes Archive [LINK]
+

+


+

+

What's New

+

+The following new features were added:

    +
  1. +Initial release
  2. +
+

+The following bugs have been resolved:

    +
  1. +N/A
  2. +
+

+


+

+

Upgrade and Compatibility Information

+

+This version of ti.dsplib is compatible with the last released version:

+ + + + + +
YES X
NO
+

+ + + +
Note:
    +
  1. +Package compatibility keys are independent of component release versions. For more information visit: Package Versioning and Compatibility
  2. +
+
+

+


+

+

Device Support

+

+This release supports the following device families:

+

    +
  • +C64x+ DSP
  • +
  • +C66x DSP
  • +
+

+


+

+

Validation Information

+

+This release was built and validated using the following tools:

+

    +
  • +XDC Tools version 3.20.05.76
  • +
  • +C6x Code Generation Tools version 7.2.0
  • +
  • +CCS 4.2
  • +
+

+


+

+

Benchmark Information

+

+Benchmark information can be found in the test report.

+Test Report

+[HTML]
+

+


+

+

Known Issues

+

+

    +
  1. +None
  2. +
+

+


+

+

Technical Support

+

+Questions regarding this library, or any of the components comtained within, should be directed to the Texas Instruments BIOS Forum. Please include the text "DSPLIB" in the title of the post.

+


+

+

Component Release Notes

+

+

    +
  1. +TI.DSPLIB Release Notes

    +

  2. +
+

+


+

+

Package Versioning and Compatibility

+

+

Compatibility Keys

+

+Compatibility keys serve two primary purposes:

+

    +
  1. +Enable tooling to identify incompatibilities between components
  2. +
  3. +Convey a level of compatibility between different releases to set end user expectations.
  4. +
+

+Each compatibility key is composed of 4 comma-delimited numbers - represented here by the letters M, S, R and P [M,S,R,P]. The table below provides a descriptive reference for compatibility key intention.

+ + + + + + + + + + + + +
Compatibility Key Reference
Key Meaning Description
1 (M=Major) Break in compatibility The package consumer is required to re-write the calling source code to use the package
2 (S=Source) Source compatibility The package consumerÂ’s source code doesn't require change, but does require a recompile
3 (R=Radix) Introduction of new features Compatibility with previous interfaces is not broken. If libraries are provided by the package, an application must re-link with the new libraries, but is not required to recompile its source
4 (P=Patch) Bug fixes only If libraries are provided by the package, an application must re-link with the new libraries, but is not required to recompile its source.
+

+


+

+

Versioning

+

+Each package version is composed of 4 period-delimited numbers - represented here by the letters M, m, p and b [M.m.p.b]. The table below provides a descriptive reference regarding package version numbering.

+ + + + + + + + + + + + +
Package Version Reference
Digit Meaning Description
1 (M=Major) Major revision Incremented when the new version is substantially different from the previous For example, a new module added or an existing module's algorithm significantly altered.
2 (m=minor) Minor revision Incremented when the new version has changed but not in a major way. For example, some minor changes in the API or feature set.
3 (p=patch) Patch number Incremented for all other source code changes. This include any packaging support code.
4 (b=build) Build number Incremented for each release delivery to CM. Reset for any change to M, m or p
+


+Copyright 2011, Texas Instruments Incorporated + + diff --git a/ti/dsplib/docs/dsplib/docs/relnotes_archive/dsplib_3_0_0_8_release_notes.html b/ti/dsplib/docs/dsplib/docs/relnotes_archive/dsplib_3_0_0_8_release_notes.html new file mode 100644 index 0000000..ce9fc99 --- /dev/null +++ b/ti/dsplib/docs/dsplib/docs/relnotes_archive/dsplib_3_0_0_8_release_notes.html @@ -0,0 +1,225 @@ + + +DSPLIB Bundle Release Notes + + + + + + + + +
+ +

DSPLIB 3.0.0.8 Release Notes

+

May 31, 2011

+

DSPLIB Bundle Release Notes

+

+


+

+

Contents

+

+

    +
  1. +Introduction
  2. +
  3. +Getting Started
  4. +
  5. +Documentation
    +
  6. +
  7. +What's New
    +
  8. +
  9. +Upgrade and Compatibility Information
    +
  10. +
  11. +Device Support
    +
  12. +
  13. +Validation Information
    +
  14. +
  15. +Known Issues
    +
  16. +
  17. +Technical Support
    +
  18. +
  19. +Component Release Notes
    +
  20. +
+

+


+

+

Introduction

+

+The DSPLIB bundle is an optimized DSP Function Library package together with the software tools (SWTOOLS) package in bundle format to simplify the release procedure.

+


+

+

Getting Started

+

+The DSPLIB User's Manual provides the documentation and references necessary to integrate DSPLIB Library routines into a development platform.

+


+

+

Documentation

+

+The following documentation is available:

+ + + + + + + + + +
User's Manual [HTML]
+ [CHM]
Test Report [HTML]
+
Software Manifest [HTML]
+
Release Notes Archive [LINK]
+

+


+

+

What's New

+

+The following new features were added:

    +
  1. +N/A
  2. +
+

+The following bugs have been resolved:

    +
  1. +Fixed FFT16x32 twiddle factor access bug (IR #081234)
  2. +
+

+


+

+

Upgrade and Compatibility Information

+

+This version of DSPLIB is compatible with the last released version:

+ + + + + +
YES X
NO
+

+ + + +
Note:
    +
  1. +Package compatibility keys are independent of component release versions. For more information visit: Package Versioning and Compatibility
  2. +
+
+

+


+

+

Device Support

+

+This release supports the following device families:

+

    +
  • +C66x DSP (COFF, Little-Endian format)
  • +
  • +C66x DSP (COFF, Big-Endian format)
  • +
  • +C66x DSP (ELF, Little-Endian format)
  • +
  • +C66x DSP (ELF, Big-Endian format)
  • +
+

+


+

+

Validation Information

+

+This release was built and validated using the following tools:

+

    +
  • +XDC Tools version: 3.20.05.76
  • +
  • +RTSC Packaging Standard version: 2.0
  • +
  • +C6000 Code Generation Tools version: 7.2.0
  • +
  • +Cose Composer Studio version: 4.2
  • +
  • +GNU make version: 3.81
  • +
+

+


+

+

Known Issues

+

+

    +
  1. +- C64x+ ELF support will be added in next release.
  2. +
+

+


+

+

Technical Support

+

+Questions regarding the DSPLIB library should be directed to the Texas Instruments BIOS E2E Forum. Please include the text "DSPLIB" in the title and add "C66x" and "DSPLIB" tags to your post.

+


+

+

Component Release Notes

+

+

    +
  1. +DSPLIB Release Notes
  2. +
+

+


+
+

+

Package Versioning and Compatibility

+

+

Compatibility Keys

+

+Compatibility keys serve two primary purposes:

+

    +
  1. +Enable tooling to identify incompatibilities between components
  2. +
  3. +Convey a level of compatibility between different releases to set end user expectations.
  4. +
+

+Each compatibility key is composed of 4 comma-delimited numbers - represented here by the letters M, S, R and P [M,S,R,P]. The table below provides a descriptive reference for compatibility key intention.

+ + + + + + + + + + + + +
Compatibility Key Reference
Key Meaning Description
1 (M=Major) Break in compatibility The package consumer is required to re-write the calling source code to use the package
2 (S=Source) Source compatibility The package consumerÂ’s source code doesn't require change, but does require a recompile
3 (R=Radix) Introduction of new features Compatibility with previous interfaces is not broken. If libraries are provided by the package, an application must re-link with the new libraries, but is not required to recompile its source
4 (P=Patch) Bug fixes only If libraries are provided by the package, an application must re-link with the new libraries, but is not required to recompile its source.
+

+


+

+

Versioning

+

+Each package version is composed of 4 period-delimited numbers - represented here by the letters M, m, p and b [M.m.p.b]. The table below provides a descriptive reference regarding package version numbering.

+ + + + + + + + + + + + +
Package Version Reference
Digit Meaning Description
1 (M=Major) Major revision Incremented when the new version is substantially different from the previous For example, a new module added or an existing module's algorithm significantly altered.
2 (m=minor) Minor revision Incremented when the new version has changed but not in a major way. For example, some minor changes in the API or feature set.
3 (p=patch) Patch number Incremented for all other source code changes. This include any packaging support code.
4 (b=build) Build number Incremented for each release delivery to CM. Reset for any change to M, m or p
+


+Copyright 2011, Texas Instruments Incorporated + + diff --git a/ti/dsplib/docs/dsplib/docs/relnotes_archive/dsplib_3_0_1_0_release_notes.html b/ti/dsplib/docs/dsplib/docs/relnotes_archive/dsplib_3_0_1_0_release_notes.html new file mode 100644 index 0000000..631a31b --- /dev/null +++ b/ti/dsplib/docs/dsplib/docs/relnotes_archive/dsplib_3_0_1_0_release_notes.html @@ -0,0 +1,225 @@ + + +DSPLIB Bundle Release Notes + + + + + + + + +
+ +

DSPLIB 3.0.1.0 Release Notes

+

August 22, 2011

+

DSPLIB Bundle Release Notes

+

+


+

+

Contents

+

+

    +
  1. +Introduction
  2. +
  3. +Getting Started
  4. +
  5. +Documentation
    +
  6. +
  7. +What's New
    +
  8. +
  9. +Upgrade and Compatibility Information
    +
  10. +
  11. +Device Support
    +
  12. +
  13. +Validation Information
    +
  14. +
  15. +Known Issues
    +
  16. +
  17. +Technical Support
    +
  18. +
  19. +Component Release Notes
    +
  20. +
+

+


+

+

Introduction

+

+The DSPLIB bundle is an optimized DSP Function Library package together with the software tools (SWTOOLS) package in bundle format to simplify the release procedure.

+


+

+

Getting Started

+

+The DSPLIB User's Manual provides the documentation and references necessary to integrate DSPLIB Library routines into a development platform.

+


+

+

Documentation

+

+The following documentation is available:

+ + + + + + + + + +
User's Manual [HTML]
+ [CHM]
Test Report [HTML]
+
Software Manifest [HTML]
+
Release Notes Archive [LINK]
+

+


+

+

What's New

+

+The following new features were added:

    +
  1. +N/A
  2. +
+

+The following bugs have been resolved:

    +
  1. +Fixed FFT16x32 twiddle factor access bug (IR #081234)
  2. +
+

+


+

+

Upgrade and Compatibility Information

+

+This version of DSPLIB is compatible with the last released version:

+ + + + + +
YES X
NO
+

+ + + +
Note:
    +
  1. +Package compatibility keys are independent of component release versions. For more information visit: Package Versioning and Compatibility
  2. +
+
+

+


+

+

Device Support

+

+This release supports the following device families:

+

    +
  • +C64x+ DSP (COFF, Little-Endian format)
  • +
  • +C64x+ DSP (COFF, Big-Endian format)
  • +
  • +C64x+ DSP (ELF, Little-Endian format)
  • +
  • +C64x+ DSP (ELF, Big-Endian format)
  • +
+

+


+

+

Validation Information

+

+This release was built and validated using the following tools:

+

    +
  • +XDC Tools version: 3.20.05.76
  • +
  • +RTSC Packaging Standard version: 2.0
  • +
  • +C6000 Code Generation Tools version: 7.2.0
  • +
  • +Cose Composer Studio version: 4.2
  • +
  • +GNU make version: 3.81
  • +
+

+


+

+

Known Issues

+

+

    +
  1. +- C64x+ ELF support will be added in next release.
  2. +
+

+


+

+

Technical Support

+

+Questions regarding the DSPLIB library should be directed to the Texas Instruments BIOS E2E Forum. Please include the text "DSPLIB" in the title and add "C64x+" and "DSPLIB" tags to your post.

+


+

+

Component Release Notes

+

+

    +
  1. +DSPLIB Release Notes
  2. +
+

+


+
+

+

Package Versioning and Compatibility

+

+

Compatibility Keys

+

+Compatibility keys serve two primary purposes:

+

    +
  1. +Enable tooling to identify incompatibilities between components
  2. +
  3. +Convey a level of compatibility between different releases to set end user expectations.
  4. +
+

+Each compatibility key is composed of 4 comma-delimited numbers - represented here by the letters M, S, R and P [M,S,R,P]. The table below provides a descriptive reference for compatibility key intention.

+ + + + + + + + + + + + +
Compatibility Key Reference
Key Meaning Description
1 (M=Major) Break in compatibility The package consumer is required to re-write the calling source code to use the package
2 (S=Source) Source compatibility The package consumerÂ’s source code doesn't require change, but does require a recompile
3 (R=Radix) Introduction of new features Compatibility with previous interfaces is not broken. If libraries are provided by the package, an application must re-link with the new libraries, but is not required to recompile its source
4 (P=Patch) Bug fixes only If libraries are provided by the package, an application must re-link with the new libraries, but is not required to recompile its source.
+

+


+

+

Versioning

+

+Each package version is composed of 4 period-delimited numbers - represented here by the letters M, m, p and b [M.m.p.b]. The table below provides a descriptive reference regarding package version numbering.

+ + + + + + + + + + + + +
Package Version Reference
Digit Meaning Description
1 (M=Major) Major revision Incremented when the new version is substantially different from the previous For example, a new module added or an existing module's algorithm significantly altered.
2 (m=minor) Minor revision Incremented when the new version has changed but not in a major way. For example, some minor changes in the API or feature set.
3 (p=patch) Patch number Incremented for all other source code changes. This include any packaging support code.
4 (b=build) Build number Incremented for each release delivery to CM. Reset for any change to M, m or p
+


+Copyright 2011, Texas Instruments Incorporated + + diff --git a/ti/dsplib/docs/dsplib/docs/relnotes_archive/dsplib_3_1_0_0_release_notes.html b/ti/dsplib/docs/dsplib/docs/relnotes_archive/dsplib_3_1_0_0_release_notes.html new file mode 100644 index 0000000..b2e5a46 --- /dev/null +++ b/ti/dsplib/docs/dsplib/docs/relnotes_archive/dsplib_3_1_0_0_release_notes.html @@ -0,0 +1,241 @@ + + +DSPLIB Bundle Release Notes + + + + + + + + +
+ +

DSPLIB 3.1.0.0 Release Notes

+

October 14, 2011

+

DSPLIB Bundle Release Notes

+

+


+

+

Contents

+

+

    +
  1. +Introduction
  2. +
  3. +Getting Started
  4. +
  5. +Documentation
    +
  6. +
  7. +What's New
    +
  8. +
  9. +Upgrade and Compatibility Information
    +
  10. +
  11. +Device Support
    +
  12. +
  13. +Validation Information
    +
  14. +
  15. +Known Issues
    +
  16. +
  17. +Technical Support
    +
  18. +
  19. +Component Release Notes
    +
  20. +
+

+


+

+

Introduction

+

+The DSPLIB bundle is an optimized DSP Function Library package together with the software tools (SWTOOLS) package in bundle format to simplify the release procedure.

+


+

+

Getting Started

+

+The DSPLIB User's Manual provides the documentation and references necessary to integrate DSPLIB Library routines into a development platform.

+


+

+

Documentation

+

+The following documentation is available:

+ + + + + + + + + +
User's Manual [HTML]
+ [CHM]
Test Report [HTML]
+
Software Manifest [HTML]
+
Release Notes Archive [LINK]
+

+


+

+

What's New

+

+The following new features were added:

    +
  1. +C64x+ ELF support.
  2. +
  3. +C674x support.
  4. +
  5. +The following new C66x kernels are added:
      +
    • DSPF_dp_fftDPxDP
    • DSPF_dp_ifftDPxDP
    • DSPF_dp_mat_mul_gemm
    • DSPF_dp_mat_submat_copy
    • DSPF_dp_mat_trans
    • DSPF_sp_mat_mul_gemm
    • DSPF_sp_mat_submat_copy
    • DSPF_sp_mat_mul_gemm_cplx
    • DSPF_sp_mat_submat_copy_cplx
    • DSPF_sp_mat_trans_cplx
    +
  6. +
  7. +The following C66x kernels are further optimized:
      +
    • DSPF_sp_fftSPxSP
    • DSPF_sp_ifftSPxSP
    • DSPF_sp_mat_trans
    • DSPF_sp_mat_mul
    • DSPF_sp_mat_mul_cplx
    +
  8. +
+

+The following bugs have been resolved:

    +
  1. +The C66x floating point API are shown in C64x+ documentation (IR #082290)
  2. +
  3. +Need ELF support for C64x+ (IR #080972)
  4. +
  5. +The link to API documentation on the main page of DSPLIB user manual is not straight forward (IR #082289)
  6. +
  7. +Add README.txt to the root of DSPLIB installation for Quick overview (IR #082288)
  8. +
  9. +Implement getlib() function for DSPLIB (IR #082292)
  10. +
+

+


+

+

Upgrade and Compatibility Information

+

+This version of DSPLIB is compatible with the last released version:

+ + + + + +
YES X
NO
+

+ + + +
Note:
    +
  1. +Package compatibility keys are independent of component release versions. For more information visit: Package Versioning and Compatibility
  2. +
+
+

+


+

+

Device Support

+

+This release supports the following device families:

+

    +
  • +C674x DSP (COFF, Little-Endian format)
  • +
  • +C674x DSP (ELF, Little-Endian format)
  • +
+

+


+

+

Validation Information

+

+This release was built and validated using the following tools:

+

    +
  • +XDC Tools version: 3.20.05.76
  • +
  • +RTSC Packaging Standard version: 2.0
  • +
  • +C6000 Code Generation Tools version: 7.2.4
  • +
  • +Cose Composer Studio version: 4.2
  • +
  • +GNU make version: 3.81
  • +
+

+


+

+

Known Issues

+

+

    +
  1. +Split library bundle documentation between HTML and Doxygen (IR #082498)
  2. +
  3. +DSPLIB package expanded in the graphical editor the information displayed is not correct (IR #081767)
  4. +
+

+


+

+

Technical Support

+

+Questions regarding the DSPLIB library should be directed to the Texas Instruments BIOS E2E Forum. Please include the text "DSPLIB" in the title and add "C674x" and "DSPLIB" tags to your post.

+


+

+

Component Release Notes

+

+

    +
  1. +DSPLIB Release Notes
  2. +
+

+


+
+

+

Package Versioning and Compatibility

+

+

Compatibility Keys

+

+Compatibility keys serve two primary purposes:

+

    +
  1. +Enable tooling to identify incompatibilities between components
  2. +
  3. +Convey a level of compatibility between different releases to set end user expectations.
  4. +
+

+Each compatibility key is composed of 4 comma-delimited numbers - represented here by the letters M, S, R and P [M,S,R,P]. The table below provides a descriptive reference for compatibility key intention.

+ + + + + + + + + + + + +
Compatibility Key Reference
Key Meaning Description
1 (M=Major) Break in compatibility The package consumer is required to re-write the calling source code to use the package
2 (S=Source) Source compatibility The package consumerÂ’s source code doesn't require change, but does require a recompile
3 (R=Radix) Introduction of new features Compatibility with previous interfaces is not broken. If libraries are provided by the package, an application must re-link with the new libraries, but is not required to recompile its source
4 (P=Patch) Bug fixes only If libraries are provided by the package, an application must re-link with the new libraries, but is not required to recompile its source.
+

+


+

+

Versioning

+

+Each package version is composed of 4 period-delimited numbers - represented here by the letters M, m, p and b [M.m.p.b]. The table below provides a descriptive reference regarding package version numbering.

+ + + + + + + + + + + + +
Package Version Reference
Digit Meaning Description
1 (M=Major) Major revision Incremented when the new version is substantially different from the previous For example, a new module added or an existing module's algorithm significantly altered.
2 (m=minor) Minor revision Incremented when the new version has changed but not in a major way. For example, some minor changes in the API or feature set.
3 (p=patch) Patch number Incremented for all other source code changes. This include any packaging support code.
4 (b=build) Build number Incremented for each release delivery to CM. Reset for any change to M, m or p
+


+Copyright 2011, Texas Instruments Incorporated + + diff --git a/ti/dsplib/docs/dsplib/docs/relnotes_archive/dsplib_3_1_1_0_release_notes.html b/ti/dsplib/docs/dsplib/docs/relnotes_archive/dsplib_3_1_1_0_release_notes.html new file mode 100644 index 0000000..164da57 --- /dev/null +++ b/ti/dsplib/docs/dsplib/docs/relnotes_archive/dsplib_3_1_1_0_release_notes.html @@ -0,0 +1,223 @@ + + +DSPLIB Bundle Release Notes + + + + + + + + +
+ +

DSPLIB 3.1.1.0 Release Notes

+

October 2, 2012

+

DSPLIB Bundle Release Notes

+

+


+

+

Contents

+

+

    +
  1. +Introduction
  2. +
  3. +Getting Started
  4. +
  5. +Documentation
    +
  6. +
  7. +What's New
    +
  8. +
  9. +Upgrade and Compatibility Information
    +
  10. +
  11. +Device Support
    +
  12. +
  13. +Validation Information
    +
  14. +
  15. +Known Issues
    +
  16. +
  17. +Technical Support
    +
  18. +
  19. +Component Release Notes
    +
  20. +
+

+


+

+

Introduction

+

+The DSPLIB bundle is an optimized DSP Function Library package together with the software tools (SWTOOLS) package in bundle format to simplify the release procedure.

+


+

+

Getting Started

+

+The DSPLIB User's Manual provides the documentation and references necessary to integrate DSPLIB Library routines into a development platform.

+


+

+

Documentation

+

+The following documentation is available:

+ + + + + + + + + +
User's Manual [HTML]
+ [CHM]
Test Report [HTML]
+
Software Manifest [HTML]
+
Release Notes Archive [LINK]
+

+


+

+

What's New

+

+The following new features were added:

    +
  1. +Host Intrinsic Library support.
  2. +
+

+The following bugs have been resolved:

    +
  1. +need host intrinsic support in DSPLIB (IR #092856)
  2. +
+

+


+

+

Upgrade and Compatibility Information

+

+This version of DSPLIB is compatible with the last released version:

+ + + + + +
YES X
NO
+

+ + + +
Note:
    +
  1. +Package compatibility keys are independent of component release versions. For more information visit: Package Versioning and Compatibility
  2. +
+
+

+


+

+

Device Support

+

+This release supports the following device families:

+

    +
  • +C674x DSP (COFF, Little-Endian format)
  • +
  • +C674x DSP (ELF, Little-Endian format)
  • +
+

+


+

+

Validation Information

+

+This release was built and validated using the following tools:

+

    +
  • +XDC Tools version: 3.20.05.76
  • +
  • +RTSC Packaging Standard version: 2.0
  • +
  • +C6000 Code Generation Tools version: 7.2.4
  • +
  • +Cose Composer Studio version: 4.2
  • +
  • +GNU make version: 3.81
  • +
+

+


+

+

Known Issues

+

+

    +
  1. +Split library bundle documentation between HTML and Doxygen (IR #082498)
  2. +
  3. +DSPLIB package expanded in the graphical editor the information displayed is not correct (IR #081767)
  4. +
+

+


+

+

Technical Support

+

+Questions regarding the DSPLIB library should be directed to the Texas Instruments BIOS E2E Forum. Please include the text "DSPLIB" in the title and add "C674x" and "DSPLIB" tags to your post.

+


+

+

Component Release Notes

+

+

    +
  1. +DSPLIB Release Notes
  2. +
+

+


+
+

+

Package Versioning and Compatibility

+

+

Compatibility Keys

+

+Compatibility keys serve two primary purposes:

+

    +
  1. +Enable tooling to identify incompatibilities between components
  2. +
  3. +Convey a level of compatibility between different releases to set end user expectations.
  4. +
+

+Each compatibility key is composed of 4 comma-delimited numbers - represented here by the letters M, S, R and P [M,S,R,P]. The table below provides a descriptive reference for compatibility key intention.

+ + + + + + + + + + + + +
Compatibility Key Reference
Key Meaning Description
1 (M=Major) Break in compatibility The package consumer is required to re-write the calling source code to use the package
2 (S=Source) Source compatibility The package consumerÂ’s source code doesn't require change, but does require a recompile
3 (R=Radix) Introduction of new features Compatibility with previous interfaces is not broken. If libraries are provided by the package, an application must re-link with the new libraries, but is not required to recompile its source
4 (P=Patch) Bug fixes only If libraries are provided by the package, an application must re-link with the new libraries, but is not required to recompile its source.
+

+


+

+

Versioning

+

+Each package version is composed of 4 period-delimited numbers - represented here by the letters M, m, p and b [M.m.p.b]. The table below provides a descriptive reference regarding package version numbering.

+ + + + + + + + + + + + +
Package Version Reference
Digit Meaning Description
1 (M=Major) Major revision Incremented when the new version is substantially different from the previous For example, a new module added or an existing module's algorithm significantly altered.
2 (m=minor) Minor revision Incremented when the new version has changed but not in a major way. For example, some minor changes in the API or feature set.
3 (p=patch) Patch number Incremented for all other source code changes. This include any packaging support code.
4 (b=build) Build number Incremented for each release delivery to CM. Reset for any change to M, m or p
+


+Copyright 2012, Texas Instruments Incorporated + + diff --git a/ti/dsplib/docs/dsplib/docs/relnotes_archive/dsplib_3_1_1_1_release_notes.html b/ti/dsplib/docs/dsplib/docs/relnotes_archive/dsplib_3_1_1_1_release_notes.html new file mode 100644 index 0000000..e69de29 diff --git a/ti/dsplib/docs/dsplib/docs/relnotes_archive/dsplib_3_2_0_0_release_notes.html b/ti/dsplib/docs/dsplib/docs/relnotes_archive/dsplib_3_2_0_0_release_notes.html new file mode 100644 index 0000000..bc1f0c9 --- /dev/null +++ b/ti/dsplib/docs/dsplib/docs/relnotes_archive/dsplib_3_2_0_0_release_notes.html @@ -0,0 +1,222 @@ + + +DSPLIB Bundle Release Notes + + + + + + + + +
+ +

DSPLIB 3.2.0.0 Release Notes

+

October 31, 2013

+

DSPLIB Bundle Release Notes

+

+


+

+

Contents

+

+

    +
  1. +Introduction
  2. +
  3. +Getting Started
  4. +
  5. +Documentation
    +
  6. +
  7. +What's New
    +
  8. +
  9. +Upgrade and Compatibility Information
    +
  10. +
  11. +Device Support
    +
  12. +
  13. +Validation Information
    +
  14. +
  15. +Known Issues
    +
  16. +
  17. +Technical Support
    +
  18. +
  19. +Component Release Notes
    +
  20. +
+

+


+

+

Introduction

+

+The DSPLIB bundle is an optimized DSP Function Library package together with the software tools (SWTOOLS) package in bundle format to simplify the release procedure.

+


+

+

Getting Started

+

+The DSPLIB User's Manual provides the documentation and references necessary to integrate DSPLIB Library routines into a development platform.

+


+

+

Documentation

+

+The following documentation is available:

+ + + + + + + + + +
User's Manual [HTML]
+ [CHM]
Test Report [HTML]
+
Software Manifest [HTML]
+
Release Notes Archive [LINK]
+

+


+

+

What's New

+

+The following new features were added:

    +
  1. +Random number generators
  2. +
  3. +SP/DP Cholesky Matrix Decomposition
  4. +
+

+


+

+

Upgrade and Compatibility Information

+

+This version of DSPLIB is compatible with the last released version:

+ + + + + +
YES X
NO
+

+ + + +
Note:
    +
  1. +Package compatibility keys are independent of component release versions. For more information visit: Package Versioning and Compatibility
  2. +
+
+

+


+

+

Device Support

+

+This release supports the following device families:

+

    +
  • +C66x DSP (COFF, Little-Endian format)
  • +
  • +C66x DSP (COFF, Big-Endian format)
  • +
  • +C66x DSP (ELF, Little-Endian format)
  • +
  • +C66x DSP (ELF, Big-Endian format)
  • +
+

+


+

+

Validation Information

+

+This release was built and validated using the following tools:

+

    +
  • +XDC Tools version: 8
  • +
  • +RTSC Packaging Standard version: 2.0
  • +
  • +C6000 Code Generation Tools version: 7.4.2
  • +
  • +Code Composer Studio version: V5
  • +
  • +GNU make version: 3.81
  • +
+

+


+

+

Known Issues

+

+

    +
  1. +DSPLIB package expanded in the graphical editor the information displayed is not correct (IR #081767)
  2. +
+

+


+

+

Technical Support

+

+Questions regarding the DSPLIB library should be directed to the Texas Instruments TI-RTOS E2E Forum. Please include the text "DSPLIB" in the title and add "C66x" and "DSPLIB" tags to your post.

+


+

+

Component Release Notes

+

+

    +
  1. +DSPLIB Release Notes
  2. +
+

+


+
+

+

Package Versioning and Compatibility

+

+

Compatibility Keys

+

+Compatibility keys serve two primary purposes:

+

    +
  1. +Enable tooling to identify incompatibilities between components
  2. +
  3. +Convey a level of compatibility between different releases to set end user expectations.
  4. +
+

+Each compatibility key is composed of 4 comma-delimited numbers - represented here by the letters M, S, R and P [M,S,R,P]. The table below provides a descriptive reference for compatibility key intention.

+ + + + + + + + + + + + +
Compatibility Key Reference
Key Meaning Description
1 (M=Major) Break in compatibility The package consumer is required to re-write the calling source code to use the package
2 (S=Source) Source compatibility The package consumerÂ’s source code doesn't require change, but does require a recompile
3 (R=Radix) Introduction of new features Compatibility with previous interfaces is not broken. If libraries are provided by the package, an application must re-link with the new libraries, but is not required to recompile its source
4 (P=Patch) Bug fixes only If libraries are provided by the package, an application must re-link with the new libraries, but is not required to recompile its source.
+

+


+

+

Versioning

+

+Each package version is composed of 4 period-delimited numbers - represented here by the letters M, m, p and b [M.m.p.b]. The table below provides a descriptive reference regarding package version numbering.

+ + + + + + + + + + + + +
Package Version Reference
Digit Meaning Description
1 (M=Major) Major revision Incremented when the new version is substantially different from the previous For example, a new module added or an existing module's algorithm significantly altered.
2 (m=minor) Minor revision Incremented when the new version has changed but not in a major way. For example, some minor changes in the API or feature set.
3 (p=patch) Patch number Incremented for all other source code changes. This include any packaging support code.
4 (b=build) Build number Incremented for each release delivery to CM. Reset for any change to M, m or p
+


+Copyright 2013, Texas Instruments Incorporated + + diff --git a/ti/dsplib/docs/dsplib/docs/relnotes_archive/dsplib_3_2_0_1_release_notes.html b/ti/dsplib/docs/dsplib/docs/relnotes_archive/dsplib_3_2_0_1_release_notes.html new file mode 100644 index 0000000..95101ee --- /dev/null +++ b/ti/dsplib/docs/dsplib/docs/relnotes_archive/dsplib_3_2_0_1_release_notes.html @@ -0,0 +1,222 @@ + + +DSPLIB Bundle Release Notes + + + + + + + + +
+ +

DSPLIB 3.2.0.1 Release Notes

+

July 29, 2014

+

DSPLIB Bundle Release Notes

+

+


+

+

Contents

+

+

    +
  1. +Introduction
  2. +
  3. +Getting Started
  4. +
  5. +Documentation
    +
  6. +
  7. +What's New
    +
  8. +
  9. +Upgrade and Compatibility Information
    +
  10. +
  11. +Device Support
    +
  12. +
  13. +Validation Information
    +
  14. +
  15. +Known Issues
    +
  16. +
  17. +Technical Support
    +
  18. +
  19. +Component Release Notes
    +
  20. +
+

+


+

+

Introduction

+

+The DSPLIB bundle is an optimized DSP Function Library package together with the software tools (SWTOOLS) package in bundle format to simplify the release procedure.

+


+

+

Getting Started

+

+The DSPLIB User's Manual provides the documentation and references necessary to integrate DSPLIB Library routines into a development platform.

+


+

+

Documentation

+

+The following documentation is available:

+ + + + + + + + + +
User's Manual [HTML]
+ [CHM]
Test Report [HTML]
+
Software Manifest [HTML]
+
Release Notes Archive [LINK]
+

+


+

+

What's New

+

+The following new features were added:

    +
  1. +Random number generators
  2. +
  3. +SP/DP Cholesky Matrix Decomposition
  4. +
+

+


+

+

Upgrade and Compatibility Information

+

+This version of DSPLIB is compatible with the last released version:

+ + + + + +
YES X
NO
+

+ + + +
Note:
    +
  1. +Package compatibility keys are independent of component release versions. For more information visit: Package Versioning and Compatibility
  2. +
+
+

+


+

+

Device Support

+

+This release supports the following device families:

+

    +
  • +C66x DSP (COFF, Little-Endian format)
  • +
  • +C66x DSP (COFF, Big-Endian format)
  • +
  • +C66x DSP (ELF, Little-Endian format)
  • +
  • +C66x DSP (ELF, Big-Endian format)
  • +
+

+


+

+

Validation Information

+

+This release was built and validated using the following tools:

+

    +
  • +XDC Tools version: 8
  • +
  • +RTSC Packaging Standard version: 2.0
  • +
  • +C6000 Code Generation Tools version: 7.4.2
  • +
  • +Code Composer Studio version: V5
  • +
  • +GNU make version: 3.81
  • +
+

+


+

+

Known Issues

+

+

    +
  1. +DSPLIB package expanded in the graphical editor the information displayed is not correct (IR #081767)
  2. +
+

+


+

+

Technical Support

+

+Questions regarding the DSPLIB library should be directed to the Texas Instruments TI-RTOS E2E Forum. Please include the text "DSPLIB" in the title and add "C66x" and "DSPLIB" tags to your post.

+


+

+

Component Release Notes

+

+

    +
  1. +DSPLIB Release Notes
  2. +
+

+


+
+

+

Package Versioning and Compatibility

+

+

Compatibility Keys

+

+Compatibility keys serve two primary purposes:

+

    +
  1. +Enable tooling to identify incompatibilities between components
  2. +
  3. +Convey a level of compatibility between different releases to set end user expectations.
  4. +
+

+Each compatibility key is composed of 4 comma-delimited numbers - represented here by the letters M, S, R and P [M,S,R,P]. The table below provides a descriptive reference for compatibility key intention.

+ + + + + + + + + + + + +
Compatibility Key Reference
Key Meaning Description
1 (M=Major) Break in compatibility The package consumer is required to re-write the calling source code to use the package
2 (S=Source) Source compatibility The package consumerÂ’s source code doesn't require change, but does require a recompile
3 (R=Radix) Introduction of new features Compatibility with previous interfaces is not broken. If libraries are provided by the package, an application must re-link with the new libraries, but is not required to recompile its source
4 (P=Patch) Bug fixes only If libraries are provided by the package, an application must re-link with the new libraries, but is not required to recompile its source.
+

+


+

+

Versioning

+

+Each package version is composed of 4 period-delimited numbers - represented here by the letters M, m, p and b [M.m.p.b]. The table below provides a descriptive reference regarding package version numbering.

+ + + + + + + + + + + + +
Package Version Reference
Digit Meaning Description
1 (M=Major) Major revision Incremented when the new version is substantially different from the previous For example, a new module added or an existing module's algorithm significantly altered.
2 (m=minor) Minor revision Incremented when the new version has changed but not in a major way. For example, some minor changes in the API or feature set.
3 (p=patch) Patch number Incremented for all other source code changes. This include any packaging support code.
4 (b=build) Build number Incremented for each release delivery to CM. Reset for any change to M, m or p
+


+Copyright 2014, Texas Instruments Incorporated + + diff --git a/ti/dsplib/docs/dsplib/docs/relnotes_archive/tilogo.gif b/ti/dsplib/docs/dsplib/docs/relnotes_archive/tilogo.gif new file mode 100644 index 0000000000000000000000000000000000000000..f2fab2da7bf35dbc41b8edb749d037d25d157df0 GIT binary patch literal 1137 zcmV-%1djVhNk%w1Vcq~X0HOc@00030|NpzYyKirAKR-VP1_tQp=olCnA^8LV00000 zEC2ui0NwyL000C32)f+}*y*TU5yZ>M)j$~<`XsWJk>%MR-&vb3yc&_h!@BhG{ za7Zi~kI1BQ$!t2G(5Q5JD+~hIEP=`;TC>`&ICupIwt&IlFmB_@;4J|waNB2Jvtckd z2nc|8f-HGvYia-nS$huz0*{c90s}QxYKVh1aB+%fh7ST}q5*6)b65qLnxhAFn`fyF zd!?bU2ac3AbgDFk0d)YUxp27=1+`lRfXmAVx6J_0feO#147Yp))(*QD)!Sps(HNGO z1GT$(1F7i163Ef$V0`FX2ce7r>I_z$SOyX36u5__SeZJG%m5ly(BGnU#1yDQ2kw-C z1F!z2`B#en;2wss1~_zQ0c1gKwVr{=7Xe3Ol*x95K&%GcA}R=_ zPthL&SI+GzvvjE|kp&a|`k6>Tsw^a>p3(R3k^lo+Y8gnSEPzrqS=9L1i8K^d3K>P! z3;=diRtGLm-3+F{BEe!CJKe;`U>dhyedi4guyJdFf#>uU5cn9a<5P7)Wt9m4j5RoD zG(YYe7Au=MY7VeN_4upVpL{N?HreV|+`A3(VnJg?Cz#C_y8#dzTSB)!VTdv<4iqu9 zGH6=)8SZ=m=id_jg|4nmpX*(y8PsBcwL1rSX8sgJFC2pIUyr6QIQEZf_)f82u{;cH zPC~l>3C*<98st^i7#~oPLfvM-(3OR1R|vM4AMu4Y$v^4=HlB6q?d8B*^EosRG9tDI z%5I6#6<=1TY-Qa=>f|RPZk;*j-vON%pojtqnzlfD83{m(fx|WU2p!Tvx0pgh)d5E+ z>u|`}eCz?%0Ei33W!5EWR5`(WH~F*xj*G-nfKf-%)c{i3J#d_3@{FleTCo6mk|JO& z#vo2YVz?!W3ub8{kMsPrVPWUw1Ob-Rbn-_nl#J%f9~6K&pLp;^6&NIf-6Gj+9^z!9 zi*sR-Mgs@^SX~}+a1*-eXewzE4b+J-64WH*gw~Mx3pgzSs+Ugx zltlQLggQ#}(o|-B2558rxfsl^j})tEjqb3zWMt2U` zNWo7QK|<#Rf~CR~r)SjKVp3EIhR-Cm;8q(z8v!=gOKU-ur>Is*iAIas;Hd^aXiOE@ zl45GSakSB58s(B9+BWCO_F^Dbp%aVp)I4loHpk}*1pWw#=U#It;Ky&) zw8LYL7Yp_ulH(e^MS@_lx1LeCovifIL9^U)%%Y4%&U}wC%IK$5k@dmZ68ywA1WZ(d+%-(kN^NX D-#`uN literal 0 HcmV?d00001 diff --git a/ti/dsplib/docs/dsplib/docs/relnotes_archive/titagline.gif b/ti/dsplib/docs/dsplib/docs/relnotes_archive/titagline.gif new file mode 100644 index 0000000000000000000000000000000000000000..743a0249e3fbf0c14128aad036beac9611724b72 GIT binary patch literal 653 zcmV;80&@LFNk%w1VLAaC0J8u9{{R60|NsAXcK^4x|Ba3R*4F>+?f)Sm|Mm6%qoe=F z$NxV+|6E-EM)j$~<` zXsWJk>%MR-&vb3yc&_h!@BhG{a7Zi~kI1BQ$!t2Gw?jiPAW)&$tkyRG3=)Lyb{q4?ux(04jo%^#;w z*?fH?FK40yz>tYW`UvcVcnaqIoI4?Fq;N+~u~C{vt6Qy6Wh(SipkZFWX}As^J9y^W zt`Y_`NHE8sm_C0PSE5plu4l*mN)hBoKq_d^d>v}M`Gz3^3EmDM3umBIUdyW+Pw?0_ zaafZmRRSPp%@m;om><<_Iaqe0(VypT@`T{(INO=`z6rF<+u&TgB%o~tZ9;>Bx4Sn} z%p0 + + + +DSPLIB Package + +
+
+

Manifest for DSPLIB Package + Version 3.4.0.1

+

The TI C6000 DSPLIB is an optimized DSP Function Library for C programmers

+
+
+ +
+

Legend (explanation of the fields in the Manifest Table below)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Software NameThe name of the application or file
VersionVersion of the application or file
License TypeType of license(s) under which TI will be providing software to + the licensee (e.g. BSD, GPLv2, TI TSPA License, TI Proprietary + License). See Open Source Reference License Disclaimer in the + Disclaimers Section.
LocationThe directory name and path on the media (or in an archive) where + the Software is located.
Delivered AsThis field will either be "Source", "Binary" or "Source and Binary" + and is the form the content of the Software is delivered in. If the + Software is delivered in an archive format, this field applies to + the contents of the archive. If the word Limited is used with Source, + as in "Limited Source" or "Limited Source and Binary" then only + portions of the Source for the application are provided.
Modified by TIThis field will either be "Yes" or "No". A "Yes" means TI has made + changes to the Software. A "No" means TI has not made any changes. + Note: This field is not applicable for Software "Obtained from" TI.
Obtained fromThis field specifies from where or from whom TI obtained the Software. + It may be a URL to an Open Source site, a 3rd party licensor, or TI + (if TI developed the software). If this field contains a link to Open + Source software, the date TI downloaded the Software is also recorded. + See Links Disclaimer in the Disclaimers Section.
+
+
+

Disclaimers

Export Control Classification Number (ECCN)

+

Any use of ECCNs listed in the Manifest is at the user's risk and without + recourse to TI. Your company, as the exporter of record, is responsible + for determining the correct classification of any item at the time of export. + Any export classification by TI of Software is for TI's internal use only + and shall not be construed as a representation or warranty regarding the + proper export classification for such Software or whether an export license + or other documentation is required for exporting such Software.

+

Links in the Manifest

+

Any links appearing on this Manifest (for example in the "Obtained from" + field) were verified at the time the Manifest was created. TI makes no + guarantee that any listed links will remain active in the future.

+

Open Source License References

+

Your company is responsible for confirming the applicable license terms for + any open source Software listed in this Manifest that was not "Obtained from" + TI. Any open source license specified in this Manifest for Software that + was not "Obtained from" TI is for TI's internal use only and shall not be + construed as a representation or warranty regarding the proper open source + license terms for such Software.

+
+
+

Export Information

ECCN for Software included in this release: Publicly Available

+

ECCN for Technology (e.g., user documentation, specifications) included in this release: Publicly Available

+
+
+

Manifest

See Legend above for a description of the columns and possible values.

+ + + + + + + + + + + + + + + + + + + + + + +
Software NameVersionLicense TypeDelivered AsModified by TI 
Digital Signal Processing library3.4.0.1TI BSDSourceN/ALocation~/ti/dsplib
Obtained fromTI
+
+ +
+

Licenses

+ Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ +

+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: +

+ Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +

+ Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +

+ Neither the name of Texas Instruments Incorporated nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. +

+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +

+

+
+
+
+
+ diff --git a/ti/dsplib/docs/manifest/manifest.xml b/ti/dsplib/docs/manifest/manifest.xml new file mode 100644 index 0000000..7770844 --- /dev/null +++ b/ti/dsplib/docs/manifest/manifest.xml @@ -0,0 +1,100 @@ + + + + + + + + + + 1.00.00.00 + + + DSPLIB Package + 3.4.0.1 + Publicly Available + Publicly Available + The TI C6000 DSPLIB is an optimized DSP Function Library for C programmers + + + + Digital Signal Processing library + 3.4.0.1 + TI BSD + Source + N/A + ~/ti/dsplib + TI + + + + Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ + <br><br> + Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + <br><br> + Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + <br><br> + Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + <br><br> + Neither the name of Texas Instruments Incorporated nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + <br><br> + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + <br><br> + + diff --git a/ti/dsplib/docs/manifest/manifest.xml.xdt b/ti/dsplib/docs/manifest/manifest.xml.xdt new file mode 100644 index 0000000..5758d74 --- /dev/null +++ b/ti/dsplib/docs/manifest/manifest.xml.xdt @@ -0,0 +1,107 @@ +%%{ +/*! + * This template implements the Doxyfile + */ + var ver = this.version; + var Version = ver[0]+"."+ver[1]+"."+ver[2]+"."+ver[3]; +%%} + + + + + + + + + + 1.00.00.00 + + + DSPLIB Package + `Version` + Publicly Available + Publicly Available + The TI C6000 DSPLIB is an optimized DSP Function Library for C programmers + + + + Digital Signal Processing library + `Version` + TI BSD + Source + N/A + ~/ti/dsplib + TI + + + + Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ + <br><br> + Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + <br><br> + Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + <br><br> + Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + <br><br> + Neither the name of Texas Instruments Incorporated nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + <br><br> + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + <br><br> + + \ No newline at end of file diff --git a/ti/dsplib/docs/relnotes_archive/dsplib_3_0_0_6_release_notes.html b/ti/dsplib/docs/relnotes_archive/dsplib_3_0_0_6_release_notes.html new file mode 100644 index 0000000..23ba10a --- /dev/null +++ b/ti/dsplib/docs/relnotes_archive/dsplib_3_0_0_6_release_notes.html @@ -0,0 +1,106 @@ + + +DSPLIB 3.0.0.7 Release Notes + + + + + + + + +
+ +

DSPLIB 3.0.0.7 Release Notes

+

May 2, 2011

+

+

+Introduction, Documentation, What's New Upgrade and Compatibility Information, Host Support, Device Support, Validation Information, Known Issues, Version Information, Technical Support

+


+

Introduction

+

+The TI C6000 DSPLIB is an optimized DSP Function Library for C programmers. It includes many C-callable, optimized, general-purpose signal-processing routines. These routines are typically used in computationally-intensive real-time applications where optimal execution speed is critical.

+back to top

+


+

+

Documentation

+

+The following documentation is available:

+

+Release notes from previous releases are also available in the relnotes_archive directory.

+back to top

+


+

+

What's New

+

+The following new features were added:

    +
  • C64x+ big-endian Support.
  • C64x+ little-endian Support.
  • C66x big-endian Support.
  • C66x little-endian Support.
  • C66x COFF Support.
+

+back to top

+


+

+

Upgrade and Compatibility Information

+

+This ti.dsplib is initial version.

+Please note that the package compatibility keys are independent of XDC product release numbers.

+Package compatibility keys are intended to:

+

    +
  1. Enable tooling to identify incompatibilities between components, and
  2. Convey a level of compatibility between different releases to set end user expectations.
+

+Package compatibility keys are composed of 4 comma-delimited numbers - M, S, R, P - where:

+

    +
  • M = Major - A difference in M indicates a break in compatibility. The package consumer is required to re-write its source code in order to use the package.
  • S = Source - A difference in S indicates source compatibility. The package consumerÂ’s source code doesn't require change, but does require a recompile.
  • R = Radix - A difference in R indicates an introduction of new features, but compatibility with previous interfaces is not broken. If libraries are provided by the package, an application must re-link with the new libraries, but is not required to recompile its source.
  • P = Patch - A difference in P indicates that only bugs have been fixed in the latest package and no new features have been introduced. If libraries are provided by the package, an application must re-link with the new libraries, but is not required to recompile its source.
+

+back to top

+


+

+

Device Support

+

+This release supports the following device families:

+

    +
  • +C64x+ DSP
  • +
  • +C66x DSP
  • +
+

+back to top

+


+

+

Validation Information

+

+This release was built and validated using the following tools:

+

    +
  • +XDC Tools version 3.20.05.76
  • +
  • +C6x Code Generation Tools version 7.2.0
  • +
  • +CCS 4.2
  • +
+

+back to top

+


+

+

Known Issues

+

+These known issues will be fixed in the next (GA) release.

    +
  • Some floating point kernels are not fully optimized for C66
  • Floating point FFT needs big-endian support
  • Floating point kernels missing cycle formula
  • Doxygen user guide missing carriage returns
+

+back to top

+


+

+

Version Information

+

+This product's version follows a version format, M.m.p.b, where M is a single digit Major number, m is single digit minor number, p is a single digit patch number and b is an unrestricted set of digits used as an incrementing build counter.

+Please note that version numbers and compatibility keys are NOT the same. For an explanation of compatibility keys, please refer to the 'Upgrade and Compatibility Information' section.

+back to top

+


+

Technical Support

+

+Contact local TI Field Application Engineer for technical support.

+back to top


+Copyright 2011, Texas Instruments Incorporated + + diff --git a/ti/dsplib/docs/relnotes_archive/dsplib_3_0_0_8_release_notes.html b/ti/dsplib/docs/relnotes_archive/dsplib_3_0_0_8_release_notes.html new file mode 100644 index 0000000..4d0d03b --- /dev/null +++ b/ti/dsplib/docs/relnotes_archive/dsplib_3_0_0_8_release_notes.html @@ -0,0 +1,105 @@ + + +DSPLIB 3.0.0.8 Release Notes + + + + + + + + +
+ +

DSPLIB 3.0.0.8 Release Notes

+

May 31, 2011

+

+

+Introduction, Documentation, What's New Upgrade and Compatibility Information, Host Support, Device Support, Validation Information, Known Issues, Version Information, Technical Support

+


+

Introduction

+

+The TI C6000 DSPLIB is an optimized DSP Function Library for C programmers. It includes many C-callable, optimized, general-purpose signal-processing routines. These routines are typically used in computationally-intensive real-time applications where optimal execution speed is critical.

+back to top

+


+

+

Documentation

+

+The following documentation is available:

+

+Release notes from previous releases are also available in the relnotes_archive directory.

+back to top

+


+

+

What's New

+

+The following new features were added:

    +
  • C64x+ big-endian Support.
  • C64x+ little-endian Support.
  • C66x big-endian Support.
  • C66x little-endian Support.
  • C66x COFF Support.
+

+back to top

+


+

+

Upgrade and Compatibility Information

+

+This ti.dsplib is initial version.

+Please note that the package compatibility keys are independent of XDC product release numbers.

+Package compatibility keys are intended to:

+

    +
  1. Enable tooling to identify incompatibilities between components, and
  2. Convey a level of compatibility between different releases to set end user expectations.
+

+Package compatibility keys are composed of 4 comma-delimited numbers - M, S, R, P - where:

+

    +
  • M = Major - A difference in M indicates a break in compatibility. The package consumer is required to re-write its source code in order to use the package.
  • S = Source - A difference in S indicates source compatibility. The package consumerÂ’s source code doesn't require change, but does require a recompile.
  • R = Radix - A difference in R indicates an introduction of new features, but compatibility with previous interfaces is not broken. If libraries are provided by the package, an application must re-link with the new libraries, but is not required to recompile its source.
  • P = Patch - A difference in P indicates that only bugs have been fixed in the latest package and no new features have been introduced. If libraries are provided by the package, an application must re-link with the new libraries, but is not required to recompile its source.
+

+back to top

+


+

+

Device Support

+

+This release supports the following device families:

+

    +
  • +C64x+ DSP
  • +
  • +C66x DSP
  • +
+

+back to top

+


+

+

Validation Information

+

+This release was built and validated using the following tools:

+

    +
  • +XDC Tools version 3.20.05.76
  • +
  • +C6x Code Generation Tools version 7.2.0
  • +
  • +CCS 4.2
  • +
+

+back to top

+


+

+

Known Issues

+

+

    +
  • C64x+ ELF support will be added in next release. back to top
+

+


+

+

Version Information

+

+This product's version follows a version format, M.m.p.b, where M is a single digit Major number, m is single digit minor number, p is a single digit patch number and b is an unrestricted set of digits used as an incrementing build counter.

+Please note that version numbers and compatibility keys are NOT the same. For an explanation of compatibility keys, please refer to the 'Upgrade and Compatibility Information' section.

+back to top

+


+

Technical Support

+

+Contact local TI Field Application Engineer for technical support.

+back to top


+Copyright 2011, Texas Instruments Incorporated + + diff --git a/ti/dsplib/docs/relnotes_archive/dsplib_3_0_1_0_release_notes.html b/ti/dsplib/docs/relnotes_archive/dsplib_3_0_1_0_release_notes.html new file mode 100644 index 0000000..cf495e4 --- /dev/null +++ b/ti/dsplib/docs/relnotes_archive/dsplib_3_0_1_0_release_notes.html @@ -0,0 +1,106 @@ + + +DSPLIB 3.0.1.0 Release Notes + + + + + + + + +
+ +

DSPLIB 3.0.1.0 Release Notes

+

August 2, 2011

+

+

+Introduction, Documentation, What's New Upgrade and Compatibility Information, Host Support, Device Support, Validation Information, Known Issues, Version Information, Technical Support

+


+

Introduction

+

+The TI C6000 DSPLIB is an optimized DSP Function Library for C programmers. It includes many C-callable, optimized, general-purpose signal-processing routines. These routines are typically used in computationally-intensive real-time applications where optimal execution speed is critical.

+back to top

+


+

+

Documentation

+

+The following documentation is available:

+

+Release notes from previous releases are also available in the relnotes_archive directory.

+back to top

+


+

+

What's New

+

+The following new features were added:

    +
  • C64x+ ELF Support.
+

+back to top

+


+

+

Upgrade and Compatibility Information

+

+This ti.dsplib release is backward compatible with the last released version.

+Please note that the package compatibility keys are independent of XDC product release numbers.

+Package compatibility keys are intended to:

+

    +
  1. Enable tooling to identify incompatibilities between components, and
  2. Convey a level of compatibility between different releases to set end user expectations.
+

+Package compatibility keys are composed of 4 comma-delimited numbers - M, S, R, P - where:

+

    +
  • M = Major - A difference in M indicates a break in compatibility. The package consumer is required to re-write its source code in order to use the package.
  • S = Source - A difference in S indicates source compatibility. The package consumerÂ’s source code doesn't require change, but does require a recompile.
  • R = Radix - A difference in R indicates an introduction of new features, but compatibility with previous interfaces is not broken. If libraries are provided by the package, an application must re-link with the new libraries, but is not required to recompile its source.
  • P = Patch - A difference in P indicates that only bugs have been fixed in the latest package and no new features have been introduced. If libraries are provided by the package, an application must re-link with the new libraries, but is not required to recompile its source.
+

+back to top

+


+

+

Device Support

+

+This release supports the following device families:

+

    +
  • +C64x+ DSP
  • +
  • +C66x DSP
  • +
+

+back to top

+


+

+

Validation Information

+

+This release was built and validated using the following tools:

+

    +
  • +XDC Tools version 3.20.05.76
  • +
  • +C6x Code Generation Tools version 7.2.0
  • +
  • +CCS 4.2
  • +
+

+back to top

+


+

+

Known Issues

+

+

    +
  • None
+

+back to top

+


+

+

Version Information

+

+This product's version follows a version format, M.m.p.b, where M is a single digit Major number, m is single digit minor number, p is a single digit patch number and b is an unrestricted set of digits used as an incrementing build counter.

+Please note that version numbers and compatibility keys are NOT the same. For an explanation of compatibility keys, please refer to the 'Upgrade and Compatibility Information' section.

+back to top

+


+

Technical Support

+

+Contact local TI Field Application Engineer for technical support.

+back to top


+Copyright 2011, Texas Instruments Incorporated + + diff --git a/ti/dsplib/docs/relnotes_archive/dsplib_3_1_0_0_release_notes.html b/ti/dsplib/docs/relnotes_archive/dsplib_3_1_0_0_release_notes.html new file mode 100644 index 0000000..65105e6 --- /dev/null +++ b/ti/dsplib/docs/relnotes_archive/dsplib_3_1_0_0_release_notes.html @@ -0,0 +1,124 @@ + + +DSPLIB 3.1.0.0 Release Notes + + + + + + + + +
+ +

DSPLIB 3.1.0.0 Release Notes

+

October 4, 2011

+

+

+Introduction, Documentation, What's New Upgrade and Compatibility Information, Host Support, Device Support, Validation Information, Known Issues, Version Information, Technical Support

+


+

Introduction

+

+The TI C6000 DSPLIB is an optimized DSP Function Library for C programmers. It includes many C-callable, optimized, general-purpose signal-processing routines. These routines are typically used in computationally-intensive real-time applications where optimal execution speed is critical.

+back to top

+


+

+

Documentation

+

+The following documentation is available:

+

+Release notes from previous releases are also available in the relnotes_archive directory.

+back to top

+


+

+

What's New

+

+The following new features were added:

    +
  1. +C64x+ ELF support.
  2. +
  3. +C674x support.
  4. +
  5. +The following new C66x kernels are added:
      +
    • DSPF_dp_fftDPxDP
    • DSPF_dp_ifftDPxDP
    • DSPF_dp_mat_mul_gemm
    • DSPF_dp_mat_submat_copy
    • DSPF_dp_mat_trans
    • DSPF_sp_mat_mul_gemm
    • DSPF_sp_mat_submat_copy
    • DSPF_sp_mat_mul_gemm_cplx
    • DSPF_sp_mat_submat_copy_cplx
    • DSPF_sp_mat_trans_cplx
    +
  6. +
  7. +The following C66x kernels are further optimized:
      +
    • DSPF_sp_fftSPxSP
    • DSPF_sp_ifftSPxSP
    • DSPF_sp_mat_trans
    • DSPF_sp_mat_mul
    • DSPF_sp_mat_mul_cplx
    +
  8. +
+

+back to top

+


+

+

Upgrade and Compatibility Information

+

+This ti.dsplib release is backward compatible with the last released version.

+Please note that the package compatibility keys are independent of XDC product release numbers.

+Package compatibility keys are intended to:

+

    +
  1. Enable tooling to identify incompatibilities between components, and
  2. Convey a level of compatibility between different releases to set end user expectations.
+

+Package compatibility keys are composed of 4 comma-delimited numbers - M, S, R, P - where:

+

    +
  • M = Major - A difference in M indicates a break in compatibility. The package consumer is required to re-write its source code in order to use the package.
  • S = Source - A difference in S indicates source compatibility. The package consumerÂ’s source code doesn't require change, but does require a recompile.
  • R = Radix - A difference in R indicates an introduction of new features, but compatibility with previous interfaces is not broken. If libraries are provided by the package, an application must re-link with the new libraries, but is not required to recompile its source.
  • P = Patch - A difference in P indicates that only bugs have been fixed in the latest package and no new features have been introduced. If libraries are provided by the package, an application must re-link with the new libraries, but is not required to recompile its source.
+

+back to top

+


+

+

Device Support

+

+This release supports the following device families:

+

    +
  • +C64x+ DSP
  • +
  • +C674x DSP
  • +
  • +C66x DSP
  • +
+

+back to top

+


+

+

Validation Information

+

+This release was built and validated using the following tools:

+

    +
  • +XDC Tools version 3.20.05.76
  • +
  • +C6x Code Generation Tools version 7.2.4
  • +
  • +CCS 4.2
  • +
+

+back to top

+


+

+

Known Issues

+

+

    +
  • +Split library bundle documentation between HTML and Doxygen (IR #082498)
  • +
  • +DSPLIB package expanded in the graphical editor the information displayed is not correct (IR #081767)
  • +
+

+back to top

+


+

+

Version Information

+

+This product's version follows a version format, M.m.p.b, where M is a single digit Major number, m is single digit minor number, p is a single digit patch number and b is an unrestricted set of digits used as an incrementing build counter.

+Please note that version numbers and compatibility keys are NOT the same. For an explanation of compatibility keys, please refer to the 'Upgrade and Compatibility Information' section.

+back to top

+


+

Technical Support

+

+Contact local TI Field Application Engineer for technical support.

+back to top


+Copyright 2011, Texas Instruments Incorporated + + diff --git a/ti/dsplib/docs/relnotes_archive/dsplib_3_1_1_0_release_notes.html b/ti/dsplib/docs/relnotes_archive/dsplib_3_1_1_0_release_notes.html new file mode 100644 index 0000000..325ed6e --- /dev/null +++ b/ti/dsplib/docs/relnotes_archive/dsplib_3_1_1_0_release_notes.html @@ -0,0 +1,120 @@ + + +DSPLIB 3.1.1.0 Release Notes + + + + + + + + +
+ +

DSPLIB 3.1.1.0 Release Notes

+

July 13, 2012

+

+

+Introduction, Documentation, What's New Upgrade and Compatibility Information, Host Intrinsic Library Support, Device Support, Validation Information, Known Issues, Version Information, Technical Support

+


+

Introduction

+

+The TI C6000 DSPLIB is an optimized DSP Function Library for C programmers. It includes many C-callable, optimized, general-purpose signal-processing routines. These routines are typically used in computationally-intensive real-time applications where optimal execution speed is critical.

+back to top

+


+

+

Documentation

+

+The following documentation is available:

+

+Release notes from previous releases are also available in the relnotes_archive directory.

+back to top

+


+

+

What's New

+

+The following new features were added:

    +
  1. +Host Intrinsic Library support.
  2. +
+

+back to top

+


+

+

Upgrade and Compatibility Information

+

+This ti.dsplib release is backward compatible with the last released version.

+Please note that the package compatibility keys are independent of XDC product release numbers.

+Package compatibility keys are intended to:

+

    +
  1. Enable tooling to identify incompatibilities between components, and
  2. Convey a level of compatibility between different releases to set end user expectations.
+

+Package compatibility keys are composed of 4 comma-delimited numbers - M, S, R, P - where:

+

    +
  • M = Major - A difference in M indicates a break in compatibility. The package consumer is required to re-write its source code in order to use the package.
  • S = Source - A difference in S indicates source compatibility. The package consumerÂ’s source code doesn't require change, but does require a recompile.
  • R = Radix - A difference in R indicates an introduction of new features, but compatibility with previous interfaces is not broken. If libraries are provided by the package, an application must re-link with the new libraries, but is not required to recompile its source.
  • P = Patch - A difference in P indicates that only bugs have been fixed in the latest package and no new features have been introduced. If libraries are provided by the package, an application must re-link with the new libraries, but is not required to recompile its source.
+

+back to top

+


+

+

Device Support

+

+This release supports the following device families:

+

    +
  • +C64x+ DSP
  • +
  • +C674x DSP
  • +
  • +C66x DSP
  • +
+

+back to top

+


+

+

Host Intrinsic Library Support

+

+This release supports Host Intrinsic Library. Please refer to Texas Instruments Host Intrinsic Library Wiki Page for more information.

+back to top

+


+

+

Validation Information

+

+This release was built and validated using the following tools:

+

    +
  • +XDC Tools version 3.20.05.76
  • +
  • +C6x Code Generation Tools version 7.2.4
  • +
  • +CCS 4.2
  • +
+

+back to top

+


+

+

Known Issues

+

+

    +
  • +Split library bundle documentation between HTML and Doxygen (IR #082498)
  • +
  • +DSPLIB package expanded in the graphical editor the information displayed is not correct (IR #081767)
  • +
+

+back to top

+


+

+

Version Information

+

+This product's version follows a version format, M.m.p.b, where M is a single digit Major number, m is single digit minor number, p is a single digit patch number and b is an unrestricted set of digits used as an incrementing build counter.

+Please note that version numbers and compatibility keys are NOT the same. For an explanation of compatibility keys, please refer to the 'Upgrade and Compatibility Information' section.

+back to top

+


+

Technical Support

+

+Questions regarding the DSPLIB library should be directed to the Texas Instruments BIOS E2E Forum. Please include the text DSPLIB in the title and add the DSPLIB tag to your post.

+back to top


+Copyright 2012, Texas Instruments Incorporated + + diff --git a/ti/dsplib/docs/relnotes_archive/dsplib_3_1_1_1_release_notes.html b/ti/dsplib/docs/relnotes_archive/dsplib_3_1_1_1_release_notes.html new file mode 100644 index 0000000..bfc7d71 --- /dev/null +++ b/ti/dsplib/docs/relnotes_archive/dsplib_3_1_1_1_release_notes.html @@ -0,0 +1,120 @@ + + +DSPLIB 3.1.1.1 Release Notes + + + + + + + + +
+ +

DSPLIB 3.1.1.1 Release Notes

+

October 9, 2012

+

+

+Introduction, Documentation, What's New Upgrade and Compatibility Information, Host Intrinsic Library Support, Device Support, Validation Information, Known Issues, Version Information, Technical Support

+


+

Introduction

+

+The TI C6000 DSPLIB is an optimized DSP Function Library for C programmers. It includes many C-callable, optimized, general-purpose signal-processing routines. These routines are typically used in computationally-intensive real-time applications where optimal execution speed is critical.

+back to top

+


+

+

Documentation

+

+The following documentation is available:

+

+Release notes from previous releases are also available in the relnotes_archive directory.

+back to top

+


+

+

What's New

+

+The following new features were added:

    +
  1. +Host Intrinsic Library support.
  2. +
+

+back to top

+


+

+

Upgrade and Compatibility Information

+

+This ti.dsplib release is backward compatible with the last released version.

+Please note that the package compatibility keys are independent of XDC product release numbers.

+Package compatibility keys are intended to:

+

    +
  1. Enable tooling to identify incompatibilities between components, and
  2. Convey a level of compatibility between different releases to set end user expectations.
+

+Package compatibility keys are composed of 4 comma-delimited numbers - M, S, R, P - where:

+

    +
  • M = Major - A difference in M indicates a break in compatibility. The package consumer is required to re-write its source code in order to use the package.
  • S = Source - A difference in S indicates source compatibility. The package consumerÂ’s source code doesn't require change, but does require a recompile.
  • R = Radix - A difference in R indicates an introduction of new features, but compatibility with previous interfaces is not broken. If libraries are provided by the package, an application must re-link with the new libraries, but is not required to recompile its source.
  • P = Patch - A difference in P indicates that only bugs have been fixed in the latest package and no new features have been introduced. If libraries are provided by the package, an application must re-link with the new libraries, but is not required to recompile its source.
+

+back to top

+


+

+

Device Support

+

+This release supports the following device families:

+

    +
  • +C64x+ DSP
  • +
  • +C674x DSP
  • +
  • +C66x DSP
  • +
+

+back to top

+


+

+

Host Intrinsic Library Support

+

+This release supports Host Intrinsic Library. Please refer to Texas Instruments Host Intrinsic Library Wiki Page for more information.

+back to top

+


+

+

Validation Information

+

+This release was built and validated using the following tools:

+

    +
  • +XDC Tools version 3.20.05.76
  • +
  • +C6x Code Generation Tools version 7.2.4
  • +
  • +CCS 4.2
  • +
+

+back to top

+


+

+

Known Issues

+

+

    +
  • +Split library bundle documentation between HTML and Doxygen (IR #082498)
  • +
  • +DSPLIB package expanded in the graphical editor the information displayed is not correct (IR #081767)
  • +
+

+back to top

+


+

+

Version Information

+

+This product's version follows a version format, M.m.p.b, where M is a single digit Major number, m is single digit minor number, p is a single digit patch number and b is an unrestricted set of digits used as an incrementing build counter.

+Please note that version numbers and compatibility keys are NOT the same. For an explanation of compatibility keys, please refer to the 'Upgrade and Compatibility Information' section.

+back to top

+


+

Technical Support

+

+Questions regarding the DSPLIB library should be directed to the Texas Instruments BIOS E2E Forum. Please include the text DSPLIB in the title and add the DSPLIB tag to your post.

+back to top


+Copyright 2012, Texas Instruments Incorporated + + diff --git a/ti/dsplib/docs/relnotes_archive/dsplib_3_2_0_0_release_notes.html b/ti/dsplib/docs/relnotes_archive/dsplib_3_2_0_0_release_notes.html new file mode 100644 index 0000000..d335637 --- /dev/null +++ b/ti/dsplib/docs/relnotes_archive/dsplib_3_2_0_0_release_notes.html @@ -0,0 +1,122 @@ + + +DSPLIB 3.2.0.0 Release Notes + + + + + + + + +
+ +

DSPLIB 3.2.0.0 Release Notes

+

October 21, 2013

+

+

+Introduction, Documentation, What's New Upgrade and Compatibility Information, Host Intrinsic Library Support, Device Support, Validation Information, Known Issues, Version Information, Technical Support

+


+

Introduction

+

+The TI C6000 DSPLIB is an optimized DSP Function Library for C programmers. It includes many C-callable, optimized, general-purpose signal-processing routines. These routines are typically used in computationally-intensive real-time applications where optimal execution speed is critical.

+back to top

+


+

+

Documentation

+

+The following documentation is available:

+

+Release notes from previous releases are also available in the relnotes_archive directory.

+back to top

+


+

+

What's New

+

+The following new features were added:

    +
  1. +Random Number Generator.
  2. +
  3. +Cholesky
  4. +
+

+back to top

+


+

+

Upgrade and Compatibility Information

+

+This ti.dsplib release is not backward compatible with the last released version.

+Please note that the package compatibility keys are independent of XDC product release numbers.

+Package compatibility keys are intended to:

+

    +
  1. Enable tooling to identify incompatibilities between components, and
  2. Convey a level of compatibility between different releases to set end user expectations.
+

+Package compatibility keys are composed of 4 comma-delimited numbers - M, S, R, P - where:

+

    +
  • M = Major - A difference in M indicates a break in compatibility. The package consumer is required to re-write its source code in order to use the package.
  • S = Source - A difference in S indicates source compatibility. The package consumerÂ’s source code doesn't require change, but does require a recompile.
  • R = Radix - A difference in R indicates an introduction of new features, but compatibility with previous interfaces is not broken. If libraries are provided by the package, an application must re-link with the new libraries, but is not required to recompile its source.
  • P = Patch - A difference in P indicates that only bugs have been fixed in the latest package and no new features have been introduced. If libraries are provided by the package, an application must re-link with the new libraries, but is not required to recompile its source.
+

+back to top

+


+

+

Device Support

+

+This release supports the following device families:

+

    +
  • +C64x+ DSP
  • +
  • +C674x DSP
  • +
  • +C66x DSP
  • +
+

+back to top

+


+

+

Host Intrinsic Library Support

+

+This release supports Host Intrinsic Library. Please refer to Texas Instruments Host Intrinsic Library Wiki Page for more information.

+back to top

+


+

+

Validation Information

+

+This release was built and validated using the following tools:

+

    +
  • +XDC Tools version 3.25.00.48
  • +
  • +C6x Code Generation Tools version 7.4.4 *
  • +
  • +CCS 4.2
  • +
+

+back to top

+


+

+

Known Issues

+

+

    +
  • +Split library bundle documentation between HTML and Doxygen (IR #082498)
  • +
  • +DSPLIB package expanded in the graphical editor the information displayed is not correct (IR #081767)
  • +
+

+back to top

+


+

+

Version Information

+

+This product's version follows a version format, M.m.p.b, where M is a single digit Major number, m is single digit minor number, p is a single digit patch number and b is an unrestricted set of digits used as an incrementing build counter.

+Please note that version numbers and compatibility keys are NOT the same. For an explanation of compatibility keys, please refer to the 'Upgrade and Compatibility Information' section.

+back to top

+


+

Technical Support

+

+Questions regarding the DSPLIB library should be directed to the Texas Instruments BIOS E2E Forum. Please include the text DSPLIB in the title and add the DSPLIB tag to your post.

+back to top


+Copyright 2013, Texas Instruments Incorporated + + diff --git a/ti/dsplib/docs/relnotes_archive/dsplib_3_2_0_1_release_notes.html b/ti/dsplib/docs/relnotes_archive/dsplib_3_2_0_1_release_notes.html new file mode 100644 index 0000000..4daeb73 --- /dev/null +++ b/ti/dsplib/docs/relnotes_archive/dsplib_3_2_0_1_release_notes.html @@ -0,0 +1,120 @@ + + +DSPLIB 3.2.0.1 Release Notes + + + + + + + + +
+ +

DSPLIB 3.2.0.1 Release Notes

+

November 1, 2013

+

+

+Introduction, Documentation, What's New Upgrade and Compatibility Information, Host Intrinsic Library Support, Device Support, Validation Information, Known Issues, Version Information, Technical Support

+


+

Introduction

+

+The TI C6000 DSPLIB is an optimized DSP Function Library for C programmers. It includes many C-callable, optimized, general-purpose signal-processing routines. These routines are typically used in computationally-intensive real-time applications where optimal execution speed is critical.

+back to top

+


+

+

Documentation

+

+The following documentation is available:

+

+Release notes from previous releases are also available in the relnotes_archive directory.

+back to top

+


+

+

What's New

+

+The following new features were added:

    +
  1. +Random Number Generator.
  2. +
  3. +SP/DP Cholesky Matrix Decomposition.
  4. +
+

+back to top

+


+

+

Upgrade and Compatibility Information

+

+This ti.dsplib release is not backward compatible with the last released version.

+Please note that the package compatibility keys are independent of XDC product release numbers.

+Package compatibility keys are intended to:

+

    +
  1. Enable tooling to identify incompatibilities between components, and
  2. Convey a level of compatibility between different releases to set end user expectations.
+

+Package compatibility keys are composed of 4 comma-delimited numbers - M, S, R, P - where:

+

    +
  • M = Major - A difference in M indicates a break in compatibility. The package consumer is required to re-write its source code in order to use the package.
  • S = Source - A difference in S indicates source compatibility. The package consumerÂ’s source code doesn't require change, but does require a recompile.
  • R = Radix - A difference in R indicates an introduction of new features, but compatibility with previous interfaces is not broken. If libraries are provided by the package, an application must re-link with the new libraries, but is not required to recompile its source.
  • P = Patch - A difference in P indicates that only bugs have been fixed in the latest package and no new features have been introduced. If libraries are provided by the package, an application must re-link with the new libraries, but is not required to recompile its source.
+

+back to top

+


+

+

Device Support

+

+This release supports the following device families:

+

    +
  • +C64x+ DSP
  • +
  • +C674x DSP
  • +
  • +C66x DSP
  • +
+

+back to top

+


+

+

Host Intrinsic Library Support

+

+This release supports Host Intrinsic Library. Please refer to Texas Instruments Host Intrinsic Library Wiki Page for more information.

+back to top

+


+

+

Validation Information

+

+This release was built and validated using the following tools:

+

    +
  • +XDC Tools version 3.25.00.48
  • +
  • +C6x Code Generation Tools version 7.4.2
  • +
  • +CCS 5.4
  • +
+

+back to top

+


+

+

Known Issues

+

+

    +
  • +DSPLIB package expanded in the graphical editor the information displayed is not correct (IR #081767)
  • +
+

+back to top

+


+

+

Version Information

+

+This product's version follows a version format, M.m.p.b, where M is a single digit Major number, m is single digit minor number, p is a single digit patch number and b is an unrestricted set of digits used as an incrementing build counter.

+Please note that version numbers and compatibility keys are NOT the same. For an explanation of compatibility keys, please refer to the 'Upgrade and Compatibility Information' section.

+back to top

+


+

Technical Support

+

+Questions regarding the DSPLIB library should be directed to the Texas Instruments BIOS E2E Forum. Please include the text DSPLIB in the title and add the DSPLIB tag to your post.

+back to top


+Copyright 2013, Texas Instruments Incorporated + + diff --git a/ti/dsplib/docs/relnotes_archive/tilogo.gif b/ti/dsplib/docs/relnotes_archive/tilogo.gif new file mode 100644 index 0000000000000000000000000000000000000000..f2fab2da7bf35dbc41b8edb749d037d25d157df0 GIT binary patch literal 1137 zcmV-%1djVhNk%w1Vcq~X0HOc@00030|NpzYyKirAKR-VP1_tQp=olCnA^8LV00000 zEC2ui0NwyL000C32)f+}*y*TU5yZ>M)j$~<`XsWJk>%MR-&vb3yc&_h!@BhG{ za7Zi~kI1BQ$!t2G(5Q5JD+~hIEP=`;TC>`&ICupIwt&IlFmB_@;4J|waNB2Jvtckd z2nc|8f-HGvYia-nS$huz0*{c90s}QxYKVh1aB+%fh7ST}q5*6)b65qLnxhAFn`fyF zd!?bU2ac3AbgDFk0d)YUxp27=1+`lRfXmAVx6J_0feO#147Yp))(*QD)!Sps(HNGO z1GT$(1F7i163Ef$V0`FX2ce7r>I_z$SOyX36u5__SeZJG%m5ly(BGnU#1yDQ2kw-C z1F!z2`B#en;2wss1~_zQ0c1gKwVr{=7Xe3Ol*x95K&%GcA}R=_ zPthL&SI+GzvvjE|kp&a|`k6>Tsw^a>p3(R3k^lo+Y8gnSEPzrqS=9L1i8K^d3K>P! z3;=diRtGLm-3+F{BEe!CJKe;`U>dhyedi4guyJdFf#>uU5cn9a<5P7)Wt9m4j5RoD zG(YYe7Au=MY7VeN_4upVpL{N?HreV|+`A3(VnJg?Cz#C_y8#dzTSB)!VTdv<4iqu9 zGH6=)8SZ=m=id_jg|4nmpX*(y8PsBcwL1rSX8sgJFC2pIUyr6QIQEZf_)f82u{;cH zPC~l>3C*<98st^i7#~oPLfvM-(3OR1R|vM4AMu4Y$v^4=HlB6q?d8B*^EosRG9tDI z%5I6#6<=1TY-Qa=>f|RPZk;*j-vON%pojtqnzlfD83{m(fx|WU2p!Tvx0pgh)d5E+ z>u|`}eCz?%0Ei33W!5EWR5`(WH~F*xj*G-nfKf-%)c{i3J#d_3@{FleTCo6mk|JO& z#vo2YVz?!W3ub8{kMsPrVPWUw1Ob-Rbn-_nl#J%f9~6K&pLp;^6&NIf-6Gj+9^z!9 zi*sR-Mgs@^SX~}+a1*-eXewzE4b+J-64WH*gw~Mx3pgzSs+Ugx zltlQLggQ#}(o|-B2558rxfsl^j})tEjqb3zWMt2U` zNWo7QK|<#Rf~CR~r)SjKVp3EIhR-Cm;8q(z8v!=gOKU-ur>Is*iAIas;Hd^aXiOE@ zl45GSakSB58s(B9+BWCO_F^Dbp%aVp)I4loHpk}*1pWw#=U#It;Ky&) zw8LYL7Yp_ulH(e^MS@_lx1LeCovifIL9^U)%%Y4%&U}wC%IK$5k@dmZ68ywA1WZ(d+%-(kN^NX D-#`uN literal 0 HcmV?d00001 diff --git a/ti/dsplib/docs/relnotes_archive/titagline.gif b/ti/dsplib/docs/relnotes_archive/titagline.gif new file mode 100644 index 0000000000000000000000000000000000000000..743a0249e3fbf0c14128aad036beac9611724b72 GIT binary patch literal 653 zcmV;80&@LFNk%w1VLAaC0J8u9{{R60|NsAXcK^4x|Ba3R*4F>+?f)Sm|Mm6%qoe=F z$NxV+|6E-EM)j$~<` zXsWJk>%MR-&vb3yc&_h!@BhG{a7Zi~kI1BQ$!t2Gw?jiPAW)&$tkyRG3=)Lyb{q4?ux(04jo%^#;w z*?fH?FK40yz>tYW`UvcVcnaqIoI4?Fq;N+~u~C{vt6Qy6Wh(SipkZFWX}As^J9y^W zt`Y_`NHE8sm_C0PSE5plu4l*mN)hBoKq_d^d>v}M`Gz3^3EmDM3umBIUdyW+Pw?0_ zaafZmRRSPp%@m;om><<_Iaqe0(VypT@`T{(INO=`z6rF<+u&TgB%o~tZ9;>Bx4Sn} z%p0 +#include +#include +#include + +/* ======================================================================= */ +/* Interface header files */ +/* ======================================================================= */ +#include + +/* ======================================================================= */ +/* define kernel size constant */ +/* ======================================================================= */ +#if defined(__TI_EABI__) +#define kernel_size _kernel_size +#endif + +/* ======================================================================= */ +/* extern parameters */ +/* ======================================================================= */ +extern char kernel_size; + +/* ======================================================================= */ +/* define size constants */ +/* ======================================================================= */ + +#define MAX_MATRIX_NROWS 194 /* 194 is max */ +#define MAX_MATRIX_NCOLS 194 /* 194 is max */ +#define MAX_MATRIX_SIZE (MAX_MATRIX_NROWS*MAX_MATRIX_NCOLS) + +/* ======================================================================= */ +/* double word alignment of arrays */ +/* ======================================================================= */ +#pragma DATA_SECTION(A,".matrix") +#pragma DATA_ALIGN(A,8) +double A[MAX_MATRIX_SIZE]; + +#pragma DATA_SECTION(Q,".matrix") +#pragma DATA_ALIGN(Q,8) +double Q[MAX_MATRIX_SIZE]; + +#pragma DATA_SECTION(R,".matrix") +#pragma DATA_ALIGN(R,8) +double R[MAX_MATRIX_SIZE]; + +#pragma DATA_SECTION(u,".matrix") +#pragma DATA_ALIGN(u,8) +double u[MAX_MATRIX_NROWS]; + +/* ======================================================================= */ +/* profile arrays */ +/* ======================================================================= */ +unsigned short order[MAX_MATRIX_NROWS]; +double QRD_cycles[MAX_MATRIX_NROWS]; +double V[4*MAX_MATRIX_NROWS]; +double z[MAX_MATRIX_NROWS]; +double poly_coef_QRD[5]; + +/* ======================================================================= */ +/* profile arrays */ +/* ======================================================================= */ +int gen_polynomial_coefficients(const unsigned short Nrows,const unsigned short Ncols, + unsigned short *order,double *cycles,double *V,double *z,double *poly_coef); + +/* ======================================================================= */ +/* Main -- Top level driver for testing the algorithm */ +/* ======================================================================= */ + +void main(void) { + + unsigned short pass,Nrows,Ncols; + double sum,tolerance,error,y_QRD; + int row,col,k,status; + long long t_overhead, t_start, t_stop; + long long QRD_t; + unsigned short n; + FILE *fid; + unsigned short profile_idx,degree_QRD; + + profile_idx=0; + fid=fopen("performance.dat","w"); + + /* --------------------------------------------------------------------- */ + /* intialize hardware timers */ + /* --------------------------------------------------------------------- */ + TSCL= 0,TSCH=0; + + /* --------------------------------------------------------------------- */ + /* Compute the overhead of calling clock twice to get timing info */ + /* --------------------------------------------------------------------- */ + t_start = _itoll(TSCH, TSCL); + t_stop = _itoll(TSCH, TSCL); + t_overhead = t_stop - t_start; + + /* --------------------------------------------------------------------- */ + /* process test cases */ + /* --------------------------------------------------------------------- */ + pass=1; + for (Nrows=3;Nrows<=194;Nrows++) { + Ncols=Nrows; + srand(1); + for (row=0;rowtolerance) { + pass=0; + break; + } + } + } + + if (pass) { + printf("test passes for %dx%d\n",Nrows,Ncols); + order[profile_idx] = Nrows; + QRD_cycles[profile_idx] = (double)QRD_t; + profile_idx++; + fprintf(fid,"%d %e\n",Nrows,(double)QRD_t); + } else { + printf("decomposition test failed for test %d for %dx%d\n",Nrows,Ncols); + break; + } + } /* for (Nrows=3;Nrows<=194;Nrows++) */ + fclose(fid); + + if (pass) { + /* generate approximating polynomial coefficients for QRD */ + degree_QRD=3; + gen_polynomial_coefficients(profile_idx,degree_QRD+1,order,QRD_cycles,V,z,poly_coef_QRD); + printf("\n"); + printf("QRD cycles = "); + for (n=0;n<=degree_QRD;n++) { + if (n==0) printf("%7.1f*order^%d",poly_coef_QRD[n],degree_QRD-n); + else if (n==(degree_QRD-1)) printf("%+8.1f*order",poly_coef_QRD[n]); + else if (n==degree_QRD) printf("%+8.1f",poly_coef_QRD[n]); + else printf("%+7.1f*order^%d",poly_coef_QRD[n],degree_QRD-n); + } + printf("\n"); + + /* generate approximating polynomial outputs */ + fid=fopen("polyout.dat","w"); + for (Nrows=3;Nrows<=194;Nrows++) { + + y_QRD=poly_coef_QRD[1]+poly_coef_QRD[0]*Nrows; + for (n=2;n<=degree_QRD;n++) y_QRD=poly_coef_QRD[n]+y_QRD*Nrows; + + fprintf(fid,"%2d %e\n",Nrows,y_QRD); + } + fclose(fid); + } +} + +int gen_polynomial_coefficients(const unsigned short Nrows,const unsigned short Ncols, + unsigned short *order,double *cycles,double *V,double *y,double *poly_coef) +{ + + int row,col; + double x,prod; + + /* generate Vandermond matrix */ + for (row=0;row=0;col--) { + V[col+row*Ncols]=prod; + prod*=x; + } + } + + /* QR decomposition */ + DSPF_dp_qrd(Nrows,Ncols,V,Q,R,u); + + /* calculate polynomial coefficients */ + DSPF_dp_qrd_solver(Nrows,Ncols,Q,R,cycles,y,poly_coef); + + return 0; +} +/* ======================================================================= */ +/* End of file: DSPF_dp_qrd_example.c */ +/* ------------------------------------------------------------------------*/ +/* Copyright (c) 2013 Texas Instruments, Incorporated. */ +/* All Rights Reserved. */ +/* ======================================================================= */ + diff --git a/ti/dsplib/examples/QRD_dp_least_squares_ex/lnk.cmd b/ti/dsplib/examples/QRD_dp_least_squares_ex/lnk.cmd new file mode 100644 index 0000000..7b259f0 --- /dev/null +++ b/ti/dsplib/examples/QRD_dp_least_squares_ex/lnk.cmd @@ -0,0 +1,84 @@ +/* ======================================================================= */ +/* lnk.cmd -- Linker command file */ +/* */ +/* Rev 0.0.1 */ +/* */ +/* Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ */ +/* */ +/* */ +/* Redistribution and use in source and binary forms, with or without */ +/* modification, are permitted provided that the following conditions */ +/* are met: */ +/* */ +/* Redistributions of source code must retain the above copyright */ +/* notice, this list of conditions and the following disclaimer. */ +/* */ +/* Redistributions in binary form must reproduce the above copyright */ +/* notice, this list of conditions and the following disclaimer in the */ +/* documentation and/or other materials provided with the */ +/* distribution. */ +/* */ +/* Neither the name of Texas Instruments Incorporated nor the names of */ +/* its contributors may be used to endorse or promote products derived */ +/* from this software without specific prior written permission. */ +/* */ +/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */ +/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */ +/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR */ +/* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */ +/* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ +/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */ +/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, */ +/* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY */ +/* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */ +/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE */ +/* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* */ +/* ======================================================================= */ + +-heap 0x8000 +-stack 0xC000 + +-l../../../../packages/ti/dsplib/lib/dsplib.lib + +MEMORY +{ + L2SRAM (RWX) : org = 0x800000, len = 0x100000 + MSMCSRAM (RWX) : org = 0xc000000, len = 0x200000 + EXTMEM (RWX) : org = 0x80000000, len = 0x10000000 +} + +SECTIONS +{ + .kernel: { + *.obj (.text:optimized) { SIZE(_kernel_size) } + } + + .text: load >> L2SRAM + .text:touch: load >> L2SRAM + + GROUP (NEAR_DP) + { + .neardata + .rodata + .bss + } load > L2SRAM + + .far: load >> L2SRAM + .fardata: load >> L2SRAM + .data: load >> L2SRAM + .switch: load >> L2SRAM + .stack: load > L2SRAM + .args: load > L2SRAM align = 0x4, fill = 0 {_argsize = 0x200; } + .sysmem: load > L2SRAM + .cinit: load > L2SRAM + .const: load > L2SRAM START(const_start) SIZE(const_size) + .pinit: load > L2SRAM + .cio: load >> L2SRAM + xdc.meta: load >> L2SRAM, type = COPY + + .matrix: load > L2SRAM + /* .matrix: load > MSMCSRAM */ + /* .matrix: load > EXTMEM */ + +} diff --git a/ti/dsplib/examples/SVD_dp_rank_ex/DSPF_dp_svd_example.c b/ti/dsplib/examples/SVD_dp_rank_ex/DSPF_dp_svd_example.c new file mode 100644 index 0000000..11fc9ef --- /dev/null +++ b/ti/dsplib/examples/SVD_dp_rank_ex/DSPF_dp_svd_example.c @@ -0,0 +1,224 @@ +/* ======================================================================= */ +/* DSPF_dp_svd_example.c -- Singular Value Decomposition example */ +/* */ +/* */ +/* Rev 1.0.0 */ +/* */ +/* Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/ */ +/* */ +/* */ +/* Redistribution and use in source and binary forms, with or without */ +/* modification, are permitted provided that the following conditions */ +/* are met: */ +/* */ +/* Redistributions of source code must retain the above copyright */ +/* notice, this list of conditions and the following disclaimer. */ +/* */ +/* Redistributions in binary form must rep roduce the above copyright */ +/* notice, this list of conditions and the following disclaimer in the */ +/* documentation and/or other materials provided with the */ +/* distribution. */ +/* */ +/* Neither the name of Texas Instruments Incorporated nor the names of */ +/* its contributors may be used to endorse or promote products derived */ +/* from this software without specific prior written permission. */ +/* */ +/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */ +/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCSVDING, BUT NOT */ +/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR */ +/* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */ +/* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ +/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCSVDING, BUT NOT */ +/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, */ +/* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY */ +/* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */ +/* (INCSVDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE */ +/* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* */ +/* ======================================================================= */ +#include +#include +#include +#include + +/* ======================================================================= */ +/* Interface header files */ +/* ======================================================================= */ +#include + +/* ======================================================================= */ +/* define kernel size constant */ +/* ======================================================================= */ +#if defined(__TI_EABI__) +#define kernel_size _kernel_size +#endif + +/* ======================================================================= */ +/* extern parameters */ +/* ======================================================================= */ +extern char kernel_size; + +/* ======================================================================= */ +/* define size constants */ +/* ======================================================================= */ + +#define MAX_NROWS 150 /* max is 150 */ +#define MAX_NCOLS 150 /* max is 150 */ +#define MAX_SIZE (MAX_NROWS*MAX_NCOLS) +#define MAX_U_SIZE (MAX_NROWS*MAX_NROWS) +#define MAX_V_SIZE (MAX_NCOLS*MAX_NCOLS) +#define MAX_V_VECTOR_SIZE MAX_NROWS + +/* ======================================================================= */ +/* double word alignment of arrays */ +/* ======================================================================= */ +#pragma DATA_SECTION(A,".matrix") +#pragma DATA_ALIGN(A,8); +double A[MAX_SIZE]; + +#pragma DATA_SECTION(U,".matrix") +#pragma DATA_ALIGN(U,8); +double U[MAX_U_SIZE]; + +#pragma DATA_SECTION(V,".matrix") +#pragma DATA_ALIGN(V,8); +double V[MAX_V_SIZE]; + +#pragma DATA_SECTION(U1,".matrix") +#pragma DATA_ALIGN(U1,8); +double U1[MAX_U_SIZE]; + +#pragma DATA_SECTION(diag,".matrix") +#pragma DATA_ALIGN(diag,8); +double diag[MAX_NROWS]; + +#pragma DATA_SECTION(superdiag,".matrix") +#pragma DATA_ALIGN(superdiag,8); +double superdiag[MAX_NROWS]; + +/* ======================================================================= */ +/* Main -- Top level driver for testing the algorithm */ +/* ======================================================================= */ +void main(void) { + + int test,Nrows,Ncols; + int row,col,status; + int rank,loop_limit; + double tolerance=0.000001; + + /* --------------------------------------------------------------------- */ + /* process test cases */ + /* --------------------------------------------------------------------- */ + for (test=1;test<=10;test++) { + switch(test) { + case 1: { Nrows=4;Ncols=2; // 4x2 + A[0]=1;A[1]=2;A[2]=3;A[3]=4;A[4]=5;A[5]=6;A[6]=7;A[7]=8; + break; + } + case 2: { Nrows=3;Ncols=3; // 3x3 + A[0]=1;A[1]=1;A[2]=1; + A[3]=1;A[4]=2;A[5]=3; + A[6]=1;A[7]=3;A[8]=6; + break; + } + case 3: { Nrows=3;Ncols=3; // 3x3 + A[0]=1;A[1]=2;A[2]=3; + A[3]=4;A[4]=5;A[5]=6; + A[6]=7;A[7]=8;A[8]=0; + break; + } + case 4: { Nrows=3;Ncols=3; // 3x3 singular + A[0]=0;A[1]=1;A[2]=2; + A[3]=3;A[4]=4;A[5]=5; + A[6]=6;A[7]=7;A[8]=8; + break; + } + case 5: { Nrows=5;Ncols=4; // 5x4 + A[ 0]=1;A[ 1]=0;A[ 2]=0;A[ 3]=0; + A[ 4]=0;A[ 5]=0;A[ 6]=0;A[ 7]=4; + A[ 8]=0;A[ 9]=3;A[10]=0;A[11]=0; + A[12]=0;A[13]=0;A[14]=0;A[15]=0; + A[16]=2;A[17]=0;A[18]=0;A[19]=0; + break; + } + case 6: { Nrows=8;Ncols=5; // 8x5 + A[ 0]=22;A[ 1]=10;A[ 2]= 2;A[ 3]= 3;A[ 4]= 7; + A[ 5]=14;A[ 6]= 7;A[ 7]=10;A[ 8]= 0;A[ 9]= 8; + A[10]=-1;A[11]=13;A[12]=-1;A[13]=-11;A[14]= 3; + A[15]=-3;A[16]=-2;A[17]=13;A[18]= -2;A[19]= 4; + A[20]= 9;A[21]= 8;A[22]= 1;A[23]= -2;A[24]= 4; + A[25]= 9;A[26]= 1;A[27]=-7;A[28]= 5;A[29]=-1; + A[30]= 2;A[31]=-6;A[32]= 6;A[33]= 5;A[34]= 1; + A[35]= 4;A[36]= 5;A[37]= 0;A[38]= -2;A[39]= 2; + break; + } + case 7: { Nrows=5;Ncols=5; // 5x5 + A[ 0]=1;A[ 1]=0;A[ 2]=0;A[ 3]=0;A[ 4]=0; + A[ 5]=0;A[ 6]=1;A[ 7]=0;A[ 8]=0;A[ 9]=0; + A[10]=0;A[11]=0;A[12]=1;A[13]=0;A[14]=0; + A[15]=0;A[16]=0;A[17]=0;A[18]=1;A[19]=0; + A[20]=0;A[21]=0;A[22]=0;A[23]=0;A[24]=1; + break; + } + case 8: { Nrows=4;Ncols=5; // 4x5 + A[ 0]=1;A[ 1]=0;A[ 2]=0;A[ 3]=0;A[ 4]=2; + A[ 5]=0;A[ 6]=0;A[ 7]=3;A[ 8]=0;A[ 9]=0; + A[10]=0;A[11]=0;A[12]=0;A[13]=0;A[14]=0; + A[15]=0;A[16]=4;A[17]=0;A[18]=0;A[19]=0; + break; + } + case 9: { Nrows=2;Ncols=4; // 2x4 + A[0]=1;A[1]=2;A[2]=3;A[3]=4; + A[4]=5;A[5]=6;A[6]=7;A[7]=8; + break; + } + case 10: { + Nrows=16; + Ncols=Nrows; + srand(1); + for (row=0;row=Ncols) { + loop_limit=Ncols; + } else { + loop_limit=Nrows; + } + rank=0; + for (row=0;rowtolerance) { + rank++; + } + } + + printf("test=%d: %dx%d matrix has rank=%d\n",test,Nrows,Ncols,rank); + + } /* for (test=1;test<=10;test++) */ + +} + +/* ======================================================================= */ +/* End of file: DSPF_dp_svd_example.c */ +/* ------------------------------------------------------------------------*/ +/* Copyright (c) 2013 Texas Instruments, Incorporated. */ +/* All Rights Reserved. */ +/* ======================================================================= */ + diff --git a/ti/dsplib/examples/SVD_dp_rank_ex/lnk.cmd b/ti/dsplib/examples/SVD_dp_rank_ex/lnk.cmd new file mode 100644 index 0000000..a649183 --- /dev/null +++ b/ti/dsplib/examples/SVD_dp_rank_ex/lnk.cmd @@ -0,0 +1,83 @@ +/* ======================================================================= */ +/* lnk.cmd -- Linker command file */ +/* */ +/* Rev 0.0.1 */ +/* */ +/* Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ */ +/* */ +/* */ +/* Redistribution and use in source and binary forms, with or without */ +/* modification, are permitted provided that the following conditions */ +/* are met: */ +/* */ +/* Redistributions of source code must retain the above copyright */ +/* notice, this list of conditions and the following disclaimer. */ +/* */ +/* Redistributions in binary form must reproduce the above copyright */ +/* notice, this list of conditions and the following disclaimer in the */ +/* documentation and/or other materials provided with the */ +/* distribution. */ +/* */ +/* Neither the name of Texas Instruments Incorporated nor the names of */ +/* its contributors may be used to endorse or promote products derived */ +/* from this software without specific prior written permission. */ +/* */ +/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */ +/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */ +/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR */ +/* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */ +/* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ +/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */ +/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, */ +/* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY */ +/* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */ +/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE */ +/* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* */ +/* ======================================================================= */ + +-heap 0x8000 +-stack 0xC000 + +-l../../../../packages/ti/dsplib/lib/dsplib.lib + +MEMORY +{ + L2SRAM (RWX) : org = 0x800000, len = 0x100000 + MSMCSRAM (RWX) : org = 0xc000000, len = 0x200000 + EXTMEM (RWX) : org = 0x80000000, len = 0x10000000 +} + +SECTIONS +{ + .kernel: { + *.obj (.text:optimized) { SIZE(_kernel_size) } + } + + .text: load >> L2SRAM + .text:touch: load >> L2SRAM + + GROUP (NEAR_DP) + { + .neardata + .rodata + .bss + } load > L2SRAM + + .far: load >> L2SRAM + .fardata: load >> L2SRAM + .data: load >> L2SRAM + .switch: load >> L2SRAM + .stack: load > L2SRAM + .args: load > L2SRAM align = 0x4, fill = 0 {_argsize = 0x200; } + .sysmem: load > L2SRAM + .cinit: load > L2SRAM + .const: load > L2SRAM START(const_start) SIZE(const_size) + .pinit: load > L2SRAM + .cio: load >> L2SRAM + xdc.meta: load >> L2SRAM, type = COPY + + /* .matrix: load > L2SRAM */ + /* .matrix: load > EXTMEM */ + .matrix: load > MSMCSRAM +} diff --git a/ti/dsplib/examples/example.xs b/ti/dsplib/examples/example.xs new file mode 100644 index 0000000..07b5e45 --- /dev/null +++ b/ti/dsplib/examples/example.xs @@ -0,0 +1,75 @@ +/* MAIN ROUTINE FROM HERE */ +if(arguments.length < 1) +{ + print("USAGE:"); + print("xs -f example.js platform dst\n"); + java.lang.System.exit(1); +} +var target=arguments[0]; +var dst=arguments[1]; +var repositDir = new java.io.File(dst+"/examples"); + if (!(repositDir.exists() && repositDir.isDirectory())) { + repositDir.mkdirs(); + } + +/* Copy Common Files */ +/* Copy Module */ +var copy = xdc.loadCapsule('ti/mas/swtools/Copy.xs'); + +copy.File("./examples/package.xdc", dst+"/examples"); + +if(target.toString().match("64")) +{ + /* FFT Example for C64x+ & C66x targets */ + copy.File("./examples/fft_ex/fft_example.c", dst+"/examples/fft_ex"); + copy.File("./examples/fft_ex/gen_twiddle_fft16x16.h", dst+"/examples/fft_ex"); + copy.File("./examples/fft_ex/gen_twiddle_fft16x16.c", dst+"/examples/fft_ex"); + copy.File("./examples/fft_ex/gen_twiddle_fft16x32.h", dst+"/examples/fft_ex"); + copy.File("./examples/fft_ex/gen_twiddle_fft16x32.c", dst+"/examples/fft_ex"); + copy.File("./examples/fft_ex/gen_twiddle_fft32x32.h", dst+"/examples/fft_ex"); + copy.File("./examples/fft_ex/gen_twiddle_fft32x32.c", dst+"/examples/fft_ex"); + copy.File("./examples/fft_ex/refOutput.jpg", dst+"/examples/fft_ex"); + copy.File("./examples/fft_ex/Readme.txt", dst+"/examples/fft_ex"); + copy.File("./examples/fft_ex/c64P/lnk.cmd", dst+"/examples/fft_ex"); + var prjtarget= "64P"; +} +else if (target.toString().match("66")) +{ + /* FFT Example for C64x+ & C66x targets */ + copy.File("./examples/fft_ex/fft_example.c", dst+"/examples/fft_ex"); + copy.File("./examples/fft_ex/gen_twiddle_fft16x16.h", dst+"/examples/fft_ex"); + copy.File("./examples/fft_ex/gen_twiddle_fft16x16.c", dst+"/examples/fft_ex"); + copy.File("./examples/fft_ex/gen_twiddle_fft16x32.h", dst+"/examples/fft_ex"); + copy.File("./examples/fft_ex/gen_twiddle_fft16x32.c", dst+"/examples/fft_ex"); + copy.File("./examples/fft_ex/gen_twiddle_fft32x32.h", dst+"/examples/fft_ex"); + copy.File("./examples/fft_ex/gen_twiddle_fft32x32.c", dst+"/examples/fft_ex"); + copy.File("./examples/fft_ex/refOutput.jpg", dst+"/examples/fft_ex"); + copy.File("./examples/fft_ex/Readme.txt", dst+"/examples/fft_ex"); + copy.File("./examples/fft_ex/c66/lnk.cmd", dst+"/examples/fft_ex"); + + /* FFT SP Example for C66x targets */ + copy.File("./examples/fft_sp_ex/c66/lnk.cmd", dst+"/examples/fft_sp_ex"); + copy.File("./examples/fft_sp_ex/fft_example_sp.c", dst+"/examples/fft_sp_ex"); + copy.File("./examples/fft_sp_ex/refOutput.jpg", dst+"/examples/fft_sp_ex"); + copy.File("./examples/fft_sp_ex/Readme.txt", dst+"/examples/fft_sp_ex"); + + /* Matrix Examples for C66x targets */ + copy.Directory("./examples/EVD_dp_matrix_ex",dst+"/examples/EVD_dp_matrix_ex"); + copy.Directory("./examples/QRD_dp_least_squares_ex",dst+"/examples/QRD_dp_least_squares_ex"); + copy.Directory("./examples/SVD_dp_compress_ex",dst+"/examples/SVD_dp_compress_ex"); + copy.Directory("./examples/SVD_dp_rank_ex",dst+"/examples/SVD_dp_rank_ex"); + var prjtarget= "66"; +} +else if(target.toString().match("674")) +{ + /* FFT SP Example for C674x targets */ + copy.File("./examples/fft_sp_ex/c674/lnk.cmd", dst+"/examples/fft_sp_ex"); + copy.File("./examples/fft_sp_ex/fft_example_sp.c", dst+"/examples/fft_sp_ex"); + copy.File("./examples/fft_sp_ex/refOutput.jpg", dst+"/examples/fft_sp_ex"); + copy.File("./examples/fft_sp_ex/Readme.txt", dst+"/examples/fft_sp_ex"); + var prjtarget= "674"; +} + +var tplt = xdc.loadTemplate('ti/dsplib/examples/package.bld.xdt'); +tplt.genFile (dst+'/examples/package.bld', null, [target,prjtarget]); + diff --git a/ti/dsplib/examples/fft_ex/Readme.txt b/ti/dsplib/examples/fft_ex/Readme.txt new file mode 100644 index 0000000..5faf2b7 --- /dev/null +++ b/ti/dsplib/examples/fft_ex/Readme.txt @@ -0,0 +1,19 @@ +This example demonstrates the usage of the various FFT kernels provided with the C6x DSPLIB. The example shows: +- Twiddle factor generation for the various kernels +- Needed scaling to get correct output +- Demonstrates usage of FFT APIs + +Steps: +1) Load the Project using CCS V4. +2) Re-build the project. +3) Run the generated outfile. +4) Plot the output samples. +5) Compare it with reference output (refOutput.jpg). + +Note: Please refer to CCS V4 Guide for loading, building and running projects. +Link: http://processors.wiki.ti.com/index.php/CCSv4_Getting_Started_Guide + + + + + diff --git a/ti/dsplib/examples/fft_ex/c64P/lnk.cmd b/ti/dsplib/examples/fft_ex/c64P/lnk.cmd new file mode 100644 index 0000000..6e0f91a --- /dev/null +++ b/ti/dsplib/examples/fft_ex/c64P/lnk.cmd @@ -0,0 +1,68 @@ +/* ======================================================================= */ +/* lnk.cmd -- Linker command file */ +/* */ +/* Rev 0.0.1 */ +/* */ +/* Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ */ +/* */ +/* */ +/* Redistribution and use in source and binary forms, with or without */ +/* modification, are permitted provided that the following conditions */ +/* are met: */ +/* */ +/* Redistributions of source code must retain the above copyright */ +/* notice, this list of conditions and the following disclaimer. */ +/* */ +/* Redistributions in binary form must reproduce the above copyright */ +/* notice, this list of conditions and the following disclaimer in the */ +/* documentation and/or other materials provided with the */ +/* distribution. */ +/* */ +/* Neither the name of Texas Instruments Incorporated nor the names of */ +/* its contributors may be used to endorse or promote products derived */ +/* from this software without specific prior written permission. */ +/* */ +/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */ +/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */ +/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR */ +/* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */ +/* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ +/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */ +/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, */ +/* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY */ +/* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */ +/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE */ +/* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* */ +/* ======================================================================= */ + +-c +-heap 0x1000 +-stack 0x1000 +-l../../../../packages/ti/dsplib/lib/dsplib.lib +/* MODULE MEM */ +MEMORY { + CACHE_L2 : origin = 0x11808000, len = 0x8000 + CACHE_L1P : origin = 0x11e08000, len = 0x8000 + CACHE_L1D : origin = 0x11f10000, len = 0x8000 + DDR2 : origin = 0x80000000, len = 0x8000000 + L1DSRAM : origin = 0x11f04000, len = 0xc000 + IRAM : origin = 0x11800000, len = 0x8000 +} + +SECTIONS +{ + vectors :> IRAM + .cinit :> DDR2 + .text :> DDR2 + .stack :> DDR2 + .bss :> IRAM + .const :> IRAM + .data :> IRAM + .far :> DDR2 + .switch :> IRAM + .sysmem :> IRAM + .tables :> IRAM + .cio :> IRAM +} + diff --git a/ti/dsplib/examples/fft_ex/c66/lnk.cmd b/ti/dsplib/examples/fft_ex/c66/lnk.cmd new file mode 100644 index 0000000..176bf11 --- /dev/null +++ b/ti/dsplib/examples/fft_ex/c66/lnk.cmd @@ -0,0 +1,73 @@ +/* ======================================================================= */ +/* lnk.cmd -- Linker command file */ +/* */ +/* Rev 0.0.1 */ +/* */ +/* Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ */ +/* */ +/* */ +/* Redistribution and use in source and binary forms, with or without */ +/* modification, are permitted provided that the following conditions */ +/* are met: */ +/* */ +/* Redistributions of source code must retain the above copyright */ +/* notice, this list of conditions and the following disclaimer. */ +/* */ +/* Redistributions in binary form must reproduce the above copyright */ +/* notice, this list of conditions and the following disclaimer in the */ +/* documentation and/or other materials provided with the */ +/* distribution. */ +/* */ +/* Neither the name of Texas Instruments Incorporated nor the names of */ +/* its contributors may be used to endorse or promote products derived */ +/* from this software without specific prior written permission. */ +/* */ +/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */ +/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */ +/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR */ +/* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */ +/* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ +/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */ +/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, */ +/* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY */ +/* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */ +/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE */ +/* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* */ +/* ======================================================================= */ + +-heap 0x8000 +-stack 0xC000 +-l../../../../packages/ti/dsplib/lib/dsplib.lib + +MEMORY +{ + L2SRAM (RWX) : org = 0x800000, len = 0x100000 + MSMCSRAM (RWX) : org = 0xc000000, len = 0x200000 +} + +SECTIONS +{ + .text: load >> L2SRAM + .text:touch: load >> L2SRAM + + GROUP (NEAR_DP) + { + .neardata + .rodata + .bss + } load > L2SRAM + + .far: load >> L2SRAM + .fardata: load >> L2SRAM + .data: load >> L2SRAM + .switch: load >> L2SRAM + .stack: load > L2SRAM + .args: load > L2SRAM align = 0x4, fill = 0 {_argsize = 0x200; } + .sysmem: load > L2SRAM + .cinit: load > L2SRAM + .const: load > L2SRAM START(const_start) SIZE(const_size) + .pinit: load > L2SRAM + .cio: load >> L2SRAM + xdc.meta: load >> L2SRAM, type = COPY +} diff --git a/ti/dsplib/examples/fft_ex/fft_example.c b/ti/dsplib/examples/fft_ex/fft_example.c new file mode 100644 index 0000000..1b440ab --- /dev/null +++ b/ti/dsplib/examples/fft_ex/fft_example.c @@ -0,0 +1,213 @@ +/* ======================================================================= */ +/* fft_example.c -- FFT Example File */ +/* */ +/* Rev 0.0.1 */ +/* */ +/* Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ */ +/* */ +/* */ +/* Redistribution and use in source and binary forms, with or without */ +/* modification, are permitted provided that the following conditions */ +/* are met: */ +/* */ +/* Redistributions of source code must retain the above copyright */ +/* notice, this list of conditions and the following disclaimer. */ +/* */ +/* Redistributions in binary form must reproduce the above copyright */ +/* notice, this list of conditions and the following disclaimer in the */ +/* documentation and/or other materials provided with the */ +/* distribution. */ +/* */ +/* Neither the name of Texas Instruments Incorporated nor the names of */ +/* its contributors may be used to endorse or promote products derived */ +/* from this software without specific prior written permission. */ +/* */ +/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */ +/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */ +/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR */ +/* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */ +/* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ +/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */ +/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, */ +/* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY */ +/* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */ +/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE */ +/* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* */ +/* This example demonstrates the usage of the various FFT kernels */ +/* provided with the C6x DSPLIB. The example shows: */ +/* - Twiddle factor generation for the various kernels */ +/* - Scaling that needs to be applied to get similar output */ +/* when using different kernels */ +/* - Demonstrates the usage of FFT APIs */ +/* */ +/* ----------------------------------------------------------------------- */ +/* Copyright (c) 2011 Texas Instruments, Incorporated. */ +/* All Rights Reserved. */ +/* ======================================================================= */ + +#include +#include +#include + +#include "gen_twiddle_fft16x16.h" +#include "gen_twiddle_fft16x32.h" +#include "gen_twiddle_fft32x32.h" + +/* Global definitions */ +/* Number of samples for which FFT needs to be calculated */ +#define N 256 +/* Number of unique sine waves in input data */ +#define NUM_SIN_WAVES 4 + +/* + Scale need to be applied (1/2^SCALE) to input data for 16x32 and 32x32 + FFT for their output to match 16x16. This is dure to the inherent + scaling present in 16x16 kernel +*/ +#define SCALE 3 + + +/* Align the tables that we have to use */ +#pragma DATA_ALIGN(x_ref, 8); +int32_t x_ref [2*N]; + +#pragma DATA_ALIGN(x_16x16, 8); +int16_t x_16x16 [2*N]; +#pragma DATA_ALIGN(y_16x16, 8); +int16_t y_16x16 [2*N]; +#pragma DATA_ALIGN(w_16x16, 8); +int16_t w_16x16 [2*N]; + +#pragma DATA_ALIGN(x_16x32, 8); +int32_t x_16x32 [2*N]; +#pragma DATA_ALIGN(y_16x32, 8); +int32_t y_16x32 [2*N]; +#pragma DATA_ALIGN(w_16x32, 8); +int16_t w_16x32 [2*N]; + +#pragma DATA_ALIGN(x_32x32, 8); +int32_t x_32x32 [2*N]; +#pragma DATA_ALIGN(y_32x32, 8); +int32_t y_32x32 [2*N]; +#pragma DATA_ALIGN(w_32x32, 8); +int32_t w_32x32 [2*N]; + +/* + This function generates the input data and also updates the + input data arrays used by the various FFT kernels +*/ +float x_ref_float [2*N]; +void generateInput (int32_t numSinWaves) { + int32_t i, j; + float sinWaveIncFreq, sinWaveMag; + + /* + Based on numSinWave information, create the input data. The + input data is first created using floating point dataType. The + floating point data type is then converted to the appropriate + fixed point notation + */ + /* Clear the input floating point array */ + for (i = 0; i < N; i++) { + x_ref_float[2*i] = (float)0.0; + x_ref_float[2*i + 1] = (float)0.0; + } + + /* Calculate the incremental freq for each sin wave */ + sinWaveIncFreq = ((float)3.142)/(numSinWaves*(float)1.0); + + /* Calculate the magnitude for each sin wave */ + sinWaveMag = (float)1.0/(numSinWaves * (float)1.0*N); + + /* Create the input array as sum of the various sin wave data */ + for (j = 0; j < numSinWaves; j++) { + for (i = 0; i < N; i++) { + x_ref_float[2*i] += sinWaveMag * (float)cos(sinWaveIncFreq*j*i); + x_ref_float[2*i + 1] = (float) 0.0; + } + } + + /* Convert the floating point data to reference fixed point data */ + for (i = 0; i < N; i++) { + x_ref[2*i] = x_ref_float[2*i] * 2147483648; + x_ref[2*i + 1] = x_ref_float[2*i + 1] * 2147483648; + } + + /* Copy the reference input data to the various input arrays */ + for (i = 0; i < N; i++) { + x_16x16[2*i] = (x_ref[2*i] >> 16); + x_16x16[2*i + 1] = (x_ref[2*i + 1] >> 16); + + x_16x32[2*i] = x_ref[2*i] >> SCALE; + x_16x32[2*i + 1] = x_ref[2*i + 1] >> SCALE; + + x_32x32[2*i] = x_ref[2*i] >> SCALE; + x_32x32[2*i + 1] = x_ref[2*i + 1] >> SCALE; + } +} + +/* + The seperateRealImg function seperates the real and imaginary data + of the FFT output. This is needed so that the data can be plotted + using the CCS graph feature +*/ + +int16_t y_real_16x16 [N]; +int16_t y_imag_16x16 [N]; + +int32_t y_real_16x32 [N]; +int32_t y_imag_16x32 [N]; + +int32_t y_real_32x32 [N]; +int32_t y_imag_32x32 [N]; + +seperateRealImg () { + int32_t i, j; + + for (i = 0, j = 0; j < N; i+=2, j++) { + y_real_16x16[j] = y_16x16[i]; + y_imag_16x16[j] = y_16x16[i + 1]; + + y_real_16x32[j] = y_16x32[i]; + y_imag_16x32[j] = y_16x32[i + 1]; + + y_real_32x32[j] = y_32x32[i]; + y_imag_32x32[j] = y_32x32[i + 1]; + } +} + +/* + The main function that implements the example functionality. + This example demonstrates the usage of the various FFT kernels provided + with the C6x DSPLIB. The example shows: + - Twiddle factor generation for the various kernels + - Needed scaling to get correct output + - Demonstrates usage of FFT APIs +*/ + +void main () { + /* Generate the input data */ + generateInput (NUM_SIN_WAVES); + + /* Genarate the various twiddle factors */ + gen_twiddle_fft16x16(w_16x16, N); + gen_twiddle_fft16x32(w_16x32, N); + gen_twiddle_fft32x32(w_32x32, N, 2147483647.5); + + /* Call the various FFT routines */ + DSP_fft16x16(w_16x16, N, x_16x16, y_16x16); + DSP_fft16x32(w_16x32, N, x_16x32, y_16x32); + DSP_fft32x32(w_32x32, N, x_32x32, y_32x32); + + /* Call the test code to seperate the real and imaginary data */ + seperateRealImg (); +} + +/* ======================================================================== */ +/* End of file: fft_example.c */ +/* ------------------------------------------------------------------------ */ +/* Copyright (c) 2011 Texas Instruments, Incorporated. */ +/* All Rights Reserved. */ +/* ======================================================================== */ + diff --git a/ti/dsplib/examples/fft_ex/gen_twiddle_fft16x16.c b/ti/dsplib/examples/fft_ex/gen_twiddle_fft16x16.c new file mode 100644 index 0000000..5d69e52 --- /dev/null +++ b/ti/dsplib/examples/fft_ex/gen_twiddle_fft16x16.c @@ -0,0 +1,153 @@ +/* ======================================================================= */ +/* gen_twiddle_fft16x16.c -- File with twiddle factor generators. */ +/* ======================================================================= */ +/* This code requires a special sequence of twiddle factors stored */ +/* in 1Q15 fixed-point format. The following C code is used for */ +/* the natural C and intrinsic C implementations. */ +/* */ +/* In order to vectorize the FFT, it is desirable to access twiddle */ +/* factor array using double word wide loads and fetch the twiddle */ +/* factors needed. In order to do this a modified twiddle factor */ +/* array is created, in which the factors WN/4, WN/2, W3N/4 are */ +/* arranged to be contiguous. This eliminates the seperation between */ +/* twiddle factors within a butterfly. However this implies that as */ +/* the loop is traversed from one stage to another, that we maintain */ +/* a redundant version of the twiddle factor array. Hence the size */ +/* of the twiddle factor array increases as compared to the normal */ +/* Cooley Tukey FFT. The modified twiddle factor array is of size */ +/* "2 * N" where the conventional Cooley Tukey FFT is of size"3N/4" */ +/* where N is the number of complex points to be transformed. The */ +/* routine that generates the modified twiddle factor array was */ +/* presented earlier. With the above transformation of the FFT, */ +/* both the input data and the twiddle factor array can be accessed */ +/* using double-word wide loads to enable packed data processing. */ +/* */ +/* */ +/* */ +/* Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ */ +/* */ +/* */ +/* Redistribution and use in source and binary forms, with or without */ +/* modification, are permitted provided that the following conditions */ +/* are met: */ +/* */ +/* Redistributions of source code must retain the above copyright */ +/* notice, this list of conditions and the following disclaimer. */ +/* */ +/* Redistributions in binary form must reproduce the above copyright */ +/* notice, this list of conditions and the following disclaimer in the */ +/* documentation and/or other materials provided with the */ +/* distribution. */ +/* */ +/* Neither the name of Texas Instruments Incorporated nor the names of */ +/* its contributors may be used to endorse or promote products derived */ +/* from this software without specific prior written permission. */ +/* */ +/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */ +/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */ +/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR */ +/* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */ +/* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ +/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */ +/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, */ +/* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY */ +/* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */ +/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE */ +/* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* */ +/* ======================================================================= */ + +#include +#include "gen_twiddle_fft16x16.h" + +#ifndef PI +# ifdef M_PI +# define PI M_PI +# else +# define PI 3.14159265358979323846 +# endif +#endif + +/* ======================================================================== */ +/* D2S -- Truncate a 'double' to a 'short', with clamping. */ +/* ======================================================================== */ +static short d2s(double d) +{ + d = floor(0.5 + d); // Explicit rounding to integer // + if (d >= 32767.0) return 32767; + if (d <= -32768.0) return -32768; + return (short)d; +} + +/* ======================================================================== */ +/* GEN_TWIDDLE -- Generate twiddle factors for TI's custom FFTs. */ +/* */ +/* USAGE */ +/* This routine is called as follows: */ +/* */ +/* int gen_twiddle_fft16x16(short *w, int n) */ +/* */ +/* short *w Pointer to twiddle-factor array */ +/* int n Size of FFT */ +/* */ +/* The routine will generate the twiddle-factors directly into the */ +/* array you specify. The array needs to be approximately 2*N */ +/* elements long. (The actual size, which is slightly smaller, is */ +/* returned by the function.) */ +/* ======================================================================== */ +#ifdef _LITTLE_ENDIAN +int gen_twiddle_fft16x16(short *w, int n) +{ + int i, j, k; + double M = 32767.5; + + for (j = 1, k = 0; j < n >> 2; j = j << 2) { + for (i = 0; i < n >> 2; i += j << 1) { + w[k + 3] = d2s(M * cos(2.0 * PI * (i + j) / n)); + w[k + 2] = d2s(M * sin(2.0 * PI * (i + j) / n)); + w[k + 1] = d2s(M * cos(2.0 * PI * (i ) / n)); + w[k + 0] = d2s(M * sin(2.0 * PI * (i ) / n)); + + k += 4; + } + } + w[k + 3] = w[k - 1]; + w[k + 2] = w[k - 2]; + w[k + 1] = w[k - 3]; + w[k + 0] = w[k - 4]; + k += 4; + + return k; +} +#else +int gen_twiddle_fft16x16(short *w, int n) +{ + int i, j, k; + double M = 32767.5; + + for (j = 1, k = 0; j < n >> 2; j = j << 2) { + for (i = 0; i < n >> 2; i += j << 1) { + w[k + 3] = -d2s(M * sin(2.0 * PI * (i + j) / n)); + w[k + 2] = d2s(M * cos(2.0 * PI * (i + j) / n)); + w[k + 1] = -d2s(M * sin(2.0 * PI * (i ) / n)); + w[k + 0] = d2s(M * cos(2.0 * PI * (i ) / n)); + + k += 4; + } + } + w[k + 3] = w[k - 1]; + w[k + 2] = w[k - 2]; + w[k + 1] = w[k - 3]; + w[k + 0] = w[k - 4]; + k += 4; + + return k; +} +#endif +/* ======================================================================= */ +/* End of file: gen_twiddle_fft16x16.c */ +/* ----------------------------------------------------------------------- */ +/* Copyright (c) 2011 Texas Instruments, Incorporated. */ +/* All Rights Reserved. */ +/* ======================================================================= */ + diff --git a/ti/dsplib/examples/fft_ex/gen_twiddle_fft16x16.h b/ti/dsplib/examples/fft_ex/gen_twiddle_fft16x16.h new file mode 100644 index 0000000..b466168 --- /dev/null +++ b/ti/dsplib/examples/fft_ex/gen_twiddle_fft16x16.h @@ -0,0 +1,44 @@ +/* ======================================================================= */ +/* gen_twiddle_fft16x16.h */ +/* ======================================================================= */ +/* */ +/* */ +/* Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ */ +/* */ +/* */ +/* Redistribution and use in source and binary forms, with or without */ +/* modification, are permitted provided that the following conditions */ +/* are met: */ +/* */ +/* Redistributions of source code must retain the above copyright */ +/* notice, this list of conditions and the following disclaimer. */ +/* */ +/* Redistributions in binary form must reproduce the above copyright */ +/* notice, this list of conditions and the following disclaimer in the */ +/* documentation and/or other materials provided with the */ +/* distribution. */ +/* */ +/* Neither the name of Texas Instruments Incorporated nor the names of */ +/* its contributors may be used to endorse or promote products derived */ +/* from this software without specific prior written permission. */ +/* */ +/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */ +/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */ +/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR */ +/* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */ +/* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ +/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */ +/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, */ +/* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY */ +/* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */ +/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE */ +/* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* */ +/* ======================================================================= */ + + +extern int gen_twiddle_fft16x16 ( + short *w, + int n +); + diff --git a/ti/dsplib/examples/fft_ex/gen_twiddle_fft16x32.c b/ti/dsplib/examples/fft_ex/gen_twiddle_fft16x32.c new file mode 100644 index 0000000..07e37f5 --- /dev/null +++ b/ti/dsplib/examples/fft_ex/gen_twiddle_fft16x32.c @@ -0,0 +1,145 @@ +/* ======================================================================= */ +/* gen_twiddle_fft16x32.c -- File with twiddle factor generators. */ +/* ======================================================================= */ +/* This code requires a special sequence of twiddle factors stored */ +/* in 1Q15 fixed-point format. The following C code is used for */ +/* the natural C and intrinsic C implementations. */ +/* */ +/* In order to vectorize the FFT, it is desirable to access twiddle */ +/* factor array using double word wide loads and fetch the twiddle */ +/* factors needed. In order to do this a modified twiddle factor */ +/* array is created, in which the factors WN/4, WN/2, W3N/4 are */ +/* arranged to be contiguous. This eliminates the seperation between */ +/* twiddle factors within a butterfly. However this implies that as */ +/* the loop is traversed from one stage to another, that we maintain */ +/* a redundant version of the twiddle factor array. Hence the size */ +/* of the twiddle factor array increases as compared to the normal */ +/* Cooley Tukey FFT. The modified twiddle factor array is of size */ +/* "2 * N" where the conventional Cooley Tukey FFT is of size"3N/4" */ +/* where N is the number of complex points to be transformed. The */ +/* routine that generates the modified twiddle factor array was */ +/* presented earlier. With the above transformation of the FFT, */ +/* both the input data and the twiddle factor array can be accessed */ +/* using double-word wide loads to enable packed data processing. */ +/* */ +/* Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ */ +/* */ +/* */ +/* Redistribution and use in source and binary forms, with or without */ +/* modification, are permitted provided that the following conditions */ +/* are met: */ +/* */ +/* Redistributions of source code must retain the above copyright */ +/* notice, this list of conditions and the following disclaimer. */ +/* */ +/* Redistributions in binary form must reproduce the above copyright */ +/* notice, this list of conditions and the following disclaimer in the */ +/* documentation and/or other materials provided with the */ +/* distribution. */ +/* */ +/* Neither the name of Texas Instruments Incorporated nor the names of */ +/* its contributors may be used to endorse or promote products derived */ +/* from this software without specific prior written permission. */ +/* */ +/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */ +/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */ +/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR */ +/* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */ +/* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ +/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */ +/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, */ +/* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY */ +/* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */ +/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE */ +/* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* */ +/* ======================================================================= */ + +#include +#include "gen_twiddle_fft16x32.h" + +#ifndef PI +# ifdef M_PI +# define PI M_PI +# else +# define PI 3.14159265358979323846 +# endif +#endif + + +/* ======================================================================== */ +/* D2S -- Truncate a 'double' to a 'short', with clamping. */ +/* ======================================================================== */ +static short d2s(double d) +{ + d = floor(0.5 + d); // Explicit rounding to integer // + if (d >= 32767.0) return 32767; + if (d <= -32768.0) return -32768; + return (short)d; +} + + +/* ======================================================================== */ +/* GEN_TWIDDLE -- Generate twiddle factors for TI's custom FFTs. */ +/* */ +/* USAGE */ +/* This routine is called as follows: */ +/* */ +/* int gen_twiddle_fft16x32(short *w, int n) */ +/* */ +/* short *w Pointer to twiddle-factor array */ +/* int n Size of FFT */ +/* */ +/* The routine will generate the twiddle-factors directly into the */ +/* array you specify. The array needs to be approximately 2*N */ +/* elements long. (The actual size, which is slightly smaller, is */ +/* returned by the function.) */ +/* ======================================================================== */ +#ifdef _LITTLE_ENDIAN +int gen_twiddle_fft16x32(short *w, int n) +{ + int i, j, k; + double M = 32767.5; + + for (j = 1, k = 0; j < n >> 2; j = j << 2) { + for (i = 0; i < n >> 2; i += 2*j) { + + w[k + 3] = d2s(M * cos(2.0 * PI * (i+j) / n)); + w[k + 2] = d2s(M * sin(2.0 * PI * (i+j) / n)); + + w[k + 1] = d2s(M * cos(2.0 * PI * i / n)); + w[k + 0] = d2s(M * sin(2.0 * PI * i / n)); + + k += 4; + } + } + return k; +} +#else +int gen_twiddle_fft16x32(short *w, int n) +{ + int i, j, k; + double M = 32767.5; + + for (j = 1, k = 0; j < n >> 2; j = j << 2) { + for (i = 0; i < n >> 2; i += 2*j) { + + w[k + 3] =-d2s(M * sin(2.0 * PI * (i+j) / n)); + w[k + 2] = d2s(M * cos(2.0 * PI * (i+j) / n)); + + w[k + 1] =-d2s(M * sin(2.0 * PI * i / n)); + w[k + 0] = d2s(M * cos(2.0 * PI * i / n)); + + k += 4; + } + } + return k; +} +#endif +/* ======================================================================= */ +/* End of file: gen_twiddle_fft16x32.c */ +/* ----------------------------------------------------------------------- */ +/* Copyright (c) 2011 Texas Instruments, Incorporated. */ +/* All Rights Reserved. */ +/* ======================================================================= */ + diff --git a/ti/dsplib/examples/fft_ex/gen_twiddle_fft16x32.h b/ti/dsplib/examples/fft_ex/gen_twiddle_fft16x32.h new file mode 100644 index 0000000..d5336a8 --- /dev/null +++ b/ti/dsplib/examples/fft_ex/gen_twiddle_fft16x32.h @@ -0,0 +1,43 @@ +/* ======================================================================= */ +/* gen_twiddle_fft16x32.h */ +/* ======================================================================= */ +/* */ +/* */ +/* Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ */ +/* */ +/* */ +/* Redistribution and use in source and binary forms, with or without */ +/* modification, are permitted provided that the following conditions */ +/* are met: */ +/* */ +/* Redistributions of source code must retain the above copyright */ +/* notice, this list of conditions and the following disclaimer. */ +/* */ +/* Redistributions in binary form must reproduce the above copyright */ +/* notice, this list of conditions and the following disclaimer in the */ +/* documentation and/or other materials provided with the */ +/* distribution. */ +/* */ +/* Neither the name of Texas Instruments Incorporated nor the names of */ +/* its contributors may be used to endorse or promote products derived */ +/* from this software without specific prior written permission. */ +/* */ +/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */ +/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */ +/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR */ +/* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */ +/* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ +/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */ +/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, */ +/* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY */ +/* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */ +/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE */ +/* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* */ +/* ======================================================================= */ + +extern int gen_twiddle_fft16x32 ( + short *w, + int n +); + diff --git a/ti/dsplib/examples/fft_ex/gen_twiddle_fft32x32.c b/ti/dsplib/examples/fft_ex/gen_twiddle_fft32x32.c new file mode 100644 index 0000000..fa5a9c9 --- /dev/null +++ b/ti/dsplib/examples/fft_ex/gen_twiddle_fft32x32.c @@ -0,0 +1,148 @@ +/* ======================================================================= */ +/* gen_twiddle_fft32x32.c -- File with twiddle factor generators. */ +/* ======================================================================= */ +/* This code requires a special sequence of twiddle factors stored */ +/* in 1Q15 fixed-point format. The following C code is used for */ +/* the natural C and intrinsic C implementations. */ +/* */ +/* In order to vectorize the FFT, it is desirable to access twiddle */ +/* factor array using double word wide loads and fetch the twiddle */ +/* factors needed. In order to do this a modified twiddle factor */ +/* array is created, in which the factors WN/4, WN/2, W3N/4 are */ +/* arranged to be contiguous. This eliminates the seperation between */ +/* twiddle factors within a butterfly. However this implies that as */ +/* the loop is traversed from one stage to another, that we maintain */ +/* a redundant version of the twiddle factor array. Hence the size */ +/* of the twiddle factor array increases as compared to the normal */ +/* Cooley Tukey FFT. The modified twiddle factor array is of size */ +/* "2 * N" where the conventional Cooley Tukey FFT is of size"3N/4" */ +/* where N is the number of complex points to be transformed. The */ +/* routine that generates the modified twiddle factor array was */ +/* presented earlier. With the above transformation of the FFT, */ +/* both the input data and the twiddle factor array can be accessed */ +/* using double-word wide loads to enable packed data processing. */ +/* */ +/* */ +/* Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ */ +/* */ +/* */ +/* Redistribution and use in source and binary forms, with or without */ +/* modification, are permitted provided that the following conditions */ +/* are met: */ +/* */ +/* Redistributions of source code must retain the above copyright */ +/* notice, this list of conditions and the following disclaimer. */ +/* */ +/* Redistributions in binary form must reproduce the above copyright */ +/* notice, this list of conditions and the following disclaimer in the */ +/* documentation and/or other materials provided with the */ +/* distribution. */ +/* */ +/* Neither the name of Texas Instruments Incorporated nor the names of */ +/* its contributors may be used to endorse or promote products derived */ +/* from this software without specific prior written permission. */ +/* */ +/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */ +/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */ +/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR */ +/* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */ +/* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ +/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */ +/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, */ +/* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY */ +/* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */ +/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE */ +/* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* */ +/* ======================================================================= */ + +#include +#include "gen_twiddle_fft32x32.h" + +#ifndef PI +# ifdef M_PI +# define PI M_PI +# else +# define PI 3.14159265358979323846 +# endif +#endif + + +/* ======================================================================== */ +/* D2S -- Truncate a 'double' to a 'int', with clamping. */ +/* ======================================================================== */ +static int d2i(double d) +{ + if (d >= 2147483647.0) return (int)0x7FFFFFFF; + if (d <= -2147483648.0) return (int)0x80000000; + return (int)d; +} + + +/* ======================================================================== */ +/* GEN_TWIDDLE -- Generate twiddle factors for TI's custom FFTs. */ +/* */ +/* USAGE */ +/* This routine is called as follows: */ +/* */ +/* int gen_twiddle_fft32x32(short *w, int n, double scale) */ +/* */ +/* int *w Pointer to twiddle-factor array */ +/* int n Size of FFT */ +/* double scale Scale factor to apply to values. */ +/* */ +/* The routine will generate the twiddle-factors directly into the */ +/* array you specify. The array needs to be approximately 2*N */ +/* elements long. (The actual size, which is slightly smaller, is */ +/* returned by the function.) */ +/* ======================================================================== */ +#ifdef _LITTLE_ENDIAN +int gen_twiddle_fft32x32(int *w, int n, double scale) +{ + int i, j, k, s=0, t; + + for (j = 1, k = 0; j < n >> 2; j = j << 2, s++) { + for (i = t=0; i < n >> 2; i += j, t++) { + w[k + 5] = d2i(scale * cos(6.0 * PI * i / n)); + w[k + 4] = d2i(scale * sin(6.0 * PI * i / n)); + + w[k + 3] = d2i(scale * cos(4.0 * PI * i / n)); + w[k + 2] = d2i(scale * sin(4.0 * PI * i / n)); + + w[k + 1] = d2i(scale * cos(2.0 * PI * i / n)); + w[k + 0] = d2i(scale * sin(2.0 * PI * i / n)); + + k += 6; + } + } + return k; +} +#else +int gen_twiddle_fft32x32(int *w, int n, double scale) +{ + int i, j, k, s=0, t; + + for (j = 1, k = 0; j < n >> 2; j = j << 2, s++) { + for (i = t=0; i < n >> 2; i += j, t++) { + w[k + 5] =-d2i(scale * sin(6.0 * PI * i / n)); + w[k + 4] = d2i(scale * cos(6.0 * PI * i / n)); + + w[k + 3] =-d2i(scale * sin(4.0 * PI * i / n)); + w[k + 2] = d2i(scale * cos(4.0 * PI * i / n)); + + w[k + 1] =-d2i(scale * sin(2.0 * PI * i / n)); + w[k + 0] = d2i(scale * cos(2.0 * PI * i / n)); + + k += 6; + } + } + return k; +} +#endif +/* ======================================================================= */ +/* End of file: gen_twiddle_fft32x32.c */ +/* ----------------------------------------------------------------------- */ +/* Copyright (c) 2011 Texas Instruments, Incorporated. */ +/* All Rights Reserved. */ +/* ======================================================================= */ + diff --git a/ti/dsplib/examples/fft_ex/gen_twiddle_fft32x32.h b/ti/dsplib/examples/fft_ex/gen_twiddle_fft32x32.h new file mode 100644 index 0000000..999e782 --- /dev/null +++ b/ti/dsplib/examples/fft_ex/gen_twiddle_fft32x32.h @@ -0,0 +1,43 @@ +/* ======================================================================= */ +/* gen_twiddle_fft32x32.h */ +/* ======================================================================= */ +/* */ +/* Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ */ +/* */ +/* */ +/* Redistribution and use in source and binary forms, with or without */ +/* modification, are permitted provided that the following conditions */ +/* are met: */ +/* */ +/* Redistributions of source code must retain the above copyright */ +/* notice, this list of conditions and the following disclaimer. */ +/* */ +/* Redistributions in binary form must reproduce the above copyright */ +/* notice, this list of conditions and the following disclaimer in the */ +/* documentation and/or other materials provided with the */ +/* distribution. */ +/* */ +/* Neither the name of Texas Instruments Incorporated nor the names of */ +/* its contributors may be used to endorse or promote products derived */ +/* from this software without specific prior written permission. */ +/* */ +/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */ +/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */ +/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR */ +/* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */ +/* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ +/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */ +/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, */ +/* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY */ +/* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */ +/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE */ +/* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* */ +/* ======================================================================= */ + +extern int gen_twiddle_fft32x32 ( + int *w, + int n, + double scale +); + diff --git a/ti/dsplib/examples/fft_ex/refOutput.jpg b/ti/dsplib/examples/fft_ex/refOutput.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4175b37e770d3f19e54e4024c50e41e02994e8c8 GIT binary patch literal 240853 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