From 7ef0d724cd44a4058c3d7619e51d16c2bc1aa7fd Mon Sep 17 00:00:00 2001 From: mtytel Date: Fri, 24 Jun 2016 16:05:26 -0400 Subject: [PATCH] Parallelizing SampleAndHold processor. --- src/operators.cpp | 7 +++++-- src/operators.h | 6 +++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/operators.cpp b/src/operators.cpp index 94ea08e443..9ac0fea6d5 100644 --- a/src/operators.cpp +++ b/src/operators.cpp @@ -214,11 +214,14 @@ namespace mopo { } void SampleAndHoldBuffer::process() { - if (input()->source->buffer[0] == output()->buffer[0]) + mopo_float value = input()->source->buffer[0]; + mopo_float* dest = output()->buffer; + if (value == dest[0]) return; + #pragma clang loop vectorize(enable) interleave(enable) for (int i = 0; i < buffer_size_; ++i) - tick(i); + bufferTick(dest, value, i); processTriggers(); } diff --git a/src/operators.h b/src/operators.h index 5289b9e659..fdcd99eb86 100644 --- a/src/operators.h +++ b/src/operators.h @@ -479,11 +479,11 @@ namespace mopo { void process() override; inline void tick(int i) override { - bufferTick(output()->buffer, input()->source->buffer, i); + bufferTick(output()->buffer, input()->source->buffer[0], i); } - inline void bufferTick(mopo_float* dest, const mopo_float* source, int i) { - dest[i] = source[0]; + inline void bufferTick(mopo_float* dest, mopo_float value, int i) { + dest[i] = value; } };