This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

How does CGT 7.4.4 support floating point?

Hi,

sprabg7.pdf said that it is easy to port floating algorithm to C66 chips, but I find the compiler does not generate software pipeline loops even for such a simple loop:

for ( i = 0; i < n; i++)
{
oneOverAbs_a = oneOverAbs_a * oneOverAbs_a;
abs_a[i] = (a_sqr * oneOverAbs_a);

dtemp1 = _ftod(oneOverAbs_a, oneOverAbs_a);
dtemp1 = _dmpysp(dtemp, dtemp1);
dtemp1 = _dmpysp(_ftod(32768.f, 32768.f), dtemp1);
_amem4(&ejalpha[i]) = _dspinth(dtemp1);
}

The feedback message is:

159 ;*----------------------------------------------------------------------------*
160 ;* SOFTWARE PIPELINE INFORMATION
161 ;* Disqualified loop: Loop contains a call
162 ;* Disqualified loop: Loop contains non-pipelinable instructions
163 ;* Disqualified loop: Loop contains a call
164 ;* Disqualified loop: Loop contains non-pipelinable instructions
165 ;* Disqualified loop: Loop contains a call
TMS320C6x Assembler PC v7.4.4 Sun Dec 08 13:16:32 2013

Tools Copyright (c) 1996-2013 Texas Instruments Incorporated
main_p19.asm PAGE 4

166 ;* Disqualified loop: Loop contains non-pipelinable instructions
167 ;* Disqualified loop: Loop contains a call
168 ;* Disqualified loop: Loop contains non-pipelinable instructions
169 ;* Disqualified loop: Loop contains a call
170 ;* Disqualified loop: Loop contains non-pipelinable instructions
171 ;* Disqualified loop: Loop contains a call
172 ;* Disqualified loop: Loop contains non-pipelinable instructions

I have check build options, turn off #include <math.lib>, select rts6600_elf.lib.

It pipelines the loop only after I comment out these two lines:

oneOverAbs_a = oneOverAbs_a * oneOverAbs_a;
abs_a[i] = (a_sqr * oneOverAbs_a);

What is the problem? Thanks,