Hi all,

There are some check files in i386 testsuite are written before the function 
__builtin_cpu_supports is introduced. All of them are using __get_cpuid_count. 
This patch aims to reconstruct the i386 testsuite with __builtin_cpu_supports 
so that we can have a much clearer code.

Regtested on x86_64-pc-linux-gnu. Ok for trunk?

Also when writting this patch, I also find some files in testsuite that might 
be useless currently. For example, in the file 
gcc/testsuite/gcc.target/i386/sse-os-support.h, it always return 1. And there 
are also some files will no longer be included at all with this patch. Should 
we remove those files when we have time?

BRs,
Haochen

gcc/testsuite/ChangeLog:

        * gcc.target/i386/adx-check.h: Change bit check to
        __builtin_cpu_supports.
        * gcc.target/i386/aes-avx-check.h: Ditto.
        * gcc.target/i386/aes-check.h: Ditto.
        * gcc.target/i386/avx-check.h: Ditto.
        * gcc.target/i386/avx2-check.h: Ditto.
        * gcc.target/i386/avx512-check.h: Ditto.
        * gcc.target/i386/bmi-check.h: Ditto.
        * gcc.target/i386/bmi2-check.h: Ditto.
        * gcc.target/i386/f16c-check.h: Ditto.
        * gcc.target/i386/fma-check.h: Ditto.
        * gcc.target/i386/fma4-check.h: Ditto.
        * gcc.target/i386/lzcnt-check.h: Ditto.
        * gcc.target/i386/mmx-3dnow-check.h: Ditto.
        * gcc.target/i386/mmx-check.h: Ditto.
        * gcc.target/i386/pclmul-avx-check.h: Ditto.
        * gcc.target/i386/pclmul-check.h: Ditto.
        * gcc.target/i386/rtm-check.h: Ditto.
        * gcc.target/i386/sha-check.h: Ditto.
        * gcc.target/i386/sse-check.h: Ditto.
        * gcc.target/i386/sse2-check.h: Ditto.
        * gcc.target/i386/sse3-check.h: Ditto.
        * gcc.target/i386/sse4_1-check.h: Ditto.
        * gcc.target/i386/sse4_2-check.h: Ditto.
        * gcc.target/i386/sse4a-check.h: Ditto.
        * gcc.target/i386/ssse3-check.h: Ditto.
        * gcc.target/i386/xop-check.h: Ditto.
---
 gcc/testsuite/gcc.target/i386/adx-check.h     | 10 +---
 gcc/testsuite/gcc.target/i386/aes-avx-check.h | 14 +----
 gcc/testsuite/gcc.target/i386/aes-check.h     | 11 +---
 gcc/testsuite/gcc.target/i386/avx-check.h     | 12 +---
 gcc/testsuite/gcc.target/i386/avx2-check.h    | 20 +------
 gcc/testsuite/gcc.target/i386/avx512-check.h  | 59 +++++++------------
 gcc/testsuite/gcc.target/i386/bmi-check.h     | 11 +---
 gcc/testsuite/gcc.target/i386/bmi2-check.h    | 10 +---
 gcc/testsuite/gcc.target/i386/f16c-check.h    | 10 +---
 gcc/testsuite/gcc.target/i386/fma-check.h     | 11 +---
 gcc/testsuite/gcc.target/i386/fma4-check.h    | 11 +---
 gcc/testsuite/gcc.target/i386/lzcnt-check.h   | 11 +---
 .../gcc.target/i386/mmx-3dnow-check.h         | 11 +---
 gcc/testsuite/gcc.target/i386/mmx-check.h     | 11 +---
 .../gcc.target/i386/pclmul-avx-check.h        | 14 +----
 gcc/testsuite/gcc.target/i386/pclmul-check.h  | 11 +---
 gcc/testsuite/gcc.target/i386/rtm-check.h     | 10 +---
 gcc/testsuite/gcc.target/i386/sha-check.h     | 10 +---
 gcc/testsuite/gcc.target/i386/sse-check.h     | 11 +---
 gcc/testsuite/gcc.target/i386/sse2-check.h    | 11 +---
 gcc/testsuite/gcc.target/i386/sse3-check.h    | 11 +---
 gcc/testsuite/gcc.target/i386/sse4_1-check.h  | 11 +---
 gcc/testsuite/gcc.target/i386/sse4_2-check.h  | 11 +---
 gcc/testsuite/gcc.target/i386/sse4a-check.h   | 11 +---
 gcc/testsuite/gcc.target/i386/ssse3-check.h   | 11 +---
 gcc/testsuite/gcc.target/i386/xop-check.h     | 11 +---
 26 files changed, 73 insertions(+), 272 deletions(-)

