From fe9ced6e3c8ae6c69bcc3ebb8505a650d2df30e0 Mon Sep 17 00:00:00 2001 From: Frank Barchard Date: Fri, 21 Oct 2022 09:36:35 -0700 Subject: [PATCH] ScaleRowUp2_Bilinear_12_SSSE3 preserve xmm7 for Windows - Preserve xmm7 in ScaleRowUp2_Bilinear_12_SSSE3 - Previously xmm7 was used in ScaleRowUp2_Bilinear_12_SSSE3 without being preserved, which violates the Windows x64 calling conventions and can cause undefined behavior. Bug: libyuv:945, 1218384 Change-Id: If18b292b588573355f9b4ba8c5b9c3fbe143d36b Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/3972137 Reviewed-by: Bruce Dawson Commit-Queue: Frank Barchard --- README.chromium | 2 +- include/libyuv/version.h | 2 +- source/scale_gcc.cc | 5 +++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/README.chromium b/README.chromium index 556bacd69..3c221afa6 100644 --- a/README.chromium +++ b/README.chromium @@ -1,6 +1,6 @@ Name: libyuv URL: http://code.google.com/p/libyuv/ -Version: 1847 +Version: 1848 License: BSD License File: LICENSE diff --git a/include/libyuv/version.h b/include/libyuv/version.h index 733f5cd93..62a7257e1 100644 --- a/include/libyuv/version.h +++ b/include/libyuv/version.h @@ -11,6 +11,6 @@ #ifndef INCLUDE_LIBYUV_VERSION_H_ #define INCLUDE_LIBYUV_VERSION_H_ -#define LIBYUV_VERSION 1847 +#define LIBYUV_VERSION 1848 #endif // INCLUDE_LIBYUV_VERSION_H_ diff --git a/source/scale_gcc.cc b/source/scale_gcc.cc index edaf2e29a..17eeffadf 100644 --- a/source/scale_gcc.cc +++ b/source/scale_gcc.cc @@ -1094,7 +1094,8 @@ void ScaleRowUp2_Bilinear_12_SSSE3(const uint16_t* src_ptr, : "r"((intptr_t)(src_stride)), // %3 "r"((intptr_t)(dst_stride)), // %4 "m"(kLinearShuffleFar) // %5 - : "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6"); + : "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6", + "xmm7"); } #endif @@ -1294,7 +1295,7 @@ void ScaleRowUp2_Linear_SSSE3(const uint8_t* src_ptr, "+r"(dst_ptr), // %1 "+r"(dst_width) // %2 : "m"(kLinearMadd31) // %3 - : "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6"); + : "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4"); } #endif