/* Check if the OS supports executing AVX512F instructions. */ #define XCR_XFEATURE_ENABLED_MASK 0x0 #define XSTATE_FP 0x1 #define XSTATE_SSE 0x2 #define XSTATE_YMM 0x4 #define XSTATE_OPMASK 0x20 #define XSTATE_ZMM 0x40 #define XSTATE_HI_ZMM 0x80 static int avx512f_os_support (void) { unsigned int eax, edx; unsigned int ecx = XCR_XFEATURE_ENABLED_MASK; unsigned int mask = XSTATE_SSE | XSTATE_YMM | XSTATE_OPMASK | XSTATE_ZMM | XSTATE_HI_ZMM; __asm__ ("xgetbv" : "=a" (eax), "=d" (edx) : "c" (ecx)); return ((eax & mask) == mask); }