[BZ,#18731] Fix runtime fails of AVX tests on non-AVX hardware
Commit Message
Hi,
this patch fixes fails of AVX vector math tests on non-AVX hardware
with addition of runtime checks.
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.
--
WBR,
Andrew
Comments
On Wed, 29 Jul 2015, Andrew Senkevich wrote:
> Hi,
>
> this patch fixes fails of AVX vector math tests on non-AVX hardware
> with addition of runtime checks.
>
> 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.
OK.
@@ -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.
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. */
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"
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"