adx-check.h (main): Use __get_cpuid_count.
authorUros Bizjak <ubizjak@gmail.com>
Sun, 3 Sep 2017 23:17:26 +0000 (01:17 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Sun, 3 Sep 2017 23:17:26 +0000 (01:17 +0200)
* gcc.target/i386/adx-check.h (main): Use __get_cpuid_count.
* gcc.target/i386/bmi-check.h (main): Ditto.
* gcc.target/i386/bmi2-check.h (main): Ditto.
* gcc.target/i386/rtm-check.h (main): Ditto.
* gcc.target/i386/sha-check.h (main): Ditto.
* gcc.target/i386/avx2-check.h (check_osxsave): New function.
(main): Use __get_cpuid_count.  Use check_osxsave.
* gcc.target/i386/avx512-check.h (check_osxsave): New function.
(main): Use __get_cpuid_count.  Use check_osxsave.  Reorder conditions.
* gcc.target/i386/mpx/mpx-check.h (check_osxsave): New function.
(main): Use check_osxsave.

From-SVN: r251629

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/adx-check.h
gcc/testsuite/gcc.target/i386/avx2-check.h
gcc/testsuite/gcc.target/i386/avx512-check.h
gcc/testsuite/gcc.target/i386/bmi-check.h
gcc/testsuite/gcc.target/i386/bmi2-check.h
gcc/testsuite/gcc.target/i386/mpx/mpx-check.h
gcc/testsuite/gcc.target/i386/rtm-check.h
gcc/testsuite/gcc.target/i386/sha-check.h

index 18e7739b4a7029efe8a038ea9be1c054b49e6534..628c1f3efd632ffdd312bd57672dcdc1e78e6970 100644 (file)
@@ -1,3 +1,17 @@
+2017-09-04  Uros Bizjak  <ubizjak@gmail.com>
+
+       * gcc.target/i386/adx-check.h (main): Use __get_cpuid_count.
+       * gcc.target/i386/bmi-check.h (main): Ditto.
+       * gcc.target/i386/bmi2-check.h (main): Ditto.
+       * gcc.target/i386/rtm-check.h (main): Ditto.
+       * gcc.target/i386/sha-check.h (main): Ditto.
+       * gcc.target/i386/avx2-check.h (check_osxsave): New function.
+       (main): Use __get_cpuid_count.  Use check_osxsave.
+       * gcc.target/i386/avx512-check.h (check_osxsave): New function.
+       (main): Use __get_cpuid_count.  Use check_osxsave.  Reorder conditions.
+       * gcc.target/i386/mpx/mpx-check.h (check_osxsave): New function.
+       (main): Use check_osxsave.
+
 2017-09-03  Uros Bizjak  <ubizjak@gmail.com>
 
        * gcc.target/i386/mpx/mpx-check.h (main): Use __get_cpuid_count
index 5e7ad9652516fb39888a69bd9e57430c650c1846..cfed1a384837f9bcca33767839a66c30a4f5b7ca 100644 (file)
@@ -8,21 +8,15 @@ static void __attribute__ ((noinline)) do_test (void)
   adx_test ();
 }
 
-  int
+int
 main ()
 {
   unsigned int eax, ebx, ecx, edx;
 
-  if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx))
+  if (!__get_cpuid_count (7, 0, &eax, &ebx, &ecx, &edx))
     return 0;
 
   /* Run ADX test only if host has ADX support.  */
-
-  if (__get_cpuid_max (0, NULL) < 7)
-    return 0;
-
-  __cpuid_count (7, 0, eax, ebx, ecx, edx);
-
   if (ebx & bit_ADX)
     {
       do_test ();
@@ -31,10 +25,10 @@ main ()
 #endif
       return 0;
     }
+
 #ifdef DEBUG
   printf ("SKIPPED\n");
 #endif
-
   return 0;
 }
 
index 021e1e6b8e80baeb183fa5bc3169784430a69d12..25bed5e0da6ab2c02a51a61509da5371a831b059 100644 (file)
@@ -10,38 +10,35 @@ static void __attribute__ ((noinline)) do_test (void)
   avx2_test ();
 }
 
+static int
+check_osxsave (void)
+{
+  unsigned int eax, ebx, ecx, edx;
+
+  __cpuid (1, eax, ebx, ecx, edx);
+  return (ecx & bit_OSXSAVE) != 0;
+}
+
 int
 main ()
 {
   unsigned int eax, ebx, ecx, edx;
 
-  if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx))
+  if (!__get_cpuid_count (7, 0, &eax, &ebx, &ecx, &edx))
     return 0;
 
   /* Run AVX2 test only if host has AVX2 support.  */
