diff options
author | Julian Calaby <julian.calaby@gmail.com> | 2016-06-27 23:22:20 +1000 |
---|---|---|
committer | Erik de Castro Lopo <erikd@mega-nerd.com> | 2016-06-28 18:08:12 +1000 |
commit | 42c5de6e44e50717ef33c48001e85ac951be4e8c (patch) | |
tree | 974aca150303d7a8a91403074a0e7aa1d8d02bb9 | |
parent | eae338e0e6f3d6948f47bfc015d95fa7e9553d00 (diff) | |
download | flac-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.c | 47 |
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 } |