I used a 21469 SHARC prior, and the fir_interp library function did not use SIMD. It looks like the SHARC+ fir_interp has the same limitation, Table 3.6 in CrossCore Embedded Studio 2.5.0 C/C++ Library Manualfor SHARC Processors.
Is it possible to specially order the data/coefficients so that a differently coded fir_interp can use SIMD? I need the approx. 2X speedup of SIMD to make the SHARC+ work in a new project, or else will have to consider the TI TMS320C6657.
This post suggest there is a SHARC+ SIMD version of fir_interp but I think it may be in error: EngineerZone: Message List
Thanks for your reply.
I've spent a bit of time developing a SIMD version of the fir_interp function. At the moment this is just a trial version and the code has not been reviewed and regression tested, so we can provide no warranties for its use - it may contain bugs! However I attach it here for if you would like to try it out and provide any feedback. Please let us know if it helps you and we will try to productize it for the next release of CCES.
There are a couple of things to be aware of:
- this code is for the SHARC+ family of parts
- you'll need to add the include path path-to-cces/SHARC/lib/src/libcc_src in your build, as the file uses xlibdefs.h
- SIMD is only used when p is even. If p is odd, the code falls back to the original SISD version.
- likewise, SISD is used in the pathological case that the number of coeffs k == 1
- otherwise, the code is a drop-in replacement for the original function, so just add the file to your project
Please let me know how you get on.
All the best,
PS As for your question regarding the FIR accelerator, I wonder if Mitesh might be able to help?
So I have the asm file in the project directory, and added the path you suggested, it shows in the "Includes" workspace list. Getting this build error using CCES 2.8.1 ...
make all 'Building file: ../src/fir_interp_vec_21XI-simd.asm''Invoking: CrossCore SHARC Assembler'easm21k -file-attr ProjectName="TWI_Core1" -proc ADSP-21584 -si-revision any -g -DCORE1 -D_DEBUG -DADI_MCAPI @includes-d360dfd5958f2f6fb52afc2c806f90bb.txt -swc -char-size-8 -gnu-style-dependencies -MM -Mo "src/fir_interp_vec_21XI-simd.d" -o "src/fir_interp_vec_21XI-simd.doj" "../src/fir_interp_vec_21XI-simd.asm"[Warning pp0035] File already specified, this file is ignored: Embedded'
[Warning pp0035] File already specified, this file is ignored: Studio'
[Warning pp0035] File already specified, this file is ignored: 2.8.1/SHARC/lib/src/libcc_src'
[Warning pp0035] File already specified, this file is ignored: ../src/fir_interp_vec_21XI-simd.asm'
[Error pp0043] Preprocessor failed to open 'Devices/CrossCore' Invoke "pp -help" to produce a command-line usage summary.
Preprocessor finished with 1 error(s) 4 warning(s)[Error ea1088] Previous errors in pre-processing prevent assembly.
Assembler totals: 1 error(s) and 0 warning(s)make: *** [src/fir_interp_vec_21XI-simd.doj] Error 1