Implemented SIMD rsqrt.

This commit is contained in:
Branimir Karadžić
2018-01-29 20:35:51 -08:00
parent 672a39f4f4
commit c1f8036b70
3 changed files with 53 additions and 18 deletions
+27 -17
View File
@@ -11,7 +11,6 @@
typedef float (*MathFn)(float);
template<MathFn mfn>
float mathTest(const char* _name)
{
@@ -32,37 +31,48 @@ float mathTest(const char* _name)
return result;
}
float rsqrt(float _a)
{
return 1.0f/::sqrtf(_a);
}
void math_bench()
{
bx::WriterI* writer = bx::getStdOut();
bx::writePrintf(writer, "Math bench\n\n");
mathTest< ::sqrtf >("::sqrtf");
mathTest<bx::sqrtRef >("bx::sqrtRef");
mathTest<bx::sqrtSimd>("bx::sqrtSimd");
mathTest<bx::sqrt >("bx::sqrt");
mathTest< ::sqrtf >("::sqrtf");
mathTest<bx::sqrtRef >("bx::sqrtRef");
mathTest<bx::sqrtSimd >("bx::sqrtSimd");
mathTest<bx::sqrt >("bx::sqrt");
bx::writePrintf(writer, "\n");
mathTest< ::sinf >("::sinf");
mathTest<bx::sin >("bx::sin");
mathTest< ::rsqrt >("::rsqrtf");
mathTest<bx::rsqrtRef >("bx::sqrtRef");
mathTest<bx::rsqrtSimd>("bx::sqrtSimd");
mathTest<bx::rsqrt >("bx::rsqrt");
bx::writePrintf(writer, "\n");
mathTest< ::asinf >("::asinf");
mathTest<bx::asin >("bx::asin");
mathTest< ::sinf >("::sinf");
mathTest<bx::sin >("bx::sin");
bx::writePrintf(writer, "\n");
mathTest< ::cosf >("::cosf");
mathTest<bx::cos >("bx::cos");
mathTest< ::asinf>("::asinf");
mathTest<bx::asin >("bx::asin");
bx::writePrintf(writer, "\n");
mathTest< ::acosf >("::acosf");
mathTest<bx::acos >("bx::acos");
mathTest< ::cosf >("::cosf");
mathTest<bx::cos >("bx::cos");
bx::writePrintf(writer, "\n");
mathTest< ::tanf >("::tanf");
mathTest<bx::tan >("bx::tan");
mathTest< ::acosf>("::acosf");
mathTest<bx::acos >("bx::acos");
bx::writePrintf(writer, "\n");
mathTest< ::atanf >("::atanf");
mathTest<bx::atan >("bx::atan");
mathTest< ::tanf >("::tanf");
mathTest<bx::tan >("bx::tan");
bx::writePrintf(writer, "\n");
mathTest< ::atanf>("::atanf");
mathTest<bx::atan >("bx::atan");
}