OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2006 The Android Open Source Project | 3 * Copyright 2006 The Android Open Source Project |
4 * | 4 * |
5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
7 */ | 7 */ |
8 | 8 |
9 | 9 |
10 #ifndef SkPreConfig_DEFINED | 10 #ifndef SkPreConfig_DEFINED |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
109 * On non-intel CPU this should be undefined. | 109 * On non-intel CPU this should be undefined. |
110 */ | 110 */ |
111 | 111 |
112 #define SK_CPU_SSE_LEVEL_SSE1 10 | 112 #define SK_CPU_SSE_LEVEL_SSE1 10 |
113 #define SK_CPU_SSE_LEVEL_SSE2 20 | 113 #define SK_CPU_SSE_LEVEL_SSE2 20 |
114 #define SK_CPU_SSE_LEVEL_SSE3 30 | 114 #define SK_CPU_SSE_LEVEL_SSE3 30 |
115 #define SK_CPU_SSE_LEVEL_SSSE3 31 | 115 #define SK_CPU_SSE_LEVEL_SSSE3 31 |
116 | 116 |
117 // Are we in GCC? | 117 // Are we in GCC? |
118 #ifndef SK_CPU_SSE_LEVEL | 118 #ifndef SK_CPU_SSE_LEVEL |
119 #if defined(__SSE2__) | 119 // These checks must be done in descending order to ensure we set the highes
t |
120 #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE2 | 120 // available SSE level. |
| 121 #if defined(__SSSE3__) |
| 122 #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSSE3 |
121 #elif defined(__SSE3__) | 123 #elif defined(__SSE3__) |
122 #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE3 | 124 #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE3 |
123 #elif defined(__SSSE3__) | 125 #elif defined(__SSE2__) |
124 #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSSE3 | 126 #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE2 |
125 #endif | 127 #endif |
126 #endif | 128 #endif |
127 | 129 |
128 // Are we in VisualStudio? | 130 // Are we in VisualStudio? |
129 #ifndef SK_CPU_SSE_LEVEL | 131 #ifndef SK_CPU_SSE_LEVEL |
| 132 // These checks must be done in descending order to ensure we set the highes
t |
| 133 // available SSE level. |
130 #if defined (_M_IX86_FP) | 134 #if defined (_M_IX86_FP) |
131 #if _M_IX86_FP == 1 | 135 #if _M_IX86_FP >= 2 |
| 136 #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE2 |
| 137 #elif _M_IX86_FP == 1 |
132 #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE1 | 138 #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE1 |
133 #elif _M_IX86_FP >= 2 | |
134 #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE2 | |
135 #endif | 139 #endif |
136 #endif | 140 #endif |
137 #endif | 141 #endif |
138 | 142 |
139 // 64bit intel guarantees at least SSE2 | |
140 #if defined(__x86_64__) || defined(_WIN64) | |
141 #if !defined(SK_CPU_SSE_LEVEL) || (SK_CPU_SSE_LEVEL < SK_CPU_SSE_LEVEL_SSE2) | |
142 #undef SK_CPU_SSE_LEVEL | |
143 #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE2 | |
144 #endif | |
145 #endif | |
146 | |
147 // Android x86 NDK ABI requires SSE3 support | |
148 #if defined(SK_BUILD_FOR_ANDROID) | |
149 #undef SK_CPU_SSE_LEVEL | |
150 #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE3 | |
151 #endif | |
152 | |
153 ////////////////////////////////////////////////////////////////////// | 143 ////////////////////////////////////////////////////////////////////// |
154 // ARM defines | 144 // ARM defines |
155 | 145 |
156 #if defined(__arm__) && (!defined(__APPLE__) || !TARGET_IPHONE_SIMULATOR) | 146 #if defined(__arm__) && (!defined(__APPLE__) || !TARGET_IPHONE_SIMULATOR) |
157 #define SK_CPU_ARM | 147 #define SK_CPU_ARM |
158 | 148 |
159 #if defined(__GNUC__) | 149 #if defined(__GNUC__) |
160 #if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) \ | 150 #if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) \ |
161 || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) \ | 151 || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) \ |
162 || defined(__ARM_ARCH_7EM__) || defined(_ARM_ARCH_7) | 152 || defined(__ARM_ARCH_7EM__) || defined(_ARM_ARCH_7) |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
242 * | 232 * |
243 * NOTE: Clang/ARM (r161757) does not support the 'optimize' attribute. | 233 * NOTE: Clang/ARM (r161757) does not support the 'optimize' attribute. |
244 */ | 234 */ |
245 #if SK_HAS_ATTRIBUTE(optimize) | 235 #if SK_HAS_ATTRIBUTE(optimize) |
246 # define SK_ATTRIBUTE_OPTIMIZE_O1 __attribute__((optimize("O1"))) | 236 # define SK_ATTRIBUTE_OPTIMIZE_O1 __attribute__((optimize("O1"))) |
247 #else | 237 #else |
248 # define SK_ATTRIBUTE_OPTIMIZE_O1 /* nothing */ | 238 # define SK_ATTRIBUTE_OPTIMIZE_O1 /* nothing */ |
249 #endif | 239 #endif |
250 | 240 |
251 #endif | 241 #endif |
OLD | NEW |