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 |