Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
5564 serge 1
/**************************************************************************
2
 *
3
 * Copyright 2008 Dennis Smit
4
 * All Rights Reserved.
5
 *
6
 * Permission is hereby granted, free of charge, to any person obtaining a
7
 * copy of this software and associated documentation files (the "Software"),
8
 * to deal in the Software without restriction, including without limitation
9
 * on the rights to use, copy, modify, merge, publish, distribute, sub
10
 * license, and/or sell copies of the Software, and to permit persons to whom
11
 * the Software is furnished to do so, subject to the following conditions:
12
 *
13
 * The above copyright notice and this permission notice (including the next
14
 * paragraph) shall be included in all copies or substantial portions of the
15
 * Software.
16
 *
17
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
 * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.  IN NO EVENT SHALL
20
 * AUTHORS, COPYRIGHT HOLDERS, AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
21
 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
22
 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
23
 * USE OR OTHER DEALINGS IN THE SOFTWARE.
24
 *
25
 ***************************************************************************/
26
 
27
/**
28
 * @file
29
 * CPU feature detection.
30
 *
31
 * @author Dennis Smit
32
 * @author Based on the work of Eric Anholt 
33
 */
34
 
35
#ifndef _UTIL_CPU_DETECT_H
36
#define _UTIL_CPU_DETECT_H
37
 
38
 
39
#include "pipe/p_compiler.h"
40
#include "pipe/p_config.h"
41
 
42
 
43
#ifdef	__cplusplus
44
extern "C" {
45
#endif
46
 
47
 
48
struct util_cpu_caps {
49
   unsigned nr_cpus;
50
 
51
   /* Feature flags */
52
   int x86_cpu_type;
53
   unsigned cacheline;
54
 
55
   unsigned has_intel:1;
56
   unsigned has_tsc:1;
57
   unsigned has_mmx:1;
58
   unsigned has_mmx2:1;
59
   unsigned has_sse:1;
60
   unsigned has_sse2:1;
61
   unsigned has_sse3:1;
62
   unsigned has_ssse3:1;
63
   unsigned has_sse4_1:1;
64
   unsigned has_sse4_2:1;
65
   unsigned has_popcnt:1;
66
   unsigned has_avx:1;
67
   unsigned has_avx2:1;
68
   unsigned has_f16c:1;
69
   unsigned has_3dnow:1;
70
   unsigned has_3dnow_ext:1;
71
   unsigned has_xop:1;
72
   unsigned has_altivec:1;
73
   unsigned has_daz:1;
74
};
75
 
76
extern struct util_cpu_caps
77
util_cpu_caps;
78
 
79
void util_cpu_detect(void);
80
 
81
 
82
#ifdef	__cplusplus
83
}
84
#endif
85
 
86
 
87
#endif /* _UTIL_CPU_DETECT_H */