diff options
author | Andrew Senkevich <andrew.senkevich@intel.com> | 2015-07-29 19:47:29 +0300 |
---|---|---|
committer | Andrew Senkevich <andrew.senkevich@intel.com> | 2015-07-29 19:47:29 +0300 |
commit | febce2ac5f46a0d5c67ca8b535a028425d421be4 (patch) | |
tree | b4c8219af11da6b85662437157ef77222236f5d9 | |
parent | 95d8f022bf0795cbac473c4f6182595e75cafe5f (diff) | |
download | glibc-febce2ac5f46a0d5c67ca8b535a028425d421be4.zip glibc-febce2ac5f46a0d5c67ca8b535a028425d421be4.tar.gz glibc-febce2ac5f46a0d5c67ca8b535a028425d421be4.tar.bz2 |
Added runtime check for AVX vector math tests.
[BZ #18731]
* sysdeps/x86_64/fpu/math-tests-arch.h: Added AVX runtime check.
* sysdeps/x86_64/fpu/test-double-vlen4.c: Likewise.
* sysdeps/x86_64/fpu/test-float-vlen8.c: Likewise.
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | sysdeps/x86_64/fpu/math-tests-arch.h | 24 | ||||
-rw-r--r-- | sysdeps/x86_64/fpu/test-double-vlen4.c | 2 | ||||
-rw-r--r-- | sysdeps/x86_64/fpu/test-float-vlen8.c | 2 |
4 files changed, 34 insertions, 1 deletions
@@ -1,3 +1,10 @@ +2015-07-29 Andrew Senkevich <andrew.senkevich@intel.com> + + [BZ #18731] + * sysdeps/x86_64/fpu/math-tests-arch.h: Added AVX runtime check. + * sysdeps/x86_64/fpu/test-double-vlen4.c: Likewise. + * sysdeps/x86_64/fpu/test-float-vlen8.c: Likewise. + 2015-07-27 Mike Frysinger <vapier@gentoo.org> * sysdeps/unix/sysv/linux/ia64/localplt.data: Delete __tls_get_addr. diff --git a/sysdeps/x86_64/fpu/math-tests-arch.h b/sysdeps/x86_64/fpu/math-tests-arch.h index 56714f5..e8833bf 100644 --- a/sysdeps/x86_64/fpu/math-tests-arch.h +++ b/sysdeps/x86_64/fpu/math-tests-arch.h @@ -16,7 +16,29 @@ License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ -#if defined REQUIRE_AVX2 +#if defined REQUIRE_AVX +# include <init-arch.h> + +/* Set to 1 if AVX supported. */ +static int avx_usable; + +# define INIT_ARCH_EXT \ + do \ + { \ + __init_cpu_features (); \ + avx_usable = __cpu_features.feature[index_AVX_Usable] \ + & bit_AVX_Usable; \ + } \ + while (0) + +# define CHECK_ARCH_EXT \ + do \ + { \ + if (!avx_usable) return; \ + } \ + while (0) + +#elif defined REQUIRE_AVX2 # include <init-arch.h> /* Set to 1 if AVX2 supported. */ diff --git a/sysdeps/x86_64/fpu/test-double-vlen4.c b/sysdeps/x86_64/fpu/test-double-vlen4.c index 679397f..f081343 100644 --- a/sysdeps/x86_64/fpu/test-double-vlen4.c +++ b/sysdeps/x86_64/fpu/test-double-vlen4.c @@ -25,4 +25,6 @@ #define TEST_VECTOR_exp 1 #define TEST_VECTOR_pow 1 +#define REQUIRE_AVX + #include "libm-test.c" diff --git a/sysdeps/x86_64/fpu/test-float-vlen8.c b/sysdeps/x86_64/fpu/test-float-vlen8.c index 581cbde..891e58f 100644 --- a/sysdeps/x86_64/fpu/test-float-vlen8.c +++ b/sysdeps/x86_64/fpu/test-float-vlen8.c @@ -25,4 +25,6 @@ #define TEST_VECTOR_expf 1 #define TEST_VECTOR_powf 1 +#define REQUIRE_AVX + #include "libm-test.c" |