Commit 66d229b8 by Dorit Nuzman Committed by Dorit Nuzman

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
parent 500f8f7b
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> 2007-08-18 Tom Tromey <tromey@redhat.com>
PR preprocessor/32974: PR preprocessor/32974:
...@@ -7,7 +7,8 @@ short Kernshort[24] __attribute__ ((__aligned__(16))); ...@@ -7,7 +7,8 @@ short Kernshort[24] __attribute__ ((__aligned__(16)));
static void VecBug(short Kernel[8][24]) __attribute__((noinline)); static void VecBug(short Kernel[8][24]) __attribute__((noinline));
static void VecBug2(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]) static void VecBug(short Kernel[8][24])
{ {
int k,i; int k,i;
...@@ -48,7 +49,8 @@ int main (int argc, char **argv) ...@@ -48,7 +49,8 @@ int main (int argc, char **argv)
return 0; return 0;
} }
/* The loops in VecBug and VecBug2 require versioning for alignment.
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" } } */ The loop in main is aligned. */
/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target vect_no_align } } } */ /* { 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" } } */ /* { dg-final { cleanup-tree-dump "vect" } } */
...@@ -8,8 +8,8 @@ ...@@ -8,8 +8,8 @@
int main1 () int main1 ()
{ {
union { union {
char a[N] __attribute__ ((__aligned__(16))); unsigned char a[N] __attribute__ ((__aligned__(16)));
char b[N] __attribute__ ((__aligned__(16))); unsigned char b[N] __attribute__ ((__aligned__(16)));
} s; } s;
int i; int i;
...@@ -19,8 +19,8 @@ int main1 () ...@@ -19,8 +19,8 @@ int main1 ()
s.b[i] = 3*i; s.b[i] = 3*i;
} }
/* Can't vectorize - dependence analysis fails cause s.a and s.b may /* Dependence analysis fails cause s.a and s.b may overlap.
overlap. */ Use runtime aliasing test with versioning. */
for (i = 0; i < N; i++) for (i = 0; i < N; i++)
{ {
s.a[i] = s.b[i] + 1; s.a[i] = s.b[i] + 1;
...@@ -44,6 +44,6 @@ int main (void) ...@@ -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 { scan-tree-dump-times "can't determine dependence between" 1 "vect" } } */
/* { dg-final { cleanup-tree-dump "vect" } } */ /* { dg-final { cleanup-tree-dump "vect" } } */
...@@ -17,7 +17,8 @@ int main1 (int X) ...@@ -17,7 +17,8 @@ int main1 (int X)
by the loop-header phi (as opposed to the other uses of k that are 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 defined in the loop), in which case we exercise the fact that we
reuse the same vector def-use-cycle for both uses. 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 { do {
arr2[i+1] = 2*k; arr2[i+1] = 2*k;
...@@ -45,5 +46,5 @@ int main (void) ...@@ -45,5 +46,5 @@ int main (void)
return main1 (3); 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" } } */ /* { dg-final { cleanup-tree-dump "vect" } } */
...@@ -40,6 +40,5 @@ int main (void) ...@@ -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" 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 "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" } } */ /* { dg-final { cleanup-tree-dump "vect" } } */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment