diff --git a/3rdparty/ffts/ffts-master/src/ffts.c b/3rdparty/ffts/ffts-master/src/ffts.c index 7c46bfc..54e5d5e 100755 --- a/3rdparty/ffts/ffts-master/src/ffts.c +++ b/3rdparty/ffts/ffts-master/src/ffts.c @@ -40,10 +40,11 @@ #include "ffts_static.h" #else #include "codegen.h" + #include #endif #include - #include + #include #include /* for PAGESIZE */ @@ -85,6 +86,7 @@ void ffts_free_1d(ffts_plan_t *p) { //free(p->transforms); if(p->transforms) free(p->transforms); +#ifndef DYNAMIC_DISABLED if(p->transform_base) { if (mprotect(p->transform_base, p->transform_size, PROT_READ | PROT_WRITE)) { perror("Couldn't mprotect"); @@ -93,6 +95,7 @@ void ffts_free_1d(ffts_plan_t *p) { munmap(p->transform_base, p->transform_size); //free(p->transform_base); } +#endif free(p); } diff --git a/3rdparty/ffts/ffts-master/src/ffts.h b/3rdparty/ffts/ffts-master/src/ffts.h index f08a6bb..4650dab 100755 --- a/3rdparty/ffts/ffts-master/src/ffts.h +++ b/3rdparty/ffts/ffts-master/src/ffts.h @@ -55,7 +55,13 @@ #define PI 3.1415926535897932384626433832795028841971693993751058209 -static const __attribute__ ((aligned(64))) float w_data[16] = { + +#if defined(_WIN32) || defined(_WIN64) +static const __declspec(align(64)) float w_data[16] = +#else +static const __attribute__ ((aligned(64))) float w_data[16] = +#endif +{ 0.70710678118654757273731092936941, 0.70710678118654746171500846685376, -0.70710678118654757273731092936941, -0.70710678118654746171500846685376, 1.0f, 0.70710678118654757273731092936941f, diff --git a/3rdparty/ffts/ffts-master/src/ffts_nd.c b/3rdparty/ffts/ffts-master/src/ffts_nd.c index ea46c26..fbfd038 100755 --- a/3rdparty/ffts/ffts-master/src/ffts_nd.c +++ b/3rdparty/ffts/ffts-master/src/ffts_nd.c @@ -33,6 +33,10 @@ #include "ffts_nd.h" +#if defined(_WIN32) || defined(_WIN64) +#include "emmintrin.h" +#endif + #ifdef HAVE_NEON #include "neon.h" #endif @@ -163,7 +167,7 @@ void ffts_transpose(uint64_t *in, uint64_t *out, int w, int h, uint64_t *buf) { } #else #ifdef HAVE_SSE - uint64_t tmp[TSIZE*TSIZE] __attribute__((aligned(64))); + __ALIGN64 uint64_t tmp[TSIZE*TSIZE]; int tx, ty; int x, y; int tw = w / TSIZE; diff --git a/3rdparty/ffts/ffts-master/src/ffts_real_nd.c b/3rdparty/ffts/ffts-master/src/ffts_real_nd.c index fe9ef69..9abe9be 100755 --- a/3rdparty/ffts/ffts-master/src/ffts_real_nd.c +++ b/3rdparty/ffts/ffts-master/src/ffts_real_nd.c @@ -151,7 +151,7 @@ ffts_plan_t *ffts_init_nd_real(int rank, size_t *Ns, int sign) { bufsize = 2 * (Ns[0] * ((vol / Ns[0]) / 2 + 1) + vol); } - p->buf = valloc(sizeof(float) * bufsize); + p->buf = (void *)valloc(sizeof(float) * bufsize); for(i=0;iMs[i] = vol / p->Ns[i]; diff --git a/3rdparty/ffts/ffts-master/src/ffts_small.c b/3rdparty/ffts/ffts-master/src/ffts_small.c index e53493c..3ed223f 100755 --- a/3rdparty/ffts/ffts-master/src/ffts_small.c +++ b/3rdparty/ffts/ffts-master/src/ffts_small.c @@ -78,7 +78,7 @@ const data_t *din = (const data_t *)in; data_t *dout = (data_t *)out; V r0_1, r2_3, r4_5, r6_7; - float *LUT8 = p->ws + p->ws_is[0]; + float *LUT8 = (float *)((size_t *)p->ws + p->ws_is[0]); L_4_2(0, din, din+8, din+4, din+12, &r0_1, &r2_3, &r4_5, &r6_7); K_N(0, VLD(LUT8), VLD(LUT8+4), &r0_1, &r2_3, &r4_5, &r6_7); @@ -90,7 +90,7 @@ const data_t *din = (const data_t *)in; data_t *dout = (data_t *)out; V r0_1, r2_3, r4_5, r6_7; - float *LUT8 = p->ws + p->ws_is[0]; + float *LUT8 = (float *)((size_t *)p->ws + p->ws_is[0]); L_4_2(1, din, din+8, din+4, din+12, &r0_1, &r2_3, &r4_5, &r6_7); K_N(1, VLD(LUT8), VLD(LUT8+4), &r0_1, &r2_3, &r4_5, &r6_7); diff --git a/3rdparty/ffts/ffts-master/src/types.h b/3rdparty/ffts/ffts-master/src/types.h index a7425c2..504dfcc 100755 --- a/3rdparty/ffts/ffts-master/src/types.h +++ b/3rdparty/ffts/ffts-master/src/types.h @@ -35,9 +35,15 @@ #ifndef __TYPES_H__ #define __TYPES_H__ +#if defined(_WIN32) || defined(_WIN64) +#define __INLINE static __forceinline +#define __ALIGN64 __declspec(align(64)) +#else +#define __ALIGN64 __attribute__((aligned(64))) #define __INLINE static inline __attribute__((always_inline)) +#endif -#if defined(complex) +#if defined(complex) && !defined(_WIN32) && !defined(_WIN64) typedef complex float cdata_t; #else typedef float cdata_t[2];