mirror of
https://chromium.googlesource.com/libyuv/libyuv
synced 2026-04-30 19:09:18 +08:00
[libyuv] Remove all x86 SSE optimizations
Removed all SSE functions, macros, dispatching logic, and related unit tests across the repository to reduce code size and complexity. Left cpuid detection intact. Supported architectures like AVX2, NEON, SVE, etc. are unaffected. R=rrwinterton@gmail.com Bug: None Test: Build and run libyuv_unittest Change-Id: Id19608dba35b79c4c8fc31f920a6a968883d300f
This commit is contained in:
parent
f2ac6db694
commit
bcb69c8eb6
@ -19,14 +19,6 @@ namespace libyuv {
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
// The following are available for Visual C and GCC:
|
||||
#if !defined(LIBYUV_DISABLE_X86) && \
|
||||
((defined(__x86_64__) && !defined(LIBYUV_ENABLE_ROWWIN)) || \
|
||||
defined(__i386__) || defined(_M_IX86))
|
||||
#define HAS_HASHDJB2_SSE41
|
||||
#define HAS_SUMSQUAREERROR_SSE2
|
||||
#define HAS_HAMMINGDISTANCE_SSE42
|
||||
#endif
|
||||
|
||||
// The following are available for Visual C and clangcl 32 bit:
|
||||
#if !defined(LIBYUV_DISABLE_X86) && defined(_M_IX86) && defined(_MSC_VER) && \
|
||||
@ -36,12 +28,6 @@ extern "C" {
|
||||
#define HAS_SUMSQUAREERROR_AVX2
|
||||
#endif
|
||||
|
||||
// The following are available for GCC and clangcl:
|
||||
#if !defined(LIBYUV_DISABLE_X86) && \
|
||||
(defined(__x86_64__) || defined(__i386__)) && \
|
||||
!defined(LIBYUV_ENABLE_ROWWIN)
|
||||
#define HAS_HAMMINGDISTANCE_SSSE3
|
||||
#endif
|
||||
|
||||
// The following are available for GCC and clangcl:
|
||||
#if !defined(LIBYUV_DISABLE_X86) && defined(CLANG_HAS_AVX2) && \
|
||||
@ -68,12 +54,6 @@ extern "C" {
|
||||
uint32_t HammingDistance_C(const uint8_t* src_a,
|
||||
const uint8_t* src_b,
|
||||
int count);
|
||||
uint32_t HammingDistance_SSE42(const uint8_t* src_a,
|
||||
const uint8_t* src_b,
|
||||
int count);
|
||||
uint32_t HammingDistance_SSSE3(const uint8_t* src_a,
|
||||
const uint8_t* src_b,
|
||||
int count);
|
||||
uint32_t HammingDistance_AVX2(const uint8_t* src_a,
|
||||
const uint8_t* src_b,
|
||||
int count);
|
||||
@ -86,9 +66,6 @@ uint32_t HammingDistance_NEON_DotProd(const uint8_t* src_a,
|
||||
uint32_t SumSquareError_C(const uint8_t* src_a,
|
||||
const uint8_t* src_b,
|
||||
int count);
|
||||
uint32_t SumSquareError_SSE2(const uint8_t* src_a,
|
||||
const uint8_t* src_b,
|
||||
int count);
|
||||
uint32_t SumSquareError_AVX2(const uint8_t* src_a,
|
||||
const uint8_t* src_b,
|
||||
int count);
|
||||
@ -100,7 +77,6 @@ uint32_t SumSquareError_NEON_DotProd(const uint8_t* src_a,
|
||||
int count);
|
||||
|
||||
uint32_t HashDjb2_C(const uint8_t* src, int count, uint32_t seed);
|
||||
uint32_t HashDjb2_SSE41(const uint8_t* src, int count, uint32_t seed);
|
||||
uint32_t HashDjb2_AVX2(const uint8_t* src, int count, uint32_t seed);
|
||||
uint32_t HashDjb2_NEON(const uint8_t* src, int count, uint32_t seed);
|
||||
|
||||
|
||||
@ -20,28 +20,14 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
// The following are available for Visual C 32 bit:
|
||||
// TODO - port to clangcl on rotate_win
|
||||
#if !defined(LIBYUV_DISABLE_X86) && defined(_M_IX86) && defined(_MSC_VER) && \
|
||||
!defined(__clang__)
|
||||
#define HAS_TRANSPOSEWX8_SSSE3
|
||||
#define HAS_TRANSPOSEUVWX8_SSE2
|
||||
#endif
|
||||
|
||||
// The following are available for GCC 32 or 64 bit:
|
||||
#if !defined(LIBYUV_DISABLE_X86) && \
|
||||
(defined(__i386__) || defined(__x86_64__)) && \
|
||||
!defined(LIBYUV_ENABLE_ROWWIN)
|
||||
#define HAS_TRANSPOSEWX8_SSSE3
|
||||
#define HAS_TRANSPOSE4X4_32_SSE2
|
||||
#define HAS_TRANSPOSE4X4_32_AVX2
|
||||
#endif
|
||||
|
||||
// The following are available for 64 bit GCC:
|
||||
#if !defined(LIBYUV_DISABLE_X86) && defined(__x86_64__) && \
|
||||
!defined(LIBYUV_ENABLE_ROWWIN)
|
||||
#define HAS_TRANSPOSEWX8_FAST_SSSE3
|
||||
#define HAS_TRANSPOSEUVWX8_SSE2
|
||||
#endif
|
||||
|
||||
#if !defined(LIBYUV_DISABLE_NEON) && \
|
||||
(defined(__ARM_NEON__) || defined(LIBYUV_NEON) || defined(__aarch64__))
|
||||
@ -98,16 +84,6 @@ void TransposeWxH_SME(const uint8_t* src,
|
||||
int dst_stride,
|
||||
int width,
|
||||
int height);
|
||||
void TransposeWx8_SSSE3(const uint8_t* src,
|
||||
int src_stride,
|
||||
uint8_t* dst,
|
||||
int dst_stride,
|
||||
int width);
|
||||
void TransposeWx8_Fast_SSSE3(const uint8_t* src,
|
||||
int src_stride,
|
||||
uint8_t* dst,
|
||||
int dst_stride,
|
||||
int width);
|
||||
void TransposeWx16_LSX(const uint8_t* src,
|
||||
int src_stride,
|
||||
uint8_t* dst,
|
||||
@ -124,16 +100,6 @@ void TransposeWx16_Any_NEON(const uint8_t* src,
|
||||
uint8_t* dst,
|
||||
int dst_stride,
|
||||
int width);
|
||||
void TransposeWx8_Any_SSSE3(const uint8_t* src,
|
||||
int src_stride,
|
||||
uint8_t* dst,
|
||||
int dst_stride,
|
||||
int width);
|
||||
void TransposeWx8_Fast_Any_SSSE3(const uint8_t* src,
|
||||
int src_stride,
|
||||
uint8_t* dst,
|
||||
int dst_stride,
|
||||
int width);
|
||||
void TransposeWx16_Any_LSX(const uint8_t* src,
|
||||
int src_stride,
|
||||
uint8_t* dst,
|
||||
@ -163,13 +129,6 @@ void TransposeUVWx16_C(const uint8_t* src,
|
||||
uint8_t* dst_b,
|
||||
int dst_stride_b,
|
||||
int width);
|
||||
void TransposeUVWx8_SSE2(const uint8_t* src,
|
||||
int src_stride,
|
||||
uint8_t* dst_a,
|
||||
int dst_stride_a,
|
||||
uint8_t* dst_b,
|
||||
int dst_stride_b,
|
||||
int width);
|
||||
void TransposeUVWx8_NEON(const uint8_t* src,
|
||||
int src_stride,
|
||||
uint8_t* dst_a,
|
||||
@ -193,13 +152,6 @@ void TransposeUVWx16_LSX(const uint8_t* src,
|
||||
int dst_stride_b,
|
||||
int width);
|
||||
|
||||
void TransposeUVWx8_Any_SSE2(const uint8_t* src,
|
||||
int src_stride,
|
||||
uint8_t* dst_a,
|
||||
int dst_stride_a,
|
||||
uint8_t* dst_b,
|
||||
int dst_stride_b,
|
||||
int width);
|
||||
void TransposeUVWx8_Any_NEON(const uint8_t* src,
|
||||
int src_stride,
|
||||
uint8_t* dst_a,
|
||||
@ -239,11 +191,6 @@ void Transpose4x4_32_NEON(const uint8_t* src,
|
||||
int dst_stride,
|
||||
int width);
|
||||
|
||||
void Transpose4x4_32_SSE2(const uint8_t* src,
|
||||
int src_stride,
|
||||
uint8_t* dst,
|
||||
int dst_stride,
|
||||
int width);
|
||||
|
||||
void Transpose4x4_32_AVX2(const uint8_t* src,
|
||||
int src_stride,
|
||||
|
||||
1138
include/libyuv/row.h
1138
include/libyuv/row.h
File diff suppressed because it is too large
Load Diff
@ -27,39 +27,9 @@ extern "C" {
|
||||
defined(__i386__))
|
||||
#define HAS_FIXEDDIV1_X86
|
||||
#define HAS_FIXEDDIV_X86
|
||||
#define HAS_SCALEADDROW_SSE2
|
||||
#define HAS_SCALEARGBCOLS_SSE2
|
||||
#define HAS_SCALEARGBCOLSUP2_SSE2
|
||||
#define HAS_SCALEARGBFILTERCOLS_SSSE3
|
||||
#define HAS_SCALEARGBROWDOWN2_SSE2
|
||||
#define HAS_SCALEARGBROWDOWNEVEN_SSE2
|
||||
#define HAS_SCALECOLSUP2_SSE2
|
||||
#define HAS_SCALEFILTERCOLS_SSSE3
|
||||
#define HAS_SCALEROWDOWN2_SSSE3
|
||||
#define HAS_SCALEROWDOWN34_SSSE3
|
||||
#define HAS_SCALEROWDOWN38_SSSE3
|
||||
#define HAS_SCALEROWDOWN4_SSSE3
|
||||
#endif
|
||||
|
||||
// The following are available for gcc/clang x86 platforms:
|
||||
// TODO(fbarchard): Port to Visual C
|
||||
#if !defined(LIBYUV_DISABLE_X86) && \
|
||||
(defined(__x86_64__) || defined(__i386__)) && \
|
||||
!defined(LIBYUV_ENABLE_ROWWIN)
|
||||
#define HAS_SCALEUVROWDOWN2BOX_SSSE3
|
||||
#define HAS_SCALEROWUP2_LINEAR_SSE2
|
||||
#define HAS_SCALEROWUP2_LINEAR_SSSE3
|
||||
#define HAS_SCALEROWUP2_BILINEAR_SSE2
|
||||
#define HAS_SCALEROWUP2_BILINEAR_SSSE3
|
||||
#define HAS_SCALEROWUP2_LINEAR_12_SSSE3
|
||||
#define HAS_SCALEROWUP2_BILINEAR_12_SSSE3
|
||||
#define HAS_SCALEROWUP2_LINEAR_16_SSE2
|
||||
#define HAS_SCALEROWUP2_BILINEAR_16_SSE2
|
||||
#define HAS_SCALEUVROWUP2_LINEAR_SSSE3
|
||||
#define HAS_SCALEUVROWUP2_BILINEAR_SSSE3
|
||||
#define HAS_SCALEUVROWUP2_LINEAR_16_SSE41
|
||||
#define HAS_SCALEUVROWUP2_BILINEAR_16_SSE41
|
||||
#endif
|
||||
|
||||
// The following are available for gcc/clang x86 platforms, but
|
||||
// require clang 3.4 or gcc 4.7.
|
||||
@ -610,18 +580,6 @@ void ScaleUVFilterCols64_C(uint8_t* dst_uv,
|
||||
int dx);
|
||||
|
||||
// Specialized scalers for x86.
|
||||
void ScaleRowDown2_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleRowDown2Linear_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleRowDown2Box_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleRowDown2_AVX2(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
@ -634,14 +592,6 @@ void ScaleRowDown2Box_AVX2(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleRowDown4_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleRowDown4Box_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleRowDown4_AVX2(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
@ -651,63 +601,7 @@ void ScaleRowDown4Box_AVX2(const uint8_t* src_ptr,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
|
||||
void ScaleRowDown34_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleRowDown34_1_Box_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleRowDown34_0_Box_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleRowDown38_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleRowDown38_3_Box_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleRowDown38_2_Box_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
|
||||
void ScaleRowUp2_Linear_SSE2(const uint8_t* src_ptr,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleRowUp2_Bilinear_SSE2(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
ptrdiff_t dst_stride,
|
||||
int dst_width);
|
||||
void ScaleRowUp2_Linear_12_SSSE3(const uint16_t* src_ptr,
|
||||
uint16_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleRowUp2_Bilinear_12_SSSE3(const uint16_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint16_t* dst_ptr,
|
||||
ptrdiff_t dst_stride,
|
||||
int dst_width);
|
||||
void ScaleRowUp2_Linear_16_SSE2(const uint16_t* src_ptr,
|
||||
uint16_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleRowUp2_Bilinear_16_SSE2(const uint16_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint16_t* dst_ptr,
|
||||
ptrdiff_t dst_stride,
|
||||
int dst_width);
|
||||
void ScaleRowUp2_Linear_SSSE3(const uint8_t* src_ptr,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleRowUp2_Bilinear_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
ptrdiff_t dst_stride,
|
||||
int dst_width);
|
||||
void ScaleRowUp2_Linear_AVX2(const uint8_t* src_ptr,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
@ -732,38 +626,6 @@ void ScaleRowUp2_Bilinear_16_AVX2(const uint16_t* src_ptr,
|
||||
uint16_t* dst_ptr,
|
||||
ptrdiff_t dst_stride,
|
||||
int dst_width);
|
||||
void ScaleRowUp2_Linear_Any_SSE2(const uint8_t* src_ptr,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleRowUp2_Bilinear_Any_SSE2(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
ptrdiff_t dst_stride,
|
||||
int dst_width);
|
||||
void ScaleRowUp2_Linear_12_Any_SSSE3(const uint16_t* src_ptr,
|
||||
uint16_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleRowUp2_Bilinear_12_Any_SSSE3(const uint16_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint16_t* dst_ptr,
|
||||
ptrdiff_t dst_stride,
|
||||
int dst_width);
|
||||
void ScaleRowUp2_Linear_16_Any_SSE2(const uint16_t* src_ptr,
|
||||
uint16_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleRowUp2_Bilinear_16_Any_SSE2(const uint16_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint16_t* dst_ptr,
|
||||
ptrdiff_t dst_stride,
|
||||
int dst_width);
|
||||
void ScaleRowUp2_Linear_Any_SSSE3(const uint8_t* src_ptr,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleRowUp2_Bilinear_Any_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
ptrdiff_t dst_stride,
|
||||
int dst_width);
|
||||
void ScaleRowUp2_Linear_Any_AVX2(const uint8_t* src_ptr,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
@ -789,22 +651,6 @@ void ScaleRowUp2_Bilinear_16_Any_AVX2(const uint16_t* src_ptr,
|
||||
ptrdiff_t dst_stride,
|
||||
int dst_width);
|
||||
|
||||
void ScaleRowDown2_Any_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleRowDown2Linear_Any_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleRowDown2Box_Any_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleRowDown2Box_Odd_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleRowDown2_Any_AVX2(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
@ -821,14 +667,6 @@ void ScaleRowDown2Box_Odd_AVX2(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleRowDown4_Any_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleRowDown4Box_Any_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleRowDown4_Any_AVX2(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
@ -838,67 +676,14 @@ void ScaleRowDown4Box_Any_AVX2(const uint8_t* src_ptr,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
|
||||
void ScaleRowDown34_Any_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleRowDown34_1_Box_Any_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleRowDown34_0_Box_Any_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleRowDown38_Any_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleRowDown38_3_Box_Any_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleRowDown38_2_Box_Any_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
|
||||
void ScaleAddRow_SSE2(const uint8_t* src_ptr, uint16_t* dst_ptr, int src_width);
|
||||
void ScaleAddRow_AVX2(const uint8_t* src_ptr, uint16_t* dst_ptr, int src_width);
|
||||
void ScaleAddRow_Any_SSE2(const uint8_t* src_ptr,
|
||||
uint16_t* dst_ptr,
|
||||
int src_width);
|
||||
void ScaleAddRow_Any_AVX2(const uint8_t* src_ptr,
|
||||
uint16_t* dst_ptr,
|
||||
int src_width);
|
||||
|
||||
void ScaleFilterCols_SSSE3(uint8_t* dst_ptr,
|
||||
const uint8_t* src_ptr,
|
||||
int dst_width,
|
||||
int x,
|
||||
int dx);
|
||||
void ScaleColsUp2_SSE2(uint8_t* dst_ptr,
|
||||
const uint8_t* src_ptr,
|
||||
int dst_width,
|
||||
int x,
|
||||
int dx);
|
||||
|
||||
// ARGB Column functions
|
||||
void ScaleARGBCols_SSE2(uint8_t* dst_argb,
|
||||
const uint8_t* src_argb,
|
||||
int dst_width,
|
||||
int x,
|
||||
int dx);
|
||||
void ScaleARGBFilterCols_SSSE3(uint8_t* dst_argb,
|
||||
const uint8_t* src_argb,
|
||||
int dst_width,
|
||||
int x,
|
||||
int dx);
|
||||
void ScaleARGBColsUp2_SSE2(uint8_t* dst_argb,
|
||||
const uint8_t* src_argb,
|
||||
int dst_width,
|
||||
int x,
|
||||
int dx);
|
||||
void ScaleARGBFilterCols_NEON(uint8_t* dst_argb,
|
||||
const uint8_t* src_argb,
|
||||
int dst_width,
|
||||
@ -926,18 +711,6 @@ void ScaleARGBFilterCols_RVV(uint8_t* dst_argb,
|
||||
int dx);
|
||||
|
||||
// ARGB Row functions
|
||||
void ScaleARGBRowDown2_SSE2(const uint8_t* src_argb,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_argb,
|
||||
int dst_width);
|
||||
void ScaleARGBRowDown2Linear_SSE2(const uint8_t* src_argb,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_argb,
|
||||
int dst_width);
|
||||
void ScaleARGBRowDown2Box_SSE2(const uint8_t* src_argb,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_argb,
|
||||
int dst_width);
|
||||
void ScaleARGBRowDown2_NEON(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst,
|
||||
@ -986,18 +759,6 @@ void ScaleARGBRowDown2Box_LSX(const uint8_t* src_argb,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_argb,
|
||||
int dst_width);
|
||||
void ScaleARGBRowDown2_Any_SSE2(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleARGBRowDown2Linear_Any_SSE2(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleARGBRowDown2Box_Any_SSE2(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleARGBRowDown2_Any_NEON(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
@ -1022,16 +783,6 @@ void ScaleARGBRowDown2Box_Any_LSX(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleARGBRowDownEven_SSE2(const uint8_t* src_argb,
|
||||
ptrdiff_t src_stride,
|
||||
int src_stepx,
|
||||
uint8_t* dst_argb,
|
||||
int dst_width);
|
||||
void ScaleARGBRowDownEvenBox_SSE2(const uint8_t* src_argb,
|
||||
ptrdiff_t src_stride,
|
||||
int src_stepx,
|
||||
uint8_t* dst_argb,
|
||||
int dst_width);
|
||||
void ScaleARGBRowDownEven_NEON(const uint8_t* src_argb,
|
||||
ptrdiff_t src_stride,
|
||||
int src_stepx,
|
||||
@ -1062,16 +813,6 @@ void ScaleARGBRowDownEvenBox_RVV(const uint8_t* src_argb,
|
||||
int src_stepx,
|
||||
uint8_t* dst_argb,
|
||||
int dst_width);
|
||||
void ScaleARGBRowDownEven_Any_SSE2(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
int src_stepx,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleARGBRowDownEvenBox_Any_SSE2(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
int src_stepx,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleARGBRowDownEven_Any_NEON(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
int src_stepx,
|
||||
@ -1094,18 +835,6 @@ void ScaleARGBRowDownEvenBox_Any_LSX(const uint8_t* src_ptr,
|
||||
int dst_width);
|
||||
|
||||
// UV Row functions
|
||||
void ScaleUVRowDown2_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_uv,
|
||||
int dst_width);
|
||||
void ScaleUVRowDown2Linear_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_uv,
|
||||
int dst_width);
|
||||
void ScaleUVRowDown2Box_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_uv,
|
||||
int dst_width);
|
||||
void ScaleUVRowDown2Box_AVX2(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_uv,
|
||||
@ -1146,18 +875,6 @@ void ScaleUVRowDown2Box_RVV(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst,
|
||||
int dst_width);
|
||||
void ScaleUVRowDown2_Any_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleUVRowDown2Linear_Any_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleUVRowDown2Box_Any_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleUVRowDown2Box_Any_AVX2(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
@ -1174,16 +891,6 @@ void ScaleUVRowDown2Box_Any_NEON(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleUVRowDownEven_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
int src_stepx,
|
||||
uint8_t* dst_uv,
|
||||
int dst_width);
|
||||
void ScaleUVRowDownEvenBox_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
int src_stepx,
|
||||
uint8_t* dst_uv,
|
||||
int dst_width);
|
||||
void ScaleUVRowDownEven_NEON(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
int src_stepx,
|
||||
@ -1204,16 +911,6 @@ void ScaleUVRowDownEven_RVV(const uint8_t* src_ptr,
|
||||
int32_t src_stepx,
|
||||
uint8_t* dst_uv,
|
||||
int dst_width);
|
||||
void ScaleUVRowDownEven_Any_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
int src_stepx,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleUVRowDownEvenBox_Any_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
int src_stepx,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleUVRowDownEven_Any_NEON(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
int src_stepx,
|
||||
@ -1225,22 +922,6 @@ void ScaleUVRowDownEvenBox_Any_NEON(const uint8_t* src_ptr,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
|
||||
void ScaleUVRowUp2_Linear_SSSE3(const uint8_t* src_ptr,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleUVRowUp2_Bilinear_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
ptrdiff_t dst_stride,
|
||||
int dst_width);
|
||||
void ScaleUVRowUp2_Linear_Any_SSSE3(const uint8_t* src_ptr,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleUVRowUp2_Bilinear_Any_SSSE3(const uint8_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_ptr,
|
||||
ptrdiff_t dst_stride,
|
||||
int dst_width);
|
||||
void ScaleUVRowUp2_Linear_AVX2(const uint8_t* src_ptr,
|
||||
uint8_t* dst_ptr,
|
||||
int dst_width);
|
||||
@ -1281,22 +962,6 @@ void ScaleUVRowUp2_Bilinear_RVV(const uint8_t* src_ptr,
|
||||
uint8_t* dst_ptr,
|
||||
ptrdiff_t dst_stride,
|
||||
int dst_width);
|
||||
void ScaleUVRowUp2_Linear_16_SSE41(const uint16_t* src_ptr,
|
||||
uint16_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleUVRowUp2_Bilinear_16_SSE41(const uint16_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint16_t* dst_ptr,
|
||||
ptrdiff_t dst_stride,
|
||||
int dst_width);
|
||||
void ScaleUVRowUp2_Linear_16_Any_SSE41(const uint16_t* src_ptr,
|
||||
uint16_t* dst_ptr,
|
||||
int dst_width);
|
||||
void ScaleUVRowUp2_Bilinear_16_Any_SSE41(const uint16_t* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
uint16_t* dst_ptr,
|
||||
ptrdiff_t dst_stride,
|
||||
int dst_width);
|
||||
void ScaleUVRowUp2_Linear_16_AVX2(const uint16_t* src_ptr,
|
||||
uint16_t* dst_ptr,
|
||||
int dst_width);
|
||||
|
||||
@ -32,32 +32,31 @@ LIBYUV_API
|
||||
uint32_t HashDjb2(const uint8_t* src, uint64_t count, uint32_t seed) {
|
||||
const int kBlockSize = 1 << 15; // 32768;
|
||||
int remainder;
|
||||
uint32_t (*HashDjb2_SSE)(const uint8_t* src, int count, uint32_t seed) =
|
||||
uint32_t (*HashDjb2_Opt)(const uint8_t* src, int count, uint32_t seed) =
|
||||
HashDjb2_C;
|
||||
#if defined(HAS_HASHDJB2_SSE41)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE41)) {
|
||||
HashDjb2_SSE = HashDjb2_SSE41;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_HASHDJB2_AVX2)
|
||||
if (TestCpuFlag(kCpuHasAVX2)) {
|
||||
HashDjb2_SSE = HashDjb2_AVX2;
|
||||
HashDjb2_Opt = HashDjb2_AVX2;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_HASHDJB2_NEON)
|
||||
if (TestCpuFlag(kCpuHasNEON)) {
|
||||
HashDjb2_SSE = HashDjb2_NEON;
|
||||
HashDjb2_Opt = HashDjb2_NEON;
|
||||
}
|
||||
#endif
|
||||
|
||||
while (count >= (uint64_t)kBlockSize) {
|
||||
seed = HashDjb2_SSE(src, kBlockSize, seed);
|
||||
seed = HashDjb2_Opt(src, kBlockSize, seed);
|
||||
src += kBlockSize;
|
||||
count -= kBlockSize;
|
||||
}
|
||||
remainder = (int)count & ~15;
|
||||
if (remainder) {
|
||||
seed = HashDjb2_SSE(src, remainder, seed);
|
||||
seed = HashDjb2_Opt(src, remainder, seed);
|
||||
src += remainder;
|
||||
count -= remainder;
|
||||
}
|
||||
@ -144,14 +143,12 @@ uint64_t ComputeHammingDistance(const uint8_t* src_a,
|
||||
HammingDistance = HammingDistance_NEON_DotProd;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_HAMMINGDISTANCE_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
HammingDistance = HammingDistance_SSSE3;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_HAMMINGDISTANCE_SSE42)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE42)) {
|
||||
HammingDistance = HammingDistance_SSE42;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_HAMMINGDISTANCE_AVX2)
|
||||
@ -204,10 +201,9 @@ uint64_t ComputeSumSquareError(const uint8_t* src_a,
|
||||
SumSquareError = SumSquareError_NEON_DotProd;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SUMSQUAREERROR_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
// Note only used for multiples of 16 so count is not checked.
|
||||
SumSquareError = SumSquareError_SSE2;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SUMSQUAREERROR_AVX2)
|
||||
|
||||
@ -26,155 +26,16 @@ extern "C" {
|
||||
// "memory" clobber prevents the reads from being removed
|
||||
|
||||
#if defined(__x86_64__)
|
||||
uint32_t HammingDistance_SSE42(const uint8_t* src_a,
|
||||
const uint8_t* src_b,
|
||||
int count) {
|
||||
uint64_t diff;
|
||||
|
||||
asm volatile(
|
||||
"xor %3,%3 \n"
|
||||
"xor %%r8,%%r8 \n"
|
||||
"xor %%r9,%%r9 \n"
|
||||
"xor %%r10,%%r10 \n"
|
||||
|
||||
// Process 32 bytes per loop.
|
||||
LABELALIGN
|
||||
"1: \n"
|
||||
"mov (%0),%%rcx \n"
|
||||
"mov 0x8(%0),%%rdx \n"
|
||||
"xor (%1),%%rcx \n"
|
||||
"xor 0x8(%1),%%rdx \n"
|
||||
"popcnt %%rcx,%%rcx \n"
|
||||
"popcnt %%rdx,%%rdx \n"
|
||||
"mov 0x10(%0),%%rsi \n"
|
||||
"mov 0x18(%0),%%rdi \n"
|
||||
"xor 0x10(%1),%%rsi \n"
|
||||
"xor 0x18(%1),%%rdi \n"
|
||||
"popcnt %%rsi,%%rsi \n"
|
||||
"popcnt %%rdi,%%rdi \n"
|
||||
"add $0x20,%0 \n"
|
||||
"add $0x20,%1 \n"
|
||||
"add %%rcx,%3 \n"
|
||||
"add %%rdx,%%r8 \n"
|
||||
"add %%rsi,%%r9 \n"
|
||||
"add %%rdi,%%r10 \n"
|
||||
"sub $0x20,%2 \n"
|
||||
"jg 1b \n"
|
||||
|
||||
"add %%r8, %3 \n"
|
||||
"add %%r9, %3 \n"
|
||||
"add %%r10, %3 \n"
|
||||
: "+r"(src_a), // %0
|
||||
"+r"(src_b), // %1
|
||||
"+r"(count), // %2
|
||||
"=&r"(diff) // %3
|
||||
:
|
||||
: "cc", "memory", "rcx", "rdx", "rsi", "rdi", "r8", "r9", "r10");
|
||||
|
||||
return (uint32_t)(diff);
|
||||
}
|
||||
#else
|
||||
uint32_t HammingDistance_SSE42(const uint8_t* src_a,
|
||||
const uint8_t* src_b,
|
||||
int count) {
|
||||
uint32_t diff = 0u;
|
||||
|
||||
asm volatile(
|
||||
// Process 16 bytes per loop.
|
||||
LABELALIGN
|
||||
"1: \n"
|
||||
"mov (%0),%%ecx \n"
|
||||
"mov 0x4(%0),%%edx \n"
|
||||
"xor (%1),%%ecx \n"
|
||||
"xor 0x4(%1),%%edx \n"
|
||||
"popcnt %%ecx,%%ecx \n"
|
||||
"add %%ecx,%3 \n"
|
||||
"popcnt %%edx,%%edx \n"
|
||||
"add %%edx,%3 \n"
|
||||
"mov 0x8(%0),%%ecx \n"
|
||||
"mov 0xc(%0),%%edx \n"
|
||||
"xor 0x8(%1),%%ecx \n"
|
||||
"xor 0xc(%1),%%edx \n"
|
||||
"popcnt %%ecx,%%ecx \n"
|
||||
"add %%ecx,%3 \n"
|
||||
"popcnt %%edx,%%edx \n"
|
||||
"add %%edx,%3 \n"
|
||||
"add $0x10,%0 \n"
|
||||
"add $0x10,%1 \n"
|
||||
"sub $0x10,%2 \n"
|
||||
"jg 1b \n"
|
||||
: "+r"(src_a), // %0
|
||||
"+r"(src_b), // %1
|
||||
"+r"(count), // %2
|
||||
"+r"(diff) // %3
|
||||
:
|
||||
: "cc", "memory", "ecx", "edx");
|
||||
|
||||
return diff;
|
||||
}
|
||||
#endif
|
||||
|
||||
static const vec8 kNibbleMask = {15, 15, 15, 15, 15, 15, 15, 15,
|
||||
15, 15, 15, 15, 15, 15, 15, 15};
|
||||
static const vec8 kBitCount = {0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4};
|
||||
|
||||
uint32_t HammingDistance_SSSE3(const uint8_t* src_a,
|
||||
const uint8_t* src_b,
|
||||
int count) {
|
||||
uint32_t diff;
|
||||
|
||||
asm volatile(
|
||||
"movdqa %4,%%xmm2 \n"
|
||||
"movdqa %5,%%xmm3 \n"
|
||||
"pxor %%xmm0,%%xmm0 \n"
|
||||
"pxor %%xmm1,%%xmm1 \n"
|
||||
"sub %0,%1 \n"
|
||||
|
||||
LABELALIGN
|
||||
"1: \n"
|
||||
"movdqa (%0),%%xmm4 \n"
|
||||
"movdqa 0x10(%0), %%xmm5 \n"
|
||||
"pxor (%0,%1), %%xmm4 \n"
|
||||
"movdqa %%xmm4,%%xmm6 \n"
|
||||
"pand %%xmm2,%%xmm6 \n"
|
||||
"psrlw $0x4,%%xmm4 \n"
|
||||
"movdqa %%xmm3,%%xmm7 \n"
|
||||
"pshufb %%xmm6,%%xmm7 \n"
|
||||
"pand %%xmm2,%%xmm4 \n"
|
||||
"movdqa %%xmm3,%%xmm6 \n"
|
||||
"pshufb %%xmm4,%%xmm6 \n"
|
||||
"paddb %%xmm7,%%xmm6 \n"
|
||||
"pxor 0x10(%0,%1),%%xmm5 \n"
|
||||
"add $0x20,%0 \n"
|
||||
"movdqa %%xmm5,%%xmm4 \n"
|
||||
"pand %%xmm2,%%xmm5 \n"
|
||||
"psrlw $0x4,%%xmm4 \n"
|
||||
"movdqa %%xmm3,%%xmm7 \n"
|
||||
"pshufb %%xmm5,%%xmm7 \n"
|
||||
"pand %%xmm2,%%xmm4 \n"
|
||||
"movdqa %%xmm3,%%xmm5 \n"
|
||||
"pshufb %%xmm4,%%xmm5 \n"
|
||||
"paddb %%xmm7,%%xmm5 \n"
|
||||
"paddb %%xmm5,%%xmm6 \n"
|
||||
"psadbw %%xmm1,%%xmm6 \n"
|
||||
"paddd %%xmm6,%%xmm0 \n"
|
||||
"sub $0x20,%2 \n"
|
||||
"jg 1b \n"
|
||||
|
||||
"pshufd $0xaa,%%xmm0,%%xmm1 \n"
|
||||
"paddd %%xmm1,%%xmm0 \n"
|
||||
"movd %%xmm0, %3 \n"
|
||||
: "+r"(src_a), // %0
|
||||
"+r"(src_b), // %1
|
||||
"+r"(count), // %2
|
||||
"=r"(diff) // %3
|
||||
: "m"(kNibbleMask), // %4
|
||||
"m"(kBitCount) // %5
|
||||
: "cc", "memory", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6",
|
||||
"xmm7");
|
||||
|
||||
return diff;
|
||||
}
|
||||
|
||||
#ifdef HAS_HAMMINGDISTANCE_AVX2
|
||||
uint32_t HammingDistance_AVX2(const uint8_t* src_a,
|
||||
@ -232,47 +93,7 @@ uint32_t HammingDistance_AVX2(const uint8_t* src_a,
|
||||
}
|
||||
#endif // HAS_HAMMINGDISTANCE_AVX2
|
||||
|
||||
uint32_t SumSquareError_SSE2(const uint8_t* src_a,
|
||||
const uint8_t* src_b,
|
||||
int count) {
|
||||
uint32_t sse;
|
||||
asm volatile(
|
||||
"pxor %%xmm0,%%xmm0 \n"
|
||||
"pxor %%xmm5,%%xmm5 \n"
|
||||
|
||||
LABELALIGN
|
||||
"1: \n"
|
||||
"movdqu (%0),%%xmm1 \n"
|
||||
"lea 0x10(%0),%0 \n"
|
||||
"movdqu (%1),%%xmm2 \n"
|
||||
"lea 0x10(%1),%1 \n"
|
||||
"movdqa %%xmm1,%%xmm3 \n"
|
||||
"psubusb %%xmm2,%%xmm1 \n"
|
||||
"psubusb %%xmm3,%%xmm2 \n"
|
||||
"por %%xmm2,%%xmm1 \n"
|
||||
"movdqa %%xmm1,%%xmm2 \n"
|
||||
"punpcklbw %%xmm5,%%xmm1 \n"
|
||||
"punpckhbw %%xmm5,%%xmm2 \n"
|
||||
"pmaddwd %%xmm1,%%xmm1 \n"
|
||||
"pmaddwd %%xmm2,%%xmm2 \n"
|
||||
"paddd %%xmm1,%%xmm0 \n"
|
||||
"paddd %%xmm2,%%xmm0 \n"
|
||||
"sub $0x10,%2 \n"
|
||||
"jg 1b \n"
|
||||
|
||||
"pshufd $0xee,%%xmm0,%%xmm1 \n"
|
||||
"paddd %%xmm1,%%xmm0 \n"
|
||||
"pshufd $0x1,%%xmm0,%%xmm1 \n"
|
||||
"paddd %%xmm1,%%xmm0 \n"
|
||||
"movd %%xmm0,%3 \n"
|
||||
: "+r"(src_a), // %0
|
||||
"+r"(src_b), // %1
|
||||
"+r"(count), // %2
|
||||
"=r"(sse) // %3
|
||||
:
|
||||
: "cc", "memory", "xmm0", "xmm1", "xmm2", "xmm3", "xmm5");
|
||||
return sse;
|
||||
}
|
||||
|
||||
static const uvec32 kHash16x33 = {0x92d9e201, 0, 0, 0}; // 33 ^ 16
|
||||
static const uvec32 kHashMul0 = {
|
||||
@ -300,60 +121,7 @@ static const uvec32 kHashMul3 = {
|
||||
0x00000001, // 33 ^ 0
|
||||
};
|
||||
|
||||
uint32_t HashDjb2_SSE41(const uint8_t* src, int count, uint32_t seed) {
|
||||
uint32_t hash;
|
||||
asm volatile(
|
||||
"movd %2,%%xmm0 \n"
|
||||
"pxor %%xmm7,%%xmm7 \n"
|
||||
"movdqa %4,%%xmm6 \n"
|
||||
|
||||
LABELALIGN
|
||||
"1: \n"
|
||||
"movdqu (%0),%%xmm1 \n"
|
||||
"lea 0x10(%0),%0 \n"
|
||||
"pmulld %%xmm6,%%xmm0 \n"
|
||||
"movdqa %5,%%xmm5 \n"
|
||||
"movdqa %%xmm1,%%xmm2 \n"
|
||||
"punpcklbw %%xmm7,%%xmm2 \n"
|
||||
"movdqa %%xmm2,%%xmm3 \n"
|
||||
"punpcklwd %%xmm7,%%xmm3 \n"
|
||||
"pmulld %%xmm5,%%xmm3 \n"
|
||||
"movdqa %6,%%xmm5 \n"
|
||||
"movdqa %%xmm2,%%xmm4 \n"
|
||||
"punpckhwd %%xmm7,%%xmm4 \n"
|
||||
"pmulld %%xmm5,%%xmm4 \n"
|
||||
"movdqa %7,%%xmm5 \n"
|
||||
"punpckhbw %%xmm7,%%xmm1 \n"
|
||||
"movdqa %%xmm1,%%xmm2 \n"
|
||||
"punpcklwd %%xmm7,%%xmm2 \n"
|
||||
"pmulld %%xmm5,%%xmm2 \n"
|
||||
"movdqa %8,%%xmm5 \n"
|
||||
"punpckhwd %%xmm7,%%xmm1 \n"
|
||||
"pmulld %%xmm5,%%xmm1 \n"
|
||||
"paddd %%xmm4,%%xmm3 \n"
|
||||
"paddd %%xmm2,%%xmm1 \n"
|
||||
"paddd %%xmm3,%%xmm1 \n"
|
||||
"pshufd $0xe,%%xmm1,%%xmm2 \n"
|
||||
"paddd %%xmm2,%%xmm1 \n"
|
||||
"pshufd $0x1,%%xmm1,%%xmm2 \n"
|
||||
"paddd %%xmm2,%%xmm1 \n"
|
||||
"paddd %%xmm1,%%xmm0 \n"
|
||||
"sub $0x10,%1 \n"
|
||||
"jg 1b \n"
|
||||
"movd %%xmm0,%3 \n"
|
||||
: "+r"(src), // %0
|
||||
"+r"(count), // %1
|
||||
"+rm"(seed), // %2
|
||||
"=r"(hash) // %3
|
||||
: "m"(kHash16x33), // %4
|
||||
"m"(kHashMul0), // %5
|
||||
"m"(kHashMul1), // %6
|
||||
"m"(kHashMul2), // %7
|
||||
"m"(kHashMul3) // %8
|
||||
: "cc", "memory", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6",
|
||||
"xmm7");
|
||||
return hash;
|
||||
}
|
||||
#endif // defined(__x86_64__) || (defined(__i386__) && !defined(__pic__)))
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@ -26,57 +26,10 @@ extern "C" {
|
||||
#if !defined(LIBYUV_DISABLE_X86) && defined(_MSC_VER) && defined(_M_IX86) && \
|
||||
(!defined(__clang__) || defined(LIBYUV_ENABLE_ROWWIN))
|
||||
|
||||
uint32_t HammingDistance_SSE42(const uint8_t* src_a,
|
||||
const uint8_t* src_b,
|
||||
int count) {
|
||||
uint32_t diff = 0u;
|
||||
|
||||
int i;
|
||||
for (i = 0; i < count - 3; i += 4) {
|
||||
uint32_t x = *((uint32_t*)src_a) ^ *((uint32_t*)src_b); // NOLINT
|
||||
src_a += 4;
|
||||
src_b += 4;
|
||||
diff += __popcnt(x);
|
||||
}
|
||||
return diff;
|
||||
}
|
||||
|
||||
__declspec(naked) uint32_t
|
||||
SumSquareError_SSE2(const uint8_t* src_a, const uint8_t* src_b, int count) {
|
||||
__asm {
|
||||
mov eax, [esp + 4] // src_a
|
||||
mov edx, [esp + 8] // src_b
|
||||
mov ecx, [esp + 12] // count
|
||||
pxor xmm0, xmm0
|
||||
pxor xmm5, xmm5
|
||||
|
||||
wloop:
|
||||
movdqu xmm1, [eax]
|
||||
lea eax, [eax + 16]
|
||||
movdqu xmm2, [edx]
|
||||
lea edx, [edx + 16]
|
||||
movdqa xmm3, xmm1 // abs trick
|
||||
psubusb xmm1, xmm2
|
||||
psubusb xmm2, xmm3
|
||||
por xmm1, xmm2
|
||||
movdqa xmm2, xmm1
|
||||
punpcklbw xmm1, xmm5
|
||||
punpckhbw xmm2, xmm5
|
||||
pmaddwd xmm1, xmm1
|
||||
pmaddwd xmm2, xmm2
|
||||
paddd xmm0, xmm1
|
||||
paddd xmm0, xmm2
|
||||
sub ecx, 16
|
||||
jg wloop
|
||||
|
||||
pshufd xmm1, xmm0, 0xee
|
||||
paddd xmm0, xmm1
|
||||
pshufd xmm1, xmm0, 0x01
|
||||
paddd xmm0, xmm1
|
||||
movd eax, xmm0
|
||||
ret
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef HAS_SUMSQUAREERROR_AVX2
|
||||
// C4752: found Intel(R) Advanced Vector Extensions; consider using /arch:AVX.
|
||||
@ -147,53 +100,7 @@ uvec32 kHashMul3 = {
|
||||
};
|
||||
|
||||
__declspec(naked) uint32_t
|
||||
HashDjb2_SSE41(const uint8_t* src, int count, uint32_t seed) {
|
||||
__asm {
|
||||
mov eax, [esp + 4] // src
|
||||
mov ecx, [esp + 8] // count
|
||||
movd xmm0, [esp + 12] // seed
|
||||
|
||||
pxor xmm7, xmm7 // constant 0 for unpck
|
||||
movdqa xmm6, xmmword ptr kHash16x33
|
||||
|
||||
wloop:
|
||||
movdqu xmm1, [eax] // src[0-15]
|
||||
lea eax, [eax + 16]
|
||||
pmulld xmm0, xmm6 // hash *= 33 ^ 16
|
||||
movdqa xmm5, xmmword ptr kHashMul0
|
||||
movdqa xmm2, xmm1
|
||||
punpcklbw xmm2, xmm7 // src[0-7]
|
||||
movdqa xmm3, xmm2
|
||||
punpcklwd xmm3, xmm7 // src[0-3]
|
||||
pmulld xmm3, xmm5
|
||||
movdqa xmm5, xmmword ptr kHashMul1
|
||||
movdqa xmm4, xmm2
|
||||
punpckhwd xmm4, xmm7 // src[4-7]
|
||||
pmulld xmm4, xmm5
|
||||
movdqa xmm5, xmmword ptr kHashMul2
|
||||
punpckhbw xmm1, xmm7 // src[8-15]
|
||||
movdqa xmm2, xmm1
|
||||
punpcklwd xmm2, xmm7 // src[8-11]
|
||||
pmulld xmm2, xmm5
|
||||
movdqa xmm5, xmmword ptr kHashMul3
|
||||
punpckhwd xmm1, xmm7 // src[12-15]
|
||||
pmulld xmm1, xmm5
|
||||
paddd xmm3, xmm4 // add 16 results
|
||||
paddd xmm1, xmm2
|
||||
paddd xmm1, xmm3
|
||||
|
||||
pshufd xmm2, xmm1, 0x0e // upper 2 dwords
|
||||
paddd xmm1, xmm2
|
||||
pshufd xmm2, xmm1, 0x01
|
||||
paddd xmm1, xmm2
|
||||
paddd xmm0, xmm1
|
||||
sub ecx, 16
|
||||
jg wloop
|
||||
|
||||
movd eax, xmm0 // return hash
|
||||
ret
|
||||
}
|
||||
}
|
||||
|
||||
// Visual C 2012 required for AVX2.
|
||||
#ifdef HAS_HASHDJB2_AVX2
|
||||
|
||||
@ -689,11 +689,9 @@ int I010ToNV12(const uint16_t* src_y,
|
||||
Convert16To8Row = Convert16To8Row_SME;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_CONVERT16TO8ROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
Convert16To8Row = Convert16To8Row_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
Convert16To8Row = Convert16To8Row_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -714,11 +712,9 @@ int I010ToNV12(const uint16_t* src_y,
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(HAS_MERGEUVROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
MergeUVRow = MergeUVRow_Any_SSE2;
|
||||
if (IS_ALIGNED(halfwidth, 16)) {
|
||||
MergeUVRow = MergeUVRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -1154,11 +1150,9 @@ int I422ToNV21(const uint8_t* src_y,
|
||||
src_stride_u = -src_stride_u;
|
||||
src_stride_v = -src_stride_v;
|
||||
}
|
||||
#if defined(HAS_MERGEUVROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
MergeUVRow = MergeUVRow_Any_SSE2;
|
||||
if (IS_ALIGNED(halfwidth, 16)) {
|
||||
MergeUVRow = MergeUVRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -1204,11 +1198,9 @@ int I422ToNV21(const uint8_t* src_y,
|
||||
MergeUVRow = MergeUVRow_RVV;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_INTERPOLATEROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
InterpolateRow = InterpolateRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
InterpolateRow = InterpolateRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -1673,13 +1665,9 @@ int YUY2ToI420(const uint8_t* src_yuy2,
|
||||
src_yuy2 = src_yuy2 + (height - 1) * src_stride_yuy2;
|
||||
src_stride_yuy2 = -src_stride_yuy2;
|
||||
}
|
||||
#if defined(HAS_YUY2TOYROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
YUY2ToUVRow = YUY2ToUVRow_Any_SSE2;
|
||||
YUY2ToYRow = YUY2ToYRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
YUY2ToUVRow = YUY2ToUVRow_SSE2;
|
||||
YUY2ToYRow = YUY2ToYRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -1764,13 +1752,9 @@ int UYVYToI420(const uint8_t* src_uyvy,
|
||||
src_uyvy = src_uyvy + (height - 1) * src_stride_uyvy;
|
||||
src_stride_uyvy = -src_stride_uyvy;
|
||||
}
|
||||
#if defined(HAS_UYVYTOYROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
UYVYToUVRow = UYVYToUVRow_Any_SSE2;
|
||||
UYVYToYRow = UYVYToYRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
UYVYToUVRow = UYVYToUVRow_SSE2;
|
||||
UYVYToYRow = UYVYToYRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -1863,13 +1847,9 @@ int AYUVToNV12(const uint8_t* src_ayuv,
|
||||
src_stride_ayuv = -src_stride_ayuv;
|
||||
}
|
||||
// place holders for future intel code
|
||||
#if defined(HAS_AYUVTOYROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
AYUVToUVRow = AYUVToUVRow_Any_SSE2;
|
||||
AYUVToYRow = AYUVToYRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
AYUVToUVRow = AYUVToUVRow_SSE2;
|
||||
AYUVToYRow = AYUVToYRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -1940,13 +1920,9 @@ int AYUVToNV21(const uint8_t* src_ayuv,
|
||||
src_stride_ayuv = -src_stride_ayuv;
|
||||
}
|
||||
// place holders for future intel code
|
||||
#if defined(HAS_AYUVTOYROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
AYUVToVURow = AYUVToVURow_Any_SSE2;
|
||||
AYUVToYRow = AYUVToYRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
AYUVToVURow = AYUVToVURow_SSE2;
|
||||
AYUVToYRow = AYUVToYRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -2070,19 +2046,15 @@ int ARGBToI420(const uint8_t* src_argb,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOYROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToYRow = ARGBToYRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToYRow = ARGBToYRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOUVROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToUVRow = ARGBToUVRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToUVRow = ARGBToUVRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -2183,11 +2155,9 @@ int ARGBToI420Matrix(const uint8_t* src_argb,
|
||||
const struct ArgbConstants* c) =
|
||||
ARGBToUVMatrixRow_C;
|
||||
|
||||
#if defined(HAS_ARGBTOYMATRIXROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToYMatrixRow = ARGBToYMatrixRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToYMatrixRow = ARGBToYMatrixRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -2271,11 +2241,9 @@ ARGBToUVMatrixRow_C;
|
||||
ARGBToUVMatrixRow = ARGBToUVMatrixRow_SME;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOUVMATRIXROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToUVMatrixRow = ARGBToUVMatrixRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 8)) {
|
||||
ARGBToUVMatrixRow = ARGBToUVMatrixRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -2421,19 +2389,15 @@ int ARGBToI420Alpha(const uint8_t* src_argb,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOYROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToYRow = ARGBToYRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToYRow = ARGBToYRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOUVROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToUVRow = ARGBToUVRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToUVRow = ARGBToUVRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -2487,7 +2451,7 @@ int ARGBToI420Alpha(const uint8_t* src_argb,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBEXTRACTALPHAROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
ARGBExtractAlphaRow = IS_ALIGNED(width, 8) ? ARGBExtractAlphaRow_SSE2
|
||||
: ARGBExtractAlphaRow_Any_SSE2;
|
||||
@ -2614,19 +2578,15 @@ int BGRAToI420(const uint8_t* src_bgra,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_BGRATOYROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
BGRAToYRow = BGRAToYRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
BGRAToYRow = BGRAToYRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_BGRATOUVROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
BGRAToUVRow = BGRAToUVRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
BGRAToUVRow = BGRAToUVRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -2721,19 +2681,15 @@ int ABGRToI420(const uint8_t* src_abgr,
|
||||
src_abgr = src_abgr + (height - 1) * src_stride_abgr;
|
||||
src_stride_abgr = -src_stride_abgr;
|
||||
}
|
||||
#if defined(HAS_ABGRTOYROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ABGRToYRow = ABGRToYRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ABGRToYRow = ABGRToYRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ABGRTOUVROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ABGRToUVRow = ABGRToUVRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ABGRToUVRow = ABGRToUVRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -2876,11 +2832,9 @@ int RGBAToI420(const uint8_t* src_rgba,
|
||||
src_rgba = src_rgba + (height - 1) * src_stride_rgba;
|
||||
src_stride_rgba = -src_stride_rgba;
|
||||
}
|
||||
#if defined(HAS_RGBATOYROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
RGBAToYRow = RGBAToYRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
RGBAToYRow = RGBAToYRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -2900,11 +2854,9 @@ int RGBAToI420(const uint8_t* src_rgba,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_RGBATOUVROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
RGBAToUVRow = RGBAToUVRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
RGBAToUVRow = RGBAToUVRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -3022,11 +2974,9 @@ int RGB24ToI420(const uint8_t* src_rgb24,
|
||||
ARGBToUVRow_C;
|
||||
void (*ARGBToYMatrixRow)(const uint8_t* src_argb, uint8_t* dst_y, int width,
|
||||
const struct ArgbConstants* c) = ARGBToYMatrixRow_C;
|
||||
#if defined(HAS_ARGBTOYMATRIXROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToYMatrixRow = ARGBToYMatrixRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToYMatrixRow = ARGBToYMatrixRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -3095,11 +3045,9 @@ int RGB24ToI420(const uint8_t* src_rgb24,
|
||||
src_stride_rgb24 = -src_stride_rgb24;
|
||||
}
|
||||
|
||||
#if defined(HAS_RGB24TOARGBROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
RGB24ToARGBRow = RGB24ToARGBRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
RGB24ToARGBRow = RGB24ToARGBRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -3153,11 +3101,9 @@ int RGB24ToI420(const uint8_t* src_rgb24,
|
||||
RGB24ToARGBRow = RGB24ToARGBRow_RVV;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOUVROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToUVRow = ARGBToUVRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToUVRow = ARGBToUVRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -3288,11 +3234,9 @@ int RGB24ToJ420(const uint8_t* src_rgb24,
|
||||
// Other platforms do intermediate conversion from RGB24 to ARGB.
|
||||
#else // HAS_RGB24TOYJROW
|
||||
|
||||
#if defined(HAS_RGB24TOARGBROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
RGB24ToARGBRow = RGB24ToARGBRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
RGB24ToARGBRow = RGB24ToARGBRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -3346,11 +3290,9 @@ int RGB24ToJ420(const uint8_t* src_rgb24,
|
||||
RGB24ToARGBRow = RGB24ToARGBRow_RVV;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOYJROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToYJRow = ARGBToYJRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToYJRow = ARGBToYJRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -3370,11 +3312,9 @@ int RGB24ToJ420(const uint8_t* src_rgb24,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOUVJROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToUVJRow = ARGBToUVJRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToUVJRow = ARGBToUVJRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -3458,11 +3398,9 @@ int RAWToI420(const uint8_t* src_raw,
|
||||
ARGBToUVRow_C;
|
||||
void (*ARGBToYMatrixRow)(const uint8_t* src_argb, uint8_t* dst_y, int width,
|
||||
const struct ArgbConstants* c) = ARGBToYMatrixRow_C;
|
||||
#if defined(HAS_ARGBTOYMATRIXROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToYMatrixRow = ARGBToYMatrixRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToYMatrixRow = ARGBToYMatrixRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -3531,11 +3469,9 @@ int RAWToI420(const uint8_t* src_raw,
|
||||
src_stride_raw = -src_stride_raw;
|
||||
}
|
||||
|
||||
#if defined(HAS_RAWTOARGBROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
RAWToARGBRow = RAWToARGBRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
RAWToARGBRow = RAWToARGBRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -3589,11 +3525,9 @@ int RAWToI420(const uint8_t* src_raw,
|
||||
RAWToARGBRow = RAWToARGBRow_RVV;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOUVROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToUVRow = ARGBToUVRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToUVRow = ARGBToUVRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -3728,11 +3662,9 @@ int RAWToJ420(const uint8_t* src_raw,
|
||||
// Other platforms do intermediate conversion from RAW to ARGB.
|
||||
#else // HAS_RAWTOYJROW
|
||||
|
||||
#if defined(HAS_RAWTOARGBROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
RAWToARGBRow = RAWToARGBRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
RAWToARGBRow = RAWToARGBRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -3786,11 +3718,9 @@ int RAWToJ420(const uint8_t* src_raw,
|
||||
RAWToARGBRow = RAWToARGBRow_RVV;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOYJROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToYJRow = ARGBToYJRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToYJRow = ARGBToYJRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -3802,11 +3732,9 @@ int RAWToJ420(const uint8_t* src_raw,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOUVJROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToUVJRow = ARGBToUVJRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToUVJRow = ARGBToUVJRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -3894,11 +3822,9 @@ int RAWToI444(const uint8_t* src_raw,
|
||||
}
|
||||
// TODO: add row coalesce when main loop handles large width in blocks
|
||||
// TODO: implement UV444 or trim the ifdef below
|
||||
#if defined(HAS_ARGBTOUV444ROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToUV444Row = ARGBToUV444Row_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToUV444Row = ARGBToUV444Row_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -3950,11 +3876,9 @@ int RAWToI444(const uint8_t* src_raw,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOYROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToYRow = ARGBToYRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToYRow = ARGBToYRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -4012,11 +3936,9 @@ int RAWToI444(const uint8_t* src_raw,
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(HAS_RAWTOARGBROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
RAWToARGBRow = RAWToARGBRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
RAWToARGBRow = RAWToARGBRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -4121,11 +4043,9 @@ int RAWToJ444(const uint8_t* src_raw,
|
||||
src_stride_raw = -src_stride_raw;
|
||||
}
|
||||
// TODO: add row coalesce when main loop handles large width in blocks
|
||||
#if defined(HAS_ARGBTOUVJ444ROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToUVJ444Row = ARGBToUVJ444Row_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToUVJ444Row = ARGBToUVJ444Row_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -4177,11 +4097,9 @@ int RAWToJ444(const uint8_t* src_raw,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOYJROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToYJRow = ARGBToYJRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToYJRow = ARGBToYJRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -4231,11 +4149,9 @@ int RAWToJ444(const uint8_t* src_raw,
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(HAS_RAWTOARGBROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
RAWToARGBRow = RAWToARGBRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
RAWToARGBRow = RAWToARGBRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -4390,11 +4306,9 @@ int RGB565ToI420(const uint8_t* src_rgb565,
|
||||
}
|
||||
#endif
|
||||
// Other platforms do intermediate conversion from RGB565 to ARGB.
|
||||
#if defined(HAS_RGB565TOARGBROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
RGB565ToARGBRow = RGB565ToARGBRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 8)) {
|
||||
RGB565ToARGBRow = RGB565ToARGBRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -4406,11 +4320,9 @@ int RGB565ToI420(const uint8_t* src_rgb565,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOYROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToYRow = ARGBToYRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToYRow = ARGBToYRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -4430,11 +4342,9 @@ int RGB565ToI420(const uint8_t* src_rgb565,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOUVROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToUVRow = ARGBToUVRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToUVRow = ARGBToUVRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -4581,11 +4491,9 @@ int ARGB1555ToI420(const uint8_t* src_argb1555,
|
||||
#endif
|
||||
|
||||
// Other platforms do intermediate conversion from ARGB1555 to ARGB.
|
||||
#if defined(HAS_ARGB1555TOARGBROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
ARGB1555ToARGBRow = ARGB1555ToARGBRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 8)) {
|
||||
ARGB1555ToARGBRow = ARGB1555ToARGBRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -4597,19 +4505,15 @@ int ARGB1555ToI420(const uint8_t* src_argb1555,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOYROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToYRow = ARGBToYRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToYRow = ARGBToYRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOUVROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToUVRow = ARGBToUVRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToUVRow = ARGBToUVRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -4750,11 +4654,9 @@ int ARGB4444ToI420(const uint8_t* src_argb4444,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGB4444TOARGBROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
ARGB4444ToARGBRow = ARGB4444ToARGBRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 8)) {
|
||||
ARGB4444ToARGBRow = ARGB4444ToARGBRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -4782,19 +4684,15 @@ int ARGB4444ToI420(const uint8_t* src_argb4444,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOYROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToYRow = ARGBToYRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToYRow = ARGBToYRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOUVROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToUVRow = ARGBToUVRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToUVRow = ARGBToUVRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -4917,11 +4815,9 @@ int RGB24ToJ400(const uint8_t* src_rgb24,
|
||||
RGB24ToARGBRow_C;
|
||||
void (*ARGBToYMatrixRow)(const uint8_t* src_argb, uint8_t* dst_y, int width,
|
||||
const struct ArgbConstants* c) = ARGBToYMatrixRow_C;
|
||||
#if defined(HAS_ARGBTOYMATRIXROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToYMatrixRow = ARGBToYMatrixRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToYMatrixRow = ARGBToYMatrixRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -4993,11 +4889,9 @@ int RGB24ToJ400(const uint8_t* src_rgb24,
|
||||
height = 1;
|
||||
src_stride_rgb24 = dst_stride_yj = 0;
|
||||
}
|
||||
#if defined(HAS_RGB24TOARGBROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
RGB24ToARGBRow = RGB24ToARGBRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
RGB24ToARGBRow = RGB24ToARGBRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -5082,11 +4976,9 @@ int RAWToJ400(const uint8_t* src_raw,
|
||||
RAWToARGBRow_C;
|
||||
void (*ARGBToYMatrixRow)(const uint8_t* src_argb, uint8_t* dst_y, int width,
|
||||
const struct ArgbConstants* c) = ARGBToYMatrixRow_C;
|
||||
#if defined(HAS_ARGBTOYMATRIXROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToYMatrixRow = ARGBToYMatrixRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToYMatrixRow = ARGBToYMatrixRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -5160,11 +5052,9 @@ int RAWToJ400(const uint8_t* src_raw,
|
||||
src_stride_raw = dst_stride_yj = 0;
|
||||
}
|
||||
|
||||
#if defined(HAS_RAWTOARGBROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
RAWToARGBRow = RAWToARGBRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
RAWToARGBRow = RAWToARGBRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -362,11 +362,9 @@ int I422ToYUY2(const uint8_t* src_y,
|
||||
height = 1;
|
||||
src_stride_y = src_stride_u = src_stride_v = dst_stride_yuy2 = 0;
|
||||
}
|
||||
#if defined(HAS_I422TOYUY2ROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
I422ToYUY2Row = I422ToYUY2Row_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
I422ToYUY2Row = I422ToYUY2Row_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -421,11 +419,9 @@ int I420ToYUY2(const uint8_t* src_y,
|
||||
dst_yuy2 = dst_yuy2 + (height - 1) * dst_stride_yuy2;
|
||||
dst_stride_yuy2 = -dst_stride_yuy2;
|
||||
}
|
||||
#if defined(HAS_I422TOYUY2ROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
I422ToYUY2Row = I422ToYUY2Row_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
I422ToYUY2Row = I422ToYUY2Row_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -508,11 +504,9 @@ int I422ToUYVY(const uint8_t* src_y,
|
||||
height = 1;
|
||||
src_stride_y = src_stride_u = src_stride_v = dst_stride_uyvy = 0;
|
||||
}
|
||||
#if defined(HAS_I422TOUYVYROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
I422ToUYVYRow = I422ToUYVYRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
I422ToUYVYRow = I422ToUYVYRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -583,11 +577,9 @@ int I420ToUYVY(const uint8_t* src_y,
|
||||
dst_uyvy = dst_uyvy + (height - 1) * dst_stride_uyvy;
|
||||
dst_stride_uyvy = -dst_stride_uyvy;
|
||||
}
|
||||
#if defined(HAS_I422TOUYVYROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
I422ToUYVYRow = I422ToUYVYRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
I422ToUYVYRow = I422ToUYVYRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -52,11 +52,9 @@ int ARGBToI444(const uint8_t* src_argb,
|
||||
height = 1;
|
||||
src_stride_argb = dst_stride_y = dst_stride_u = dst_stride_v = 0;
|
||||
}
|
||||
#if defined(HAS_ARGBTOUV444ROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToUV444Row = ARGBToUV444Row_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToUV444Row = ARGBToUV444Row_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -108,11 +106,9 @@ int ARGBToI444(const uint8_t* src_argb,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOYROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToYRow = ARGBToYRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToYRow = ARGBToYRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -201,11 +197,9 @@ int ARGBToI444Matrix(const uint8_t* src_argb,
|
||||
const struct ArgbConstants* c) =
|
||||
ARGBToUV444MatrixRow_C;
|
||||
|
||||
#if defined(HAS_ARGBTOYMATRIXROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToYMatrixRow = ARGBToYMatrixRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToYMatrixRow = ARGBToYMatrixRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -263,11 +257,9 @@ ARGBToUV444MatrixRow_C;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(HAS_ARGBTOUV444MATRIXROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToUV444MatrixRow = ARGBToUV444MatrixRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToUV444MatrixRow = ARGBToUV444MatrixRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -351,19 +343,15 @@ int ARGBToI422(const uint8_t* src_argb,
|
||||
height = 1;
|
||||
src_stride_argb = dst_stride_y = dst_stride_u = dst_stride_v = 0;
|
||||
}
|
||||
#if defined(HAS_ARGBTOYROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToYRow = ARGBToYRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToYRow = ARGBToYRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOUVROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToUVRow = ARGBToUVRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToUVRow = ARGBToUVRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -512,11 +500,9 @@ int ARGBToI422Matrix(const uint8_t* src_argb,
|
||||
const struct ArgbConstants* c) =
|
||||
ARGBToUVMatrixRow_C;
|
||||
|
||||
#if defined(HAS_ARGBTOYMATRIXROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToYMatrixRow = ARGBToYMatrixRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToYMatrixRow = ARGBToYMatrixRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -600,11 +586,9 @@ ARGBToUVMatrixRow_C;
|
||||
ARGBToUVMatrixRow = ARGBToUVMatrixRow_SME;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOUVMATRIXROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToUVMatrixRow = ARGBToUVMatrixRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 8)) {
|
||||
ARGBToUVMatrixRow = ARGBToUVMatrixRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -713,19 +697,15 @@ int ARGBToNV12(const uint8_t* src_argb,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOYROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToYRow = ARGBToYRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToYRow = ARGBToYRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOUVROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToUVRow = ARGBToUVRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToUVRow = ARGBToUVRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -784,11 +764,9 @@ int ARGBToNV12(const uint8_t* src_argb,
|
||||
ARGBToYRow = ARGBToYRow_RVV;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_MERGEUVROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
MergeUVRow = MergeUVRow_Any_SSE2;
|
||||
if (IS_ALIGNED(halfwidth, 16)) {
|
||||
MergeUVRow = MergeUVRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -879,11 +857,9 @@ int ARGBToNV12Matrix(const uint8_t* src_argb,
|
||||
const struct ArgbConstants* c) =
|
||||
ARGBToUVMatrixRow_C;
|
||||
|
||||
#if defined(HAS_ARGBTOYMATRIXROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToYMatrixRow = ARGBToYMatrixRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToYMatrixRow = ARGBToYMatrixRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -967,11 +943,9 @@ ARGBToUVMatrixRow_C;
|
||||
ARGBToUVMatrixRow = ARGBToUVMatrixRow_SME;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOUVMATRIXROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToUVMatrixRow = ARGBToUVMatrixRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 8)) {
|
||||
ARGBToUVMatrixRow = ARGBToUVMatrixRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -995,11 +969,9 @@ ARGBToUVMatrixRow_C;
|
||||
src_argb = src_argb + (height - 1) * src_stride_argb;
|
||||
src_stride_argb = -src_stride_argb;
|
||||
}
|
||||
#if defined(HAS_MERGEUVROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
MergeUVRow = MergeUVRow_Any_SSE2;
|
||||
if (IS_ALIGNED(halfwidth, 16)) {
|
||||
MergeUVRow = MergeUVRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -1100,19 +1072,15 @@ int ARGBToNV21(const uint8_t* src_argb,
|
||||
src_argb = src_argb + (height - 1) * src_stride_argb;
|
||||
src_stride_argb = -src_stride_argb;
|
||||
}
|
||||
#if defined(HAS_ARGBTOYROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToYRow = ARGBToYRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToYRow = ARGBToYRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOUVROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToUVRow = ARGBToUVRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToUVRow = ARGBToUVRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -1229,11 +1197,9 @@ int ARGBToNV21(const uint8_t* src_argb,
|
||||
ARGBToYRow = ARGBToYRow_RVV;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_MERGEUVROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
MergeUVRow = MergeUVRow_Any_SSE2;
|
||||
if (IS_ALIGNED(halfwidth, 16)) {
|
||||
MergeUVRow = MergeUVRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -1332,19 +1298,15 @@ int ABGRToNV12(const uint8_t* src_abgr,
|
||||
src_abgr = src_abgr + (height - 1) * src_stride_abgr;
|
||||
src_stride_abgr = -src_stride_abgr;
|
||||
}
|
||||
#if defined(HAS_ABGRTOYROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ABGRToYRow = ABGRToYRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ABGRToYRow = ABGRToYRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ABGRTOUVROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ABGRToUVRow = ABGRToUVRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ABGRToUVRow = ABGRToUVRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -1449,11 +1411,9 @@ int ABGRToNV12(const uint8_t* src_abgr,
|
||||
ABGRToYRow = ABGRToYRow_RVV;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_MERGEUVROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
MergeUVRow = MergeUVRow_Any_SSE2;
|
||||
if (IS_ALIGNED(halfwidth, 16)) {
|
||||
MergeUVRow = MergeUVRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -1553,19 +1513,15 @@ int ABGRToNV21(const uint8_t* src_abgr,
|
||||
src_abgr = src_abgr + (height - 1) * src_stride_abgr;
|
||||
src_stride_abgr = -src_stride_abgr;
|
||||
}
|
||||
#if defined(HAS_ABGRTOYROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ABGRToYRow = ABGRToYRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ABGRToYRow = ABGRToYRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ABGRTOUVROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ABGRToUVRow = ABGRToUVRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ABGRToUVRow = ABGRToUVRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -1662,11 +1618,9 @@ int ABGRToNV21(const uint8_t* src_abgr,
|
||||
ABGRToYRow = ABGRToYRow_RVV;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_MERGEUVROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
MergeUVRow = MergeUVRow_Any_SSE2;
|
||||
if (IS_ALIGNED(halfwidth, 16)) {
|
||||
MergeUVRow = MergeUVRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -1771,19 +1725,15 @@ int ARGBToYUY2(const uint8_t* src_argb,
|
||||
height = 1;
|
||||
src_stride_argb = dst_stride_yuy2 = 0;
|
||||
}
|
||||
#if defined(HAS_ARGBTOYROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToYRow = ARGBToYRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToYRow = ARGBToYRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOUVROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToUVRow = ARGBToUVRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToUVRow = ARGBToUVRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -1900,11 +1850,9 @@ int ARGBToYUY2(const uint8_t* src_argb,
|
||||
ARGBToYRow = ARGBToYRow_RVV;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_I422TOYUY2ROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
I422ToYUY2Row = I422ToYUY2Row_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
I422ToYUY2Row = I422ToYUY2Row_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -1995,19 +1943,15 @@ int ARGBToUYVY(const uint8_t* src_argb,
|
||||
height = 1;
|
||||
src_stride_argb = dst_stride_uyvy = 0;
|
||||
}
|
||||
#if defined(HAS_ARGBTOYROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToYRow = ARGBToYRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToYRow = ARGBToYRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOUVROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToUVRow = ARGBToUVRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToUVRow = ARGBToUVRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -2124,11 +2068,9 @@ int ARGBToUYVY(const uint8_t* src_argb,
|
||||
ARGBToYRow = ARGBToYRow_RVV;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_I422TOUYVYROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
I422ToUYVYRow = I422ToUYVYRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
I422ToUYVYRow = I422ToUYVYRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -2211,11 +2153,9 @@ int ARGBToI400(const uint8_t* src_argb,
|
||||
height = 1;
|
||||
src_stride_argb = dst_stride_y = 0;
|
||||
}
|
||||
#if defined(HAS_ARGBTOYROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToYRow = ARGBToYRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToYRow = ARGBToYRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -2364,11 +2304,9 @@ int ARGBToRGB24(const uint8_t* src_argb,
|
||||
height = 1;
|
||||
src_stride_argb = dst_stride_rgb24 = 0;
|
||||
}
|
||||
#if defined(HAS_ARGBTORGB24ROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToRGB24Row = ARGBToRGB24Row_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToRGB24Row = ARGBToRGB24Row_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -2456,11 +2394,9 @@ int ARGBToRAW(const uint8_t* src_argb,
|
||||
height = 1;
|
||||
src_stride_argb = dst_stride_raw = 0;
|
||||
}
|
||||
#if defined(HAS_ARGBTORAWROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToRAWRow = ARGBToRAWRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToRAWRow = ARGBToRAWRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -2544,11 +2480,9 @@ int ARGBToRGB565Dither(const uint8_t* src_argb,
|
||||
if (!dither4x4) {
|
||||
dither4x4 = kDither565_4x4;
|
||||
}
|
||||
#if defined(HAS_ARGBTORGB565DITHERROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
ARGBToRGB565DitherRow = ARGBToRGB565DitherRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 4)) {
|
||||
ARGBToRGB565DitherRow = ARGBToRGB565DitherRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -2626,11 +2560,9 @@ int ARGBToRGB565(const uint8_t* src_argb,
|
||||
height = 1;
|
||||
src_stride_argb = dst_stride_rgb565 = 0;
|
||||
}
|
||||
#if defined(HAS_ARGBTORGB565ROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
ARGBToRGB565Row = ARGBToRGB565Row_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 4)) {
|
||||
ARGBToRGB565Row = ARGBToRGB565Row_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -2706,11 +2638,9 @@ int ARGBToARGB1555(const uint8_t* src_argb,
|
||||
height = 1;
|
||||
src_stride_argb = dst_stride_argb1555 = 0;
|
||||
}
|
||||
#if defined(HAS_ARGBTOARGB1555ROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
ARGBToARGB1555Row = ARGBToARGB1555Row_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 4)) {
|
||||
ARGBToARGB1555Row = ARGBToARGB1555Row_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -2780,11 +2710,9 @@ int ARGBToARGB4444(const uint8_t* src_argb,
|
||||
height = 1;
|
||||
src_stride_argb = dst_stride_argb4444 = 0;
|
||||
}
|
||||
#if defined(HAS_ARGBTOARGB4444ROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
ARGBToARGB4444Row = ARGBToARGB4444Row_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 4)) {
|
||||
ARGBToARGB4444Row = ARGBToARGB4444Row_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -2862,11 +2790,9 @@ int ABGRToAR30(const uint8_t* src_abgr,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ABGRTOAR30ROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ABGRToAR30Row = ABGRToAR30Row_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 4)) {
|
||||
ABGRToAR30Row = ABGRToAR30Row_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -2919,11 +2845,9 @@ int ARGBToAR30(const uint8_t* src_argb,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOAR30ROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToAR30Row = ARGBToAR30Row_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 4)) {
|
||||
ARGBToAR30Row = ARGBToAR30Row_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -2975,11 +2899,9 @@ int ARGBToJ444(const uint8_t* src_argb,
|
||||
height = 1;
|
||||
src_stride_argb = dst_stride_y = dst_stride_u = dst_stride_v = 0;
|
||||
}
|
||||
#if defined(HAS_ARGBTOUVJ444ROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToUVJ444Row = ARGBToUVJ444Row_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToUVJ444Row = ARGBToUVJ444Row_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -3031,11 +2953,9 @@ int ARGBToJ444(const uint8_t* src_argb,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOYJROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToYJRow = ARGBToYJRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToYJRow = ARGBToYJRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -3179,19 +3099,15 @@ int ARGBToJ420(const uint8_t* src_argb,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOYJROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToYJRow = ARGBToYJRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToYJRow = ARGBToYJRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOUVJROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToUVJRow = ARGBToUVJRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToUVJRow = ARGBToUVJRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -3295,19 +3211,15 @@ int ARGBToJ422(const uint8_t* src_argb,
|
||||
height = 1;
|
||||
src_stride_argb = dst_stride_yj = dst_stride_uj = dst_stride_vj = 0;
|
||||
}
|
||||
#if defined(HAS_ARGBTOYJROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToYJRow = ARGBToYJRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToYJRow = ARGBToYJRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOUVJROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToUVJRow = ARGBToUVJRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToUVJRow = ARGBToUVJRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -3445,11 +3357,9 @@ int ARGBToJ400(const uint8_t* src_argb,
|
||||
height = 1;
|
||||
src_stride_argb = dst_stride_yj = 0;
|
||||
}
|
||||
#if defined(HAS_ARGBTOYJROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToYJRow = ARGBToYJRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToYJRow = ARGBToYJRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -3516,11 +3426,9 @@ int RGBAToJ400(const uint8_t* src_rgba,
|
||||
height = 1;
|
||||
src_stride_rgba = dst_stride_yj = 0;
|
||||
}
|
||||
#if defined(HAS_RGBATOYJROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
RGBAToYJRow = RGBAToYJRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
RGBAToYJRow = RGBAToYJRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -3613,19 +3521,15 @@ int ABGRToJ420(const uint8_t* src_abgr,
|
||||
src_abgr = src_abgr + (height - 1) * src_stride_abgr;
|
||||
src_stride_abgr = -src_stride_abgr;
|
||||
}
|
||||
#if defined(HAS_ABGRTOYJROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ABGRToYJRow = ABGRToYJRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ABGRToYJRow = ABGRToYJRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ABGRTOUVJROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ABGRToUVJRow = ABGRToUVJRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ABGRToUVJRow = ABGRToUVJRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -3781,19 +3685,15 @@ int ABGRToJ422(const uint8_t* src_abgr,
|
||||
height = 1;
|
||||
src_stride_abgr = dst_stride_yj = dst_stride_uj = dst_stride_vj = 0;
|
||||
}
|
||||
#if defined(HAS_ABGRTOYJROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ABGRToYJRow = ABGRToYJRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ABGRToYJRow = ABGRToYJRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ABGRTOUVJROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ABGRToUVJRow = ABGRToUVJRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ABGRToUVJRow = ABGRToUVJRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -3927,11 +3827,9 @@ int ABGRToJ400(const uint8_t* src_abgr,
|
||||
height = 1;
|
||||
src_stride_abgr = dst_stride_yj = 0;
|
||||
}
|
||||
#if defined(HAS_ABGRTOYJROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ABGRToYJRow = ABGRToYJRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ABGRToYJRow = ABGRToYJRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -4015,11 +3913,9 @@ int ARGBToAR64(const uint8_t* src_argb,
|
||||
height = 1;
|
||||
src_stride_argb = dst_stride_ar64 = 0;
|
||||
}
|
||||
#if defined(HAS_ARGBTOAR64ROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToAR64Row = ARGBToAR64Row_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 4)) {
|
||||
ARGBToAR64Row = ARGBToAR64Row_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -4079,11 +3975,9 @@ int ARGBToAB64(const uint8_t* src_argb,
|
||||
height = 1;
|
||||
src_stride_argb = dst_stride_ab64 = 0;
|
||||
}
|
||||
#if defined(HAS_ARGBTOAB64ROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToAB64Row = ARGBToAB64Row_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 4)) {
|
||||
ARGBToAB64Row = ARGBToAB64Row_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -4140,11 +4034,9 @@ int RAWToNV21Matrix(const uint8_t* src_raw,
|
||||
const struct ArgbConstants* c) = ARGBToYMatrixRow_C;
|
||||
void (*MergeUVRow)(const uint8_t* src_uj, const uint8_t* src_vj,
|
||||
uint8_t* dst_vu, int width) = MergeUVRow_C;
|
||||
#if defined(HAS_ARGBTOYMATRIXROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToYMatrixRow = ARGBToYMatrixRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToYMatrixRow = ARGBToYMatrixRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -4213,11 +4105,9 @@ int RAWToNV21Matrix(const uint8_t* src_raw,
|
||||
src_stride_raw = -src_stride_raw;
|
||||
}
|
||||
|
||||
#if defined(HAS_RAWTOARGBROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
RAWToARGBRow = RAWToARGBRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
RAWToARGBRow = RAWToARGBRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -4297,11 +4187,9 @@ int RAWToNV21Matrix(const uint8_t* src_raw,
|
||||
ARGBToUVMatrixRow = ARGBToUVMatrixRow_SME;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOUVMATRIXROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToUVMatrixRow = ARGBToUVMatrixRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 8)) {
|
||||
ARGBToUVMatrixRow = ARGBToUVMatrixRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -4322,11 +4210,9 @@ int RAWToNV21Matrix(const uint8_t* src_raw,
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(HAS_MERGEUVROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
MergeUVRow = MergeUVRow_Any_SSE2;
|
||||
if (IS_ALIGNED(halfwidth, 16)) {
|
||||
MergeUVRow = MergeUVRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -52,7 +52,7 @@ void CopyPlane(const uint8_t* src_y,
|
||||
return;
|
||||
}
|
||||
|
||||
#if defined(HAS_COPYROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
CopyRow = IS_ALIGNED(width, 32) ? CopyRow_SSE2 : CopyRow_Any_SSE2;
|
||||
}
|
||||
@ -148,11 +148,9 @@ void Convert16To8Plane(const uint16_t* src_y,
|
||||
Convert16To8Row = Convert16To8Row_SME;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_CONVERT16TO8ROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
Convert16To8Row = Convert16To8Row_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
Convert16To8Row = Convert16To8Row_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -209,11 +207,9 @@ void Convert8To16Plane(const uint8_t* src_y,
|
||||
height = 1;
|
||||
src_stride_y = dst_stride_y = 0;
|
||||
}
|
||||
#if defined(HAS_CONVERT8TO16ROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
Convert8To16Row = Convert8To16Row_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
Convert8To16Row = Convert8To16Row_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -607,11 +603,9 @@ void SplitUVPlane(const uint8_t* src_uv,
|
||||
height = 1;
|
||||
src_stride_uv = dst_stride_u = dst_stride_v = 0;
|
||||
}
|
||||
#if defined(HAS_SPLITUVROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
SplitUVRow = SplitUVRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
SplitUVRow = SplitUVRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -682,11 +676,9 @@ void MergeUVPlane(const uint8_t* src_u,
|
||||
height = 1;
|
||||
src_stride_u = src_stride_v = dst_stride_uv = 0;
|
||||
}
|
||||
#if defined(HAS_MERGEUVROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
MergeUVRow = MergeUVRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
MergeUVRow = MergeUVRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -1008,11 +1000,9 @@ void SwapUVPlane(const uint8_t* src_uv,
|
||||
src_stride_uv = dst_stride_vu = 0;
|
||||
}
|
||||
|
||||
#if defined(HAS_SWAPUVROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
SwapUVRow = SwapUVRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
SwapUVRow = SwapUVRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -1108,11 +1098,9 @@ int DetilePlane(const uint8_t* src_y,
|
||||
dst_stride_y = -dst_stride_y;
|
||||
}
|
||||
|
||||
#if defined(HAS_DETILEROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
DetileRow = DetileRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
DetileRow = DetileRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -1165,11 +1153,9 @@ int DetilePlane_16(const uint16_t* src_y,
|
||||
dst_stride_y = -dst_stride_y;
|
||||
}
|
||||
|
||||
#if defined(HAS_DETILEROW_16_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
DetileRow_16 = DetileRow_16_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
DetileRow_16 = DetileRow_16_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -1234,11 +1220,9 @@ void DetileSplitUVPlane(const uint8_t* src_uv,
|
||||
dst_stride_v = -dst_stride_v;
|
||||
}
|
||||
|
||||
#if defined(HAS_DETILESPLITUVROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
DetileSplitUVRow = DetileSplitUVRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
DetileSplitUVRow = DetileSplitUVRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -1305,11 +1289,9 @@ void DetileToYUY2(const uint8_t* src_y,
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(HAS_DETILETOYUY2_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
DetileToYUY2 = DetileToYUY2_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
DetileToYUY2 = DetileToYUY2_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -1368,19 +1350,15 @@ void SplitRGBPlane(const uint8_t* src_rgb,
|
||||
height = 1;
|
||||
src_stride_rgb = dst_stride_r = dst_stride_g = dst_stride_b = 0;
|
||||
}
|
||||
#if defined(HAS_SPLITRGBROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
SplitRGBRow = SplitRGBRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
SplitRGBRow = SplitRGBRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SPLITRGBROW_SSE41)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE41)) {
|
||||
SplitRGBRow = SplitRGBRow_Any_SSE41;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
SplitRGBRow = SplitRGBRow_SSE41;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -1448,11 +1426,9 @@ void MergeRGBPlane(const uint8_t* src_r,
|
||||
height = 1;
|
||||
src_stride_r = src_stride_g = src_stride_b = dst_stride_rgb = 0;
|
||||
}
|
||||
#if defined(HAS_MERGERGBROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
MergeRGBRow = MergeRGBRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
MergeRGBRow = MergeRGBRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -1511,19 +1487,15 @@ static void SplitARGBPlaneAlpha(const uint8_t* src_argb,
|
||||
dst_stride_a = 0;
|
||||
}
|
||||
|
||||
#if defined(HAS_SPLITARGBROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
SplitARGBRow = SplitARGBRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 8)) {
|
||||
SplitARGBRow = SplitARGBRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SPLITARGBROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
SplitARGBRow = SplitARGBRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 8)) {
|
||||
SplitARGBRow = SplitARGBRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -1585,19 +1557,15 @@ static void SplitARGBPlaneOpaque(const uint8_t* src_argb,
|
||||
src_stride_argb = dst_stride_r = dst_stride_g = dst_stride_b = 0;
|
||||
}
|
||||
|
||||
#if defined(HAS_SPLITXRGBROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
SplitXRGBRow = SplitXRGBRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 8)) {
|
||||
SplitXRGBRow = SplitXRGBRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SPLITXRGBROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
SplitXRGBRow = SplitXRGBRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 8)) {
|
||||
SplitXRGBRow = SplitXRGBRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -1698,11 +1666,9 @@ static void MergeARGBPlaneAlpha(const uint8_t* src_r,
|
||||
src_stride_r = src_stride_g = src_stride_b = src_stride_a =
|
||||
dst_stride_argb = 0;
|
||||
}
|
||||
#if defined(HAS_MERGEARGBROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
MergeARGBRow = MergeARGBRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 8)) {
|
||||
MergeARGBRow = MergeARGBRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -1765,11 +1731,9 @@ static void MergeARGBPlaneOpaque(const uint8_t* src_r,
|
||||
height = 1;
|
||||
src_stride_r = src_stride_g = src_stride_b = dst_stride_argb = 0;
|
||||
}
|
||||
#if defined(HAS_MERGEXRGBROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
MergeXRGBRow = MergeXRGBRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 8)) {
|
||||
MergeXRGBRow = MergeXRGBRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -2205,13 +2169,9 @@ int YUY2ToI422(const uint8_t* src_yuy2,
|
||||
height = 1;
|
||||
src_stride_yuy2 = dst_stride_y = dst_stride_u = dst_stride_v = 0;
|
||||
}
|
||||
#if defined(HAS_YUY2TOYROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
YUY2ToUV422Row = YUY2ToUV422Row_Any_SSE2;
|
||||
YUY2ToYRow = YUY2ToYRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
YUY2ToUV422Row = YUY2ToUV422Row_SSE2;
|
||||
YUY2ToYRow = YUY2ToYRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -2301,13 +2261,9 @@ int UYVYToI422(const uint8_t* src_uyvy,
|
||||
height = 1;
|
||||
src_stride_uyvy = dst_stride_y = dst_stride_u = dst_stride_v = 0;
|
||||
}
|
||||
#if defined(HAS_UYVYTOYROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
UYVYToUV422Row = UYVYToUV422Row_Any_SSE2;
|
||||
UYVYToYRow = UYVYToYRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
UYVYToUV422Row = UYVYToUV422Row_SSE2;
|
||||
UYVYToYRow = UYVYToYRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -2389,11 +2345,9 @@ int YUY2ToY(const uint8_t* src_yuy2,
|
||||
height = 1;
|
||||
src_stride_yuy2 = dst_stride_y = 0;
|
||||
}
|
||||
#if defined(HAS_YUY2TOYROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
YUY2ToYRow = YUY2ToYRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
YUY2ToYRow = YUY2ToYRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -2448,11 +2402,9 @@ int UYVYToY(const uint8_t* src_uyvy,
|
||||
height = 1;
|
||||
src_stride_uyvy = dst_stride_y = 0;
|
||||
}
|
||||
#if defined(HAS_UYVYTOYROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
UYVYToYRow = UYVYToYRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
UYVYToYRow = UYVYToYRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -2514,11 +2466,9 @@ void MirrorPlane(const uint8_t* src_y,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_MIRRORROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
MirrorRow = MirrorRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
MirrorRow = MirrorRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -2580,11 +2530,9 @@ void MirrorUVPlane(const uint8_t* src_uv,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_MIRRORUVROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
MirrorUVRow = MirrorUVRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 8)) {
|
||||
MirrorUVRow = MirrorUVRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -2752,11 +2700,9 @@ int ARGBMirror(const uint8_t* src_argb,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBMIRRORROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
ARGBMirrorRow = ARGBMirrorRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 4)) {
|
||||
ARGBMirrorRow = ARGBMirrorRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -2822,11 +2768,9 @@ int RGB24Mirror(const uint8_t* src_rgb24,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_RGB24MIRRORROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
RGB24MirrorRow = RGB24MirrorRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
RGB24MirrorRow = RGB24MirrorRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -2869,9 +2813,8 @@ int ARGBBlend(const uint8_t* src_argb0,
|
||||
height = 1;
|
||||
src_stride_argb0 = src_stride_argb1 = dst_stride_argb = 0;
|
||||
}
|
||||
#if defined(HAS_ARGBBLENDROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBBlendRow = ARGBBlendRow_SSSE3;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBBLENDROW_NEON)
|
||||
@ -2932,11 +2875,9 @@ int BlendPlane(const uint8_t* src_y0,
|
||||
src_stride_y0 = src_stride_y1 = alpha_stride = dst_stride_y = 0;
|
||||
}
|
||||
|
||||
#if defined(HAS_BLENDPLANEROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
BlendPlaneRow = BlendPlaneRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 8)) {
|
||||
BlendPlaneRow = BlendPlaneRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -3014,11 +2955,9 @@ int I420Blend(const uint8_t* src_y0,
|
||||
BlendPlane(src_y0, src_stride_y0, src_y1, src_stride_y1, alpha, alpha_stride,
|
||||
dst_y, dst_stride_y, width, height);
|
||||
|
||||
#if defined(HAS_BLENDPLANEROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
BlendPlaneRow = BlendPlaneRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(halfwidth, 8)) {
|
||||
BlendPlaneRow = BlendPlaneRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -3049,13 +2988,10 @@ int I420Blend(const uint8_t* src_y0,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SCALEROWDOWN2_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ScaleRowDown2 = ScaleRowDown2Box_Odd_SSSE3;
|
||||
if (IS_ALIGNED(width, 2)) {
|
||||
ScaleRowDown2 = ScaleRowDown2Box_Any_SSSE3;
|
||||
if (IS_ALIGNED(halfwidth, 16)) {
|
||||
ScaleRowDown2 = ScaleRowDown2Box_SSSE3;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -3131,11 +3067,9 @@ int ARGBMultiply(const uint8_t* src_argb0,
|
||||
height = 1;
|
||||
src_stride_argb0 = src_stride_argb1 = dst_stride_argb = 0;
|
||||
}
|
||||
#if defined(HAS_ARGBMULTIPLYROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
ARGBMultiplyRow = ARGBMultiplyRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 4)) {
|
||||
ARGBMultiplyRow = ARGBMultiplyRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -3216,16 +3150,13 @@ int ARGBAdd(const uint8_t* src_argb0,
|
||||
height = 1;
|
||||
src_stride_argb0 = src_stride_argb1 = dst_stride_argb = 0;
|
||||
}
|
||||
#if defined(HAS_ARGBADDROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
ARGBAddRow = ARGBAddRow_SSE2;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBADDROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
ARGBAddRow = ARGBAddRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 4)) {
|
||||
ARGBAddRow = ARGBAddRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -3301,11 +3232,9 @@ int ARGBSubtract(const uint8_t* src_argb0,
|
||||
height = 1;
|
||||
src_stride_argb0 = src_stride_argb1 = dst_stride_argb = 0;
|
||||
}
|
||||
#if defined(HAS_ARGBSUBTRACTROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
ARGBSubtractRow = ARGBSubtractRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 4)) {
|
||||
ARGBSubtractRow = ARGBSubtractRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -3378,11 +3307,9 @@ int RAWToRGB24(const uint8_t* src_raw,
|
||||
height = 1;
|
||||
src_stride_raw = dst_stride_rgb24 = 0;
|
||||
}
|
||||
#if defined(HAS_RAWTORGB24ROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
RAWToRGB24Row = RAWToRGB24Row_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 8)) {
|
||||
RAWToRGB24Row = RAWToRGB24Row_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -3610,11 +3537,9 @@ int ARGBAttenuate(const uint8_t* src_argb,
|
||||
height = 1;
|
||||
src_stride_argb = dst_stride_argb = 0;
|
||||
}
|
||||
#if defined(HAS_ARGBATTENUATEROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBAttenuateRow = ARGBAttenuateRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 4)) {
|
||||
ARGBAttenuateRow = ARGBAttenuateRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -3689,11 +3614,9 @@ int ARGBUnattenuate(const uint8_t* src_argb,
|
||||
height = 1;
|
||||
src_stride_argb = dst_stride_argb = 0;
|
||||
}
|
||||
#if defined(HAS_ARGBUNATTENUATEROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
ARGBUnattenuateRow = ARGBUnattenuateRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 4)) {
|
||||
ARGBUnattenuateRow = ARGBUnattenuateRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -3740,9 +3663,8 @@ int ARGBGrayTo(const uint8_t* src_argb,
|
||||
height = 1;
|
||||
src_stride_argb = dst_stride_argb = 0;
|
||||
}
|
||||
#if defined(HAS_ARGBGRAYROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3) && IS_ALIGNED(width, 8)) {
|
||||
ARGBGrayRow = ARGBGrayRow_SSSE3;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBGRAYROW_NEON)
|
||||
@ -3795,9 +3717,8 @@ int ARGBGray(uint8_t* dst_argb,
|
||||
height = 1;
|
||||
dst_stride_argb = 0;
|
||||
}
|
||||
#if defined(HAS_ARGBGRAYROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3) && IS_ALIGNED(width, 8)) {
|
||||
ARGBGrayRow = ARGBGrayRow_SSSE3;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBGRAYROW_NEON)
|
||||
@ -3848,9 +3769,8 @@ int ARGBSepia(uint8_t* dst_argb,
|
||||
height = 1;
|
||||
dst_stride_argb = 0;
|
||||
}
|
||||
#if defined(HAS_ARGBSEPIAROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3) && IS_ALIGNED(width, 8)) {
|
||||
ARGBSepiaRow = ARGBSepiaRow_SSSE3;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBSEPIAROW_NEON)
|
||||
@ -3909,9 +3829,8 @@ int ARGBColorMatrix(const uint8_t* src_argb,
|
||||
height = 1;
|
||||
src_stride_argb = dst_stride_argb = 0;
|
||||
}
|
||||
#if defined(HAS_ARGBCOLORMATRIXROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3) && IS_ALIGNED(width, 8)) {
|
||||
ARGBColorMatrixRow = ARGBColorMatrixRow_SSSE3;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBCOLORMATRIXROW_NEON)
|
||||
@ -4079,9 +3998,8 @@ int ARGBQuantize(uint8_t* dst_argb,
|
||||
height = 1;
|
||||
dst_stride_argb = 0;
|
||||
}
|
||||
#if defined(HAS_ARGBQUANTIZEROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2) && IS_ALIGNED(width, 4)) {
|
||||
ARGBQuantizeRow = ARGBQuantizeRow_SSE2;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBQUANTIZEROW_NEON)
|
||||
@ -4118,9 +4036,8 @@ int ARGBComputeCumulativeSum(const uint8_t* src_argb,
|
||||
if (!dst_cumsum || !src_argb || width <= 0 || height <= 0) {
|
||||
return -1;
|
||||
}
|
||||
#if defined(HAS_CUMULATIVESUMTOAVERAGEROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
ComputeCumulativeSumRow = ComputeCumulativeSumRow_SSE2;
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -4176,10 +4093,8 @@ int ARGBBlur(const uint8_t* src_argb,
|
||||
if (radius <= 0 || height <= 1) {
|
||||
return -1;
|
||||
}
|
||||
#if defined(HAS_CUMULATIVESUMTOAVERAGEROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
ComputeCumulativeSumRow = ComputeCumulativeSumRow_SSE2;
|
||||
CumulativeSumToAverageRow = CumulativeSumToAverageRow_SSE2;
|
||||
}
|
||||
#endif
|
||||
// Compute enough CumulativeSum for first row to be blurred. After this
|
||||
@ -4273,9 +4188,8 @@ int ARGBShade(const uint8_t* src_argb,
|
||||
height = 1;
|
||||
src_stride_argb = dst_stride_argb = 0;
|
||||
}
|
||||
#if defined(HAS_ARGBSHADEROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2) && IS_ALIGNED(width, 4)) {
|
||||
ARGBShadeRow = ARGBShadeRow_SSE2;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBSHADEROW_NEON)
|
||||
@ -4332,11 +4246,9 @@ int InterpolatePlane(const uint8_t* src0,
|
||||
height = 1;
|
||||
src_stride0 = src_stride1 = dst_stride = 0;
|
||||
}
|
||||
#if defined(HAS_INTERPOLATEROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
InterpolateRow = InterpolateRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
InterpolateRow = InterpolateRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -4414,11 +4326,9 @@ int InterpolatePlane_16(const uint16_t* src0,
|
||||
height = 1;
|
||||
src_stride0 = src_stride1 = dst_stride = 0;
|
||||
}
|
||||
#if defined(HAS_INTERPOLATEROW_16_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
InterpolateRow_16 = InterpolateRow_16_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
InterpolateRow_16 = InterpolateRow_16_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -4544,11 +4454,9 @@ int ARGBShuffle(const uint8_t* src_argb,
|
||||
height = 1;
|
||||
src_stride_argb = dst_stride_argb = 0;
|
||||
}
|
||||
#if defined(HAS_ARGBSHUFFLEROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBShuffleRow = ARGBShuffleRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 8)) {
|
||||
ARGBShuffleRow = ARGBShuffleRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -4621,11 +4529,9 @@ int AR64Shuffle(const uint16_t* src_ar64,
|
||||
src_stride_ar64 = dst_stride_ar64 = 0;
|
||||
}
|
||||
// Assembly versions can be reused if it's implemented with shuffle.
|
||||
#if defined(HAS_ARGBSHUFFLEROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
AR64ShuffleRow = ARGBShuffleRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 8)) {
|
||||
AR64ShuffleRow = ARGBShuffleRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -4761,11 +4667,9 @@ static int ARGBSobelize(const uint8_t* src_argb,
|
||||
src_stride_argb = -src_stride_argb;
|
||||
}
|
||||
|
||||
#if defined(HAS_ARGBTOYJROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ARGBToYJRow = ARGBToYJRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBToYJRow = ARGBToYJRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -4815,9 +4719,8 @@ static int ARGBSobelize(const uint8_t* src_argb,
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(HAS_SOBELYROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
SobelYRow = SobelYRow_SSE2;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SOBELYROW_NEON)
|
||||
@ -4825,9 +4728,8 @@ static int ARGBSobelize(const uint8_t* src_argb,
|
||||
SobelYRow = SobelYRow_NEON;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SOBELXROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
SobelXRow = SobelXRow_SSE2;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SOBELXROW_NEON)
|
||||
@ -4895,11 +4797,9 @@ int ARGBSobel(const uint8_t* src_argb,
|
||||
int height) {
|
||||
void (*SobelRow)(const uint8_t* src_sobelx, const uint8_t* src_sobely,
|
||||
uint8_t* dst_argb, int width) = SobelRow_C;
|
||||
#if defined(HAS_SOBELROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
SobelRow = SobelRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
SobelRow = SobelRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -4933,11 +4833,9 @@ int ARGBSobelToPlane(const uint8_t* src_argb,
|
||||
int height) {
|
||||
void (*SobelToPlaneRow)(const uint8_t* src_sobelx, const uint8_t* src_sobely,
|
||||
uint8_t* dst_, int width) = SobelToPlaneRow_C;
|
||||
#if defined(HAS_SOBELTOPLANEROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
SobelToPlaneRow = SobelToPlaneRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
SobelToPlaneRow = SobelToPlaneRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -4972,11 +4870,9 @@ int ARGBSobelXY(const uint8_t* src_argb,
|
||||
int height) {
|
||||
void (*SobelXYRow)(const uint8_t* src_sobelx, const uint8_t* src_sobely,
|
||||
uint8_t* dst_argb, int width) = SobelXYRow_C;
|
||||
#if defined(HAS_SOBELXYROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
SobelXYRow = SobelXYRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
SobelXYRow = SobelXYRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -5027,9 +4923,8 @@ int ARGBPolynomial(const uint8_t* src_argb,
|
||||
height = 1;
|
||||
src_stride_argb = dst_stride_argb = 0;
|
||||
}
|
||||
#if defined(HAS_ARGBPOLYNOMIALROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2) && IS_ALIGNED(width, 2)) {
|
||||
ARGBPolynomialRow = ARGBPolynomialRow_SSE2;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBPOLYNOMIALROW_AVX2)
|
||||
@ -5077,11 +4972,9 @@ int HalfFloatPlane(const uint16_t* src_y,
|
||||
height = 1;
|
||||
src_stride_y = dst_stride_y = 0;
|
||||
}
|
||||
#if defined(HAS_HALFFLOATROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
HalfFloatRow = HalfFloatRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 8)) {
|
||||
HalfFloatRow = HalfFloatRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -5189,9 +5082,8 @@ int ARGBLumaColorTable(const uint8_t* src_argb,
|
||||
height = 1;
|
||||
src_stride_argb = dst_stride_argb = 0;
|
||||
}
|
||||
#if defined(HAS_ARGBLUMACOLORTABLEROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3) && IS_ALIGNED(width, 4)) {
|
||||
ARGBLumaColorTableRow = ARGBLumaColorTableRow_SSSE3;
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -5229,11 +5121,9 @@ int ARGBCopyAlpha(const uint8_t* src_argb,
|
||||
height = 1;
|
||||
src_stride_argb = dst_stride_argb = 0;
|
||||
}
|
||||
#if defined(HAS_ARGBCOPYALPHAROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
ARGBCopyAlphaRow = ARGBCopyAlphaRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 8)) {
|
||||
ARGBCopyAlphaRow = ARGBCopyAlphaRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -5279,7 +5169,7 @@ int ARGBExtractAlpha(const uint8_t* src_argb,
|
||||
}
|
||||
void (*ARGBExtractAlphaRow)(const uint8_t* src_argb, uint8_t* dst_a,
|
||||
int width) = ARGBExtractAlphaRow_C;
|
||||
#if defined(HAS_ARGBEXTRACTALPHAROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
ARGBExtractAlphaRow = IS_ALIGNED(width, 8) ? ARGBExtractAlphaRow_SSE2
|
||||
: ARGBExtractAlphaRow_Any_SSE2;
|
||||
@ -5343,11 +5233,9 @@ int ARGBCopyYToAlpha(const uint8_t* src_y,
|
||||
height = 1;
|
||||
src_stride_y = dst_stride_argb = 0;
|
||||
}
|
||||
#if defined(HAS_ARGBCOPYYTOALPHAROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
ARGBCopyYToAlphaRow = ARGBCopyYToAlphaRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 8)) {
|
||||
ARGBCopyYToAlphaRow = ARGBCopyYToAlphaRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -5397,11 +5285,9 @@ int YUY2ToNV12(const uint8_t* src_yuy2,
|
||||
src_yuy2 = src_yuy2 + (height - 1) * src_stride_yuy2;
|
||||
src_stride_yuy2 = -src_stride_yuy2;
|
||||
}
|
||||
#if defined(HAS_YUY2TOYROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
YUY2ToYRow = YUY2ToYRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
YUY2ToYRow = YUY2ToYRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -5438,11 +5324,9 @@ int YUY2ToNV12(const uint8_t* src_yuy2,
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(HAS_YUY2TONVUVROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
YUY2ToNVUVRow = YUY2ToNVUVRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
YUY2ToNVUVRow = YUY2ToNVUVRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -5505,11 +5389,9 @@ int UYVYToNV12(const uint8_t* src_uyvy,
|
||||
src_uyvy = src_uyvy + (height - 1) * src_stride_uyvy;
|
||||
src_stride_uyvy = -src_stride_uyvy;
|
||||
}
|
||||
#if defined(HAS_SPLITUVROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
SplitUVRow = SplitUVRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
SplitUVRow = SplitUVRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -5543,11 +5425,9 @@ int UYVYToNV12(const uint8_t* src_uyvy,
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(HAS_INTERPOLATEROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
InterpolateRow = InterpolateRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
InterpolateRow = InterpolateRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -5642,9 +5522,8 @@ void HalfMergeUVPlane(const uint8_t* src_u,
|
||||
HalfMergeUVRow = HalfMergeUVRow_NEON;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_HALFMERGEUVROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3) && IS_ALIGNED(width, 16)) {
|
||||
HalfMergeUVRow = HalfMergeUVRow_SSSE3;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_HALFMERGEUVROW_AVX2)
|
||||
|
||||
@ -64,19 +64,15 @@ void TransposePlane(const uint8_t* src,
|
||||
TransposeWxH = TransposeWxH_SME;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_TRANSPOSEWX8_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
TransposeWx8 = TransposeWx8_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 8)) {
|
||||
TransposeWx8 = TransposeWx8_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_TRANSPOSEWX8_FAST_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
TransposeWx8 = TransposeWx8_Fast_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
TransposeWx8 = TransposeWx8_Fast_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -174,11 +170,9 @@ void RotatePlane180(const uint8_t* src,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_MIRRORROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
MirrorRow = MirrorRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
MirrorRow = MirrorRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -206,7 +200,7 @@ void RotatePlane180(const uint8_t* src,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_COPYROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
CopyRow = IS_ALIGNED(width, 32) ? CopyRow_SSE2 : CopyRow_Any_SSE2;
|
||||
}
|
||||
@ -301,11 +295,9 @@ void SplitTransposeUV(const uint8_t* src,
|
||||
TransposeUVWxH = TransposeUVWxH_SME;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_TRANSPOSEUVWX8_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
TransposeUVWx8 = TransposeUVWx8_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 8)) {
|
||||
TransposeUVWx8 = TransposeUVWx8_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -397,9 +389,8 @@ void SplitRotateUV180(const uint8_t* src,
|
||||
MirrorSplitUVRow = MirrorSplitUVRow_NEON;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_MIRRORSPLITUVROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3) && IS_ALIGNED(width, 16)) {
|
||||
MirrorSplitUVRow = MirrorSplitUVRow_SSSE3;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_MIRRORSPLITUVROW_LSX)
|
||||
|
||||
@ -35,12 +35,6 @@ TANY(TransposeWx8_Any_NEON, TransposeWx8_NEON, TransposeWx8_C, 7)
|
||||
#ifdef HAS_TRANSPOSEWX16_NEON
|
||||
TANY(TransposeWx16_Any_NEON, TransposeWx16_NEON, TransposeWx16_C, 15)
|
||||
#endif
|
||||
#ifdef HAS_TRANSPOSEWX8_SSSE3
|
||||
TANY(TransposeWx8_Any_SSSE3, TransposeWx8_SSSE3, TransposeWx8_C, 7)
|
||||
#endif
|
||||
#ifdef HAS_TRANSPOSEWX8_FAST_SSSE3
|
||||
TANY(TransposeWx8_Fast_Any_SSSE3, TransposeWx8_Fast_SSSE3, TransposeWx8_C, 15)
|
||||
#endif
|
||||
#ifdef HAS_TRANSPOSEWX16_LSX
|
||||
TANY(TransposeWx16_Any_LSX, TransposeWx16_LSX, TransposeWx16_C, 15)
|
||||
#endif
|
||||
@ -62,9 +56,6 @@ TANY(TransposeWx16_Any_LSX, TransposeWx16_LSX, TransposeWx16_C, 15)
|
||||
#ifdef HAS_TRANSPOSEUVWX8_NEON
|
||||
TUVANY(TransposeUVWx8_Any_NEON, TransposeUVWx8_NEON, 7)
|
||||
#endif
|
||||
#ifdef HAS_TRANSPOSEUVWX8_SSE2
|
||||
TUVANY(TransposeUVWx8_Any_SSE2, TransposeUVWx8_SSE2, 7)
|
||||
#endif
|
||||
#ifdef HAS_TRANSPOSEUVWX16_LSX
|
||||
TUVANY(TransposeUVWx16_Any_LSX, TransposeUVWx16_LSX, 7)
|
||||
#endif
|
||||
|
||||
@ -37,11 +37,9 @@ static int ARGBTranspose(const uint8_t* src_argb,
|
||||
if (src_stride_argb & 3) {
|
||||
return -1;
|
||||
}
|
||||
#if defined(HAS_SCALEARGBROWDOWNEVEN_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
ScaleARGBRowDownEven = ScaleARGBRowDownEven_Any_SSE2;
|
||||
if (IS_ALIGNED(height, 4)) { // Width of dest.
|
||||
ScaleARGBRowDownEven = ScaleARGBRowDownEven_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -131,11 +129,9 @@ static int ARGBRotate180(const uint8_t* src_argb,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBMIRRORROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
ARGBMirrorRow = ARGBMirrorRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 4)) {
|
||||
ARGBMirrorRow = ARGBMirrorRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -163,7 +159,7 @@ static int ARGBRotate180(const uint8_t* src_argb,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_COPYROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
CopyRow = IS_ALIGNED(width * 4, 32) ? CopyRow_SSE2 : CopyRow_Any_SSE2;
|
||||
}
|
||||
|
||||
@ -22,424 +22,11 @@ extern "C" {
|
||||
!defined(LIBYUV_ENABLE_ROWWIN)
|
||||
|
||||
// Transpose 8x8. 32 or 64 bit, but not NaCL for 64 bit.
|
||||
#if defined(HAS_TRANSPOSEWX8_SSSE3)
|
||||
void TransposeWx8_SSSE3(const uint8_t* src,
|
||||
int src_stride,
|
||||
uint8_t* dst,
|
||||
int dst_stride,
|
||||
int width) {
|
||||
asm volatile(
|
||||
// Read in the data from the source pointer.
|
||||
// First round of bit swap.
|
||||
LABELALIGN
|
||||
"1: \n"
|
||||
"movq (%0),%%xmm0 \n"
|
||||
"movq (%0,%3),%%xmm1 \n"
|
||||
"lea (%0,%3,2),%0 \n"
|
||||
"punpcklbw %%xmm1,%%xmm0 \n"
|
||||
"movq (%0),%%xmm2 \n"
|
||||
"movdqa %%xmm0,%%xmm1 \n"
|
||||
"palignr $0x8,%%xmm1,%%xmm1 \n"
|
||||
"movq (%0,%3),%%xmm3 \n"
|
||||
"lea (%0,%3,2),%0 \n"
|
||||
"punpcklbw %%xmm3,%%xmm2 \n"
|
||||
"movdqa %%xmm2,%%xmm3 \n"
|
||||
"movq (%0),%%xmm4 \n"
|
||||
"palignr $0x8,%%xmm3,%%xmm3 \n"
|
||||
"movq (%0,%3),%%xmm5 \n"
|
||||
"lea (%0,%3,2),%0 \n"
|
||||
"punpcklbw %%xmm5,%%xmm4 \n"
|
||||
"movdqa %%xmm4,%%xmm5 \n"
|
||||
"movq (%0),%%xmm6 \n"
|
||||
"palignr $0x8,%%xmm5,%%xmm5 \n"
|
||||
"movq (%0,%3),%%xmm7 \n"
|
||||
"lea (%0,%3,2),%0 \n"
|
||||
"punpcklbw %%xmm7,%%xmm6 \n"
|
||||
"neg %3 \n"
|
||||
"movdqa %%xmm6,%%xmm7 \n"
|
||||
"lea 0x8(%0,%3,8),%0 \n"
|
||||
"palignr $0x8,%%xmm7,%%xmm7 \n"
|
||||
"neg %3 \n"
|
||||
// Second round of bit swap.
|
||||
"punpcklwd %%xmm2,%%xmm0 \n"
|
||||
"punpcklwd %%xmm3,%%xmm1 \n"
|
||||
"movdqa %%xmm0,%%xmm2 \n"
|
||||
"movdqa %%xmm1,%%xmm3 \n"
|
||||
"palignr $0x8,%%xmm2,%%xmm2 \n"
|
||||
"palignr $0x8,%%xmm3,%%xmm3 \n"
|
||||
"punpcklwd %%xmm6,%%xmm4 \n"
|
||||
"punpcklwd %%xmm7,%%xmm5 \n"
|
||||
"movdqa %%xmm4,%%xmm6 \n"
|
||||
"movdqa %%xmm5,%%xmm7 \n"
|
||||
"palignr $0x8,%%xmm6,%%xmm6 \n"
|
||||
"palignr $0x8,%%xmm7,%%xmm7 \n"
|
||||
// Third round of bit swap.
|
||||
// Write to the destination pointer.
|
||||
"punpckldq %%xmm4,%%xmm0 \n"
|
||||
"movq %%xmm0,(%1) \n"
|
||||
"movdqa %%xmm0,%%xmm4 \n"
|
||||
"palignr $0x8,%%xmm4,%%xmm4 \n"
|
||||
"movq %%xmm4,(%1,%4) \n"
|
||||
"lea (%1,%4,2),%1 \n"
|
||||
"punpckldq %%xmm6,%%xmm2 \n"
|
||||
"movdqa %%xmm2,%%xmm6 \n"
|
||||
"movq %%xmm2,(%1) \n"
|
||||
"palignr $0x8,%%xmm6,%%xmm6 \n"
|
||||
"punpckldq %%xmm5,%%xmm1 \n"
|
||||
"movq %%xmm6,(%1,%4) \n"
|
||||
"lea (%1,%4,2),%1 \n"
|
||||
"movdqa %%xmm1,%%xmm5 \n"
|
||||
"movq %%xmm1,(%1) \n"
|
||||
"palignr $0x8,%%xmm5,%%xmm5 \n"
|
||||
"movq %%xmm5,(%1,%4) \n"
|
||||
"lea (%1,%4,2),%1 \n"
|
||||
"punpckldq %%xmm7,%%xmm3 \n"
|
||||
"movq %%xmm3,(%1) \n"
|
||||
"movdqa %%xmm3,%%xmm7 \n"
|
||||
"palignr $0x8,%%xmm7,%%xmm7 \n"
|
||||
"sub $0x8,%2 \n"
|
||||
"movq %%xmm7,(%1,%4) \n"
|
||||
"lea (%1,%4,2),%1 \n"
|
||||
"jg 1b \n"
|
||||
: "+r"(src), // %0
|
||||
"+r"(dst), // %1
|
||||
"+r"(width) // %2
|
||||
: "r"((ptrdiff_t)(src_stride)), // %3
|
||||
"r"((ptrdiff_t)(dst_stride)) // %4
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6",
|
||||
"xmm7");
|
||||
}
|
||||
#endif // defined(HAS_TRANSPOSEWX8_SSSE3)
|
||||
|
||||
// Transpose 16x8. 64 bit
|
||||
#if defined(HAS_TRANSPOSEWX8_FAST_SSSE3)
|
||||
void TransposeWx8_Fast_SSSE3(const uint8_t* src,
|
||||
int src_stride,
|
||||
uint8_t* dst,
|
||||
int dst_stride,
|
||||
int width) {
|
||||
asm volatile(
|
||||
// Read in the data from the source pointer.
|
||||
// First round of bit swap.
|
||||
LABELALIGN
|
||||
"1: \n"
|
||||
"movdqu (%0),%%xmm0 \n"
|
||||
"movdqu (%0,%3),%%xmm1 \n"
|
||||
"lea (%0,%3,2),%0 \n"
|
||||
"movdqa %%xmm0,%%xmm8 \n"
|
||||
"punpcklbw %%xmm1,%%xmm0 \n"
|
||||
"punpckhbw %%xmm1,%%xmm8 \n"
|
||||
"movdqu (%0),%%xmm2 \n"
|
||||
"movdqa %%xmm0,%%xmm1 \n"
|
||||
"movdqa %%xmm8,%%xmm9 \n"
|
||||
"palignr $0x8,%%xmm1,%%xmm1 \n"
|
||||
"palignr $0x8,%%xmm9,%%xmm9 \n"
|
||||
"movdqu (%0,%3),%%xmm3 \n"
|
||||
"lea (%0,%3,2),%0 \n"
|
||||
"movdqa %%xmm2,%%xmm10 \n"
|
||||
"punpcklbw %%xmm3,%%xmm2 \n"
|
||||
"punpckhbw %%xmm3,%%xmm10 \n"
|
||||
"movdqa %%xmm2,%%xmm3 \n"
|
||||
"movdqa %%xmm10,%%xmm11 \n"
|
||||
"movdqu (%0),%%xmm4 \n"
|
||||
"palignr $0x8,%%xmm3,%%xmm3 \n"
|
||||
"palignr $0x8,%%xmm11,%%xmm11 \n"
|
||||
"movdqu (%0,%3),%%xmm5 \n"
|
||||
"lea (%0,%3,2),%0 \n"
|
||||
"movdqa %%xmm4,%%xmm12 \n"
|
||||
"punpcklbw %%xmm5,%%xmm4 \n"
|
||||
"punpckhbw %%xmm5,%%xmm12 \n"
|
||||
"movdqa %%xmm4,%%xmm5 \n"
|
||||
"movdqa %%xmm12,%%xmm13 \n"
|
||||
"movdqu (%0),%%xmm6 \n"
|
||||
"palignr $0x8,%%xmm5,%%xmm5 \n"
|
||||
"palignr $0x8,%%xmm13,%%xmm13 \n"
|
||||
"movdqu (%0,%3),%%xmm7 \n"
|
||||
"lea (%0,%3,2),%0 \n"
|
||||
"movdqa %%xmm6,%%xmm14 \n"
|
||||
"punpcklbw %%xmm7,%%xmm6 \n"
|
||||
"punpckhbw %%xmm7,%%xmm14 \n"
|
||||
"neg %3 \n"
|
||||
"movdqa %%xmm6,%%xmm7 \n"
|
||||
"movdqa %%xmm14,%%xmm15 \n"
|
||||
"lea 0x10(%0,%3,8),%0 \n"
|
||||
"palignr $0x8,%%xmm7,%%xmm7 \n"
|
||||
"palignr $0x8,%%xmm15,%%xmm15 \n"
|
||||
"neg %3 \n"
|
||||
// Second round of bit swap.
|
||||
"punpcklwd %%xmm2,%%xmm0 \n"
|
||||
"punpcklwd %%xmm3,%%xmm1 \n"
|
||||
"movdqa %%xmm0,%%xmm2 \n"
|
||||
"movdqa %%xmm1,%%xmm3 \n"
|
||||
"palignr $0x8,%%xmm2,%%xmm2 \n"
|
||||
"palignr $0x8,%%xmm3,%%xmm3 \n"
|
||||
"punpcklwd %%xmm6,%%xmm4 \n"
|
||||
"punpcklwd %%xmm7,%%xmm5 \n"
|
||||
"movdqa %%xmm4,%%xmm6 \n"
|
||||
"movdqa %%xmm5,%%xmm7 \n"
|
||||
"palignr $0x8,%%xmm6,%%xmm6 \n"
|
||||
"palignr $0x8,%%xmm7,%%xmm7 \n"
|
||||
"punpcklwd %%xmm10,%%xmm8 \n"
|
||||
"punpcklwd %%xmm11,%%xmm9 \n"
|
||||
"movdqa %%xmm8,%%xmm10 \n"
|
||||
"movdqa %%xmm9,%%xmm11 \n"
|
||||
"palignr $0x8,%%xmm10,%%xmm10 \n"
|
||||
"palignr $0x8,%%xmm11,%%xmm11 \n"
|
||||
"punpcklwd %%xmm14,%%xmm12 \n"
|
||||
"punpcklwd %%xmm15,%%xmm13 \n"
|
||||
"movdqa %%xmm12,%%xmm14 \n"
|
||||
"movdqa %%xmm13,%%xmm15 \n"
|
||||
"palignr $0x8,%%xmm14,%%xmm14 \n"
|
||||
"palignr $0x8,%%xmm15,%%xmm15 \n"
|
||||
// Third round of bit swap.
|
||||
// Write to the destination pointer.
|
||||
"punpckldq %%xmm4,%%xmm0 \n"
|
||||
"movq %%xmm0,(%1) \n"
|
||||
"movdqa %%xmm0,%%xmm4 \n"
|
||||
"palignr $0x8,%%xmm4,%%xmm4 \n"
|
||||
"movq %%xmm4,(%1,%4) \n"
|
||||
"lea (%1,%4,2),%1 \n"
|
||||
"punpckldq %%xmm6,%%xmm2 \n"
|
||||
"movdqa %%xmm2,%%xmm6 \n"
|
||||
"movq %%xmm2,(%1) \n"
|
||||
"palignr $0x8,%%xmm6,%%xmm6 \n"
|
||||
"punpckldq %%xmm5,%%xmm1 \n"
|
||||
"movq %%xmm6,(%1,%4) \n"
|
||||
"lea (%1,%4,2),%1 \n"
|
||||
"movdqa %%xmm1,%%xmm5 \n"
|
||||
"movq %%xmm1,(%1) \n"
|
||||
"palignr $0x8,%%xmm5,%%xmm5 \n"
|
||||
"movq %%xmm5,(%1,%4) \n"
|
||||
"lea (%1,%4,2),%1 \n"
|
||||
"punpckldq %%xmm7,%%xmm3 \n"
|
||||
"movq %%xmm3,(%1) \n"
|
||||
"movdqa %%xmm3,%%xmm7 \n"
|
||||
"palignr $0x8,%%xmm7,%%xmm7 \n"
|
||||
"movq %%xmm7,(%1,%4) \n"
|
||||
"lea (%1,%4,2),%1 \n"
|
||||
"punpckldq %%xmm12,%%xmm8 \n"
|
||||
"movq %%xmm8,(%1) \n"
|
||||
"movdqa %%xmm8,%%xmm12 \n"
|
||||
"palignr $0x8,%%xmm12,%%xmm12 \n"
|
||||
"movq %%xmm12,(%1,%4) \n"
|
||||
"lea (%1,%4,2),%1 \n"
|
||||
"punpckldq %%xmm14,%%xmm10 \n"
|
||||
"movdqa %%xmm10,%%xmm14 \n"
|
||||
"movq %%xmm10,(%1) \n"
|
||||
"palignr $0x8,%%xmm14,%%xmm14 \n"
|
||||
"punpckldq %%xmm13,%%xmm9 \n"
|
||||
"movq %%xmm14,(%1,%4) \n"
|
||||
"lea (%1,%4,2),%1 \n"
|
||||
"movdqa %%xmm9,%%xmm13 \n"
|
||||
"movq %%xmm9,(%1) \n"
|
||||
"palignr $0x8,%%xmm13,%%xmm13 \n"
|
||||
"movq %%xmm13,(%1,%4) \n"
|
||||
"lea (%1,%4,2),%1 \n"
|
||||
"punpckldq %%xmm15,%%xmm11 \n"
|
||||
"movq %%xmm11,(%1) \n"
|
||||
"movdqa %%xmm11,%%xmm15 \n"
|
||||
"palignr $0x8,%%xmm15,%%xmm15 \n"
|
||||
"sub $0x10,%2 \n"
|
||||
"movq %%xmm15,(%1,%4) \n"
|
||||
"lea (%1,%4,2),%1 \n"
|
||||
"jg 1b \n"
|
||||
: "+r"(src), // %0
|
||||
"+r"(dst), // %1
|
||||
"+r"(width) // %2
|
||||
: "r"((ptrdiff_t)(src_stride)), // %3
|
||||
"r"((ptrdiff_t)(dst_stride)) // %4
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6",
|
||||
"xmm7", "xmm8", "xmm9", "xmm10", "xmm11", "xmm12", "xmm13", "xmm14",
|
||||
"xmm15");
|
||||
}
|
||||
#endif // defined(HAS_TRANSPOSEWX8_FAST_SSSE3)
|
||||
|
||||
// Transpose UV 8x8. 64 bit.
|
||||
#if defined(HAS_TRANSPOSEUVWX8_SSE2)
|
||||
void TransposeUVWx8_SSE2(const uint8_t* src,
|
||||
int src_stride,
|
||||
uint8_t* dst_a,
|
||||
int dst_stride_a,
|
||||
uint8_t* dst_b,
|
||||
int dst_stride_b,
|
||||
int width) {
|
||||
asm volatile(
|
||||
// Read in the data from the source pointer.
|
||||
// First round of bit swap.
|
||||
LABELALIGN
|
||||
"1: \n"
|
||||
"movdqu (%0),%%xmm0 \n"
|
||||
"movdqu (%0,%4),%%xmm1 \n"
|
||||
"lea (%0,%4,2),%0 \n"
|
||||
"movdqa %%xmm0,%%xmm8 \n"
|
||||
"punpcklbw %%xmm1,%%xmm0 \n"
|
||||
"punpckhbw %%xmm1,%%xmm8 \n"
|
||||
"movdqa %%xmm8,%%xmm1 \n"
|
||||
"movdqu (%0),%%xmm2 \n"
|
||||
"movdqu (%0,%4),%%xmm3 \n"
|
||||
"lea (%0,%4,2),%0 \n"
|
||||
"movdqa %%xmm2,%%xmm8 \n"
|
||||
"punpcklbw %%xmm3,%%xmm2 \n"
|
||||
"punpckhbw %%xmm3,%%xmm8 \n"
|
||||
"movdqa %%xmm8,%%xmm3 \n"
|
||||
"movdqu (%0),%%xmm4 \n"
|
||||
"movdqu (%0,%4),%%xmm5 \n"
|
||||
"lea (%0,%4,2),%0 \n"
|
||||
"movdqa %%xmm4,%%xmm8 \n"
|
||||
"punpcklbw %%xmm5,%%xmm4 \n"
|
||||
"punpckhbw %%xmm5,%%xmm8 \n"
|
||||
"movdqa %%xmm8,%%xmm5 \n"
|
||||
"movdqu (%0),%%xmm6 \n"
|
||||
"movdqu (%0,%4),%%xmm7 \n"
|
||||
"lea (%0,%4,2),%0 \n"
|
||||
"movdqa %%xmm6,%%xmm8 \n"
|
||||
"punpcklbw %%xmm7,%%xmm6 \n"
|
||||
"neg %4 \n"
|
||||
"lea 0x10(%0,%4,8),%0 \n"
|
||||
"punpckhbw %%xmm7,%%xmm8 \n"
|
||||
"movdqa %%xmm8,%%xmm7 \n"
|
||||
"neg %4 \n"
|
||||
// Second round of bit swap.
|
||||
"movdqa %%xmm0,%%xmm8 \n"
|
||||
"movdqa %%xmm1,%%xmm9 \n"
|
||||
"punpckhwd %%xmm2,%%xmm8 \n"
|
||||
"punpckhwd %%xmm3,%%xmm9 \n"
|
||||
"punpcklwd %%xmm2,%%xmm0 \n"
|
||||
"punpcklwd %%xmm3,%%xmm1 \n"
|
||||
"movdqa %%xmm8,%%xmm2 \n"
|
||||
"movdqa %%xmm9,%%xmm3 \n"
|
||||
"movdqa %%xmm4,%%xmm8 \n"
|
||||
"movdqa %%xmm5,%%xmm9 \n"
|
||||
"punpckhwd %%xmm6,%%xmm8 \n"
|
||||
"punpckhwd %%xmm7,%%xmm9 \n"
|
||||
"punpcklwd %%xmm6,%%xmm4 \n"
|
||||
"punpcklwd %%xmm7,%%xmm5 \n"
|
||||
"movdqa %%xmm8,%%xmm6 \n"
|
||||
"movdqa %%xmm9,%%xmm7 \n"
|
||||
// Third round of bit swap.
|
||||
// Write to the destination pointer.
|
||||
"movdqa %%xmm0,%%xmm8 \n"
|
||||
"punpckldq %%xmm4,%%xmm0 \n"
|
||||
"movlpd %%xmm0,(%1) \n" // Write back U channel
|
||||
"movhpd %%xmm0,(%2) \n" // Write back V channel
|
||||
"punpckhdq %%xmm4,%%xmm8 \n"
|
||||
"movlpd %%xmm8,(%1,%5) \n"
|
||||
"lea (%1,%5,2),%1 \n"
|
||||
"movhpd %%xmm8,(%2,%6) \n"
|
||||
"lea (%2,%6,2),%2 \n"
|
||||
"movdqa %%xmm2,%%xmm8 \n"
|
||||
"punpckldq %%xmm6,%%xmm2 \n"
|
||||
"movlpd %%xmm2,(%1) \n"
|
||||
"movhpd %%xmm2,(%2) \n"
|
||||
"punpckhdq %%xmm6,%%xmm8 \n"
|
||||
"movlpd %%xmm8,(%1,%5) \n"
|
||||
"lea (%1,%5,2),%1 \n"
|
||||
"movhpd %%xmm8,(%2,%6) \n"
|
||||
"lea (%2,%6,2),%2 \n"
|
||||
"movdqa %%xmm1,%%xmm8 \n"
|
||||
"punpckldq %%xmm5,%%xmm1 \n"
|
||||
"movlpd %%xmm1,(%1) \n"
|
||||
"movhpd %%xmm1,(%2) \n"
|
||||
"punpckhdq %%xmm5,%%xmm8 \n"
|
||||
"movlpd %%xmm8,(%1,%5) \n"
|
||||
"lea (%1,%5,2),%1 \n"
|
||||
"movhpd %%xmm8,(%2,%6) \n"
|
||||
"lea (%2,%6,2),%2 \n"
|
||||
"movdqa %%xmm3,%%xmm8 \n"
|
||||
"punpckldq %%xmm7,%%xmm3 \n"
|
||||
"movlpd %%xmm3,(%1) \n"
|
||||
"movhpd %%xmm3,(%2) \n"
|
||||
"punpckhdq %%xmm7,%%xmm8 \n"
|
||||
"sub $0x8,%3 \n"
|
||||
"movlpd %%xmm8,(%1,%5) \n"
|
||||
"lea (%1,%5,2),%1 \n"
|
||||
"movhpd %%xmm8,(%2,%6) \n"
|
||||
"lea (%2,%6,2),%2 \n"
|
||||
"jg 1b \n"
|
||||
: "+r"(src), // %0
|
||||
"+r"(dst_a), // %1
|
||||
"+r"(dst_b), // %2
|
||||
"+r"(width) // %3
|
||||
: "r"((ptrdiff_t)(src_stride)), // %4
|
||||
"r"((ptrdiff_t)(dst_stride_a)), // %5
|
||||
"r"((ptrdiff_t)(dst_stride_b)) // %6
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6",
|
||||
"xmm7", "xmm8", "xmm9");
|
||||
}
|
||||
#endif // defined(HAS_TRANSPOSEUVWX8_SSE2)
|
||||
|
||||
#if defined(HAS_TRANSPOSE4X4_32_SSE2)
|
||||
// 4 values, little endian view
|
||||
// a b c d
|
||||
// e f g h
|
||||
// i j k l
|
||||
// m n o p
|
||||
|
||||
// transpose 2x2
|
||||
// a e b f from row 0, 1
|
||||
// i m j n from row 2, 3
|
||||
// c g d h from row 0, 1
|
||||
// k o l p from row 2, 3
|
||||
|
||||
// transpose 4x4
|
||||
// a e i m from row 0, 1
|
||||
// b f j n from row 0, 1
|
||||
// c g k o from row 2, 3
|
||||
// d h l p from row 2, 3
|
||||
|
||||
// Transpose 32 bit values (ARGB)
|
||||
void Transpose4x4_32_SSE2(const uint8_t* src,
|
||||
int src_stride,
|
||||
uint8_t* dst,
|
||||
int dst_stride,
|
||||
int width) {
|
||||
asm volatile(
|
||||
// Main loop transpose 4x4. Read a column, write a row.
|
||||
"1: \n"
|
||||
"movdqu (%0),%%xmm0 \n" // a b c d
|
||||
"movdqu (%0,%3),%%xmm1 \n" // e f g h
|
||||
"lea (%0,%3,2),%0 \n" // src += stride * 2
|
||||
"movdqu (%0),%%xmm2 \n" // i j k l
|
||||
"movdqu (%0,%3),%%xmm3 \n" // m n o p
|
||||
"lea (%0,%3,2),%0 \n" // src += stride * 2
|
||||
|
||||
// Transpose 2x2
|
||||
"movdqa %%xmm0,%%xmm4 \n"
|
||||
"movdqa %%xmm2,%%xmm5 \n"
|
||||
"movdqa %%xmm0,%%xmm6 \n"
|
||||
"movdqa %%xmm2,%%xmm7 \n"
|
||||
"punpckldq %%xmm1,%%xmm4 \n" // a e b f from row 0, 1
|
||||
"punpckldq %%xmm3,%%xmm5 \n" // i m j n from row 2, 3
|
||||
"punpckhdq %%xmm1,%%xmm6 \n" // c g d h from row 0, 1
|
||||
"punpckhdq %%xmm3,%%xmm7 \n" // k o l p from row 2, 3
|
||||
|
||||
// Transpose 4x4
|
||||
"movdqa %%xmm4,%%xmm0 \n"
|
||||
"movdqa %%xmm4,%%xmm1 \n"
|
||||
"movdqa %%xmm6,%%xmm2 \n"
|
||||
"movdqa %%xmm6,%%xmm3 \n"
|
||||
"punpcklqdq %%xmm5,%%xmm0 \n" // a e i m from row 0, 1
|
||||
"punpckhqdq %%xmm5,%%xmm1 \n" // b f j n from row 0, 1
|
||||
"punpcklqdq %%xmm7,%%xmm2 \n" // c g k o from row 2, 3
|
||||
"punpckhqdq %%xmm7,%%xmm3 \n" // d h l p from row 2, 3
|
||||
|
||||
"movdqu %%xmm0,(%1) \n"
|
||||
"lea 16(%1,%4),%1 \n" // dst += stride + 16
|
||||
"movdqu %%xmm1,-16(%1) \n"
|
||||
"movdqu %%xmm2,-16(%1,%4) \n"
|
||||
"movdqu %%xmm3,-16(%1,%4,2) \n"
|
||||
"sub %4,%1 \n"
|
||||
"sub $0x4,%2 \n"
|
||||
"jg 1b \n"
|
||||
: "+r"(src), // %0
|
||||
"+r"(dst), // %1
|
||||
"+rm"(width) // %2
|
||||
: "r"((ptrdiff_t)(src_stride)), // %3
|
||||
"r"((ptrdiff_t)(dst_stride)) // %4
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6",
|
||||
"xmm7");
|
||||
}
|
||||
#endif // defined(HAS_TRANSPOSE4X4_32_SSE2)
|
||||
|
||||
#if defined(HAS_TRANSPOSE4X4_32_AVX2)
|
||||
|
||||
|
||||
@ -20,230 +20,9 @@ extern "C" {
|
||||
#if !defined(LIBYUV_DISABLE_X86) && defined(_MSC_VER) && defined(_M_IX86) && \
|
||||
(!defined(__clang__) || defined(LIBYUV_ENABLE_ROWWIN))
|
||||
|
||||
__declspec(naked) void TransposeWx8_SSSE3(const uint8_t* src,
|
||||
int src_stride,
|
||||
uint8_t* dst,
|
||||
int dst_stride,
|
||||
int width) {
|
||||
__asm {
|
||||
push edi
|
||||
push esi
|
||||
push ebp
|
||||
mov eax, [esp + 12 + 4] // src
|
||||
mov edi, [esp + 12 + 8] // src_stride
|
||||
mov edx, [esp + 12 + 12] // dst
|
||||
mov esi, [esp + 12 + 16] // dst_stride
|
||||
mov ecx, [esp + 12 + 20] // width
|
||||
|
||||
// Read in the data from the source pointer.
|
||||
// First round of bit swap.
|
||||
align 4
|
||||
convertloop:
|
||||
movq xmm0, qword ptr [eax]
|
||||
lea ebp, [eax + 8]
|
||||
movq xmm1, qword ptr [eax + edi]
|
||||
lea eax, [eax + 2 * edi]
|
||||
punpcklbw xmm0, xmm1
|
||||
movq xmm2, qword ptr [eax]
|
||||
movdqa xmm1, xmm0
|
||||
palignr xmm1, xmm1, 8
|
||||
movq xmm3, qword ptr [eax + edi]
|
||||
lea eax, [eax + 2 * edi]
|
||||
punpcklbw xmm2, xmm3
|
||||
movdqa xmm3, xmm2
|
||||
movq xmm4, qword ptr [eax]
|
||||
palignr xmm3, xmm3, 8
|
||||
movq xmm5, qword ptr [eax + edi]
|
||||
punpcklbw xmm4, xmm5
|
||||
lea eax, [eax + 2 * edi]
|
||||
movdqa xmm5, xmm4
|
||||
movq xmm6, qword ptr [eax]
|
||||
palignr xmm5, xmm5, 8
|
||||
movq xmm7, qword ptr [eax + edi]
|
||||
punpcklbw xmm6, xmm7
|
||||
mov eax, ebp
|
||||
movdqa xmm7, xmm6
|
||||
palignr xmm7, xmm7, 8
|
||||
// Second round of bit swap.
|
||||
punpcklwd xmm0, xmm2
|
||||
punpcklwd xmm1, xmm3
|
||||
movdqa xmm2, xmm0
|
||||
movdqa xmm3, xmm1
|
||||
palignr xmm2, xmm2, 8
|
||||
palignr xmm3, xmm3, 8
|
||||
punpcklwd xmm4, xmm6
|
||||
punpcklwd xmm5, xmm7
|
||||
movdqa xmm6, xmm4
|
||||
movdqa xmm7, xmm5
|
||||
palignr xmm6, xmm6, 8
|
||||
palignr xmm7, xmm7, 8
|
||||
// Third round of bit swap.
|
||||
// Write to the destination pointer.
|
||||
punpckldq xmm0, xmm4
|
||||
movq qword ptr [edx], xmm0
|
||||
movdqa xmm4, xmm0
|
||||
palignr xmm4, xmm4, 8
|
||||
movq qword ptr [edx + esi], xmm4
|
||||
lea edx, [edx + 2 * esi]
|
||||
punpckldq xmm2, xmm6
|
||||
movdqa xmm6, xmm2
|
||||
palignr xmm6, xmm6, 8
|
||||
movq qword ptr [edx], xmm2
|
||||
punpckldq xmm1, xmm5
|
||||
movq qword ptr [edx + esi], xmm6
|
||||
lea edx, [edx + 2 * esi]
|
||||
movdqa xmm5, xmm1
|
||||
movq qword ptr [edx], xmm1
|
||||
palignr xmm5, xmm5, 8
|
||||
punpckldq xmm3, xmm7
|
||||
movq qword ptr [edx + esi], xmm5
|
||||
lea edx, [edx + 2 * esi]
|
||||
movq qword ptr [edx], xmm3
|
||||
movdqa xmm7, xmm3
|
||||
palignr xmm7, xmm7, 8
|
||||
sub ecx, 8
|
||||
movq qword ptr [edx + esi], xmm7
|
||||
lea edx, [edx + 2 * esi]
|
||||
jg convertloop
|
||||
|
||||
pop ebp
|
||||
pop esi
|
||||
pop edi
|
||||
ret
|
||||
}
|
||||
}
|
||||
|
||||
__declspec(naked) void TransposeUVWx8_SSE2(const uint8_t* src,
|
||||
int src_stride,
|
||||
uint8_t* dst_a,
|
||||
int dst_stride_a,
|
||||
uint8_t* dst_b,
|
||||
int dst_stride_b,
|
||||
int w) {
|
||||
__asm {
|
||||
push ebx
|
||||
push esi
|
||||
push edi
|
||||
push ebp
|
||||
mov eax, [esp + 16 + 4] // src
|
||||
mov edi, [esp + 16 + 8] // src_stride
|
||||
mov edx, [esp + 16 + 12] // dst_a
|
||||
mov esi, [esp + 16 + 16] // dst_stride_a
|
||||
mov ebx, [esp + 16 + 20] // dst_b
|
||||
mov ebp, [esp + 16 + 24] // dst_stride_b
|
||||
mov ecx, esp
|
||||
sub esp, 4 + 16
|
||||
and esp, ~15
|
||||
mov [esp + 16], ecx
|
||||
mov ecx, [ecx + 16 + 28] // w
|
||||
|
||||
align 4
|
||||
// Read in the data from the source pointer.
|
||||
// First round of bit swap.
|
||||
convertloop:
|
||||
movdqu xmm0, [eax]
|
||||
movdqu xmm1, [eax + edi]
|
||||
lea eax, [eax + 2 * edi]
|
||||
movdqa xmm7, xmm0 // use xmm7 as temp register.
|
||||
punpcklbw xmm0, xmm1
|
||||
punpckhbw xmm7, xmm1
|
||||
movdqa xmm1, xmm7
|
||||
movdqu xmm2, [eax]
|
||||
movdqu xmm3, [eax + edi]
|
||||
lea eax, [eax + 2 * edi]
|
||||
movdqa xmm7, xmm2
|
||||
punpcklbw xmm2, xmm3
|
||||
punpckhbw xmm7, xmm3
|
||||
movdqa xmm3, xmm7
|
||||
movdqu xmm4, [eax]
|
||||
movdqu xmm5, [eax + edi]
|
||||
lea eax, [eax + 2 * edi]
|
||||
movdqa xmm7, xmm4
|
||||
punpcklbw xmm4, xmm5
|
||||
punpckhbw xmm7, xmm5
|
||||
movdqa xmm5, xmm7
|
||||
movdqu xmm6, [eax]
|
||||
movdqu xmm7, [eax + edi]
|
||||
lea eax, [eax + 2 * edi]
|
||||
movdqu [esp], xmm5 // backup xmm5
|
||||
neg edi
|
||||
movdqa xmm5, xmm6 // use xmm5 as temp register.
|
||||
punpcklbw xmm6, xmm7
|
||||
punpckhbw xmm5, xmm7
|
||||
movdqa xmm7, xmm5
|
||||
lea eax, [eax + 8 * edi + 16]
|
||||
neg edi
|
||||
// Second round of bit swap.
|
||||
movdqa xmm5, xmm0
|
||||
punpcklwd xmm0, xmm2
|
||||
punpckhwd xmm5, xmm2
|
||||
movdqa xmm2, xmm5
|
||||
movdqa xmm5, xmm1
|
||||
punpcklwd xmm1, xmm3
|
||||
punpckhwd xmm5, xmm3
|
||||
movdqa xmm3, xmm5
|
||||
movdqa xmm5, xmm4
|
||||
punpcklwd xmm4, xmm6
|
||||
punpckhwd xmm5, xmm6
|
||||
movdqa xmm6, xmm5
|
||||
movdqu xmm5, [esp] // restore xmm5
|
||||
movdqu [esp], xmm6 // backup xmm6
|
||||
movdqa xmm6, xmm5 // use xmm6 as temp register.
|
||||
punpcklwd xmm5, xmm7
|
||||
punpckhwd xmm6, xmm7
|
||||
movdqa xmm7, xmm6
|
||||
|
||||
// Third round of bit swap.
|
||||
// Write to the destination pointer.
|
||||
movdqa xmm6, xmm0
|
||||
punpckldq xmm0, xmm4
|
||||
punpckhdq xmm6, xmm4
|
||||
movdqa xmm4, xmm6
|
||||
movdqu xmm6, [esp] // restore xmm6
|
||||
movlpd qword ptr [edx], xmm0
|
||||
movhpd qword ptr [ebx], xmm0
|
||||
movlpd qword ptr [edx + esi], xmm4
|
||||
lea edx, [edx + 2 * esi]
|
||||
movhpd qword ptr [ebx + ebp], xmm4
|
||||
lea ebx, [ebx + 2 * ebp]
|
||||
movdqa xmm0, xmm2 // use xmm0 as the temp register.
|
||||
punpckldq xmm2, xmm6
|
||||
movlpd qword ptr [edx], xmm2
|
||||
movhpd qword ptr [ebx], xmm2
|
||||
punpckhdq xmm0, xmm6
|
||||
movlpd qword ptr [edx + esi], xmm0
|
||||
lea edx, [edx + 2 * esi]
|
||||
movhpd qword ptr [ebx + ebp], xmm0
|
||||
lea ebx, [ebx + 2 * ebp]
|
||||
movdqa xmm0, xmm1 // use xmm0 as the temp register.
|
||||
punpckldq xmm1, xmm5
|
||||
movlpd qword ptr [edx], xmm1
|
||||
movhpd qword ptr [ebx], xmm1
|
||||
punpckhdq xmm0, xmm5
|
||||
movlpd qword ptr [edx + esi], xmm0
|
||||
lea edx, [edx + 2 * esi]
|
||||
movhpd qword ptr [ebx + ebp], xmm0
|
||||
lea ebx, [ebx + 2 * ebp]
|
||||
movdqa xmm0, xmm3 // use xmm0 as the temp register.
|
||||
punpckldq xmm3, xmm7
|
||||
movlpd qword ptr [edx], xmm3
|
||||
movhpd qword ptr [ebx], xmm3
|
||||
punpckhdq xmm0, xmm7
|
||||
sub ecx, 8
|
||||
movlpd qword ptr [edx + esi], xmm0
|
||||
lea edx, [edx + 2 * esi]
|
||||
movhpd qword ptr [ebx + ebp], xmm0
|
||||
lea ebx, [ebx + 2 * ebp]
|
||||
jg convertloop
|
||||
|
||||
mov esp, [esp + 16]
|
||||
pop ebp
|
||||
pop edi
|
||||
pop esi
|
||||
pop ebx
|
||||
ret
|
||||
}
|
||||
}
|
||||
|
||||
#endif // !defined(LIBYUV_DISABLE_X86) && defined(_M_IX86)
|
||||
|
||||
|
||||
@ -53,9 +53,6 @@ extern "C" {
|
||||
memcpy(dst_ptr + (np >> DUVSHIFT) * BPP, vout, SS(r, DUVSHIFT) * BPP); \
|
||||
}
|
||||
|
||||
#ifdef HAS_MERGEARGBROW_SSE2
|
||||
ANY41(MergeARGBRow_Any_SSE2, MergeARGBRow_SSE2, 0, 0, 4, 7)
|
||||
#endif
|
||||
#ifdef HAS_MERGEARGBROW_AVX2
|
||||
ANY41(MergeARGBRow_Any_AVX2, MergeARGBRow_AVX2, 0, 0, 4, 15)
|
||||
#endif
|
||||
@ -92,15 +89,9 @@ ANY41(MergeARGBRow_Any_NEON, MergeARGBRow_NEON, 0, 0, 4, 15)
|
||||
memcpy(dst_ptr + (np >> DUVSHIFT) * BPP, vout, SS(r, DUVSHIFT) * BPP); \
|
||||
}
|
||||
|
||||
#ifdef HAS_I444ALPHATOARGBROW_SSSE3
|
||||
ANY41C(I444AlphaToARGBRow_Any_SSSE3, I444AlphaToARGBRow_SSSE3, 0, 0, 4, 7)
|
||||
#endif
|
||||
#ifdef HAS_I444ALPHATOARGBROW_AVX2
|
||||
ANY41C(I444AlphaToARGBRow_Any_AVX2, I444AlphaToARGBRow_AVX2, 0, 0, 4, 15)
|
||||
#endif
|
||||
#ifdef HAS_I422ALPHATOARGBROW_SSSE3
|
||||
ANY41C(I422AlphaToARGBRow_Any_SSSE3, I422AlphaToARGBRow_SSSE3, 1, 0, 4, 7)
|
||||
#endif
|
||||
#ifdef HAS_I422ALPHATOARGBROW_AVX2
|
||||
ANY41C(I422AlphaToARGBRow_Any_AVX2, I422AlphaToARGBRow_AVX2, 1, 0, 4, 15)
|
||||
#endif
|
||||
@ -161,8 +152,7 @@ ANY41CT(I410AlphaToARGBRow_Any_NEON,
|
||||
7)
|
||||
#endif
|
||||
|
||||
#ifdef HAS_I210ALPHATOARGBROW_SSSE3
|
||||
ANY41CT(I210AlphaToARGBRow_Any_SSSE3,
|
||||
#if 0
|
||||
I210AlphaToARGBRow_SSSE3,
|
||||
1,
|
||||
0,
|
||||
@ -183,8 +173,7 @@ ANY41CT(I210AlphaToARGBRow_Any_AVX2,
|
||||
15)
|
||||
#endif
|
||||
|
||||
#ifdef HAS_I410ALPHATOARGBROW_SSSE3
|
||||
ANY41CT(I410AlphaToARGBRow_Any_SSSE3,
|
||||
#if 0
|
||||
I410AlphaToARGBRow_SSSE3,
|
||||
0,
|
||||
0,
|
||||
@ -279,25 +268,15 @@ ANY41PT(MergeARGB16To8Row_Any_NEON,
|
||||
}
|
||||
|
||||
// Merge functions.
|
||||
#ifdef HAS_MERGERGBROW_SSSE3
|
||||
ANY31(MergeRGBRow_Any_SSSE3, MergeRGBRow_SSSE3, 0, 0, 3, 15)
|
||||
#endif
|
||||
#ifdef HAS_MERGERGBROW_NEON
|
||||
ANY31(MergeRGBRow_Any_NEON, MergeRGBRow_NEON, 0, 0, 3, 15)
|
||||
#endif
|
||||
#ifdef HAS_MERGEXRGBROW_SSE2
|
||||
ANY31(MergeXRGBRow_Any_SSE2, MergeXRGBRow_SSE2, 0, 0, 4, 7)
|
||||
#endif
|
||||
#ifdef HAS_MERGEXRGBROW_AVX2
|
||||
ANY31(MergeXRGBRow_Any_AVX2, MergeXRGBRow_AVX2, 0, 0, 4, 15)
|
||||
#endif
|
||||
#ifdef HAS_MERGEXRGBROW_NEON
|
||||
ANY31(MergeXRGBRow_Any_NEON, MergeXRGBRow_NEON, 0, 0, 4, 15)
|
||||
#endif
|
||||
#ifdef HAS_I422TOYUY2ROW_SSE2
|
||||
ANY31(I422ToYUY2Row_Any_SSE2, I422ToYUY2Row_SSE2, 1, 1, 4, 15)
|
||||
ANY31(I422ToUYVYRow_Any_SSE2, I422ToUYVYRow_SSE2, 1, 1, 4, 15)
|
||||
#endif
|
||||
#ifdef HAS_I422TOYUY2ROW_AVX2
|
||||
ANY31(I422ToYUY2Row_Any_AVX2, I422ToYUY2Row_AVX2, 1, 1, 4, 31)
|
||||
ANY31(I422ToUYVYRow_Any_AVX2, I422ToUYVYRow_AVX2, 1, 1, 4, 31)
|
||||
@ -323,9 +302,6 @@ ANY31(I422ToUYVYRow_Any_LASX, I422ToUYVYRow_LASX, 1, 1, 4, 31)
|
||||
#ifdef HAS_BLENDPLANEROW_AVX2
|
||||
ANY31(BlendPlaneRow_Any_AVX2, BlendPlaneRow_AVX2, 0, 0, 1, 31)
|
||||
#endif
|
||||
#ifdef HAS_BLENDPLANEROW_SSSE3
|
||||
ANY31(BlendPlaneRow_Any_SSSE3, BlendPlaneRow_SSSE3, 0, 0, 1, 7)
|
||||
#endif
|
||||
#undef ANY31
|
||||
|
||||
// Note that odd width replication includes 444 due to implementation
|
||||
@ -355,36 +331,9 @@ ANY31(BlendPlaneRow_Any_SSSE3, BlendPlaneRow_SSSE3, 0, 0, 1, 7)
|
||||
memcpy(dst_ptr + (np >> DUVSHIFT) * BPP, vout, SS(r, DUVSHIFT) * BPP); \
|
||||
}
|
||||
|
||||
#ifdef HAS_I422TOARGBROW_SSSE3
|
||||
ANY31C(I422ToARGBRow_Any_SSSE3, I422ToARGBRow_SSSE3, 1, 0, 4, 7)
|
||||
#endif
|
||||
#ifdef HAS_I422TORGBAROW_SSSE3
|
||||
ANY31C(I422ToRGBARow_Any_SSSE3, I422ToRGBARow_SSSE3, 1, 0, 4, 7)
|
||||
#endif
|
||||
#ifdef HAS_I422TOARGB4444ROW_SSSE3
|
||||
ANY31C(I422ToARGB4444Row_Any_SSSE3, I422ToARGB4444Row_SSSE3, 1, 0, 2, 7)
|
||||
#endif
|
||||
#ifdef HAS_I422TOARGB1555ROW_SSSE3
|
||||
ANY31C(I422ToARGB1555Row_Any_SSSE3, I422ToARGB1555Row_SSSE3, 1, 0, 2, 7)
|
||||
#endif
|
||||
#ifdef HAS_I422TORGB565ROW_SSSE3
|
||||
ANY31C(I422ToRGB565Row_Any_SSSE3, I422ToRGB565Row_SSSE3, 1, 0, 2, 7)
|
||||
#endif
|
||||
#ifdef HAS_I422TORGB24ROW_SSSE3
|
||||
ANY31C(I422ToRGB24Row_Any_SSSE3, I422ToRGB24Row_SSSE3, 1, 0, 3, 15)
|
||||
#endif
|
||||
#ifdef HAS_I422TOAR30ROW_SSSE3
|
||||
ANY31C(I422ToAR30Row_Any_SSSE3, I422ToAR30Row_SSSE3, 1, 0, 4, 7)
|
||||
#endif
|
||||
#ifdef HAS_I422TOAR30ROW_AVX2
|
||||
ANY31C(I422ToAR30Row_Any_AVX2, I422ToAR30Row_AVX2, 1, 0, 4, 15)
|
||||
#endif
|
||||
#ifdef HAS_I444TOARGBROW_SSSE3
|
||||
ANY31C(I444ToARGBRow_Any_SSSE3, I444ToARGBRow_SSSE3, 0, 0, 4, 7)
|
||||
#endif
|
||||
#ifdef HAS_I444TORGB24ROW_SSSE3
|
||||
ANY31C(I444ToRGB24Row_Any_SSSE3, I444ToRGB24Row_SSSE3, 0, 0, 3, 15)
|
||||
#endif
|
||||
#ifdef HAS_I422TORGB24ROW_AVX2
|
||||
ANY31C(I422ToRGB24Row_Any_AVX2, I422ToRGB24Row_AVX2, 1, 0, 3, 31)
|
||||
#endif
|
||||
@ -470,36 +419,18 @@ ANY31C(I444ToARGBRow_Any_LSX, I444ToARGBRow_LSX, 0, 0, 4, 15)
|
||||
memcpy(dst_ptr + (np >> DUVSHIFT) * BPP, vout, SS(r, DUVSHIFT) * BPP); \
|
||||
}
|
||||
|
||||
#ifdef HAS_I210TOAR30ROW_SSSE3
|
||||
ANY31CT(I210ToAR30Row_Any_SSSE3, I210ToAR30Row_SSSE3, 1, 0, uint16_t, 2, 4, 7)
|
||||
#endif
|
||||
#ifdef HAS_I210TOARGBROW_SSSE3
|
||||
ANY31CT(I210ToARGBRow_Any_SSSE3, I210ToARGBRow_SSSE3, 1, 0, uint16_t, 2, 4, 7)
|
||||
#endif
|
||||
#ifdef HAS_I210TOARGBROW_AVX2
|
||||
ANY31CT(I210ToARGBRow_Any_AVX2, I210ToARGBRow_AVX2, 1, 0, uint16_t, 2, 4, 15)
|
||||
#endif
|
||||
#ifdef HAS_I210TOAR30ROW_AVX2
|
||||
ANY31CT(I210ToAR30Row_Any_AVX2, I210ToAR30Row_AVX2, 1, 0, uint16_t, 2, 4, 15)
|
||||
#endif
|
||||
#ifdef HAS_I410TOAR30ROW_SSSE3
|
||||
ANY31CT(I410ToAR30Row_Any_SSSE3, I410ToAR30Row_SSSE3, 0, 0, uint16_t, 2, 4, 7)
|
||||
#endif
|
||||
#ifdef HAS_I410TOARGBROW_SSSE3
|
||||
ANY31CT(I410ToARGBRow_Any_SSSE3, I410ToARGBRow_SSSE3, 0, 0, uint16_t, 2, 4, 7)
|
||||
#endif
|
||||
#ifdef HAS_I410TOARGBROW_AVX2
|
||||
ANY31CT(I410ToARGBRow_Any_AVX2, I410ToARGBRow_AVX2, 0, 0, uint16_t, 2, 4, 15)
|
||||
#endif
|
||||
#ifdef HAS_I410TOAR30ROW_AVX2
|
||||
ANY31CT(I410ToAR30Row_Any_AVX2, I410ToAR30Row_AVX2, 0, 0, uint16_t, 2, 4, 15)
|
||||
#endif
|
||||
#ifdef HAS_I212TOAR30ROW_SSSE3
|
||||
ANY31CT(I212ToAR30Row_Any_SSSE3, I212ToAR30Row_SSSE3, 1, 0, uint16_t, 2, 4, 7)
|
||||
#endif
|
||||
#ifdef HAS_I212TOARGBROW_SSSE3
|
||||
ANY31CT(I212ToARGBRow_Any_SSSE3, I212ToARGBRow_SSSE3, 1, 0, uint16_t, 2, 4, 7)
|
||||
#endif
|
||||
#ifdef HAS_I212TOARGBROW_AVX2
|
||||
ANY31CT(I212ToARGBRow_Any_AVX2, I212ToARGBRow_AVX2, 1, 0, uint16_t, 2, 4, 15)
|
||||
#endif
|
||||
@ -612,9 +543,6 @@ ANY31PT(MergeXRGB16To8Row_Any_NEON,
|
||||
}
|
||||
|
||||
// Merge functions.
|
||||
#ifdef HAS_MERGEUVROW_SSE2
|
||||
ANY21(MergeUVRow_Any_SSE2, MergeUVRow_SSE2, 0, 1, 1, 2, 15)
|
||||
#endif
|
||||
#ifdef HAS_MERGEUVROW_AVX2
|
||||
ANY21(MergeUVRow_Any_AVX2, MergeUVRow_AVX2, 0, 1, 1, 2, 31)
|
||||
#endif
|
||||
@ -630,22 +558,10 @@ ANY21(MergeUVRow_Any_LSX, MergeUVRow_LSX, 0, 1, 1, 2, 15)
|
||||
#ifdef HAS_NV21TOYUV24ROW_NEON
|
||||
ANY21(NV21ToYUV24Row_Any_NEON, NV21ToYUV24Row_NEON, 1, 1, 2, 3, 15)
|
||||
#endif
|
||||
#ifdef HAS_NV21TOYUV24ROW_SSSE3
|
||||
ANY21(NV21ToYUV24Row_Any_SSSE3, NV21ToYUV24Row_SSSE3, 1, 1, 2, 3, 15)
|
||||
#endif
|
||||
#ifdef HAS_NV21TOYUV24ROW_AVX2
|
||||
ANY21(NV21ToYUV24Row_Any_AVX2, NV21ToYUV24Row_AVX2, 1, 1, 2, 3, 31)
|
||||
#endif
|
||||
// Math functions.
|
||||
#ifdef HAS_ARGBMULTIPLYROW_SSE2
|
||||
ANY21(ARGBMultiplyRow_Any_SSE2, ARGBMultiplyRow_SSE2, 0, 4, 4, 4, 3)
|
||||
#endif
|
||||
#ifdef HAS_ARGBADDROW_SSE2
|
||||
ANY21(ARGBAddRow_Any_SSE2, ARGBAddRow_SSE2, 0, 4, 4, 4, 3)
|
||||
#endif
|
||||
#ifdef HAS_ARGBSUBTRACTROW_SSE2
|
||||
ANY21(ARGBSubtractRow_Any_SSE2, ARGBSubtractRow_SSE2, 0, 4, 4, 4, 3)
|
||||
#endif
|
||||
#ifdef HAS_ARGBMULTIPLYROW_AVX2
|
||||
ANY21(ARGBMultiplyRow_Any_AVX2, ARGBMultiplyRow_AVX2, 0, 4, 4, 4, 7)
|
||||
#endif
|
||||
@ -682,27 +598,18 @@ ANY21(ARGBSubtractRow_Any_LSX, ARGBSubtractRow_LSX, 0, 4, 4, 4, 3)
|
||||
#ifdef HAS_ARGBSUBTRACTROW_LASX
|
||||
ANY21(ARGBSubtractRow_Any_LASX, ARGBSubtractRow_LASX, 0, 4, 4, 4, 7)
|
||||
#endif
|
||||
#ifdef HAS_SOBELROW_SSE2
|
||||
ANY21(SobelRow_Any_SSE2, SobelRow_SSE2, 0, 1, 1, 4, 15)
|
||||
#endif
|
||||
#ifdef HAS_SOBELROW_NEON
|
||||
ANY21(SobelRow_Any_NEON, SobelRow_NEON, 0, 1, 1, 4, 7)
|
||||
#endif
|
||||
#ifdef HAS_SOBELROW_LSX
|
||||
ANY21(SobelRow_Any_LSX, SobelRow_LSX, 0, 1, 1, 4, 15)
|
||||
#endif
|
||||
#ifdef HAS_SOBELTOPLANEROW_SSE2
|
||||
ANY21(SobelToPlaneRow_Any_SSE2, SobelToPlaneRow_SSE2, 0, 1, 1, 1, 15)
|
||||
#endif
|
||||
#ifdef HAS_SOBELTOPLANEROW_NEON
|
||||
ANY21(SobelToPlaneRow_Any_NEON, SobelToPlaneRow_NEON, 0, 1, 1, 1, 15)
|
||||
#endif
|
||||
#ifdef HAS_SOBELTOPLANEROW_LSX
|
||||
ANY21(SobelToPlaneRow_Any_LSX, SobelToPlaneRow_LSX, 0, 1, 1, 1, 31)
|
||||
#endif
|
||||
#ifdef HAS_SOBELXYROW_SSE2
|
||||
ANY21(SobelXYRow_Any_SSE2, SobelXYRow_SSE2, 0, 1, 1, 4, 15)
|
||||
#endif
|
||||
#ifdef HAS_SOBELXYROW_NEON
|
||||
ANY21(SobelXYRow_Any_NEON, SobelXYRow_NEON, 0, 1, 1, 4, 7)
|
||||
#endif
|
||||
@ -735,9 +642,6 @@ ANY21(SobelXYRow_Any_LSX, SobelXYRow_LSX, 0, 1, 1, 4, 15)
|
||||
#ifdef HAS_YUY2TONVUVROW_NEON
|
||||
ANY21S(YUY2ToNVUVRow_Any_NEON, YUY2ToNVUVRow_NEON, 4, 2, 7)
|
||||
#endif
|
||||
#ifdef HAS_YUY2TONVUVROW_SSE2
|
||||
ANY21S(YUY2ToNVUVRow_Any_SSE2, YUY2ToNVUVRow_SSE2, 4, 2, 7)
|
||||
#endif
|
||||
#ifdef HAS_YUY2TONVUVROW_AVX2
|
||||
ANY21S(YUY2ToNVUVRow_Any_AVX2, YUY2ToNVUVRow_AVX2, 4, 2, 15)
|
||||
#endif
|
||||
@ -763,9 +667,6 @@ ANY21S(YUY2ToNVUVRow_Any_AVX2, YUY2ToNVUVRow_AVX2, 4, 2, 15)
|
||||
}
|
||||
|
||||
// Biplanar to RGB.
|
||||
#ifdef HAS_NV12TOARGBROW_SSSE3
|
||||
ANY21C(NV12ToARGBRow_Any_SSSE3, NV12ToARGBRow_SSSE3, 1, 1, 2, 4, 7)
|
||||
#endif
|
||||
#ifdef HAS_NV12TOARGBROW_AVX2
|
||||
ANY21C(NV12ToARGBRow_Any_AVX2, NV12ToARGBRow_AVX2, 1, 1, 2, 4, 15)
|
||||
#endif
|
||||
@ -778,9 +679,6 @@ ANY21C(NV12ToARGBRow_Any_LSX, NV12ToARGBRow_LSX, 1, 1, 2, 4, 7)
|
||||
#ifdef HAS_NV12TOARGBROW_LASX
|
||||
ANY21C(NV12ToARGBRow_Any_LASX, NV12ToARGBRow_LASX, 1, 1, 2, 4, 15)
|
||||
#endif
|
||||
#ifdef HAS_NV21TOARGBROW_SSSE3
|
||||
ANY21C(NV21ToARGBRow_Any_SSSE3, NV21ToARGBRow_SSSE3, 1, 1, 2, 4, 7)
|
||||
#endif
|
||||
#ifdef HAS_NV21TOARGBROW_AVX2
|
||||
ANY21C(NV21ToARGBRow_Any_AVX2, NV21ToARGBRow_AVX2, 1, 1, 2, 4, 15)
|
||||
#endif
|
||||
@ -799,21 +697,12 @@ ANY21C(NV12ToRGB24Row_Any_NEON, NV12ToRGB24Row_NEON, 1, 1, 2, 3, 7)
|
||||
#ifdef HAS_NV21TORGB24ROW_NEON
|
||||
ANY21C(NV21ToRGB24Row_Any_NEON, NV21ToRGB24Row_NEON, 1, 1, 2, 3, 7)
|
||||
#endif
|
||||
#ifdef HAS_NV12TORGB24ROW_SSSE3
|
||||
ANY21C(NV12ToRGB24Row_Any_SSSE3, NV12ToRGB24Row_SSSE3, 1, 1, 2, 3, 15)
|
||||
#endif
|
||||
#ifdef HAS_NV21TORGB24ROW_SSSE3
|
||||
ANY21C(NV21ToRGB24Row_Any_SSSE3, NV21ToRGB24Row_SSSE3, 1, 1, 2, 3, 15)
|
||||
#endif
|
||||
#ifdef HAS_NV12TORGB24ROW_AVX2
|
||||
ANY21C(NV12ToRGB24Row_Any_AVX2, NV12ToRGB24Row_AVX2, 1, 1, 2, 3, 31)
|
||||
#endif
|
||||
#ifdef HAS_NV21TORGB24ROW_AVX2
|
||||
ANY21C(NV21ToRGB24Row_Any_AVX2, NV21ToRGB24Row_AVX2, 1, 1, 2, 3, 31)
|
||||
#endif
|
||||
#ifdef HAS_NV12TORGB565ROW_SSSE3
|
||||
ANY21C(NV12ToRGB565Row_Any_SSSE3, NV12ToRGB565Row_SSSE3, 1, 1, 2, 2, 7)
|
||||
#endif
|
||||
#ifdef HAS_NV12TORGB565ROW_AVX2
|
||||
ANY21C(NV12ToRGB565Row_Any_AVX2, NV12ToRGB565Row_AVX2, 1, 1, 2, 2, 15)
|
||||
#endif
|
||||
@ -847,12 +736,6 @@ ANY21C(NV12ToRGB565Row_Any_LASX, NV12ToRGB565Row_LASX, 1, 1, 2, 2, 15)
|
||||
memcpy(dst_ptr + (np >> DUVSHIFT) * BPP, vout, SS(r, DUVSHIFT) * BPP); \
|
||||
}
|
||||
|
||||
#ifdef HAS_P210TOAR30ROW_SSSE3
|
||||
ANY21CT(P210ToAR30Row_Any_SSSE3, P210ToAR30Row_SSSE3, 1, 0, uint16_t, 2, 4, 7)
|
||||
#endif
|
||||
#ifdef HAS_P210TOARGBROW_SSSE3
|
||||
ANY21CT(P210ToARGBRow_Any_SSSE3, P210ToARGBRow_SSSE3, 1, 0, uint16_t, 2, 4, 7)
|
||||
#endif
|
||||
#ifdef HAS_P210TOARGBROW_AVX2
|
||||
ANY21CT(P210ToARGBRow_Any_AVX2, P210ToARGBRow_AVX2, 1, 0, uint16_t, 2, 4, 15)
|
||||
#endif
|
||||
@ -865,12 +748,6 @@ ANY21CT(P210ToAR30Row_Any_NEON, P210ToAR30Row_NEON, 1, 0, uint16_t, 2, 4, 7)
|
||||
#ifdef HAS_P210TOARGBROW_NEON
|
||||
ANY21CT(P210ToARGBRow_Any_NEON, P210ToARGBRow_NEON, 1, 0, uint16_t, 2, 4, 7)
|
||||
#endif
|
||||
#ifdef HAS_P410TOAR30ROW_SSSE3
|
||||
ANY21CT(P410ToAR30Row_Any_SSSE3, P410ToAR30Row_SSSE3, 0, 0, uint16_t, 2, 4, 7)
|
||||
#endif
|
||||
#ifdef HAS_P410TOARGBROW_SSSE3
|
||||
ANY21CT(P410ToARGBRow_Any_SSSE3, P410ToARGBRow_SSSE3, 0, 0, uint16_t, 2, 4, 7)
|
||||
#endif
|
||||
#ifdef HAS_P410TOARGBROW_AVX2
|
||||
ANY21CT(P410ToARGBRow_Any_AVX2, P410ToARGBRow_AVX2, 0, 0, uint16_t, 2, 4, 15)
|
||||
#endif
|
||||
@ -937,19 +814,9 @@ ANY11(CopyRow_Any_AVX512BW, CopyRow_AVX512BW, 0, 1, 1, 127)
|
||||
#ifdef HAS_COPYROW_AVX
|
||||
ANY11(CopyRow_Any_AVX, CopyRow_AVX, 0, 1, 1, 63)
|
||||
#endif
|
||||
#ifdef HAS_COPYROW_SSE2
|
||||
ANY11(CopyRow_Any_SSE2, CopyRow_SSE2, 0, 1, 1, 31)
|
||||
#endif
|
||||
#ifdef HAS_COPYROW_NEON
|
||||
ANY11(CopyRow_Any_NEON, CopyRow_NEON, 0, 1, 1, 31)
|
||||
#endif
|
||||
#if defined(HAS_ARGBTORGB24ROW_SSSE3)
|
||||
ANY11(ARGBToRGB24Row_Any_SSSE3, ARGBToRGB24Row_SSSE3, 0, 4, 3, 15)
|
||||
ANY11(ARGBToRAWRow_Any_SSSE3, ARGBToRAWRow_SSSE3, 0, 4, 3, 15)
|
||||
ANY11(ARGBToRGB565Row_Any_SSE2, ARGBToRGB565Row_SSE2, 0, 4, 2, 3)
|
||||
ANY11(ARGBToARGB1555Row_Any_SSE2, ARGBToARGB1555Row_SSE2, 0, 4, 2, 3)
|
||||
ANY11(ARGBToARGB4444Row_Any_SSE2, ARGBToARGB4444Row_SSE2, 0, 4, 2, 3)
|
||||
#endif
|
||||
#if defined(HAS_ARGBTORGB24ROW_AVX2)
|
||||
ANY11(ARGBToRGB24Row_Any_AVX2, ARGBToRGB24Row_AVX2, 0, 4, 3, 31)
|
||||
#endif
|
||||
@ -966,37 +833,21 @@ ANY11(ARGBToRGB565Row_Any_AVX2, ARGBToRGB565Row_AVX2, 0, 4, 2, 7)
|
||||
ANY11(ARGBToARGB1555Row_Any_AVX2, ARGBToARGB1555Row_AVX2, 0, 4, 2, 7)
|
||||
ANY11(ARGBToARGB4444Row_Any_AVX2, ARGBToARGB4444Row_AVX2, 0, 4, 2, 7)
|
||||
#endif
|
||||
#if defined(HAS_ABGRTOAR30ROW_SSSE3)
|
||||
ANY11(ABGRToAR30Row_Any_SSSE3, ABGRToAR30Row_SSSE3, 0, 4, 4, 3)
|
||||
#endif
|
||||
#if defined(HAS_ABGRTOAR30ROW_NEON)
|
||||
ANY11(ABGRToAR30Row_Any_NEON, ABGRToAR30Row_NEON, 0, 4, 4, 7)
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOAR30ROW_NEON)
|
||||
ANY11(ARGBToAR30Row_Any_NEON, ARGBToAR30Row_NEON, 0, 4, 4, 7)
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOAR30ROW_SSSE3)
|
||||
ANY11(ARGBToAR30Row_Any_SSSE3, ARGBToAR30Row_SSSE3, 0, 4, 4, 3)
|
||||
#endif
|
||||
#if defined(HAS_ABGRTOAR30ROW_AVX2)
|
||||
ANY11(ABGRToAR30Row_Any_AVX2, ABGRToAR30Row_AVX2, 0, 4, 4, 7)
|
||||
#endif
|
||||
#if defined(HAS_ARGBTOAR30ROW_AVX2)
|
||||
ANY11(ARGBToAR30Row_Any_AVX2, ARGBToAR30Row_AVX2, 0, 4, 4, 7)
|
||||
#endif
|
||||
#if defined(HAS_J400TOARGBROW_SSE2)
|
||||
ANY11(J400ToARGBRow_Any_SSE2, J400ToARGBRow_SSE2, 0, 1, 4, 7)
|
||||
#endif
|
||||
#if defined(HAS_J400TOARGBROW_AVX2)
|
||||
ANY11(J400ToARGBRow_Any_AVX2, J400ToARGBRow_AVX2, 0, 1, 4, 15)
|
||||
#endif
|
||||
#if defined(HAS_RGB24TOARGBROW_SSSE3)
|
||||
ANY11(RGB24ToARGBRow_Any_SSSE3, RGB24ToARGBRow_SSSE3, 0, 3, 4, 15)
|
||||
ANY11(RAWToARGBRow_Any_SSSE3, RAWToARGBRow_SSSE3, 0, 3, 4, 15)
|
||||
ANY11(RGB565ToARGBRow_Any_SSE2, RGB565ToARGBRow_SSE2, 0, 2, 4, 7)
|
||||
ANY11(ARGB1555ToARGBRow_Any_SSE2, ARGB1555ToARGBRow_SSE2, 0, 2, 4, 7)
|
||||
ANY11(ARGB4444ToARGBRow_Any_SSE2, ARGB4444ToARGBRow_SSE2, 0, 2, 4, 7)
|
||||
#endif
|
||||
#if defined(HAS_RAWTOARGBROW_AVX2)
|
||||
ANY11(RAWToARGBRow_Any_AVX2, RAWToARGBRow_AVX2, 0, 3, 4, 31)
|
||||
#endif
|
||||
@ -1006,12 +857,6 @@ ANY11(RAWToARGBRow_Any_AVX512BW, RAWToARGBRow_AVX512BW, 0, 3, 4, 63)
|
||||
#if defined(HAS_RGB24TOARGBROW_AVX512BW)
|
||||
ANY11(RGB24ToARGBRow_Any_AVX512BW, RGB24ToARGBRow_AVX512BW, 0, 3, 4, 63)
|
||||
#endif
|
||||
#if defined(HAS_RAWTORGBAROW_SSSE3)
|
||||
ANY11(RAWToRGBARow_Any_SSSE3, RAWToRGBARow_SSSE3, 0, 3, 4, 15)
|
||||
#endif
|
||||
#if defined(HAS_RAWTORGB24ROW_SSSE3)
|
||||
ANY11(RAWToRGB24Row_Any_SSSE3, RAWToRGB24Row_SSSE3, 0, 3, 3, 7)
|
||||
#endif
|
||||
#if defined(HAS_RGB565TOARGBROW_AVX2)
|
||||
ANY11(RGB565ToARGBRow_Any_AVX2, RGB565ToARGBRow_AVX2, 0, 2, 4, 15)
|
||||
#endif
|
||||
@ -1073,17 +918,9 @@ ANY11(UYVYToYRow_Any_AVX2, UYVYToYRow_AVX2, 0, 2, 1, 31)
|
||||
#ifdef HAS_YUY2TOYROW_AVX2
|
||||
ANY11(YUY2ToYRow_Any_AVX2, YUY2ToYRow_AVX2, 1, 4, 1, 31)
|
||||
#endif
|
||||
#ifdef HAS_ARGBTOYROW_SSSE3
|
||||
ANY11(ARGBToYRow_Any_SSSE3, ARGBToYRow_SSSE3, 0, 4, 1, 15)
|
||||
#endif
|
||||
#ifdef HAS_ARGBTOYROW_AVX512BW
|
||||
ANY11(ARGBToYRow_Any_AVX512BW, ARGBToYRow_AVX512BW, 0, 4, 1, 63)
|
||||
#endif
|
||||
#ifdef HAS_BGRATOYROW_SSSE3
|
||||
ANY11(BGRAToYRow_Any_SSSE3, BGRAToYRow_SSSE3, 0, 4, 1, 15)
|
||||
ANY11(ABGRToYRow_Any_SSSE3, ABGRToYRow_SSSE3, 0, 4, 1, 15)
|
||||
ANY11(RGBAToYRow_Any_SSSE3, RGBAToYRow_SSSE3, 0, 4, 1, 15)
|
||||
#endif
|
||||
#ifdef HAS_ARGBTOYROW_AVX512BW
|
||||
ANY11(BGRAToYRow_Any_AVX512BW, BGRAToYRow_AVX512BW, 0, 4, 1, 63)
|
||||
#endif
|
||||
@ -1099,25 +936,12 @@ ANY11(RGBAToYRow_Any_AVX2, RGBAToYRow_AVX2, 0, 4, 1, 31)
|
||||
#ifdef HAS_ARGBTOYROW_AVX512BW
|
||||
ANY11(ABGRToYRow_Any_AVX512BW, ABGRToYRow_AVX512BW, 0, 4, 1, 63)
|
||||
#endif
|
||||
#ifdef HAS_YUY2TOYROW_SSE2
|
||||
ANY11(YUY2ToYRow_Any_SSE2, YUY2ToYRow_SSE2, 1, 4, 1, 15)
|
||||
ANY11(UYVYToYRow_Any_SSE2, UYVYToYRow_SSE2, 1, 4, 1, 15)
|
||||
#endif
|
||||
#ifdef HAS_ARGBTOYJROW_SSSE3
|
||||
ANY11(ARGBToYJRow_Any_SSSE3, ARGBToYJRow_SSSE3, 0, 4, 1, 15)
|
||||
#endif
|
||||
#ifdef HAS_ARGBTOYROW_AVX512BW
|
||||
ANY11(ARGBToYJRow_Any_AVX512BW, ARGBToYJRow_AVX512BW, 0, 4, 1, 63)
|
||||
#endif
|
||||
#ifdef HAS_ABGRTOYJROW_SSSE3
|
||||
ANY11(ABGRToYJRow_Any_SSSE3, ABGRToYJRow_SSSE3, 0, 4, 1, 15)
|
||||
#endif
|
||||
#ifdef HAS_ARGBTOYROW_AVX512BW
|
||||
ANY11(ABGRToYJRow_Any_AVX512BW, ABGRToYJRow_AVX512BW, 0, 4, 1, 63)
|
||||
#endif
|
||||
#ifdef HAS_RGBATOYJROW_SSSE3
|
||||
ANY11(RGBAToYJRow_Any_SSSE3, RGBAToYJRow_SSSE3, 0, 4, 1, 15)
|
||||
#endif
|
||||
#ifdef HAS_ARGBTOYROW_AVX512BW
|
||||
ANY11(RGBAToYJRow_Any_AVX512BW, RGBAToYJRow_AVX512BW, 0, 4, 1, 63)
|
||||
#endif
|
||||
@ -1205,38 +1029,6 @@ ANY11(RGBAToYRow_Any_LSX, RGBAToYRow_LSX, 0, 4, 1, 15)
|
||||
#ifdef HAS_RGBATOYROW_LASX
|
||||
ANY11(RGBAToYRow_Any_LASX, RGBAToYRow_LASX, 0, 4, 1, 31)
|
||||
#endif
|
||||
#ifdef HAS_RGB24TOYROW_NEON
|
||||
#endif
|
||||
#ifdef HAS_RGB24TOYJROW_AVX2
|
||||
#endif
|
||||
#ifdef HAS_RGB24TOYJROW_SSSE3
|
||||
#endif
|
||||
#ifdef HAS_RGB24TOYJROW_NEON
|
||||
#endif
|
||||
#ifdef HAS_RGB24TOYROW_LSX
|
||||
#endif
|
||||
#ifdef HAS_RGB24TOYJROW_LSX
|
||||
#endif
|
||||
#ifdef HAS_RGB24TOYJROW_LASX
|
||||
#endif
|
||||
#ifdef HAS_RGB24TOYROW_LASX
|
||||
#endif
|
||||
#ifdef HAS_RAWTOYROW_NEON
|
||||
#endif
|
||||
#ifdef HAS_RAWTOYJROW_AVX2
|
||||
#endif
|
||||
#ifdef HAS_RAWTOYJROW_SSSE3
|
||||
#endif
|
||||
#ifdef HAS_RAWTOYJROW_NEON
|
||||
#endif
|
||||
#ifdef HAS_RAWTOYROW_LSX
|
||||
#endif
|
||||
#ifdef HAS_RAWTOYROW_LASX
|
||||
#endif
|
||||
#ifdef HAS_RAWTOYJROW_LSX
|
||||
#endif
|
||||
#ifdef HAS_RAWTOYJROW_LASX
|
||||
#endif
|
||||
#ifdef HAS_RGB565TOYROW_NEON
|
||||
ANY11(RGB565ToYRow_Any_NEON, RGB565ToYRow_NEON, 0, 2, 1, 15)
|
||||
#endif
|
||||
@ -1287,9 +1079,6 @@ ANY11(UYVYToYRow_Any_LASX, UYVYToYRow_LASX, 1, 4, 1, 31)
|
||||
#ifdef HAS_AYUVTOYROW_NEON
|
||||
ANY11(AYUVToYRow_Any_NEON, AYUVToYRow_NEON, 0, 4, 1, 15)
|
||||
#endif
|
||||
#ifdef HAS_SWAPUVROW_SSSE3
|
||||
ANY11(SwapUVRow_Any_SSSE3, SwapUVRow_SSSE3, 0, 2, 2, 15)
|
||||
#endif
|
||||
#ifdef HAS_SWAPUVROW_AVX2
|
||||
ANY11(SwapUVRow_Any_AVX2, SwapUVRow_AVX2, 0, 2, 2, 31)
|
||||
#endif
|
||||
@ -1344,12 +1133,6 @@ ANY11(ARGB4444ToARGBRow_Any_LSX, ARGB4444ToARGBRow_LSX, 0, 2, 4, 15)
|
||||
#ifdef HAS_ARGB4444TOARGBROW_LASX
|
||||
ANY11(ARGB4444ToARGBRow_Any_LASX, ARGB4444ToARGBRow_LASX, 0, 2, 4, 31)
|
||||
#endif
|
||||
#ifdef HAS_ARGBATTENUATEROW_SSSE3
|
||||
ANY11(ARGBAttenuateRow_Any_SSSE3, ARGBAttenuateRow_SSSE3, 0, 4, 4, 3)
|
||||
#endif
|
||||
#ifdef HAS_ARGBUNATTENUATEROW_SSE2
|
||||
ANY11(ARGBUnattenuateRow_Any_SSE2, ARGBUnattenuateRow_SSE2, 0, 4, 4, 3)
|
||||
#endif
|
||||
#ifdef HAS_ARGBATTENUATEROW_AVX2
|
||||
ANY11(ARGBAttenuateRow_Any_AVX2, ARGBAttenuateRow_AVX2, 0, 4, 4, 7)
|
||||
#endif
|
||||
@ -1365,9 +1148,6 @@ ANY11(ARGBAttenuateRow_Any_LSX, ARGBAttenuateRow_LSX, 0, 4, 4, 7)
|
||||
#ifdef HAS_ARGBATTENUATEROW_LASX
|
||||
ANY11(ARGBAttenuateRow_Any_LASX, ARGBAttenuateRow_LASX, 0, 4, 4, 15)
|
||||
#endif
|
||||
#ifdef HAS_ARGBEXTRACTALPHAROW_SSE2
|
||||
ANY11(ARGBExtractAlphaRow_Any_SSE2, ARGBExtractAlphaRow_SSE2, 0, 4, 1, 7)
|
||||
#endif
|
||||
#ifdef HAS_ARGBEXTRACTALPHAROW_AVX2
|
||||
ANY11(ARGBExtractAlphaRow_Any_AVX2, ARGBExtractAlphaRow_AVX2, 0, 4, 1, 31)
|
||||
#endif
|
||||
@ -1401,15 +1181,9 @@ ANY11(ARGBExtractAlphaRow_Any_LSX, ARGBExtractAlphaRow_LSX, 0, 4, 1, 15)
|
||||
#ifdef HAS_ARGBCOPYALPHAROW_AVX2
|
||||
ANY11B(ARGBCopyAlphaRow_Any_AVX2, ARGBCopyAlphaRow_AVX2, 0, 4, 4, 15)
|
||||
#endif
|
||||
#ifdef HAS_ARGBCOPYALPHAROW_SSE2
|
||||
ANY11B(ARGBCopyAlphaRow_Any_SSE2, ARGBCopyAlphaRow_SSE2, 0, 4, 4, 7)
|
||||
#endif
|
||||
#ifdef HAS_ARGBCOPYYTOALPHAROW_AVX2
|
||||
ANY11B(ARGBCopyYToAlphaRow_Any_AVX2, ARGBCopyYToAlphaRow_AVX2, 0, 1, 4, 15)
|
||||
#endif
|
||||
#ifdef HAS_ARGBCOPYYTOALPHAROW_SSE2
|
||||
ANY11B(ARGBCopyYToAlphaRow_Any_SSE2, ARGBCopyYToAlphaRow_SSE2, 0, 1, 4, 7)
|
||||
#endif
|
||||
#undef ANY11B
|
||||
|
||||
// Any 1 to 1 with parameter.
|
||||
@ -1429,8 +1203,7 @@ ANY11B(ARGBCopyYToAlphaRow_Any_SSE2, ARGBCopyYToAlphaRow_SSE2, 0, 1, 4, 7)
|
||||
memcpy(dst_ptr + np * BPP, vout, r * BPP); \
|
||||
}
|
||||
|
||||
#if defined(HAS_I400TOARGBROW_SSE2)
|
||||
ANY11P(I400ToARGBRow_Any_SSE2,
|
||||
#if 0
|
||||
I400ToARGBRow_SSE2,
|
||||
const struct YuvConstants*,
|
||||
1,
|
||||
@ -1462,8 +1235,7 @@ ANY11P(I400ToARGBRow_Any_LSX,
|
||||
15)
|
||||
#endif
|
||||
|
||||
#if defined(HAS_ARGBTORGB565DITHERROW_SSE2)
|
||||
ANY11P(ARGBToRGB565DitherRow_Any_SSE2,
|
||||
#if 0
|
||||
ARGBToRGB565DitherRow_SSE2,
|
||||
const uint32_t,
|
||||
4,
|
||||
@ -1502,9 +1274,6 @@ ANY11P(ARGBToRGB565DitherRow_Any_LASX,
|
||||
2,
|
||||
15)
|
||||
#endif
|
||||
#ifdef HAS_ARGBSHUFFLEROW_SSSE3
|
||||
ANY11P(ARGBShuffleRow_Any_SSSE3, ARGBShuffleRow_SSSE3, const uint8_t*, 4, 4, 7)
|
||||
#endif
|
||||
#ifdef HAS_ARGBSHUFFLEROW_AVX2
|
||||
ANY11P(ARGBShuffleRow_Any_AVX2, ARGBShuffleRow_AVX2, const uint8_t*, 4, 4, 15)
|
||||
#endif
|
||||
@ -1537,21 +1306,9 @@ ANY11P(ARGBShuffleRow_Any_LASX, ARGBShuffleRow_LASX, const uint8_t*, 4, 4, 15)
|
||||
memcpy((uint8_t*)(dst_ptr) + np * BPP, vout, r * BPP); \
|
||||
}
|
||||
|
||||
#ifdef HAS_ARGBTOAR64ROW_SSSE3
|
||||
ANY11T(ARGBToAR64Row_Any_SSSE3, ARGBToAR64Row_SSSE3, 4, 8, uint8_t, uint16_t, 3)
|
||||
#endif
|
||||
|
||||
#ifdef HAS_ARGBTOAB64ROW_SSSE3
|
||||
ANY11T(ARGBToAB64Row_Any_SSSE3, ARGBToAB64Row_SSSE3, 4, 8, uint8_t, uint16_t, 3)
|
||||
#endif
|
||||
|
||||
#ifdef HAS_AR64TOARGBROW_SSSE3
|
||||
ANY11T(AR64ToARGBRow_Any_SSSE3, AR64ToARGBRow_SSSE3, 8, 4, uint16_t, uint8_t, 3)
|
||||
#endif
|
||||
|
||||
#ifdef HAS_ARGBTOAR64ROW_SSSE3
|
||||
ANY11T(AB64ToARGBRow_Any_SSSE3, AB64ToARGBRow_SSSE3, 8, 4, uint16_t, uint8_t, 3)
|
||||
#endif
|
||||
|
||||
#ifdef HAS_ARGBTOAR64ROW_AVX2
|
||||
ANY11T(ARGBToAR64Row_Any_AVX2, ARGBToAR64Row_AVX2, 4, 8, uint8_t, uint16_t, 7)
|
||||
@ -1604,8 +1361,7 @@ ANY11T(AB64ToARGBRow_Any_NEON, AB64ToARGBRow_NEON, 8, 4, uint16_t, uint8_t, 7)
|
||||
memcpy(dst_ptr + np, vout, r * BPP); \
|
||||
}
|
||||
|
||||
#ifdef HAS_CONVERT16TO8ROW_SSSE3
|
||||
ANY11C(Convert16To8Row_Any_SSSE3,
|
||||
#if 0
|
||||
Convert16To8Row_SSSE3,
|
||||
2,
|
||||
1,
|
||||
@ -1640,8 +1396,7 @@ ANY11C(Convert16To8Row_Any_NEON,
|
||||
uint8_t,
|
||||
15)
|
||||
#endif
|
||||
#ifdef HAS_CONVERT8TO16ROW_SSE2
|
||||
ANY11C(Convert8To16Row_Any_SSE2,
|
||||
#if 0
|
||||
Convert8To16Row_SSE2,
|
||||
1,
|
||||
2,
|
||||
@ -1748,9 +1503,6 @@ ANY11SB(Convert8To8Row_Any_AVX2,
|
||||
memcpy(dst_ptr + np, vout, r * BPP); \
|
||||
}
|
||||
|
||||
#ifdef HAS_HALFFLOATROW_SSE2
|
||||
ANY11P16(HalfFloatRow_Any_SSE2, HalfFloatRow_SSE2, uint16_t, uint16_t, 2, 2, 7)
|
||||
#endif
|
||||
#ifdef HAS_HALFFLOATROW_AVX2
|
||||
ANY11P16(HalfFloatRow_Any_AVX2, HalfFloatRow_AVX2, uint16_t, uint16_t, 2, 2, 15)
|
||||
#endif
|
||||
@ -1793,10 +1545,6 @@ ANY11P16(HalfFloatRow_Any_LSX, HalfFloatRow_LSX, uint16_t, uint16_t, 2, 2, 31)
|
||||
memcpy(dst_ptr + np * BPP, vout, r * BPP); \
|
||||
}
|
||||
|
||||
#if defined(HAS_YUY2TOARGBROW_SSSE3)
|
||||
ANY11C(YUY2ToARGBRow_Any_SSSE3, YUY2ToARGBRow_SSSE3, 1, 4, 4, 15)
|
||||
ANY11C(UYVYToARGBRow_Any_SSSE3, UYVYToARGBRow_SSSE3, 1, 4, 4, 15)
|
||||
#endif
|
||||
#if defined(HAS_YUY2TOARGBROW_AVX2)
|
||||
ANY11C(YUY2ToARGBRow_Any_AVX2, YUY2ToARGBRow_AVX2, 1, 4, 4, 31)
|
||||
ANY11C(UYVYToARGBRow_Any_AVX2, UYVYToARGBRow_AVX2, 1, 4, 4, 31)
|
||||
@ -1836,8 +1584,7 @@ ANY11C(UYVYToARGBRow_Any_LSX, UYVYToARGBRow_LSX, 1, 4, 4, 7)
|
||||
#ifdef HAS_INTERPOLATEROW_AVX2
|
||||
ANY11I(InterpolateRow_Any_AVX2, InterpolateRow_AVX2, uint8_t, uint8_t, 1, 1, 31)
|
||||
#endif
|
||||
#ifdef HAS_INTERPOLATEROW_SSSE3
|
||||
ANY11I(InterpolateRow_Any_SSSE3,
|
||||
#if 0
|
||||
InterpolateRow_SSSE3,
|
||||
uint8_t,
|
||||
uint8_t,
|
||||
@ -1926,9 +1673,6 @@ ANY11IS(InterpolateRow_16To8_Any_AVX2,
|
||||
#ifdef HAS_MIRRORROW_AVX2
|
||||
ANY11M(MirrorRow_Any_AVX2, MirrorRow_AVX2, 1, 31)
|
||||
#endif
|
||||
#ifdef HAS_MIRRORROW_SSSE3
|
||||
ANY11M(MirrorRow_Any_SSSE3, MirrorRow_SSSE3, 1, 15)
|
||||
#endif
|
||||
#ifdef HAS_MIRRORROW_NEON
|
||||
ANY11M(MirrorRow_Any_NEON, MirrorRow_NEON, 1, 31)
|
||||
#endif
|
||||
@ -1941,9 +1685,6 @@ ANY11M(MirrorRow_Any_LASX, MirrorRow_LASX, 1, 63)
|
||||
#ifdef HAS_MIRRORUVROW_AVX2
|
||||
ANY11M(MirrorUVRow_Any_AVX2, MirrorUVRow_AVX2, 2, 15)
|
||||
#endif
|
||||
#ifdef HAS_MIRRORUVROW_SSSE3
|
||||
ANY11M(MirrorUVRow_Any_SSSE3, MirrorUVRow_SSSE3, 2, 7)
|
||||
#endif
|
||||
#ifdef HAS_MIRRORUVROW_NEON
|
||||
ANY11M(MirrorUVRow_Any_NEON, MirrorUVRow_NEON, 2, 31)
|
||||
#endif
|
||||
@ -1956,9 +1697,6 @@ ANY11M(MirrorUVRow_Any_LASX, MirrorUVRow_LASX, 2, 15)
|
||||
#ifdef HAS_ARGBMIRRORROW_AVX2
|
||||
ANY11M(ARGBMirrorRow_Any_AVX2, ARGBMirrorRow_AVX2, 4, 7)
|
||||
#endif
|
||||
#ifdef HAS_ARGBMIRRORROW_SSE2
|
||||
ANY11M(ARGBMirrorRow_Any_SSE2, ARGBMirrorRow_SSE2, 4, 3)
|
||||
#endif
|
||||
#ifdef HAS_ARGBMIRRORROW_NEON
|
||||
ANY11M(ARGBMirrorRow_Any_NEON, ARGBMirrorRow_NEON, 4, 7)
|
||||
#endif
|
||||
@ -1968,9 +1706,6 @@ ANY11M(ARGBMirrorRow_Any_LSX, ARGBMirrorRow_LSX, 4, 7)
|
||||
#ifdef HAS_ARGBMIRRORROW_LASX
|
||||
ANY11M(ARGBMirrorRow_Any_LASX, ARGBMirrorRow_LASX, 4, 15)
|
||||
#endif
|
||||
#ifdef HAS_RGB24MIRRORROW_SSSE3
|
||||
ANY11M(RGB24MirrorRow_Any_SSSE3, RGB24MirrorRow_SSSE3, 3, 15)
|
||||
#endif
|
||||
#ifdef HAS_RGB24MIRRORROW_NEON
|
||||
ANY11M(RGB24MirrorRow_Any_NEON, RGB24MirrorRow_NEON, 3, 15)
|
||||
#endif
|
||||
@ -2026,9 +1761,6 @@ ANY1(ARGBSetRow_Any_LSX, ARGBSetRow_LSX, uint32_t, 4, 3)
|
||||
memcpy(dst_v + (np >> DUVSHIFT), vout + 256, SS(r, DUVSHIFT)); \
|
||||
}
|
||||
|
||||
#ifdef HAS_SPLITUVROW_SSE2
|
||||
ANY12(SplitUVRow_Any_SSE2, SplitUVRow_SSE2, 0, 2, 0, 15)
|
||||
#endif
|
||||
#ifdef HAS_SPLITUVROW_AVX2
|
||||
ANY12(SplitUVRow_Any_AVX2, SplitUVRow_AVX2, 0, 2, 0, 31)
|
||||
#endif
|
||||
@ -2038,12 +1770,6 @@ ANY12(SplitUVRow_Any_NEON, SplitUVRow_NEON, 0, 2, 0, 15)
|
||||
#ifdef HAS_SPLITUVROW_LSX
|
||||
ANY12(SplitUVRow_Any_LSX, SplitUVRow_LSX, 0, 2, 0, 31)
|
||||
#endif
|
||||
#ifdef HAS_ARGBTOUV444ROW_SSSE3
|
||||
ANY12(ARGBToUV444Row_Any_SSSE3, ARGBToUV444Row_SSSE3, 0, 4, 0, 15)
|
||||
#endif
|
||||
#ifdef HAS_ARGBTOUVJ444ROW_SSSE3
|
||||
ANY12(ARGBToUVJ444Row_Any_SSSE3, ARGBToUVJ444Row_SSSE3, 0, 4, 0, 15)
|
||||
#endif
|
||||
#ifdef HAS_ARGBTOUV444ROW_AVX2
|
||||
ANY12(ARGBToUV444Row_Any_AVX2, ARGBToUV444Row_AVX2, 0, 4, 0, 31)
|
||||
#endif
|
||||
@ -2060,10 +1786,6 @@ ANY12(ARGBToUVJ444Row_Any_AVX512BW, ARGBToUVJ444Row_AVX512BW, 0, 4, 0, 63)
|
||||
ANY12(YUY2ToUV422Row_Any_AVX2, YUY2ToUV422Row_AVX2, 1, 4, 1, 31)
|
||||
ANY12(UYVYToUV422Row_Any_AVX2, UYVYToUV422Row_AVX2, 1, 4, 1, 31)
|
||||
#endif
|
||||
#ifdef HAS_YUY2TOUV422ROW_SSE2
|
||||
ANY12(YUY2ToUV422Row_Any_SSE2, YUY2ToUV422Row_SSE2, 1, 4, 1, 15)
|
||||
ANY12(UYVYToUV422Row_Any_SSE2, UYVYToUV422Row_SSE2, 1, 4, 1, 15)
|
||||
#endif
|
||||
#ifdef HAS_YUY2TOUV422ROW_NEON
|
||||
ANY12(ARGBToUV444Row_Any_NEON, ARGBToUV444Row_NEON, 0, 4, 0, 7)
|
||||
ANY12(ARGBToUVJ444Row_Any_NEON, ARGBToUVJ444Row_NEON, 0, 4, 0, 7)
|
||||
@ -2134,24 +1856,12 @@ ANY12PT(SplitUVRow_16_Any_NEON, SplitUVRow_16_NEON, uint16_t, 2, 7)
|
||||
memcpy(dst_b + np, vout + 32, r); \
|
||||
}
|
||||
|
||||
#ifdef HAS_SPLITRGBROW_SSSE3
|
||||
ANY13(SplitRGBRow_Any_SSSE3, SplitRGBRow_SSSE3, 3, 15)
|
||||
#endif
|
||||
#ifdef HAS_SPLITRGBROW_SSE41
|
||||
ANY13(SplitRGBRow_Any_SSE41, SplitRGBRow_SSE41, 3, 15)
|
||||
#endif
|
||||
#ifdef HAS_SPLITRGBROW_AVX2
|
||||
ANY13(SplitRGBRow_Any_AVX2, SplitRGBRow_AVX2, 3, 31)
|
||||
#endif
|
||||
#ifdef HAS_SPLITRGBROW_NEON
|
||||
ANY13(SplitRGBRow_Any_NEON, SplitRGBRow_NEON, 3, 15)
|
||||
#endif
|
||||
#ifdef HAS_SPLITXRGBROW_SSE2
|
||||
ANY13(SplitXRGBRow_Any_SSE2, SplitXRGBRow_SSE2, 4, 7)
|
||||
#endif
|
||||
#ifdef HAS_SPLITXRGBROW_SSSE3
|
||||
ANY13(SplitXRGBRow_Any_SSSE3, SplitXRGBRow_SSSE3, 4, 7)
|
||||
#endif
|
||||
#ifdef HAS_SPLITXRGBROW_AVX2
|
||||
ANY13(SplitXRGBRow_Any_AVX2, SplitXRGBRow_AVX2, 4, 15)
|
||||
#endif
|
||||
@ -2180,12 +1890,6 @@ ANY13(SplitXRGBRow_Any_NEON, SplitXRGBRow_NEON, 4, 15)
|
||||
memcpy(dst_a + np, vout + 48, r); \
|
||||
}
|
||||
|
||||
#ifdef HAS_SPLITARGBROW_SSE2
|
||||
ANY14(SplitARGBRow_Any_SSE2, SplitARGBRow_SSE2, 4, 7)
|
||||
#endif
|
||||
#ifdef HAS_SPLITARGBROW_SSSE3
|
||||
ANY14(SplitARGBRow_Any_SSSE3, SplitARGBRow_SSSE3, 4, 7)
|
||||
#endif
|
||||
#ifdef HAS_SPLITARGBROW_AVX2
|
||||
ANY14(SplitARGBRow_Any_AVX2, SplitARGBRow_AVX2, 4, 15)
|
||||
#endif
|
||||
@ -2276,18 +1980,12 @@ ANY12MS(ARGBToUVMatrixRow_Any_AVX2, ARGBToUVMatrixRow_AVX2, 0, 4, 15)
|
||||
#ifdef HAS_ARGBTOUVMATRIXROW_AVX512BW
|
||||
ANY12MS(ARGBToUVMatrixRow_Any_AVX512BW, ARGBToUVMatrixRow_AVX512BW, 0, 4, 63)
|
||||
#endif
|
||||
#ifdef HAS_ARGBTOUVMATRIXROW_SSSE3
|
||||
ANY12MS(ARGBToUVMatrixRow_Any_SSSE3, ARGBToUVMatrixRow_SSSE3, 0, 4, 7)
|
||||
#endif
|
||||
#ifdef HAS_ARGBTOUV444MATRIXROW_AVX2
|
||||
ANY12M(ARGBToUV444MatrixRow_Any_AVX2, ARGBToUV444MatrixRow_AVX2, 4, 31)
|
||||
#endif
|
||||
#ifdef HAS_ARGBTOUV444MATRIXROW_AVX512BW
|
||||
ANY12M(ARGBToUV444MatrixRow_Any_AVX512BW, ARGBToUV444MatrixRow_AVX512BW, 4, 63)
|
||||
#endif
|
||||
#ifdef HAS_ARGBTOUV444MATRIXROW_SSSE3
|
||||
ANY12M(ARGBToUV444MatrixRow_Any_SSSE3, ARGBToUV444MatrixRow_SSSE3, 4, 15)
|
||||
#endif
|
||||
#ifdef HAS_ARGBTOUV444MATRIXROW_NEON
|
||||
ANY12M(ARGBToUV444MatrixRow_Any_NEON, ARGBToUV444MatrixRow_NEON, 4, 7)
|
||||
#endif
|
||||
@ -2308,9 +2006,6 @@ ANY12M(ARGBToUV444MatrixRow_Any_NEON, ARGBToUV444MatrixRow_NEON, 4, 7)
|
||||
memcpy(dst_ptr + (ptrdiff_t)n, vout, (ptrdiff_t)r); \
|
||||
}
|
||||
|
||||
#ifdef HAS_ARGBTOYROW_SSSE3
|
||||
ANY11MC(ARGBToYMatrixRow_Any_SSSE3, ARGBToYMatrixRow_SSSE3, 4, 15)
|
||||
#endif
|
||||
#ifdef HAS_ARGBTOYROW_AVX2
|
||||
ANY11MC(ARGBToYMatrixRow_Any_AVX2, ARGBToYMatrixRow_AVX2, 4, 31)
|
||||
#endif
|
||||
@ -2358,26 +2053,10 @@ ANY12S(ABGRToUVJRow_Any_AVX2, ABGRToUVJRow_AVX2, 0, 4, 31)
|
||||
#ifdef HAS_ABGRTOUVJROW_AVX512BW
|
||||
ANY12S(ABGRToUVJRow_Any_AVX512BW, ABGRToUVJRow_AVX512BW, 0, 4, 63)
|
||||
#endif
|
||||
#ifdef HAS_ARGBTOUVJROW_SSSE3
|
||||
ANY12S(ARGBToUVJRow_Any_SSSE3, ARGBToUVJRow_SSSE3, 0, 4, 15)
|
||||
#endif
|
||||
#ifdef HAS_ABGRTOUVJROW_SSSE3
|
||||
ANY12S(ABGRToUVJRow_Any_SSSE3, ABGRToUVJRow_SSSE3, 0, 4, 15)
|
||||
#endif
|
||||
#ifdef HAS_ARGBTOUVROW_SSSE3
|
||||
ANY12S(ARGBToUVRow_Any_SSSE3, ARGBToUVRow_SSSE3, 0, 4, 15)
|
||||
ANY12S(BGRAToUVRow_Any_SSSE3, BGRAToUVRow_SSSE3, 0, 4, 15)
|
||||
ANY12S(ABGRToUVRow_Any_SSSE3, ABGRToUVRow_SSSE3, 0, 4, 15)
|
||||
ANY12S(RGBAToUVRow_Any_SSSE3, RGBAToUVRow_SSSE3, 0, 4, 15)
|
||||
#endif
|
||||
#ifdef HAS_YUY2TOUVROW_AVX2
|
||||
ANY12S(YUY2ToUVRow_Any_AVX2, YUY2ToUVRow_AVX2, 1, 4, 31)
|
||||
ANY12S(UYVYToUVRow_Any_AVX2, UYVYToUVRow_AVX2, 1, 4, 31)
|
||||
#endif
|
||||
#ifdef HAS_YUY2TOUVROW_SSE2
|
||||
ANY12S(YUY2ToUVRow_Any_SSE2, YUY2ToUVRow_SSE2, 1, 4, 15)
|
||||
ANY12S(UYVYToUVRow_Any_SSE2, UYVYToUVRow_SSE2, 1, 4, 15)
|
||||
#endif
|
||||
#ifdef HAS_ARGBTOUVROW_NEON
|
||||
ANY12S(ARGBToUVRow_Any_NEON, ARGBToUVRow_NEON, 0, 4, 15)
|
||||
#endif
|
||||
@ -2594,15 +2273,9 @@ ANY11S(AYUVToVURow_Any_SVE2, AYUVToVURow_SVE2, 0, 4, 1)
|
||||
#ifdef HAS_DETILEROW_NEON
|
||||
ANYDETILE(DetileRow_Any_NEON, DetileRow_NEON, uint8_t, 1, 15)
|
||||
#endif
|
||||
#ifdef HAS_DETILEROW_SSE2
|
||||
ANYDETILE(DetileRow_Any_SSE2, DetileRow_SSE2, uint8_t, 1, 15)
|
||||
#endif
|
||||
#ifdef HAS_DETILEROW_16_NEON
|
||||
ANYDETILE(DetileRow_16_Any_NEON, DetileRow_16_NEON, uint16_t, 2, 15)
|
||||
#endif
|
||||
#ifdef HAS_DETILEROW_16_SSE2
|
||||
ANYDETILE(DetileRow_16_Any_SSE2, DetileRow_16_SSE2, uint16_t, 2, 15)
|
||||
#endif
|
||||
#ifdef HAS_DETILEROW_16_AVX
|
||||
ANYDETILE(DetileRow_16_Any_AVX, DetileRow_16_AVX, uint16_t, 2, 15)
|
||||
#endif
|
||||
@ -2629,9 +2302,6 @@ ANYDETILE(DetileRow_16_Any_AVX, DetileRow_16_AVX, uint16_t, 2, 15)
|
||||
#ifdef HAS_DETILESPLITUVROW_NEON
|
||||
ANYDETILESPLITUV(DetileSplitUVRow_Any_NEON, DetileSplitUVRow_NEON, 15)
|
||||
#endif
|
||||
#ifdef HAS_DETILESPLITUVROW_SSSE3
|
||||
ANYDETILESPLITUV(DetileSplitUVRow_Any_SSSE3, DetileSplitUVRow_SSSE3, 15)
|
||||
#endif
|
||||
|
||||
#define ANYDETILEMERGE(NAMEANY, ANY_SIMD, MASK) \
|
||||
void NAMEANY(const uint8_t* src_y, ptrdiff_t src_y_tile_stride, \
|
||||
@ -2657,9 +2327,6 @@ ANYDETILESPLITUV(DetileSplitUVRow_Any_SSSE3, DetileSplitUVRow_SSSE3, 15)
|
||||
ANYDETILEMERGE(DetileToYUY2_Any_NEON, DetileToYUY2_NEON, 15)
|
||||
#endif
|
||||
|
||||
#ifdef HAS_DETILETOYUY2_SSE2
|
||||
ANYDETILEMERGE(DetileToYUY2_Any_SSE2, DetileToYUY2_SSE2, 15)
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
|
||||
@ -4046,7 +4046,7 @@ void ARGBCopyYToAlphaRow_C(const uint8_t* src, uint8_t* dst, int width) {
|
||||
#define MAXTWIDTH 2048
|
||||
|
||||
#if !(defined(_MSC_VER) && !defined(__clang__) && defined(_M_IX86)) && \
|
||||
defined(HAS_I422TORGB565ROW_SSSE3) && !defined(LIBYUV_ENABLE_ROWWIN)
|
||||
0 && !defined(LIBYUV_ENABLE_ROWWIN)
|
||||
// row_win.cc has asm version, but GCC uses 2 step wrapper.
|
||||
void I422ToRGB565Row_SSSE3(const uint8_t* src_y,
|
||||
const uint8_t* src_u,
|
||||
@ -4057,8 +4057,6 @@ void I422ToRGB565Row_SSSE3(const uint8_t* src_y,
|
||||
SIMD_ALIGNED(uint8_t row[MAXTWIDTH * 4]);
|
||||
while (width > 0) {
|
||||
int twidth = width > MAXTWIDTH ? MAXTWIDTH : width;
|
||||
I422ToARGBRow_SSSE3(src_y, src_u, src_v, row, yuvconstants, twidth);
|
||||
ARGBToRGB565Row_SSE2(row, dst_rgb565, twidth);
|
||||
src_y += twidth;
|
||||
src_u += twidth / 2;
|
||||
src_v += twidth / 2;
|
||||
@ -4068,7 +4066,7 @@ void I422ToRGB565Row_SSSE3(const uint8_t* src_y,
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(HAS_I422TOARGB1555ROW_SSSE3)
|
||||
#if 0
|
||||
void I422ToARGB1555Row_SSSE3(const uint8_t* src_y,
|
||||
const uint8_t* src_u,
|
||||
const uint8_t* src_v,
|
||||
@ -4079,8 +4077,6 @@ void I422ToARGB1555Row_SSSE3(const uint8_t* src_y,
|
||||
SIMD_ALIGNED(uint8_t row[MAXTWIDTH * 4]);
|
||||
while (width > 0) {
|
||||
int twidth = width > MAXTWIDTH ? MAXTWIDTH : width;
|
||||
I422ToARGBRow_SSSE3(src_y, src_u, src_v, row, yuvconstants, twidth);
|
||||
ARGBToARGB1555Row_SSE2(row, dst_argb1555, twidth);
|
||||
src_y += twidth;
|
||||
src_u += twidth / 2;
|
||||
src_v += twidth / 2;
|
||||
@ -4090,7 +4086,7 @@ void I422ToARGB1555Row_SSSE3(const uint8_t* src_y,
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(HAS_I422TOARGB4444ROW_SSSE3)
|
||||
#if 0
|
||||
void I422ToARGB4444Row_SSSE3(const uint8_t* src_y,
|
||||
const uint8_t* src_u,
|
||||
const uint8_t* src_v,
|
||||
@ -4101,8 +4097,6 @@ void I422ToARGB4444Row_SSSE3(const uint8_t* src_y,
|
||||
SIMD_ALIGNED(uint8_t row[MAXTWIDTH * 4]);
|
||||
while (width > 0) {
|
||||
int twidth = width > MAXTWIDTH ? MAXTWIDTH : width;
|
||||
I422ToARGBRow_SSSE3(src_y, src_u, src_v, row, yuvconstants, twidth);
|
||||
ARGBToARGB4444Row_SSE2(row, dst_argb4444, twidth);
|
||||
src_y += twidth;
|
||||
src_u += twidth / 2;
|
||||
src_v += twidth / 2;
|
||||
@ -4112,7 +4106,7 @@ void I422ToARGB4444Row_SSSE3(const uint8_t* src_y,
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(HAS_NV12TORGB565ROW_SSSE3)
|
||||
#if 0
|
||||
void NV12ToRGB565Row_SSSE3(const uint8_t* src_y,
|
||||
const uint8_t* src_uv,
|
||||
uint8_t* dst_rgb565,
|
||||
@ -4122,8 +4116,6 @@ void NV12ToRGB565Row_SSSE3(const uint8_t* src_y,
|
||||
SIMD_ALIGNED(uint8_t row[MAXTWIDTH * 4]);
|
||||
while (width > 0) {
|
||||
int twidth = width > MAXTWIDTH ? MAXTWIDTH : width;
|
||||
NV12ToARGBRow_SSSE3(src_y, src_uv, row, yuvconstants, twidth);
|
||||
ARGBToRGB565Row_SSE2(row, dst_rgb565, twidth);
|
||||
src_y += twidth;
|
||||
src_uv += twidth;
|
||||
dst_rgb565 += twidth * 2;
|
||||
@ -4132,7 +4124,7 @@ void NV12ToRGB565Row_SSSE3(const uint8_t* src_y,
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(HAS_NV12TORGB24ROW_SSSE3)
|
||||
#if 0
|
||||
void NV12ToRGB24Row_SSSE3(const uint8_t* src_y,
|
||||
const uint8_t* src_uv,
|
||||
uint8_t* dst_rgb24,
|
||||
@ -4142,8 +4134,6 @@ void NV12ToRGB24Row_SSSE3(const uint8_t* src_y,
|
||||
SIMD_ALIGNED(uint8_t row[MAXTWIDTH * 4]);
|
||||
while (width > 0) {
|
||||
int twidth = width > MAXTWIDTH ? MAXTWIDTH : width;
|
||||
NV12ToARGBRow_SSSE3(src_y, src_uv, row, yuvconstants, twidth);
|
||||
ARGBToRGB24Row_SSSE3(row, dst_rgb24, twidth);
|
||||
src_y += twidth;
|
||||
src_uv += twidth;
|
||||
dst_rgb24 += twidth * 3;
|
||||
@ -4152,7 +4142,7 @@ void NV12ToRGB24Row_SSSE3(const uint8_t* src_y,
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(HAS_NV21TORGB24ROW_SSSE3)
|
||||
#if 0
|
||||
void NV21ToRGB24Row_SSSE3(const uint8_t* src_y,
|
||||
const uint8_t* src_vu,
|
||||
uint8_t* dst_rgb24,
|
||||
@ -4162,8 +4152,6 @@ void NV21ToRGB24Row_SSSE3(const uint8_t* src_y,
|
||||
SIMD_ALIGNED(uint8_t row[MAXTWIDTH * 4]);
|
||||
while (width > 0) {
|
||||
int twidth = width > MAXTWIDTH ? MAXTWIDTH : width;
|
||||
NV21ToARGBRow_SSSE3(src_y, src_vu, row, yuvconstants, twidth);
|
||||
ARGBToRGB24Row_SSSE3(row, dst_rgb24, twidth);
|
||||
src_y += twidth;
|
||||
src_vu += twidth;
|
||||
dst_rgb24 += twidth * 3;
|
||||
@ -4186,7 +4174,6 @@ void NV12ToRGB24Row_AVX2(const uint8_t* src_y,
|
||||
#if defined(HAS_ARGBTORGB24ROW_AVX2)
|
||||
ARGBToRGB24Row_AVX2(row, dst_rgb24, twidth);
|
||||
#else
|
||||
ARGBToRGB24Row_SSSE3(row, dst_rgb24, twidth);
|
||||
#endif
|
||||
src_y += twidth;
|
||||
src_uv += twidth;
|
||||
@ -4210,7 +4197,6 @@ void NV21ToRGB24Row_AVX2(const uint8_t* src_y,
|
||||
#if defined(HAS_ARGBTORGB24ROW_AVX2)
|
||||
ARGBToRGB24Row_AVX2(row, dst_rgb24, twidth);
|
||||
#else
|
||||
ARGBToRGB24Row_SSSE3(row, dst_rgb24, twidth);
|
||||
#endif
|
||||
src_y += twidth;
|
||||
src_vu += twidth;
|
||||
@ -4234,7 +4220,6 @@ void I422ToRGB565Row_AVX2(const uint8_t* src_y,
|
||||
#if defined(HAS_ARGBTORGB565ROW_AVX2)
|
||||
ARGBToRGB565Row_AVX2(row, dst_rgb565, twidth);
|
||||
#else
|
||||
ARGBToRGB565Row_SSE2(row, dst_rgb565, twidth);
|
||||
#endif
|
||||
src_y += twidth;
|
||||
src_u += twidth / 2;
|
||||
@ -4260,7 +4245,6 @@ void I422ToARGB1555Row_AVX2(const uint8_t* src_y,
|
||||
#if defined(HAS_ARGBTOARGB1555ROW_AVX2)
|
||||
ARGBToARGB1555Row_AVX2(row, dst_argb1555, twidth);
|
||||
#else
|
||||
ARGBToARGB1555Row_SSE2(row, dst_argb1555, twidth);
|
||||
#endif
|
||||
src_y += twidth;
|
||||
src_u += twidth / 2;
|
||||
@ -4286,7 +4270,6 @@ void I422ToARGB4444Row_AVX2(const uint8_t* src_y,
|
||||
#if defined(HAS_ARGBTOARGB4444ROW_AVX2)
|
||||
ARGBToARGB4444Row_AVX2(row, dst_argb4444, twidth);
|
||||
#else
|
||||
ARGBToARGB4444Row_SSE2(row, dst_argb4444, twidth);
|
||||
#endif
|
||||
src_y += twidth;
|
||||
src_u += twidth / 2;
|
||||
@ -4312,7 +4295,6 @@ void I422ToRGB24Row_AVX2(const uint8_t* src_y,
|
||||
#if defined(HAS_ARGBTORGB24ROW_AVX2)
|
||||
ARGBToRGB24Row_AVX2(row, dst_rgb24, twidth);
|
||||
#else
|
||||
ARGBToRGB24Row_SSSE3(row, dst_rgb24, twidth);
|
||||
#endif
|
||||
src_y += twidth;
|
||||
src_u += twidth / 2;
|
||||
@ -4338,7 +4320,6 @@ void I444ToRGB24Row_AVX2(const uint8_t* src_y,
|
||||
#if defined(HAS_ARGBTORGB24ROW_AVX2)
|
||||
ARGBToRGB24Row_AVX2(row, dst_rgb24, twidth);
|
||||
#else
|
||||
ARGBToRGB24Row_SSSE3(row, dst_rgb24, twidth);
|
||||
#endif
|
||||
src_y += twidth;
|
||||
src_u += twidth;
|
||||
@ -4363,7 +4344,6 @@ void NV12ToRGB565Row_AVX2(const uint8_t* src_y,
|
||||
#if defined(HAS_ARGBTORGB565ROW_AVX2)
|
||||
ARGBToRGB565Row_AVX2(row, dst_rgb565, twidth);
|
||||
#else
|
||||
ARGBToRGB565Row_SSE2(row, dst_rgb565, twidth);
|
||||
#endif
|
||||
src_y += twidth;
|
||||
src_uv += twidth;
|
||||
@ -4383,12 +4363,12 @@ void NV12ToRGB565Row_AVX2(const uint8_t* src_y,
|
||||
}
|
||||
#endif // HAS_RAWTOYJROW_AVX2
|
||||
|
||||
#ifdef HAS_RGB24TOYJROW_SSSE3
|
||||
#if 0
|
||||
// Convert 16 RGB24 pixels (64 bytes) to 16 YJ values.
|
||||
}
|
||||
#endif // HAS_RGB24TOYJROW_SSSE3
|
||||
|
||||
#ifdef HAS_RAWTOYJROW_SSSE3
|
||||
#if 0
|
||||
// Convert 16 RAW pixels (64 bytes) to 16 YJ values.
|
||||
}
|
||||
#endif // HAS_RAWTOYJROW_SSSE3
|
||||
|
||||
4342
source/row_gcc.cc
4342
source/row_gcc.cc
File diff suppressed because it is too large
Load Diff
@ -1419,17 +1419,9 @@ static void RGBToYMatrixRow_RVV(const uint8_t* src_rgb,
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAS_RGB24TOYJROW_RVV
|
||||
#endif
|
||||
|
||||
#ifdef HAS_RAWTOYJROW_RVV
|
||||
#endif
|
||||
|
||||
#ifdef HAS_RGB24TOYROW_RVV
|
||||
#endif
|
||||
|
||||
#ifdef HAS_RAWTOYROW_RVV
|
||||
#endif
|
||||
|
||||
// Blend src_argb over src_argb1 and store to dst_argb.
|
||||
// dst_argb may be src_argb or src_argb1.
|
||||
|
||||
@ -102,21 +102,9 @@ extern "C" {
|
||||
_mm_storeu_si128((__m128i*)(dst_argb + 16), xmm1); \
|
||||
dst_argb += 32;
|
||||
|
||||
#if defined(HAS_I422TOARGBROW_SSSE3)
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(HAS_I422ALPHATOARGBROW_SSSE3)
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(HAS_I444TOARGBROW_SSSE3)
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(HAS_I444ALPHATOARGBROW_SSSE3)
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(HAS_ARGBTOYROW_AVX2)
|
||||
|
||||
|
||||
119
source/scale.cc
119
source/scale.cc
@ -81,7 +81,7 @@ static void ScalePlaneDown2(int src_width,
|
||||
: ScaleRowDown2Box_SME;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SCALEROWDOWN2_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ScaleRowDown2 =
|
||||
filtering == kFilterNone
|
||||
@ -185,7 +185,7 @@ static void ScalePlaneDown2_16(int src_width,
|
||||
: ScaleRowDown2Box_16_SME;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SCALEROWDOWN2_16_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2) && IS_ALIGNED(dst_width, 16)) {
|
||||
ScaleRowDown2 =
|
||||
filtering == kFilterNone
|
||||
@ -284,7 +284,7 @@ static void ScalePlaneDown4(int src_width,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SCALEROWDOWN4_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ScaleRowDown4 =
|
||||
filtering ? ScaleRowDown4Box_Any_SSSE3 : ScaleRowDown4_Any_SSSE3;
|
||||
@ -353,7 +353,7 @@ static void ScalePlaneDown4_16(int src_width,
|
||||
filtering ? ScaleRowDown4Box_16_NEON : ScaleRowDown4_16_NEON;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SCALEROWDOWN4_16_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2) && IS_ALIGNED(dst_width, 8)) {
|
||||
ScaleRowDown4 =
|
||||
filtering ? ScaleRowDown4Box_16_SSE2 : ScaleRowDown4_16_SSE2;
|
||||
@ -442,23 +442,15 @@ static void ScalePlaneDown34(int src_width,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SCALEROWDOWN34_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
if (dst_width % 24 == 0) {
|
||||
if (!filtering) {
|
||||
ScaleRowDown34_0 = ScaleRowDown34_SSSE3;
|
||||
ScaleRowDown34_1 = ScaleRowDown34_SSSE3;
|
||||
} else {
|
||||
ScaleRowDown34_0 = ScaleRowDown34_0_Box_SSSE3;
|
||||
ScaleRowDown34_1 = ScaleRowDown34_1_Box_SSSE3;
|
||||
}
|
||||
} else {
|
||||
if (!filtering) {
|
||||
ScaleRowDown34_0 = ScaleRowDown34_Any_SSSE3;
|
||||
ScaleRowDown34_1 = ScaleRowDown34_Any_SSSE3;
|
||||
} else {
|
||||
ScaleRowDown34_0 = ScaleRowDown34_0_Box_Any_SSSE3;
|
||||
ScaleRowDown34_1 = ScaleRowDown34_1_Box_Any_SSSE3;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -534,14 +526,10 @@ static void ScalePlaneDown34_16(int src_width,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SCALEROWDOWN34_16_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3) && (dst_width % 24 == 0)) {
|
||||
if (!filtering) {
|
||||
ScaleRowDown34_0 = ScaleRowDown34_16_SSSE3;
|
||||
ScaleRowDown34_1 = ScaleRowDown34_16_SSSE3;
|
||||
} else {
|
||||
ScaleRowDown34_0 = ScaleRowDown34_0_Box_16_SSSE3;
|
||||
ScaleRowDown34_1 = ScaleRowDown34_1_Box_16_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -630,22 +618,14 @@ static void ScalePlaneDown38(int src_width,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SCALEROWDOWN38_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
if (!filtering) {
|
||||
ScaleRowDown38_3 = ScaleRowDown38_Any_SSSE3;
|
||||
ScaleRowDown38_2 = ScaleRowDown38_Any_SSSE3;
|
||||
} else {
|
||||
ScaleRowDown38_3 = ScaleRowDown38_3_Box_Any_SSSE3;
|
||||
ScaleRowDown38_2 = ScaleRowDown38_2_Box_Any_SSSE3;
|
||||
}
|
||||
if (dst_width % 12 == 0 && !filtering) {
|
||||
ScaleRowDown38_3 = ScaleRowDown38_SSSE3;
|
||||
ScaleRowDown38_2 = ScaleRowDown38_SSSE3;
|
||||
}
|
||||
if (dst_width % 6 == 0 && filtering) {
|
||||
ScaleRowDown38_3 = ScaleRowDown38_3_Box_SSSE3;
|
||||
ScaleRowDown38_2 = ScaleRowDown38_2_Box_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -740,14 +720,10 @@ static void ScalePlaneDown38_16(int src_width,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SCALEROWDOWN38_16_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3) && (dst_width % 24 == 0)) {
|
||||
if (!filtering) {
|
||||
ScaleRowDown38_3 = ScaleRowDown38_16_SSSE3;
|
||||
ScaleRowDown38_2 = ScaleRowDown38_16_SSSE3;
|
||||
} else {
|
||||
ScaleRowDown38_3 = ScaleRowDown38_3_Box_16_SSSE3;
|
||||
ScaleRowDown38_2 = ScaleRowDown38_2_Box_16_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -926,11 +902,9 @@ static int ScalePlaneBox(int src_width,
|
||||
: ((dx != 0x10000) ? ScaleAddCols1_C : ScaleAddCols0_C);
|
||||
void (*ScaleAddRow)(const uint8_t* src_ptr, uint16_t* dst_ptr,
|
||||
int src_width) = ScaleAddRow_C;
|
||||
#if defined(HAS_SCALEADDROW_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
ScaleAddRow = ScaleAddRow_Any_SSE2;
|
||||
if (IS_ALIGNED(src_width, 16)) {
|
||||
ScaleAddRow = ScaleAddRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -1015,9 +989,8 @@ static int ScalePlaneBox_16(int src_width,
|
||||
void (*ScaleAddRow)(const uint16_t* src_ptr, uint32_t* dst_ptr,
|
||||
int src_width) = ScaleAddRow_16_C;
|
||||
|
||||
#if defined(HAS_SCALEADDROW_16_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2) && IS_ALIGNED(src_width, 16)) {
|
||||
ScaleAddRow = ScaleAddRow_16_SSE2;
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -1076,11 +1049,9 @@ static int ScalePlaneBilinearDown(int src_width,
|
||||
&dx, &dy);
|
||||
src_width = Abs(src_width);
|
||||
|
||||
#if defined(HAS_INTERPOLATEROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
InterpolateRow = InterpolateRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(src_width, 16)) {
|
||||
InterpolateRow = InterpolateRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -1119,9 +1090,8 @@ static int ScalePlaneBilinearDown(int src_width,
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(HAS_SCALEFILTERCOLS_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3) && src_width < 32768) {
|
||||
ScaleFilterCols = ScaleFilterCols_SSSE3;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SCALEFILTERCOLS_NEON)
|
||||
@ -1196,19 +1166,15 @@ static int ScalePlaneBilinearDown_16(int src_width,
|
||||
&dx, &dy);
|
||||
src_width = Abs(src_width);
|
||||
|
||||
#if defined(HAS_INTERPOLATEROW_16_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
InterpolateRow = InterpolateRow_16_Any_SSE2;
|
||||
if (IS_ALIGNED(src_width, 16)) {
|
||||
InterpolateRow = InterpolateRow_16_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_INTERPOLATEROW_16_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
InterpolateRow = InterpolateRow_16_Any_SSSE3;
|
||||
if (IS_ALIGNED(src_width, 16)) {
|
||||
InterpolateRow = InterpolateRow_16_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -1234,9 +1200,8 @@ static int ScalePlaneBilinearDown_16(int src_width,
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(HAS_SCALEFILTERCOLS_16_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3) && src_width < 32768) {
|
||||
ScaleFilterCols = ScaleFilterCols_16_SSSE3;
|
||||
}
|
||||
#endif
|
||||
if (y > max_y) {
|
||||
@ -1290,11 +1255,9 @@ static int ScalePlaneBilinearUp(int src_width,
|
||||
&dx, &dy);
|
||||
src_width = Abs(src_width);
|
||||
|
||||
#if defined(HAS_INTERPOLATEROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
InterpolateRow = InterpolateRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(dst_width, 16)) {
|
||||
InterpolateRow = InterpolateRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -1328,9 +1291,8 @@ static int ScalePlaneBilinearUp(int src_width,
|
||||
if (filtering && src_width >= 32768) {
|
||||
ScaleFilterCols = ScaleFilterCols64_C;
|
||||
}
|
||||
#if defined(HAS_SCALEFILTERCOLS_SSSE3)
|
||||
#if 0
|
||||
if (filtering && TestCpuFlag(kCpuHasSSSE3) && src_width < 32768) {
|
||||
ScaleFilterCols = ScaleFilterCols_SSSE3;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SCALEFILTERCOLS_NEON)
|
||||
@ -1351,9 +1313,8 @@ static int ScalePlaneBilinearUp(int src_width,
|
||||
#endif
|
||||
if (!filtering && src_width * 2 == dst_width && x < 0x8000) {
|
||||
ScaleFilterCols = ScaleColsUp2_C;
|
||||
#if defined(HAS_SCALECOLS_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2) && IS_ALIGNED(dst_width, 8)) {
|
||||
ScaleFilterCols = ScaleColsUp2_SSE2;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@ -1439,15 +1400,13 @@ static void ScalePlaneUp2_Linear(int src_width,
|
||||
// This function can only scale up by 2 times horizontally.
|
||||
assert(src_width == ((dst_width + 1) / 2));
|
||||
|
||||
#ifdef HAS_SCALEROWUP2_LINEAR_SSE2
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
ScaleRowUp = ScaleRowUp2_Linear_Any_SSE2;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAS_SCALEROWUP2_LINEAR_SSSE3
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ScaleRowUp = ScaleRowUp2_Linear_Any_SSSE3;
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -1504,15 +1463,13 @@ static void ScalePlaneUp2_Bilinear(int src_width,
|
||||
assert(src_width == ((dst_width + 1) / 2));
|
||||
assert(src_height == ((dst_height + 1) / 2));
|
||||
|
||||
#ifdef HAS_SCALEROWUP2_BILINEAR_SSE2
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
Scale2RowUp = ScaleRowUp2_Bilinear_Any_SSE2;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAS_SCALEROWUP2_BILINEAR_SSSE3
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
Scale2RowUp = ScaleRowUp2_Bilinear_Any_SSSE3;
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -1570,9 +1527,8 @@ static void ScalePlaneUp2_12_Linear(int src_width,
|
||||
// This function can only scale up by 2 times horizontally.
|
||||
assert(src_width == ((dst_width + 1) / 2));
|
||||
|
||||
#ifdef HAS_SCALEROWUP2_LINEAR_12_SSSE3
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ScaleRowUp = ScaleRowUp2_Linear_12_Any_SSSE3;
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -1625,9 +1581,8 @@ static void ScalePlaneUp2_12_Bilinear(int src_width,
|
||||
assert(src_width == ((dst_width + 1) / 2));
|
||||
assert(src_height == ((dst_height + 1) / 2));
|
||||
|
||||
#ifdef HAS_SCALEROWUP2_BILINEAR_12_SSSE3
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
Scale2RowUp = ScaleRowUp2_Bilinear_12_Any_SSSE3;
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -1673,9 +1628,8 @@ static void ScalePlaneUp2_16_Linear(int src_width,
|
||||
// This function can only scale up by 2 times horizontally.
|
||||
assert(src_width == ((dst_width + 1) / 2));
|
||||
|
||||
#ifdef HAS_SCALEROWUP2_LINEAR_16_SSE2
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
ScaleRowUp = ScaleRowUp2_Linear_16_Any_SSE2;
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -1723,9 +1677,8 @@ static void ScalePlaneUp2_16_Bilinear(int src_width,
|
||||
assert(src_width == ((dst_width + 1) / 2));
|
||||
assert(src_height == ((dst_height + 1) / 2));
|
||||
|
||||
#ifdef HAS_SCALEROWUP2_BILINEAR_16_SSE2
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
Scale2RowUp = ScaleRowUp2_Bilinear_16_Any_SSE2;
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -1779,19 +1732,15 @@ static int ScalePlaneBilinearUp_16(int src_width,
|
||||
&dx, &dy);
|
||||
src_width = Abs(src_width);
|
||||
|
||||
#if defined(HAS_INTERPOLATEROW_16_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
InterpolateRow = InterpolateRow_16_Any_SSE2;
|
||||
if (IS_ALIGNED(dst_width, 16)) {
|
||||
InterpolateRow = InterpolateRow_16_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_INTERPOLATEROW_16_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
InterpolateRow = InterpolateRow_16_Any_SSSE3;
|
||||
if (IS_ALIGNED(dst_width, 16)) {
|
||||
InterpolateRow = InterpolateRow_16_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -1820,16 +1769,14 @@ static int ScalePlaneBilinearUp_16(int src_width,
|
||||
if (filtering && src_width >= 32768) {
|
||||
ScaleFilterCols = ScaleFilterCols64_16_C;
|
||||
}
|
||||
#if defined(HAS_SCALEFILTERCOLS_16_SSSE3)
|
||||
#if 0
|
||||
if (filtering && TestCpuFlag(kCpuHasSSSE3) && src_width < 32768) {
|
||||
ScaleFilterCols = ScaleFilterCols_16_SSSE3;
|
||||
}
|
||||
#endif
|
||||
if (!filtering && src_width * 2 == dst_width && x < 0x8000) {
|
||||
ScaleFilterCols = ScaleColsUp2_16_C;
|
||||
#if defined(HAS_SCALECOLS_16_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2) && IS_ALIGNED(dst_width, 8)) {
|
||||
ScaleFilterCols = ScaleColsUp2_16_SSE2;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@ -1917,9 +1864,8 @@ static void ScalePlaneSimple(int src_width,
|
||||
|
||||
if (src_width * 2 == dst_width && x < 0x8000) {
|
||||
ScaleCols = ScaleColsUp2_C;
|
||||
#if defined(HAS_SCALECOLS_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2) && IS_ALIGNED(dst_width, 8)) {
|
||||
ScaleCols = ScaleColsUp2_SSE2;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@ -1954,9 +1900,8 @@ static void ScalePlaneSimple_16(int src_width,
|
||||
|
||||
if (src_width * 2 == dst_width && x < 0x8000) {
|
||||
ScaleCols = ScaleColsUp2_16_C;
|
||||
#if defined(HAS_SCALECOLS_16_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2) && IS_ALIGNED(dst_width, 8)) {
|
||||
ScaleCols = ScaleColsUp2_16_SSE2;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -49,7 +49,7 @@ extern "C" {
|
||||
dst_ptr + n * BPP, r + 1); \
|
||||
}
|
||||
|
||||
#ifdef HAS_SCALEROWDOWN2_SSSE3
|
||||
#if 0
|
||||
SDANY(ScaleRowDown2_Any_SSSE3, ScaleRowDown2_SSSE3, ScaleRowDown2_C, 2, 1, 15)
|
||||
SDANY(ScaleRowDown2Linear_Any_SSSE3,
|
||||
ScaleRowDown2Linear_SSSE3,
|
||||
@ -70,7 +70,7 @@ SDODD(ScaleRowDown2Box_Odd_SSSE3,
|
||||
1,
|
||||
15)
|
||||
#endif
|
||||
#ifdef HAS_SCALEUVROWDOWN2BOX_SSSE3
|
||||
#if 0
|
||||
SDANY(ScaleUVRowDown2Box_Any_SSSE3,
|
||||
ScaleUVRowDown2Box_SSSE3,
|
||||
ScaleUVRowDown2Box_C,
|
||||
@ -167,7 +167,7 @@ SDANY(ScaleRowDown2Box_Any_LSX,
|
||||
1,
|
||||
31)
|
||||
#endif
|
||||
#ifdef HAS_SCALEROWDOWN4_SSSE3
|
||||
#if 0
|
||||
SDANY(ScaleRowDown4_Any_SSSE3, ScaleRowDown4_SSSE3, ScaleRowDown4_C, 4, 1, 7)
|
||||
SDANY(ScaleRowDown4Box_Any_SSSE3,
|
||||
ScaleRowDown4Box_SSSE3,
|
||||
@ -203,7 +203,7 @@ SDANY(ScaleRowDown4Box_Any_LSX,
|
||||
1,
|
||||
15)
|
||||
#endif
|
||||
#ifdef HAS_SCALEROWDOWN34_SSSE3
|
||||
#if 0
|
||||
SDANY(ScaleRowDown34_Any_SSSE3,
|
||||
ScaleRowDown34_SSSE3,
|
||||
ScaleRowDown34_C,
|
||||
@ -284,7 +284,7 @@ SDANY(ScaleRowDown34_1_Box_Any_LSX,
|
||||
1,
|
||||
47)
|
||||
#endif
|
||||
#ifdef HAS_SCALEROWDOWN38_SSSE3
|
||||
#if 0
|
||||
SDANY(ScaleRowDown38_Any_SSSE3,
|
||||
ScaleRowDown38_SSSE3,
|
||||
ScaleRowDown38_C,
|
||||
@ -345,7 +345,7 @@ SDANY(ScaleRowDown38_2_Box_Any_LSX,
|
||||
11)
|
||||
#endif
|
||||
|
||||
#ifdef HAS_SCALEARGBROWDOWN2_SSE2
|
||||
#if 0
|
||||
SDANY(ScaleARGBRowDown2_Any_SSE2,
|
||||
ScaleARGBRowDown2_SSE2,
|
||||
ScaleARGBRowDown2_C,
|
||||
@ -420,7 +420,7 @@ SDANY(ScaleARGBRowDown2Box_Any_LSX,
|
||||
dst_ptr + n * BPP, r); \
|
||||
}
|
||||
|
||||
#ifdef HAS_SCALEARGBROWDOWNEVEN_SSE2
|
||||
#if 0
|
||||
SDAANY(ScaleARGBRowDownEven_Any_SSE2,
|
||||
ScaleARGBRowDownEven_SSE2,
|
||||
ScaleARGBRowDownEven_C,
|
||||
@ -484,7 +484,7 @@ SDAANY(ScaleUVRowDownEven_Any_NEON,
|
||||
memcpy(dst_ptr + n * BPP, dst_temp, r * BPP); \
|
||||
}
|
||||
|
||||
#ifdef HAS_SCALEADDROW_SSE2
|
||||
#if 0
|
||||
SAROW(ScaleAddRow_Any_SSE2, ScaleAddRow_SSE2, 1, 2, 15)
|
||||
#endif
|
||||
#ifdef HAS_SCALEADDROW_AVX2
|
||||
@ -510,7 +510,7 @@ SAROW(ScaleAddRow_Any_LSX, ScaleAddRow_LSX, 1, 2, 15)
|
||||
SCALEADDROW_C(src_ptr + n, dst_ptr + n, src_width & MASK); \
|
||||
}
|
||||
|
||||
#ifdef HAS_SCALEADDROW_SSE2
|
||||
#if 0
|
||||
SAANY(ScaleAddRow_Any_SSE2, ScaleAddRow_SSE2, ScaleAddRow_C, 15)
|
||||
#endif
|
||||
#ifdef HAS_SCALEADDROW_AVX2
|
||||
@ -597,7 +597,7 @@ SUH2LANY(ScaleRowUp2_Linear_16_Any_C,
|
||||
0,
|
||||
uint16_t)
|
||||
|
||||
#ifdef HAS_SCALEROWUP2_LINEAR_SSE2
|
||||
#if 0
|
||||
SUH2LANY(ScaleRowUp2_Linear_Any_SSE2,
|
||||
ScaleRowUp2_Linear_SSE2,
|
||||
ScaleRowUp2_Linear_C,
|
||||
@ -605,7 +605,7 @@ SUH2LANY(ScaleRowUp2_Linear_Any_SSE2,
|
||||
uint8_t)
|
||||
#endif
|
||||
|
||||
#ifdef HAS_SCALEROWUP2_LINEAR_SSSE3
|
||||
#if 0
|
||||
SUH2LANY(ScaleRowUp2_Linear_Any_SSSE3,
|
||||
ScaleRowUp2_Linear_SSSE3,
|
||||
ScaleRowUp2_Linear_C,
|
||||
@ -613,7 +613,7 @@ SUH2LANY(ScaleRowUp2_Linear_Any_SSSE3,
|
||||
uint8_t)
|
||||
#endif
|
||||
|
||||
#ifdef HAS_SCALEROWUP2_LINEAR_12_SSSE3
|
||||
#if 0
|
||||
SUH2LANY(ScaleRowUp2_Linear_12_Any_SSSE3,
|
||||
ScaleRowUp2_Linear_12_SSSE3,
|
||||
ScaleRowUp2_Linear_16_C,
|
||||
@ -621,7 +621,7 @@ SUH2LANY(ScaleRowUp2_Linear_12_Any_SSSE3,
|
||||
uint16_t)
|
||||
#endif
|
||||
|
||||
#ifdef HAS_SCALEROWUP2_LINEAR_16_SSE2
|
||||
#if 0
|
||||
SUH2LANY(ScaleRowUp2_Linear_16_Any_SSE2,
|
||||
ScaleRowUp2_Linear_16_SSE2,
|
||||
ScaleRowUp2_Linear_16_C,
|
||||
@ -725,7 +725,7 @@ SU2BLANY(ScaleRowUp2_Bilinear_16_Any_C,
|
||||
0,
|
||||
uint16_t)
|
||||
|
||||
#ifdef HAS_SCALEROWUP2_BILINEAR_SSE2
|
||||
#if 0
|
||||
SU2BLANY(ScaleRowUp2_Bilinear_Any_SSE2,
|
||||
ScaleRowUp2_Bilinear_SSE2,
|
||||
ScaleRowUp2_Bilinear_C,
|
||||
@ -733,7 +733,7 @@ SU2BLANY(ScaleRowUp2_Bilinear_Any_SSE2,
|
||||
uint8_t)
|
||||
#endif
|
||||
|
||||
#ifdef HAS_SCALEROWUP2_BILINEAR_12_SSSE3
|
||||
#if 0
|
||||
SU2BLANY(ScaleRowUp2_Bilinear_12_Any_SSSE3,
|
||||
ScaleRowUp2_Bilinear_12_SSSE3,
|
||||
ScaleRowUp2_Bilinear_16_C,
|
||||
@ -741,7 +741,7 @@ SU2BLANY(ScaleRowUp2_Bilinear_12_Any_SSSE3,
|
||||
uint16_t)
|
||||
#endif
|
||||
|
||||
#ifdef HAS_SCALEROWUP2_BILINEAR_16_SSE2
|
||||
#if 0
|
||||
SU2BLANY(ScaleRowUp2_Bilinear_16_Any_SSE2,
|
||||
ScaleRowUp2_Bilinear_16_SSE2,
|
||||
ScaleRowUp2_Bilinear_16_C,
|
||||
@ -749,7 +749,7 @@ SU2BLANY(ScaleRowUp2_Bilinear_16_Any_SSE2,
|
||||
uint16_t)
|
||||
#endif
|
||||
|
||||
#ifdef HAS_SCALEROWUP2_BILINEAR_SSSE3
|
||||
#if 0
|
||||
SU2BLANY(ScaleRowUp2_Bilinear_Any_SSSE3,
|
||||
ScaleRowUp2_Bilinear_SSSE3,
|
||||
ScaleRowUp2_Bilinear_C,
|
||||
@ -837,7 +837,7 @@ SBUH2LANY(ScaleUVRowUp2_Linear_16_Any_C,
|
||||
0,
|
||||
uint16_t)
|
||||
|
||||
#ifdef HAS_SCALEUVROWUP2_LINEAR_SSSE3
|
||||
#if 0
|
||||
SBUH2LANY(ScaleUVRowUp2_Linear_Any_SSSE3,
|
||||
ScaleUVRowUp2_Linear_SSSE3,
|
||||
ScaleUVRowUp2_Linear_C,
|
||||
@ -853,7 +853,7 @@ SBUH2LANY(ScaleUVRowUp2_Linear_Any_AVX2,
|
||||
uint8_t)
|
||||
#endif
|
||||
|
||||
#ifdef HAS_SCALEUVROWUP2_LINEAR_16_SSE41
|
||||
#if 0
|
||||
SBUH2LANY(ScaleUVRowUp2_Linear_16_Any_SSE41,
|
||||
ScaleUVRowUp2_Linear_16_SSE41,
|
||||
ScaleUVRowUp2_Linear_16_C,
|
||||
@ -935,7 +935,7 @@ SBU2BLANY(ScaleUVRowUp2_Bilinear_16_Any_C,
|
||||
0,
|
||||
uint16_t)
|
||||
|
||||
#ifdef HAS_SCALEUVROWUP2_BILINEAR_SSSE3
|
||||
#if 0
|
||||
SBU2BLANY(ScaleUVRowUp2_Bilinear_Any_SSSE3,
|
||||
ScaleUVRowUp2_Bilinear_SSSE3,
|
||||
ScaleUVRowUp2_Bilinear_C,
|
||||
@ -951,7 +951,7 @@ SBU2BLANY(ScaleUVRowUp2_Bilinear_Any_AVX2,
|
||||
uint8_t)
|
||||
#endif
|
||||
|
||||
#ifdef HAS_SCALEUVROWUP2_BILINEAR_16_SSE41
|
||||
#if 0
|
||||
SBU2BLANY(ScaleUVRowUp2_Bilinear_16_Any_SSE41,
|
||||
ScaleUVRowUp2_Bilinear_16_SSE41,
|
||||
ScaleUVRowUp2_Bilinear_16_C,
|
||||
|
||||
@ -67,7 +67,7 @@ static void ScaleARGBDown2(int src_width,
|
||||
src_argb += (y >> 16) * (intptr_t)src_stride + ((x >> 16) - 1) * 4;
|
||||
}
|
||||
|
||||
#if defined(HAS_SCALEARGBROWDOWN2_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
ScaleARGBRowDown2 =
|
||||
filtering == kFilterNone
|
||||
@ -180,11 +180,9 @@ static int ScaleARGBDown4Box(int src_width,
|
||||
(void)dx;
|
||||
assert(dx == 65536 * 4); // Test scale factor of 4.
|
||||
assert((dy & 0x3ffff) == 0); // Test vertical scale is multiple of 4.
|
||||
#if defined(HAS_SCALEARGBROWDOWN2_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
ScaleARGBRowDown2 = ScaleARGBRowDown2Box_Any_SSE2;
|
||||
if (IS_ALIGNED(dst_width, 4)) {
|
||||
ScaleARGBRowDown2 = ScaleARGBRowDown2Box_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -246,7 +244,7 @@ static void ScaleARGBDownEven(int src_width,
|
||||
assert(IS_ALIGNED(src_width, 2));
|
||||
assert(IS_ALIGNED(src_height, 2));
|
||||
src_argb += (y >> 16) * (intptr_t)src_stride + (x >> 16) * 4;
|
||||
#if defined(HAS_SCALEARGBROWDOWNEVEN_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
ScaleARGBRowDownEven = filtering ? ScaleARGBRowDownEvenBox_Any_SSE2
|
||||
: ScaleARGBRowDownEven_Any_SSE2;
|
||||
@ -331,11 +329,9 @@ static int ScaleARGBBilinearDown(int src_width,
|
||||
clip_src_width = (int)(xr - xl) * 4; // Width aligned to 4.
|
||||
src_argb += xl * 4;
|
||||
x -= (int)(xl << 16);
|
||||
#if defined(HAS_INTERPOLATEROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
InterpolateRow = InterpolateRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(clip_src_width, 16)) {
|
||||
InterpolateRow = InterpolateRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -373,9 +369,8 @@ static int ScaleARGBBilinearDown(int src_width,
|
||||
InterpolateRow = InterpolateRow_RVV;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SCALEARGBFILTERCOLS_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3) && src_width < 32768) {
|
||||
ScaleARGBFilterCols = ScaleARGBFilterCols_SSSE3;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SCALEARGBFILTERCOLS_NEON)
|
||||
@ -454,11 +449,9 @@ static int ScaleARGBBilinearUp(int src_width,
|
||||
int dst_width, int x, int dx) =
|
||||
filtering ? ScaleARGBFilterCols_C : ScaleARGBCols_C;
|
||||
const int max_y = (src_height - 1) << 16;
|
||||
#if defined(HAS_INTERPOLATEROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
InterpolateRow = InterpolateRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(dst_width, 4)) {
|
||||
InterpolateRow = InterpolateRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -500,9 +493,8 @@ static int ScaleARGBBilinearUp(int src_width,
|
||||
ScaleARGBFilterCols =
|
||||
filtering ? ScaleARGBFilterCols64_C : ScaleARGBCols64_C;
|
||||
}
|
||||
#if defined(HAS_SCALEARGBFILTERCOLS_SSSE3)
|
||||
#if 0
|
||||
if (filtering && TestCpuFlag(kCpuHasSSSE3) && src_width < 32768) {
|
||||
ScaleARGBFilterCols = ScaleARGBFilterCols_SSSE3;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SCALEARGBFILTERCOLS_NEON)
|
||||
@ -526,9 +518,8 @@ static int ScaleARGBBilinearUp(int src_width,
|
||||
ScaleARGBFilterCols = ScaleARGBFilterCols_RVV;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SCALEARGBCOLS_SSE2)
|
||||
#if 0
|
||||
if (!filtering && TestCpuFlag(kCpuHasSSE2) && src_width < 32768) {
|
||||
ScaleARGBFilterCols = ScaleARGBCols_SSE2;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SCALEARGBCOLS_NEON)
|
||||
@ -549,9 +540,8 @@ static int ScaleARGBBilinearUp(int src_width,
|
||||
#endif
|
||||
if (!filtering && src_width * 2 == dst_width && x < 0x8000) {
|
||||
ScaleARGBFilterCols = ScaleARGBColsUp2_C;
|
||||
#if defined(HAS_SCALEARGBCOLSUP2_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2) && IS_ALIGNED(dst_width, 8)) {
|
||||
ScaleARGBFilterCols = ScaleARGBColsUp2_SSE2;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@ -638,11 +628,9 @@ static int ScaleYUVToARGBBilinearUp(int src_width,
|
||||
void (*I422ToARGBRow)(const uint8_t* y_buf, const uint8_t* u_buf,
|
||||
const uint8_t* v_buf, uint8_t* rgb_buf, int width) =
|
||||
I422ToARGBRow_C;
|
||||
#if defined(HAS_I422TOARGBROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
I422ToARGBRow = I422ToARGBRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(src_width, 8)) {
|
||||
I422ToARGBRow = I422ToARGBRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -706,11 +694,9 @@ static int ScaleYUVToARGBBilinearUp(int src_width,
|
||||
void (*InterpolateRow)(uint8_t* dst_argb, const uint8_t* src_argb,
|
||||
ptrdiff_t src_stride, int dst_width,
|
||||
int source_y_fraction) = InterpolateRow_C;
|
||||
#if defined(HAS_INTERPOLATEROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
InterpolateRow = InterpolateRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(dst_width, 4)) {
|
||||
InterpolateRow = InterpolateRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -756,9 +742,8 @@ static int ScaleYUVToARGBBilinearUp(int src_width,
|
||||
ScaleARGBFilterCols =
|
||||
filtering ? ScaleARGBFilterCols64_C : ScaleARGBCols64_C;
|
||||
}
|
||||
#if defined(HAS_SCALEARGBFILTERCOLS_SSSE3)
|
||||
#if 0
|
||||
if (filtering && TestCpuFlag(kCpuHasSSSE3) && src_width < 32768) {
|
||||
ScaleARGBFilterCols = ScaleARGBFilterCols_SSSE3;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SCALEARGBFILTERCOLS_NEON)
|
||||
@ -782,9 +767,8 @@ static int ScaleYUVToARGBBilinearUp(int src_width,
|
||||
ScaleARGBFilterCols = ScaleARGBFilterCols_RVV;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SCALEARGBCOLS_SSE2)
|
||||
#if 0
|
||||
if (!filtering && TestCpuFlag(kCpuHasSSE2) && src_width < 32768) {
|
||||
ScaleARGBFilterCols = ScaleARGBCols_SSE2;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SCALEARGBCOLS_NEON)
|
||||
@ -805,9 +789,8 @@ static int ScaleYUVToARGBBilinearUp(int src_width,
|
||||
#endif
|
||||
if (!filtering && src_width * 2 == dst_width && x < 0x8000) {
|
||||
ScaleARGBFilterCols = ScaleARGBColsUp2_C;
|
||||
#if defined(HAS_SCALEARGBCOLSUP2_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2) && IS_ALIGNED(dst_width, 8)) {
|
||||
ScaleARGBFilterCols = ScaleARGBColsUp2_SSE2;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@ -914,9 +897,8 @@ static void ScaleARGBSimple(int src_width,
|
||||
int dst_width, int x, int dx) =
|
||||
(src_width >= 32768) ? ScaleARGBCols64_C : ScaleARGBCols_C;
|
||||
(void)src_height;
|
||||
#if defined(HAS_SCALEARGBCOLS_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2) && src_width < 32768) {
|
||||
ScaleARGBCols = ScaleARGBCols_SSE2;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SCALEARGBCOLS_NEON)
|
||||
@ -937,9 +919,8 @@ static void ScaleARGBSimple(int src_width,
|
||||
#endif
|
||||
if (src_width * 2 == dst_width && x < 0x8000) {
|
||||
ScaleARGBCols = ScaleARGBColsUp2_C;
|
||||
#if defined(HAS_SCALEARGBCOLSUP2_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2) && IS_ALIGNED(dst_width, 8)) {
|
||||
ScaleARGBCols = ScaleARGBColsUp2_SSE2;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -1636,11 +1636,9 @@ void ScalePlaneVertical(int src_height,
|
||||
assert(dst_width > 0);
|
||||
assert(dst_height > 0);
|
||||
src_argb += (x >> 16) * bpp;
|
||||
#if defined(HAS_INTERPOLATEROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
InterpolateRow = InterpolateRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(dst_width_bytes, 16)) {
|
||||
InterpolateRow = InterpolateRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -1718,19 +1716,15 @@ void ScalePlaneVertical_16(int src_height,
|
||||
assert(dst_width > 0);
|
||||
assert(dst_height > 0);
|
||||
src_argb += (x >> 16) * wpp;
|
||||
#if defined(HAS_INTERPOLATEROW_16_SSE2)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
InterpolateRow = InterpolateRow_16_Any_SSE2;
|
||||
if (IS_ALIGNED(dst_width_words, 16)) {
|
||||
InterpolateRow = InterpolateRow_16_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_INTERPOLATEROW_16_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
InterpolateRow = InterpolateRow_16_Any_SSSE3;
|
||||
if (IS_ALIGNED(dst_width_words, 16)) {
|
||||
InterpolateRow = InterpolateRow_16_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
1832
source/scale_gcc.cc
1832
source/scale_gcc.cc
File diff suppressed because it is too large
Load Diff
@ -88,11 +88,9 @@ static void ScaleUVDown2(int src_width,
|
||||
src_uv += (y >> 16) * (intptr_t)src_stride + ((x >> 16) - 1) * 2;
|
||||
}
|
||||
|
||||
#if defined(HAS_SCALEUVROWDOWN2BOX_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3) && filtering) {
|
||||
ScaleUVRowDown2 = ScaleUVRowDown2Box_Any_SSSE3;
|
||||
if (IS_ALIGNED(dst_width, 4)) {
|
||||
ScaleUVRowDown2 = ScaleUVRowDown2Box_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -138,7 +136,7 @@ static void ScaleUVDown2(int src_width,
|
||||
#endif
|
||||
|
||||
// This code is not enabled. Only box filter is available at this time.
|
||||
#if defined(HAS_SCALEUVROWDOWN2_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ScaleUVRowDown2 =
|
||||
filtering == kFilterNone
|
||||
@ -200,11 +198,9 @@ static int ScaleUVDown4Box(int src_width,
|
||||
assert(dx == 65536 * 4); // Test scale factor of 4.
|
||||
assert((dy & 0x3ffff) == 0); // Test vertical scale is multiple of 4.
|
||||
|
||||
#if defined(HAS_SCALEUVROWDOWN2BOX_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ScaleUVRowDown2 = ScaleUVRowDown2Box_Any_SSSE3;
|
||||
if (IS_ALIGNED(dst_width, 4)) {
|
||||
ScaleUVRowDown2 = ScaleUVRowDown2Box_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -276,7 +272,7 @@ static void ScaleUVDownEven(int src_width,
|
||||
assert(IS_ALIGNED(src_width, 2));
|
||||
assert(IS_ALIGNED(src_height, 2));
|
||||
src_uv += (y >> 16) * (intptr_t)src_stride + (x >> 16) * 2;
|
||||
#if defined(HAS_SCALEUVROWDOWNEVEN_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ScaleUVRowDownEven = filtering ? ScaleUVRowDownEvenBox_Any_SSSE3
|
||||
: ScaleUVRowDownEven_Any_SSSE3;
|
||||
@ -363,11 +359,9 @@ static int ScaleUVBilinearDown(int src_width,
|
||||
clip_src_width = (int)(xr - xl) * 2; // Width aligned to 2.
|
||||
src_uv += xl * 2;
|
||||
x -= (int)(xl << 16);
|
||||
#if defined(HAS_INTERPOLATEROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
InterpolateRow = InterpolateRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(clip_src_width, 16)) {
|
||||
InterpolateRow = InterpolateRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -405,9 +399,8 @@ static int ScaleUVBilinearDown(int src_width,
|
||||
InterpolateRow = InterpolateRow_RVV;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SCALEUVFILTERCOLS_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3) && src_width < 32768) {
|
||||
ScaleUVFilterCols = ScaleUVFilterCols_SSSE3;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SCALEUVFILTERCOLS_NEON)
|
||||
@ -473,11 +466,9 @@ static int ScaleUVBilinearUp(int src_width,
|
||||
int dst_width, int x, int dx) =
|
||||
filtering ? ScaleUVFilterCols_C : ScaleUVCols_C;
|
||||
const int max_y = (src_height - 1) << 16;
|
||||
#if defined(HAS_INTERPOLATEROW_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
InterpolateRow = InterpolateRow_Any_SSSE3;
|
||||
if (IS_ALIGNED(dst_width, 8)) {
|
||||
InterpolateRow = InterpolateRow_SSSE3;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -518,9 +509,8 @@ static int ScaleUVBilinearUp(int src_width,
|
||||
if (src_width >= 32768) {
|
||||
ScaleUVFilterCols = filtering ? ScaleUVFilterCols64_C : ScaleUVCols64_C;
|
||||
}
|
||||
#if defined(HAS_SCALEUVFILTERCOLS_SSSE3)
|
||||
#if 0
|
||||
if (filtering && TestCpuFlag(kCpuHasSSSE3) && src_width < 32768) {
|
||||
ScaleUVFilterCols = ScaleUVFilterCols_SSSE3;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SCALEUVFILTERCOLS_NEON)
|
||||
@ -531,9 +521,8 @@ static int ScaleUVBilinearUp(int src_width,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SCALEUVCOLS_SSSE3)
|
||||
#if 0
|
||||
if (!filtering && TestCpuFlag(kCpuHasSSSE3) && src_width < 32768) {
|
||||
ScaleUVFilterCols = ScaleUVCols_SSSE3;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SCALEUVCOLS_NEON)
|
||||
@ -546,9 +535,8 @@ static int ScaleUVBilinearUp(int src_width,
|
||||
#endif
|
||||
if (!filtering && src_width * 2 == dst_width && x < 0x8000) {
|
||||
ScaleUVFilterCols = ScaleUVColsUp2_C;
|
||||
#if defined(HAS_SCALEUVCOLSUP2_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3) && IS_ALIGNED(dst_width, 8)) {
|
||||
ScaleUVFilterCols = ScaleUVColsUp2_SSSE3;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@ -636,9 +624,8 @@ static void ScaleUVLinearUp2(int src_width,
|
||||
(void)src_width;
|
||||
assert(src_width == ((dst_width + 1) / 2));
|
||||
|
||||
#ifdef HAS_SCALEUVROWUP2_LINEAR_SSSE3
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
ScaleRowUp = ScaleUVRowUp2_Linear_Any_SSSE3;
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -696,9 +683,8 @@ static void ScaleUVBilinearUp2(int src_width,
|
||||
assert(src_width == ((dst_width + 1) / 2));
|
||||
assert(src_height == ((dst_height + 1) / 2));
|
||||
|
||||
#ifdef HAS_SCALEUVROWUP2_BILINEAR_SSSE3
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
Scale2RowUp = ScaleUVRowUp2_Bilinear_Any_SSSE3;
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -757,9 +743,8 @@ static void ScaleUVLinearUp2_16(int src_width,
|
||||
(void)src_width;
|
||||
assert(src_width == ((dst_width + 1) / 2));
|
||||
|
||||
#ifdef HAS_SCALEUVROWUP2_LINEAR_16_SSE41
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE41)) {
|
||||
ScaleRowUp = ScaleUVRowUp2_Linear_16_Any_SSE41;
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -811,9 +796,8 @@ static void ScaleUVBilinearUp2_16(int src_width,
|
||||
assert(src_width == ((dst_width + 1) / 2));
|
||||
assert(src_height == ((dst_height + 1) / 2));
|
||||
|
||||
#ifdef HAS_SCALEUVROWUP2_BILINEAR_16_SSE41
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSE41)) {
|
||||
Scale2RowUp = ScaleUVRowUp2_Bilinear_16_Any_SSE41;
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -865,9 +849,8 @@ static void ScaleUVSimple(int src_width,
|
||||
int x, int dx) =
|
||||
(src_width >= 32768) ? ScaleUVCols64_C : ScaleUVCols_C;
|
||||
(void)src_height;
|
||||
#if defined(HAS_SCALEUVCOLS_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3) && src_width < 32768) {
|
||||
ScaleUVCols = ScaleUVCols_SSSE3;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SCALEUVCOLS_NEON)
|
||||
@ -880,9 +863,8 @@ static void ScaleUVSimple(int src_width,
|
||||
#endif
|
||||
if (src_width * 2 == dst_width && x < 0x8000) {
|
||||
ScaleUVCols = ScaleUVColsUp2_C;
|
||||
#if defined(HAS_SCALEUVCOLSUP2_SSSE3)
|
||||
#if 0
|
||||
if (TestCpuFlag(kCpuHasSSSE3) && IS_ALIGNED(dst_width, 8)) {
|
||||
ScaleUVCols = ScaleUVColsUp2_SSSE3;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -240,21 +240,15 @@ TEST_F(LibYUVCompareTest, BenchmarkHammingDistance_Opt) {
|
||||
if (has_avx2) {
|
||||
h1 = HammingDistance_AVX2(src_a, src_b, kMaxWidth);
|
||||
} else {
|
||||
int has_sse42 = TestCpuFlag(kCpuHasSSE42);
|
||||
if (has_sse42) {
|
||||
h1 = HammingDistance_SSE42(src_a, src_b, kMaxWidth);
|
||||
} else {
|
||||
int has_ssse3 = TestCpuFlag(kCpuHasSSSE3);
|
||||
if (has_ssse3) {
|
||||
h1 = HammingDistance_SSSE3(src_a, src_b, kMaxWidth);
|
||||
} else {
|
||||
h1 = HammingDistance_C(src_a, src_b, kMaxWidth);
|
||||
}
|
||||
}
|
||||
}
|
||||
#elif defined(HAS_HAMMINGDISTANCE_SSE42)
|
||||
int has_sse42 = TestCpuFlag(kCpuHasSSE42);
|
||||
if (has_sse42) {
|
||||
#elif 0
|
||||
h1 = HammingDistance_SSE42(src_a, src_b, kMaxWidth);
|
||||
} else {
|
||||
h1 = HammingDistance_C(src_a, src_b, kMaxWidth);
|
||||
@ -361,21 +355,15 @@ TEST_F(LibYUVCompareTest, TestHammingDistance_Opt) {
|
||||
if (has_avx2) {
|
||||
h1 = HammingDistance_AVX2(src_a, src_b, kMaxWidth);
|
||||
} else {
|
||||
int has_sse42 = TestCpuFlag(kCpuHasSSE42);
|
||||
if (has_sse42) {
|
||||
h1 = HammingDistance_SSE42(src_a, src_b, kMaxWidth);
|
||||
} else {
|
||||
int has_ssse3 = TestCpuFlag(kCpuHasSSSE3);
|
||||
if (has_ssse3) {
|
||||
h1 = HammingDistance_SSSE3(src_a, src_b, kMaxWidth);
|
||||
} else {
|
||||
h1 = HammingDistance_C(src_a, src_b, kMaxWidth);
|
||||
}
|
||||
}
|
||||
}
|
||||
#elif defined(HAS_HAMMINGDISTANCE_SSE42)
|
||||
int has_sse42 = TestCpuFlag(kCpuHasSSE42);
|
||||
if (has_sse42) {
|
||||
#elif 0
|
||||
h1 = HammingDistance_SSE42(src_a, src_b, kMaxWidth);
|
||||
} else {
|
||||
h1 = HammingDistance_C(src_a, src_b, kMaxWidth);
|
||||
|
||||
@ -762,9 +762,6 @@ TESTATOA(RAW, uint8_t, 3, 3, 1, RGB24, uint8_t, 3, 3, 1)
|
||||
TESTATOA(RGB24, uint8_t, 3, 3, 1, J400, uint8_t, 1, 1, 1)
|
||||
// TESTATOA(RGB24, uint8_t, 3, 3, 1, RGB24Mirror, uint8_t, 3, 3, 1)
|
||||
TESTATOA(RAW, uint8_t, 3, 3, 1, J400, uint8_t, 1, 1, 1)
|
||||
#ifdef LITTLE_ENDIAN_ONLY_TEST
|
||||
// TESTATOA(RGB565, uint8_t, 2, 2, 1, ARGB, uint8_t, 4, 4, 1)
|
||||
#endif
|
||||
TESTATOA(RGBA, uint8_t, 4, 4, 1, ARGB, uint8_t, 4, 4, 1)
|
||||
// TESTATOA(UYVY, uint8_t, 2, 4, 1, ARGB, uint8_t, 4, 4, 1)
|
||||
// TESTATOA(YUY2, uint8_t, 2, 4, 1, ARGB, uint8_t, 4, 4, 1)
|
||||
@ -1686,12 +1683,10 @@ TEST_F(LibYUVConvertTest, ARGBToAR30Row_Opt) {
|
||||
ARGBToAR30Row_C(src, dst_c, kPixels);
|
||||
|
||||
int has_avx2 = TestCpuFlag(kCpuHasAVX2);
|
||||
int has_ssse3 = TestCpuFlag(kCpuHasSSSE3);
|
||||
for (int i = 0; i < benchmark_iterations_; ++i) {
|
||||
if (has_avx2) {
|
||||
ARGBToAR30Row_AVX2(src, dst_opt, kPixels);
|
||||
} else if (has_ssse3) {
|
||||
ARGBToAR30Row_SSSE3(src, dst_opt, kPixels);
|
||||
} else {
|
||||
ARGBToAR30Row_C(src, dst_opt, kPixels);
|
||||
}
|
||||
@ -1720,12 +1715,10 @@ TEST_F(LibYUVConvertTest, ABGRToAR30Row_Opt) {
|
||||
ABGRToAR30Row_C(src, dst_c, kPixels);
|
||||
|
||||
int has_avx2 = TestCpuFlag(kCpuHasAVX2);
|
||||
int has_ssse3 = TestCpuFlag(kCpuHasSSSE3);
|
||||
for (int i = 0; i < benchmark_iterations_; ++i) {
|
||||
if (has_avx2) {
|
||||
ABGRToAR30Row_AVX2(src, dst_opt, kPixels);
|
||||
} else if (has_ssse3) {
|
||||
ABGRToAR30Row_SSSE3(src, dst_opt, kPixels);
|
||||
} else {
|
||||
ABGRToAR30Row_C(src, dst_opt, kPixels);
|
||||
}
|
||||
|
||||
@ -168,10 +168,6 @@ TEST_F(LibYUVBaseTest, TestCpuHas) {
|
||||
defined(_M_X64)
|
||||
int has_x86 = TestCpuFlag(kCpuHasX86);
|
||||
if (has_x86) {
|
||||
int has_sse2 = TestCpuFlag(kCpuHasSSE2);
|
||||
int has_ssse3 = TestCpuFlag(kCpuHasSSSE3);
|
||||
int has_sse41 = TestCpuFlag(kCpuHasSSE41);
|
||||
int has_sse42 = TestCpuFlag(kCpuHasSSE42);
|
||||
int has_avx = TestCpuFlag(kCpuHasAVX);
|
||||
int has_avx2 = TestCpuFlag(kCpuHasAVX2);
|
||||
int has_erms = TestCpuFlag(kCpuHasERMS);
|
||||
@ -190,10 +186,7 @@ TEST_F(LibYUVBaseTest, TestCpuHas) {
|
||||
int has_avxvnniint8 = TestCpuFlag(kCpuHasAVXVNNIINT8);
|
||||
int has_amxint8 = TestCpuFlag(kCpuHasAMXINT8);
|
||||
printf("Has X86 0x%x\n", has_x86);
|
||||
printf("Has SSE2 0x%x\n", has_sse2);
|
||||
printf("Has SSSE3 0x%x\n", has_ssse3);
|
||||
printf("Has SSE4.1 0x%x\n", has_sse41);
|
||||
printf("Has SSE4.2 0x%x\n", has_sse42);
|
||||
printf("Has AVX 0x%x\n", has_avx);
|
||||
printf("Has AVX2 0x%x\n", has_avx2);
|
||||
printf("Has ERMS 0x%x\n", has_erms);
|
||||
|
||||
@ -1536,17 +1536,11 @@ TEST_F(LibYUVPlanarTest, TestAffine) {
|
||||
EXPECT_EQ(96u, interpolate_pixels_C[128][0]);
|
||||
EXPECT_EQ(191u, interpolate_pixels_C[255][3]);
|
||||
|
||||
#if defined(HAS_ARGBAFFINEROW_SSE2)
|
||||
#if 0
|
||||
SIMD_ALIGNED(uint8_t interpolate_pixels_Opt[1280][4]);
|
||||
ARGBAffineRow_SSE2(&orig_pixels_0[0][0], 0, &interpolate_pixels_Opt[0][0],
|
||||
uv_step, 1280);
|
||||
EXPECT_EQ(0, memcmp(interpolate_pixels_Opt, interpolate_pixels_C, 1280 * 4));
|
||||
|
||||
int has_sse2 = TestCpuFlag(kCpuHasSSE2);
|
||||
if (has_sse2) {
|
||||
for (int i = 0; i < benchmark_pixels_div1280_; ++i) {
|
||||
ARGBAffineRow_SSE2(&orig_pixels_0[0][0], 0, &interpolate_pixels_Opt[0][0],
|
||||
uv_step, 1280);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -3916,14 +3910,11 @@ TEST_F(LibYUVPlanarTest, Convert16To8Row_Opt) {
|
||||
dst_pixels_y_c, 16384, kPixels);
|
||||
|
||||
int has_avx2 = TestCpuFlag(kCpuHasAVX2);
|
||||
int has_ssse3 = TestCpuFlag(kCpuHasSSSE3);
|
||||
for (int i = 0; i < benchmark_iterations_; ++i) {
|
||||
if (has_avx2) {
|
||||
Convert16To8Row_AVX2(reinterpret_cast<const uint16_t*>(src_pixels_y),
|
||||
dst_pixels_y_opt, 16384, kPixels);
|
||||
} else if (has_ssse3) {
|
||||
Convert16To8Row_SSSE3(reinterpret_cast<const uint16_t*>(src_pixels_y),
|
||||
dst_pixels_y_opt, 16384, kPixels);
|
||||
} else {
|
||||
Convert16To8Row_C(reinterpret_cast<const uint16_t*>(src_pixels_y),
|
||||
dst_pixels_y_opt, 16384, kPixels);
|
||||
@ -4020,16 +4011,11 @@ TEST_F(LibYUVPlanarTest, Convert8To16Row_Opt) {
|
||||
1024, kPixels);
|
||||
|
||||
int has_avx2 = TestCpuFlag(kCpuHasAVX2);
|
||||
int has_sse2 = TestCpuFlag(kCpuHasSSE2);
|
||||
for (int i = 0; i < benchmark_iterations_; ++i) {
|
||||
if (has_avx2) {
|
||||
Convert8To16Row_AVX2(src_pixels_y,
|
||||
reinterpret_cast<uint16_t*>(dst_pixels_y_opt), 1024,
|
||||
kPixels);
|
||||
} else if (has_sse2) {
|
||||
Convert8To16Row_SSE2(src_pixels_y,
|
||||
reinterpret_cast<uint16_t*>(dst_pixels_y_opt), 1024,
|
||||
kPixels);
|
||||
} else {
|
||||
Convert8To16Row_C(src_pixels_y,
|
||||
reinterpret_cast<uint16_t*>(dst_pixels_y_opt), 1024,
|
||||
|
||||
@ -892,10 +892,8 @@ TEST_F(LibYUVRotateTest, Transpose4x4_Test) {
|
||||
Transpose4x4_32_NEON((const uint8_t*)src_pixels, height * 4,
|
||||
(uint8_t*)dst_pixels_opt, width * 4, width);
|
||||
} else
|
||||
#elif defined(HAS_TRANSPOSE4X4_32_SSE2)
|
||||
#elif 0
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
Transpose4x4_32_SSE2((const uint8_t*)src_pixels, height * 4,
|
||||
(uint8_t*)dst_pixels_opt, width * 4, width);
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
@ -938,8 +936,6 @@ TEST_F(LibYUVRotateTest, Transpose4x4_Opt) {
|
||||
Transpose4x4_32_AVX2((const uint8_t*)src_pixels, height * 4,
|
||||
(uint8_t*)dst_pixels_opt, width * 4, width);
|
||||
} else if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
Transpose4x4_32_SSE2((const uint8_t*)src_pixels, height * 4,
|
||||
(uint8_t*)dst_pixels_opt, width * 4, width);
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
|
||||
@ -43,7 +43,7 @@
|
||||
namespace libyuv {
|
||||
|
||||
#ifdef ENABLE_ROW_TESTS
|
||||
#ifdef HAS_SCALEROWDOWN2_SSSE3
|
||||
#if 0
|
||||
TEST_F(LibYUVScaleTest, TestScaleRowDown2Box_Odd_SSSE3) {
|
||||
SIMD_ALIGNED(uint8_t orig_pixels[128 * 2]);
|
||||
SIMD_ALIGNED(uint8_t dst_pixels_opt[64]);
|
||||
@ -52,7 +52,6 @@ TEST_F(LibYUVScaleTest, TestScaleRowDown2Box_Odd_SSSE3) {
|
||||
memset(dst_pixels_opt, 0, sizeof(dst_pixels_opt));
|
||||
memset(dst_pixels_c, 0, sizeof(dst_pixels_c));
|
||||
|
||||
int has_ssse3 = TestCpuFlag(kCpuHasSSSE3);
|
||||
if (!has_ssse3) {
|
||||
printf("Warning SSSE3 not detected; Skipping test.\n");
|
||||
} else {
|
||||
@ -114,7 +113,6 @@ TEST_F(LibYUVScaleTest, TestScaleRowDown2Box_Odd_SSSE3) {
|
||||
EXPECT_EQ(0u, dst_pixels_c[63]);
|
||||
|
||||
// Test regular half size SSSE3.
|
||||
ScaleRowDown2Box_SSSE3(orig_pixels, 128, dst_pixels_opt, 64);
|
||||
|
||||
EXPECT_EQ(64u, dst_pixels_opt[0]);
|
||||
EXPECT_EQ(25u, dst_pixels_opt[1]);
|
||||
@ -125,7 +123,6 @@ TEST_F(LibYUVScaleTest, TestScaleRowDown2Box_Odd_SSSE3) {
|
||||
|
||||
// Compare C and SSSE3 match.
|
||||
ScaleRowDown2Box_Odd_C(orig_pixels, 128, dst_pixels_c, 64);
|
||||
ScaleRowDown2Box_Odd_SSSE3(orig_pixels, 128, dst_pixels_opt, 64);
|
||||
for (int i = 0; i < 64; ++i) {
|
||||
EXPECT_EQ(dst_pixels_c[i], dst_pixels_opt[i]);
|
||||
}
|
||||
|
||||
122
util/psnr.cc
122
util/psnr.cc
@ -106,128 +106,11 @@ static uint32_t SumSquareError_NEON(const uint8_t* src_a,
|
||||
return sse;
|
||||
}
|
||||
#elif !defined(LIBYUV_DISABLE_X86) && defined(_M_IX86) && defined(_MSC_VER)
|
||||
#define HAS_SUMSQUAREERROR_SSE2
|
||||
__declspec(naked) static uint32_t SumSquareError_SSE2(const uint8_t* /*src_a*/,
|
||||
const uint8_t* /*src_b*/,
|
||||
int /*count*/) {
|
||||
__asm {
|
||||
mov eax, [esp + 4] // src_a
|
||||
mov edx, [esp + 8] // src_b
|
||||
mov ecx, [esp + 12] // count
|
||||
pxor xmm0, xmm0
|
||||
pxor xmm5, xmm5
|
||||
sub edx, eax
|
||||
|
||||
wloop:
|
||||
movdqu xmm1, [eax]
|
||||
movdqu xmm2, [eax + edx]
|
||||
lea eax, [eax + 16]
|
||||
movdqu xmm3, xmm1
|
||||
psubusb xmm1, xmm2
|
||||
psubusb xmm2, xmm3
|
||||
por xmm1, xmm2
|
||||
movdqu xmm2, xmm1
|
||||
punpcklbw xmm1, xmm5
|
||||
punpckhbw xmm2, xmm5
|
||||
pmaddwd xmm1, xmm1
|
||||
pmaddwd xmm2, xmm2
|
||||
paddd xmm0, xmm1
|
||||
paddd xmm0, xmm2
|
||||
sub ecx, 16
|
||||
ja wloop
|
||||
|
||||
pshufd xmm1, xmm0, 0EEh
|
||||
paddd xmm0, xmm1
|
||||
pshufd xmm1, xmm0, 01h
|
||||
paddd xmm0, xmm1
|
||||
movd eax, xmm0
|
||||
ret
|
||||
}
|
||||
}
|
||||
#elif !defined(LIBYUV_DISABLE_X86) && (defined(__x86_64__) || defined(__i386__))
|
||||
#define HAS_SUMSQUAREERROR_SSE2
|
||||
static uint32_t SumSquareError_SSE2(const uint8_t* src_a,
|
||||
const uint8_t* src_b,
|
||||
int count) {
|
||||
uint32_t sse;
|
||||
asm volatile( // NOLINT
|
||||
"pxor %%xmm0,%%xmm0 \n"
|
||||
"pxor %%xmm5,%%xmm5 \n"
|
||||
"sub %0,%1 \n"
|
||||
|
||||
"1: \n"
|
||||
"movdqu (%0),%%xmm1 \n"
|
||||
"movdqu (%0,%1,1),%%xmm2 \n"
|
||||
"lea 0x10(%0),%0 \n"
|
||||
"movdqu %%xmm1,%%xmm3 \n"
|
||||
"psubusb %%xmm2,%%xmm1 \n"
|
||||
"psubusb %%xmm3,%%xmm2 \n"
|
||||
"por %%xmm2,%%xmm1 \n"
|
||||
"movdqu %%xmm1,%%xmm2 \n"
|
||||
"punpcklbw %%xmm5,%%xmm1 \n"
|
||||
"punpckhbw %%xmm5,%%xmm2 \n"
|
||||
"pmaddwd %%xmm1,%%xmm1 \n"
|
||||
"pmaddwd %%xmm2,%%xmm2 \n"
|
||||
"paddd %%xmm1,%%xmm0 \n"
|
||||
"paddd %%xmm2,%%xmm0 \n"
|
||||
"sub $0x10,%2 \n"
|
||||
"ja 1b \n"
|
||||
|
||||
"pshufd $0xee,%%xmm0,%%xmm1 \n"
|
||||
"paddd %%xmm1,%%xmm0 \n"
|
||||
"pshufd $0x1,%%xmm0,%%xmm1 \n"
|
||||
"paddd %%xmm1,%%xmm0 \n"
|
||||
"movd %%xmm0,%3 \n"
|
||||
|
||||
: "+r"(src_a), // %0
|
||||
"+r"(src_b), // %1
|
||||
"+r"(count), // %2
|
||||
"=g"(sse) // %3
|
||||
:
|
||||
: "memory", "cc"
|
||||
#if defined(__SSE2__)
|
||||
,
|
||||
"xmm0", "xmm1", "xmm2", "xmm3", "xmm5"
|
||||
#endif
|
||||
); // NOLINT
|
||||
return sse;
|
||||
}
|
||||
#endif // LIBYUV_DISABLE_X86 etc
|
||||
|
||||
#if defined(HAS_SUMSQUAREERROR_SSE2)
|
||||
#if (defined(__pic__) || defined(__APPLE__)) && defined(__i386__)
|
||||
static __inline void __cpuid(int cpu_info[4], int info_type) {
|
||||
asm volatile( // NOLINT
|
||||
"mov %%ebx, %%edi \n"
|
||||
"cpuid \n"
|
||||
"xchg %%edi, %%ebx \n"
|
||||
: "=a"(cpu_info[0]), "=D"(cpu_info[1]), "=c"(cpu_info[2]),
|
||||
"=d"(cpu_info[3])
|
||||
: "a"(info_type));
|
||||
}
|
||||
// For gcc/clang but not clangcl.
|
||||
#elif !defined(_MSC_VER) && (defined(__i386__) || defined(__x86_64__))
|
||||
static __inline void __cpuid(int cpu_info[4], int info_type) {
|
||||
asm volatile( // NOLINT
|
||||
"cpuid \n"
|
||||
: "=a"(cpu_info[0]), "=b"(cpu_info[1]), "=c"(cpu_info[2]),
|
||||
"=d"(cpu_info[3])
|
||||
: "a"(info_type));
|
||||
}
|
||||
#endif
|
||||
|
||||
static int CpuHasSSE2() {
|
||||
#if defined(__i386__) || defined(__x86_64__) || defined(_M_IX86)
|
||||
int cpu_info[4];
|
||||
__cpuid(cpu_info, 1);
|
||||
if (cpu_info[3] & 0x04000000) {
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
#endif // HAS_SUMSQUAREERROR_SSE2
|
||||
|
||||
static uint32_t SumSquareError_C(const uint8_t* src_a,
|
||||
const uint8_t* src_b,
|
||||
int count) {
|
||||
@ -246,11 +129,6 @@ double ComputeSumSquareError(const uint8_t* src_a,
|
||||
int count) = SumSquareError_C;
|
||||
#if defined(HAS_SUMSQUAREERROR_NEON)
|
||||
SumSquareError = SumSquareError_NEON;
|
||||
#endif
|
||||
#if defined(HAS_SUMSQUAREERROR_SSE2)
|
||||
if (CpuHasSSE2()) {
|
||||
SumSquareError = SumSquareError_SSE2;
|
||||
}
|
||||
#endif
|
||||
const int kBlockSize = 1 << 15;
|
||||
uint64_t sse = 0;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user