summaryrefslogtreecommitdiffstats
path: root/mkspecs/common/msvc-version.conf
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2017-11-15 15:14:35 -0800
committerThiago Macieira <thiago.macieira@intel.com>2017-11-30 08:30:37 +0000
commitff1ffa7577ba88412daf9904bbc1e4de9e024436 (patch)
tree7e2b3cc5e7ce12990421ae82d9e40e180759f92c /mkspecs/common/msvc-version.conf
parentf984c453737bde9b39f14bd5ddabcde292b667d5 (diff)
Add support for AVX-512 intrinsics found in MSVC 2017 15.3
It seems the compiler supports /arch:AVX512 and /arch:AVX512F but none of the other switches (and neither are documented). And when you pass those, you also get Conflict Detection (CD), Double & Quad (DQ), Byte & Word (BW) and Vector Length (VL), which matches the ICC switch "-xCORE-AVX512". Unlike ICC, there doesn't seem to be an option to enable only the common part of AVX-512. Support for Intel Xeon Phi's current features (Exponential & Reciprocation and Prefetch) and future ones (IFMA, VBMI, 4FMAPS, 4VNNI and VPOPCNTDQ) seems to be missing altogether. See https://blogs.msdn.microsoft.com/vcblog/2017/07/11/microsoft-visual-studio-2017-supports-intel-avx-512/ Change-Id: I98105cd9616b8097957db680d73eb1f86e487e6d Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Diffstat (limited to 'mkspecs/common/msvc-version.conf')
-rw-r--r--mkspecs/common/msvc-version.conf14
1 files changed, 14 insertions, 0 deletions
diff --git a/mkspecs/common/msvc-version.conf b/mkspecs/common/msvc-version.conf
index 395c0535a9..9f5da91806 100644
--- a/mkspecs/common/msvc-version.conf
+++ b/mkspecs/common/msvc-version.conf
@@ -82,6 +82,20 @@ greaterThan(QMAKE_MSC_VER, 1909) {
MSVC_VER = 15.0
COMPAT_MKSPEC = win32-msvc2017
QMAKE_CXXFLAGS += -Zc:referenceBinding
+
+ # Only Visual Studio 2017 version 15.3 / Visual C++ 19.11 & up have support
+ # for AVX-512. We enable the switches anyway and let configure check if they
+ # work.
+ QMAKE_CFLAGS_AVX512F = -arch:AVX512
+ QMAKE_CFLAGS_AVX512ER = -arch:AVX512
+ QMAKE_CFLAGS_AVX512CD = -arch:AVX512
+ QMAKE_CFLAGS_AVX512PF = -arch:AVX512
+ QMAKE_CFLAGS_AVX512DQ = -arch:AVX512
+ QMAKE_CFLAGS_AVX512BW = -arch:AVX512
+ QMAKE_CFLAGS_AVX512VL = -arch:AVX512
+ QMAKE_CFLAGS_AVX512IFMA = -arch:AVX512
+ QMAKE_CFLAGS_AVX512VBMI = -arch:AVX512
+
# For now permissive fails as soon as UWP API comes into play. In qtbase this
# API is used in direct2d, but also in multimedia, positioning and sensors.
# We can try again with a later version of Visual Studio.