]> granicus.if.org Git - libjpeg-turbo/commitdiff
Preserve all 128 bits of xmm6 and xmm7
authorDRC <dcommander@users.sourceforge.net>
Thu, 26 Apr 2012 19:50:37 +0000 (19:50 +0000)
committerDRC <dcommander@users.sourceforge.net>
Thu, 26 Apr 2012 19:50:37 +0000 (19:50 +0000)
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@829 632fc199-4ca6-4c93-a231-07263d6284db

ChangeLog.txt
simd/jsimdext.inc

index b0d06a760e34a416b46f0e3c42c5eeb5202aa78b..8a8a29b5025266e20ba00ae96a55360fb35772f9 100644 (file)
@@ -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
 =====
index 4ab9bc0facd988cf62da17d3ab14640b480fa31d..1d4d3e2d037f136e5f77c5b2a73ab78ccc5052d2 100644 (file)
@@ -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