aboutsummaryrefslogtreecommitdiff
path: root/bench/tests/BenchVec4i.c
diff options
context:
space:
mode:
authorMikhail Romanko <me@blankhex.com>2025-10-12 23:16:00 +0300
committerMikhail Romanko <me@blankhex.com>2025-10-12 23:16:00 +0300
commit577c3091e6db9719f6528cf5508c33b3f2038c48 (patch)
treea0ca32cfed53c9562ec55de1955667dcb393fb5e /bench/tests/BenchVec4i.c
parent54563daf13befd1c0b5583f886d6ea60c12253ef (diff)
downloadbhlib-577c3091e6db9719f6528cf5508c33b3f2038c48.tar.gz
Add LTO in configure, add more benchmarks
Diffstat (limited to 'bench/tests/BenchVec4i.c')
-rw-r--r--bench/tests/BenchVec4i.c108
1 files changed, 108 insertions, 0 deletions
diff --git a/bench/tests/BenchVec4i.c b/bench/tests/BenchVec4i.c
new file mode 100644
index 0000000..56ceb42
--- /dev/null
+++ b/bench/tests/BenchVec4i.c
@@ -0,0 +1,108 @@
+#include "BH/Bench.h"
+#include "BH/Math/Vec4i.h"
+
+
+static int vecA[4] = {1, 2, 3, 4};
+static int vecB[4] = {4, -1, 5, 2};
+static int vecC[4] = {2, 3, -1, 1};
+static int vecOut[4];
+
+
+BH_BENCH_TEST(Add)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Vec4iAdd(vecA, vecB, vecOut);
+ BH_BenchDoNotOptimize(vecOut);
+ }
+}
+
+
+BH_BENCH_TEST(Sub)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Vec4iSub(vecA, vecB, vecOut);
+ BH_BenchDoNotOptimize(vecOut);
+ }
+}
+
+
+BH_BENCH_TEST(Mul)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Vec4iMul(vecA, vecB, vecOut);
+ BH_BenchDoNotOptimize(vecOut);
+ }
+}
+
+
+BH_BENCH_TEST(Scale)
+{
+ int scalar = 3;
+
+ while (BH_BenchIter(state))
+ {
+ BH_Vec4iScale(vecA, scalar, vecOut);
+ BH_BenchDoNotOptimize(vecOut);
+ }
+}
+
+
+BH_BENCH_TEST(MulAdd)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Vec4iMulAdd(vecA, vecB, vecC, vecOut);
+ BH_BenchDoNotOptimize(vecOut);
+ }
+}
+
+
+BH_BENCH_TEST(Negate)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Vec4iNegate(vecA, vecOut);
+ BH_BenchDoNotOptimize(vecOut);
+ }
+}
+
+
+BH_BENCH_TEST(Min)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Vec4iMin(vecA, vecB, vecOut);
+ BH_BenchDoNotOptimize(vecOut);
+ }
+}
+
+
+BH_BENCH_TEST(Max)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Vec4iMax(vecA, vecB, vecOut);
+ BH_BenchDoNotOptimize(vecOut);
+ }
+}
+
+
+int main(int argc, char **argv)
+{
+ BH_UNUSED(argc);
+ BH_UNUSED(argv);
+
+ BH_BENCH_ADD(Add);
+ BH_BENCH_ADD(Sub);
+ BH_BENCH_ADD(Mul);
+ BH_BENCH_ADD(Scale);
+ BH_BENCH_ADD(MulAdd);
+ BH_BENCH_ADD(Negate);
+ BH_BENCH_ADD(Min);
+ BH_BENCH_ADD(Max);
+
+ return BH_BenchRun();
+}