u_cpu_detect.h revision ef2c80f5064b2d1830cea5bbcacde850138d54c4
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 <anholt@FreeBSD.org> 33 */ 34 35#ifndef _UTIL_CPU_DETECT_H 36#define _UTIL_CPU_DETECT_H 37 38#include "pipe/p_compiler.h" 39#include "pipe/p_config.h" 40 41struct util_cpu_caps { 42 unsigned nr_cpus; 43 44 /* Feature flags */ 45 int x86_cpu_type; 46 unsigned cacheline; 47 48 unsigned has_tsc:1; 49 unsigned has_mmx:1; 50 unsigned has_mmx2:1; 51 unsigned has_sse:1; 52 unsigned has_sse2:1; 53 unsigned has_sse3:1; 54 unsigned has_ssse3:1; 55 unsigned has_sse4_1:1; 56 unsigned has_sse4_2:1; 57 unsigned has_avx:1; 58 unsigned has_3dnow:1; 59 unsigned has_3dnow_ext:1; 60 unsigned has_altivec:1; 61}; 62 63extern struct util_cpu_caps 64util_cpu_caps; 65 66void util_cpu_detect(void); 67 68 69#endif /* _UTIL_CPU_DETECT_H */ 70