Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:42.2:Update
libqt5-qtwebengine
fix-webrtc-vaddvq_s64.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File fix-webrtc-vaddvq_s64.diff of Package libqt5-qtwebengine
Index: src/3rdparty/chromium/third_party/webrtc/common_audio/signal_processing/cross_correlation_neon.c =================================================================== --- src/3rdparty/chromium/third_party/webrtc/common_audio/signal_processing/cross_correlation_neon.c.orig +++ src/3rdparty/chromium/third_party/webrtc/common_audio/signal_processing/cross_correlation_neon.c @@ -12,6 +12,17 @@ #include <arm_neon.h> +__extension__ static __inline int64_t __attribute__ ((__always_inline__)) +vaddvq_s64_workaround (int64x2_t __a) +{ + int64_t result; + __asm__ ("addp %d0,%0.2d" + : "=w"(result) + : "w"(__a) + : /* No clobbers */); + return result; +} + static inline void DotProductWithScaleNeon(int32_t* cross_correlation, const int16_t* vector1, const int16_t* vector2, @@ -57,7 +68,7 @@ static inline void DotProductWithScaleNe sum0 = vaddq_s64(sum0, sum1); #if defined(WEBRTC_ARCH_ARM64) - int64_t sum2 = vaddvq_s64(sum0); + int64_t sum2 = vaddvq_s64_workaround(sum0); *cross_correlation = (int32_t)((sum2 + sum_res) >> scaling); #else int64x1_t shift = vdup_n_s64(-scaling); Index: src/3rdparty/chromium/third_party/webrtc/modules/audio_coding/codecs/isac/fix/source/filters_neon.c =================================================================== --- src/3rdparty/chromium/third_party/webrtc/modules/audio_coding/codecs/isac/fix/source/filters_neon.c.orig +++ src/3rdparty/chromium/third_party/webrtc/modules/audio_coding/codecs/isac/fix/source/filters_neon.c @@ -13,6 +13,17 @@ #include "webrtc/modules/audio_coding/codecs/isac/fix/source/codec.h" +__extension__ static __inline int64_t __attribute__ ((__always_inline__)) +vaddvq_s64_workaround (int64x2_t __a) +{ + int64_t result; + __asm__ ("addp %d0,%0.2d" + : "=w"(result) + : "w"(__a) + : /* No clobbers */); + return result; +} + // Autocorrelation function in fixed point. // NOTE! Different from SPLIB-version in how it scales the signal. int WebRtcIsacfix_AutocorrNeon(int32_t* __restrict r, @@ -45,7 +56,7 @@ int WebRtcIsacfix_AutocorrNeon(int32_t* } #ifdef WEBRTC_ARCH_ARM64 - prod = vaddvq_s64(tmpb_v); + prod = vaddvq_s64_workaround(tmpb_v); #else prod = vget_lane_s64(vadd_s64(vget_low_s64(tmpb_v), vget_high_s64(tmpb_v)), 0); @@ -91,7 +102,7 @@ int WebRtcIsacfix_AutocorrNeon(int32_t* y_start += 4; } #ifdef WEBRTC_ARCH_ARM64 - prod = vaddvq_s64(tmpb_v); + prod = vaddvq_s64_workaround(tmpb_v); #else prod = vget_lane_s64(vadd_s64(vget_low_s64(tmpb_v), vget_high_s64(tmpb_v)), 0);
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