-  if (ecx & bit_OSXSAVE)
+  if (check_osxsave () && (ebx & bit_AVX2) && avx_os_support ())
     {
-      if (__get_cpuid_max (0, NULL) < 7)
-       return 0;
-
-      __cpuid_count (7, 0, eax, ebx, ecx, edx);
-
-      if ((ebx & bit_AVX2) && avx_os_support ())
-       {
-         do_test ();
-#ifdef DEBUG
-         printf ("PASSED\n");
-#endif
-         return 0;
-       }
+      do_test ();
 #ifdef DEBUG
-      printf ("SKIPPED\n");
+      printf ("PASSED\n");
 #endif
+      return 0;
     }
+
 #ifdef DEBUG
-  else
-    printf ("SKIPPED\n");
+  printf ("SKIPPED\n");
 #endif
-
   return 0;
 }
index bfe14960100ef5006ded16dbb0c4bda845a0a20f..9693fa46721a4b2f5045a3ecf24578846aec51a3 100644 (file)
@@ -25,87 +25,65 @@ do_test (void)
 }
 #endif
 
-int
-main ()
+static int
+check_osxsave (void)
 {
   unsigned int eax, ebx, ecx, edx;
 
-  if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx))
-    goto skipped;
-
-  /* Run AVX512F test only if host has AVX512F support.  */
-  if (!(ecx & bit_OSXSAVE))
-    goto skipped;
-
-  if (__get_cpuid_max (0, NULL) < 7)
-    goto skipped;
+  __cpuid (1, eax, ebx, ecx, edx);
+  return (ecx & bit_OSXSAVE) != 0;
+}
 
-  __cpuid_count (7, 0, eax, ebx, ecx, edx);
+int
+main ()
+{
+  unsigned int eax, ebx, ecx, edx;
 
-  if (!(ebx & bit_AVX512F))
-    goto skipped;
+  if (!__get_cpuid_count (7, 0, &eax, &ebx, &ecx, &edx))
+    return 0;
 
+  /* Run AVX512 test only if host has ISA support.  */
+  if (check_osxsave ()
+      && (ebx & bit_AVX512F)
 #ifdef AVX512VL
-  if (!(ebx & bit_AVX512VL))
-    goto skipped;
+      && (ebx & bit_AVX512VL)
 #endif
-
 #ifdef AVX512ER
-  if (!(ebx & bit_AVX512ER))
-    goto skipped;
+      && (ebx & bit_AVX512ER)
 #endif
-
 #ifdef AVX512CD
-  if (!(ebx & bit_AVX512CD))
-    goto skipped;
+      && (ebx & bit_AVX512CD)
 #endif
-
 #ifdef AVX512DQ
-  if (!(ebx & bit_AVX512DQ))
-    goto skipped;
+      && (ebx & bit_AVX512DQ)
 #endif
-
 #ifdef AVX512BW
-  if (!(ebx & bit_AVX512BW))
-    goto skipped;
+      && (ebx & bit_AVX512BW)
 #endif
-
 #ifdef AVX512IFMA
-  if (!(ebx & bit_AVX512IFMA))
-    goto skipped;
+      && (ebx & bit_AVX512IFMA)
 #endif
-
 #ifdef AVX512VBMI
-  if (!(ecx & bit_AVX512VBMI))
-    goto skipped;
+      && (ecx & bit_AVX512VBMI)
 #endif
-
 #ifdef AVX5124FMAPS
-  if (!(edx & bit_AVX5124FMAPS))
-    goto skipped;
+      && (edx & bit_AVX5124FMAPS)
 #endif
-
 #ifdef AVX5124VNNIW
-  if (!(edx & bit_AVX5124VNNIW))
-    goto skipped;
+      && (edx & bit_AVX5124VNNIW)
 #endif
-
 #ifdef AVX512VPOPCNTDQ
-  if (!(ecx & bit_AVX512VPOPCNTDQ))
-    goto skipped;
+      && (ecx & bit_AVX512VPOPCNTDQ)
 #endif
-
-  if (!avx512f_os_support ())
-    goto skipped;
-
-  DO_TEST ();
-
+      && avx512f_os_support ())
+    {
+      DO_TEST ();
 #ifdef DEBUG
-  printf ("PASSED\n");
+      printf ("PASSED\n");
 #endif
-  return 0;
-
-skipped:
+      return 0;
+    }
 #ifdef DEBUG
   printf ("SKIPPED\n");
 #endif
index 8fad38ad0727749499c362357043d3b1ccb7878b..1973f3b6468d35284ff3d723430eaee2c80befb8 100644 (file)
@@ -17,23 +17,21 @@ main ()
 {
   unsigned int eax, ebx, ecx, edx;
 
-  if (__get_cpuid_max (0, NULL) < 7)
+  if (!__get_cpuid_count (7, 0, &eax, &ebx, &ecx, &edx))
     return 0;
 
-  __cpuid_count (7, 0, eax, ebx, ecx, edx);
-
   /* Run BMI test only if host has BMI support.  */
   if (ebx & bit_BMI)
     {
       do_test ();
 #ifdef DEBUG
-    printf ("PASSED\n");
+      printf ("PASSED\n");
 #endif
+      return 0;
     }
+
 #ifdef DEBUG
-  else
-    printf ("SKIPPED\n");
+  printf ("SKIPPED\n");
 #endif
-
   return 0;
 }
index c933a49f28171ac973ae8e70e561493d4285a12b..ba91ef9b780bf0b19b5e0599c756b567537f4e00 100644 (file)
@@ -1,6 +1,5 @@
 #include <stdio.h>
 #include <stdlib.h>
-
 #include "cpuid.h"
 
 static void bmi2_test (void);
@@ -17,11 +16,9 @@ main ()
 {
   unsigned int eax, ebx, ecx, edx;
 
-  if (__get_cpuid_max (0, NULL) < 7)
+  if (!__get_cpuid_count (7, 0, &eax, &ebx, &ecx, &edx))
     return 0;
 
-  __cpuid_count (7, 0,  eax, ebx, ecx, edx);
-
   /* Run BMI2 test only if host has BMI2 support.  */
   if (ebx & bit_BMI2)
     {
@@ -29,11 +26,11 @@ main ()
 #ifdef DEBUG
       printf ("PASSED\n");
 #endif
+      return 0;
     }
+
 #ifdef DEBUG
-  else
-    printf ("SKIPPED\n");
+  printf ("SKIPPED\n");
 #endif
-
   return 0;
 }
index dd90fbd275abce9e4ca50d971c078c0957634e62..d84b8bf0efaabab0281b9a20c57ed4c7fbe09846 100644 (file)
@@ -26,6 +26,15 @@ static int xgetbv (unsigned x)
    return eax;
 }
 
