u_cpu_detect.h revision 3469715a8a171512cf9b528702e70393f01c6041
1a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org/**************************************************************************
2a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org *
3a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org * Copyright 2008 Dennis Smit
4a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org * All Rights Reserved.
5a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org *
6a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org * Permission is hereby granted, free of charge, to any person obtaining a
7a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org * copy of this software and associated documentation files (the "Software"),
8a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org * to deal in the Software without restriction, including without limitation
9a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org * on the rights to use, copy, modify, merge, publish, distribute, sub
10a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org * license, and/or sell copies of the Software, and to permit persons to whom
11a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org * the Software is furnished to do so, subject to the following conditions:
12a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org *
13a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org * The above copyright notice and this permission notice (including the next
14a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org * paragraph) shall be included in all copies or substantial portions of the
15a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org * Software.
16a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org *
17a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.  IN NO EVENT SHALL
20a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org * AUTHORS, COPYRIGHT HOLDERS, AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
21a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
22a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
23a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org * USE OR OTHER DEALINGS IN THE SOFTWARE.
24a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org *
25a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org ***************************************************************************/
26a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org
27a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org/**
28c612e0211bdb8821cbd7886e15b0273ed82d2e9edanno@chromium.org * @file
29a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org * CPU feature detection.
30a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org *
31a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org * @author Dennis Smit
32a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org * @author Based on the work of Eric Anholt <anholt@FreeBSD.org>
33a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org */
34a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org
35a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org#ifndef _UTIL_CPU_DETECT_H
36a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org#define _UTIL_CPU_DETECT_H
37a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org
38a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org
39a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org#include "pipe/p_compiler.h"
40a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org#include "pipe/p_config.h"
41394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com
42394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com
43394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com#ifdef	__cplusplus
44394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.comextern "C" {
45394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com#endif
46394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com
47394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com
48a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.orgstruct util_cpu_caps {
49a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org   unsigned nr_cpus;
50a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org
51a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org   /* Feature flags */
52a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org   int x86_cpu_type;
53a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org   unsigned cacheline;
54a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org
55a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org   unsigned has_tsc:1;
569ed27460593e67bc55b9feb15ca7c301e9f804b0rossberg@chromium.org   unsigned has_mmx:1;
57394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com   unsigned has_mmx2:1;
58394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com   unsigned has_sse:1;
59394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com   unsigned has_sse2:1;
60394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com   unsigned has_sse3:1;
61394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com   unsigned has_ssse3:1;
62394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com   unsigned has_sse4_1:1;
63394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com   unsigned has_sse4_2:1;
64c612e0211bdb8821cbd7886e15b0273ed82d2e9edanno@chromium.org   unsigned has_avx:1;
65c612e0211bdb8821cbd7886e15b0273ed82d2e9edanno@chromium.org   unsigned has_3dnow:1;
66a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org   unsigned has_3dnow_ext:1;
67a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org   unsigned has_altivec:1;
68a8bb4d938869bdcdf759625ee868775ff24826d9svenpanne@chromium.org};
699ed27460593e67bc55b9feb15ca7c301e9f804b0rossberg@chromium.org
70394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.comextern struct util_cpu_caps
71394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.comutil_cpu_caps;
72394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com
73394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.comvoid util_cpu_detect(void);
74394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com
75394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com
76394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com#ifdef	__cplusplus
77394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com}
78394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com#endif
79394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com
80394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com
81394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com#endif /* _UTIL_CPU_DETECT_H */
82394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com