From: DRC Date: Fri, 1 Feb 2019 07:16:13 +0000 (-0600) Subject: MMI: Fix unaligned decomp. perf. for 32-bit PFs X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bdec9958390ce3cf2e30b62e5e0328c26af97c7b;p=libjpeg-turbo MMI: Fix unaligned decomp. perf. for 32-bit PFs (Oversight from db84125fcb05bbc48430b53d45b89392a8f3609e) --- diff --git a/simd/loongson/jdcolext-mmi.c b/simd/loongson/jdcolext-mmi.c index 982fa76..8a159ef 100644 --- a/simd/loongson/jdcolext-mmi.c +++ b/simd/loongson/jdcolext-mmi.c @@ -341,10 +341,17 @@ void jsimd_ycc_rgb_convert_mmi(JDIMENSION out_width, JSAMPIMAGE input_buf, mmC = _mm_unpacklo_pi32(mmC, mmG); /* (04 14 24 34 05 15 25 35) */ if (num_cols >= 8) { - _mm_store_si64((__m64 *)outptr, mmA); - _mm_store_si64((__m64 *)(outptr + 8), mmD); - _mm_store_si64((__m64 *)(outptr + 16), mmC); - _mm_store_si64((__m64 *)(outptr + 24), mmH); + if (!(((long)outptr) & 7)) { + _mm_store_si64((__m64 *)outptr, mmA); + _mm_store_si64((__m64 *)(outptr + 8), mmD); + _mm_store_si64((__m64 *)(outptr + 16), mmC); + _mm_store_si64((__m64 *)(outptr + 24), mmH); + } else { + _mm_storeu_si64((__m64 *)outptr, mmA); + _mm_storeu_si64((__m64 *)(outptr + 8), mmD); + _mm_storeu_si64((__m64 *)(outptr + 16), mmC); + _mm_storeu_si64((__m64 *)(outptr + 24), mmH); + } outptr += RGB_PIXELSIZE * 8; } else { col = num_cols;