For this C program, I don't see why it is beneficial to interchange
the loop because the inner loop is already stride-1 (C is row-major).
It does need an unroll-and-jam transformation to capture the reuse
of the outer loop though. Maybe the LNO machine model is not up-to-date
with the IA64.
A useful flag to try for C program is -OPT:alias=restrict if the array is
an input parameter.
Peng.
On Tuesday, September 12, 2000 11:07 AM, Ziang Hu [SMTP:hu@xxxxxxxxxxxxxxxxxxx]
wrote:
>
> Hi,
>
> I tried to test the effect of LNO with Pro64. The code is as follows:
>
> ...
> for (i=0; i<1000; i++)
> for (j=0; j<1000; j++)
> a[i][j] = a[i][j] + a[i-1][j];
> ...
>
> With -O3, no loop interchange happened.
>
> How about LNO with C programs ?
>
> Thanks
>
> Ziang
|