2222#include < lsp-plug.in/test-fw/ptest.h>
2323#include < lsp-plug.in/common/alloc.h>
2424#include < lsp-plug.in/stdlib/math.h>
25+ #include < lsp-plug.in/stdlib/string.h>
2526
2627#define MIN_RANK 8
2728#define MAX_RANK 16
@@ -70,6 +71,20 @@ namespace lsp
7071 typedef void (* fill_value_t )(float *dst, float value, size_t count);
7172}
7273
74+ static void fill_zero_memset (float *dst, size_t count)
75+ {
76+ memset (dst, 0 , count*sizeof (float ));
77+ }
78+
79+ static void fill_zero_bzero (float *dst, size_t count)
80+ {
81+ #ifdef PLATFORM_WINDOWS
82+ ZeroMemory (dst, count*sizeof (float ));
83+ #else
84+ bzero (dst, count*sizeof (float ));
85+ #endif
86+ }
87+
7388// -----------------------------------------------------------------------------
7489// Performance test for destination buffer filling
7590PTEST_BEGIN (" dsp.copy" , fill, 5 , 5000 )
@@ -112,6 +127,9 @@ PTEST_BEGIN("dsp.copy", fill, 5, 5000)
112127 #define CALL (func ) \
113128 call (#func, out, count, func)
114129
130+ TEST_EXPORT (::fill_zero_memset);
131+ TEST_EXPORT (::fill_zero_bzero);
132+
115133 for (size_t i=MIN_RANK; i <= MAX_RANK; ++i)
116134 {
117135 size_t count = 1 << i;
@@ -123,6 +141,8 @@ PTEST_BEGIN("dsp.copy", fill, 5, 5000)
123141 PTEST_SEPARATOR;
124142
125143 CALL (generic::fill_zero);
144+ CALL (fill_zero_memset);
145+ CALL (fill_zero_bzero);
126146 IF_ARCH_X86 (CALL (sse::fill_zero));
127147 IF_ARCH_ARM (CALL (neon_d32::fill_zero));
128148 IF_ARCH_AARCH64 (CALL (asimd::fill_zero));
0 commit comments