diff options
author | DRC <information@libjpeg-turbo.org> | 2019-02-01 00:56:02 -0600 |
---|---|---|
committer | DRC <information@libjpeg-turbo.org> | 2019-02-01 00:59:58 -0600 |
commit | e2442e07074e990b7044245c07163e957e81de18 (patch) | |
tree | d344f769641ea3cf3fd918c043c3e39240ff2865 /simd | |
parent | 1c2d3cfaaf7324d9091ba3cc4e900f60a16fe1aa (diff) |
MMI: Fix unaligned comp. perf. for 32-bit PFs also
(Oversight from 1c2d3cfaaf7324d9091ba3cc4e900f60a16fe1aa)
Diffstat (limited to 'simd')
-rw-r--r-- | simd/loongson/jccolext-mmi.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/simd/loongson/jccolext-mmi.c b/simd/loongson/jccolext-mmi.c index a94b53b..6cdeb5e 100644 --- a/simd/loongson/jccolext-mmi.c +++ b/simd/loongson/jccolext-mmi.c @@ -275,10 +275,17 @@ void jsimd_rgb_ycc_convert_mmi(JDIMENSION image_width, JSAMPARRAY input_buf, : "$f0", "$f2", "$8", "$9", "$10", "$11", "$13", "memory" ); } else { - mmA = _mm_load_si64((__m64 *)&inptr[0]); - mmF = _mm_load_si64((__m64 *)&inptr[8]); - mmD = _mm_load_si64((__m64 *)&inptr[16]); - mmC = _mm_load_si64((__m64 *)&inptr[24]); + if (!(((long)inptr) & 7)) { + mmA = _mm_load_si64((__m64 *)&inptr[0]); + mmF = _mm_load_si64((__m64 *)&inptr[8]); + mmD = _mm_load_si64((__m64 *)&inptr[16]); + mmC = _mm_load_si64((__m64 *)&inptr[24]); + } else { + mmA = _mm_loadu_si64((__m64 *)&inptr[0]); + mmF = _mm_loadu_si64((__m64 *)&inptr[8]); + mmD = _mm_loadu_si64((__m64 *)&inptr[16]); + mmC = _mm_loadu_si64((__m64 *)&inptr[24]); + } inptr += RGB_PIXELSIZE * 8; } mmB = mmA; |