1210311Sjmallett#include <stdlib.h> 2210311Sjmallett#include "cpuid.h" 3210311Sjmallett#include "m512-check.h" 4210311Sjmallett#include "avx512f-os-support.h" 5210311Sjmallett 6210311Sjmallettstatic void avx512vbmi_test (void); 7210311Sjmallett 8210311Sjmallettstatic void __attribute__ ((noinline)) do_test (void) 9210311Sjmallett{ 10210311Sjmallett avx512vbmi_test (); 11210311Sjmallett} 12210311Sjmallett 13210311Sjmallettint 14210311Sjmallettmain () 15210311Sjmallett{ 16210311Sjmallett unsigned int eax, ebx, ecx, edx; 17210311Sjmallett 18210311Sjmallett if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx)) 19210311Sjmallett return 0; 20210311Sjmallett 21210311Sjmallett if ((ecx & bit_OSXSAVE) == (bit_OSXSAVE)) 22210311Sjmallett { 23210311Sjmallett if (__get_cpuid_max (0, NULL) < 7) 24210311Sjmallett return 0; 25210311Sjmallett 26210311Sjmallett __cpuid_count (7, 0, eax, ebx, ecx, edx); 27210311Sjmallett 28210311Sjmallett if ((avx512f_os_support ()) && ((ecx & bit_AVX512VBMI) == bit_AVX512VBMI)) 29210311Sjmallett { 30210311Sjmallett do_test (); 31210311Sjmallett#ifdef DEBUG 32210311Sjmallett printf ("PASSED\n"); 33210311Sjmallett#endif 34210311Sjmallett return 0; 35210311Sjmallett } 36210311Sjmallett#ifdef DEBUG 37210311Sjmallett printf ("SKIPPED\n"); 38210311Sjmallett#endif 39210311Sjmallett } 40210311Sjmallett#ifdef DEBUG 41210311Sjmallett else 42210311Sjmallett printf ("SKIPPED\n"); 43210311Sjmallett#endif 44210311Sjmallett 45210311Sjmallett return 0; 46210311Sjmallett} 47210311Sjmallett