Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
multimedia:libs
rnnoise
372f7b4.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 372f7b4.patch of Package rnnoise
From 372f7b4b76cde4ca1ec4605353dd17898a99de38 Mon Sep 17 00:00:00 2001 From: "Timothy B. Terriberry" <tterribe@xiph.org> 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 5005bff..f9095ca 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 8e96cbf..71b7afb 100644 --- a/src/vec.h +++ b/src/vec.h @@ -30,6 +30,7 @@ #define VEC_H #include "opus_types.h" +#include "common.h" #include <math.h> #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<rows;i+=16) { for (j=0;j<cols;j++) @@ -84,7 +83,7 @@ static inline void sgemv16x1(float *out, const float *weights, int rows, int col static inline void sgemv8x1(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<rows;i+=8) { for (j=0;j<cols;j++) @@ -124,7 +123,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<rows;i+=8) { int cols; diff --git a/src/vec_avx.h b/src/vec_avx.h index b73a353..a5040b4 100644 --- a/src/vec_avx.h +++ b/src/vec_avx.h @@ -34,7 +34,7 @@ #include <immintrin.h> #include <math.h> -/*#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 e6432e2..31b736c 100644 --- a/src/vec_neon.h +++ b/src/vec_neon.h @@ -32,7 +32,8 @@ #define VEC_NEON_H #include <arm_neon.h> -#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<rows;i+=8) { int cols; diff --git a/src/x86/x86cpu.h b/src/x86/x86cpu.h index 97dcdbd..e214aba 100644 --- a/src/x86/x86cpu.h +++ b/src/x86/x86cpu.h @@ -36,8 +36,8 @@ int opus_select_arch(void); # endif -# if defined(OPUS_X86_MAY_HAVE_SSE2) -# include "opus_defines.h" +# if defined(__SSE2__) +# include "common.h" /*MOVD should not impose any alignment restrictions, but the C standard does, and UBSan will report errors if we actually make unaligned accesses. -- GitLab
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor