diff options
author | Mika Lindqvist <postmaster@raasu.org> | 2020-04-25 12:38:41 +0300 |
---|---|---|
committer | Hans Kristian Rosbach <hk-github@circlestorm.org> | 2020-05-02 12:41:10 +0200 |
commit | 2a31408e13816410c1276e53f68eec7777281704 (patch) | |
tree | 329787ddee022cfed3bd37810c020a3a0d2cd5b9 | |
parent | f810fc8aab021cf294405b2e2d5c38ea4be85356 (diff) |
Fix ARM64 build with Visual C++.
-rw-r--r-- | arch/arm/adler32_neon.c | 6 | ||||
-rw-r--r-- | arch/arm/slide_neon.c | 8 | ||||
-rw-r--r-- | functable.c | 4 | ||||
-rw-r--r-- | memcopy.h | 6 | ||||
-rw-r--r-- | win32/Makefile.a64 | 2 |
5 files changed, 21 insertions, 5 deletions
diff --git a/arch/arm/adler32_neon.c b/arch/arm/adler32_neon.c index 71973a1..3e0540c 100644 --- a/arch/arm/adler32_neon.c +++ b/arch/arm/adler32_neon.c @@ -18,7 +18,11 @@ */ #include "adler32_neon.h" #if defined(__ARM_NEON__) || defined(__ARM_NEON) -#include <arm_neon.h> +#ifdef _M_ARM64 +# include <arm64_neon.h> +#else +# include <arm_neon.h> +#endif #include "../../adler32_p.h" static void NEON_accum32(uint32_t *s, const unsigned char *buf, size_t len) { diff --git a/arch/arm/slide_neon.c b/arch/arm/slide_neon.c index 352d5a6..c370734 100644 --- a/arch/arm/slide_neon.c +++ b/arch/arm/slide_neon.c @@ -1,5 +1,5 @@ /* slide_neon.c -- Optimized hash table shifting for ARM with support for NEON instructions - * Copyright (C) 2017 Mika T. Lindqvist + * Copyright (C) 2017-2020 Mika T. Lindqvist * * Authors: * Mika T. Lindqvist <postmaster@raasu.org> @@ -9,7 +9,11 @@ */ #if defined(ARM_NEON_SLIDEHASH) -#include <arm_neon.h> +#ifdef _M_ARM64 +# include <arm64_neon.h> +#else +# include <arm_neon.h> +#endif #include "../../zbuild.h" #include "../../deflate.h" diff --git a/functable.c b/functable.c index 8f63450..ca9b82f 100644 --- a/functable.c +++ b/functable.c @@ -131,7 +131,9 @@ ZLIB_INTERNAL void slide_hash_stub(deflate_state *s) { # endif functable.slide_hash = &slide_hash_sse2; #elif defined(ARM_NEON_SLIDEHASH) +# ifndef ARM_NOCHECK_NEON if (arm_cpu_has_neon) +# endif functable.slide_hash = &slide_hash_neon; #endif #ifdef X86_AVX2 @@ -148,7 +150,9 @@ ZLIB_INTERNAL uint32_t adler32_stub(uint32_t adler, const unsigned char *buf, si cpu_check_features(); #if (defined(__ARM_NEON__) || defined(__ARM_NEON)) && defined(ARM_NEON_ADLER32) +# ifndef ARM_NOCHECK_NEON if (arm_cpu_has_neon) +# endif functable.adler32 = &adler32_neon; #endif @@ -19,7 +19,11 @@ static inline uint64_t load_64_bits(const unsigned char *in, unsigned bits) { } #if defined(__ARM_NEON__) || defined(__ARM_NEON) -#include <arm_neon.h> +#ifdef _M_ARM64 +# include <arm64_neon.h> +#else +# include <arm_neon.h> +#endif typedef uint8x16_t inffast_chunk_t; #define INFFAST_CHUNKSIZE sizeof(inffast_chunk_t) #endif diff --git a/win32/Makefile.a64 b/win32/Makefile.a64 index 94e7f57..52aafd3 100644 --- a/win32/Makefile.a64 +++ b/win32/Makefile.a64 @@ -51,7 +51,7 @@ RESFILE = zlib-ng1.res SUFFIX = -ng !endif WFLAGS = $(WFLAGS) -DARM_ACLE_CRC_HASH -D__ARM_NEON__=1 -DARM_NEON_ADLER32 -DARM_NEON_SLIDEHASH -DARM_NOCHECK_NEON -OBJS = $(OBJS) crc32_acle.obj insert_string_acle.obj slide_neon.obj .adler32_neon.obj +OBJS = $(OBJS) crc32_acle.obj insert_string_acle.obj slide_neon.obj adler32_neon.obj # targets all: $(STATICLIB) $(SHAREDLIB) $(IMPLIB) \ |