mesa/x86: add SSE4.1 runtime detection.
authorMatt Atwood <matthew.s.atwood@intel.com>
Fri, 2 May 2014 16:44:44 +0000 (09:44 -0700)
committerMatt Turner <mattst88@gmail.com>
Thu, 22 May 2014 17:17:16 +0000 (10:17 -0700)
Add a bit to _mesa_x86_features for SSE 4.1, along with macros to query.

Reviewed-by: Matt Turner <mattst88@gmail.com>
src/mesa/x86/common_x86.c
src/mesa/x86/common_x86_features.h

index a91f07e2e8916f508ee3d9927c5f0a755a3f1691..08b1558975ab1e7f7169f82f418e8acd2b4e1c0f 100644 (file)
@@ -241,6 +241,7 @@ _mesa_get_x86_features(void)
 
        /* get cpu features */
        cpu_features = _mesa_x86_cpuid_edx(1);
+       cpu_features_ecx = _mesa_x86_cpuid_ecx(1);
 
        if (cpu_features & X86_CPU_FPU)
           _mesa_x86_cpu_features |= X86_FEATURE_FPU;
@@ -257,6 +258,8 @@ _mesa_get_x86_features(void)
           _mesa_x86_cpu_features |= X86_FEATURE_XMM;
        if (cpu_features & X86_CPU_XMM2)
           _mesa_x86_cpu_features |= X86_FEATURE_XMM2;
+       if (cpu_features & x86_CPU_SSE4_1)
+          _mesa_x86_features |= X86_FEATURE_SSE4_1;
 #endif
 
        /* query extended cpu features */
@@ -341,6 +344,9 @@ _mesa_get_x86_features(void)
    _mesa_x86_cpu_features |= X86_FEATURE_XMM | X86_FEATURE_XMM2;
 
    __get_cpuid(1, &eax, &ebx, &ecx, &edx);
+
+   if (ecx & bit_SSE4_1)
+      _mesa_x86_cpu_features |= X86_FEATURE_SSE4_1;
 #endif /* USE_X86_ASM */
 
    (void) detection_debug;
index 8625484403447601807890c02d387e81f6e4f80a..66f2cf651c2d85b8a2e85d9a81d3e09780bc0cd3 100644 (file)
@@ -43,6 +43,7 @@
 #define X86_FEATURE_XMM2       (1<<6)
 #define X86_FEATURE_3DNOWEXT   (1<<7)
 #define X86_FEATURE_3DNOW      (1<<8)
+#define X86_FEATURE_SSE4_1     (1<<9)
 
 /* standard X86 CPU features */
 #define X86_CPU_FPU            (1<<0)
@@ -50,6 +51,8 @@
 #define X86_CPU_MMX            (1<<23)
 #define X86_CPU_XMM            (1<<25)
 #define X86_CPU_XMM2           (1<<26)
+/* ECX. */
+#define X86_CPU_SSE4_1         (1<<19)
 
 /* extended X86 CPU features */
 #define X86_CPUEXT_MMX_EXT     (1<<22)
@@ -62,6 +65,7 @@
 #define cpu_has_xmm2           (_mesa_x86_cpu_features & X86_FEATURE_XMM2)
 #define cpu_has_3dnow          (_mesa_x86_cpu_features & X86_FEATURE_3DNOW)
 #define cpu_has_3dnowext       (_mesa_x86_cpu_features & X86_FEATURE_3DNOWEXT)
+#define cpu_has_sse4_1         (_mesa_x86_cpu_features & X86_FEATURE_SSE4_1)
 
 #endif