#include <xmmintrin.h>
#include <immintrin.h>
-#include "ardour/types.h"
+#include <stdint.h>
void
-x86_sse_avx_find_peaks(const ARDOUR::Sample* buf, ARDOUR::pframes_t nframes, float *min, float *max)
+x86_sse_avx_find_peaks(const float* buf, uint32_t nframes, float *min, float *max)
{
__m256 current_max, current_min, work;
// Work input until "buf" reaches 16 byte alignment
while ( ((intptr_t)buf) % 32 != 0 && nframes > 0) {
-
+
// Load the next float into the work buffer
work = _mm256_set1_ps(*buf);
// use 64 byte prefetch for quadruple quads:
// load each 64 bytes into cash before processing
while (nframes >= 16) {
-#if defined(COMPILER_MSVC) || defined(COMPILER_MINGW)
+#if defined(COMPILER_MSVC) || defined(COMPILER_MINGW)
_mm_prefetch(((char*)buf+64), _mm_hint(0) );
-#else
+#else
__builtin_prefetch(buf+64,0,0);
#endif
work = _mm256_load_ps(buf);