This commit is contained in:
Branimir Karadžić
2018-01-29 20:41:11 -08:00
parent c1f8036b70
commit cb7d7b62ac
2 changed files with 16 additions and 11 deletions

View File

@@ -215,8 +215,13 @@ namespace bx
inline float rsqrtSimd(float _a) inline float rsqrtSimd(float _a)
{ {
if (_a < kNearZero)
{
return 0.0f;
}
const simd128_t aa = simd_splat(_a); const simd128_t aa = simd_splat(_a);
const simd128_t rsqrta = simd_rsqrt(aa); const simd128_t rsqrta = simd_rsqrt_nr(aa);
float result; float result;
simd_stx(&result, rsqrta); simd_stx(&result, rsqrta);

View File

@@ -41,38 +41,38 @@ void math_bench()
bx::WriterI* writer = bx::getStdOut(); bx::WriterI* writer = bx::getStdOut();
bx::writePrintf(writer, "Math bench\n\n"); bx::writePrintf(writer, "Math bench\n\n");
mathTest< ::sqrtf >("::sqrtf"); mathTest< ::sqrtf >(" ::sqrtf");
mathTest<bx::sqrtRef >("bx::sqrtRef"); mathTest<bx::sqrtRef >("bx::sqrtRef");
mathTest<bx::sqrtSimd >("bx::sqrtSimd"); mathTest<bx::sqrtSimd >("bx::sqrtSimd");
mathTest<bx::sqrt >("bx::sqrt"); mathTest<bx::sqrt >("bx::sqrt");
bx::writePrintf(writer, "\n"); bx::writePrintf(writer, "\n");
mathTest< ::rsqrt >("::rsqrtf"); mathTest< ::rsqrt >(" ::rsqrtf");
mathTest<bx::rsqrtRef >("bx::sqrtRef"); mathTest<bx::rsqrtRef >("bx::rsqrtRef");
mathTest<bx::rsqrtSimd>("bx::sqrtSimd"); mathTest<bx::rsqrtSimd>("bx::rsqrtSimd");
mathTest<bx::rsqrt >("bx::rsqrt"); mathTest<bx::rsqrt >("bx::rsqrt");
bx::writePrintf(writer, "\n"); bx::writePrintf(writer, "\n");
mathTest< ::sinf >("::sinf"); mathTest< ::sinf >(" ::sinf");
mathTest<bx::sin >("bx::sin"); mathTest<bx::sin >("bx::sin");
bx::writePrintf(writer, "\n"); bx::writePrintf(writer, "\n");
mathTest< ::asinf>("::asinf"); mathTest< ::asinf>(" ::asinf");
mathTest<bx::asin >("bx::asin"); mathTest<bx::asin >("bx::asin");
bx::writePrintf(writer, "\n"); bx::writePrintf(writer, "\n");
mathTest< ::cosf >("::cosf"); mathTest< ::cosf >(" ::cosf");
mathTest<bx::cos >("bx::cos"); mathTest<bx::cos >("bx::cos");
bx::writePrintf(writer, "\n"); bx::writePrintf(writer, "\n");
mathTest< ::acosf>("::acosf"); mathTest< ::acosf>(" ::acosf");
mathTest<bx::acos >("bx::acos"); mathTest<bx::acos >("bx::acos");
bx::writePrintf(writer, "\n"); bx::writePrintf(writer, "\n");
mathTest< ::tanf >("::tanf"); mathTest< ::tanf >(" ::tanf");
mathTest<bx::tan >("bx::tan"); mathTest<bx::tan >("bx::tan");
bx::writePrintf(writer, "\n"); bx::writePrintf(writer, "\n");
mathTest< ::atanf>("::atanf"); mathTest< ::atanf>(" ::atanf");
mathTest<bx::atan >("bx::atan"); mathTest<bx::atan >("bx::atan");
} }