aboutsummaryrefslogtreecommitdiff
path: root/src/absgn~.c
diff options
context:
space:
mode:
authorIOhannes m zmölnig <zmoelnig@users.sourceforge.net>2010-01-19 14:56:40 +0000
committerIOhannes m zmölnig <zmoelnig@users.sourceforge.net>2010-01-19 14:56:40 +0000
commit4934f05ba8e55f58ed5762180ea317da50a00a05 (patch)
treed1568a29be25660351692ab6a11fc785b179b158 /src/absgn~.c
parent6d3d4743b01e15a82444b2ca900b60094e3c1800 (diff)
SIMD code hopefully now also works on 64bit
svn path=/trunk/externals/zexy/; revision=13045
Diffstat (limited to 'src/absgn~.c')
-rw-r--r--src/absgn~.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/absgn~.c b/src/absgn~.c
index 2279ade..73a0450 100644
--- a/src/absgn~.c
+++ b/src/absgn~.c
@@ -11,7 +11,7 @@
*
******************************************************/
-#include "zexy.h"
+#include "zexySIMD.h"
typedef struct _absgn
{
@@ -46,8 +46,8 @@ static t_int *sigABSGN_perform(t_int *w)
}
#ifdef __SSE__
-static long l_bitmask[] ={0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff};
-static long l_sgnbitmask[]={0x80000000, 0x80000000, 0x80000000, 0x80000000};
+static int l_bitmask[] ={0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff};
+static int l_sgnbitmask[]={0x80000000, 0x80000000, 0x80000000, 0x80000000};
static t_int *sigABSGN_performSSE(t_int *w)
{
__m128 *in = (__m128 *)(w[1]);
@@ -91,11 +91,12 @@ static void sigABSGN_dsp(t_absgn *x, t_signal **sp)
ZEXY_USEVAR(x);
#ifdef __SSE__
if(
- Z_SIMD_CHKBLOCKSIZE(sp[0]->s_n)&&
- Z_SIMD_CHKALIGN(sp[0]->s_vec)&&
- Z_SIMD_CHKALIGN(sp[1]->s_vec)&&
- Z_SIMD_CHKALIGN(sp[2]->s_vec)&&
- ZEXY_TYPE_EQUAL(t_sample, float)
+ ZEXY_TYPE_EQUAL(t_sample, float) && /* currently SSE2 code is only for float (not for double) */
+ Z_SIMD_CHKBLOCKSIZE(sp[0]->s_n) &&
+ Z_SIMD_CHKALIGN(sp[0]->s_vec) &&
+ Z_SIMD_CHKALIGN(sp[1]->s_vec) &&
+ Z_SIMD_CHKALIGN(sp[2]->s_vec) &&
+ zexy_testSSE(sigABSGN_perform, sigABSGN_performSSE, 1, 2)
)
{
dsp_add(sigABSGN_performSSE, 4, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);