Hi, all
Recently I upgrate the c6000 code generation toolchain from 7.4.x to 8.3.x when bulilding for C66x DSPs. I encouter worse performance and I checked the generated assembly, I found the new compiler perform worse when the inline functions have an input parameter passing as a restrict reference as below
static void inline_smpy2_hi_lo (int src1, int src2, int *restrictout_hi, int *restrict out_lo)
{
long long out = _smpy2ll(src1, src2);
*out_hi = _hill(out);
*out_lo = _loll(out);
}
for()
{
....
_smpy2_hi_lo(inA1, inB1, &out_hi1, &out_lo1);
.....
}
I know I can simplify the code with just _smpy2ll with a 64-bit return paramter. But I just wonder why the same code works fine with compiler v7.4.x but not for v8.3.x. Is there a simple complier option to handle the inline functions with reference params in the latest v8.3.x compiler?
Thank you.