summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErik de Castro Lopo <erikd@mega-nerd.com>2016-06-26 17:28:27 +1000
committerErik de Castro Lopo <erikd@mega-nerd.com>2016-06-26 17:28:27 +1000
commit162a44923cf261015adadc76f7503b729eacf2c2 (patch)
treed991e21702a9d0755314003962d75fd82c8b3dab
parent7a8f3591d6c0b54c5848b526c419f89eb8b576e7 (diff)
downloadflac-162a44923cf261015adadc76f7503b729eacf2c2.tar.gz
libFLAC/cpu.c: Fix build on non-Intel CPUs
-rw-r--r--src/libFLAC/cpu.c68
1 files changed, 43 insertions, 25 deletions
diff --git a/src/libFLAC/cpu.c b/src/libFLAC/cpu.c
index df1cf8b2..e2bcc679 100644
--- a/src/libFLAC/cpu.c
+++ b/src/libFLAC/cpu.c
@@ -77,30 +77,6 @@
#endif
-static void ia32_disable_sse(FLAC__CPUInfo *info)
-{
- info->ia32.sse = false;
- info->ia32.sse2 = false;
- info->ia32.sse3 = false;
- info->ia32.ssse3 = false;
- 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;
-}
-
-static void x86_64_disable_avx(FLAC__CPUInfo *info)
-{
- info->x86.avx = false;
- info->x86.avx2 = false;
- info->x86.fma = false;
-}
-
/* these are flags in EDX of CPUID AX=00000001 */
static const unsigned FLAC__CPUINFO_IA32_CPUID_CMOV = 0x00008000;
static const unsigned FLAC__CPUINFO_IA32_CPUID_MMX = 0x00800000;
@@ -145,7 +121,36 @@ static void sigill_handler_sse_os(int signal, siginfo_t *si, void *uc)
}
#endif
-static uint32_t cpu_xgetbv_x86(void)
+#if defined FLAC__CPU_IA32 || defined FLAC__CPU_X86_64
+static void
+ia32_disable_sse(FLAC__CPUInfo *info)
+{
+ info->ia32.sse = false;
+ info->ia32.sse2 = false;
+ info->ia32.sse3 = false;
+ info->ia32.ssse3 = false;
+ 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;
+}
+
+static void
+x86_64_disable_avx(FLAC__CPUInfo *info)
+{
+ info->x86.avx = false;
+ info->x86.avx2 = false;
+ info->x86.fma = false;
+}
+
+static uint32_t
+cpu_xgetbv_x86(void)
{
#if (defined _MSC_VER || defined __INTEL_COMPILER) && FLAC__HAS_X86INTRIN && FLAC__AVX_SUPPORTED
return (uint32_t)_xgetbv(0);
@@ -157,10 +162,16 @@ static uint32_t cpu_xgetbv_x86(void)
return 0;
#endif
}
+#endif
static void
ia32_cpu_info (FLAC__CPUInfo *info)
{
+#if !defined FLAC__CPU_IA32 && !defined FLAC__CPU_X86_64
+ (void) info;
+ return;
+#else
+
FLAC__bool ia32_fxsr = false;
FLAC__bool ia32_osxsave = false;
FLAC__uint32 flags_eax, flags_ebx, flags_ecx, flags_edx;
@@ -344,11 +355,17 @@ ia32_cpu_info (FLAC__CPUInfo *info)
#else
info->use_asm = false;
#endif
+#endif
}
static void
x86_64_cpu_info (FLAC__CPUInfo *info)
{
+#if !defined FLAC__CPU_IA32 && !defined FLAC__CPU_X86_64
+ (void) info;
+ return;
+#else
+
FLAC__bool x86_osxsave = false;
FLAC__uint32 flags_eax, flags_ebx, flags_ecx, flags_edx;
@@ -405,6 +422,7 @@ x86_64_cpu_info (FLAC__CPUInfo *info)
else /* no OS AVX support */
x86_64_disable_avx(info);
#endif
+#endif
}
void FLAC__cpu_info (FLAC__CPUInfo *info)