182547Smike#include <stdlib.h> 282547Smike#include "cpuid.h" 382547Smike#include "m512-check.h" 482547Smike#include "avx512f-os-support.h" 582547Smike 682547Smikestatic void avx512cd_test (void); 782547Smike 882547Smikestatic void __attribute__ ((noinline)) do_test (void) 982547Smike{ 1082547Smike avx512cd_test (); 1182547Smike} 1282547Smike 1382547Smikeint 1482547Smikemain () 1582547Smike{ 1682547Smike unsigned int eax, ebx, ecx, edx; 1782547Smike 1882547Smike if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx)) 1982547Smike return 0; 2082547Smike 2182547Smike if ((ecx & bit_OSXSAVE) == (bit_OSXSAVE)) 2282547Smike { 2382547Smike if (__get_cpuid_max (0, NULL) < 7) 2482547Smike return 0; 2582547Smike 2682547Smike __cpuid_count (7, 0, eax, ebx, ecx, edx); 2782547Smike 2882547Smike if ((avx512f_os_support ()) && ((ebx & (bit_AVX512CD)) == (bit_AVX512CD))) 2982547Smike { 3082547Smike do_test (); 31117280Scharnier#ifdef DEBUG 32117280Scharnier printf ("PASSED\n"); 33117280Scharnier#endif 34149424Spjd return 0; 35231912Strociny } 36231909Strociny#ifdef DEBUG 3782547Smike printf ("SKIPPED\n"); 3882547Smike#endif 39129983Sphk } 40149424Spjd#ifdef DEBUG 41167700Strhodes else 42231910Strociny printf ("SKIPPED\n"); 43231910Strociny#endif 4482547Smike 4582547Smike return 0; 4682547Smike} 4782547Smike