From: DRC Date: Thu, 26 Apr 2012 19:50:37 +0000 (+0000) Subject: Preserve all 128 bits of xmm6 and xmm7 X-Git-Tag: 1.2.1~10 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4f24016bde11aa4282900ff071a6c8481027e063;p=libjpeg-turbo Preserve all 128 bits of xmm6 and xmm7 git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@829 632fc199-4ca6-4c93-a231-07263d6284db --- diff --git a/ChangeLog.txt b/ChangeLog.txt index b0d06a7..8a8a29b 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -11,6 +11,10 @@ decompression, the unused byte of the decompressed pixels was not being set to 0xFF. This has been fixed. TJUnitTest has also been extended to test for the correct behavior of the colorspace extensions when merged upsampling is used. +[3] Fixed a bug whereby the libjpeg-turbo SSE2 SIMD code would not preserve the +upper 64 bits of xmm6 and xmm7 on Win64 platforms, which violated the Win64 +calling conventions. + 1.2.0 ===== diff --git a/simd/jsimdext.inc b/simd/jsimdext.inc index 4ab9bc0..1d4d3e2 100644 --- a/simd/jsimdext.inc +++ b/simd/jsimdext.inc @@ -322,15 +322,15 @@ const_base: push rsi push rdi sub rsp, SIZEOF_XMMWORD - movlpd XMMWORD [rsp], xmm6 + movaps XMMWORD [rsp], xmm6 sub rsp, SIZEOF_XMMWORD - movlpd XMMWORD [rsp], xmm7 + movaps XMMWORD [rsp], xmm7 %endmacro %imacro uncollect_args 0 - movlpd xmm7, XMMWORD [rsp] + movaps xmm7, XMMWORD [rsp] add rsp, SIZEOF_XMMWORD - movlpd xmm6, XMMWORD [rsp] + movaps xmm6, XMMWORD [rsp] add rsp, SIZEOF_XMMWORD pop rdi pop rsi