Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/util/system.cpp
| Show First 20 Lines • Show All 150 Lines • ▼ Show 20 Lines | if (num >= 1) { | ||||
| const bool sse = (result[3] & ((int)1 << 25)) != 0; | const bool sse = (result[3] & ((int)1 << 25)) != 0; | ||||
| const bool sse2 = (result[3] & ((int)1 << 26)) != 0; | const bool sse2 = (result[3] & ((int)1 << 26)) != 0; | ||||
| const bool sse3 = (result[2] & ((int)1 << 0)) != 0; | const bool sse3 = (result[2] & ((int)1 << 0)) != 0; | ||||
| const bool ssse3 = (result[2] & ((int)1 << 9)) != 0; | const bool ssse3 = (result[2] & ((int)1 << 9)) != 0; | ||||
| const bool sse41 = (result[2] & ((int)1 << 19)) != 0; | const bool sse41 = (result[2] & ((int)1 << 19)) != 0; | ||||
| /* const bool sse42 = (result[2] & ((int)1 << 20)) != 0; */ | /* const bool sse42 = (result[2] & ((int)1 << 20)) != 0; */ | ||||
| const bool popcnt = (result[2] & ((int)1 << 23)) != 0; | |||||
| const bool fma3 = (result[2] & ((int)1 << 12)) != 0; | const bool fma3 = (result[2] & ((int)1 << 12)) != 0; | ||||
| const bool os_uses_xsave_xrestore = (result[2] & ((int)1 << 27)) != 0; | const bool os_uses_xsave_xrestore = (result[2] & ((int)1 << 27)) != 0; | ||||
| const bool cpu_avx_support = (result[2] & ((int)1 << 28)) != 0; | const bool cpu_avx_support = (result[2] & ((int)1 << 28)) != 0; | ||||
| /* Simplify to combined capabilities for which we specialize kernels. */ | /* Simplify to combined capabilities for which we specialize kernels. */ | ||||
| caps.sse2 = sse && sse2; | caps.sse2 = sse && sse2; | ||||
| caps.sse3 = sse && sse2 && sse3 && ssse3; | caps.sse3 = sse && sse2 && sse3 && ssse3; | ||||
| caps.sse41 = sse && sse2 && sse3 && ssse3 && sse41; | caps.sse41 = sse && sse2 && sse3 && ssse3 && sse41; | ||||
| Show All 14 Lines | # endif | ||||
| const bool avx = (xcr_feature_mask & 0x6) == 0x6; | const bool avx = (xcr_feature_mask & 0x6) == 0x6; | ||||
| const bool f16c = (result[2] & ((int)1 << 29)) != 0; | const bool f16c = (result[2] & ((int)1 << 29)) != 0; | ||||
| __cpuid(result, 0x00000007); | __cpuid(result, 0x00000007); | ||||
| bool bmi1 = (result[1] & ((int)1 << 3)) != 0; | bool bmi1 = (result[1] & ((int)1 << 3)) != 0; | ||||
| bool bmi2 = (result[1] & ((int)1 << 8)) != 0; | bool bmi2 = (result[1] & ((int)1 << 8)) != 0; | ||||
| bool avx2 = (result[1] & ((int)1 << 5)) != 0; | bool avx2 = (result[1] & ((int)1 << 5)) != 0; | ||||
| caps.avx = sse && sse2 && sse3 && ssse3 && sse41 && avx; | caps.avx = sse && sse2 && sse3 && ssse3 && sse41 && avx && popcnt; | ||||
| caps.avx2 = sse && sse2 && sse3 && ssse3 && sse41 && avx && f16c && avx2 && fma3 && bmi1 && | caps.avx2 = sse && sse2 && sse3 && ssse3 && sse41 && avx && f16c && avx2 && fma3 && bmi1 && | ||||
| bmi2; | bmi2 && popcnt; | ||||
| } | } | ||||
| } | } | ||||
| caps_init = true; | caps_init = true; | ||||
| } | } | ||||
| return caps; | return caps; | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 89 Lines • Show Last 20 Lines | |||||