vx32

Local 9vx git repository for patches.
git clone git://r-36.net/vx32
Log | Files | Refs

cpu.h (3021B)


      1 /* libFLAC - Free Lossless Audio Codec library
      2  * Copyright (C) 2001,2002,2003,2004,2005  Josh Coalson
      3  *
      4  * Redistribution and use in source and binary forms, with or without
      5  * modification, are permitted provided that the following conditions
      6  * are met:
      7  *
      8  * - Redistributions of source code must retain the above copyright
      9  * notice, this list of conditions and the following disclaimer.
     10  *
     11  * - Redistributions in binary form must reproduce the above copyright
     12  * notice, this list of conditions and the following disclaimer in the
     13  * documentation and/or other materials provided with the distribution.
     14  *
     15  * - Neither the name of the Xiph.org Foundation nor the names of its
     16  * contributors may be used to endorse or promote products derived from
     17  * this software without specific prior written permission.
     18  *
     19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     20  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     21  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     22  * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
     23  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     24  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     25  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
     26  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
     27  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
     28  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
     29  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     30  */
     31 
     32 #ifndef FLAC__PRIVATE__CPU_H
     33 #define FLAC__PRIVATE__CPU_H
     34 
     35 #include "FLAC/ordinals.h"
     36 
     37 #ifdef HAVE_CONFIG_H
     38 #include <config.h>
     39 #endif
     40 
     41 typedef enum {
     42 	FLAC__CPUINFO_TYPE_IA32,
     43 	FLAC__CPUINFO_TYPE_PPC,
     44 	FLAC__CPUINFO_TYPE_UNKNOWN
     45 } FLAC__CPUInfo_Type;
     46 
     47 typedef struct {
     48 	FLAC__bool cmov;
     49 	FLAC__bool mmx;
     50 	FLAC__bool fxsr;
     51 	FLAC__bool sse;
     52 	FLAC__bool sse2;
     53 	FLAC__bool _3dnow;
     54 	FLAC__bool ext3dnow;
     55 	FLAC__bool extmmx;
     56 } FLAC__CPUInfo_IA32;
     57 
     58 typedef struct {
     59 	FLAC__bool altivec;
     60 	FLAC__bool ppc64;
     61 } FLAC__CPUInfo_PPC;
     62 
     63 extern const unsigned FLAC__CPUINFO_IA32_CPUID_CMOV;
     64 extern const unsigned FLAC__CPUINFO_IA32_CPUID_MMX;
     65 extern const unsigned FLAC__CPUINFO_IA32_CPUID_FXSR;
     66 extern const unsigned FLAC__CPUINFO_IA32_CPUID_SSE;
     67 extern const unsigned FLAC__CPUINFO_IA32_CPUID_SSE2;
     68 
     69 extern const unsigned FLAC__CPUINFO_IA32_CPUID_EXTENDED_AMD_3DNOW;
     70 extern const unsigned FLAC__CPUINFO_IA32_CPUID_EXTENDED_AMD_EXT3DNOW;
     71 extern const unsigned FLAC__CPUINFO_IA32_CPUID_EXTENDED_AMD_EXTMMX;
     72 
     73 typedef struct {
     74 	FLAC__bool use_asm;
     75 	FLAC__CPUInfo_Type type;
     76 	union {
     77 		FLAC__CPUInfo_IA32 ia32;
     78 		FLAC__CPUInfo_PPC ppc;
     79 	} data;
     80 } FLAC__CPUInfo;
     81 
     82 void FLAC__cpu_info(FLAC__CPUInfo *info);
     83 
     84 #ifndef FLAC__NO_ASM
     85 #ifdef FLAC__CPU_IA32
     86 #ifdef FLAC__HAS_NASM
     87 unsigned FLAC__cpu_info_asm_ia32();
     88 unsigned FLAC__cpu_info_extended_amd_asm_ia32();
     89 unsigned FLAC__cpu_info_sse_test_asm_ia32();
     90 #endif
     91 #endif
     92 #endif
     93 
     94 #endif