Commit 5a3ed97a by Dorit Naishlos Committed by Dorit Nuzman

tree-vectorizer.c (vect_enhance_data_refs_alignment): Add dump prints.

        * tree-vectorizer.c (vect_enhance_data_refs_alignment): Add dump prints.
        (vect_analyze_data_refs_alignment): Add dump prints.

        * gcc.dg/vect/pr18400.c: Add checks for alignment prints.
        * gcc.dg/vect/pr18425.c: Add checks for alignment prints.
        * gcc.dg/vect/pr18536.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-1.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-2.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-3.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-4.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-5.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-6.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-7.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-13.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-17.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-18.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-19.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-20.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-21.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-22.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-23.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-24.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-25.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-26.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-27.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-28.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-29.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-31.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-32.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-33.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-34.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-35.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-36.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-37.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-40.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-41.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-42.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-43.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-44.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-46.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-47.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-48.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-50.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-52.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-53.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-56.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-58.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-60.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-62.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-64.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-65.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-66.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-67.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-68.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-69.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-72.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-73.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-74.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-75.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-76.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-77.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-78.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-80.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-86.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-87.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-88.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-89.c: Add checks for alignment prints.
        * gcc.dg/vect/vect-all.c: Add checks for alignment prints.

        * gcc.dg/vect/vect-1.c: Fix spelling.
        * gcc.dg/vect/vect-10.c: Fix spelling.
        * gcc.dg/vect/vect-11.c: Fix spelling.
        * gcc.dg/vect/vect-12.c: Fix spelling.
        * gcc.dg/vect/vect-14.c: Fix spelling.
        * gcc.dg/vect/vect-15.c: Fix spelling.
        * gcc.dg/vect/vect-16.c: Fix spelling.
        * gcc.dg/vect/vect-46.c: Remove obsolete comment.
        * gcc.dg/vect/vect-64.c: Fix comments.
        * gcc.dg/vect/vect-none.c: Remove vectorizable loop.

Co-Authored-By: Ira Rosen <irar@il.ibm.com>

