summaryrefslogtreecommitdiff
path: root/simd
diff options
context:
space:
mode:
authorDRC <information@libjpeg-turbo.org>2019-02-01 00:56:02 -0600
committerDRC <information@libjpeg-turbo.org>2019-02-01 00:59:58 -0600
commite2442e07074e990b7044245c07163e957e81de18 (patch)
treed344f769641ea3cf3fd918c043c3e39240ff2865 /simd
parent1c2d3cfaaf7324d9091ba3cc4e900f60a16fe1aa (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.c15
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;