Commit | Line | Data |
---|---|---|
2ba45a60 DM |
1 | /* |
2 | * This file is part of FFmpeg. | |
3 | * | |
4 | * FFmpeg is free software; you can redistribute it and/or | |
5 | * modify it under the terms of the GNU Lesser General Public | |
6 | * License as published by the Free Software Foundation; either | |
7 | * version 2.1 of the License, or (at your option) any later version. | |
8 | * | |
9 | * FFmpeg is distributed in the hope that it will be useful, | |
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
12 | * Lesser General Public License for more details. | |
13 | * | |
14 | * You should have received a copy of the GNU Lesser General Public | |
15 | * License along with FFmpeg; if not, write to the Free Software | |
16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |
17 | */ | |
18 | ||
19 | #ifndef AVUTIL_X86_CPU_H | |
20 | #define AVUTIL_X86_CPU_H | |
21 | ||
22 | #include "config.h" | |
23 | #include "libavutil/cpu.h" | |
24 | #include "libavutil/cpu_internal.h" | |
25 | ||
26 | #define AV_CPU_FLAG_AMD3DNOW AV_CPU_FLAG_3DNOW | |
27 | #define AV_CPU_FLAG_AMD3DNOWEXT AV_CPU_FLAG_3DNOWEXT | |
28 | ||
29 | #define X86_AMD3DNOW(flags) CPUEXT(flags, AMD3DNOW) | |
30 | #define X86_AMD3DNOWEXT(flags) CPUEXT(flags, AMD3DNOWEXT) | |
31 | #define X86_MMX(flags) CPUEXT(flags, MMX) | |
32 | #define X86_MMXEXT(flags) CPUEXT(flags, MMXEXT) | |
33 | #define X86_SSE(flags) CPUEXT(flags, SSE) | |
34 | #define X86_SSE2(flags) CPUEXT(flags, SSE2) | |
35 | #define X86_SSE3(flags) CPUEXT(flags, SSE3) | |
36 | #define X86_SSSE3(flags) CPUEXT(flags, SSSE3) | |
37 | #define X86_SSE4(flags) CPUEXT(flags, SSE4) | |
38 | #define X86_SSE42(flags) CPUEXT(flags, SSE42) | |
39 | #define X86_AVX(flags) CPUEXT(flags, AVX) | |
40 | #define X86_XOP(flags) CPUEXT(flags, XOP) | |
41 | #define X86_FMA3(flags) CPUEXT(flags, FMA3) | |
42 | #define X86_FMA4(flags) CPUEXT(flags, FMA4) | |
43 | #define X86_AVX2(flags) CPUEXT(flags, AVX2) | |
44 | ||
45 | #define EXTERNAL_AMD3DNOW(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, AMD3DNOW) | |
46 | #define EXTERNAL_AMD3DNOWEXT(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, AMD3DNOWEXT) | |
47 | #define EXTERNAL_MMX(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, MMX) | |
48 | #define EXTERNAL_MMXEXT(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, MMXEXT) | |
49 | #define EXTERNAL_SSE(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, SSE) | |
50 | #define EXTERNAL_SSE2(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, SSE2) | |
51 | #define EXTERNAL_SSE3(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, SSE3) | |
52 | #define EXTERNAL_SSSE3(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, SSSE3) | |
53 | #define EXTERNAL_SSE4(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, SSE4) | |
54 | #define EXTERNAL_SSE42(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, SSE42) | |
55 | #define EXTERNAL_AVX(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, AVX) | |
56 | #define EXTERNAL_XOP(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, XOP) | |
57 | #define EXTERNAL_FMA3(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, FMA3) | |
58 | #define EXTERNAL_FMA4(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, FMA4) | |
59 | #define EXTERNAL_AVX2(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, AVX2) | |
60 | ||
61 | #define INLINE_AMD3DNOW(flags) CPUEXT_SUFFIX(flags, _INLINE, AMD3DNOW) | |
62 | #define INLINE_AMD3DNOWEXT(flags) CPUEXT_SUFFIX(flags, _INLINE, AMD3DNOWEXT) | |
63 | #define INLINE_MMX(flags) CPUEXT_SUFFIX(flags, _INLINE, MMX) | |
64 | #define INLINE_MMXEXT(flags) CPUEXT_SUFFIX(flags, _INLINE, MMXEXT) | |
65 | #define INLINE_SSE(flags) CPUEXT_SUFFIX(flags, _INLINE, SSE) | |
66 | #define INLINE_SSE2(flags) CPUEXT_SUFFIX(flags, _INLINE, SSE2) | |
67 | #define INLINE_SSE3(flags) CPUEXT_SUFFIX(flags, _INLINE, SSE3) | |
68 | #define INLINE_SSSE3(flags) CPUEXT_SUFFIX(flags, _INLINE, SSSE3) | |
69 | #define INLINE_SSE4(flags) CPUEXT_SUFFIX(flags, _INLINE, SSE4) | |
70 | #define INLINE_SSE42(flags) CPUEXT_SUFFIX(flags, _INLINE, SSE42) | |
71 | #define INLINE_AVX(flags) CPUEXT_SUFFIX(flags, _INLINE, AVX) | |
72 | #define INLINE_XOP(flags) CPUEXT_SUFFIX(flags, _INLINE, XOP) | |
73 | #define INLINE_FMA3(flags) CPUEXT_SUFFIX(flags, _INLINE, FMA3) | |
74 | #define INLINE_FMA4(flags) CPUEXT_SUFFIX(flags, _INLINE, FMA4) | |
75 | #define INLINE_AVX2(flags) CPUEXT_SUFFIX(flags, _INLINE, AVX2) | |
76 | ||
77 | void ff_cpu_cpuid(int index, int *eax, int *ebx, int *ecx, int *edx); | |
78 | void ff_cpu_xgetbv(int op, int *eax, int *edx); | |
79 | int ff_cpu_cpuid_test(void); | |
80 | ||
81 | #endif /* AVUTIL_X86_CPU_H */ |