diff options
author | DeeJayLSP <djlsplays@gmail.com> | 2023-01-25 10:24:01 -0300 |
---|---|---|
committer | DeeJayLSP <djlsplays@gmail.com> | 2023-01-25 10:38:03 -0300 |
commit | d8e8517d1174e8593338329a0535da178444817a (patch) | |
tree | 40cc35c11f5ae4813e8f9f8340f7771800704d03 /thirdparty/libwebp/src/dsp/enc_neon.c | |
parent | 6369196b9698c92854bb4dba458ad0b099965d8f (diff) | |
download | redot-engine-d8e8517d1174e8593338329a0535da178444817a.tar.gz |
libwebp: Sync with upstream 1.3.0
Diffstat (limited to 'thirdparty/libwebp/src/dsp/enc_neon.c')
-rw-r--r-- | thirdparty/libwebp/src/dsp/enc_neon.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/thirdparty/libwebp/src/dsp/enc_neon.c b/thirdparty/libwebp/src/dsp/enc_neon.c index 601962ba76..3a04111c55 100644 --- a/thirdparty/libwebp/src/dsp/enc_neon.c +++ b/thirdparty/libwebp/src/dsp/enc_neon.c @@ -764,9 +764,14 @@ static WEBP_INLINE void AccumulateSSE16_NEON(const uint8_t* const a, // Horizontal sum of all four uint32_t values in 'sum'. static int SumToInt_NEON(uint32x4_t sum) { +#if defined(__aarch64__) + return (int)vaddvq_u32(sum); +#else const uint64x2_t sum2 = vpaddlq_u32(sum); - const uint64_t sum3 = vgetq_lane_u64(sum2, 0) + vgetq_lane_u64(sum2, 1); - return (int)sum3; + const uint32x2_t sum3 = vadd_u32(vreinterpret_u32_u64(vget_low_u64(sum2)), + vreinterpret_u32_u64(vget_high_u64(sum2))); + return (int)vget_lane_u32(sum3, 0); +#endif } static int SSE16x16_NEON(const uint8_t* a, const uint8_t* b) { |