From 295940c3c2320a0b5d3e99bd88042e1a4dbb8c73 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Fri, 4 Aug 2017 17:48:57 +0000 Subject: [PATCH] i386: Rewrite check for AVX512 features Add a new file, avx512-check.h, to check all AVX512 features. The test is skipped if any requested AVX512 features are unavailable. PR target/81590 * gcc.target/i386/avx512-check.h: New file. * gcc.target/i386/avx5124fmaps-check.h: Removed. * gcc.target/i386/avx5124vnniw-check.h: Likewise. * gcc.target/i386/avx512cd-check.h: Likewise. * gcc.target/i386/avx512ifma-check.h: Likewise. * gcc.target/i386/avx512vbmi-check.h: Likewise. * gcc.target/i386/avx512vpopcntdq-check.h: Likewise. * gcc.target/i386/avx512bw-check.h: Rewrite. * gcc.target/i386/avx512dq-check.h: Likewise. * gcc.target/i386/avx512er-check.h: Likewise. * gcc.target/i386/avx512f-check.h: Likewise. * gcc.target/i386/avx512vl-check.h: Likewise. * gcc.target/i386/avx512f-helper.h: Include "avx512-check.h" only. (test_512): Removed. (avx512*_test): Likewise. * gcc.target/i386/avx512f-pr71559.c (TEST): Undef. From-SVN: r250875 --- gcc/testsuite/ChangeLog | 21 ++++ gcc/testsuite/gcc.target/i386/avx512-check.h | 113 +++++++++++++++++++++ gcc/testsuite/gcc.target/i386/avx5124fmaps-check.h | 47 --------- gcc/testsuite/gcc.target/i386/avx5124vnniw-check.h | 47 --------- gcc/testsuite/gcc.target/i386/avx512bw-check.h | 50 +-------- gcc/testsuite/gcc.target/i386/avx512cd-check.h | 46 --------- gcc/testsuite/gcc.target/i386/avx512dq-check.h | 50 +-------- gcc/testsuite/gcc.target/i386/avx512er-check.h | 49 +-------- gcc/testsuite/gcc.target/i386/avx512f-check.h | 49 +-------- gcc/testsuite/gcc.target/i386/avx512f-helper.h | 64 +----------- gcc/testsuite/gcc.target/i386/avx512f-pr71559.c | 1 + gcc/testsuite/gcc.target/i386/avx512ifma-check.h | 46 --------- gcc/testsuite/gcc.target/i386/avx512vbmi-check.h | 46 --------- gcc/testsuite/gcc.target/i386/avx512vl-check.h | 51 +--------- .../gcc.target/i386/avx512vpopcntdq-check.h | 47 --------- 15 files changed, 151 insertions(+), 576 deletions(-) create mode 100644 gcc/testsuite/gcc.target/i386/avx512-check.h delete mode 100644 gcc/testsuite/gcc.target/i386/avx5124fmaps-check.h delete mode 100644 gcc/testsuite/gcc.target/i386/avx5124vnniw-check.h delete mode 100644 gcc/testsuite/gcc.target/i386/avx512cd-check.h delete mode 100644 gcc/testsuite/gcc.target/i386/avx512ifma-check.h delete mode 100644 gcc/testsuite/gcc.target/i386/avx512vbmi-check.h delete mode 100644 gcc/testsuite/gcc.target/i386/avx512vpopcntdq-check.h diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index fbb1fba..5b0568e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,24 @@ +2017-08-04 H.J. Lu + + PR target/81590 + * gcc.target/i386/avx512-check.h: New file. + * gcc.target/i386/avx5124fmaps-check.h: Removed. + * gcc.target/i386/avx5124vnniw-check.h: Likewise. + * gcc.target/i386/avx512cd-check.h: Likewise. + * gcc.target/i386/avx512ifma-check.h: Likewise. + * gcc.target/i386/avx512vbmi-check.h: Likewise. + * gcc.target/i386/avx512vpopcntdq-check.h: Likewise. + * gcc.target/i386/avx512bw-check.h: Rewrite. + * gcc.target/i386/avx512dq-check.h: Likewise. + * gcc.target/i386/avx512er-check.h: Likewise. + * gcc.target/i386/avx512f-check.h: Likewise. + * gcc.target/i386/avx512vl-check.h: Likewise. + * gcc.target/i386/avx512f-helper.h: Include "avx512-check.h" + only. + (test_512): Removed. + (avx512*_test): Likewise. + * gcc.target/i386/avx512f-pr71559.c (TEST): Undef. + 2017-08-04 Marek Polacek PR middle-end/81695 diff --git a/gcc/testsuite/gcc.target/i386/avx512-check.h b/gcc/testsuite/gcc.target/i386/avx512-check.h new file mode 100644 index 0000000..bfe1496 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512-check.h @@ -0,0 +1,113 @@ +#include +#include "cpuid.h" +#include "m512-check.h" +#include "avx512f-os-support.h" + +#ifndef DO_TEST +#define DO_TEST do_test +#ifdef AVX512VL +static void test_256 (void); +static void test_128 (void); +#else +static void test_512 (void); +#endif + +__attribute__ ((noinline)) +static void +do_test (void) +{ +#ifdef AVX512VL + test_256 (); + test_128 (); +#else + test_512 (); +#endif +} +#endif + +int +main () +{ + 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_count (7, 0, eax, ebx, ecx, edx); + + if (!(ebx & bit_AVX512F)) + goto skipped; + +#ifdef AVX512VL + if (!(ebx & bit_AVX512VL)) + goto skipped; +#endif + +#ifdef AVX512ER + if (!(ebx & bit_AVX512ER)) + goto skipped; +#endif + +#ifdef AVX512CD + if (!(ebx & bit_AVX512CD)) + goto skipped; +#endif + +#ifdef AVX512DQ + if (!(ebx & bit_AVX512DQ)) + goto skipped; +#endif + +#ifdef AVX512BW + if (!(ebx & bit_AVX512BW)) + goto skipped; +#endif + +#ifdef AVX512IFMA + if (!(ebx & bit_AVX512IFMA)) + goto skipped; +#endif + +#ifdef AVX512VBMI + if (!(ecx & bit_AVX512VBMI)) + goto skipped; +#endif + +#ifdef AVX5124FMAPS + if (!(edx & bit_AVX5124FMAPS)) + goto skipped; +#endif + +#ifdef AVX5124VNNIW + if (!(edx & bit_AVX5124VNNIW)) + goto skipped; +#endif + +#ifdef AVX512VPOPCNTDQ + if (!(ecx & bit_AVX512VPOPCNTDQ)) + goto skipped; +#endif + + if (!avx512f_os_support ()) + goto skipped; + + DO_TEST (); + +#ifdef DEBUG + printf ("PASSED\n"); +#endif + return 0; + +skipped: +#ifdef DEBUG + printf ("SKIPPED\n"); +#endif + return 0; +} diff --git a/gcc/testsuite/gcc.target/i386/avx5124fmaps-check.h b/gcc/testsuite/gcc.target/i386/avx5124fmaps-check.h deleted file mode 100644 index 13ea70b..0000000 --- a/gcc/testsuite/gcc.target/i386/avx5124fmaps-check.h +++ /dev/null @@ -1,47 +0,0 @@ -#include -#include "cpuid.h" -#include "m512-check.h" -#include "avx512f-os-support.h" - -static void avx5124fmaps_test (void); - -static void __attribute__ ((noinline)) do_test (void) -{ - avx5124fmaps_test (); -} - -int -main () -{ - unsigned int eax, ebx, ecx, edx; - - if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx)) - return 0; - - /* Run AVX512_4FMAPS test only if host has the support. */ - if ((ecx & bit_OSXSAVE) == (bit_OSXSAVE)) - { - if (__get_cpuid_max (0, NULL) < 7) - return 0; - - __cpuid_count (7, 0, eax, ebx, ecx, edx); - - if ((avx512f_os_support ()) && ((edx & bit_AVX5124FMAPS) == bit_AVX5124FMAPS)) - { - do_test (); -#ifdef DEBUG - printf ("PASSED\n"); -#endif - return 0; - } -#ifdef DEBUG - printf ("SKIPPED\n"); -#endif - } -#ifdef DEBUG - else - printf ("SKIPPED\n"); -#endif - - return 0; -} diff --git a/gcc/testsuite/gcc.target/i386/avx5124vnniw-check.h b/gcc/testsuite/gcc.target/i386/avx5124vnniw-check.h deleted file mode 100644 index 27d35a5..0000000 --- a/gcc/testsuite/gcc.target/i386/avx5124vnniw-check.h +++ /dev/null @@ -1,47 +0,0 @@ -#include -#include "cpuid.h" -#include "m512-check.h" -#include "avx512f-os-support.h" - -static void avx5124vnniw_test (void); - -static void __attribute__ ((noinline)) do_test (void) -{ - avx5124vnniw_test (); -} - -int -main () -{ - unsigned int eax, ebx, ecx, edx; - - if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx)) - return 0; - - /* Run AVX512_4VNNIW test only if host has the support. */ - if ((ecx & bit_OSXSAVE) == (bit_OSXSAVE)) - { - if (__get_cpuid_max (0, NULL) < 7) - return 0; - - __cpuid_count (7, 0, eax, ebx, ecx, edx); - - if ((avx512f_os_support ()) && ((edx & bit_AVX5124VNNIW) == bit_AVX5124VNNIW)) - { - do_test (); -#ifdef DEBUG - printf ("PASSED\n"); -#endif - return 0; - } -#ifdef DEBUG - printf ("SKIPPED\n"); -#endif - } -#ifdef DEBUG - else - printf ("SKIPPED\n"); -#endif - - return 0; -} diff --git a/gcc/testsuite/gcc.target/i386/avx512bw-check.h b/gcc/testsuite/gcc.target/i386/avx512bw-check.h index d5288aa..899a006 100644 --- a/gcc/testsuite/gcc.target/i386/avx512bw-check.h +++ b/gcc/testsuite/gcc.target/i386/avx512bw-check.h @@ -1,47 +1,3 @@ -#include -#include "cpuid.h" -#include "m512-check.h" -#include "avx512f-os-support.h" - -static void avx512bw_test (void); - -static void __attribute__ ((noinline)) do_test (void) -{ - avx512bw_test (); -} - -int -main () -{ - unsigned int eax, ebx, ecx, edx; - - if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx)) - return 0; - - /* Run AVX512BW test only if host has AVX512BW support. */ - if (ecx & bit_OSXSAVE) - { - if (__get_cpuid_max (0, NULL) < 7) - return 0; - - __cpuid_count (7, 0, eax, ebx, ecx, edx); - - if ((ebx & bit_AVX512BW) && avx512f_os_support ()) - { - do_test (); -#ifdef DEBUG - printf ("PASSED\n"); -#endif - return 0; - } -#ifdef DEBUG - printf ("SKIPPED\n"); -#endif - } -#ifdef DEBUG - else - printf ("SKIPPED\n"); -#endif - - return 0; -} +#define AVX512BW +#define avx512bw_test test_512 +#include "avx512-check.h" diff --git a/gcc/testsuite/gcc.target/i386/avx512cd-check.h b/gcc/testsuite/gcc.target/i386/avx512cd-check.h deleted file mode 100644 index fd0b9eb..0000000 --- a/gcc/testsuite/gcc.target/i386/avx512cd-check.h +++ /dev/null @@ -1,46 +0,0 @@ -#include -#include "cpuid.h" -#include "m512-check.h" -#include "avx512f-os-support.h" - -static void avx512cd_test (void); - -static void __attribute__ ((noinline)) do_test (void) -{ - avx512cd_test (); -} - -int -main () -{ - unsigned int eax, ebx, ecx, edx; - - if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx)) - return 0; - - if (ecx & bit_OSXSAVE) - { - if (__get_cpuid_max (0, NULL) < 7) - return 0; - - __cpuid_count (7, 0, eax, ebx, ecx, edx); - - if ((ebx & bit_AVX512CD) && avx512f_os_support ()) - { - do_test (); -#ifdef DEBUG - printf ("PASSED\n"); -#endif - return 0; - } -#ifdef DEBUG - printf ("SKIPPED\n"); -#endif - } -#ifdef DEBUG - else - printf ("SKIPPED\n"); -#endif - - return 0; -} diff --git a/gcc/testsuite/gcc.target/i386/avx512dq-check.h b/gcc/testsuite/gcc.target/i386/avx512dq-check.h index 7955f48..1b72883 100644 --- a/gcc/testsuite/gcc.target/i386/avx512dq-check.h +++ b/gcc/testsuite/gcc.target/i386/avx512dq-check.h @@ -1,47 +1,3 @@ -#include -#include "cpuid.h" -#include "m512-check.h" -#include "avx512f-os-support.h" - -static void avx512dq_test (void); - -static void __attribute__ ((noinline)) do_test (void) -{ - avx512dq_test (); -} - -int -main () -{ - unsigned int eax, ebx, ecx, edx; - - if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx)) - return 0; - - /* Run AVX512DQ test only if host has AVX512DQ support. */ - if (ecx & bit_OSXSAVE) - { - if (__get_cpuid_max (0, NULL) < 7) - return 0; - - __cpuid_count (7, 0, eax, ebx, ecx, edx); - - if ((ebx & bit_AVX512DQ) && avx512f_os_support ()) - { - do_test (); -#ifdef DEBUG - printf ("PASSED\n"); -#endif - return 0; - } -#ifdef DEBUG - printf ("SKIPPED\n"); -#endif - } -#ifdef DEBUG - else - printf ("SKIPPED\n"); -#endif - - return 0; -} +#define AVX512DQ +#define avx512dq_test test_512 +#include "avx512-check.h" diff --git a/gcc/testsuite/gcc.target/i386/avx512er-check.h b/gcc/testsuite/gcc.target/i386/avx512er-check.h index 06fc18a..eb44c2f 100644 --- a/gcc/testsuite/gcc.target/i386/avx512er-check.h +++ b/gcc/testsuite/gcc.target/i386/avx512er-check.h @@ -1,46 +1,3 @@ -#include -#include "cpuid.h" -#include "m512-check.h" -#include "avx512f-os-support.h" - -static void avx512er_test (void); - -static void __attribute__ ((noinline)) do_test (void) -{ - avx512er_test (); -} - -int -main () -{ - unsigned int eax, ebx, ecx, edx; - - if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx)) - return 0; - - if (ecx & bit_OSXSAVE) - { - if (__get_cpuid_max (0, NULL) < 7) - return 0; - - __cpuid_count (7, 0, eax, ebx, ecx, edx); - - if ((ebx & bit_AVX512ER) && avx512f_os_support ()) - { - do_test (); -#ifdef DEBUG - printf ("PASSED\n"); -#endif - return 0; - } -#ifdef DEBUG - printf ("SKIPPED\n"); -#endif - } -#ifdef DEBUG - else - printf ("SKIPPED\n"); -#endif - - return 0; -} +#define AVX512ER +#define avx512er_test test_512 +#include "avx512f-helper.h" diff --git a/gcc/testsuite/gcc.target/i386/avx512f-check.h b/gcc/testsuite/gcc.target/i386/avx512f-check.h index 811184b..b3bdd9a 100644 --- a/gcc/testsuite/gcc.target/i386/avx512f-check.h +++ b/gcc/testsuite/gcc.target/i386/avx512f-check.h @@ -1,47 +1,2 @@ -#include -#include "cpuid.h" -#include "m512-check.h" -#include "avx512f-os-support.h" - -static void avx512f_test (void); - -static void __attribute__ ((noinline)) do_test (void) -{ - avx512f_test (); -} - -int -main () -{ - unsigned int eax, ebx, ecx, edx; - - if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx)) - return 0; - - /* Run AVX512F test only if host has AVX512F support. */ - if (ecx & bit_OSXSAVE) - { - if (__get_cpuid_max (0, NULL) < 7) - return 0; - - __cpuid_count (7, 0, eax, ebx, ecx, edx); - - if ((ebx & bit_AVX512F) && avx512f_os_support ()) - { - do_test (); -#ifdef DEBUG - printf ("PASSED\n"); -#endif - return 0; - } -#ifdef DEBUG - printf ("SKIPPED\n"); -#endif - } -#ifdef DEBUG - else - printf ("SKIPPED\n"); -#endif - - return 0; -} +#define avx512f_test test_512 +#include "avx512f-helper.h" diff --git a/gcc/testsuite/gcc.target/i386/avx512f-helper.h b/gcc/testsuite/gcc.target/i386/avx512f-helper.h index ef4661a..72982f9 100644 --- a/gcc/testsuite/gcc.target/i386/avx512f-helper.h +++ b/gcc/testsuite/gcc.target/i386/avx512f-helper.h @@ -8,29 +8,7 @@ #ifndef AVX512F_HELPER_INCLUDED #define AVX512F_HELPER_INCLUDED -#if defined (AVX512F) && !defined (AVX512VL) -#include "avx512f-check.h" -#elif defined (AVX512ER) && !defined (AVX512VL) -#include "avx512er-check.h" -#elif defined (AVX512CD) && !defined (AVX512VL) -#include "avx512cd-check.h" -#elif defined (AVX512DQ) && !defined (AVX512VL) -#include "avx512dq-check.h" -#elif defined (AVX512BW) && !defined (AVX512VL) -#include "avx512bw-check.h" -#elif defined (AVX512IFMA) && !defined (AVX512VL) -#include "avx512ifma-check.h" -#elif defined (AVX512VBMI) && !defined (AVX512VL) -#include "avx512vbmi-check.h" -#elif defined (AVX5124FMAPS) && !defined (AVX512VL) -#include "avx5124fmaps-check.h" -#elif defined (AVX5124VNNIW) && !defined (AVX512VL) -#include "avx5124vnniw-check.h" -#elif defined (AVX512VPOPCNTDQ) && !defined (AVX512VL) -#include "avx512vpopcntdq-check.h" -#elif defined (AVX512VL) -#include "avx512vl-check.h" -#endif +#include "avx512-check.h" /* Macros expansion. */ #define CONCAT(a,b,c) a ## b ## c @@ -112,46 +90,6 @@ MAKE_MASK_ZERO(i_uq, unsigned long long) #ifndef AVX512VL #define AVX512F_LEN 512 #define AVX512F_LEN_HALF 256 -void test_512 (); -#endif - -void test_512 (); -void test_256 (); -void test_128 (); - -#if defined (AVX512F) && !defined (AVX512VL) -void -avx512f_test (void) { test_512 (); } -#elif defined (AVX512CD) && !defined (AVX512VL) -void -avx512cd_test (void) { test_512 (); } -#elif defined (AVX512ER) && !defined (AVX512VL) -void -avx512er_test (void) { test_512 (); } -#elif defined (AVX512DQ) && !defined (AVX512VL) -void -avx512dq_test (void) { test_512 (); } -#elif defined (AVX512BW) && !defined (AVX512VL) -void -avx512bw_test (void) { test_512 (); } -#elif defined (AVX512IFMA) && !defined (AVX512VL) -void -avx512ifma_test (void) { test_512 (); } -#elif defined (AVX512VBMI) && !defined (AVX512VL) -void -avx512vbmi_test (void) { test_512 (); } -#elif defined (AVX5124FMAPS) && !defined (AVX512VL) -void -avx5124fmaps_test (void) { test_512 (); } -#elif defined (AVX5124VNNIW) && !defined (AVX512VL) -void -avx5124vnniw_test (void) { test_512 (); } -#elif defined (AVX512VPOPCNTDQ) && !defined (AVX512VL) -void -avx512vpopcntdq_test (void) { test_512 (); } -#elif defined (AVX512VL) -void -avx512vl_test (void) { test_256 (); test_128 (); } #endif #endif /* AVX512F_HELPER_INCLUDED */ diff --git a/gcc/testsuite/gcc.target/i386/avx512f-pr71559.c b/gcc/testsuite/gcc.target/i386/avx512f-pr71559.c index d78d86a..43dc236 100644 --- a/gcc/testsuite/gcc.target/i386/avx512f-pr71559.c +++ b/gcc/testsuite/gcc.target/i386/avx512f-pr71559.c @@ -3,6 +3,7 @@ /* { dg-options "-O2 -ftree-vectorize -mavx512f" } */ #include "avx512f-check.h" +#undef TEST #define PR71559_TEST avx512f_test #include "sse2-pr71559.c" diff --git a/gcc/testsuite/gcc.target/i386/avx512ifma-check.h b/gcc/testsuite/gcc.target/i386/avx512ifma-check.h deleted file mode 100644 index b90a4d5..0000000 --- a/gcc/testsuite/gcc.target/i386/avx512ifma-check.h +++ /dev/null @@ -1,46 +0,0 @@ -#include -#include "cpuid.h" -#include "m512-check.h" -#include "avx512f-os-support.h" - -static void avx512ifma_test (void); - -static void __attribute__ ((noinline)) do_test (void) -{ - avx512ifma_test (); -} - -int -main () -{ - unsigned int eax, ebx, ecx, edx; - - if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx)) - return 0; - - if (ecx & bit_OSXSAVE) - { - if (__get_cpuid_max (0, NULL) < 7) - return 0; - - __cpuid_count (7, 0, eax, ebx, ecx, edx); - - if ((ebx & bit_AVX512IFMA) && avx512f_os_support ()) - { - do_test (); -#ifdef DEBUG - printf ("PASSED\n"); -#endif - return 0; - } -#ifdef DEBUG - printf ("SKIPPED\n"); -#endif - } -#ifdef DEBUG - else - printf ("SKIPPED\n"); -#endif - - return 0; -} diff --git a/gcc/testsuite/gcc.target/i386/avx512vbmi-check.h b/gcc/testsuite/gcc.target/i386/avx512vbmi-check.h deleted file mode 100644 index 2c1f625..0000000 --- a/gcc/testsuite/gcc.target/i386/avx512vbmi-check.h +++ /dev/null @@ -1,46 +0,0 @@ -#include -#include "cpuid.h" -#include "m512-check.h" -#include "avx512f-os-support.h" - -static void avx512vbmi_test (void); - -static void __attribute__ ((noinline)) do_test (void) -{ - avx512vbmi_test (); -} - -int -main () -{ - unsigned int eax, ebx, ecx, edx; - - if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx)) - return 0; - - if (ecx & bit_OSXSAVE) - { - if (__get_cpuid_max (0, NULL) < 7) - return 0; - - __cpuid_count (7, 0, eax, ebx, ecx, edx); - - if ((ecx & bit_AVX512VBMI) && avx512f_os_support ()) - { - do_test (); -#ifdef DEBUG - printf ("PASSED\n"); -#endif - return 0; - } -#ifdef DEBUG - printf ("SKIPPED\n"); -#endif - } -#ifdef DEBUG - else - printf ("SKIPPED\n"); -#endif - - return 0; -} diff --git a/gcc/testsuite/gcc.target/i386/avx512vl-check.h b/gcc/testsuite/gcc.target/i386/avx512vl-check.h index 29d984d..9d02cc8 100644 --- a/gcc/testsuite/gcc.target/i386/avx512vl-check.h +++ b/gcc/testsuite/gcc.target/i386/avx512vl-check.h @@ -1,47 +1,4 @@ -#include -#include "cpuid.h" -#include "m512-check.h" -#include "avx512f-os-support.h" - -static void avx512vl_test (void); - -static void __attribute__ ((noinline)) do_test (void) -{ - avx512vl_test (); -} - -int -main () -{ - unsigned int eax, ebx, ecx, edx; - - if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx)) - return 0; - - /* Run avx512vl test only if host has avx512vl support. */ - if (ecx & bit_OSXSAVE) - { - if (__get_cpuid_max (0, NULL) < 7) - return 0; - - __cpuid_count (7, 0, eax, ebx, ecx, edx); - - if ((ebx & bit_AVX512VL) && avx512f_os_support ()) - { - do_test (); -#ifdef DEBUG - printf ("PASSED\n"); -#endif - return 0; - } -#ifdef DEBUG - printf ("SKIPPED\n"); -#endif - } -#ifdef DEBUG - else - printf ("SKIPPED\n"); -#endif - - return 0; -} +#define AVX512VL +#define DO_TEST avx512vl_test +static void DO_TEST (void); +#include "avx512-check.h" diff --git a/gcc/testsuite/gcc.target/i386/avx512vpopcntdq-check.h b/gcc/testsuite/gcc.target/i386/avx512vpopcntdq-check.h deleted file mode 100644 index 179548b..0000000 --- a/gcc/testsuite/gcc.target/i386/avx512vpopcntdq-check.h +++ /dev/null @@ -1,47 +0,0 @@ -#include -#include "cpuid.h" -#include "m512-check.h" -#include "avx512f-os-support.h" - -static void avx512vpopcntdq_test (void); - -static void __attribute__ ((noinline)) do_test (void) -{ - avx512vpopcntdq_test (); -} - -int -main () -{ - unsigned int eax, ebx, ecx, edx; - - if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx)) - return 0; - - /* Run AVX512_VPOPCNTDQ test only if host has the support. */ - if ((ecx & bit_OSXSAVE) == (bit_OSXSAVE)) - { - if (__get_cpuid_max (0, NULL) < 7) - return 0; - - __cpuid_count (7, 0, eax, ebx, ecx, edx); - - if ((avx512f_os_support ()) && ((ecx & bit_AVX512VPOPCNTDQ) == bit_AVX512VPOPCNTDQ)) - { - do_test (); -#ifdef DEBUG - printf ("PASSED\n"); -#endif - return 0; - } -#ifdef DEBUG - printf ("SKIPPED\n"); -#endif - } -#ifdef DEBUG - else - printf ("SKIPPED\n"); -#endif - - return 0; -} -- 2.7.4