| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2006 The Android Open Source Project | 2 * Copyright 2006 The Android Open Source Project |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 // IWYU pragma: private, include "SkTypes.h" | 8 // IWYU pragma: private, include "SkTypes.h" |
| 9 | 9 |
| 10 #ifndef SkPreConfig_DEFINED | 10 #ifndef SkPreConfig_DEFINED |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 107 * If defined, SK_CPU_SSE_LEVEL should be set to the highest supported level. | 107 * If defined, SK_CPU_SSE_LEVEL should be set to the highest supported level. |
| 108 * On non-intel CPU this should be undefined. | 108 * On non-intel CPU this should be undefined. |
| 109 */ | 109 */ |
| 110 | 110 |
| 111 #define SK_CPU_SSE_LEVEL_SSE1 10 | 111 #define SK_CPU_SSE_LEVEL_SSE1 10 |
| 112 #define SK_CPU_SSE_LEVEL_SSE2 20 | 112 #define SK_CPU_SSE_LEVEL_SSE2 20 |
| 113 #define SK_CPU_SSE_LEVEL_SSE3 30 | 113 #define SK_CPU_SSE_LEVEL_SSE3 30 |
| 114 #define SK_CPU_SSE_LEVEL_SSSE3 31 | 114 #define SK_CPU_SSE_LEVEL_SSSE3 31 |
| 115 #define SK_CPU_SSE_LEVEL_SSE41 41 | 115 #define SK_CPU_SSE_LEVEL_SSE41 41 |
| 116 #define SK_CPU_SSE_LEVEL_SSE42 42 | 116 #define SK_CPU_SSE_LEVEL_SSE42 42 |
| 117 #define SK_CPU_SSE_LEVEL_AVX 51 |
| 118 #define SK_CPU_SSE_LEVEL_AVX2 52 |
| 117 | 119 |
| 118 // Are we in GCC? | 120 // Are we in GCC? |
| 119 #ifndef SK_CPU_SSE_LEVEL | 121 #ifndef SK_CPU_SSE_LEVEL |
| 120 // These checks must be done in descending order to ensure we set the highes
t | 122 // These checks must be done in descending order to ensure we set the highes
t |
| 121 // available SSE level. | 123 // available SSE level. |
| 122 #if defined(__SSE4_2__) | 124 #if defined(__AVX2__) |
| 125 #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_AVX2 |
| 126 #elif defined(__AVX__) |
| 127 #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_AVX |
| 128 #elif defined(__SSE4_2__) |
| 123 #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE42 | 129 #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE42 |
| 124 #elif defined(__SSE4_1__) | 130 #elif defined(__SSE4_1__) |
| 125 #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE41 | 131 #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE41 |
| 126 #elif defined(__SSSE3__) | 132 #elif defined(__SSSE3__) |
| 127 #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSSE3 | 133 #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSSE3 |
| 128 #elif defined(__SSE3__) | 134 #elif defined(__SSE3__) |
| 129 #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE3 | 135 #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE3 |
| 130 #elif defined(__SSE2__) | 136 #elif defined(__SSE2__) |
| 131 #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE2 | 137 #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE2 |
| 132 #endif | 138 #endif |
| 133 #endif | 139 #endif |
| 134 | 140 |
| 135 // Are we in VisualStudio? | 141 // Are we in VisualStudio? |
| 136 #ifndef SK_CPU_SSE_LEVEL | 142 #ifndef SK_CPU_SSE_LEVEL |
| 137 // These checks must be done in descending order to ensure we set the highes
t | 143 // These checks must be done in descending order to ensure we set the highes
t |
| 138 // available SSE level. 64-bit intel guarantees at least SSE2 support. | 144 // available SSE level. 64-bit intel guarantees at least SSE2 support. |
| 139 #if defined(_M_X64) || defined(_M_AMD64) | 145 #if defined(__AVX2__) |
| 140 #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE2 | 146 #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_AVX2 |
| 141 #elif defined (_M_IX86_FP) | 147 #elif defined(__AVX__) |
| 148 #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_AVX |
| 149 #elif defined(_M_X64) || defined(_M_AMD64) |
| 150 #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE2 |
| 151 #elif defined(_M_IX86_FP) |
| 142 #if _M_IX86_FP >= 2 | 152 #if _M_IX86_FP >= 2 |
| 143 #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE2 | 153 #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE2 |
| 144 #elif _M_IX86_FP == 1 | 154 #elif _M_IX86_FP == 1 |
| 145 #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE1 | 155 #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE1 |
| 146 #endif | 156 #endif |
| 147 #endif | 157 #endif |
| 148 #endif | 158 #endif |
| 149 | 159 |
| 150 ////////////////////////////////////////////////////////////////////// | 160 ////////////////////////////////////////////////////////////////////// |
| 151 // ARM defines | 161 // ARM defines |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 244 * | 254 * |
| 245 * NOTE: Clang/ARM (r161757) does not support the 'optimize' attribute. | 255 * NOTE: Clang/ARM (r161757) does not support the 'optimize' attribute. |
| 246 */ | 256 */ |
| 247 #if SK_HAS_ATTRIBUTE(optimize) | 257 #if SK_HAS_ATTRIBUTE(optimize) |
| 248 # define SK_ATTRIBUTE_OPTIMIZE_O1 __attribute__((optimize("O1"))) | 258 # define SK_ATTRIBUTE_OPTIMIZE_O1 __attribute__((optimize("O1"))) |
| 249 #else | 259 #else |
| 250 # define SK_ATTRIBUTE_OPTIMIZE_O1 /* nothing */ | 260 # define SK_ATTRIBUTE_OPTIMIZE_O1 /* nothing */ |
| 251 #endif | 261 #endif |
| 252 | 262 |
| 253 #endif | 263 #endif |
| OLD | NEW |