diff options
author | 2012-07-27 21:08:01 +0000 | |
---|---|---|
committer | 2012-07-27 21:08:01 +0000 | |
commit | 2092c40a0d0a89a91cc4b6bb2b1b992fd4f02cd7 (patch) | |
tree | a455c139dda104ef03aa27e607cbaea7a751226b /include/core | |
parent | 3cb969f27de56df0d9116c13f18bd31ee0715f1a (diff) |
Add support for ARM without EDSP and ARMv6+
Original Mozilla bug: https://bugzilla.mozilla.org/show_bug.cgi?id=751814
Review URL: https://codereview.appspot.com/6405065
git-svn-id: http://skia.googlecode.com/svn/trunk@4818 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'include/core')
-rw-r--r-- | include/core/SkMath.h | 5 | ||||
-rw-r--r-- | include/core/SkPostConfig.h | 45 |
2 files changed, 46 insertions, 4 deletions
diff --git a/include/core/SkMath.h b/include/core/SkMath.h index 5889103696..7a4b707ce7 100644 --- a/include/core/SkMath.h +++ b/include/core/SkMath.h @@ -153,10 +153,7 @@ static inline bool SkIsPow2(int value) { With this requirement, we can generate faster instructions on some architectures. */ -#if defined(__arm__) \ - && !defined(__thumb__) \ - && !defined(__ARM_ARCH_4T__) \ - && !defined(__ARM_ARCH_5T__) +#ifdef SK_ARM_HAS_EDSP static inline int32_t SkMulS16(S16CPU x, S16CPU y) { SkASSERT((int16_t)x == x); SkASSERT((int16_t)y == y); diff --git a/include/core/SkPostConfig.h b/include/core/SkPostConfig.h index ae09627f24..9130a3a4f4 100644 --- a/include/core/SkPostConfig.h +++ b/include/core/SkPostConfig.h @@ -322,3 +322,48 @@ #ifndef SK_ALLOW_STATIC_GLOBAL_INITIALIZERS #define SK_ALLOW_STATIC_GLOBAL_INITIALIZERS 1 #endif + +////////////////////////////////////////////////////////////////////// +// ARM defines + +#if defined(__GNUC__) && defined(__arm__) + +# define SK_ARM_ARCH 3 + +# if defined(__ARM_ARCH_4__) || defined(__ARM_ARCH_4T__) \ + || defined(_ARM_ARCH_4) +# undef SK_ARM_ARCH +# define SK_ARM_ARCH 4 +# endif + +# if defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) \ + || defined(__ARM_ARCH_5E__) || defined(__ARM_ARCH_5TE__) \ + || defined(__ARM_ARCH_5TEJ__) || defined(_ARM_ARCH_5) +# undef SK_ARM_ARCH +# define SK_ARM_ARCH 5 +# endif + +# if defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) \ + || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) \ + || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__) \ + || defined(__ARM_ARCH_6M__) || defined(_ARM_ARCH_6) +# undef SK_ARM_ARCH +# define SK_ARM_ARCH 6 +# endif + +# if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) \ + || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) \ + || defined(__ARM_ARCH_7EM__) || defined(_ARM_ARCH_7) +# undef SK_ARM_ARCH +# define SK_ARM_ARCH 7 +# endif + +# undef SK_ARM_HAS_EDSP +# if defined(__thumb2__) && (SK_ARM_ARCH >= 6) \ + || !defined(__thumb__) \ + && ((SK_ARM_ARCH > 5) || defined(__ARM_ARCH_5E__) \ + || defined(__ARM_ARCH_5TE__) || defined(__ARM_ARCH_5TEJ__)) +# define SK_ARM_HAS_EDSP 1 +# endif + +#endif |