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 <imp@bsdimp.com>
This commit is contained in:
parent
1e47a75abf
commit
43c0054405
@ -19,7 +19,7 @@
|
|||||||
/*-*************************************
|
/*-*************************************
|
||||||
* Dependencies
|
* Dependencies
|
||||||
***************************************/
|
***************************************/
|
||||||
#if !defined(ZSTD_NO_INTRINSICS) && defined(__aarch64__)
|
#if !defined(ZSTD_NO_INTRINSICS) && defined(__ARM_NEON)
|
||||||
#include <arm_neon.h>
|
#include <arm_neon.h>
|
||||||
#endif
|
#endif
|
||||||
#include "compiler.h"
|
#include "compiler.h"
|
||||||
@ -242,7 +242,7 @@ static UNUSED_ATTR const U32 OF_defaultNormLog = OF_DEFAULTNORMLOG;
|
|||||||
* Shared functions to include for inlining
|
* Shared functions to include for inlining
|
||||||
*********************************************/
|
*********************************************/
|
||||||
static void ZSTD_copy8(void* dst, const void* src) {
|
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));
|
vst1_u8((uint8_t*)dst, vld1_u8((const uint8_t*)src));
|
||||||
#else
|
#else
|
||||||
ZSTD_memcpy(dst, src, 8);
|
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; }
|
#define COPY8(d,s) { ZSTD_copy8(d,s); d+=8; s+=8; }
|
||||||
static void ZSTD_copy16(void* dst, const void* src) {
|
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));
|
vst1q_u8((uint8_t*)dst, vld1q_u8((const uint8_t*)src));
|
||||||
#else
|
#else
|
||||||
ZSTD_memcpy(dst, src, 16);
|
ZSTD_memcpy(dst, src, 16);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user