From dcbc90c265de6782a1dc6f2e5e7e9fa3c4743f87 Mon Sep 17 00:00:00 2001 From: Thomas Grill Date: Wed, 26 Jan 2005 05:02:06 +0000 Subject: - fixed typos and 64-bit compatibility usage of symbols for method and attribute adding fixed buggy unbinding of receive symbols reconsidered flext::buffer:Update some restructuring added object construction and destruction flags better templates, some minor changes build system: added profiler mode, more fixes added method for clicks into object box - conform to idle callback functionality in devel_0_38 oops, forgot about SIMD for Windows fix for ToOut calls in dsp time svn path=/trunk/; revision=2540 --- externals/grill/flext/source/flsimd.cpp | 55 +++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) (limited to 'externals/grill/flext/source/flsimd.cpp') diff --git a/externals/grill/flext/source/flsimd.cpp b/externals/grill/flext/source/flsimd.cpp index 9ed22de7..7b35903b 100755 --- a/externals/grill/flext/source/flsimd.cpp +++ b/externals/grill/flext/source/flsimd.cpp @@ -1592,3 +1592,58 @@ loopu: #endif } +void flext::ScaleSamples(t_sample *dst,const t_sample *src,t_sample opmul,const t_sample *add,int cnt) +{ + { + int n = cnt>>3; + cnt -= n<<3; + if(dst == add) { + while(n--) { + dst[0] += src[0]*opmul; dst[1] += src[1]*opmul; + dst[2] += src[2]*opmul; dst[3] += src[3]*opmul; + dst[4] += src[4]*opmul; dst[5] += src[5]*opmul; + dst[6] += src[6]*opmul; dst[7] += src[7]*opmul; + src += 8,dst += 8; + } + while(cnt--) *(dst++) += *(src++)*opmul; + } + else { + while(n--) { + dst[0] = src[0]*opmul+add[0]; dst[1] = src[1]*opmul+add[1]; + dst[2] = src[2]*opmul+add[2]; dst[3] = src[3]*opmul+add[3]; + dst[4] = src[4]*opmul+add[4]; dst[5] = src[5]*opmul+add[5]; + dst[6] = src[6]*opmul+add[6]; dst[7] = src[7]*opmul+add[7]; + src += 8,dst += 8,add += 8; + } + while(cnt--) *(dst++) = *(src++)*opmul+*(add++); + } + } +} + +void flext::ScaleSamples(t_sample *dst,const t_sample *src,const t_sample *mul,const t_sample *add,int cnt) +{ + { + int n = cnt>>3; + cnt -= n<<3; + if(dst == add) { + while(n--) { + dst[0] += src[0]*mul[0]; dst[1] += src[1]*mul[1]; + dst[2] += src[2]*mul[2]; dst[3] += src[3]*mul[3]; + dst[4] += src[4]*mul[4]; dst[5] += src[5]*mul[5]; + dst[6] += src[6]*mul[6]; dst[7] += src[7]*mul[7]; + src += 8,dst += 8,mul += 8; + } + while(cnt--) *(dst++) += *(src++) * *(mul++); + } + else { + while(n--) { + dst[0] = src[0]*mul[0]+add[0]; dst[1] = src[1]*mul[1]+add[1]; + dst[2] = src[2]*mul[2]+add[2]; dst[3] = src[3]*mul[3]+add[3]; + dst[4] = src[4]*mul[4]+add[4]; dst[5] = src[5]*mul[5]+add[5]; + dst[6] = src[6]*mul[6]+add[6]; dst[7] = src[7]*mul[7]+add[7]; + src += 8,dst += 8,mul += 8,add += 8; + } + while(cnt--) *(dst++) = *(src++)* *(mul++) + *(add++); + } + } +} -- cgit v1.2.1