#ifndef __BANDWIDTH_H__
#define __BANDWIDTH_H__
+#include <stdlib.h>
+#include <string.h>
+
+#include "utils/Compat.h"
#include "memtest.h"
// Bandwidth Class definitions.
private:
// Static constants
- static const double _NUM_NS_PER_SEC = 1000000000.0;
- static const double _BYTES_PER_MB = 1024.0* 1024.0;
+ static const CONSTEXPR double _NUM_NS_PER_SEC = 1000000000.0;
+ static const CONSTEXPR double _BYTES_PER_MB = 1024.0* 1024.0;
};
class CopyBandwidthBenchmark : public BandwidthBenchmark {
protected:
// Copy using vld1/vst1 instructions.
- void bench(size_t num_loops) {
#if defined(__ARM_NEON__)
+ void bench(size_t num_loops) {
asm volatile(
"stmfd sp!, {r0,r1,r2,r3,r4}\n"
"ldmfd sp!, {r0,r1,r2,r3,r4}\n"
:: "r" (_src), "r" (_dst), "r" (_size), "r" (num_loops) : "r0", "r1", "r2", "r3");
+#else
+ void bench(size_t) {
#endif
}
};
protected:
// Copy using vldr/vstr instructions.
- void bench(size_t num_loops) {
#if defined(__ARM_NEON__)
+ void bench(size_t num_loops) {
asm volatile(
"stmfd sp!, {r0,r1,r2,r3,r4}\n"
"ldmfd sp!, {r0,r1,r2,r3,r4}\n"
:: "r" (_src), "r" (_dst), "r" (_size), "r" (num_loops) : "r0", "r1", "r2", "r3");
+#else
+ void bench(size_t) {
#endif
}
};
protected:
// Copy using vldmia/vstmia instructions.
- void bench(size_t num_loops) {
#if defined(__ARM_NEON__)
+ void bench(size_t num_loops) {
asm volatile(
"stmfd sp!, {r0,r1,r2,r3,r4}\n"
"ldmfd sp!, {r0,r1,r2,r3,r4}\n"
:: "r" (_src), "r" (_dst), "r" (_size), "r" (num_loops) : "r0", "r1", "r2", "r3");
+#else
+ void bench(size_t) {
#endif
}
};
_buffer = NULL;
}
- if (_size == 0) {
+ if (size == 0) {
_size = DEFAULT_SINGLE_BUFFER_SIZE;
} else {
_size = size;
protected:
// Write a given value using vst.
- void bench(size_t num_loops) {
#if defined(__ARM_NEON__)
+ void bench(size_t num_loops) {
asm volatile(
"stmfd sp!, {r0,r1,r2,r3,r4}\n"
"ldmfd sp!, {r0,r1,r2,r3,r4}\n"
:: "r" (_buffer), "r" (_size), "r" (num_loops) : "r0", "r1", "r2");
+#else
+ void bench(size_t) {
#endif
}
};
protected:
// Write a given value using vst.
- void bench(size_t num_loops) {
#if defined(__ARM_NEON__)
+ void bench(size_t num_loops) {
asm volatile(
"stmfd sp!, {r0,r1,r2,r3,r4}\n"
"ldmfd sp!, {r0,r1,r2,r3,r4}\n"
:: "r" (_buffer), "r" (_size), "r" (num_loops) : "r0", "r1", "r2");
+#else
+ void bench(size_t) {
#endif
}
};
protected:
// Write a given value using vstmia.
- void bench(size_t num_loops) {
#if defined(__ARM_NEON__)
+ void bench(size_t num_loops) {
asm volatile(
"stmfd sp!, {r0,r1,r2,r3,r4}\n"
"ldmfd sp!, {r0,r1,r2,r3,r4}\n"
:: "r" (_buffer), "r" (_size), "r" (num_loops) : "r0", "r1", "r2");
+#else
+ void bench(size_t) {
#endif
}
};
protected:
// Write a given value using vst.
- void bench(size_t num_loops) {
#if defined(__ARM_NEON__)
+ void bench(size_t num_loops) {
asm volatile(
"stmfd sp!, {r0,r1,r2,r3}\n"
"ldmfd sp!, {r0,r1,r2,r3}\n"
:: "r" (_buffer), "r" (_size), "r" (num_loops) : "r0", "r1", "r2");
+#else
+ void bench(size_t) {
#endif
}
};
protected:
// Write a given value using vst.
- void bench(size_t num_loops) {
#if defined(__ARM_NEON__)
+ void bench(size_t num_loops) {
asm volatile(
"stmfd sp!, {r0,r1,r2,r3}\n"
"ldmfd sp!, {r0,r1,r2,r3}\n"
:: "r" (_buffer), "r" (_size), "r" (num_loops) : "r0", "r1", "r2");
+#else
+ void bench(size_t) {
#endif
}
};
protected:
// Write a given value using vstmia.
- void bench(size_t num_loops) {
#if defined(__ARM_NEON__)
+ void bench(size_t num_loops) {
asm volatile(
"stmfd sp!, {r0,r1,r2,r3}\n"
"ldmfd sp!, {r0,r1,r2,r3}\n"
:: "r" (_buffer), "r" (_size), "r" (num_loops) : "r0", "r1", "r2");
+#else
+ void bench(size_t) {
#endif
}
};