cvs diff: Diffing . Index: ChangeLog =================================================================== RCS file: /cvs/gcc/gcc/gcc/testsuite/ChangeLog,v retrieving revision 1.5498 diff -c -3 -p -r1.5498 ChangeLog *** ChangeLog 19 May 2005 07:37:25 -0000 1.5498 --- ChangeLog 22 May 2005 07:10:09 -0000 *************** *** 1,3 **** --- 1,9 ---- + 2005-05-22 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-19 Jakub Jelinek PR c++/21495 Index: gcc.dg/vect/vect-106.c =================================================================== RCS file: gcc.dg/vect/vect-106.c diff -N gcc.dg/vect/vect-106.c *** /dev/null 1 Jan 1970 00:00:00 -0000 --- gcc.dg/vect/vect-106.c 22 May 2005 07:10:13 -0000 *************** *** 0 **** --- 1,39 ---- + /* { 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" } } */ Index: gcc.dg/vect/vect-107.c =================================================================== RCS file: gcc.dg/vect/vect-107.c diff -N gcc.dg/vect/vect-107.c *** /dev/null 1 Jan 1970 00:00:00 -0000 --- gcc.dg/vect/vect-107.c 22 May 2005 07:10:13 -0000 *************** *** 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" } } */ Index: gcc.dg/vect/vect-108.c =================================================================== RCS file: gcc.dg/vect/vect-108.c diff -N gcc.dg/vect/vect-108.c *** /dev/null 1 Jan 1970 00:00:00 -0000 --- gcc.dg/vect/vect-108.c 22 May 2005 07:10:13 -0000 *************** *** 0 **** --- 1,40 ---- + /* { dg-require-effective-target vect_int } */ + + #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" { target powerpc*-*-* i?86-*-* x86_64-*-* ia64-*-* } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ + Index: gcc.dg/vect/vect-109.c =================================================================== RCS file: gcc.dg/vect/vect-109.c diff -N gcc.dg/vect/vect-109.c *** /dev/null 1 Jan 1970 00:00:00 -0000 --- gcc.dg/vect/vect-109.c 22 May 2005 07:10:13 -0000 *************** *** 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" } } */ + Index: gcc.dg/vect/vect-110.c =================================================================== RCS file: gcc.dg/vect/vect-110.c diff -N gcc.dg/vect/vect-110.c *** /dev/null 1 Jan 1970 00:00:00 -0000 --- gcc.dg/vect/vect-110.c 22 May 2005 07:10:13 -0000 *************** *** 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" } } */ + + Index: gcc.dg/vect/vect-111.c =================================================================== RCS file: gcc.dg/vect/vect-111.c diff -N gcc.dg/vect/vect-111.c *** /dev/null 1 Jan 1970 00:00:00 -0000 --- gcc.dg/vect/vect-111.c 22 May 2005 07:10:13 -0000 *************** *** 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" } } */ Index: gcc.dg/vect/vect-112.c =================================================================== RCS file: gcc.dg/vect/vect-112.c diff -N gcc.dg/vect/vect-112.c *** /dev/null 1 Jan 1970 00:00:00 -0000 --- gcc.dg/vect/vect-112.c 22 May 2005 07:10:13 -0000 *************** *** 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" } } */ + + Index: gcc.dg/vect/vect-113.c =================================================================== RCS file: gcc.dg/vect/vect-113.c diff -N gcc.dg/vect/vect-113.c *** /dev/null 1 Jan 1970 00:00:00 -0000 --- gcc.dg/vect/vect-113.c 22 May 2005 07:10:13 -0000 *************** *** 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" } } */ Index: gcc.dg/vect/vect-114.c =================================================================== RCS file: gcc.dg/vect/vect-114.c diff -N gcc.dg/vect/vect-114.c *** /dev/null 1 Jan 1970 00:00:00 -0000 --- gcc.dg/vect/vect-114.c 22 May 2005 07:10:13 -0000 *************** *** 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