aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authorGravatar commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-08-14 11:43:52 +0000
committerGravatar commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-08-14 11:43:52 +0000
commit73ab2965363713f9a0ccec3666724a60329e6ea3 (patch)
tree962e9fa0a9884c00ec2b858026c1b9c4ac9e4905 /tests
parent2dc8b96230c99cd460c02fdb69b036905d072216 (diff)
ARM Skia NEON patches - 04 - Clean SkFixed / SkLONGLONG
It removes SkLONGLONG and uses int64_t to implement the SkFixed operations for which a SkLONGLONG version existed. It also removes the 32 bit version that are being replaced. BUG= R=djsollen@google.com, reed@google.com Author: kevin.petit.arm@gmail.com Review URL: https://chromiumcodereview.appspot.com/18539004 git-svn-id: http://skia.googlecode.com/svn/trunk@10705 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'tests')
-rw-r--r--tests/MathTest.cpp12
-rw-r--r--tests/Sk64Test.cpp110
2 files changed, 4 insertions, 118 deletions
diff --git a/tests/MathTest.cpp b/tests/MathTest.cpp
index fe54594100..f9849194cb 100644
--- a/tests/MathTest.cpp
+++ b/tests/MathTest.cpp
@@ -186,7 +186,6 @@ static void test_blend(skiatest::Reporter* reporter) {
}
}
-#if defined(SkLONGLONG)
static int symmetric_fixmul(int a, int b) {
int sa = SkExtractSign(a);
int sb = SkExtractSign(b);
@@ -195,18 +194,17 @@ static int symmetric_fixmul(int a, int b) {
b = SkApplySign(b, sb);
#if 1
- int c = (int)(((SkLONGLONG)a * b) >> 16);
+ int c = (int)(((int64_t)a * b) >> 16);
return SkApplySign(c, sa ^ sb);
#else
- SkLONGLONG ab = (SkLONGLONG)a * b;
+ int64_t ab = (int64_t)a * b;
if (sa ^ sb) {
ab = -ab;
}
return ab >> 16;
#endif
}
-#endif
static void check_length(skiatest::Reporter* reporter,
const SkPoint& p, SkScalar targetLen) {
@@ -522,12 +520,11 @@ static void TestMath(skiatest::Reporter* reporter) {
unittest_fastfloat(reporter);
unittest_isfinite(reporter);
-#ifdef SkLONGLONG
for (i = 0; i < 10000; i++) {
SkFixed numer = rand.nextS();
SkFixed denom = rand.nextS();
SkFixed result = SkFixedDiv(numer, denom);
- SkLONGLONG check = ((SkLONGLONG)numer << 16) / denom;
+ int64_t check = ((int64_t)numer << 16) / denom;
(void)SkCLZ(numer);
(void)SkCLZ(denom);
@@ -541,7 +538,7 @@ static void TestMath(skiatest::Reporter* reporter) {
REPORTER_ASSERT(reporter, result == (int32_t)check);
result = SkFractDiv(numer, denom);
- check = ((SkLONGLONG)numer << 30) / denom;
+ check = ((int64_t)numer << 30) / denom;
REPORTER_ASSERT(reporter, result != (SkFixed)SK_NaN32);
if (check > SK_MaxS32) {
@@ -583,7 +580,6 @@ static void TestMath(skiatest::Reporter* reporter) {
REPORTER_ASSERT(reporter, (diff >> 7) == 0);
}
}
-#endif
for (i = 0; i < 10000; i++) {
SkFract x = rand.nextU() >> 1;
diff --git a/tests/Sk64Test.cpp b/tests/Sk64Test.cpp
index e956cbbd51..c257487d7b 100644
--- a/tests/Sk64Test.cpp
+++ b/tests/Sk64Test.cpp
@@ -24,13 +24,6 @@ static void bool_table_test(skiatest::Reporter* reporter,
REPORTER_ASSERT(reporter, a.getSign() == table.sign);
}
-#ifdef SkLONGLONG
- static SkLONGLONG asLL(const Sk64& a)
- {
- return ((SkLONGLONG)a.fHi << 32) | a.fLo;
- }
-#endif
-
static void TestSk64(skiatest::Reporter* reporter) {
enum BoolTests {
kZero_BoolTest,
@@ -94,109 +87,6 @@ static void TestSk64(skiatest::Reporter* reporter) {
c = a; c.sub(b);
REPORTER_ASSERT(reporter, c.get32() == aa - bb);
}
-
-#ifdef SkLONGLONG
- for (i = 0; i < 1000; i++)
- {
- rand.next64(&a); //a.fHi >>= 1; // avoid overflow
- rand.next64(&b); //b.fHi >>= 1; // avoid overflow
-
- if (!(i & 3)) // want to explicitly test these cases
- {
- a.fLo = 0;
- b.fLo = 0;
- }
- else if (!(i & 7)) // want to explicitly test these cases
- {
- a.fHi = 0;
- b.fHi = 0;
- }
-
- SkLONGLONG aa = asLL(a);
- SkLONGLONG bb = asLL(b);
-
- REPORTER_ASSERT(reporter, (a < b) == (aa < bb));
- REPORTER_ASSERT(reporter, (a <= b) == (aa <= bb));
- REPORTER_ASSERT(reporter, (a > b) == (aa > bb));
- REPORTER_ASSERT(reporter, (a >= b) == (aa >= bb));
- REPORTER_ASSERT(reporter, (a == b) == (aa == bb));
- REPORTER_ASSERT(reporter, (a != b) == (aa != bb));
-
- c = a; c.add(b);
- REPORTER_ASSERT(reporter, asLL(c) == aa + bb);
- c = a; c.sub(b);
- REPORTER_ASSERT(reporter, asLL(c) == aa - bb);
- c = a; c.rsub(b);
- REPORTER_ASSERT(reporter, asLL(c) == bb - aa);
- c = a; c.negate();
- REPORTER_ASSERT(reporter, asLL(c) == -aa);
-
- int bits = rand.nextU() & 63;
- c = a; c.shiftLeft(bits);
- REPORTER_ASSERT(reporter, asLL(c) == (aa << bits));
- c = a; c.shiftRight(bits);
- REPORTER_ASSERT(reporter, asLL(c) == (aa >> bits));
- c = a; c.roundRight(bits);
-
- SkLONGLONG tmp;
-
- tmp = aa;
- if (bits > 0)
- tmp += (SkLONGLONG)1 << (bits - 1);
- REPORTER_ASSERT(reporter, asLL(c) == (tmp >> bits));
-
- c.setMul(a.fHi, b.fHi);
- tmp = (SkLONGLONG)a.fHi * b.fHi;
- REPORTER_ASSERT(reporter, asLL(c) == tmp);
- }
-
-
- for (i = 0; i < 100000; i++)
- {
- Sk64 wide;
- int32_t denom = rand.nextS();
-
- while (denom == 0)
- denom = rand.nextS();
- wide.setMul(rand.nextS(), rand.nextS());
- SkLONGLONG check = wide.getLongLong();
-
- wide.div(denom, Sk64::kTrunc_DivOption);
- check /= denom;
- SkLONGLONG w = wide.getLongLong();
-
- REPORTER_ASSERT(reporter, check == w);
-
- wide.setMul(rand.nextS(), rand.nextS());
- wide.abs();
- denom = wide.getSqrt();
- int32_t ck = (int32_t)sqrt((double)wide.getLongLong());
- int diff = denom - ck;
- REPORTER_ASSERT(reporter, SkAbs32(diff) <= 1);
-
- wide.setMul(rand.nextS(), rand.nextS());
- Sk64 dwide;
- dwide.setMul(rand.nextS(), rand.nextS());
- SkFixed fixdiv = wide.getFixedDiv(dwide);
- double dnumer = (double)wide.getLongLong();
- double ddenom = (double)dwide.getLongLong();
- double ddiv = dnumer / ddenom;
- SkFixed dfixdiv;
- if (ddiv >= (double)SK_MaxS32 / (double)SK_Fixed1)
- dfixdiv = SK_MaxS32;
- else if (ddiv <= -(double)SK_MaxS32 / (double)SK_Fixed1)
- dfixdiv = SK_MinS32;
- else
- dfixdiv = SkFloatToFixed(dnumer / ddenom);
- diff = fixdiv - dfixdiv;
-
- if (SkAbs32(diff) > 1) {
- SkDebugf(" %d === numer %g denom %g div %g xdiv %x fxdiv %x\n",
- i, dnumer, ddenom, ddiv, dfixdiv, fixdiv);
- }
- REPORTER_ASSERT(reporter, SkAbs32(diff) <= 1);
- }
-#endif
}
#include "TestClassDef.h"