Use #pragma ivdep to
indicate there is no dependence. You might need to compile with the -ivdep_parallel option to absolutely specify no loop
Use #pragma swp to enable
software pipelining (useful for lop-sided controls and unknown loop count).
Use #pragma loop count(n)
Use of -ansi-alias is
helpful. For example, for **p = *q, the ANSI rule
indicates the pointer and float data do not overlap.
Add the restrict keyword
to insure there is no aliasing.
Use -alias_args- to indicate
arguments are not aliased.
Use -fno_alias only if
pointers get traced back to the same base pointer.
Use #pragma distribute point
to split large loops (normally this is done automatically).
For C code, do not use unsigned
int for loop indexes. HLO may skip optimization due to possible
subscripts overflow. If upper bounds are pointer references, assign it
to a local variable whenever possible.
Is prefetch distance correct? Use #pragma
prefetch to override the distance when it is needed.