about summary refs log tree commit diff
path: root/sysdeps/x86_64/tst-audit10.c
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2016-03-07 16:00:25 +0100
committerFlorian Weimer <fweimer@redhat.com>2016-03-07 16:00:25 +0100
commit3c0f7407eedb524c9114bb675cd55b903c71daaa (patch)
tree0c5c22fd03aeece465c74675d6f277820db2f092 /sysdeps/x86_64/tst-audit10.c
parent900056024b75eae8b550d7fee1dec9e71f28344e (diff)
downloadglibc-3c0f7407eedb524c9114bb675cd55b903c71daaa.tar.gz
glibc-3c0f7407eedb524c9114bb675cd55b903c71daaa.tar.xz
glibc-3c0f7407eedb524c9114bb675cd55b903c71daaa.zip
tst-audit4, tst-audit10: Compile AVX/AVX-512 code separately [BZ #19269]
This ensures that GCC will not use unsupported instructions before
the run-time check to ensure support.
Diffstat (limited to 'sysdeps/x86_64/tst-audit10.c')
-rw-r--r--sysdeps/x86_64/tst-audit10.c34
1 files changed, 7 insertions, 27 deletions
diff --git a/sysdeps/x86_64/tst-audit10.c b/sysdeps/x86_64/tst-audit10.c
index d104341be8..92e0cb4b52 100644
--- a/sysdeps/x86_64/tst-audit10.c
+++ b/sysdeps/x86_64/tst-audit10.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 2012-2016 Free Software Foundation, Inc.
+/* Test case for preserved AVX512 registers in dynamic linker.
+   Copyright (C) 2012-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
@@ -15,13 +16,9 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-/* Test case for x86-64 preserved registers in dynamic linker.  */
-
-#ifdef __AVX512F__
-#include <stdlib.h>
-#include <string.h>
 #include <cpuid.h>
-#include <immintrin.h>
+
+int tst_audit10_aux (void);
 
 static int
 avx512_enabled (void)
@@ -42,32 +39,15 @@ avx512_enabled (void)
   return (eax & 0xe6) == 0xe6;
 }
 
-
-extern __m512i audit_test (__m512i, __m512i, __m512i, __m512i,
-			   __m512i, __m512i, __m512i, __m512i);
 static int
 do_test (void)
 {
   /* Run AVX512 test only if AVX512 is supported.  */
   if (avx512_enabled ())
-    {
-      __m512i zmm = _mm512_setzero_si512 ();
-      __m512i ret = audit_test (zmm, zmm, zmm, zmm, zmm, zmm, zmm, zmm);
-
-      zmm = _mm512_set1_epi64 (0x12349876);
-
-      if (memcmp (&zmm, &ret, sizeof (ret)))
-	abort ();
-    }
-  return 0;
-}
-#else
-static int
-do_test (void)
-{
-  return 0;
+    return tst_audit10_aux ();
+  else
+    return 77;
 }
-#endif
 
 #define TEST_FUNCTION do_test ()
 #include "../../test-skeleton.c"