From accde4cfac29504186f6c6f2cffb7680281cbd54 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Mon, 27 Dec 2004 01:35:54 -0800 Subject: [PATCH] i386.h (UNITS_PER_SIMD_WORD): Don't use MMX/3DNOW. * config/i386/i386.h (UNITS_PER_SIMD_WORD): Don't use MMX/3DNOW. * gcc.dg/vect/vect-27a.c, gcc.dg/vect/vect-29a.c, gcc.dg/vect/vect-48a.c, gcc.dg/vect/vect-56a.c, gcc.dg/vect/vect-72a.c, gcc.dg/vect/vect-77a.c: Remove. From-SVN: r92637 --- gcc/ChangeLog | 4 ++ gcc/config/i386/i386.h | 5 ++- gcc/testsuite/ChangeLog | 6 +++ gcc/testsuite/gcc.dg/vect/vect-27a.c | 45 ---------------------- gcc/testsuite/gcc.dg/vect/vect-29a.c | 48 ------------------------ gcc/testsuite/gcc.dg/vect/vect-48a.c | 56 ---------------------------- gcc/testsuite/gcc.dg/vect/vect-56a.c | 54 --------------------------- gcc/testsuite/gcc.dg/vect/vect-72a.c | 46 ----------------------- gcc/testsuite/gcc.dg/vect/vect-77a.c | 46 ----------------------- 9 files changed, 13 insertions(+), 297 deletions(-) delete mode 100644 gcc/testsuite/gcc.dg/vect/vect-27a.c delete mode 100644 gcc/testsuite/gcc.dg/vect/vect-29a.c delete mode 100644 gcc/testsuite/gcc.dg/vect/vect-48a.c delete mode 100644 gcc/testsuite/gcc.dg/vect/vect-56a.c delete mode 100644 gcc/testsuite/gcc.dg/vect/vect-72a.c delete mode 100644 gcc/testsuite/gcc.dg/vect/vect-77a.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6d26e5bc3e3..e84e90aeeaa 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2004-12-27 Richard Henderson + + * config/i386/i386.h (UNITS_PER_SIMD_WORD): Don't use MMX/3DNOW. + 2004-12-26 Richard Henderson * config/i386/i386.c (ix86_gimplify_va_arg): Also pass the result diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index d4d7f1ca420..9d86b59453e 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -1085,8 +1085,9 @@ do { \ ((MODE) == DImode || (MODE) == V8QImode || (MODE) == V4HImode \ || (MODE) == V2SImode || (MODE) == SImode) -#define UNITS_PER_SIMD_WORD \ - (TARGET_SSE ? 16 : TARGET_MMX || TARGET_3DNOW ? 8 : 0) +/* ??? No autovectorization into MMX or 3DNOW until we can reliably + place emms and femms instructions. */ +#define UNITS_PER_SIMD_WORD (TARGET_SSE ? 16 : 0) #define VALID_FP_MODE_P(MODE) \ ((MODE) == SFmode || (MODE) == DFmode || (MODE) == XFmode \ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4630b0626ea..4608c672401 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2004-12-27 Richard Henderson + + * gcc.dg/vect/vect-27a.c, gcc.dg/vect/vect-29a.c, + gcc.dg/vect/vect-48a.c, gcc.dg/vect/vect-56a.c, + gcc.dg/vect/vect-72a.c, gcc.dg/vect/vect-77a.c: Remove. + 2004-12-26 Richard Henderson * gcc.dg/compat/compat-common.h (CINT, CDBL): Use multiplication diff --git a/gcc/testsuite/gcc.dg/vect/vect-27a.c b/gcc/testsuite/gcc.dg/vect/vect-27a.c deleted file mode 100644 index 2c6d4bd1c48..00000000000 --- a/gcc/testsuite/gcc.dg/vect/vect-27a.c +++ /dev/null @@ -1,45 +0,0 @@ -/* { dg-require-effective-target vect_int } */ -/* { dg-options "-O2 -ftree-vectorize -fdump-tree-vect-stats -mmmx" { target i?86-*-* x86_64-*-* } } */ - -#include -#include "tree-vect.h" - -#define N 128 - -/* unaligned load. */ - -int main1 () -{ - int i; - int ia[N]; - int ib[N+1]; - - for (i=0; i < N; i++) - { - ib[i] = i; - } - - for (i = 1; i <= N; i++) - { - ia[i-1] = ib[i]; - } - - /* check results: */ - for (i = 1; i <= N; i++) - { - if (ia[i-1] != ib[i]) - abort (); - } - - return 0; -} - -int main (void) -{ - check_vect (); - - return main1 (); -} - -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail sparc*-*-* } } } */ - diff --git a/gcc/testsuite/gcc.dg/vect/vect-29a.c b/gcc/testsuite/gcc.dg/vect/vect-29a.c deleted file mode 100644 index d63b633da86..00000000000 --- a/gcc/testsuite/gcc.dg/vect/vect-29a.c +++ /dev/null @@ -1,48 +0,0 @@ -/* { dg-require-effective-target vect_int } */ -/* { dg-options "-O2 -ftree-vectorize -fdump-tree-vect-stats -mmmx" { target i?86-*-* x86_64-*-* } } */ - -#include -#include "tree-vect.h" - -#define N 128 -#define OFF 3 - -/* unaligned load. */ - -int main1 (int off) -{ - int i; - int ia[N]; - int ib[N+OFF]; - - for (i = 0; i < N+OFF; i++) - { - ib[i] = i; - } - - for (i = 0; i < N; i++) - { - ia[i] = ib[i+off]; - } - - /* check results: */ - for (i = 0; i < N; i++) - { - if (ia[i] != ib[i+off]) - abort (); - } - - return 0; -} - -int main (void) -{ - check_vect (); - - main1 (0); /* aligned */ - main1 (OFF); /* unaligned */ - return 0; -} - -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail sparc*-*-* } } } */ - diff --git a/gcc/testsuite/gcc.dg/vect/vect-48a.c b/gcc/testsuite/gcc.dg/vect/vect-48a.c deleted file mode 100644 index 401da6c998a..00000000000 --- a/gcc/testsuite/gcc.dg/vect/vect-48a.c +++ /dev/null @@ -1,56 +0,0 @@ -/* { dg-require-effective-target vect_int } */ -/* { dg-options "-O2 -ftree-vectorize -fdump-tree-vect-stats -mmmx" { target i?86-*-* x86_64-*-* } } */ - -#include -#include "tree-vect.h" - -#define N 256 - -typedef short ashort __attribute__ ((__aligned__(16))); - -void bar (short *pa, short *pb, short *pc) -{ - int i; - - /* check results: */ - for (i = 0; i < N; i++) - { - if (pa[i] != (pb[i] + pc[i])) - abort (); - } - - return; -} - - -int -main1 (ashort * __restrict__ pa, short * __restrict__ pb, short * __restrict__ pc) -{ - int i; - - for (i = 0; i < N; i++) - { - pa[i] = pb[i] + pc[i]; - } - - bar (pa,pb,pc); - - return 0; -} - -int main (void) -{ - int i; - ashort a[N]; - ashort b[N+1] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60}; - ashort c[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; - - check_vect (); - - main1 (a,b,c); - main1 (a,&b[1],c); - - return 0; -} - -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail sparc*-*-* alpha*-*-* } } } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-56a.c b/gcc/testsuite/gcc.dg/vect/vect-56a.c deleted file mode 100644 index 1cd117eb0b3..00000000000 --- a/gcc/testsuite/gcc.dg/vect/vect-56a.c +++ /dev/null @@ -1,54 +0,0 @@ -/* { dg-require-effective-target vect_int } */ -/* { dg-options "-O2 -ftree-vectorize -fdump-tree-vect-stats -mmmx" { target i?86-*-* x86_64-*-* } } */ - -#include -#include "tree-vect.h" - -#define N 256 - -typedef short ashort __attribute__ ((__aligned__(16))); - -void bar (ashort *pa, ashort *pb, ashort *pc) -{ - int i; - - /* check results: */ - for (i = 0; i < N/2; i++) - { - if (pa[i] != (pb[i+1] + pc[i+1])) - abort (); - } - - return; -} - - -int -main1 (ashort * __restrict__ pa, ashort * __restrict__ pb, ashort * __restrict__ pc) -{ - int i; - - for (i = 0; i < N/2; i++) - { - pa[i] = pb[i+1] + pc[i+1]; - } - - bar (pa,pb,pc); - - return 0; -} - -int main (void) -{ - int i; - ashort a[N]; - ashort b[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; - ashort c[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; - - check_vect (); - - main1 (a,b,c); - return 0; -} - -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail sparc*-*-* alpha*-*-* } } } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-72a.c b/gcc/testsuite/gcc.dg/vect/vect-72a.c deleted file mode 100644 index 64a584dd93c..00000000000 --- a/gcc/testsuite/gcc.dg/vect/vect-72a.c +++ /dev/null @@ -1,46 +0,0 @@ -/* { dg-require-effective-target vect_int } */ -/* { dg-options "-O2 -ftree-vectorize -fdump-tree-vect-stats -mmmx" { target i?86-*-* x86_64-*-* } } */ - -#include -#include "tree-vect.h" - -#define N 128 - -/* unaligned load. */ - -int main1 () -{ - int i; - char ia[N]; - char ib[N+1]; - - for (i=0; i < N+1; i++) - { - ib[i] = i; - } - - for (i = 1; i < N+1; i++) - { - ia[i-1] = ib[i]; - } - - /* check results: */ - for (i = 1; i <= N; i++) - { - if (ia[i-1] != ib[i]) - abort (); - } - - return 0; -} - -int main (void) -{ - check_vect (); - - return main1 (); -} - -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail sparc*-*-* } } } */ - - diff --git a/gcc/testsuite/gcc.dg/vect/vect-77a.c b/gcc/testsuite/gcc.dg/vect/vect-77a.c deleted file mode 100644 index 5e10d28c976..00000000000 --- a/gcc/testsuite/gcc.dg/vect/vect-77a.c +++ /dev/null @@ -1,46 +0,0 @@ -/* { dg-require-effective-target vect_int } */ -/* { dg-options "-O2 -ftree-vectorize -fdump-tree-vect-stats -mmmx" { target i?86-*-* x86_64-*-* } } */ - -#include -#include "tree-vect.h" - -#define N 8 -#define OFF 8 - -typedef int aint __attribute__ ((__aligned__(16))); - -aint ib[N+OFF] = {0, 1, 3, 5, 7, 11, 13, 17, 0, 2, 6, 10, 14, 22, 26, 34}; - -int main1 (aint *ib, int off) -{ - int i; - int ia[N]; - - for (i = 0; i < N; i++) - { - ia[i] = ib[i+off]; - } - - - /* check results: */ - for (i = 0; i < N; i++) - { - if (ia[i] != ib[i+off]) - abort (); - } - - return 0; -} - -int main (void) -{ - check_vect (); - - main1 (ib, 8); - 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" { xfail sparc*-*-* alpha*-*-* } } } */ -- 2.30.2