+static int
+check_osxsave (void)
+{
+  unsigned int eax, ebx, ecx, edx;
+
+  __cpuid (1, eax, ebx, ecx, edx);
+  return (ecx & bit_OSXSAVE) != 0;
+}
+
 int
 main (int argc, const char **argv)
 {
@@ -35,7 +44,7 @@ main (int argc, const char **argv)
     return NORUNRES;
 
   /* Run MPX test only if host has MPX support.  */
-  if ((ebx & bit_MPX) && (xgetbv (0) & XSTATE_BNDREGS))
+  if (check_osxsave () && (ebx & bit_MPX) && (xgetbv (0) & XSTATE_BNDREGS))
     mpx_test (argc, argv);
   else
     {
index 593b40391c792d7dbf52b56c2c5e351e7ab5b5dc..bdb5a6dc0bf74cc76c163fd83575e19ed0b19aa9 100644 (file)
@@ -13,18 +13,19 @@ main ()
 {
   unsigned int eax, ebx, ecx, edx;
 
-  if (__get_cpuid_max (0, NULL) >= 7)
+  if (!__get_cpuid_count (7, 0, &eax, &ebx, &ecx, &edx))
+    return 0;
+
+  /* Run RTM test only if host has RTM support.  */
+  if (ebx & bit_RTM)
     {
-      __cpuid_count (7, 0, eax, ebx, ecx, edx);
-      if (ebx & bit_RTM)
-       {
-         do_test ();
+      do_test ();
 #ifdef DEBUG
-         printf ("PASSED\n");
+      printf ("PASSED\n");
 #endif
-         return 0;
-       }
+      return 0;
     }
+
 #ifdef DEBUG
   printf ("SKIPPED\n");
 #endif
index e0a18076e15a07bfbfa2983772c0fe906cbc657c..5bc5a59ab80c60a89ffacd8e5abfac48b5e80cd0 100644 (file)
@@ -15,19 +15,17 @@ main ()
 {
   unsigned int eax, ebx, ecx, edx;
 
-  if (__get_cpuid_max (0, NULL) >= 7)
-    {
-      __cpuid_count (7, 0, eax, ebx, ecx, edx);
+  if (!__get_cpuid_count (7, 0, &eax, &ebx, &ecx, &edx))
+    return 0;
 
-      /* Run SHA test only if host has SHA support.  */
-      if (ebx & bit_SHA)
-       {
-         do_test ();
+  /* Run SHA test only if host has SHA support.  */
+  if (ebx & bit_SHA)
+    {
+      do_test ();
 #ifdef DEBUG
-         printf ("PASSED\n");
+      printf ("PASSED\n");
 #endif
-         return 0;
-       }
+      return 0;
     }
 
 #ifdef DEBUG