From 372f7b4b76cde4ca1ec4605353dd17898a99de38 Mon Sep 17 00:00:00 2001 From: "Timothy B. Terriberry" Date: Mon, 15 Apr 2024 11:27:25 -0700 Subject: [PATCH] Fix compilation errors. vec_avx.h needs x86cpu.h, and x86cpu.h needs to detect SSE2 (or greater) without the Opus macros. Also, nobody was defining OPUS_CLEAR (but several things were including the non-existent os_support.h where it is defined in libopus), so replace those calls with RNN_CLEAR and remove the erroneous includes. Take the opportunity to hoist OPUS_GNUC_PREREQ to common.h, too, since it is needed in multiple places now. Fixes GitHub #222 --- src/common.h | 8 ++++++++ src/vec.h | 9 ++++----- src/vec_avx.h | 2 +- src/vec_neon.h | 5 +++-- src/x86/x86cpu.h | 4 ++-- 5 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/common.h b/src/common.h index 5005bfff..f9095ca5 100644 --- a/src/common.h +++ b/src/common.h @@ -43,6 +43,14 @@ static RNN_INLINE void rnnoise_free (void *ptr) #define RNN_CLEAR(dst, n) (memset((dst), 0, (n)*sizeof(*(dst)))) #endif +# if !defined(OPUS_GNUC_PREREQ) +# if defined(__GNUC__)&&defined(__GNUC_MINOR__) +# define OPUS_GNUC_PREREQ(_maj,_min) \ + ((__GNUC__<<16)+__GNUC_MINOR__>=((_maj)<<16)+(_min)) +# else +# define OPUS_GNUC_PREREQ(_maj,_min) 0 +# endif +# endif #endif diff --git a/src/vec.h b/src/vec.h index 8e96cbf3..71b7afbb 100644 --- a/src/vec.h +++ b/src/vec.h @@ -30,6 +30,7 @@ #define VEC_H #include "opus_types.h" +#include "common.h" #include #include "arch.h" #include "x86/x86_arch_macros.h" @@ -41,8 +42,6 @@ #include "vec_neon.h" #else -#include "os_support.h" - #define MAX_INPUTS (2048) #define NO_OPTIMIZATIONS @@ -50,7 +49,7 @@ static inline void sgemv16x1(float *out, const float *weights, int rows, int cols, int col_stride, const float *x) { int i, j; - OPUS_CLEAR(out, rows); + RNN_CLEAR(out, rows); for (i=0;i #include -/*#include "celt/x86/x86cpu.h"*/ +#include "x86/x86cpu.h" #define MAX_INPUTS (2048) diff --git a/src/vec_neon.h b/src/vec_neon.h index e6432e2f..31b736c3 100644 --- a/src/vec_neon.h +++ b/src/vec_neon.h @@ -32,7 +32,8 @@ #define VEC_NEON_H #include -#include "os_support.h" +#include "opus_types.h" +#include "common.h" #if defined(__arm__) && !defined(__aarch64__) && (__ARM_ARCH < 8 || !defined(__clang__)) /* Emulate vcvtnq_s32_f32() for ARMv7 Neon. */ @@ -302,7 +303,7 @@ static inline void sgemv(float *out, const float *weights, int rows, int cols, i static inline void sparse_sgemv8x4(float *out, const float *w, const int *idx, int rows, const float *x) { int i, j; - OPUS_CLEAR(out, rows); + RNN_CLEAR(out, rows); for (i=0;i