From: irar Date: Tue, 24 May 2005 11:56:58 +0000 (+0000) Subject: * gcc.dg/vect/vect-none.c: Split into vect-106.c, vect-107.c, X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=commitdiff_plain;h=417a0d6ce7b147cefce96e7cf83b5fe47b1d37fd * gcc.dg/vect/vect-none.c: Split into vect-106.c, vect-107.c, vect-108.c, vect-109.c, vect-110.c, vect-111.c, vect-112.c, vect-113.c, vect-114.c. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@100102 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ac18364e904..b742080db94 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2005-05-24 Ira Rosen + + * gcc.dg/vect/vect-none.c: Split into vect-106.c, vect-107.c, + vect-108.c, vect-109.c, vect-110.c, vect-111.c, vect-112.c, + vect-113.c, vect-114.c. + 2005-05-23 Adam Nemet * gcc.dg/const-elim-1.c: Remove xfails. diff --git a/gcc/testsuite/gcc.dg/vect/vect-106.c b/gcc/testsuite/gcc.dg/vect/vect-106.c new file mode 100644 index 00000000000..43e43a6cd1f --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/vect-106.c @@ -0,0 +1,40 @@ +/* { dg-require-effective-target vect_int } */ + +#include +#include "tree-vect.h" + +#define N 16 + +int +main1 (void) +{ + int i; + short sb[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45}; + int ia[N]; + + /* Type cast. */ + for (i = 0; i < N; i++) + { + ia[i] = (int) sb[i]; + } + + + /* Check results. */ + for (i = 0; i < N; i++) + { + if (ia[i] != (int) sb[i]) + abort(); + } + + return 0; +} + +int main (void) +{ + check_vect (); + return main1 (); +} + +/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" } } */ +/* { dg-final { cleanup-tree-dump "vect" } } */ + diff --git a/gcc/testsuite/gcc.dg/vect/vect-107.c b/gcc/testsuite/gcc.dg/vect/vect-107.c new file mode 100644 index 00000000000..f8031afad11 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/vect-107.c @@ -0,0 +1,42 @@ +/* { dg-require-effective-target vect_float } */ + +#include +#include "tree-vect.h" + +#define N 16 + +int +main1 (void) +{ + int i; + float a[N]; + float b[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45}; + float c[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; + float d[N] = {0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30}; + + /* Strided access pattern. */ + for (i = 0; i < N/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]; + } + + /* Check results. */ + for (i = 0; i < N/2; i++) + { + if (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]) + abort(); + } + + return 0; +} + +int main (void) +{ + check_vect (); + return main1 (); +} + +/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" } } */ +/* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-108.c b/gcc/testsuite/gcc.dg/vect/vect-108.c new file mode 100644 index 00000000000..2fa61d02f09 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/vect-108.c @@ -0,0 +1,40 @@ +/* { dg-require-effective-target vect_int_mult } */ + +#include +#include "tree-vect.h" + +#define N 16 + +int +main1 (void) +{ + int i; + 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 ia[N]; + + /* This loop is vectorized on platforms that support vect_int_mult. */ + for (i = 0; i < N; i++) + { + ia[i] = ib[i] * ic[i]; + } + + /* Check results. */ + for (i = 0; i < N; i++) + { + if (ia[i] != ib[i] * ic[i]) + abort (); + } + + return 0; +} + +int main (void) +{ + check_vect (); + return main1 (); +} + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ +/* { dg-final { cleanup-tree-dump "vect" } } */ + diff --git a/gcc/testsuite/gcc.dg/vect/vect-109.c b/gcc/testsuite/gcc.dg/vect/vect-109.c new file mode 100644 index 00000000000..ba6b2cee3d6 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/vect-109.c @@ -0,0 +1,44 @@ +/* { dg-require-effective-target vect_int } */ + +#include +#include "tree-vect.h" + +#define N 16 + +int +main1 () +{ + int i; + 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 sa[N]; + 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 ia[N]; + + /* Two types with different nunits in vector. */ + for (i = 0; i < N; i++) + { + ia[i] = ib[i] + ic[i]; + sa[i] = sb[i] + sc[i]; + } + + /* Check results. */ + for (i = 0; i < N; i++) + { + if (ia[i] != ib[i] + ic[i] || sa[i] != sb[i] + sc[i]) + abort(); + } + + return 0; +} + +int main (void) +{ + check_vect (); + return main1 (); +} + +/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" } } */ +/* { dg-final { cleanup-tree-dump "vect" } } */ + diff --git a/gcc/testsuite/gcc.dg/vect/vect-110.c b/gcc/testsuite/gcc.dg/vect/vect-110.c new file mode 100644 index 00000000000..3fa4f414685 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/vect-110.c @@ -0,0 +1,40 @@ +/* { dg-require-effective-target vect_float } */ + +#include +#include "tree-vect.h" + +#define N 16 + +int +main1 (void) +{ + int i; + float a[N]; + float b[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45}; + float c[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; + + /* Too conservative dependence test. */ + for (i = 0; i < N - 1; i++){ + a[i] = b[i] + c[i]; + a[i+1] = b[i] + c[i]; + } + + /* Check results. */ + for (i = 0; i < N - 1; i++){ + if (a[i] != b[i] + c[i]) + abort (); + } + + return 0; +} + +int main (void) +{ + check_vect (); + return main1 (); +} + +/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" } } */ +/* { dg-final { cleanup-tree-dump "vect" } } */ + + diff --git a/gcc/testsuite/gcc.dg/vect/vect-111.c b/gcc/testsuite/gcc.dg/vect/vect-111.c new file mode 100644 index 00000000000..8fb3f72d95e --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/vect-111.c @@ -0,0 +1,38 @@ +/* { dg-require-effective-target vect_float } */ + +#include +#include "tree-vect.h" + +#define N 16 + +int +main1 (void) +{ + int i; + float a[N]; + float b[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45}; + + /* Condition in loop. */ + /* This loop is vectorized on platforms that support vect_condition. */ + for (i = 0; i < N; i++) + { + a[i] = (b[i] > 0 ? b[i] : 0); + } + + for (i = 0; i < N; i++) + { + if (a[i] != b[i]) + abort (); + } + return 0; +} + +int main (void) +{ + check_vect (); + return main1 (); +} + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target powerpc*-*-* } } } */ +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target i?86-*-* x86_64-*-* ia64-*-* } } } */ +/* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-112.c b/gcc/testsuite/gcc.dg/vect/vect-112.c new file mode 100644 index 00000000000..8363f302d2f --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/vect-112.c @@ -0,0 +1,38 @@ +/* { dg-require-effective-target vect_int } */ + +#include +#include "tree-vect.h" + +#define N 16 + +int +main1 (void) +{ + int i; + int diff = 0; + char cb[N] = {2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17}; + char cc[N] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}; + + /* Cross-iteration cycle. */ + diff = 0; + for (i = 0; i < N; i++) { + diff += (cb[i] - cc[i]); + } + + /* Check results. */ + if (diff != 16) + abort(); + + return 0; +} + +int main (void) +{ + check_vect (); + return main1 (); +} + +/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" } } */ +/* { dg-final { cleanup-tree-dump "vect" } } */ + + diff --git a/gcc/testsuite/gcc.dg/vect/vect-113.c b/gcc/testsuite/gcc.dg/vect/vect-113.c new file mode 100644 index 00000000000..e09a16b3655 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/vect-113.c @@ -0,0 +1,36 @@ +/* { dg-require-effective-target vect_float } */ + +#include +#include "tree-vect.h" + +#define N 16 + +int +main1 (void) +{ + int i; + float a[N]; + + /* Induction. */ + for ( i = 0; i < N; i++) + { + a[i] = i; + } + + for ( i = 0; i < N; i++) + { + if (a[i] != i) + abort (); + } + + return 0; +} + +int main (void) +{ + check_vect (); + return main1 (); +} + +/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" } } */ +/* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-114.c b/gcc/testsuite/gcc.dg/vect/vect-114.c new file mode 100644 index 00000000000..41ecd48680e --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/vect-114.c @@ -0,0 +1,39 @@ +/* { dg-require-effective-target vect_float } */ + +#include +#include "tree-vect.h" + +#define N 16 + +int +main1 (void) +{ + int i; + float a[N]; + float b[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45}; + + /* Reverse access and forward access. */ + for (i = N; i > 0; i--) + { + a[N-i] = b[i-1]; + } + + /* Check results. */ + for (i = 0; i 0 ? b[i] : 0); - } - fbar (a); - - - /* Test 7 - cross-iteration cycle. */ - diff = 0; - for (i = 0; i < N; i++) { - diff += (cb[i] - cc[i]); - } - ibar (&diff); - - - /* Test 8 - outer-loop not attempted; inner-loop has cross - iteration cycle and multi-dimensional arrays. */ - diff = 0; - for (i = 0; i < N; i++) { - for (i = 0; i < N; i++) { - diff += (image[i][j] - block[i][j]); - } - } - ibar (&diff); - - - /* Test 9 - induction. */ - for ( i = 0; i < N; i++) { - a[i] = i; - } - fbar (a); - - - /* Test 10 - reverse access and forward access. */ - for (i = N; i > 0; i--) - { - a[N-i] = b[i-1]; - } - /* check results: */ - for (i = 0; i