From 6ab1e91474c0faab25a568436b846c2630624039 Mon Sep 17 00:00:00 2001 From: Andrew Senkevich Date: Mon, 17 Oct 2016 19:01:32 +0300 Subject: 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) --- ChangeLog | 63 ++++++++++++++++++++++ sysdeps/x86_64/fpu/Makefile | 48 +++++++++++------ .../fpu/test-double-libmvec-sincos-avx-main.c | 1 + .../fpu/test-double-libmvec-sincos-avx2-main.c | 1 + .../fpu/test-double-libmvec-sincos-avx512-main.c | 1 + .../x86_64/fpu/test-double-libmvec-sincos-main.c | 43 +++++++++++++++ sysdeps/x86_64/fpu/test-double-libmvec-sincos.c | 37 +++---------- .../fpu/test-float-libmvec-sincosf-avx-main.c | 1 + .../fpu/test-float-libmvec-sincosf-avx2-main.c | 1 + .../fpu/test-float-libmvec-sincosf-avx512-main.c | 1 + .../x86_64/fpu/test-float-libmvec-sincosf-main.c | 42 +++++++++++++++ sysdeps/x86_64/fpu/test-float-libmvec-sincosf.c | 35 ++---------- 12 files changed, 196 insertions(+), 78 deletions(-) create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-sincos-avx-main.c create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-sincos-avx2-main.c create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-sincos-avx512-main.c create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-sincos-main.c create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-sincosf-avx-main.c create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-sincosf-avx2-main.c create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-sincosf-avx512-main.c create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-sincosf-main.c diff --git a/ChangeLog b/ChangeLog index d170353470..457fcb5fd6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,66 @@ +2016-10-17 H.J. Lu + + [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-17 Andrew Senkevich [BZ #20024] diff --git a/sysdeps/x86_64/fpu/Makefile b/sysdeps/x86_64/fpu/Makefile index 83a219fc60..9afeccb8a4 100644 --- a/sysdeps/x86_64/fpu/Makefile +++ b/sysdeps/x86_64/fpu/Makefile @@ -35,32 +35,40 @@ tests += test-double-libmvec-sincos test-double-libmvec-sincos-avx \ test-float-libmvec-sincosf-avx test-float-libmvec-sincosf-avx2 $(objpfx)test-double-libmvec-sincos: \ - $(objpfx)test-double-libmvec-sincos.o $(libmvec) + $(objpfx)test-double-libmvec-sincos.o \ + $(objpfx)test-double-libmvec-sincos-main.o $(libmvec) $(objpfx)test-double-libmvec-sincos-avx: \ - $(objpfx)test-double-libmvec-sincos-avx.o $(libmvec) + $(objpfx)test-double-libmvec-sincos-avx.o \ + $(objpfx)test-double-libmvec-sincos-avx-main.o $(libmvec) $(objpfx)test-double-libmvec-sincos-avx2: \ - $(objpfx)test-double-libmvec-sincos-avx2.o $(libmvec) + $(objpfx)test-double-libmvec-sincos-avx2.o \ + $(objpfx)test-double-libmvec-sincos-avx2-main.o $(libmvec) $(objpfx)test-float-libmvec-sincosf: \ - $(objpfx)test-float-libmvec-sincosf.o $(libmvec) + $(objpfx)test-float-libmvec-sincosf.o \ + $(objpfx)test-float-libmvec-sincosf-main.o $(libmvec) $(objpfx)test-float-libmvec-sincosf-avx: \ - $(objpfx)test-float-libmvec-sincosf-avx.o $(libmvec) + $(objpfx)test-float-libmvec-sincosf-avx.o \ + $(objpfx)test-float-libmvec-sincosf-avx-main.o $(libmvec) $(objpfx)test-float-libmvec-sincosf-avx2: \ - $(objpfx)test-float-libmvec-sincosf-avx2.o $(libmvec) + $(objpfx)test-float-libmvec-sincosf-avx2.o \ + $(objpfx)test-float-libmvec-sincosf-avx2-main.o $(libmvec) ifeq (yes,$(config-cflags-avx512)) libmvec-tests += double-vlen8 float-vlen16 tests += test-double-libmvec-sincos-avx512 test-float-libmvec-sincosf-avx512 $(objpfx)test-double-libmvec-sincos-avx512: \ - $(objpfx)test-double-libmvec-sincos-avx512.o $(libmvec) + $(objpfx)test-double-libmvec-sincos-avx512.o \ + $(objpfx)test-double-libmvec-sincos-avx512-main.o $(libmvec) $(objpfx)test-float-libmvec-sincosf-avx512: \ - $(objpfx)test-float-libmvec-sincosf-avx512.o $(libmvec) + $(objpfx)test-float-libmvec-sincosf-avx512.o \ + $(objpfx)test-float-libmvec-sincosf-avx512-main.o $(libmvec) endif double-vlen4-arch-ext-cflags = -mavx @@ -79,14 +87,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 + . */ + +#include + +#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 80348a260e..90ff9a9967 100644 --- a/sysdeps/x86_64/fpu/test-double-libmvec-sincos.c +++ b/sysdeps/x86_64/fpu/test-double-libmvec-sincos.c @@ -16,53 +16,28 @@ License along with the GNU C Library; if not, see . */ -#include #include -#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; - 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 + . */ + +#include + +#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 3b7aad877b..da57cca06a 100644 --- a/sysdeps/x86_64/fpu/test-float-libmvec-sincosf.c +++ b/sysdeps/x86_64/fpu/test-float-libmvec-sincosf.c @@ -16,52 +16,27 @@ License along with the GNU C Library; if not, see . */ -#include #include -#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; - 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 (); } -- cgit 1.4.1