| Index: source/row_any.cc
|
| diff --git a/source/row_any.cc b/source/row_any.cc
|
| index 28b6758fc13660d39ea32ff54c897af74e12c6ba..0a978e98792fd1279ebe98169d4df8c84fed3b13 100644
|
| --- a/source/row_any.cc
|
| +++ b/source/row_any.cc
|
| @@ -546,6 +546,28 @@ ANY11P(ARGBShuffleRow_Any_NEON, ARGBShuffleRow_NEON, const uint8*, 4, 4, 3)
|
| #endif
|
| #undef ANY11P
|
|
|
| +// Any 1 to 1 with parameter and shorts. BPP measures in shorts.
|
| +#define ANY11P16(NAMEANY, ANY_SIMD, T, SBPP, BPP, MASK) \
|
| + void NAMEANY(const uint16* src_ptr, uint16* dst_ptr, \
|
| + T shuffler, int width) { \
|
| + SIMD_ALIGNED(uint16 temp[32 * 2]); \
|
| + memset(temp, 0, 64); /* for msan */ \
|
| + int r = width & MASK; \
|
| + int n = width & ~MASK; \
|
| + if (n > 0) { \
|
| + ANY_SIMD(src_ptr, dst_ptr, shuffler, n); \
|
| + } \
|
| + memcpy(temp, src_ptr + n * SBPP, r * SBPP); \
|
| + ANY_SIMD(temp, temp + 64, shuffler, MASK + 1); \
|
| + memcpy(dst_ptr + n * BPP, temp + 64, r * BPP); \
|
| + }
|
| +
|
| +#ifdef HAS_HALFFLOATROW_AVX2
|
| +ANY11P16(HalfFloatRow_Any_AVX2, HalfFloatRow_AVX2, float, 1, 1, 15)
|
| +#endif
|
| +#undef ANY11P16
|
| +
|
| +
|
| // Any 1 to 1 with yuvconstants
|
| #define ANY11C(NAMEANY, ANY_SIMD, UVSHIFT, SBPP, BPP, MASK) \
|
| void NAMEANY(const uint8* src_ptr, uint8* dst_ptr, \
|
|
|