diff options
author | Jean-Marc Valin <jmvalin@amazon.com> | 2023-11-18 03:36:19 +0300 |
---|---|---|
committer | Jean-Marc Valin <jmvalin@amazon.com> | 2023-11-18 03:36:19 +0300 |
commit | b2cfd87783713793f4a170bb5a13a1470896436e (patch) | |
tree | 879c6a5df7615e80277ed60f02f10ae697410cf1 | |
parent | 029385467de35c342d7939196ca2f88cf8998e59 (diff) |
Add rtcd support for celt_pitch_xcorr_avx2()
-rw-r--r-- | celt/x86/pitch_sse.h | 21 | ||||
-rw-r--r-- | celt/x86/x86_celt_map.c | 20 |
2 files changed, 39 insertions, 2 deletions
diff --git a/celt/x86/pitch_sse.h b/celt/x86/pitch_sse.h index f8977b32..127581f3 100644 --- a/celt/x86/pitch_sse.h +++ b/celt/x86/pitch_sse.h @@ -186,13 +186,30 @@ extern void (*const COMB_FILTER_CONST_IMPL[OPUS_ARCHMASK + 1])( #endif +void celt_pitch_xcorr_avx2(const float *_x, const float *_y, float *xcorr, int len, int max_pitch, int arch); + #if defined(OPUS_X86_PRESUME_AVX2) -void celt_pitch_xcorr_avx2(const float *_x, const float *_y, float *xcorr, int len, int max_pitch, int arch); #define OVERRIDE_PITCH_XCORR # define celt_pitch_xcorr celt_pitch_xcorr_avx2 -#endif /* OPUS_X86_PRESUME_AVX2 */ +#elif defined(OPUS_HAVE_RTCD) && defined(OPUS_X86_MAY_HAVE_AVX2) + +#define OVERRIDE_PITCH_XCORR +extern void (*const PITCH_XCORR_IMPL[OPUS_ARCHMASK + 1])( + const float *_x, + const float *_y, + float *xcorr, + int len, + int max_pitch, + int arch + ); + +#define celt_pitch_xcorr(_x, _y, xcorr, len, max_pitch, arch) \ + ((*PITCH_XCORR_IMPL[(arch) & OPUS_ARCHMASK])(_x, _y, xcorr, len, max_pitch, arch)) + + +#endif /* OPUS_X86_PRESUME_AVX2 && !OPUS_HAVE_RTCD */ #endif /* OPUS_X86_MAY_HAVE_SSE && !FIXED_POINT */ diff --git a/celt/x86/x86_celt_map.c b/celt/x86/x86_celt_map.c index d39d88ed..ba8eafe6 100644 --- a/celt/x86/x86_celt_map.c +++ b/celt/x86/x86_celt_map.c @@ -90,6 +90,26 @@ opus_val32 (*const CELT_INNER_PROD_IMPL[OPUS_ARCHMASK + 1])( # else +#if defined(OPUS_X86_MAY_HAVE_AVX2) && !defined(OPUS_X86_PRESUME_AVX2) + +void (*const PITCH_XCORR_IMPL[OPUS_ARCHMASK + 1])( + const float *_x, + const float *_y, + float *xcorr, + int len, + int max_pitch, + int arch +) = { + celt_pitch_xcorr_c, /* non-sse */ + celt_pitch_xcorr_c, + celt_pitch_xcorr_c, + celt_pitch_xcorr_c, + MAY_HAVE_AVX2(celt_pitch_xcorr) +}; + +#endif + + #if defined(OPUS_X86_MAY_HAVE_SSE) && !defined(OPUS_X86_PRESUME_SSE) void (*const XCORR_KERNEL_IMPL[OPUS_ARCHMASK + 1])( |