https://gcc.gnu.org/bugzilla/show_bug.cgi?id=29256

--- Comment #51 from Jeffrey A. Law <law at redhat dot com> ---
Configure for powerpc-linux-gnuspec target with the --eanble-e500_double
option:


/home/gcc/GIT-2/gcc/configure powerpc-linux-gnuspe --enable-e500_double

Testcase:
# define N      2000000
extern double   a[N],c[N];
void tuned_STREAM_Copy()
{
        int j;
        for (j=0; j<N; j++)
            c[j] = a[j];
}


./cc1 -O3 -funroll-loops -funroll-all-loops -fno-tree-loop-distribute-patterns
j.c -I./ -mspe

Results in:

tuned_STREAM_Copy:
        stwu 1,-16(1)
        lis 7,0x3
        lis 8,c@ha
        lis 10,a@ha
        ori 0,7,0xd090
        evstdd 31,8(1)
        li 9,0
        la 8,c@l(8)
        la 10,a@l(10)
        mtctr 0
.L2:
        evlddx 31,10,9
        addi 7,9,8
        addi 0,9,16
        addi 11,9,24
        addi 3,9,32
        evstddx 31,8,9
        addi 4,9,40
        evlddx 31,10,7
        addi 5,9,48
        addi 6,9,56
        evlddx 12,10,6
        addi 9,9,64
        evstddx 31,8,7
        evlddx 7,10,0
        evstddx 7,8,0
        evlddx 0,10,11
        evstddx 0,8,11
        evlddx 11,10,3
        evstddx 11,8,3
        evlddx 3,10,4
        evstddx 3,8,4
        evlddx 4,10,5
        evstddx 4,8,5
        evstddx 12,8,6
        bdnz .L2
        evldd 31,8(1)
        addi 1,1,16
        blr
        .size   tuned_STREAM_Copy, .-tuned_STREAM_Copy

Which looks to me like ivopts has mucked things up badly.

Reply via email to