aboutsummaryrefslogtreecommitdiff
path: root/ports/fftw3/aligned_malloc.patch
blob: 447ded62b6b9aec949b81d21595c99adee4be63e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
diff --git a/cmake.config.h.in b/cmake.config.h.in
index 1f4c505..fd763cc 100644
--- a/cmake.config.h.in
+++ b/cmake.config.h.in
@@ -112,6 +112,10 @@
    you don't. */
 #cmakedefine01 HAVE_DECL_POSIX_MEMALIGN

+/* Define to 1 if you have the declaration of `_aligned_malloc', and to 0 if you
+   don't. */
+#cmakedefine01 HAVE_DECL_ALIGNED_MALLOC
+
 /* Define to 1 if you have the declaration of `sinl', and to 0 if you don't.
    */
 #cmakedefine01 HAVE_DECL_SINL
@@ -184,6 +188,9 @@
 /* Define to 1 if you have the `memalign' function. */
 #cmakedefine HAVE_MEMALIGN 1

+/* Define to 1 if you have the `_aligned_malloc' function. */
+#cmakedefine HAVE_ALIGNED_MALLOC 1
+
 /* Define to 1 if you have the `memmove' function. */
 #cmakedefine HAVE_MEMMOVE 1

diff --git a/kernel/kalloc.c b/kernel/kalloc.c
index e42f6f3..ffc2257 100644
--- a/kernel/kalloc.c
+++ b/kernel/kalloc.c
@@ -103,7 +103,7 @@ void *X(kernel_malloc)(size_t n)
 #    undef real_free
 #    define real_free _mm_free

-#  elif defined(_MSC_VER)
+#  elif defined(_MSC_VER) || defined (HAVE_ALIGNED_MALLOC)
      /* MS Visual C++ 6.0 with a "Processor Pack" supports SIMD
        and _aligned_malloc/free (uses malloc.h) */
      p = (void *) _aligned_malloc(n, MIN_ALIGNMENT);