Fix a bug in the AltiVec downsampling routines uncovered during additional testing with small image sizes. Since the output width is half the input width, the downsampler should only read a second 16-byte chunk if there are more than 8 output columns left.

git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@1499 632fc199-4ca6-4c93-a231-07263d6284db
This commit is contained in:
DRC
2015-01-14 08:31:54 +00:00
parent ada430bb3d
commit cbcb53617b

View File

@@ -64,7 +64,7 @@ jsimd_h2v1_downsample_altivec (JDIMENSION image_width, int max_v_samp_factor,
outl = vec_add(outl, pw_bias); outl = vec_add(outl, pw_bias);
outl = vec_sr(outl, pw_one); outl = vec_sr(outl, pw_one);
if (outcol > 16) { if (outcol > 8) {
next0 = vec_ld(16, inptr); next0 = vec_ld(16, inptr);
next0 = vec_perm(next0, next0, even_odd_index); next0 = vec_perm(next0, next0, even_odd_index);
next0e = (__vector unsigned short)vec_mergeh(pb_zero, next0); next0e = (__vector unsigned short)vec_mergeh(pb_zero, next0);
@@ -132,7 +132,7 @@ jsimd_h2v2_downsample_altivec (JDIMENSION image_width, int max_v_samp_factor,
outl = vec_add(outl, pw_bias); outl = vec_add(outl, pw_bias);
outl = vec_sr(outl, pw_two); outl = vec_sr(outl, pw_two);
if (outcol > 16) { if (outcol > 8) {
next0 = vec_ld(16, inptr0); next0 = vec_ld(16, inptr0);
next0 = vec_perm(next0, next0, even_odd_index); next0 = vec_perm(next0, next0, even_odd_index);
next0e = (__vector unsigned short)vec_mergeh(pb_zero, next0); next0e = (__vector unsigned short)vec_mergeh(pb_zero, next0);