1177387Sgnn#include <stdlib.h> 2177387Sgnn#include "cpuid.h" 3177387Sgnn#include "m512-check.h" 4177387Sgnn#include "avx512f-os-support.h" 5177387Sgnn 6177387Sgnnstatic void avx512ifma_test (void); 7177387Sgnn 8177387Sgnnstatic void __attribute__ ((noinline)) do_test (void) 9177387Sgnn{ 10177387Sgnn avx512ifma_test (); 11177387Sgnn} 12177387Sgnn 13177387Sgnnint 14177387Sgnnmain () 15177387Sgnn{ 16177387Sgnn unsigned int eax, ebx, ecx, edx; 17177387Sgnn 18177387Sgnn if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx)) 19177387Sgnn return 0; 20177387Sgnn 21177387Sgnn if ((ecx & bit_OSXSAVE) == (bit_OSXSAVE)) 22177387Sgnn { 23177387Sgnn if (__get_cpuid_max (0, NULL) < 7) 24177387Sgnn return 0; 25177387Sgnn 26177387Sgnn __cpuid_count (7, 0, eax, ebx, ecx, edx); 27177387Sgnn 28177387Sgnn if ((avx512f_os_support ()) && ((ebx & bit_AVX512IFMA) == bit_AVX512IFMA)) 29177387Sgnn { 30177387Sgnn do_test (); 31177872Sgnn#ifdef DEBUG 32177387Sgnn printf ("PASSED\n"); 33177387Sgnn#endif 34 return 0; 35 } 36#ifdef DEBUG 37 printf ("SKIPPED\n"); 38#endif 39 } 40#ifdef DEBUG 41 else 42 printf ("SKIPPED\n"); 43#endif 44 45 return 0; 46} 47