#include "ijk.h" #include #include template void test(benchmark::State &state) { T a[N][N], b[N][N], c[N][N]; for (size_t i = 0; i < N; ++i) for (size_t j = 0; j < N; ++j) { a[i][j] = 0; b[i][j] = B; c[i][j] = C; } for (auto _: state) { benchmark::DoNotOptimize(a); f(a, b, c); benchmark::ClobberMemory(); } } #define test_type(t) \ BENCHMARK(test>); \ BENCHMARK(test>); \ BENCHMARK(test>); \ BENCHMARK(test>); \ BENCHMARK(test>); \ BENCHMARK(test>) test_type(int8_t); test_type(int16_t); test_type(int32_t); test_type(int64_t); test_type(std::bfloat16_t); test_type(std::float16_t); test_type(std::float32_t); test_type(std::float64_t); test_type(std::float128_t); BENCHMARK_MAIN();