summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Calaby <julian.calaby@gmail.com>2016-06-27 23:22:20 +1000
committerErik de Castro Lopo <erikd@mega-nerd.com>2016-06-28 18:08:12 +1000
commit42c5de6e44e50717ef33c48001e85ac951be4e8c (patch)
tree974aca150303d7a8a91403074a0e7aa1d8d02bb9
parenteae338e0e6f3d6948f47bfc015d95fa7e9553d00 (diff)
downloadflac-42c5de6e44e50717ef33c48001e85ac951be4e8c.tar.gz
libFLAC/cpu.c: Inline *_disable_avx()
Also only print out OS AVX status if AVX is actually enabled.
-rw-r--r--src/libFLAC/cpu.c47
1 files changed, 14 insertions, 33 deletions
diff --git a/src/libFLAC/cpu.c b/src/libFLAC/cpu.c
index 25a7f444..ef289acf 100644
--- a/src/libFLAC/cpu.c
+++ b/src/libFLAC/cpu.c
@@ -128,24 +128,6 @@ ia32_disable_sse(FLAC__CPUInfo *info)
info->ia32.sse41 = false;
info->ia32.sse42 = false;
}
-
-static void
-ia32_disable_avx(FLAC__CPUInfo *info)
-{
- info->ia32.avx = false;
- info->ia32.avx2 = false;
- info->ia32.fma = false;
-}
-#endif
-
-#if defined FLAC__CPU_X86_64
-static void
-x86_64_disable_avx(FLAC__CPUInfo *info)
-{
- info->x86.avx = false;
- info->x86.avx2 = false;
- info->x86.fma = false;
-}
#endif
#if defined FLAC__CPU_IA32 || defined FLAC__CPU_X86_64
@@ -334,16 +316,15 @@ ia32_cpu_info (FLAC__CPUInfo *info)
/*
* now have to check for OS support of AVX instructions
*/
- if (FLAC__HAS_X86INTRIN && info->ia32.avx && ia32_osxsave) {
- FLAC__uint32 ecr = cpu_xgetbv_x86();
- if ((ecr & 0x6) != 0x6)
- ia32_disable_avx(info);
-
- dfprintf(stderr, " AVX OS sup . %c\n", info->ia32.avx ? 'Y' : 'n');
+ if (!FLAC__HAS_X86INTRIN || !info->ia32.avx || !ia32_osxsave || (cpu_xgetbv_x86() & 0x6) != 0x6) {
+ /* no OS AVX support */
+ info->ia32.avx = false;
+ info->ia32.avx2 = false;
+ info->ia32.fma = false;
}
- else /* no OS AVX support */
- ia32_disable_avx(info);
+ if (FLAC__HAS_X86INTRIN && FLAC__AVX_SUPPORTED)
+ dfprintf(stderr, " AVX OS sup . %c\n", info->ia32.avx ? 'Y' : 'n');
#else
info->use_asm = false;
#endif
@@ -396,15 +377,15 @@ x86_64_cpu_info (FLAC__CPUInfo *info)
/*
* now have to check for OS support of AVX instructions
*/
- if (info->x86.avx && x86_osxsave) {
- FLAC__uint32 ecr = cpu_xgetbv_x86();
- if ((ecr & 0x6) != 0x6)
- x86_64_disable_avx(info);
+ if (!info->x86.avx || !x86_osxsave || (cpu_xgetbv_x86() & 0x6) != 0x6) {
+ /* no OS AVX support */
+ info->x86.avx = false;
+ info->x86.avx2 = false;
+ info->x86.fma = false;
+ }
+ if (FLAC__AVX_SUPPORTED)
dfprintf(stderr, " AVX OS sup . %c\n", info->x86.avx ? 'Y' : 'n');
- }
- else /* no OS AVX support */
- x86_64_disable_avx(info);
#endif
}