LMMS
Loading...
Searching...
No Matches
cpu.h
Go to the documentation of this file.
1/* libFLAC - Free Lossless Audio Codec library
2 * Copyright (C) 2001-2009 Josh Coalson
3 * Copyright (C) 2011-2014 Xiph.Org Foundation
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * - Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 *
12 * - Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 *
16 * - Neither the name of the Xiph.org Foundation nor the names of its
17 * contributors may be used to endorse or promote products derived from
18 * this software without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
24 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
27 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
28 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
29 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 */
32
33#ifndef FLAC__PRIVATE__CPU_H
34#define FLAC__PRIVATE__CPU_H
35
36#include "../../../ordinals.h"
37
38#ifdef HAVE_CONFIG_H
39#include <config.h>
40#endif
41
47
48#if defined FLAC__CPU_IA32
49typedef struct {
50 FLAC__bool cmov;
51 FLAC__bool mmx;
52 FLAC__bool sse;
53 FLAC__bool sse2;
54
55 FLAC__bool sse3;
56 FLAC__bool ssse3;
57 FLAC__bool sse41;
58 FLAC__bool sse42;
59 FLAC__bool avx;
60 FLAC__bool avx2;
61 FLAC__bool fma;
62} FLAC__CPUInfo_IA32;
63#elif defined FLAC__CPU_X86_64
64typedef struct {
65 FLAC__bool sse3;
66 FLAC__bool ssse3;
67 FLAC__bool sse41;
68 FLAC__bool sse42;
69 FLAC__bool avx;
70 FLAC__bool avx2;
71 FLAC__bool fma;
72} FLAC__CPUInfo_x86;
73#endif
74
75typedef struct {
78#if defined FLAC__CPU_IA32
79 FLAC__CPUInfo_IA32 ia32;
80#elif defined FLAC__CPU_X86_64
81 FLAC__CPUInfo_x86 x86;
82#endif
84
86
87#ifndef FLAC__NO_ASM
88# if defined FLAC__CPU_IA32 && defined FLAC__HAS_NASM
89FLAC__uint32 FLAC__cpu_have_cpuid_asm_ia32(void);
90void FLAC__cpu_info_asm_ia32(FLAC__uint32 *flags_edx, FLAC__uint32 *flags_ecx);
91# endif
92# if (defined FLAC__CPU_IA32 || defined FLAC__CPU_X86_64) && defined FLAC__HAS_X86INTRIN
93FLAC__uint32 FLAC__cpu_have_cpuid_x86(void);
94void FLAC__cpu_info_x86(FLAC__uint32 level, FLAC__uint32 *eax, FLAC__uint32 *ebx, FLAC__uint32 *ecx, FLAC__uint32 *edx);
95FLAC__uint32 FLAC__cpu_xgetbv_x86(void);
96# endif
97#endif
98
99#endif
FLAC__CPUInfo_Type
Definition cpu.h:42
@ FLAC__CPUINFO_TYPE_IA32
Definition cpu.h:43
@ FLAC__CPUINFO_TYPE_X86_64
Definition cpu.h:44
@ FLAC__CPUINFO_TYPE_UNKNOWN
Definition cpu.h:45
void FLAC__cpu_info(FLAC__CPUInfo *info)
Definition cpu.c:144
struct backing_store_struct * info
Definition jmemsys.h:183
int FLAC__bool
Definition ordinals.h:70
uint32_t FLAC__uint32
Definition ordinals.h:65
Definition cpu.h:75
FLAC__bool use_asm
Definition cpu.h:76
FLAC__CPUInfo_Type type
Definition cpu.h:77