summaryrefslogtreecommitdiff
path: root/Source/Core/AudioCommon/DPL2Decoder.cpp
diff options
context:
space:
mode:
authorScott Mansell <phiren@gmail.com>2015-02-16 13:38:11 +1300
committerScott Mansell <phiren@gmail.com>2015-02-16 13:53:58 +1300
commit43dfec07c92149ba71743c893d231a7efd3c25d2 (patch)
tree483ec6fcfaa768c719666d4ab72bcbbd53dad710 /Source/Core/AudioCommon/DPL2Decoder.cpp
parent7add7b685f930c2de0e8b08c8b2a30a4b6bd092d (diff)
Cleanup DotProduct function to make it more readable.
Diffstat (limited to 'Source/Core/AudioCommon/DPL2Decoder.cpp')
-rw-r--r--Source/Core/AudioCommon/DPL2Decoder.cpp24
1 files changed, 14 insertions, 10 deletions
diff --git a/Source/Core/AudioCommon/DPL2Decoder.cpp b/Source/Core/AudioCommon/DPL2Decoder.cpp
index ca7afc9afa..355d721e15 100644
--- a/Source/Core/AudioCommon/DPL2Decoder.cpp
+++ b/Source/Core/AudioCommon/DPL2Decoder.cpp
@@ -39,21 +39,25 @@ static float *filter_coefs_lfe;
static unsigned int len125;
template<class T, class _ftype_t>
-static _ftype_t DotProduct(int count,const T *buf,const _ftype_t *coefficients)
+static _ftype_t DotProduct(int count, const T *buf, const _ftype_t *coefficients)
{
- float sum0=0,sum1=0,sum2=0,sum3=0;
- for (;count>=4;buf+=4,coefficients+=4,count-=4)
+ int i;
+ float sum0 = 0.0f, sum1 = 0.0f, sum2 = 0.0f, sum3 = 0.0f;
+
+ // Unrolled loop
+ for (i = 0; (i + 3) < count; i += 4)
{
- sum0+=buf[0]*coefficients[0];
- sum1+=buf[1]*coefficients[1];
- sum2+=buf[2]*coefficients[2];
- sum3+=buf[3]*coefficients[3];
+ sum0 += buf[i + 0] * coefficients[i + 0];
+ sum1 += buf[i + 1] * coefficients[i + 1];
+ sum2 += buf[i + 2] * coefficients[i + 2];
+ sum3 += buf[i + 3] * coefficients[i + 3];
}
- while (count--)
- sum0+=*buf++**coefficients++;
+ // Epilogue of unrolled loop
+ for (; i < count; i++)
+ sum0 += buf[i] * coefficients[i];
- return sum0+sum1+sum2+sum3;
+ return sum0 + sum1 + sum2 + sum3;
}
template<class T>