From 9482c07953069401da9baeebd089564fcd75f30e Mon Sep 17 00:00:00 2001 From: Yaowu Xu Date: Tue, 27 Aug 2013 08:39:20 -0700 Subject: [PATCH] fixed the reading too many bytes In subpel_avg_variance functions, code similar to the following punpkldq m2, [addr] actually reads 8 bytes. For functions that are supposed to work on buffers only have less 8 bytes a line, this caused valgrind error of reading uninitialized memory. Change-Id: I2a4c079dbdbc747829bd9e2ed85f0018ad2a3a34 --- vp9/encoder/x86/vp9_subpel_variance.asm | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/vp9/encoder/x86/vp9_subpel_variance.asm b/vp9/encoder/x86/vp9_subpel_variance.asm index 19e2feb57..533456b77 100644 --- a/vp9/encoder/x86/vp9_subpel_variance.asm +++ b/vp9/encoder/x86/vp9_subpel_variance.asm @@ -270,7 +270,12 @@ cglobal sub_pixel_variance%1xh, 7, 7, 13, src, src_stride, x_offset, y_offset, \ %if mmsize == 16 movhps m2, [srcq+src_strideq*2] %else ; mmsize == 8 +%if %1 == 4 + movh m1, [srcq+src_strideq*2] + punpckldq m2, m1 +%else punpckldq m2, [srcq+src_strideq*2] +%endif %endif movh m1, [dstq] %if mmsize == 16 @@ -541,9 +546,16 @@ cglobal sub_pixel_variance%1xh, 7, 7, 13, src, src_stride, x_offset, y_offset, \ %if mmsize == 16 movhps m2, [srcq+src_strideq] movhps m3, [srcq+src_strideq+1] +%else +%if %1 == 4 + movh m1, [srcq+src_strideq] + punpckldq m2, m1 + movh m1, [srcq+src_strideq+1] + punpckldq m3, m1 %else punpckldq m2, [srcq+src_strideq] punpckldq m3, [srcq+src_strideq+1] +%endif %endif pavgb m2, m3 %if mmsize == 16 -- 2.40.0