Fix for clobber registers on SumSquareError_SSE2 used for PSNR

BUG=none
TEST=none
Review URL: https://webrtc-codereview.appspot.com/1410004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@683 16f28f9a-4ce2-e073-06de-1de4eb20be90
This commit is contained in:
fbarchard@google.com 2013-05-06 05:36:58 +00:00
parent 4154163e20
commit b432b7da2d
5 changed files with 9 additions and 8 deletions

View File

@ -1,6 +1,6 @@
Name: libyuv
URL: http://code.google.com/p/libyuv/
Version: 682
Version: 683
License: BSD
License File: LICENSE

View File

@ -11,6 +11,6 @@
#ifndef INCLUDE_LIBYUV_VERSION_H_ // NOLINT
#define INCLUDE_LIBYUV_VERSION_H_
#define LIBYUV_VERSION 682
#define LIBYUV_VERSION 683
#endif // INCLUDE_LIBYUV_VERSION_H_ NOLINT

View File

@ -56,7 +56,7 @@ uint32 SumSquareError_SSE2(const uint8* src_a, const uint8* src_b, int count) {
:
: "memory", "cc"
#if defined(__SSE2__)
, "xmm0", "xmm1", "xmm2", "xmm5"
, "xmm0", "xmm1", "xmm2", "xmm3", "xmm5"
#endif
);
return sse;

View File

@ -159,7 +159,7 @@ static uint32 SumSquareError_SSE2(const uint8* src_a,
:
: "memory", "cc"
#if defined(__SSE2__)
, "xmm0", "xmm1", "xmm2", "xmm5"
, "xmm0", "xmm1", "xmm2", "xmm3", "xmm5"
#endif
); // NOLINT
return sse;

View File

@ -20,10 +20,11 @@ extern "C" {
typedef unsigned int uint32; // NOLINT
typedef unsigned short uint16; // NOLINT
#if defined(_M_X64) || (defined(_M_IX86_FP) && (_M_IX86_FP >= 2))
#if !defined(LIBYUV_DISABLE_X86) && \
(defined(_M_X64) || (defined(_M_IX86_FP) && (_M_IX86_FP >= 2)))
#define __SSE2__
#endif
#ifdef __SSE2__
#if !defined(LIBYUV_DISABLE_X86) && defined(__SSE2__)
#include <emmintrin.h>
#endif
@ -48,7 +49,7 @@ static const double kiW[KERNEL + 1 + 1] = {
1. / 726., // 1 / sum(i:0..3, j..6) K[i]*K[j]
};
#ifdef __SSE2__
#if !defined(LIBYUV_DISABLE_X86) && defined(__SSE2__)
#define PWEIGHT(A, B) static_cast<uint16>(K[(A)] * K[(B)]) // weight product
#define MAKE_WEIGHT(L) \
@ -130,7 +131,7 @@ double GetSSIMFullKernel(const uint8 *org, const uint8 *rec,
double area_weight) {
uint32 xm = 0, ym = 0, xxm = 0, xym = 0, yym = 0;
#ifndef __SSE2__
#if defined(LIBYUV_DISABLE_X86) || !defined(__SSE2__)
org += yo * stride + xo;
rec += yo * stride + xo;