I am evaluating several candidate DSPs, and the C6748 is running surprisingly slow on the floating point math benchmarks, compared to other candidates. I have narrowed the issue down to the floating point divide operations, and therefore I have several questions regarding floating point support in the RTS lib:
1.) Does rts6740.lib use a fixed point algorithm for single- and dual-precision divides (_divf and _divd, respectively)? I poked through the RTS code, and that's what it looks like.
2.) The fastRTS library (sprc060) uses floating point instructions, and in fact performs much closer to my expectations. Is fastRTS my only option for true floating point divides?
3.) Will I suffer any precision loss by using the fastRTS floating point divide functions (_divsp and _divdp)? The C6000 Optimizing Compiler's Guide (spru187q) says "these functions gain speed improvements at the cost of accuracy in the result," but the TMS320C67x FastRTS Library Programmer’s Reference (spru100a) says nothing about this. If there is a loss of precision, how can I quantify it?
4.) The product page says fastRTS is active, but it hasn't been updated since 2002. This page implies that there will be a new fastRTS release. If so, when? Are there any bug fixes in the new release? Is there any risk in using the old one vs. the new one?
5.) Do the fastRTS _divsp and _divdp functions handle NaN, infinity, and divide-by-zero?
6.) Other than what I've asked about, are there any downsides to using fastRTS on the C6748?
For reference, I am developing in C++ using CCS v3.3 and Code Gen Tools v7.0.4.
Thanks,
Clayton Gilmore
Software Engineer
Rockwell Collins, Inc.