From-SVN: r93114
parent db5dc63d
2005-01-09 Dorit Naishlos <dorit@il.ibm.com>
* tree-vectorizer.c (vect_enhance_data_refs_alignment): Add dump prints.
(vect_analyze_data_refs_alignment): Add dump prints.
2005-01-09 Ira Rosen <irar@il.ibm.com> 2005-01-09 Ira Rosen <irar@il.ibm.com>
* tree-vectorizer.c (vect_analyze_offset_expr): Use * tree-vectorizer.c (vect_analyze_offset_expr): Use
......
2005-01-09 Dorit Naishlos <dorit@il.ibm.com>
* gcc.dg/vect/pr18400.c: Add checks for alignment prints.
* gcc.dg/vect/pr18425.c: Add checks for alignment prints.
* gcc.dg/vect/pr18536.c: Add checks for alignment prints.
* gcc.dg/vect/vect-1.c: Add checks for alignment prints.
* gcc.dg/vect/vect-2.c: Add checks for alignment prints.
* gcc.dg/vect/vect-3.c: Add checks for alignment prints.
* gcc.dg/vect/vect-4.c: Add checks for alignment prints.
* gcc.dg/vect/vect-5.c: Add checks for alignment prints.
* gcc.dg/vect/vect-6.c: Add checks for alignment prints.
* gcc.dg/vect/vect-7.c: Add checks for alignment prints.
* gcc.dg/vect/vect-13.c: Add checks for alignment prints.
* gcc.dg/vect/vect-17.c: Add checks for alignment prints.
* gcc.dg/vect/vect-18.c: Add checks for alignment prints.
* gcc.dg/vect/vect-19.c: Add checks for alignment prints.
* gcc.dg/vect/vect-20.c: Add checks for alignment prints.
* gcc.dg/vect/vect-21.c: Add checks for alignment prints.
* gcc.dg/vect/vect-22.c: Add checks for alignment prints.
* gcc.dg/vect/vect-23.c: Add checks for alignment prints.
* gcc.dg/vect/vect-24.c: Add checks for alignment prints.
* gcc.dg/vect/vect-25.c: Add checks for alignment prints.
* gcc.dg/vect/vect-26.c: Add checks for alignment prints.
* gcc.dg/vect/vect-27.c: Add checks for alignment prints.
* gcc.dg/vect/vect-28.c: Add checks for alignment prints.
* gcc.dg/vect/vect-29.c: Add checks for alignment prints.
* gcc.dg/vect/vect-31.c: Add checks for alignment prints.
* gcc.dg/vect/vect-32.c: Add checks for alignment prints.
* gcc.dg/vect/vect-33.c: Add checks for alignment prints.
* gcc.dg/vect/vect-34.c: Add checks for alignment prints.
* gcc.dg/vect/vect-35.c: Add checks for alignment prints.
* gcc.dg/vect/vect-36.c: Add checks for alignment prints.
* gcc.dg/vect/vect-37.c: Add checks for alignment prints.
* gcc.dg/vect/vect-40.c: Add checks for alignment prints.
* gcc.dg/vect/vect-41.c: Add checks for alignment prints.
* gcc.dg/vect/vect-42.c: Add checks for alignment prints.
* gcc.dg/vect/vect-43.c: Add checks for alignment prints.
* gcc.dg/vect/vect-44.c: Add checks for alignment prints.
* gcc.dg/vect/vect-46.c: Add checks for alignment prints.
* gcc.dg/vect/vect-47.c: Add checks for alignment prints.
* gcc.dg/vect/vect-48.c: Add checks for alignment prints.
* gcc.dg/vect/vect-50.c: Add checks for alignment prints.
* gcc.dg/vect/vect-52.c: Add checks for alignment prints.
* gcc.dg/vect/vect-53.c: Add checks for alignment prints.
* gcc.dg/vect/vect-56.c: Add checks for alignment prints.
* gcc.dg/vect/vect-58.c: Add checks for alignment prints.
* gcc.dg/vect/vect-60.c: Add checks for alignment prints.
* gcc.dg/vect/vect-62.c: Add checks for alignment prints.
* gcc.dg/vect/vect-64.c: Add checks for alignment prints.
* gcc.dg/vect/vect-65.c: Add checks for alignment prints.
* gcc.dg/vect/vect-66.c: Add checks for alignment prints.
* gcc.dg/vect/vect-67.c: Add checks for alignment prints.
* gcc.dg/vect/vect-68.c: Add checks for alignment prints.
* gcc.dg/vect/vect-69.c: Add checks for alignment prints.
* gcc.dg/vect/vect-70.c: Add checks for alignment prints.
* gcc.dg/vect/vect-71.c: Add checks for alignment prints.
* gcc.dg/vect/vect-72.c: Add checks for alignment prints.
* gcc.dg/vect/vect-73.c: Add checks for alignment prints.
* gcc.dg/vect/vect-74.c: Add checks for alignment prints.
* gcc.dg/vect/vect-75.c: Add checks for alignment prints.
* gcc.dg/vect/vect-76.c: Add checks for alignment prints.
* gcc.dg/vect/vect-77.c: Add checks for alignment prints.
* gcc.dg/vect/vect-78.c: Add checks for alignment prints.
* gcc.dg/vect/vect-80.c: Add checks for alignment prints.
* gcc.dg/vect/vect-86.c: Add checks for alignment prints.
* gcc.dg/vect/vect-87.c: Add checks for alignment prints.
* gcc.dg/vect/vect-88.c: Add checks for alignment prints.
* gcc.dg/vect/vect-89.c: Add checks for alignment prints.
* gcc.dg/vect/vect-all.c: Add checks for alignment prints.
* gcc.dg/vect/vect-1.c: Fix spelling.
* gcc.dg/vect/vect-10.c: Fix spelling.
* gcc.dg/vect/vect-11.c: Fix spelling.
* gcc.dg/vect/vect-12.c: Fix spelling.
* gcc.dg/vect/vect-14.c: Fix spelling.
* gcc.dg/vect/vect-15.c: Fix spelling.
* gcc.dg/vect/vect-16.c: Fix spelling.
* gcc.dg/vect/vect-46.c: Remove obsolete comment.
* gcc.dg/vect/vect-64.c: Fix comments.
* gcc.dg/vect/vect-none.c: Remove vectorizable loop.
2005-01-09 Dorit Naishlos <dorit@il.ibm.com>
Ira Rosen <irar@il.ibm.com>
* gcc.dg/vect/vect-70.c: New test.
* gcc.dg/vect/vect-71.c: New test.
2005-01-09 Manfred Hollstein <mh@suse.com> 2005-01-09 Manfred Hollstein <mh@suse.com>
* gcc.dg/pr18241-1.c: Fix dg-do parameter. * gcc.dg/pr18241-1.c: Fix dg-do parameter.
......
...@@ -29,7 +29,7 @@ foo (int n) ...@@ -29,7 +29,7 @@ foo (int n)
char image[N][N]; char image[N][N];
char block[N][N]; char block[N][N];
/* Not vetorizable yet (cross-iteration cycle). */ /* Not vectorizable yet (cross-iteration cycle). */
diff = 0; diff = 0;
for (i = 0; i < N; i++) { for (i = 0; i < N; i++) {
diff += (cb[i] - cc[i]); diff += (cb[i] - cc[i]);
...@@ -37,7 +37,7 @@ foo (int n) ...@@ -37,7 +37,7 @@ foo (int n)
ibar (&diff); ibar (&diff);
/* Not vetorizable yet (outer-loop: not attempted. /* Not vectorizable yet (outer-loop: not attempted.
inner-loop: cross iteration cycle; multi-dimensional arrays). */ inner-loop: cross iteration cycle; multi-dimensional arrays). */
diff = 0; diff = 0;
for (i = 0; i < N; i++) { for (i = 0; i < N; i++) {
...@@ -62,7 +62,7 @@ foo (int n) ...@@ -62,7 +62,7 @@ foo (int n)
fbar (a); fbar (a);
/* Not vetorizable yet (access pattern). */ /* Not vectorizable yet (access pattern). */
for (i = 0; i < N/2; i++){ for (i = 0; i < N/2; i++){
a[i] = b[2*i+1] * c[2*i+1] - b[2*i] * c[2*i]; a[i] = b[2*i+1] * c[2*i+1] - b[2*i] * c[2*i];
d[i] = b[2*i] * c[2*i+1] + b[2*i+1] * c[2*i]; d[i] = b[2*i] * c[2*i+1] + b[2*i+1] * c[2*i];
...@@ -99,3 +99,4 @@ foo (int n) ...@@ -99,3 +99,4 @@ foo (int n)
} }
/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
...@@ -13,7 +13,7 @@ int foo () ...@@ -13,7 +13,7 @@ int foo ()
short c[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; short c[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
/* Not vetorizable yet (strided access pattern). */ /* Not vectorizable yet (strided access pattern). */
for (i = 0; i < N/2; i++) for (i = 0; i < N/2; i++)
{ {
a[i] = b[2*i+1] * c[2*i+1] - b[2*i] * c[2*i]; a[i] = b[2*i+1] * c[2*i+1] - b[2*i] * c[2*i];
......
...@@ -12,7 +12,7 @@ int main1 () ...@@ -12,7 +12,7 @@ int main1 ()
int ic[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45}; int ic[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45};
int ib[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45}; int ib[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45};
/* Not vetorizable yet (integer mult). */ /* Not vectorizable yet (integer mult). */
for (i = 0; i < N; i++) for (i = 0; i < N; i++)
{ {
ia[i] = ib[i] * ic[i]; ia[i] = ib[i] * ic[i];
......
...@@ -15,7 +15,7 @@ int main1 () ...@@ -15,7 +15,7 @@ int main1 ()
short sc[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45}; short sc[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45};
short sb[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45}; short sb[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45};
/* Not vetorizable yet (multiple types with different nunits in vector). */ /* Not vectorizable yet (multiple types with different nunits in vector). */
for (i = 0; i < N; i++) for (i = 0; i < N; i++)
{ {
ia[i] = ib[i] + ic[i]; ia[i] = ib[i] + ic[i];
......
...@@ -37,3 +37,4 @@ int main (void) ...@@ -37,3 +37,4 @@ int main (void)
} }
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_max } } } */ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_max } } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
...@@ -11,7 +11,7 @@ int main1 () ...@@ -11,7 +11,7 @@ int main1 ()
int ia[N]; int ia[N];
/* Not vetorizable yet (induction). */ /* Not vectorizable yet (induction). */
for ( i = 0; i < N; i++) { for ( i = 0; i < N; i++) {
ia[i] = i; ia[i] = i;
} }
......
...@@ -11,7 +11,7 @@ int main1 () ...@@ -11,7 +11,7 @@ int main1 ()
int a[N]; int a[N];
int b[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45}; int b[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45};
/* Not vetorizable yet (reverse access and forward access). */ /* Not vectorizable yet (reverse access and forward access). */
for (i = N; i > 0; i--) for (i = N; i > 0; i--)
{ {
a[N-i] = b[i-1]; a[N-i] = b[i-1];
......
...@@ -13,7 +13,7 @@ int main1 () ...@@ -13,7 +13,7 @@ int main1 ()
float c[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; float c[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
float diff; float diff;
/* Not vetorizable yet (reduction). */ /* Not vectorizable yet (reduction). */
diff = 0; diff = 0;
for (i = 0; i < N; i++) { for (i = 0; i < N; i++) {
diff += (b[i] - c[i]); diff += (b[i] - c[i]);
......
...@@ -125,3 +125,4 @@ int main (void) ...@@ -125,3 +125,4 @@ int main (void)
} }
/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail vect_no_bitwise } } } */ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail vect_no_bitwise } } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
...@@ -124,3 +124,4 @@ int main (void) ...@@ -124,3 +124,4 @@ int main (void)
} }
/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail vect_no_bitwise } } } */ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail vect_no_bitwise } } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
...@@ -124,3 +124,4 @@ int main (void) ...@@ -124,3 +124,4 @@ int main (void)
} }
/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail vect_no_bitwise } } } */ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail vect_no_bitwise } } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
...@@ -34,3 +34,4 @@ int main (void) ...@@ -34,3 +34,4 @@ int main (void)
} }
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
...@@ -96,3 +96,4 @@ int main (void) ...@@ -96,3 +96,4 @@ int main (void)
} }
/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail vect_no_bitwise } } } */ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail vect_no_bitwise } } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
...@@ -124,4 +124,5 @@ int main (void) ...@@ -124,4 +124,5 @@ int main (void)
} }
/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail *-*-* } } } */ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail *-*-* } } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
...@@ -95,4 +95,5 @@ int main (void) ...@@ -95,4 +95,5 @@ int main (void)
} }
/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail *-*-* } } } */ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail *-*-* } } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
...@@ -124,4 +124,5 @@ int main (void) ...@@ -124,4 +124,5 @@ int main (void)
} }
/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail *-*-* } } } */ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail *-*-* } } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
...@@ -124,4 +124,5 @@ int main (void) ...@@ -124,4 +124,5 @@ int main (void)
} }
/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail *-*-* } } } */ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail *-*-* } } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
...@@ -50,3 +50,4 @@ int main (void) ...@@ -50,3 +50,4 @@ int main (void)
} }
/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
...@@ -35,4 +35,6 @@ int main (void) ...@@ -35,4 +35,6 @@ int main (void)
} }
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
...@@ -41,4 +41,5 @@ int main (void) ...@@ -41,4 +41,5 @@ int main (void)
} }
/* { 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" { xfail vect_no_align } } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail vect_no_align } } } */
/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
...@@ -38,4 +38,6 @@ int main (void) ...@@ -38,4 +38,6 @@ int main (void)
} }
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
...@@ -44,4 +44,6 @@ int main (void) ...@@ -44,4 +44,6 @@ int main (void)
} }
/* { 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" { xfail vect_no_align } } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail vect_no_align } } } */
/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
...@@ -46,6 +46,7 @@ int main (void) ...@@ -46,6 +46,7 @@ int main (void)
} }
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
...@@ -86,3 +86,5 @@ int main (void) ...@@ -86,3 +86,5 @@ int main (void)
} }
/* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" } } */
...@@ -35,3 +35,4 @@ int main (void) ...@@ -35,3 +35,4 @@ int main (void)
} }
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
...@@ -37,3 +37,5 @@ int main (void) ...@@ -37,3 +37,5 @@ int main (void)
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
...@@ -36,3 +36,4 @@ int main (void) ...@@ -36,3 +36,4 @@ int main (void)
} }
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
...@@ -45,3 +45,4 @@ int main (void) ...@@ -45,3 +45,4 @@ int main (void)
/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
...@@ -41,3 +41,5 @@ int main (void) ...@@ -41,3 +41,5 @@ int main (void)
} }
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
...@@ -56,3 +56,4 @@ int main (void) ...@@ -56,3 +56,4 @@ int main (void)
/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { xfail *-*-* } } } */ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { xfail *-*-* } } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
...@@ -36,3 +36,4 @@ int main (void) ...@@ -36,3 +36,4 @@ int main (void)
} }
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
...@@ -50,3 +50,4 @@ int main (void) ...@@ -50,3 +50,4 @@ int main (void)
} }
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"} } */ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"} } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
...@@ -51,3 +51,4 @@ int main (void) ...@@ -51,3 +51,4 @@ 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" { xfail *-*-* } } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
...@@ -53,3 +53,4 @@ int main (void) ...@@ -53,3 +53,4 @@ int main (void)
} }
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"} } */ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"} } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
...@@ -54,3 +54,4 @@ int main (void) ...@@ -54,3 +54,4 @@ int main (void)
} }
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
...@@ -55,3 +55,5 @@ int main (void) ...@@ -55,3 +55,5 @@ int main (void)
} }
/* { 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" { xfail vect_no_align } } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } } */
/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail vect_no_align } } } */
...@@ -50,6 +50,5 @@ int main (void) ...@@ -50,6 +50,5 @@ int main (void)
return 0; return 0;
} }
/* This fails to vectorize for 64-bit powerpc but there's no way to
specify that in an xfail list. */
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
...@@ -52,3 +52,4 @@ int main (void) ...@@ -52,3 +52,4 @@ 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" { xfail *-*-* } } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
...@@ -53,3 +53,5 @@ int main (void) ...@@ -53,3 +53,5 @@ int main (void)
} }
/* { 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" { xfail vect_no_align } } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } } */
/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
...@@ -52,3 +52,4 @@ int main (void) ...@@ -52,3 +52,4 @@ int main (void)
} }
/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
...@@ -50,3 +50,5 @@ int main (void) ...@@ -50,3 +50,5 @@ int main (void)
} }
/* { 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" { xfail vect_no_align } } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } } */
/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail vect_no_align } } } */
...@@ -52,3 +52,5 @@ int main (void) ...@@ -52,3 +52,5 @@ int main (void)
} }
/* { 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" { xfail vect_no_align } } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } } */
/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
...@@ -51,3 +51,5 @@ int main (void) ...@@ -51,3 +51,5 @@ int main (void)
} }
/* { 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" { xfail vect_no_align } } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } } */
/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail vect_no_align } } } */
...@@ -51,3 +51,5 @@ int main (void) ...@@ -51,3 +51,5 @@ int main (void)
} }
/* { 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" { xfail vect_no_align } } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } } */
/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
...@@ -52,3 +52,5 @@ int main (void) ...@@ -52,3 +52,5 @@ int main (void)
} }
/* { 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" { xfail vect_no_align } } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } } */
/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail vect_no_align } } } */
...@@ -53,5 +53,6 @@ int main (void) ...@@ -53,5 +53,6 @@ int main (void)
} }
/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
...@@ -52,3 +52,5 @@ int main (void) ...@@ -52,3 +52,5 @@ int main (void)
} }
/* { 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" { xfail vect_no_align } } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } } */
/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
...@@ -63,3 +63,4 @@ int main (void) ...@@ -63,3 +63,4 @@ int main (void)
} }
/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
...@@ -13,7 +13,7 @@ int main1 () ...@@ -13,7 +13,7 @@ int main1 ()
int ic[N][N][3][13]; int ic[N][N][3][13];
int id[N][N][N]; int id[N][N][N];
/* Multidimensional array. Not aligned: not vectorizable. */ /* Multidimensional array. Not aligned: vectorizable. */
for (i = 0; i < N; i++) for (i = 0; i < N; i++)
{ {
for (j = 0; j < N; j++) for (j = 0; j < N; j++)
...@@ -31,7 +31,7 @@ int main1 () ...@@ -31,7 +31,7 @@ int main1 ()
} }
} }
/* Multidimensional array. Not aligned: not vectorizable. */ /* Multidimensional array. Not aligned: vectorizable. */
for (i = 0; i < N; i++) for (i = 0; i < N; i++)
{ {
for (j = 0; j < N; j++) for (j = 0; j < N; j++)
...@@ -81,3 +81,5 @@ int main (void) ...@@ -81,3 +81,5 @@ int main (void)
} }
/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" } } */
...@@ -79,3 +79,4 @@ int main (void) ...@@ -79,3 +79,4 @@ int main (void)
} }
/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
...@@ -77,3 +77,5 @@ int main (void) ...@@ -77,3 +77,5 @@ int main (void)
} }
/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
...@@ -42,3 +42,4 @@ int main (void) ...@@ -42,3 +42,4 @@ 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" { xfail *-*-* } } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
...@@ -85,3 +85,5 @@ int main (void) ...@@ -85,3 +85,5 @@ int main (void)
} }
/* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" } } */
...@@ -112,3 +112,5 @@ int main (void) ...@@ -112,3 +112,5 @@ int main (void)
} }
/* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" } } */
...@@ -47,3 +47,4 @@ int main (void) ...@@ -47,3 +47,4 @@ int main (void)
/* Fails for targets that don't vectorize PLUS. */ /* Fails for targets that don't vectorize PLUS. */
/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { xfail alpha*-*-* } } } */ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { xfail alpha*-*-* } } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
#include "tree-vect.h"
#define N 16
struct s{
int m;
int n[N][N][N];
};
struct test1{
struct s a; /* array a.n is unaligned */
int b;
int c;
struct s e[N]; /* array e.n is aligned */
};
int main1 ()
{
int i,j;
struct test1 tmp1;
for (i = 0; i < N; i++)
for (j = 3; j < N-3; j++)
{
tmp1.e[i].n[1][2][j] = 8;
}
/* check results: */
for (i = 0; i < N; i++)
for (j = 3; j < N-3; j++)
{
if (tmp1.e[i].n[1][2][j] != 8)
abort ();
}
/* not consecutive */
for (i = 0; i < N; i++)
for (j = 3; j < N-3; j++)
{
tmp1.e[j].n[1][2][j] = 8;
}
/* check results: */
for (i = 0; i < N; i++)
for (j = 3; j < N-3; j++)
{
if (tmp1.e[j].n[1][2][j] != 8)
abort ();
}
return 0;
}
int main (void)
{
check_vect ();
return main1 ();
}
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
#include "tree-vect.h"
#define N 16
/* unaligned load. */
int main1 ()
{
int i;
unsigned ia[N];
unsigned ib[N+1] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 1, 2};
for (i = 2; i < N+1; i++)
{
ia[ib[i]] = 0;
}
/* check results: */
for (i = 2; i < N+1; i++)
{
if (ia[ib[i]] != 0)
abort();
}
return 0;
}
int main (void)
{
check_vect ();
return main1 ();
}
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail *-*-* } } } */
...@@ -41,4 +41,6 @@ int main (void) ...@@ -41,4 +41,6 @@ int main (void)
} }
/* { 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" { xfail vect_no_align } } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail vect_no_align } } } */
/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
...@@ -37,3 +37,4 @@ int main (void) ...@@ -37,3 +37,4 @@ int main (void)
} }
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
...@@ -41,3 +41,4 @@ int main (void) ...@@ -41,3 +41,4 @@ int main (void)
} }
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
...@@ -41,4 +41,5 @@ int main (void) ...@@ -41,4 +41,5 @@ int main (void)
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
...@@ -68,4 +68,5 @@ int main (void) ...@@ -68,4 +68,5 @@ int main (void)
/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
...@@ -40,3 +40,5 @@ int main (void) ...@@ -40,3 +40,5 @@ int main (void)
} }
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail lp64_or_vect_no_align } } } */ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail lp64_or_vect_no_align } } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail lp64_or_vect_no_align } } } */
/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
...@@ -41,3 +41,5 @@ int main (void) ...@@ -41,3 +41,5 @@ int main (void)
} }
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail lp64_or_vect_no_align } } } */ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail lp64_or_vect_no_align } } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail lp64_or_vect_no_align } } } */
/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
...@@ -43,3 +43,5 @@ int main (void) ...@@ -43,3 +43,5 @@ int main (void)
} }
/* { 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" { xfail vect_no_align } } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } } */
/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
...@@ -47,3 +47,5 @@ int main (void) ...@@ -47,3 +47,5 @@ int main (void)
/* Fails for targets that don't vectorize PLUS. */ /* Fails for targets that don't vectorize PLUS. */
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail alpha*-*-* } } } */ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail alpha*-*-* } } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
...@@ -51,3 +51,5 @@ int main (void) ...@@ -51,3 +51,5 @@ int main (void)
/* Fails for targets that don't vectorize PLUS. */ /* Fails for targets that don't vectorize PLUS. */
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail alpha*-*-* } } } */ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail alpha*-*-* } } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail alpha*-*-* } } } */
...@@ -51,3 +51,5 @@ int main (void) ...@@ -51,3 +51,5 @@ int main (void)
/* Fails for targets that don't vectorize PLUS. */ /* Fails for targets that don't vectorize PLUS. */
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail alpha*-*-* } } } */ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail alpha*-*-* } } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail alpha*-*-* } } } */
...@@ -44,3 +44,5 @@ int main (void) ...@@ -44,3 +44,5 @@ int main (void)
} }
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
...@@ -213,3 +213,5 @@ int main (void) ...@@ -213,3 +213,5 @@ int main (void)
} }
/* { dg-final { scan-tree-dump-times "vectorized 10 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "vectorized 10 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
...@@ -89,15 +89,7 @@ foo (int n) ...@@ -89,15 +89,7 @@ foo (int n)
char block[N][N]; char block[N][N];
/* Test 1 - unknown loop bound. */ /* Test 1 - type cast. */
for (i = 0; i < n; i++)
{
a[i] = b[i];
}
fbar (a);
/* Test 2 - type cast. */
for (i = 0; i < N; i++) for (i = 0; i < N; i++)
{ {
ia[i] = (int) sb[i]; ia[i] = (int) sb[i];
...@@ -105,7 +97,7 @@ foo (int n) ...@@ -105,7 +97,7 @@ foo (int n)
fbar (a); fbar (a);
/* Test 3 - strided access pattern. */ /* Test 2 - strided access pattern. */
for (i = 0; i < N/2; i++) for (i = 0; i < N/2; i++)
{ {
a[i] = b[2*i+1] * c[2*i+1] - b[2*i] * c[2*i]; a[i] = b[2*i+1] * c[2*i+1] - b[2*i] * c[2*i];
...@@ -114,7 +106,7 @@ foo (int n) ...@@ -114,7 +106,7 @@ foo (int n)
fbar (a); fbar (a);
/* Test 4 - no target support for integer mult. */ /* Test 3 - no target support for integer mult. */
for (i = 0; i < N; i++) for (i = 0; i < N; i++)
{ {
ia[i] = ib[i] * ic[i]; ia[i] = ib[i] * ic[i];
...@@ -122,7 +114,7 @@ foo (int n) ...@@ -122,7 +114,7 @@ foo (int n)
ibar (ia); ibar (ia);
/* Test 5 - two types with different nunits in vector. */ /* Test 4 - two types with different nunits in vector. */
for (i = 0; i < N; i++) for (i = 0; i < N; i++)
{ {
ia[i] = ib[i] + ic[i]; ia[i] = ib[i] + ic[i];
...@@ -132,7 +124,7 @@ foo (int n) ...@@ -132,7 +124,7 @@ foo (int n)
sbar (sa); sbar (sa);
/* Test 6 - too conservative dependence test. */ /* Test 5 - too conservative dependence test. */
for (i = 0; i < N; i++){ for (i = 0; i < N; i++){
a[i] = b[i] + c[i]; a[i] = b[i] + c[i];
a[i+1] = b[i] + c[i]; a[i+1] = b[i] + c[i];
...@@ -140,14 +132,14 @@ foo (int n) ...@@ -140,14 +132,14 @@ foo (int n)
fbar (a); fbar (a);
/* Test 7 - condition in loop. */ /* Test 6 - condition in loop. */
for (i = 0; i < N; i++){ for (i = 0; i < N; i++){
a[i] = (b[i] > 0 ? b[i] : 0); a[i] = (b[i] > 0 ? b[i] : 0);
} }
fbar (a); fbar (a);
/* Test 8 - cross-iteration cycle. */ /* Test 7 - cross-iteration cycle. */
diff = 0; diff = 0;
for (i = 0; i < N; i++) { for (i = 0; i < N; i++) {
diff += (cb[i] - cc[i]); diff += (cb[i] - cc[i]);
...@@ -155,7 +147,7 @@ foo (int n) ...@@ -155,7 +147,7 @@ foo (int n)
ibar (&diff); ibar (&diff);
/* Test 9 - outer-loop not attempted; inner-loop has cross /* Test 8 - outer-loop not attempted; inner-loop has cross
iteration cycle and multi-dimensional arrays. */ iteration cycle and multi-dimensional arrays. */
diff = 0; diff = 0;
for (i = 0; i < N; i++) { for (i = 0; i < N; i++) {
...@@ -166,14 +158,14 @@ foo (int n) ...@@ -166,14 +158,14 @@ foo (int n)
ibar (&diff); ibar (&diff);
/* Test 10 - induction. */ /* Test 9 - induction. */
for ( i = 0; i < N; i++) { for ( i = 0; i < N; i++) {
a[i] = i; a[i] = i;
} }
fbar (a); fbar (a);
/* Test 11 - reverse access and forward access. */ /* Test 10 - reverse access and forward access. */
for (i = N; i > 0; i--) for (i = N; i > 0; i--)
{ {
a[N-i] = b[i-1]; a[N-i] = b[i-1];
...@@ -189,5 +181,4 @@ foo (int n) ...@@ -189,5 +181,4 @@ foo (int n)
} }
/* { dg-final { scan-tree-dump-times "vectorized " 3 "vect"} } */ /* { dg-final { scan-tree-dump-times "vectorized " 3 "vect"} } */
/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 2 "vect"} } */ /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 3 "vect"} } */
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
...@@ -4415,7 +4415,11 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo) ...@@ -4415,7 +4415,11 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo)
{ {
struct data_reference *dr = VARRAY_GENERIC_PTR (loop_write_datarefs, i); struct data_reference *dr = VARRAY_GENERIC_PTR (loop_write_datarefs, i);
if (dr == LOOP_VINFO_UNALIGNED_DR (loop_vinfo)) if (dr == LOOP_VINFO_UNALIGNED_DR (loop_vinfo))
DR_MISALIGNMENT (dr) = 0; {
DR_MISALIGNMENT (dr) = 0;
if (vect_debug_details (loop) || vect_debug_stats (loop))
fprintf (dump_file, "Alignment of access forced using peeling.");
}
else else
DR_MISALIGNMENT (dr) = -1; DR_MISALIGNMENT (dr) = -1;
} }
...@@ -4423,7 +4427,11 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo) ...@@ -4423,7 +4427,11 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo)
{ {
struct data_reference *dr = VARRAY_GENERIC_PTR (loop_read_datarefs, i); struct data_reference *dr = VARRAY_GENERIC_PTR (loop_read_datarefs, i);
if (dr == LOOP_VINFO_UNALIGNED_DR (loop_vinfo)) if (dr == LOOP_VINFO_UNALIGNED_DR (loop_vinfo))
DR_MISALIGNMENT (dr) = 0; {
DR_MISALIGNMENT (dr) = 0;
if (vect_debug_details (loop) || vect_debug_stats (loop))
fprintf (dump_file, "Alignment of access forced using peeling.");
}
else else
DR_MISALIGNMENT (dr) = -1; DR_MISALIGNMENT (dr) = -1;
} }
...@@ -4481,6 +4489,9 @@ vect_analyze_data_refs_alignment (loop_vec_info loop_vinfo) ...@@ -4481,6 +4489,9 @@ vect_analyze_data_refs_alignment (loop_vec_info loop_vinfo)
fprintf (dump_file, "not vectorized: unsupported unaligned load."); fprintf (dump_file, "not vectorized: unsupported unaligned load.");
return false; return false;
} }
if (supportable_dr_alignment != dr_aligned
&& (vect_debug_details (loop) || vect_debug_stats (loop)))
fprintf (dump_file, "Vectorizing an unaligned access.");
} }
for (i = 0; i < VARRAY_ACTIVE_SIZE (loop_write_datarefs); i++) for (i = 0; i < VARRAY_ACTIVE_SIZE (loop_write_datarefs); i++)
{ {
...@@ -4492,6 +4503,9 @@ vect_analyze_data_refs_alignment (loop_vec_info loop_vinfo) ...@@ -4492,6 +4503,9 @@ vect_analyze_data_refs_alignment (loop_vec_info loop_vinfo)
fprintf (dump_file, "not vectorized: unsupported unaligned store."); fprintf (dump_file, "not vectorized: unsupported unaligned store.");
return false; return false;
} }
if (supportable_dr_alignment != dr_aligned
&& (vect_debug_details (loop) || vect_debug_stats (loop)))
fprintf (dump_file, "Vectorizing an unaligned access.");
} }
return true; return true;
......
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