Hello! 2012-06-06 Uros Bizjak <ubiz...@gmail.com>
* gcc.target/i386/avx-os-support.h (XCR_XFEATURE_ENABLED_MASK): New. (XSTATE_FP): Ditto. (XSTATE_SSE): Ditto. (XSTATE_YMM): Ditto. (avx_os_support): Use new defines. Tested on x86_64-pc-linux-gnu AVX target, committed to mainline SVN. Uros.
Index: avx-os-support.h =================================================================== --- avx-os-support.h (revision 188268) +++ avx-os-support.h (working copy) @@ -1,10 +1,18 @@ /* Check if the OS supports executing AVX instructions. */ +#define XCR_XFEATURE_ENABLED_MASK 0x0 + +#define XSTATE_FP 0x1 +#define XSTATE_SSE 0x2 +#define XSTATE_YMM 0x4 + static int avx_os_support (void) { unsigned int eax, edx; + unsigned int ecx = XCR_XFEATURE_ENABLED_MASK; - __asm__ ("xgetbv" : "=a" (eax), "=d" (edx) : "c" (0)); - return (eax & 6) == 6; + __asm__ ("xgetbv" : "=a" (eax), "=d" (edx) : "c" (ecx)); + + return (eax & (XSTATE_SSE | XSTATE_YMM)) == (XSTATE_SSE | XSTATE_YMM); }