93d21161a987c7cef811e70dcc2cbd60aea6cb3e
1 /* $Id: common_x86.c,v 1.7 2000/10/23 00:16:28 gareth Exp $ */
4 * Mesa 3-D graphics library
7 * Copyright (C) 1999-2000 Brian Paul All Rights Reserved.
9 * Permission is hereby granted, free of charge, to any person obtaining a
10 * copy of this software and associated documentation files (the "Software"),
11 * to deal in the Software without restriction, including without limitation
12 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
13 * and/or sell copies of the Software, and to permit persons to whom the
14 * Software is furnished to do so, subject to the following conditions:
16 * The above copyright notice and this permission notice shall be included
17 * in all copies or substantial portions of the Software.
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
22 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
23 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
24 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 * Check CPU capabilities & initialize optimized funtions for this particular
32 * Written by Holger Waechtler <holger@akaflieg.extern.tu-berlin.de>
33 * Changed by Andre Werthmann <wertmann@cs.uni-potsdam.de> for using the
34 * new Katmai functions.
40 #include "common_x86_asm.h"
43 int gl_x86_cpu_features
= 0;
45 /* No reason for this to be public.
47 extern int gl_identify_x86_cpu_features( void );
50 static void message( const char *msg
)
52 if ( getenv( "MESA_DEBUG" ) ) {
53 fprintf( stderr
, "%s\n", msg
);
58 void gl_init_all_x86_transform_asm( void )
61 gl_x86_cpu_features
= gl_identify_x86_cpu_features();
63 if ( getenv( "MESA_NO_ASM" ) ) {
64 gl_x86_cpu_features
= 0;
67 if ( gl_x86_cpu_features
) {
68 gl_init_x86_transform_asm();
73 if ( getenv( "MESA_NO_MMX" ) == 0 ) {
74 message( "MMX cpu detected." );
76 gl_x86_cpu_features
&= ~(X86_FEATURE_MMX
);
82 if ( cpu_has_3dnow
) {
83 if ( getenv( "MESA_NO_3DNOW" ) == 0 ) {
84 message( "3Dnow cpu detected." );
85 gl_init_3dnow_transform_asm();
87 gl_x86_cpu_features
&= ~(X86_FEATURE_3DNOW
);
94 if ( getenv( "MESA_NO_KATMAI" ) == 0 ) {
95 message( "Katmai cpu detected." );
96 gl_init_katmai_transform_asm();
98 gl_x86_cpu_features
&= ~(X86_FEATURE_XMM
);
105 /* Note: the above function must be called before this one, so that
106 * gl_x86_cpu_features gets correctly initialized.
108 void gl_init_all_x86_vertex_asm( void )
111 if ( gl_x86_cpu_features
) {
112 gl_init_x86_vertex_asm();
116 if ( cpu_has_3dnow
&& getenv( "MESA_NO_3DNOW" ) == 0 ) {
117 gl_init_3dnow_vertex_asm();
121 #ifdef USE_KATMAI_ASM
122 if ( cpu_has_xmm
&& getenv( "MESA_NO_KATMAI" ) == 0 ) {
123 gl_init_katmai_vertex_asm();