diff --git a/gcc/testsuite/gcc.target/i386/adx-check.h 
b/gcc/testsuite/gcc.target/i386/adx-check.h
index cfed1a38483..bed5dcca385 100644
--- a/gcc/testsuite/gcc.target/i386/adx-check.h
+++ b/gcc/testsuite/gcc.target/i386/adx-check.h
@@ -1,5 +1,4 @@
 #include <stdlib.h>
-#include "cpuid.h"
 
 static void adx_test (void);
 
@@ -11,13 +10,8 @@ static void __attribute__ ((noinline)) do_test (void)
 int
 main ()
 {
-  unsigned int 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 (ebx & bit_ADX)
+  /* Check cpu support for ADX.  */
+  if (__builtin_cpu_supports ("adx"))
     {
       do_test ();
 #ifdef DEBUG
diff --git a/gcc/testsuite/gcc.target/i386/aes-avx-check.h 
b/gcc/testsuite/gcc.target/i386/aes-avx-check.h
index f2a4ead4014..74bf597ead4 100644
--- a/gcc/testsuite/gcc.target/i386/aes-avx-check.h
+++ b/gcc/testsuite/gcc.target/i386/aes-avx-check.h
@@ -2,8 +2,6 @@
 #include <stdio.h>
 #endif
 #include <stdlib.h>
-#include "cpuid.h"
-#include "avx-os-support.h"
 
 static void aes_avx_test (void);
 
@@ -17,15 +15,9 @@ do_test (void)
 int
 main ()
 {
-  unsigned int eax, ebx, ecx, edx;
- 
-  if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx))
-    return 0;
-
-  /* Run AES + AVX test only if host has AES + AVX support.  */
-  if (((ecx & (bit_AVX | bit_OSXSAVE | bit_AES))
-       == (bit_AVX | bit_OSXSAVE | bit_AES))
-      && avx_os_support ())
+  /* Check cpu support for AES and AVX.  */
+  if (__builtin_cpu_supports ("avx")
+      && __builtin_cpu_supports ("aes"))
     {
       do_test ();
 #ifdef DEBUG
diff --git a/gcc/testsuite/gcc.target/i386/aes-check.h 
b/gcc/testsuite/gcc.target/i386/aes-check.h
index 7e794423e47..7c3a3b324a7 100644
--- a/gcc/testsuite/gcc.target/i386/aes-check.h
+++ b/gcc/testsuite/gcc.target/i386/aes-check.h
@@ -1,8 +1,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 
-#include "cpuid.h"
-
 static void aes_test (void);
 
 static void
@@ -15,13 +13,8 @@ do_test (void)
 int
 main ()
 {
-  unsigned int eax, ebx, ecx, edx;
- 
-  if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx))
-    return 0;
-
-  /* Run AES test only if host has AES support.  */
-  if (ecx & bit_AES)
+  /* Check cpu support for AES.  */
+  if (__builtin_cpu_supports ("aes"))
     {
       do_test ();
 #ifdef DEBUG
diff --git a/gcc/testsuite/gcc.target/i386/avx-check.h 
b/gcc/testsuite/gcc.target/i386/avx-check.h
index 7ddca9d7b80..4a3dbc257bc 100644
--- a/gcc/testsuite/gcc.target/i386/avx-check.h
+++ b/gcc/testsuite/gcc.target/i386/avx-check.h
@@ -1,7 +1,5 @@
 #include <stdlib.h>
-#include "cpuid.h"
 #include "m256-check.h"
-#include "avx-os-support.h"
 
 static void avx_test (void);
 
@@ -15,14 +13,8 @@ do_test (void)
 int
 main ()
 {
-  unsigned int eax, ebx, ecx, edx;
- 
-  if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx))
-    return 0;
-
-  /* Run AVX test only if host has AVX support.  */
-  if (((ecx & (bit_AVX | bit_OSXSAVE)) == (bit_AVX | bit_OSXSAVE))
-      && avx_os_support ())
+  /* Check cpu support for AVX.  */
+  if (__builtin_cpu_supports ("avx"))
     {
       do_test ();
 #ifdef DEBUG
diff --git a/gcc/testsuite/gcc.target/i386/avx2-check.h 
b/gcc/testsuite/gcc.target/i386/avx2-check.h
index 25bed5e0da6..2bc3c4425bb 100644
--- a/gcc/testsuite/gcc.target/i386/avx2-check.h
+++ b/gcc/testsuite/gcc.target/i386/avx2-check.h
@@ -1,7 +1,5 @@
 #include <stdlib.h>
-#include "cpuid.h"
 #include "m256-check.h"
-#include "avx-os-support.h"
 
 static void avx2_test (void);
 
@@ -10,25 +8,11 @@ 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_count (7, 0, &eax, &ebx, &ecx, &edx))
-    return 0;
-
-  /* Run AVX2 test only if host has AVX2 support.  */
-  if (check_osxsave () && (ebx & bit_AVX2) && avx_os_support ())
+  /* Check cpu support for AVX2.  */
+  if (__builtin_cpu_supports ("avx2"))
     {
       do_test ();
 #ifdef DEBUG
diff --git a/gcc/testsuite/gcc.target/i386/avx512-check.h 
b/gcc/testsuite/gcc.target/i386/avx512-check.h
index 0ad9064f637..339c79070c9 100644
--- a/gcc/testsuite/gcc.target/i386/avx512-check.h
+++ b/gcc/testsuite/gcc.target/i386/avx512-check.h
@@ -1,7 +1,5 @@
 #include <stdlib.h>
-#include "cpuid.h"
 #include "m512-check.h"
-#include "avx512f-os-support.h"
 
 #ifndef DO_TEST
 #define DO_TEST do_test
@@ -25,81 +23,66 @@ do_test (void)
 }
 #endif
 
-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_count (7, 0, &eax, &ebx, &ecx, &edx))
-    return 0;
-
-  /* Run AVX512 test only if host has ISA support.  */
-  if (check_osxsave ()
-      && (ebx & bit_AVX512F)
+  /* Check cpu support for AVX512.  */
+  if (__builtin_cpu_supports ("avx512f")
 #ifdef AVX512VL
-      && (ebx & bit_AVX512VL)
+      && __builtin_cpu_supports ("avx512vl")
 #endif
 #ifdef AVX512ER
-      && (ebx & bit_AVX512ER)
+      && __builtin_cpu_supports ("avx512er")
 #endif
 #ifdef AVX512CD
-      && (ebx & bit_AVX512CD)
+      && __builtin_cpu_supports ("avx512cd")
 #endif
 #ifdef AVX512DQ
-      && (ebx & bit_AVX512DQ)
+      && __builtin_cpu_supports ("avx512dq")
 #endif
 #ifdef AVX512BW
-      && (ebx & bit_AVX512BW)
+      && __builtin_cpu_supports ("avx512bw")
 #endif
 #ifdef AVX512IFMA
-      && (ebx & bit_AVX512IFMA)
+      && __builtin_cpu_supports ("avx512ifma")
 #endif
 #ifdef AVX512VBMI
-      && (ecx & bit_AVX512VBMI)
+      && __builtin_cpu_supports ("avx512vbmi")
 #endif
 #ifdef AVX5124FMAPS
-      && (edx & bit_AVX5124FMAPS)
+      && __builtin_cpu_supports ("avx5124fmaps")
 #endif
 #ifdef AVX5124VNNIW
-      && (edx & bit_AVX5124VNNIW)
+      && __builtin_cpu_supports ("avx5124vnniw")
 #endif
 #ifdef AVX512VPOPCNTDQ
-      && (ecx & bit_AVX512VPOPCNTDQ)
+      && __builtin_cpu_supports ("avx512vpopcntdq")
 #endif
 #ifdef AVX512BITALG
-      && (ecx & bit_AVX512BITALG)
+      && __builtin_cpu_supports ("avx512bitalg")
 #endif
 #ifdef GFNI
-      && (ecx & bit_GFNI)
+      && __builtin_cpu_supports ("gfni")
 #endif
 #ifdef AVX512VBMI2
-      && (ecx & bit_AVX512VBMI2)
+      && __builtin_cpu_supports ("avx512vbmi2")
 #endif
 #ifdef AVX512VNNI
-      && (ecx & bit_AVX512VNNI)
+      && __builtin_cpu_supports ("avx512vnni")
 #endif
 #ifdef AVX512FP16
-      && (edx & bit_AVX512FP16)
+      && __builtin_cpu_supports ("avx512fp16")
 #endif
 #ifdef VAES
-      && (ecx & bit_VAES)
+      && __builtin_cpu_supports ("vaes")
 #endif
 #ifdef VPCLMULQDQ
-      && (ecx & bit_VPCLMULQDQ)
+      && __builtin_cpu_supports ("vpclmulqdq")
 #endif
 #ifdef AVX512VP2INTERSECT
-      && (edx & bit_AVX512VP2INTERSECT)
+      && __builtin_cpu_supports ("avx512vp2intersect")
 #endif
-      && avx512f_os_support ())
+      )
     {
       DO_TEST ();
 #ifdef DEBUG
diff --git a/gcc/testsuite/gcc.target/i386/bmi-check.h 
b/gcc/testsuite/gcc.target/i386/bmi-check.h
index 1973f3b6468..6af0291a947 100644
--- a/gcc/testsuite/gcc.target/i386/bmi-check.h
+++ b/gcc/testsuite/gcc.target/i386/bmi-check.h
@@ -1,8 +1,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 
-#include "cpuid.h"
-
 static void bmi_test (void);
 
 static void
@@ -15,13 +13,8 @@ do_test (void)
 int
 main ()
 {
-  unsigned int eax, ebx, ecx, edx;
-
-  if (!__get_cpuid_count (7, 0, &eax, &ebx, &ecx, &edx))
-    return 0;
-
-  /* Run BMI test only if host has BMI support.  */
-  if (ebx & bit_BMI)
+  /* Check cpu support for BMI.  */
+  if (__builtin_cpu_supports ("bmi"))
     {
       do_test ();
 #ifdef DEBUG
diff --git a/gcc/testsuite/gcc.target/i386/bmi2-check.h 
b/gcc/testsuite/gcc.target/i386/bmi2-check.h
index ba91ef9b780..75c4d8d9616 100644
--- a/gcc/testsuite/gcc.target/i386/bmi2-check.h
+++ b/gcc/testsuite/gcc.target/i386/bmi2-check.h
@@ -1,6 +1,5 @@
 #include <stdio.h>
 #include <stdlib.h>
-#include "cpuid.h"
 
 static void bmi2_test (void);
 
@@ -14,13 +13,8 @@ do_test (void)
 int
 main ()
 {
-  unsigned int eax, ebx, ecx, edx;
-
-  if (!__get_cpuid_count (7, 0, &eax, &ebx, &ecx, &edx))
-    return 0;
-
-  /* Run BMI2 test only if host has BMI2 support.  */
-  if (ebx & bit_BMI2)
+  /* Check cpu support for BMI2.  */
+  if (__builtin_cpu_supports ("bmi2"))
     {
       do_test ();
 #ifdef DEBUG
diff --git a/gcc/testsuite/gcc.target/i386/f16c-check.h 
b/gcc/testsuite/gcc.target/i386/f16c-check.h
index af7f32c5f4f..2cbf34ab516 100644
--- a/gcc/testsuite/gcc.target/i386/f16c-check.h
+++ b/gcc/testsuite/gcc.target/i386/f16c-check.h
@@ -1,6 +1,5 @@
 #include <stdlib.h>
 #include <stdio.h>
-#include "cpuid.h"
 #include "m256-check.h"
 
 static void f16c_test (void);
@@ -8,13 +7,8 @@ static void f16c_test (void);
 int
 main ()
 {
-  unsigned int eax, ebx, ecx, edx;
-
-  if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx))
-    return 0;
-
-  /* Run F16C test only if host has F16C support.  */
-  if (ecx & bit_F16C)
+  /* Check cpu support for F16C.  */
+  if (__builtin_cpu_supports ("f16c"))
     {
       f16c_test ();
 #ifdef DEBUG
diff --git a/gcc/testsuite/gcc.target/i386/fma-check.h 
b/gcc/testsuite/gcc.target/i386/fma-check.h
index 8390f5088bd..6c1d3372218 100644
--- a/gcc/testsuite/gcc.target/i386/fma-check.h
+++ b/gcc/testsuite/gcc.target/i386/fma-check.h
@@ -1,7 +1,5 @@
 #include <stdlib.h>
 
-#include "cpuid.h"
-
 static void fma_test (void);
 
 static void __attribute__ ((noinline)) do_test (void)
@@ -12,13 +10,8 @@ static void __attribute__ ((noinline)) do_test (void)
 int
 main ()
 {
-  unsigned int eax, ebx, ecx, edx;
-
-  if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx))
-    return 0;
-
-  /* Run FMA test only if host has FMA support.  */
-  if (ecx & bit_FMA)
+  /* Check cpu support for FMA.  */
+  if (__builtin_cpu_supports ("fma"))
     do_test ();
 
   return 0;
diff --git a/gcc/testsuite/gcc.target/i386/fma4-check.h 
b/gcc/testsuite/gcc.target/i386/fma4-check.h
index 33cd9628c04..2d2c2718029 100644
--- a/gcc/testsuite/gcc.target/i386/fma4-check.h
+++ b/gcc/testsuite/gcc.target/i386/fma4-check.h
@@ -1,7 +1,5 @@
 #include <stdlib.h>
 
-#include "cpuid.h"
-
 static void fma4_test (void);
 
 static void
@@ -14,13 +12,8 @@ do_test (void)
 int
 main ()
 {
-  unsigned int eax, ebx, ecx, edx;
- 
-  if (!__get_cpuid (0x80000001, &eax, &ebx, &ecx, &edx))
-    return 0;
-
-  /* Run FMA4 test only if host has FMA4 support.  */
-  if (ecx & bit_FMA4)
+  /* Check cpu support foe FMA4.  */
+  if (__builtin_cpu_supports ("fma4"))
     do_test ();
 
   return 0;
diff --git a/gcc/testsuite/gcc.target/i386/lzcnt-check.h 
b/gcc/testsuite/gcc.target/i386/lzcnt-check.h
index 8aad834d6af..824f1a3b513 100644
--- a/gcc/testsuite/gcc.target/i386/lzcnt-check.h
+++ b/gcc/testsuite/gcc.target/i386/lzcnt-check.h
@@ -1,8 +1,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 
-#include "cpuid.h"
-
 static void lzcnt_test (void);
 
 static void
@@ -15,13 +13,8 @@ do_test (void)
 int
 main ()
 {
-  unsigned int eax, ebx, ecx, edx;
-
-  if (!__get_cpuid (0x80000001, &eax, &ebx, &ecx, &edx))
-    return 0;
-
-  /* Run LZCNT test only if host has LZCNT support.  */
-  if (ecx & bit_LZCNT)
+  /* Check cpu support for LZCNT.  */
+  if (__builtin_cpu_supports ("lzcnt"))
     {
       do_test ();
 #ifdef DEBUG
diff --git a/gcc/testsuite/gcc.target/i386/mmx-3dnow-check.h 
b/gcc/testsuite/gcc.target/i386/mmx-3dnow-check.h
index 4f2f7f3ac40..0ec2dca2e19 100644
--- a/gcc/testsuite/gcc.target/i386/mmx-3dnow-check.h
+++ b/gcc/testsuite/gcc.target/i386/mmx-3dnow-check.h
@@ -1,8 +1,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 
-#include "cpuid.h"
-
 static void mmx_3dnow_test (void);
 
 static void
@@ -15,13 +13,8 @@ do_test (void)
 int
 main ()
 {
-  unsigned int eax, ebx, ecx, edx;
- 
-  if (!__get_cpuid (0x80000001, &eax, &ebx, &ecx, &edx))
-    return 0;
-
-  /* Run 3DNow! test only if host has 3DNow! support.  */
-  if (edx & bit_3DNOW)
+  /* Check cpu support for 3DNow!.  */
+  if (__builtin_cpu_supports ("3dnow"))
     do_test ();
 
   return 0;
diff --git a/gcc/testsuite/gcc.target/i386/mmx-check.h 
b/gcc/testsuite/gcc.target/i386/mmx-check.h
index faf9b876f38..2afe5183ba2 100644
--- a/gcc/testsuite/gcc.target/i386/mmx-check.h
+++ b/gcc/testsuite/gcc.target/i386/mmx-check.h
@@ -1,8 +1,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 
-#include "cpuid.h"
-
 static void mmx_test (void);
 
 static void
@@ -15,13 +13,8 @@ do_test (void)
 int
 main ()
 {
-  unsigned int eax, ebx, ecx, edx;
- 
-  if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx))
-    return 0;
-
-  /* Run MMX test only if host has MMX support.  */
-  if (edx & bit_MMX)
+  /* Check cpu support for MMX.  */
+  if (__builtin_cpu_supports ("mmx"))
     do_test ();
 
   return 0;
diff --git a/gcc/testsuite/gcc.target/i386/pclmul-avx-check.h 
b/gcc/testsuite/gcc.target/i386/pclmul-avx-check.h
index 5eed2e2203c..b506b3306e6 100644
--- a/gcc/testsuite/gcc.target/i386/pclmul-avx-check.h
+++ b/gcc/testsuite/gcc.target/i386/pclmul-avx-check.h
@@ -2,8 +2,6 @@
 #include <stdio.h>
 #endif
 #include <stdlib.h>
-#include "cpuid.h"
-#include "avx-os-support.h"
 
 static void pclmul_avx_test (void);
 
@@ -17,15 +15,9 @@ do_test (void)
 int
 main ()
 {
-  unsigned int eax, ebx, ecx, edx;
- 
-  if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx))
-    return 0;
-
-  /* Run PCLMUL + AVX test only if host has PCLMUL + AVX support.  */
-  if (((ecx & (bit_AVX | bit_OSXSAVE | bit_PCLMUL))
-       == (bit_AVX | bit_OSXSAVE | bit_PCLMUL))
-      && avx_os_support ())
+  /* Check cpu support for PCLMUL and AVX.  */
+  if (__builtin_cpu_supports ("pclmul")
+      && __builtin_cpu_supports ("avx"))
     {
       do_test ();
 #ifdef DEBUG
diff --git a/gcc/testsuite/gcc.target/i386/pclmul-check.h 
b/gcc/testsuite/gcc.target/i386/pclmul-check.h
index 7526cbe2ddf..3ed1a044627 100644
--- a/gcc/testsuite/gcc.target/i386/pclmul-check.h
+++ b/gcc/testsuite/gcc.target/i386/pclmul-check.h
@@ -1,8 +1,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 
-#include "cpuid.h"
-
 static void pclmul_test (void);
 
 static void
@@ -15,13 +13,8 @@ do_test (void)
 int
 main ()
 {
-  unsigned int eax, ebx, ecx, edx;
- 
-  if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx))
-    return 0;
-
-  /* Run PCLMULQDQ test only if host has PCLMULQDQ support.  */
-  if (ecx & bit_PCLMUL)
+  /* Check cpu support for PCLMUL.  */
+  if (__builtin_cpu_supports ("pclmul"))
     {
       do_test ();
 #ifdef DEBUG
diff --git a/gcc/testsuite/gcc.target/i386/rtm-check.h 
b/gcc/testsuite/gcc.target/i386/rtm-check.h
index bdb5a6dc0bf..4121e602a7f 100644
--- a/gcc/testsuite/gcc.target/i386/rtm-check.h
+++ b/gcc/testsuite/gcc.target/i386/rtm-check.h
@@ -1,5 +1,4 @@
 #include <stdlib.h>
-#include "cpuid.h"
 
 static void rtm_test (void);
 
@@ -11,13 +10,8 @@ static void __attribute__ ((noinline)) do_test (void)
 int
 main ()
 {
-  unsigned int eax, ebx, ecx, edx;
-
-  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)
+  /* Check cpu support for RTM.  */
+  if (__builtin_cpu_supports ("rtm"))
     {
       do_test ();
 #ifdef DEBUG
diff --git a/gcc/testsuite/gcc.target/i386/sha-check.h 
b/gcc/testsuite/gcc.target/i386/sha-check.h
index 5bc5a59ab80..61ce43053f9 100644
--- a/gcc/testsuite/gcc.target/i386/sha-check.h
+++ b/gcc/testsuite/gcc.target/i386/sha-check.h
@@ -1,5 +1,4 @@
 #include <stdlib.h>
-#include "cpuid.h"
 
 static void sha_test (void);
 
@@ -13,13 +12,8 @@ do_test (void)
 int
 main ()
 {
-  unsigned int 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)
+  /* Check cpu support for SHA.  */
+  if (__builtin_cpu_supports ("sha"))
     {
       do_test ();
 #ifdef DEBUG
diff --git a/gcc/testsuite/gcc.target/i386/sse-check.h 
b/gcc/testsuite/gcc.target/i386/sse-check.h
index 11b71bc3e97..58bc88c5598 100644
--- a/gcc/testsuite/gcc.target/i386/sse-check.h
+++ b/gcc/testsuite/gcc.target/i386/sse-check.h
@@ -1,7 +1,5 @@
 #include <stdlib.h>
 #include "m128-check.h"
-#include "cpuid.h"
-#include "sse-os-support.h"
 
 static void sse_test (void);
 
@@ -15,13 +13,8 @@ do_test (void)
 int
 main ()
 {
-  unsigned int eax, ebx, ecx, edx;
- 
-  if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx))
-    return 0;
-
-  /* Run SSE test only if host has SSE support.  */
-  if ((edx & bit_SSE) && sse_os_support ())
+  /* Check cpu support for SSE.  */
+  if (__builtin_cpu_supports ("sse"))
     do_test ();
 
   return 0;
diff --git a/gcc/testsuite/gcc.target/i386/sse2-check.h 
b/gcc/testsuite/gcc.target/i386/sse2-check.h
index fd4a6ce1dbf..4976a27022d 100644
--- a/gcc/testsuite/gcc.target/i386/sse2-check.h
+++ b/gcc/testsuite/gcc.target/i386/sse2-check.h
@@ -1,7 +1,5 @@
 #include <stdlib.h>
-#include "cpuid.h"
 #include "m128-check.h"
-#include "sse-os-support.h"
 
 static void sse2_test (void);
 
@@ -15,13 +13,8 @@ do_test (void)
 int
 main ()
 {
-  unsigned int eax, ebx, ecx, edx;
- 
-  if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx))
-    return 0;
-
-  /* Run SSE2 test only if host has SSE2 support.  */
-  if ((edx & bit_SSE2) && sse_os_support ())
+  /* Check cpu support for SSE2.  */
+  if (__builtin_cpu_supports ("sse2"))
     do_test ();
 
   return 0;
diff --git a/gcc/testsuite/gcc.target/i386/sse3-check.h 
b/gcc/testsuite/gcc.target/i386/sse3-check.h
index 5a0a0b1a02e..3c58361e925 100644
--- a/gcc/testsuite/gcc.target/i386/sse3-check.h
+++ b/gcc/testsuite/gcc.target/i386/sse3-check.h
@@ -1,7 +1,5 @@
 #include <stdio.h>
 #include <stdlib.h>
-#include "cpuid.h"
-#include "sse-os-support.h"
 
 static void sse3_test (void);
 
@@ -15,13 +13,8 @@ do_test (void)
 int
 main ()
 {
-  unsigned int eax, ebx, ecx, edx;
- 
-  if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx))
-    return 0;
- 
-  /* Run SSE3 test only if host has SSE3 support.  */
-  if ((ecx & bit_SSE3) && sse_os_support ())
+  /* Check cpu support for SSE3.  */
+  if (__builtin_cpu_supports ("sse3"))
     do_test ();
 
   return 0;
diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-check.h 
b/gcc/testsuite/gcc.target/i386/sse4_1-check.h
index 788f65d61cb..61d0d0284a8 100644
--- a/gcc/testsuite/gcc.target/i386/sse4_1-check.h
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-check.h
@@ -1,6 +1,4 @@
 #include <stdlib.h>
-
-#include "cpuid.h"
 #include "m128-check.h"
 
 static void sse4_1_test (void);
@@ -17,13 +15,8 @@ do_test (void)
 int
 main ()
 {
-  unsigned int eax, ebx, ecx, edx;
- 
-  if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx))
-    return 0;
-
-  /* Run SSE4.1 test only if host has SSE4.1 support.  */
-  if (ecx & bit_SSE4_1)
+  /* Check cpu support for SSE4.1.  */
+  if (__builtin_cpu_supports ("sse4.1"))
     do_test ();
 
   return 0;
diff --git a/gcc/testsuite/gcc.target/i386/sse4_2-check.h 
b/gcc/testsuite/gcc.target/i386/sse4_2-check.h
index c33cd1b4986..6c921ac52c7 100644
--- a/gcc/testsuite/gcc.target/i386/sse4_2-check.h
+++ b/gcc/testsuite/gcc.target/i386/sse4_2-check.h
@@ -1,8 +1,6 @@
 #include <stdio.h>
 #include <stdlib.h>
-
 #include "m128-check.h"
-#include "cpuid.h"
 
 static void sse4_2_test (void);
 
@@ -16,13 +14,8 @@ do_test (void)
 int
 main ()
 {
-  unsigned int eax, ebx, ecx, edx;
- 
-  if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx))
-    return 0;
-
-  /* Run SSE4.2 test only if host has SSE4.2 support.  */
-  if (ecx & bit_SSE4_2)
+  /* Check cpu support for SSE4.2.  */
+  if (__builtin_cpu_supports ("sse4.2"))
     do_test ();
 
   return 0;
diff --git a/gcc/testsuite/gcc.target/i386/sse4a-check.h 
b/gcc/testsuite/gcc.target/i386/sse4a-check.h
index d43b4b222b1..ae70ff0a268 100644
--- a/gcc/testsuite/gcc.target/i386/sse4a-check.h
+++ b/gcc/testsuite/gcc.target/i386/sse4a-check.h
@@ -1,8 +1,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 
-#include "cpuid.h"
-
 static void sse4a_test (void);
 
 static void
@@ -15,13 +13,8 @@ do_test (void)
 int
 main ()
 {
-  unsigned int eax, ebx, ecx, edx;
- 
-  if (!__get_cpuid (0x80000001, &eax, &ebx, &ecx, &edx))
-    return 0;
-
-  /* Run SSE4a test only if host has SSE4a support.  */
-  if (ecx & bit_SSE4a)
+  /* Check cpu support for SSE4a.  */
+  if (__builtin_cpu_supports ("sse4a"))
     do_test ();
 
   return 0;
diff --git a/gcc/testsuite/gcc.target/i386/ssse3-check.h 
b/gcc/testsuite/gcc.target/i386/ssse3-check.h
index 3ca79333c7f..3e834811f2d 100644
--- a/gcc/testsuite/gcc.target/i386/ssse3-check.h
+++ b/gcc/testsuite/gcc.target/i386/ssse3-check.h
@@ -1,8 +1,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 
-#include "cpuid.h"
-
 static void ssse3_test (void);
 
 static void
@@ -15,13 +13,8 @@ do_test (void)
 int
 main ()
 {
-  unsigned int eax, ebx, ecx, edx;
- 
-  if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx))
-    return 0;
-
-  /* Run SSSE3 test only if host has SSSE3 support.  */
-  if (ecx & bit_SSSE3)
+  /* Check cpu support for SSSE3.  */
+  if (__builtin_cpu_supports ("ssse3"))
     do_test ();
 
   return 0;
diff --git a/gcc/testsuite/gcc.target/i386/xop-check.h 
b/gcc/testsuite/gcc.target/i386/xop-check.h
index 395abe8766d..e1ef1273111 100644
--- a/gcc/testsuite/gcc.target/i386/xop-check.h
+++ b/gcc/testsuite/gcc.target/i386/xop-check.h
@@ -1,6 +1,4 @@
 #include <stdlib.h>
-
-#include "cpuid.h"
 #include "m256-check.h"
 
 static void xop_test (void);
@@ -15,13 +13,8 @@ do_test (void)
 int
 main ()
 {
-  unsigned int eax, ebx, ecx, edx;
- 
-  if (!__get_cpuid (0x80000001, &eax, &ebx, &ecx, &edx))
-    return 0;
-
-  /* Run XOP test only if host has XOP support.  */
-  if (ecx & bit_XOP)
+  /* Check cpu support for XOP.  */
+  if (__builtin_cpu_supports ("xop"))
     do_test ();
 
   return 0;
-- 
2.18.1

Reply via email to