#include #include static float matA[9] = { 1.0f, 0.5f, 0.0f, 0.2f, 2.0f, 0.3f, 0.0f, 0.1f, 1.5f }; static float matB[9] = { 0.8f, 0.0f, 0.2f, 0.1f, 1.2f, 0.4f, 0.3f, 0.0f, 0.9f }; static float outMat[9]; static float outInv[9]; static float vec3[3] = {1.5f, 2.5f, 1.0f}; static float vec2[2] = {3.0f, 4.0f}; static float outVec3[3]; static float outVec2[2]; BH_BENCH_TEST(Identity) { while (BH_BenchIter(state)) { BH_Mat3fIdentity(outMat); BH_BenchDoNotOptimize(outMat); } } BH_BENCH_TEST(Add) { while (BH_BenchIter(state)) { BH_Mat3fAdd(matA, matB, outMat); BH_BenchDoNotOptimize(outMat); } } BH_BENCH_TEST(Sub) { while (BH_BenchIter(state)) { BH_Mat3fSub(matA, matB, outMat); BH_BenchDoNotOptimize(outMat); } } BH_BENCH_TEST(Mul) { while (BH_BenchIter(state)) { BH_Mat3fMul(matA, matB, outMat); BH_BenchDoNotOptimize(outMat); } } BH_BENCH_TEST(Scale) { while (BH_BenchIter(state)) { BH_Mat3fScale(matA, 2.5f, outMat); BH_BenchDoNotOptimize(outMat); } } BH_BENCH_TEST(Transpose) { while (BH_BenchIter(state)) { BH_Mat3fTranspose(matA, outMat); BH_BenchDoNotOptimize(outMat); } } BH_BENCH_TEST(Trace) { while (BH_BenchIter(state)) { float trace; trace = BH_Mat3fTrace(matA); BH_BenchDoNotOptimize(trace); } } BH_BENCH_TEST(Det) { while (BH_BenchIter(state)) { float det; det = BH_Mat3fDet(matA); BH_BenchDoNotOptimize(det); } } BH_BENCH_TEST(Inverse) { while (BH_BenchIter(state)) { int result; result = BH_Mat3fInverse(matA, outInv); BH_BenchDoNotOptimize(result); BH_BenchDoNotOptimize(outInv); } } BH_BENCH_TEST(FromScale) { while (BH_BenchIter(state)) { BH_Mat3fFromScale(2.0f, 3.0f, outMat); BH_BenchDoNotOptimize(outMat); } } BH_BENCH_TEST(FromTranslation) { while (BH_BenchIter(state)) { BH_Mat3fFromTranslation(4.0f, -2.0f, outMat); BH_BenchDoNotOptimize(outMat); } } BH_BENCH_TEST(FromRotation) { while (BH_BenchIter(state)) { BH_Mat3fFromRotation(0.7854f, outMat); BH_BenchDoNotOptimize(outMat); } } BH_BENCH_TEST(ApplyVec3f) { while (BH_BenchIter(state)) { BH_Mat3fApplyVec3f(matA, vec3, outVec3); BH_BenchDoNotOptimize(outVec3); } } BH_BENCH_TEST(ApplyVec2f) { while (BH_BenchIter(state)) { BH_Mat3fApplyVec2f(matA, vec2, outVec2); BH_BenchDoNotOptimize(outVec2); } } int main(int argc, char **argv) { BH_UNUSED(argc); BH_UNUSED(argv); BH_BENCH_ADD(Identity); BH_BENCH_ADD(Add); BH_BENCH_ADD(Sub); BH_BENCH_ADD(Mul); BH_BENCH_ADD(Scale); BH_BENCH_ADD(Transpose); BH_BENCH_ADD(Trace); BH_BENCH_ADD(Det); BH_BENCH_ADD(Inverse); BH_BENCH_ADD(FromScale); BH_BENCH_ADD(FromTranslation); BH_BENCH_ADD(FromRotation); BH_BENCH_ADD(ApplyVec3f); BH_BENCH_ADD(ApplyVec2f); return BH_BenchRun(); }