summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/macros-neon.h31
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 */
OpenPOWER on IntegriCloud