Commit 97b35daf authored by Frank Barchard's avatar Frank Barchard

disable faulty avx2 in argb conversions and box filter. and extend temporary…

disable faulty avx2 in argb conversions and box filter.  and extend temporary buffer to 128 for an avx2 any function.
R=harryjin@google.com
BUG=libyuv:462
TESTED=libyuv_unittest run on haswell laptop

Review URL: https://webrtc-codereview.appspot.com/53759004.
parent 0737ff5b
Name: libyuv
URL: http://code.google.com/p/libyuv/
Version: 1443
Version: 1444
License: BSD
License File: LICENSE
......
......@@ -186,8 +186,9 @@ extern "C" {
// The following are available require VS2012. Port to GCC.
#if !defined(LIBYUV_DISABLE_X86) && defined(VISUALC_HAS_AVX2)
#define HAS_ARGB1555TOARGBROW_AVX2
#define HAS_ARGB4444TOARGBROW_AVX2
// Some AVX2 versions disabled. See libyuv bug 462.
// #define HAS_ARGB1555TOARGBROW_AVX2
// #define HAS_ARGB4444TOARGBROW_AVX2
#define HAS_ARGBTOARGB1555ROW_AVX2
#define HAS_ARGBTOARGB4444ROW_AVX2
#define HAS_ARGBTORGB565DITHERROW_AVX2
......@@ -203,7 +204,7 @@ extern "C" {
#define HAS_NV12TORGB565ROW_AVX2
#define HAS_NV21TOARGBROW_AVX2
#define HAS_NV21TORGB565ROW_AVX2
#define HAS_RGB565TOARGBROW_AVX2
// #define HAS_RGB565TOARGBROW_AVX2
#endif
// The following are available on all x86 platforms, but
......
......@@ -50,7 +50,8 @@ extern "C" {
// The following are available on VS2012:
#if !defined(LIBYUV_DISABLE_X86) && defined(VISUALC_HAS_AVX2)
#define HAS_SCALEADDROW_AVX2
// Some AVX2 versions disabled. See libyuv bug 462.
// #define HAS_SCALEADDROW_AVX2
#define HAS_SCALEROWDOWN2_AVX2
#define HAS_SCALEROWDOWN4_AVX2
#endif
......
......@@ -11,6 +11,6 @@
#ifndef INCLUDE_LIBYUV_VERSION_H_ // NOLINT
#define INCLUDE_LIBYUV_VERSION_H_
#define LIBYUV_VERSION 1443
#define LIBYUV_VERSION 1444
#endif // INCLUDE_LIBYUV_VERSION_H_ NOLINT
......@@ -1232,7 +1232,6 @@ int ARGB1555ToI420(const uint8* src_argb1555, int src_stride_argb1555,
#else
ARGB1555ToARGBRow(src_argb1555, row, width);
ARGB1555ToARGBRow(src_argb1555 + src_stride_argb1555, row + kRowSize,
width);
ARGBToUVRow(row, kRowSize, dst_u, dst_v, width);
ARGBToYRow(row, dst_y, width);
......
......@@ -10,7 +10,7 @@
#include "libyuv/row.h"
#include <string.h> // For memcpy and memset.
#include <string.h> // For memset.
#include "libyuv/basic_types.h"
......
......@@ -626,10 +626,10 @@ __declspec(naked)
void ARGB4444ToARGBRow_AVX2(const uint8* src_argb4444, uint8* dst_argb,
int pix) {
__asm {
mov eax, 0x0f0f0f0f // generate mask 0x0f0f0f0f
vmovd xmm4, eax
mov eax, 0x0f0f0f0f // generate mask 0x0f0f0f0f
vmovd xmm4, eax
vbroadcastss ymm4, xmm4
vpslld ymm5, ymm4, 4 // 0xf0f0f0f0 for high nibbles
vpslld ymm5, ymm4, 4 // 0xf0f0f0f0 for high nibbles
mov eax, [esp + 4] // src_argb4444
mov edx, [esp + 8] // dst_argb
mov ecx, [esp + 12] // pix
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment