summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMika Lindqvist <postmaster@raasu.org>2020-04-25 12:38:41 +0300
committerHans Kristian Rosbach <hk-github@circlestorm.org>2020-05-02 12:41:10 +0200
commit2a31408e13816410c1276e53f68eec7777281704 (patch)
tree329787ddee022cfed3bd37810c020a3a0d2cd5b9
parentf810fc8aab021cf294405b2e2d5c38ea4be85356 (diff)
Fix ARM64 build with Visual C++.
-rw-r--r--arch/arm/adler32_neon.c6
-rw-r--r--arch/arm/slide_neon.c8
-rw-r--r--functable.c4
-rw-r--r--memcopy.h6
-rw-r--r--win32/Makefile.a642
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
diff --git a/memcopy.h b/memcopy.h
index 47bfbda..6589daa 100644
--- a/memcopy.h
+++ b/memcopy.h
@@ -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) \