From: "Ronald S. Bultje" <rsbul...@gmail.com> --- configure | 2 ++ libavutil/x86/cpu.c | 14 ++++++++++++++ 2 files changed, 16 insertions(+)
diff --git a/configure b/configure index 70b3f56..72c4943 100755 --- a/configure +++ b/configure @@ -1061,6 +1061,7 @@ HAVE_LIST=" cbrtf closesocket cmov + cpuid dcbzl dev_bktr_ioctl_bt848_h dev_bktr_ioctl_meteor_h @@ -2647,6 +2648,7 @@ EOF check_code cc mmintrin.h "_mm_empty()" && enable mm_empty check_code cc immintrin.h "xgetbv(0)" && enable xgetbv +check_code cc intrin.h "int info[4]; _cpuid(info, 0)" && enable cpuid _restrict= for restrict_keyword in restrict __restrict__ __restrict; do diff --git a/libavutil/x86/cpu.c b/libavutil/x86/cpu.c index c6c96f0..70e3125 100644 --- a/libavutil/x86/cpu.c +++ b/libavutil/x86/cpu.c @@ -25,6 +25,7 @@ #include "libavutil/x86_cpu.h" #include "libavutil/cpu.h" +#if HAVE_INLINE_ASM /* ebx saving is necessary for PIC. gcc seems unable to see it alone */ #define cpuid(index, eax, ebx, ecx, edx) \ __asm__ volatile ( \ @@ -33,6 +34,19 @@ "xchg %%"REG_b", %%"REG_S \ : "=a" (eax), "=S" (ebx), "=c" (ecx), "=d" (edx) \ : "0" (index)) +#elif HAVE_CPUID +#include <intrin.h> + +#define cpuid(index, eax, ebx, ecx, edx) \ + do { \ + int info[4]; \ + _cpuid(info, index); \ + eax = info[0]; \ + ebx = info[1]; \ + ecx = info[2]; \ + edx = info[3]; \ + } while (0) +#endif /* HAVE_CPUID */ #if HAVE_INLINE_ASM #define xgetbv(index, eax, edx) \ -- 1.7.9.5 _______________________________________________ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel