st/mesa: Treat vertex outputs absent in outputMapping as zero in mesa_to_tgsi
[mesa.git] / src / mesa / x86 / common_x86_features.h
index f8c7b2ab7bd85950b53e003c6d20db235e3714ff..90105dafc6c6f51649c8d071646ebf22e2a1a30d 100644 (file)
@@ -1,10 +1,8 @@
-/* $Id: common_x86_features.h,v 1.3 2001/03/03 21:11:32 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
- * Version:  3.5
  *
- * Copyright (C) 1999  Brian Paul   All Rights Reserved.
+ * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /*
  * _mesa_identify_x86_cpu_features() and interpreted with the cpu_has_*
  * helper macros.
  *
- * Gareth Hughes <gareth@valinux.com>
+ * Gareth Hughes
  */
 
 #ifndef __COMMON_X86_FEATURES_H__
 #define __COMMON_X86_FEATURES_H__
 
-/* Capabilities of CPUs
- */
-#define X86_FEATURE_FPU                0x00000001
-#define X86_FEATURE_VME                0x00000002
-#define X86_FEATURE_DE         0x00000004
-#define X86_FEATURE_PSE                0x00000008
-#define X86_FEATURE_TSC                0x00000010
-#define X86_FEATURE_MSR                0x00000020
-#define X86_FEATURE_PAE                0x00000040
-#define X86_FEATURE_MCE                0x00000080
-#define X86_FEATURE_CX8                0x00000100
-#define X86_FEATURE_APIC       0x00000200
-#define X86_FEATURE_10         0x00000400
-#define X86_FEATURE_SEP                0x00000800
-#define X86_FEATURE_MTRR       0x00001000
-#define X86_FEATURE_PGE                0x00002000
-#define X86_FEATURE_MCA                0x00004000
-#define X86_FEATURE_CMOV       0x00008000
-#define X86_FEATURE_PAT                0x00010000
-#define X86_FEATURE_PSE36      0x00020000
-#define X86_FEATURE_18         0x00040000
-#define X86_FEATURE_19         0x00080000
-#define X86_FEATURE_20         0x00100000
-#define X86_FEATURE_21         0x00200000
-#define X86_FEATURE_MMXEXT     0x00400000
-#define X86_FEATURE_MMX                0x00800000
-#define X86_FEATURE_FXSR       0x01000000
-#define X86_FEATURE_XMM                0x02000000
-#define X86_FEATURE_26         0x04000000
-#define X86_FEATURE_27         0x08000000
-#define X86_FEATURE_28         0x10000000
-#define X86_FEATURE_29         0x20000000
-#define X86_FEATURE_3DNOWEXT   0x40000000
-#define X86_FEATURE_3DNOW      0x80000000
+#define X86_FEATURE_FPU                (1<<0)
+#define X86_FEATURE_CMOV       (1<<1)
+#define X86_FEATURE_MMXEXT     (1<<2)
+#define X86_FEATURE_MMX                (1<<3)
+#define X86_FEATURE_FXSR       (1<<4)
+#define X86_FEATURE_XMM                (1<<5)
+#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)
+#define X86_CPU_CMOV           (1<<15)
+#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)
+#define X86_CPUEXT_3DNOW_EXT   (1<<30)
+#define X86_CPUEXT_3DNOW       (1<<31)
+
+#ifdef __MMX__
+#define cpu_has_mmx            1
+#else
 #define cpu_has_mmx            (_mesa_x86_cpu_features & X86_FEATURE_MMX)
+#endif
+
+#define cpu_has_mmxext         (_mesa_x86_cpu_features & X86_FEATURE_MMXEXT)
+
+#if defined(__SSE__) || (defined(_M_IX86_FP) && (_M_IX86_FP >= 1)) || defined(_M_X64)
+#define cpu_has_xmm            1
+#else
 #define cpu_has_xmm            (_mesa_x86_cpu_features & X86_FEATURE_XMM)
+#endif
+
+#if defined(__SSE2__) || (defined(_M_IX86_FP) && (_M_IX86_FP >= 2)) || defined(_M_X64)
+#define cpu_has_xmm2           1
+#else
+#define cpu_has_xmm2           (_mesa_x86_cpu_features & X86_FEATURE_XMM2)
+#endif
+
+#ifdef __3dNOW__
+#define cpu_has_3dnow          1
+#else
 #define cpu_has_3dnow          (_mesa_x86_cpu_features & X86_FEATURE_3DNOW)
+#endif
+
+#define cpu_has_3dnowext       (_mesa_x86_cpu_features & X86_FEATURE_3DNOWEXT)
 
+#ifdef __SSE4_1__
+#define cpu_has_sse4_1         1
+#else
+#define cpu_has_sse4_1         (_mesa_x86_cpu_features & X86_FEATURE_SSE4_1)
 #endif
+
+#endif
+