pr20122.c: Fix test (now vectorized, with versioning for aliasing).

* testsuite/gcc.dg/vect/pr20122.c: Fix test (now vectorized, with
        versioning for aliasing).
        * testsuite/gcc.dg/vect/vect-35.c: Likewise.

        * testsuite/gcc.dg/vect/vect-iv-6.c: Fix test for vect_no_align targets.
        * testsuite/gcc.dg/vect/vect-multitypes-11.c: Likewise.

From-SVN: r127621
This commit is contained in:
Dorit Nuzman 2007-08-19 09:32:22 +00:00 committed by Dorit Nuzman
parent 500f8f7b5f
commit 66d229b835
5 changed files with 23 additions and 12 deletions

View file

@ -1,3 +1,12 @@
2007-08-19 Dorit Nuzman <dorit@il.ibm.com>
* testsuite/gcc.dg/vect/pr20122.c: Fix test (now vectorized, with
versioning for aliasing).
* testsuite/gcc.dg/vect/vect-35.c: Likewise.
* testsuite/gcc.dg/vect/vect-iv-6.c: Fix test for vect_no_align targets.
* testsuite/gcc.dg/vect/vect-multitypes-11.c: Likewise.
2007-08-18 Tom Tromey <tromey@redhat.com>
PR preprocessor/32974:

View file

@ -7,7 +7,8 @@ short Kernshort[24] __attribute__ ((__aligned__(16)));
static void VecBug(short Kernel[8][24]) __attribute__((noinline));
static void VecBug2(short Kernel[8][24]) __attribute__((noinline));
/* Not vectorizable: Kernel may alias Kernshort - a global array. */
/* Kernel may alias Kernshort - a global array.
Use versioning for aliasing. */
static void VecBug(short Kernel[8][24])
{
int k,i;
@ -48,7 +49,8 @@ int main (int argc, char **argv)
return 0;
}
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" } } */
/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target vect_no_align } } } */
/* The loops in VecBug and VecBug2 require versioning for alignment.
The loop in main is aligned. */
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 3 "vect" } } */
/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 2 "vect" { target vect_no_align } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */

View file

@ -8,8 +8,8 @@
int main1 ()
{
union {
char a[N] __attribute__ ((__aligned__(16)));
char b[N] __attribute__ ((__aligned__(16)));
unsigned char a[N] __attribute__ ((__aligned__(16)));
unsigned char b[N] __attribute__ ((__aligned__(16)));
} s;
int i;
@ -19,8 +19,8 @@ int main1 ()
s.b[i] = 3*i;
}
/* Can't vectorize - dependence analysis fails cause s.a and s.b may
overlap. */
/* Dependence analysis fails cause s.a and s.b may overlap.
Use runtime aliasing test with versioning. */
for (i = 0; i < N; i++)
{
s.a[i] = s.b[i] + 1;
@ -44,6 +44,6 @@ int main (void)
}
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail *-*-* } } } */
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "can't determine dependence between" 1 "vect" } } */
/* { dg-final { cleanup-tree-dump "vect" } } */

View file

@ -17,7 +17,8 @@ int main1 (int X)
by the loop-header phi (as opposed to the other uses of k that are
defined in the loop), in which case we exercise the fact that we
reuse the same vector def-use-cycle for both uses.
Peeling to align the store is also applied. */
Peeling to align the store is also applied. This peeling also aligns
the load (as they have the same misalignment). */
do {
arr2[i+1] = 2*k;
@ -45,5 +46,5 @@ int main (void)
return main1 (3);
}
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_align } } } */
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
/* { dg-final { cleanup-tree-dump "vect" } } */

View file

@ -40,6 +40,5 @@ int main (void)
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target vect_unpack } } } */
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { ! vect_unpack } } } } */
/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { vect_no_align && vect_unpack } } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */