diff options
-rw-r--r-- | src/macros-neon.h | 31 |
1 files changed, 14 insertions, 17 deletions
diff --git a/src/macros-neon.h b/src/macros-neon.h index c8b5720..c015f47 100644 --- a/src/macros-neon.h +++ b/src/macros-neon.h @@ -29,8 +29,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef __MACROS_NEON_H__ -#define __MACROS_NEON_H__ +#ifndef FFTS_MACROS_NEON_H +#define FFTS_MACROS_NEON_H #include "neon.h" #include <arm_neon.h> @@ -47,9 +47,9 @@ typedef float32x4x2_t VS; #define VMUL vmulq_f32 #define VXOR(x,y) (vreinterpretq_f32_u32(veorq_u32(vreinterpretq_u32_f32(x), vreinterpretq_u32_f32(y)))) #define VST vst1q_f32 -#define VLD vld1q_f32 +#define VLD vld1q_f32 #define VST2 vst2q_f32 -#define VLD2 vld2q_f32 +#define VLD2 vld2q_f32 #define VSWAPPAIRS(x) (vrev64q_f32(x)) @@ -58,7 +58,7 @@ typedef float32x4x2_t VS; #define VBLEND(x,y) (vcombine_f32(vget_low_f32(x), vget_high_f32(y))) -__INLINE V VLIT4(data_t f3, data_t f2, data_t f1, data_t f0) { +static FFTS_INLINE V VLIT4(data_t f3, data_t f2, data_t f1, data_t f0) { data_t __attribute__ ((aligned(16))) d[4] = {f0, f1, f2, f3}; return VLD(d); } @@ -69,29 +69,26 @@ __INLINE V VLIT4(data_t f3, data_t f2, data_t f1, data_t f0) { #define FFTS_MALLOC(d,a) (valloc(d)) #define FFTS_FREE(d) (free(d)) -__INLINE void STORESPR(data_t * addr, VS p) { - +static FFTS_INLINE void STORESPR(data_t * addr, VS p) { vst1q_f32(addr, p.val[0]); vst1q_f32(addr + 4, p.val[1]); - } -__INLINE V IMULI(int inv, V a) { - if(inv) return VSWAPPAIRS(VXOR(a, VLIT4(0.0f, -0.0f, 0.0f, -0.0f))); +static FFTS_INLINE V IMULI(int inv, V a) { + if (inv) return VSWAPPAIRS(VXOR(a, VLIT4(0.0f, -0.0f, 0.0f, -0.0f))); else return VSWAPPAIRS(VXOR(a, VLIT4(-0.0f, 0.0f, -0.0f, 0.0f))); } -__INLINE V IMUL(V d, V re, V im) { - re = VMUL(re, d); +static FFTS_INLINE V IMUL(V d, V re, V im) { + re = VMUL(re, d); im = VMUL(im, VSWAPPAIRS(d)); - return VSUB(re, im); + return VSUB(re, im); } -__INLINE V IMULJ(V d, V re, V im) { - re = VMUL(re, d); +static FFTS_INLINE V IMULJ(V d, V re, V im) { + re = VMUL(re, d); im = VMUL(im, VSWAPPAIRS(d)); return VADD(re, im); } -#endif -// vim: set autoindent noexpandtab tabstop=3 shiftwidth=3: +#endif /* FFTS_MACROS_NEON_H */ |