aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/MathTest.cpp
diff options
context:
space:
mode:
authorGravatar mtklein <mtklein@chromium.org>2016-01-26 07:40:30 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2016-01-26 07:40:30 -0800
commita766ca87bfb1129a8cf4f8a428121caf60726de4 (patch)
treebd37c26c416e32433953ea8909b52f4587ce0730 /tests/MathTest.cpp
parent05332d9c8aefe00c361c893410deca33f4438695 (diff)
de-proc sk_float_rsqrt
This is the first of many little baby steps to have us stop runtime-detecting NEON. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1616013003 CQ_EXTRA_TRYBOTS=client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot Committed: https://skia.googlesource.com/skia/+/efcc125acd2d71eb077caf6db65fdd6b9eb1dc0d Review URL: https://codereview.chromium.org/1616013003
Diffstat (limited to 'tests/MathTest.cpp')
-rw-r--r--tests/MathTest.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/tests/MathTest.cpp b/tests/MathTest.cpp
index 24e46f3097..de7ad1db78 100644
--- a/tests/MathTest.cpp
+++ b/tests/MathTest.cpp
@@ -382,14 +382,15 @@ static void unittest_half(skiatest::Reporter* reporter) {
}
-static void test_rsqrt(skiatest::Reporter* reporter) {
+template <typename RSqrtFn>
+static void test_rsqrt(skiatest::Reporter* reporter, RSqrtFn rsqrt) {
const float maxRelativeError = 6.50196699e-4f;
// test close to 0 up to 1
float input = 0.000001f;
for (int i = 0; i < 1000; ++i) {
float exact = 1.0f/sk_float_sqrt(input);
- float estimate = sk_float_rsqrt(input);
+ float estimate = rsqrt(input);
float relativeError = sk_float_abs(exact - estimate)/exact;
REPORTER_ASSERT(reporter, relativeError <= maxRelativeError);
input += 0.001f;
@@ -399,7 +400,7 @@ static void test_rsqrt(skiatest::Reporter* reporter) {
input = 1.0f;
for (int i = 0; i < 1000; ++i) {
float exact = 1.0f/sk_float_sqrt(input);
- float estimate = sk_float_rsqrt(input);
+ float estimate = rsqrt(input);
float relativeError = sk_float_abs(exact - estimate)/exact;
REPORTER_ASSERT(reporter, relativeError <= maxRelativeError);
input += 0.01f;
@@ -409,7 +410,7 @@ static void test_rsqrt(skiatest::Reporter* reporter) {
input = 1000000.0f;
for (int i = 0; i < 100; ++i) {
float exact = 1.0f/sk_float_sqrt(input);
- float estimate = sk_float_rsqrt(input);
+ float estimate = rsqrt(input);
float relativeError = sk_float_abs(exact - estimate)/exact;
REPORTER_ASSERT(reporter, relativeError <= maxRelativeError);
input += 754326.f;
@@ -555,7 +556,8 @@ DEF_TEST(Math, reporter) {
unittest_fastfloat(reporter);
unittest_isfinite(reporter);
unittest_half(reporter);
- test_rsqrt(reporter);
+ test_rsqrt(reporter, sk_float_rsqrt);
+ test_rsqrt(reporter, sk_float_rsqrt_portable);
for (i = 0; i < 10000; i++) {
SkFixed numer = rand.nextS();