Index: source/libvpx/third_party/libyuv/include/libyuv/row.h |
=================================================================== |
--- source/libvpx/third_party/libyuv/include/libyuv/row.h (revision 290053) |
+++ source/libvpx/third_party/libyuv/include/libyuv/row.h (working copy) |
@@ -13,8 +13,12 @@ |
#include <stdlib.h> // For malloc. |
-#include "basic_types.h" |
+#include "libyuv/basic_types.h" |
+#if defined(__native_client__) |
+#include "ppapi/c/pp_macros.h" // For PPAPI_RELEASE |
+#endif |
+ |
#ifdef __cplusplus |
namespace libyuv { |
extern "C" { |
@@ -38,7 +42,8 @@ |
var = 0 |
#if defined(__pnacl__) || defined(__CLR_VER) || defined(COVERAGE_ENABLED) || \ |
- defined(TARGET_IPHONE_SIMULATOR) |
+ defined(TARGET_IPHONE_SIMULATOR) || \ |
+ (defined(_MSC_VER) && defined(__clang__)) |
#define LIBYUV_DISABLE_X86 |
#endif |
// True if compiling for SSSE3 as a requirement. |
@@ -47,7 +52,12 @@ |
#endif |
// Enable for NaCL pepper 33 for bundle and AVX2 support. |
-// #define NEW_BINUTILS |
+#if defined(__native_client__) && PPAPI_RELEASE >= 33 |
+#define NEW_BINUTILS |
+#endif |
+#if defined(__native_client__) && defined(__arm__) && PPAPI_RELEASE < 37 |
+#define LIBYUV_DISABLE_NEON |
+#endif |
// The following are available on all x86 platforms: |
#if !defined(LIBYUV_DISABLE_X86) && \ |
@@ -152,6 +162,11 @@ |
#define HAS_YUY2TOYROW_SSE2 |
#endif |
+// The following are available on x64 Visual C: |
+#if !defined(LIBYUV_DISABLE_X86) && defined (_M_X64) |
+#define HAS_I422TOARGBROW_SSSE3 |
+#endif |
+ |
// GCC >= 4.7.0 required for AVX2. |
#if defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__)) |
#if (__GNUC__ > 4) || (__GNUC__ == 4 && (__GNUC_MINOR__ >= 7)) |
@@ -235,6 +250,10 @@ |
#define HAS_MIRRORROW_SSE2 |
#endif |
+// The following are available on arm64 platforms: |
+#if !defined(LIBYUV_DISABLE_NEON) && defined(__aarch64__) |
+#endif |
+ |
// The following are available on Neon platforms: |
#if !defined(LIBYUV_DISABLE_NEON) && \ |
(defined(__ARM_NEON__) || defined(LIBYUV_NEON)) |
@@ -330,7 +349,8 @@ |
#endif |
// The following are available on Mips platforms: |
-#if !defined(LIBYUV_DISABLE_MIPS) && defined(__mips__) |
+#if !defined(LIBYUV_DISABLE_MIPS) && defined(__mips__) && \ |
+ (_MIPS_SIM == _MIPS_SIM_ABI32) |
#define HAS_COPYROW_MIPS |
#if defined(__mips_dsp) && (__mips_dsp_rev >= 2) |
#define HAS_I422TOABGRROW_MIPS_DSPR2 |
@@ -426,7 +446,7 @@ |
"lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" \ |
#opcode " (%%r15,%%r14),%" #arg "\n" \ |
BUNDLEUNLOCK |
-#else |
+#else // defined(__native_client__) && defined(__x86_64__) |
#define BUNDLEALIGN "\n" |
#define MEMACCESS(base) "(%" #base ")" |
#define MEMACCESS2(offset, base) #offset "(%" #base ")" |
@@ -443,7 +463,16 @@ |
#opcode " %%" #reg ","#offset "(%" #base ",%" #index "," #scale ")\n" |
#define MEMOPARG(opcode, offset, base, index, scale, arg) \ |
#opcode " " #offset "(%" #base ",%" #index "," #scale "),%" #arg "\n" |
+#endif // defined(__native_client__) && defined(__x86_64__) |
+ |
+#if defined(__arm__) |
+#undef MEMACCESS |
+#if defined(__native_client__) |
+#define MEMACCESS(base) ".p2align 3\nbic %" #base ", #0xc0000000\n" |
+#else |
+#define MEMACCESS(base) "\n" |
#endif |
+#endif |
void I444ToARGBRow_NEON(const uint8* src_y, |
const uint8* src_u, |