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

            Bug ID: 77613
           Summary: Powerpc64le: redundant swaps in autovectorised loop
           Product: gcc
           Version: 7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: anton at samba dot org
                CC: meissner at gcc dot gnu.org, segher at gcc dot gnu.org,
                    wschmidt at gcc dot gnu.org
  Target Milestone: ---
            Target: powerpc64le-linux

The following test case:

void testcase(signed short a, signed short *x, signed short *y)
{
        unsigned long i;

        for (i = 0; i < 1024; i++)
                y[i] = a * x[i] + y[i];
}

has redundant swaps on the way in and out:

        lxvd2x 32,8,9
        lxvd2x 33,10,9
        xxpermdi 32,32,32,2
        xxpermdi 33,33,33,2
        vmladduhm 0,13,0,1
        xxpermdi 0,32,32,2
        stxvd2x 0,10,9

Reply via email to