advice #30001: Loop at line 18 cannot be scheduled efficiently, as it contains conversion from "type-a" to "type-b". Try to use "suggested" type.
The compiler is inserting a special function call within a loop, which prevents the software pipelining optimization. Software pipelining is a key compiler optimization for achieving good performance. You are getting this Advice so you can take steps to potentially prevent this pipeline disqualification.
The compiler can insert calls to special functions in the run-time support library (RTS) to support operations that are not natively supported by the ISA. For instance, while C6000 floating-point ISAs support instructions to convert between floating-point and signed integer values, they don't support conversion between floating-point and unsigned integer values. If you use unsigned variables in floating point expressions, the compiler will generate a call to an RTS routine to carry out this function. Such a call will disable software pipelining. You can change the unsigned variable to signed variable to prevent this from happening and get better performance.
This is happening in your code. If possible, change the type of integer expressions to signed 32-bit integer. The compiler will be able to use the native hardware instead of adding the special function call, so you will get better performance.
If this condition occurs, the compiler cannot perform the software pipelining loop optimization, which is crucial to getting good performance.
Use suggested type and/or change any integer sub-expressions in floating-point expressions to signed 32-bit integer expressions.
Want to squeeze a few more Performance Cycles out of your application? Leverage the e2e (Engineer-to-Engineer) online community to get all of your Advice questions answered! Or, give back to the community with your expertise.