| Index: include/core/SkFixed.h
|
| diff --git a/include/core/SkFixed.h b/include/core/SkFixed.h
|
| index acfbe9af9565b3cfcc967911fa92a1d256e0bfe5..a4a515d30aef40cea02517a6d1874a683bd88674 100644
|
| --- a/include/core/SkFixed.h
|
| +++ b/include/core/SkFixed.h
|
| @@ -120,20 +120,6 @@ inline SkFixed SkFixedFraction(SkFixed x)
|
| #define SkFixedAbs(x) SkAbs32(x)
|
| #define SkFixedAve(a, b) (((a) + (b)) >> 1)
|
|
|
| -SkFixed SkFixedMul_portable(SkFixed, SkFixed);
|
| -SkFract SkFractMul_portable(SkFract, SkFract);
|
| -inline SkFixed SkFixedSquare_portable(SkFixed value)
|
| -{
|
| - uint32_t a = SkAbs32(value);
|
| - uint32_t ah = a >> 16;
|
| - uint32_t al = a & 0xFFFF;
|
| - SkFixed result = ah * a + al * ah + (al * al >> 16);
|
| - if (result >= 0)
|
| - return result;
|
| - else // Overflow.
|
| - return SK_FixedMax;
|
| -}
|
| -
|
| #define SkFixedDiv(numer, denom) SkDivBits(numer, denom, 16)
|
| SkFixed SkFixedDivInt(int32_t numer, int32_t denom);
|
| SkFixed SkFixedMod(SkFixed numer, SkFixed denom);
|
| @@ -169,27 +155,28 @@ inline bool SkFixedNearlyZero(SkFixed x, SkFixed tolerance = SK_FixedNearlyZero)
|
| return SkAbs32(x) < tolerance;
|
| }
|
|
|
| +inline SkFixed SkFixedMul_longlong(SkFixed a, SkFixed b)
|
| +{
|
| + return (SkFixed)((int64_t)a * b >> 16);
|
| +}
|
| +
|
| +inline SkFract SkFractMul_longlong(SkFract a, SkFract b)
|
| +{
|
| + return (SkFract)((int64_t)a * b >> 30);
|
| +}
|
| +
|
| +inline SkFixed SkFixedSquare_longlong(SkFixed value)
|
| +{
|
| + return (SkFixed)((int64_t)value * value >> 16);
|
| +}
|
| +
|
| +#define SkFixedMul(a,b) SkFixedMul_longlong(a,b)
|
| +#define SkFractMul(a,b) SkFractMul_longlong(a,b)
|
| +#define SkFixedSquare(a) SkFixedSquare_longlong(a)
|
| +
|
| //////////////////////////////////////////////////////////////////////////////////////////////////////
|
| // Now look for ASM overrides for our portable versions (should consider putting this in its own file)
|
|
|
| -#ifdef SkLONGLONG
|
| - inline SkFixed SkFixedMul_longlong(SkFixed a, SkFixed b)
|
| - {
|
| - return (SkFixed)((SkLONGLONG)a * b >> 16);
|
| - }
|
| - inline SkFract SkFractMul_longlong(SkFract a, SkFract b)
|
| - {
|
| - return (SkFract)((SkLONGLONG)a * b >> 30);
|
| - }
|
| - inline SkFixed SkFixedSquare_longlong(SkFixed value)
|
| - {
|
| - return (SkFixed)((SkLONGLONG)value * value >> 16);
|
| - }
|
| - #define SkFixedMul(a,b) SkFixedMul_longlong(a,b)
|
| - #define SkFractMul(a,b) SkFractMul_longlong(a,b)
|
| - #define SkFixedSquare(a) SkFixedSquare_longlong(a)
|
| -#endif
|
| -
|
| #if defined(SK_CPU_ARM)
|
| /* This guy does not handle NaN or other obscurities, but is faster than
|
| than (int)(x*65536)
|
| @@ -262,12 +249,6 @@ inline bool SkFixedNearlyZero(SkFixed x, SkFixed tolerance = SK_FixedNearlyZero)
|
| #ifndef SkFixedSquare
|
| #define SkFixedSquare(x) SkFixedSquare_portable(x)
|
| #endif
|
| -#ifndef SkFixedMul
|
| - #define SkFixedMul(x, y) SkFixedMul_portable(x, y)
|
| -#endif
|
| -#ifndef SkFractMul
|
| - #define SkFractMul(x, y) SkFractMul_portable(x, y)
|
| -#endif
|
| #ifndef SkFixedMulAdd
|
| #define SkFixedMulAdd(x, y, a) (SkFixedMul(x, y) + (a))
|
| #endif
|
|
|