diff options
author | Andrew Senkevich <andrew.senkevich@intel.com> | 2016-10-14 21:10:50 +0300 |
---|---|---|
committer | Andrew Senkevich <andrew.senkevich@intel.com> | 2016-10-14 21:10:50 +0300 |
commit | 264856cfcd4fc0abe29f7cb931cd091893565d79 (patch) | |
tree | 6224ff0d6103e938d5ff4db83ddb6db88666c148 | |
parent | 5976a49e6a2645194f18d6d1d42eb066cfbca478 (diff) | |
download | glibc-264856cfcd4fc0abe29f7cb931cd091893565d79.tar.gz glibc-264856cfcd4fc0abe29f7cb931cd091893565d79.tar.xz glibc-264856cfcd4fc0abe29f7cb931cd091893565d79.zip |
Don't compile do_test with -mavx/-mavx2/-mavx512.
Don't compile do_test (in sincos ABI tests) with -mavx, -mavx2 nor -mavx512 since they won't run on non-AVX machines. (cherry-picked from commit fe0cf8614836e2b08b802eb1f55abca75d558545)
-rw-r--r-- | ChangeLog | 63 | ||||
-rw-r--r-- | sysdeps/x86_64/fpu/Makefile | 56 | ||||
-rw-r--r-- | sysdeps/x86_64/fpu/test-double-libmvec-sincos-avx-main.c | 1 | ||||
-rw-r--r-- | sysdeps/x86_64/fpu/test-double-libmvec-sincos-avx2-main.c | 1 | ||||
-rw-r--r-- | sysdeps/x86_64/fpu/test-double-libmvec-sincos-avx512-main.c | 1 | ||||
-rw-r--r-- | sysdeps/x86_64/fpu/test-double-libmvec-sincos-main.c | 43 | ||||
-rw-r--r-- | sysdeps/x86_64/fpu/test-double-libmvec-sincos.c | 37 | ||||
-rw-r--r-- | sysdeps/x86_64/fpu/test-float-libmvec-sincosf-avx-main.c | 1 | ||||
-rw-r--r-- | sysdeps/x86_64/fpu/test-float-libmvec-sincosf-avx2-main.c | 1 | ||||
-rw-r--r-- | sysdeps/x86_64/fpu/test-float-libmvec-sincosf-avx512-main.c | 1 | ||||
-rw-r--r-- | sysdeps/x86_64/fpu/test-float-libmvec-sincosf-main.c | 42 | ||||
-rw-r--r-- | sysdeps/x86_64/fpu/test-float-libmvec-sincosf.c | 35 |
12 files changed, 204 insertions, 78 deletions
diff --git a/ChangeLog b/ChangeLog index 59f486c805..b80acd25c8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,66 @@ +2016-10-13 H.J. Lu <hjl.tools@gmail.com> + + [BZ #20384] + * sysdeps/x86_64/fpu/Makefile (extra-test-objs): Add + test-double-libmvec-sincos-avx-main.o, + test-double-libmvec-sincos-avx2-main.o, + test-double-libmvec-sincos-main.o, + test-float-libmvec-sincosf-avx-main.o, + test-float-libmvec-sincosf-avx2-main.o and + test-float-libmvec-sincosf-main.o. + test-float-libmvec-sincosf-avx512-main.o. + ($(objpfx)test-double-libmvec-sincos): Also link with + $(objpfx)test-double-libmvec-sincos-main.o. + ($(objpfx)test-double-libmvec-sincos-avx): Also link with + $(objpfx)test-double-libmvec-sincos-avx-main.o. + ($(objpfx)test-double-libmvec-sincos-avx2): Also link with + $(objpfx)test-double-libmvec-sincos-avx2-main.o. + ($(objpfx)test-float-libmvec-sincosf): Also link with + $(objpfx)test-float-libmvec-sincosf-main.o. + ($(objpfx)test-float-libmvec-sincosf-avx): Also link with + $(objpfx)test-float-libmvec-sincosf-avx2-main.o. + [$(config-cflags-avx512) == yes] (extra-test-objs): Add + test-double-libmvec-sincos-avx512-main.o and + ($(objpfx)test-double-libmvec-sincos-avx512): Also link with + $(objpfx)test-double-libmvec-sincos-avx512-main.o. + ($(objpfx)test-float-libmvec-sincosf-avx512): Also link with + $(objpfx)test-float-libmvec-sincosf-avx512-main.o. + (CFLAGS-test-double-libmvec-sincos.c): Removed. + (CFLAGS-test-float-libmvec-sincosf.c): Likewise. + (CFLAGS-test-double-libmvec-sincos-main.c): New. + (CFLAGS-test-double-libmvec-sincos-avx-main.c): Likewise. + (CFLAGS-test-double-libmvec-sincos-avx2-main.c): Likewise. + (CFLAGS-test-float-libmvec-sincosf-main.c): Likewise. + (CFLAGS-test-float-libmvec-sincosf-avx-main.c): Likewise. + (CFLAGS-test-float-libmvec-sincosf-avx2-main.c): Likewise. + (CFLAGS-test-float-libmvec-sincosf-avx512-main.c): Likewise. + (CFLAGS-test-double-libmvec-sincos-avx.c): Set to -DREQUIRE_AVX. + (CFLAGS-test-float-libmvec-sincosf-avx.c ): Likewise. + (CFLAGS-test-double-libmvec-sincos-avx2.c): Set to + -DREQUIRE_AVX2. + (CFLAGS-test-float-libmvec-sincosf-avx2.c ): Likewise. + (CFLAGS-test-double-libmvec-sincos-avx512.c): Set to + -DREQUIRE_AVX512F. + (CFLAGS-test-float-libmvec-sincosf-avx512.c): Likewise. + * sysdeps/x86_64/fpu/test-double-libmvec-sincos.c: Rewritten. + * sysdeps/x86_64/fpu/test-float-libmvec-sincosf.c: Likewise. + * sysdeps/x86_64/fpu/test-double-libmvec-sincos-avx-main.c: New + file. + * sysdeps/x86_64/fpu/test-double-libmvec-sincos-avx2-main.c: + Likewise. + * sysdeps/x86_64/fpu/test-double-libmvec-sincos-avx512-main.c: + Likewise. + * sysdeps/x86_64/fpu/test-double-libmvec-sincos-main.c: + Likewise. + * sysdeps/x86_64/fpu/test-float-libmvec-sincosf-avx-main.c: + Likewise. + * sysdeps/x86_64/fpu/test-float-libmvec-sincosf-avx2-main.c: + Likewise. + * sysdeps/x86_64/fpu/test-float-libmvec-sincosf-avx512-main.c: + Likewise. + * sysdeps/x86_64/fpu/test-float-libmvec-sincosf-main.c: + Likewise. + 2016-10-13 Andrew Senkevich <andrew.senkevich@intel.com> [BZ #20024] diff --git a/sysdeps/x86_64/fpu/Makefile b/sysdeps/x86_64/fpu/Makefile index d630c190e1..bfd6de1949 100644 --- a/sysdeps/x86_64/fpu/Makefile +++ b/sysdeps/x86_64/fpu/Makefile @@ -34,34 +34,50 @@ libmvec-tests += double-vlen2 double-vlen4 double-vlen4-avx2 \ tests += test-double-libmvec-sincos test-double-libmvec-sincos-avx \ test-double-libmvec-sincos-avx2 test-float-libmvec-sincosf \ test-float-libmvec-sincosf-avx test-float-libmvec-sincosf-avx2 +extra-test-objs += test-double-libmvec-sincos-avx-main.o \ + test-double-libmvec-sincos-avx2-main.o \ + test-double-libmvec-sincos-main.o \ + test-float-libmvec-sincosf-avx-main.o \ + test-float-libmvec-sincosf-avx2-main.o \ + test-float-libmvec-sincosf-main.o $(objpfx)test-double-libmvec-sincos: \ - $(objpfx)test-double-libmvec-sincos.o $(objpfx)init-arch.o $(libmvec) + $(objpfx)test-double-libmvec-sincos.o \ + $(objpfx)test-double-libmvec-sincos-main.o $(objpfx)init-arch.o $(libmvec) $(objpfx)test-double-libmvec-sincos-avx: \ - $(objpfx)test-double-libmvec-sincos-avx.o $(objpfx)init-arch.o $(libmvec) + $(objpfx)test-double-libmvec-sincos-avx.o \ + $(objpfx)test-double-libmvec-sincos-avx-main.o $(objpfx)init-arch.o $(libmvec) $(objpfx)test-double-libmvec-sincos-avx2: \ - $(objpfx)test-double-libmvec-sincos-avx2.o $(objpfx)init-arch.o $(libmvec) + $(objpfx)test-double-libmvec-sincos-avx2.o \ + $(objpfx)test-double-libmvec-sincos-avx2-main.o $(objpfx)init-arch.o $(libmvec) $(objpfx)test-float-libmvec-sincosf: \ - $(objpfx)test-float-libmvec-sincosf.o $(objpfx)init-arch.o $(libmvec) + $(objpfx)test-float-libmvec-sincosf.o \ + $(objpfx)test-float-libmvec-sincosf-main.o $(objpfx)init-arch.o $(libmvec) $(objpfx)test-float-libmvec-sincosf-avx: \ - $(objpfx)test-float-libmvec-sincosf-avx.o $(objpfx)init-arch.o $(libmvec) + $(objpfx)test-float-libmvec-sincosf-avx.o \ + $(objpfx)test-float-libmvec-sincosf-avx-main.o $(objpfx)init-arch.o $(libmvec) $(objpfx)test-float-libmvec-sincosf-avx2: \ - $(objpfx)test-float-libmvec-sincosf-avx2.o $(objpfx)init-arch.o $(libmvec) + $(objpfx)test-float-libmvec-sincosf-avx2.o \ + $(objpfx)test-float-libmvec-sincosf-avx2-main.o $(objpfx)init-arch.o $(libmvec) ifeq (yes,$(config-cflags-avx512)) libmvec-tests += double-vlen8 float-vlen16 tests += test-double-libmvec-sincos-avx512 test-float-libmvec-sincosf-avx512 +extra-test-objs += test-double-libmvec-sincos-avx512-main.o \ + test-float-libmvec-sincosf-avx512-main.o $(objpfx)test-double-libmvec-sincos-avx512: \ - $(objpfx)test-double-libmvec-sincos-avx512.o $(objpfx)init-arch.o $(libmvec) + $(objpfx)test-double-libmvec-sincos-avx512.o \ + $(objpfx)test-double-libmvec-sincos-avx512-main.o $(objpfx)init-arch.o $(libmvec) $(objpfx)test-float-libmvec-sincosf-avx512: \ - $(objpfx)test-float-libmvec-sincosf-avx512.o $(objpfx)init-arch.o $(libmvec) + $(objpfx)test-float-libmvec-sincosf-avx512.o \ + $(objpfx)test-float-libmvec-sincosf-avx512-main.o $(objpfx)init-arch.o $(libmvec) endif double-vlen4-arch-ext-cflags = -mavx @@ -80,14 +96,20 @@ CFLAGS-test-double-vlen4-avx2-wrappers.c = $(double-vlen4-arch-ext2-cflags) CFLAGS-test-float-vlen8-avx2.c = $(libm-test-vec-cflags) CFLAGS-test-float-vlen8-avx2-wrappers.c = $(float-vlen8-arch-ext2-cflags) -CFLAGS-test-double-libmvec-sincos.c = $(libmvec-sincos-cflags) -CFLAGS-test-double-libmvec-sincos-avx.c = $(libmvec-sincos-cflags) $(double-vlen4-arch-ext-cflags) -DREQUIRE_AVX -CFLAGS-test-double-libmvec-sincos-avx2.c = $(libmvec-sincos-cflags) $(double-vlen4-arch-ext2-cflags) -DREQUIRE_AVX2 -CFLAGS-test-double-libmvec-sincos-avx512.c = $(libmvec-sincos-cflags) $(double-vlen8-arch-ext-cflags) -DREQUIRE_AVX512F - -CFLAGS-test-float-libmvec-sincosf.c = $(libmvec-sincos-cflags) -CFLAGS-test-float-libmvec-sincosf-avx.c = $(libmvec-sincos-cflags) $(float-vlen8-arch-ext-cflags) -DREQUIRE_AVX -CFLAGS-test-float-libmvec-sincosf-avx2.c = $(libmvec-sincos-cflags) $(float-vlen8-arch-ext2-cflags) -DREQUIRE_AVX2 -CFLAGS-test-float-libmvec-sincosf-avx512.c = $(libmvec-sincos-cflags) $(float-vlen16-arch-ext-cflags) -DREQUIRE_AVX512F +CFLAGS-test-double-libmvec-sincos-main.c = $(libmvec-sincos-cflags) +CFLAGS-test-double-libmvec-sincos-avx.c = -DREQUIRE_AVX +CFLAGS-test-double-libmvec-sincos-avx-main.c = $(libmvec-sincos-cflags) $(double-vlen4-arch-ext-cflags) +CFLAGS-test-double-libmvec-sincos-avx2.c = -DREQUIRE_AVX2 +CFLAGS-test-double-libmvec-sincos-avx2-main.c = $(libmvec-sincos-cflags) $(double-vlen4-arch-ext2-cflags) +CFLAGS-test-double-libmvec-sincos-avx512.c = -DREQUIRE_AVX512F +CFLAGS-test-double-libmvec-sincos-avx512-main.c = $(libmvec-sincos-cflags) $(double-vlen8-arch-ext-cflags) + +CFLAGS-test-float-libmvec-sincosf-main.c = $(libmvec-sincos-cflags) +CFLAGS-test-float-libmvec-sincosf-avx.c = -DREQUIRE_AVX +CFLAGS-test-float-libmvec-sincosf-avx-main.c = $(libmvec-sincos-cflags) $(float-vlen8-arch-ext-cflags) +CFLAGS-test-float-libmvec-sincosf-avx2.c = -DREQUIRE_AVX2 +CFLAGS-test-float-libmvec-sincosf-avx2-main.c = $(libmvec-sincos-cflags) $(float-vlen8-arch-ext2-cflags) +CFLAGS-test-float-libmvec-sincosf-avx512.c = -DREQUIRE_AVX512F +CFLAGS-test-float-libmvec-sincosf-avx512-main.c = $(libmvec-sincos-cflags) $(float-vlen16-arch-ext-cflags) endif endif diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-sincos-avx-main.c b/sysdeps/x86_64/fpu/test-double-libmvec-sincos-avx-main.c new file mode 100644 index 0000000000..fc2ffea314 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-double-libmvec-sincos-avx-main.c @@ -0,0 +1 @@ +#include "test-double-libmvec-sincos-main.c" diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-sincos-avx2-main.c b/sysdeps/x86_64/fpu/test-double-libmvec-sincos-avx2-main.c new file mode 100644 index 0000000000..fc2ffea314 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-double-libmvec-sincos-avx2-main.c @@ -0,0 +1 @@ +#include "test-double-libmvec-sincos-main.c" diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-sincos-avx512-main.c b/sysdeps/x86_64/fpu/test-double-libmvec-sincos-avx512-main.c new file mode 100644 index 0000000000..fc2ffea314 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-double-libmvec-sincos-avx512-main.c @@ -0,0 +1 @@ +#include "test-double-libmvec-sincos-main.c" diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-sincos-main.c b/sysdeps/x86_64/fpu/test-double-libmvec-sincos-main.c new file mode 100644 index 0000000000..afa361577b --- /dev/null +++ b/sysdeps/x86_64/fpu/test-double-libmvec-sincos-main.c @@ -0,0 +1,43 @@ +/* Test for vector sincos ABI. + Copyright (C) 2016 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <math.h> + +#define N 1000 +double x[N], s[N], c[N]; +double* s_ptrs[N]; +double* c_ptrs[N]; + +int +test_sincos_abi (void) +{ + int i; + + for(i = 0; i < N; i++) + { + x[i] = i / 3; + s_ptrs[i] = &s[i]; + c_ptrs[i] = &c[i]; + } + +#pragma omp simd + for(i = 0; i < N; i++) + sincos (x[i], s_ptrs[i], c_ptrs[i]); + + return 0; +} diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-sincos.c b/sysdeps/x86_64/fpu/test-double-libmvec-sincos.c index 9d80df25f8..c656ae49a4 100644 --- a/sysdeps/x86_64/fpu/test-double-libmvec-sincos.c +++ b/sysdeps/x86_64/fpu/test-double-libmvec-sincos.c @@ -16,54 +16,29 @@ License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ -#include <math.h> #include <math-tests-arch.h> -#define N 1000 -double x[N], s[N], c[N]; -double* s_ptrs[N]; -double* c_ptrs[N]; +extern int test_sincos_abi (void); + int arch_check = 1; static void -init_arg (void) +check_arch (void) { - int i; - INIT_ARCH_EXT; CHECK_ARCH_EXT; - arch_check = 0; - - for(i = 0; i < N; i++) - { - x[i] = i / 3; - s_ptrs[i] = &s[i]; - c_ptrs[i] = &c[i]; - } } static int -test_sincos_abi (void) +do_test (void) { - int i; - - init_arg (); + check_arch (); if (arch_check) return 77; -#pragma omp simd - for(i = 0; i < N; i++) - sincos (x[i], s_ptrs[i], c_ptrs[i]); - - return 0; -} - -static int -do_test (void) -{ - return test_sincos_abi (); + return test_sincos_abi (); } #define TEST_FUNCTION do_test () diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-sincosf-avx-main.c b/sysdeps/x86_64/fpu/test-float-libmvec-sincosf-avx-main.c new file mode 100644 index 0000000000..558e2ac649 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-float-libmvec-sincosf-avx-main.c @@ -0,0 +1 @@ +#include "test-float-libmvec-sincosf-main.c" diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-sincosf-avx2-main.c b/sysdeps/x86_64/fpu/test-float-libmvec-sincosf-avx2-main.c new file mode 100644 index 0000000000..558e2ac649 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-float-libmvec-sincosf-avx2-main.c @@ -0,0 +1 @@ +#include "test-float-libmvec-sincosf-main.c" diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-sincosf-avx512-main.c b/sysdeps/x86_64/fpu/test-float-libmvec-sincosf-avx512-main.c new file mode 100644 index 0000000000..558e2ac649 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-float-libmvec-sincosf-avx512-main.c @@ -0,0 +1 @@ +#include "test-float-libmvec-sincosf-main.c" diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-sincosf-main.c b/sysdeps/x86_64/fpu/test-float-libmvec-sincosf-main.c new file mode 100644 index 0000000000..271468f001 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-float-libmvec-sincosf-main.c @@ -0,0 +1,42 @@ +/* Test for vector sincosf ABI. + Copyright (C) 2016 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <math.h> + +#define N 1000 +float x[N], s[N], c[N]; +float *s_ptrs[N]; +float *c_ptrs[N]; + +int +test_sincosf_abi (void) +{ + int i; + for(i = 0; i < N; i++) + { + x[i] = i / 3; + s_ptrs[i] = &s[i]; + c_ptrs[i] = &c[i]; + } + +#pragma omp simd + for(i = 0; i < N; i++) + sincosf (x[i], s_ptrs[i], c_ptrs[i]); + + return 0; +} diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-sincosf.c b/sysdeps/x86_64/fpu/test-float-libmvec-sincosf.c index 03e8b1822c..b1c004b26a 100644 --- a/sysdeps/x86_64/fpu/test-float-libmvec-sincosf.c +++ b/sysdeps/x86_64/fpu/test-float-libmvec-sincosf.c @@ -16,53 +16,28 @@ License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ -#include <math.h> #include <math-tests-arch.h> -#define N 1000 -float x[N], s[N], c[N]; -float *s_ptrs[N]; -float *c_ptrs[N]; +extern int test_sincosf_abi (void); + int arch_check = 1; static void -init_arg (void) +check_arch (void) { - int i; - INIT_ARCH_EXT; CHECK_ARCH_EXT; - arch_check = 0; - - for(i = 0; i < N; i++) - { - x[i] = i / 3; - s_ptrs[i] = &s[i]; - c_ptrs[i] = &c[i]; - } } static int -test_sincosf_abi (void) +do_test (void) { - int i; - - init_arg (); + check_arch (); if (arch_check) return 77; -#pragma omp simd - for(i = 0; i < N; i++) - sincosf (x[i], s_ptrs[i], c_ptrs[i]); - - return 0; -} - -static int -do_test (void) -{ return test_sincosf_abi (); } |