From 43c0054405a5b10c82b4a1520b4be0a4ab1f1b7e Mon Sep 17 00:00:00 2001 From: Warner Losh Date: Tue, 13 Oct 2020 12:12:46 -0600 Subject: [PATCH] aarch64: use __ARM_NEON instead of __aarch64__ to control use of neon There are compilation environments in aarch64 where NEON isn't available. While these environments could define ZSTD_NO_INTRINSICS, it's more fail-safe to use the more specific symbol to know if NEON extensions are available. __ARM_NEON is the proper symbol, defined in ARM C Language Extensions Release 2.1 (https://developer.arm.com/documentation/ihi0053/d/). Some sources suggest __ARM_NEON__, but that's the obsolete spelling from prior versions of the standard. Signed-off-by: Warner Losh --- lib/common/zstd_internal.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/common/zstd_internal.h b/lib/common/zstd_internal.h index f57f8f83..bfa98efa 100644 --- a/lib/common/zstd_internal.h +++ b/lib/common/zstd_internal.h @@ -19,7 +19,7 @@ /*-************************************* * Dependencies ***************************************/ -#if !defined(ZSTD_NO_INTRINSICS) && defined(__aarch64__) +#if !defined(ZSTD_NO_INTRINSICS) && defined(__ARM_NEON) #include #endif #include "compiler.h" @@ -242,7 +242,7 @@ static UNUSED_ATTR const U32 OF_defaultNormLog = OF_DEFAULTNORMLOG; * Shared functions to include for inlining *********************************************/ static void ZSTD_copy8(void* dst, const void* src) { -#if !defined(ZSTD_NO_INTRINSICS) && defined(__aarch64__) +#if !defined(ZSTD_NO_INTRINSICS) && defined(__ARM_NEON) vst1_u8((uint8_t*)dst, vld1_u8((const uint8_t*)src)); #else ZSTD_memcpy(dst, src, 8); @@ -251,7 +251,7 @@ static void ZSTD_copy8(void* dst, const void* src) { #define COPY8(d,s) { ZSTD_copy8(d,s); d+=8; s+=8; } static void ZSTD_copy16(void* dst, const void* src) { -#if !defined(ZSTD_NO_INTRINSICS) && defined(__aarch64__) +#if !defined(ZSTD_NO_INTRINSICS) && defined(__ARM_NEON) vst1q_u8((uint8_t*)dst, vld1q_u8((const uint8_t*)src)); #else ZSTD_memcpy(dst, src, 16);