Merge "libpng NEON enablement for ARM64"
diff --git a/Android.mk b/Android.mk
index 41f89c9..d923da0 100644
--- a/Android.mk
+++ b/Android.mk
@@ -24,6 +24,8 @@
 my_cflags_arm := -DPNG_ARM_NEON_OPT=2 -DPNG_ARM_NEON_CHECK_SUPPORTED
 endif
 
+my_cflags_arm64 := -DPNG_ARM_NEON_OPT=2 -DPNG_ARM_NEON_CHECK_SUPPORTED
+
 # BUG: http://llvm.org/PR19472 - SLP vectorization (on ARM at least) crashes
 # when we can't lower a vectorized bswap.
 my_cflags_arm += -fno-slp-vectorize
@@ -83,6 +85,8 @@
 LOCAL_CFLAGS_arm := $(my_cflags_arm)
 LOCAL_ASFLAGS += $(common_ASFLAGS)
 LOCAL_SRC_FILES_arm := $(my_src_files_arm)
+LOCAL_CFLAGS_arm64 := $(my_cflags_arm64)
+LOCAL_SRC_FILES_arm64 := $(my_src_files_arm)
 
 LOCAL_C_INCLUDES += $(common_C_INCLUDES) \
 	external/zlib
@@ -103,6 +107,8 @@
 LOCAL_CFLAGS_arm := $(my_cflags_arm)
 LOCAL_ASFLAGS += $(common_ASFLAGS)
 LOCAL_SRC_FILES_arm := $(my_src_files_arm)
+LOCAL_CFLAGS_arm64 := $(my_cflags_arm64)
+LOCAL_SRC_FILES_arm64 := $(my_src_files_arm)
 
 LOCAL_C_INCLUDES += $(common_C_INCLUDES) \
 	external/zlib
diff --git a/pngpriv.h b/pngpriv.h
index 8ced0f7..96b0ca1 100644
--- a/pngpriv.h
+++ b/pngpriv.h
@@ -119,8 +119,12 @@
     * PNG_ARM_NEON_OPT is set in CPPFLAGS (to >0) then arm/arm_init.c will fail
     * to compile with an appropriate #error if ALIGNED_MEMORY has been turned
     * off.
+    *
+    * Note that gcc-4.9 defines __ARM_NEON instead of __ARM_NEON__, so we
+    * check both variants.
     */
-#  if defined(__ARM_NEON__) && defined(PNG_ALIGNED_MEMORY_SUPPORTED)
+#  if (defined(__ARM_NEON__) || defined(__ARM_NEON)) && \
+   defined(PNG_ALIGNED_MEMORY_SUPPORTED)
 #     define PNG_ARM_NEON_OPT 2
 #  else
 #     define PNG_ARM_NEON_OPT 0
@@ -148,7 +152,7 @@
     * libpng implementation list for incorporation in the next minor release.
     */
 #  ifndef PNG_ARM_NEON_IMPLEMENTATION
-#     ifdef __ARM_NEON__
+#     if defined(__ARM_NEON__) || defined(__ARM_NEON)
 #        if defined(__clang__)
             /* At present it is unknown by the libpng developers which versions
              * of clang support the intrinsics, however some or perhaps all