common_x86.c revision 4f738b4c1010ddf2e1dc404c198137abeef117d4
1
2/*
3 * Mesa 3-D graphics library
4 * Version:  3.1
5 *
6 * Copyright (C) 1999  Brian Paul   All Rights Reserved.
7 *
8 * Permission is hereby granted, free of charge, to any person obtaining a
9 * copy of this software and associated documentation files (the "Software"),
10 * to deal in the Software without restriction, including without limitation
11 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
12 * and/or sell copies of the Software, and to permit persons to whom the
13 * Software is furnished to do so, subject to the following conditions:
14 *
15 * The above copyright notice and this permission notice shall be included
16 * in all copies or substantial portions of the Software.
17 *
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
21 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
22 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
23 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24 */
25
26
27/*
28 *  Check CPU capabilities & initialize optimized funtions for this particular
29 *   processor.
30 *
31 *  Written by Holger Waechtler <holger@akaflieg.extern.tu-berlin.de>
32 */
33
34#include <stdlib.h>
35#include <stdio.h>
36#include "common_x86asm.h"
37
38int gl_x86_cpu_features = 0;
39
40
41void gl_init_all_x86_asm (void)
42{
43#ifdef USE_X86_ASM
44   gl_x86_cpu_features = gl_identify_x86_cpu_features ();
45
46   if (gl_x86_cpu_features & GL_CPU_GenuineIntel) {
47      fprintf (stderr, "GenuineIntel cpu detected.\n");
48   }
49   gl_init_x86_asm_transforms ();
50
51
52#ifdef USE_MMX_ASM
53   if (gl_x86_cpu_features & GL_CPU_MMX) {
54      char *s = getenv( "MESA_NO_MMX" );
55      if (s == NULL) {
56         fprintf (stderr, "MMX cpu detected.\n");
57      } else {
58         gl_x86_cpu_features &= (~GL_CPU_MMX);
59      }
60   }
61#endif
62
63
64#ifdef USE_3DNOW_ASM
65   if (gl_x86_cpu_features & GL_CPU_3Dnow) {
66      char *s = getenv( "MESA_NO_3DNOW" );
67      if (s == NULL) {
68         fprintf (stderr, "3Dnow cpu detected.\n");
69         gl_init_3dnow_asm_transforms ();
70      } else {
71         gl_x86_cpu_features &= (~GL_CPU_3Dnow);
72      }
73   }
74#endif
75
76#endif
77}
78
79