Fix convolve_copy SIMD functions This continued to fix convolve_copy SIMD functions following "commit f191d8703412d5ba7b5b2c3d76354eca6c06e24e" to avoid potential out-of-boundary reads. Change-Id: I1e136ac0b0b9db30bec21f3694530fcef065bae3
diff --git a/av1/common/x86/convolve_2d_sse2.c b/av1/common/x86/convolve_2d_sse2.c index 174b6dd..4cc3341 100644 --- a/av1/common/x86/convolve_2d_sse2.c +++ b/av1/common/x86/convolve_2d_sse2.c
@@ -255,24 +255,20 @@ if (w == 2) { do { - __m128i s = _mm_loadl_epi64((__m128i *)src); - *(uint16_t *)dst = _mm_cvtsi128_si32(s); + memcpy(dst, src, 2 * sizeof(*src)); src += src_stride; dst += dst_stride; - s = _mm_loadl_epi64((__m128i *)src); - *(uint16_t *)dst = _mm_cvtsi128_si32(s); + memcpy(dst, src, 2 * sizeof(*src)); src += src_stride; dst += dst_stride; h -= 2; } while (h); } else if (w == 4) { do { - __m128i s = _mm_loadl_epi64((__m128i *)src); - *(uint32_t *)dst = _mm_cvtsi128_si32(s); + memcpy(dst, src, 4 * sizeof(*src)); src += src_stride; dst += dst_stride; - s = _mm_loadl_epi64((__m128i *)src); - *(uint32_t *)dst = _mm_cvtsi128_si32(s); + memcpy(dst, src, 4 * sizeof(*src)); src += src_stride; dst += dst_stride; h -= 2;
diff --git a/av1/common/x86/highbd_convolve_2d_avx2.c b/av1/common/x86/highbd_convolve_2d_avx2.c index 63c1cf1..75dadf8 100644 --- a/av1/common/x86/highbd_convolve_2d_avx2.c +++ b/av1/common/x86/highbd_convolve_2d_avx2.c
@@ -238,12 +238,10 @@ if (w == 2) { do { - __m128i s = _mm_loadl_epi64((__m128i *)src); - *(uint32_t *)dst = _mm_cvtsi128_si32(s); + memcpy(dst, src, 2 * sizeof(*src)); src += src_stride; dst += dst_stride; - s = _mm_loadl_epi64((__m128i *)src); - *(uint32_t *)dst = _mm_cvtsi128_si32(s); + memcpy(dst, src, 2 * sizeof(*src)); src += src_stride; dst += dst_stride; h -= 2;