comparison dsp/rateconversion/Resampler.cpp @ 498:8b92623e81c9

Use Restrict header
author Chris Cannam <cannam@all-day-breakfast.com>
date Mon, 03 Jun 2019 14:20:07 +0100
parents fdaa63607c15
children
comparison
equal deleted inserted replaced
497:0d3a001e63c7 498:8b92623e81c9
15 #include "Resampler.h" 15 #include "Resampler.h"
16 16
17 #include "maths/MathUtilities.h" 17 #include "maths/MathUtilities.h"
18 #include "base/KaiserWindow.h" 18 #include "base/KaiserWindow.h"
19 #include "base/SincWindow.h" 19 #include "base/SincWindow.h"
20 #include "base/Restrict.h"
20 21
21 #include <iostream> 22 #include <iostream>
22 #include <vector> 23 #include <vector>
23 #include <map> 24 #include <map>
24 #include <cassert> 25 #include <cassert>
283 cerr << "ERROR: n + m_bufferOrigin > m_buffer.size() [" << n << " + " 284 cerr << "ERROR: n + m_bufferOrigin > m_buffer.size() [" << n << " + "
284 << m_bufferOrigin << " > " << m_buffer.size() << "]" << endl; 285 << m_bufferOrigin << " > " << m_buffer.size() << "]" << endl;
285 throw std::logic_error("n + m_bufferOrigin > m_buffer.size()"); 286 throw std::logic_error("n + m_bufferOrigin > m_buffer.size()");
286 } 287 }
287 288
288 #if defined(__MSVC__) 289 const double *const QM_R__ buf(m_buffer.data() + m_bufferOrigin);
289 #define R__ __restrict 290 const double *const QM_R__ filt(pd.filter.data());
290 #elif defined(__GNUC__)
291 #define R__ __restrict__
292 #else
293 #define R__
294 #endif
295
296 const double *const R__ buf(m_buffer.data() + m_bufferOrigin);
297 const double *const R__ filt(pd.filter.data());
298 291
299 for (int i = 0; i < n; ++i) { 292 for (int i = 0; i < n; ++i) {
300 // NB gcc can only vectorize this with -ffast-math 293 // NB gcc can only vectorize this with -ffast-math
301 v += buf[i] * filt[i]; 294 v += buf[i] * filt[i];
302 } 295 }