1From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2From: Misty De Meo <mistydemeo@gmail.com>
3Date: Tue, 15 Sep 2020 16:57:26 -0700
4Subject: [PATCH] Check for __arm64__, not just __arm__
5
6On at least one 64-bit ARM processor I've tested (Apple Silicon on macOS),
7__arm__ isn't defined but __arm64__ is. As a result, some of the
8ARM-specific macros are missing and calls to them fail.
9---
10 src/cr-core.c | 2 +-
11 src/dev32s.h | 2 +-
12 src/pffft-wrap.c | 2 +-
13 src/pffft.c | 4 ++--
14 4 files changed, 5 insertions(+), 5 deletions(-)
15
16diff --git a/src/cr-core.c b/src/cr-core.c
17index 159a5d9..fe5ea8a 100644
18--- a/src/cr-core.c
19+++ b/src/cr-core.c
20@@ -80,7 +80,7 @@ static void cubic_stage_fn(stage_t * p, fifo_t * output_fifo)
21 #define DEFINED_X86 0
22 #endif
23
24-#if defined __arm__
25+#if defined(__arm__) || defined(__arm64__)
26 #define DEFINED_ARM 1
27 #else
28 #define DEFINED_ARM 0
29diff --git a/src/dev32s.h b/src/dev32s.h
30index 7edae86..a14d7ad 100644
31--- a/src/dev32s.h
32+++ b/src/dev32s.h
33@@ -31,7 +31,7 @@ SIMD_INLINE(void) vStorSum(float * a, v4_t b) {
34 v4_t t = vAdd(_mm_movehl_ps(b, b), b);
35 _mm_store_ss(a, vAdd(t, _mm_shuffle_ps(t,t,1)));}
36
37-#elif defined __arm__
38+#elif defined(__arm__) || defined(__arm64__)
39
40 #include <arm_neon.h>
41
42diff --git a/src/pffft-wrap.c b/src/pffft-wrap.c
43index c920f06..1641fc4 100644
44--- a/src/pffft-wrap.c
45+++ b/src/pffft-wrap.c
46@@ -40,7 +40,7 @@ static void pffft_zconvolve(PFFFT_Setup *s, const float *a, const float *b, floa
47
48 float ar, ai, br, bi;
49
50-#ifdef __arm__
51+#if defined(__arm__) || defined(__arm64__)
52 __builtin_prefetch(va);
53 __builtin_prefetch(vb);
54 __builtin_prefetch(va+2);
55diff --git a/src/pffft.c b/src/pffft.c
56index 46c841e..8c775a9 100644
57--- a/src/pffft.c
58+++ b/src/pffft.c
59@@ -157,7 +157,7 @@ typedef __m128 v4sf;
60 /*
61 ARM NEON support macros
62 */
63-#elif !defined(PFFFT_SIMD_DISABLE) && defined(__arm__)
64+#elif !defined(PFFFT_SIMD_DISABLE) && (defined(__arm__) || defined(__arm64__))
65 # include <arm_neon.h>
66 typedef float32x4_t v4sf;
67 # define SIMD_SZ 4
68@@ -1732,7 +1732,7 @@ void pffft_zconvolve_accumulate(PFFFT_Setup *s, const float *a, const float *b,
69 const v4sf * RESTRICT vb = (const v4sf*)b;
70 v4sf * RESTRICT vab = (v4sf*)ab;
71
72-#ifdef __arm__
73+#if defined(__arm__) || defined(__arm64__)
74 __builtin_prefetch(va);
75 __builtin_prefetch(vb);
76 __builtin_prefetch(vab);
77--
782.30.1
79