aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Kyle <stephen.kyle@arm.com>2018-10-08 14:40:11 +0100
committerEugene Kliuchnikov <eustas@google.com>2018-10-08 15:40:11 +0200
commitcc7a74f15fff163319be63a13ae822513336544e (patch)
tree0ebddcf8ee19abe59f6413cbd192fc767e8765c5
parentc94c6f805c881b2a67540f5953a59d963d87a7f8 (diff)
downloadbrotli-cc7a74f15fff163319be63a13ae822513336544e.zip
brotli-cc7a74f15fff163319be63a13ae822513336544e.tar.gz
brotli-cc7a74f15fff163319be63a13ae822513336544e.tar.bz2
decode: fix NEON inclusion (#714)
The macro that checks for NEON support should be __ARM_NEON, not __ARM_NEON__. [1] AArch64 compilers define __ARM_NEON but not __ARM_NEON__. AArch32 compilers currently seem to define both, but could be within their rights to drop __ARM_NEON__ in future versions. This change moves the check into the common/platform.h file, checks for both forms, and sets BROTLI_TARGET_NEON if NEON support is available. [1] Section 6.5.4 of the ARM C Language Extensions. (At the time of writing, the latest version was Release 2.1.)
-rwxr-xr-xc/common/platform.h4
-rw-r--r--c/dec/decode.c4
2 files changed, 6 insertions, 2 deletions
diff --git a/c/common/platform.h b/c/common/platform.h
index 3945a27..93db089 100755
--- a/c/common/platform.h
+++ b/c/common/platform.h
@@ -203,6 +203,10 @@ OR:
#endif /* ARMv8 */
+#if defined(__ARM_NEON__) || defined(__ARM_NEON)
+#define BROTLI_TARGET_NEON
+#endif
+
#if defined(__i386) || defined(_M_IX86)
#define BROTLI_TARGET_X86
#endif
diff --git a/c/dec/decode.c b/c/dec/decode.c
index 1fde329..8f72e85 100644
--- a/c/dec/decode.c
+++ b/c/dec/decode.c
@@ -6,7 +6,7 @@
#include <brotli/decode.h>
-#if defined(__ARM_NEON__)
+#if defined(BROTLI_TARGET_NEON)
#include <arm_neon.h>
#endif
@@ -167,7 +167,7 @@ static BrotliDecoderErrorCode DecodeWindowBits(BrotliDecoderState* s,
}
static BROTLI_INLINE void memmove16(uint8_t* dst, uint8_t* src) {
-#if defined(__ARM_NEON__)
+#if defined(BROTLI_TARGET_NEON)
vst1q_u8(dst, vld1q_u8(src));
#else
uint32_t buffer[4];