Implemented SIMD sqrt.

This commit is contained in:
Branimir Karadžić
2018-01-28 19:03:22 -08:00
parent d371b4152b
commit d652f283b2
5 changed files with 111 additions and 7 deletions

71
tests/math_bench.cpp Normal file
View File

@@ -0,0 +1,71 @@
/*
* Copyright 2010-2018 Branimir Karadzic. All rights reserved.
* License: https://github.com/bkaradzic/bx#license-bsd-2-clause
*/
#include <bx/math.h>
#include <bx/timer.h>
#include <bx/file.h>
#include <math.h>
void math_bench()
{
bx::WriterI* writer = bx::getStdOut();
bx::writePrintf(writer, "Math bench\n\n");
float result = 0.0f;
float max = 1389.0f;
{
int64_t elapsed = -bx::getHPCounter();
result = 0.0f;
for (float xx = 0.0f; xx < max; xx += 0.1f)
{
result += ::sqrtf(xx);
}
elapsed += bx::getHPCounter();
bx::writePrintf(writer, " ::sqrtf: %15f, %f\n", double(elapsed), result);
}
{
int64_t elapsed = -bx::getHPCounter();
result = 0.0f;
for (float xx = 0.0f; xx < max; xx += 0.1f)
{
result += bx::sqrtRef(xx);
}
elapsed += bx::getHPCounter();
bx::writePrintf(writer, " bx::sqrtRef: %15f, %f\n", double(elapsed), result);
}
{
int64_t elapsed = -bx::getHPCounter();
result = 0.0f;
for (float xx = 0.0f; xx < max; xx += 0.1f)
{
result += bx::sqrtRef(xx);
}
elapsed += bx::getHPCounter();
bx::writePrintf(writer, "bx::sqrtSimd: %15f, %f\n", double(elapsed), result);
}
{
int64_t elapsed = -bx::getHPCounter();
result = 0.0f;
for (float xx = 0.0f; xx < max; xx += 0.1f)
{
result += bx::sqrt(xx);
}
elapsed += bx::getHPCounter();
bx::writePrintf(writer, " bx::sqrt: %15f, %f\n", double(elapsed), result);
}
}