Update of /cvsroot/pure-data/pd/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8072
Modified Files:
Tag: devel_0_37
g_io.c
Log Message:
vectorized vinlet_perform
Index: g_io.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_io.c,v
retrieving revision 1.1.1.1.16.2
retrieving revision 1.1.1.1.16.3
diff -C2 -d -r1.1.1.1.16.2 -r1.1.1.1.16.3
*** g_io.c 25 Nov 2003 19:19:57 -0000 1.1.1.1.16.2
--- g_io.c 6 Sep 2004 08:02:43 -0000 1.1.1.1.16.3
***************
*** 128,131 ****
--- 128,150 ----
}
+ /* tb: vectorized */
+ t_int *vinlet_perf8(t_int *w)
+ {
+ t_vinlet *x = (t_vinlet *)(w[1]);
+ t_float *out = (t_float *)(w[2]);
+ int n = (int)(w[3]);
+ t_float *in = x->x_read;
+
+ for (; n; n -= 8, in += 8, out += 8)
+ {
+ out[0] = in[0]; out[1] = in[1]; out[2] = in[2]; out[3] = in[3];
+ out[4] = in[4]; out[5] = in[5]; out[6] = in[6]; out[7] = in[7];
+ }
+
+ if (in == x->x_endbuf) in = x->x_buf;
+ x->x_read = in;
+ return (w+4);
+ }
+
static void vinlet_dsp(t_vinlet *x, t_signal **sp)
{
***************
*** 141,145 ****
else
{
! dsp_add(vinlet_perform, 3, x, outsig->s_vec, outsig->s_n);
x->x_read = x->x_buf;
}
--- 160,167 ----
else
{
! if (sp[0]->s_n & 7)
! dsp_add(vinlet_perform, 3, x, outsig->s_vec, outsig->s_n);
! else
! dsp_add(vinlet_perf8, 3, x, outsig->s_vec, outsig->s_n);
x->x_read = x->x_buf;
}