diff options
Diffstat (limited to 'cmake/QtCompilerOptimization.cmake')
-rw-r--r-- | cmake/QtCompilerOptimization.cmake | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/cmake/QtCompilerOptimization.cmake b/cmake/QtCompilerOptimization.cmake new file mode 100644 index 0000000000..1f50044a6f --- /dev/null +++ b/cmake/QtCompilerOptimization.cmake @@ -0,0 +1,123 @@ +if (QCC) + set(QT_CFLAGS_SSE2 "-msse2") + set(QT_CFLAGS_SSE3 "-msse3") + set(QT_CFLAGS_SSSE3 "-mssse3") + set(QT_CFLAGS_SSE4_1 "-msse4.1") + set(QT_CFLAGS_SSE4_2 "-msse4.2") + set(QT_CFLAGS_AVX "-mavx") + set(QT_CFLAGS_AVX2 "-mavx2") + set(QT_CFLAGS_AESNI "-maes") + set(QT_CFLAGS_SHANI "-msha") +endif() + +if (MSVC) + if (QT_64BIT) + # SSE2 is mandatory on 64-bit mode, so skip the option. It triggers: + # cl : Command line warning D9002 : ignoring unknown option '-arch:SSE2' + set(QT_CFLAGS_SSE2 "") + else() + set(QT_CFLAGS_SSE2 "-arch:SSE2") + endif() + set(QT_CFLAGS_SSE3 "${QT_CFLAGS_SSE2}") + set(QT_CFLAGS_SSSE3 "${QT_CFLAGS_SSE2}") + set(QT_CFLAGS_SSE4_1 "${QT_CFLAGS_SSE2}") + set(QT_CFLAGS_SSE4_2 "${QT_CFLAGS_SSE2}") + set(QT_CFLAGS_AESNI "${QT_CFLAGS_SSE2}") + set(QT_CFLAGS_SHANI "${QT_CFLAGS_SSE2}") + + # FIXME to be Visual Studio version specific, like in mkspecs/common/msvc-version.conf + set(QT_CFLAGS_AVX "-arch:AVX") + set(QT_CFLAGS_AVX2 "-arch:AVX2") + set(QT_CFLAGS_F16C "-arch:AVX") + set(QT_CFLAGS_RDRND "") + set(QT_CFLAGS_AVX512F "-arch:AVX512") + set(QT_CFLAGS_AVX512ER "-arch:AVX512") + set(QT_CFLAGS_AVX512CD "-arch:AVX512") + set(QT_CFLAGS_AVX512PF "-arch:AVX512") + set(QT_CFLAGS_AVX512DQ "-arch:AVX512") + set(QT_CFLAGS_AVX512BW "-arch:AVX512") + set(QT_CFLAGS_AVX512VL "-arch:AVX512") + set(QT_CFLAGS_AVX512IFMA "-arch:AVX512") + set(QT_CFLAGS_AVX512VBMI "-arch:AVX512") +endif() + +if(GCC OR CLANG) + set(QT_CFLAGS_SSE2 "-msse2") + set(QT_CFLAGS_SSE3 "-msse3") + set(QT_CFLAGS_SSSE3 "-mssse3") + set(QT_CFLAGS_SSE4_1 "-msse4.1") + set(QT_CFLAGS_SSE4_2 "-msse4.2") + set(QT_CFLAGS_F16C "-mf16c") + set(QT_CFLAGS_RDRND "-mrdrnd") + set(QT_CFLAGS_AVX "-mavx") + set(QT_CFLAGS_AVX2 "-mavx2") + set(QT_CFLAGS_AVX512F "-mavx512f") + set(QT_CFLAGS_AVX512ER "-mavx512er") + set(QT_CFLAGS_AVX512CD "-mavx512cd") + set(QT_CFLAGS_AVX512PF "-mavx512pf") + set(QT_CFLAGS_AVX512DQ "-mavx512dq") + set(QT_CFLAGS_AVX512BW "-mavx512bw") + set(QT_CFLAGS_AVX512VL "-mavx512vl") + set(QT_CFLAGS_AVX512IFMA "-mavx512ifma") + set(QT_CFLAGS_AVX512VBMI "-mavx512vbmi") + set(QT_CFLAGS_AESNI "-maes") + set(QT_CFLAGS_SHANI "-msha") + if(NOT APPLE_UIKIT AND NOT QT_64BIT) + set(QT_CFLAGS_NEON "-mfpu=neon") + endif() + set(QT_CFLAGS_MIPS_DSP "-mdsp") + set(QT_CFLAGS_MIPS_DSPR2 "-mdspr2") +endif() + +if (winrt) # FIXME: Correct variable + set(QT_CFLAGS_SSE2 "-arch:SSE2") + set(QT_CFLAGS_SSE3 "-arch:SSE2") + set(QT_CFLAGS_SSSE3 "-arch:SSE2") + set(QT_CFLAGS_SSE4_1 "-arch:SSE2") + set(QT_CFLAGS_SSE4_2 "-arch:SSE2") + set(QT_CFLAGS_AVX "-arch:AVX") + set(QT_CFLAGS_AVX2 "-arch:AVX") + set(QT_CFLAGS_AESNI "-arch:SSE2") + set(QT_CFLAGS_SHANI "-arch:SSE2") +endif() + +if (ICC) + if (MSVC) + set(QT_CFLAGS_SSE2 "-QxSSE2") + set(QT_CFLAGS_SSE3 "-QxSSE3") + set(QT_CFLAGS_SSSE3 "-QxSSSE3") + set(QT_CFLAGS_SSE4_1 "-QxSSE4.1") + set(QT_CFLAGS_SSE4_2 "-QxSSE4.2") + set(QT_CFLAGS_AVX "-QxAVX") + set(QT_CFLAGS_AVX2 "-QxCORE-AVX2") + set(QT_CFLAGS_AVX512F "-QxCOMMON-AVX512") + set(QT_CFLAGS_AVX512CD "-QxCOMMON-AVX512") + set(QT_CFLAGS_AVX512ER "-QxMIC-AVX512") + set(QT_CFLAGS_AVX512PF "-QxMIC-AVX512") + set(QT_CFLAGS_AVX512DQ "-QxCORE-AVX512") + set(QT_CFLAGS_AVX512BW "-QxCORE-AVX512") + set(QT_CFLAGS_AVX512VL "-QxCORE-AVX512") + set(QT_CFLAGS_F16C "${QT_CFLAGS_AVX2}") + set(QT_CFLAGS_AESNI "-QxSSE2") + set(QT_CFLAGS_SHANI "-QxSSE4.2") + else() + set(QT_CFLAGS_SSE2 "-msse2") + set(QT_CFLAGS_SSE3 "-msse3") + set(QT_CFLAGS_SSSE3 "-mssse3") + set(QT_CFLAGS_SSE4_1 "-msse4.1") + set(QT_CFLAGS_SSE4_2 "-msse4.2") + set(QT_CFLAGS_AVX "-march=core-avx") + set(QT_CFLAGS_AVX2 "-march=core-avx2") + set(QT_CFLAGS_AVX512F "-march=broadwell -xCOMMON-AVX512") + set(QT_CFLAGS_AVX512CD "-march=broadwell -xCOMMON-AVX512") + set(QT_CFLAGS_AVX512ER "-march=knl") + set(QT_CFLAGS_AVX512PF "-march=knl") + set(QT_CFLAGS_AVX512DQ "-march=skylake-avx512") + set(QT_CFLAGS_AVX512BW "-march=skylake-avx512") + set(QT_CFLAGS_AVX512VL "-march=skylake-avx512") + set(QT_CFLAGS_AESNI "-maes") + set(QT_CFLAGS_F16C "${QT_CFLAGS_AVX2}") + set(QT_CFLAGS_RDRND "-mrdrnd") + set(QT_CFLAGS_SHANI "-msha") + endif() +endif() |