summaryrefslogtreecommitdiffstats
path: root/mkspecs
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2019-10-06 21:45:13 -0700
committerThiago Macieira <thiago.macieira@intel.com>2020-02-03 11:31:49 -0700
commit02eb9df851093f11872c828869226903c81f1b60 (patch)
tree5af4cc9a38a625492ba95ad43e9557355870486e /mkspecs
parentbf2216c32bd7af8de77292b759c1b33ac3e72d56 (diff)
Add new AVX512 extensions found in Intel CLX, ICL and ICX processors
Cascade Lake (CLX) added AVX512VNNI, Ice Lake has added that plus the integer multiplication (IFMA), the vector bit manipulation instructions (VBMI and VBMI2), bit algorithms (BITALG), the extended vector AES instructions (VAES), among others. I haven't turned on the configure check for those yet. I believe the VBMI and IFMA instructions will be interesting for Qt image algorithms, but we'll need some Ice Lakes to do benchmarking on. Change-Id: Ib5d667bf77a740c28d2efffd15cb43dd821d4b2d Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'mkspecs')
-rw-r--r--mkspecs/common/gcc-base.conf7
-rw-r--r--mkspecs/common/icc-base-unix.conf7
-rw-r--r--mkspecs/features/simd.prf5
-rw-r--r--mkspecs/win32-icc/qmake.conf7
4 files changed, 26 insertions, 0 deletions
diff --git a/mkspecs/common/gcc-base.conf b/mkspecs/common/gcc-base.conf
index 472333d2ea..1f919d270a 100644
--- a/mkspecs/common/gcc-base.conf
+++ b/mkspecs/common/gcc-base.conf
@@ -105,8 +105,15 @@ QMAKE_CFLAGS_AVX512BW += -mavx512bw
QMAKE_CFLAGS_AVX512VL += -mavx512vl
QMAKE_CFLAGS_AVX512IFMA += -mavx512ifma
QMAKE_CFLAGS_AVX512VBMI += -mavx512vbmi
+QMAKE_CFLAGS_AVX512VNNI += -mavx512vnni
+QMAKE_CFLAGS_AVX512IFMA += -mavx512ifma
+QMAKE_CFLAGS_AVX512VBMI += -mavx512vbmi
+QMAKE_CFLAGS_AVX512VBMI2 += -mavx512vbmi2
+QMAKE_CFLAGS_AVX512BITALG += -mavx512bitalg
+QMAKE_CFLAGS_AVX512POPCNTDQ += -mavx512vpopcntd
QMAKE_CFLAGS_AESNI += -maes
QMAKE_CFLAGS_SHANI += -msha
+QMAKE_CFLAGS_VAES += -mvaes
QMAKE_CFLAGS_NEON += -mfpu=neon
QMAKE_CFLAGS_MIPS_DSP += -mdsp
QMAKE_CFLAGS_MIPS_DSPR2 += -mdspr2
diff --git a/mkspecs/common/icc-base-unix.conf b/mkspecs/common/icc-base-unix.conf
index e0bb55577e..5b4b71ac0d 100644
--- a/mkspecs/common/icc-base-unix.conf
+++ b/mkspecs/common/icc-base-unix.conf
@@ -48,11 +48,18 @@ QMAKE_CFLAGS_AVX512PF += -march=knl
QMAKE_CFLAGS_AVX512DQ += -march=skylake-avx512
QMAKE_CFLAGS_AVX512BW += -march=skylake-avx512
QMAKE_CFLAGS_AVX512VL += -march=skylake-avx512
+QMAKE_CFLAGS_AVX512VNNI += -march=cascadelake
+QMAKE_CFLAGS_AVX512IFMA += -march=icelake-client # technically, cannonlake
+QMAKE_CFLAGS_AVX512VBMI += -march=icelake-client # ditto
+QMAKE_CFLAGS_AVX512VBMI2 += -march=icelake-client
+QMAKE_CFLAGS_AVX512BITALG += -march=icelake-client
+QMAKE_CFLAGS_AVX512POPCNTDQ += -march=icelake-client
QMAKE_CFLAGS_AESNI += -maes
QMAKE_CFLAGS_F16C += $$QMAKE_CFLAGS_AVX2
QMAKE_CFLAGS_RDRND += -mrdrnd
QMAKE_CFLAGS_RDSEED += -mrdseed
QMAKE_CFLAGS_SHANI += -msha
+QMAKE_CFLAGS_VAES += -mvaes
QMAKE_CXX = icpc
QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
diff --git a/mkspecs/features/simd.prf b/mkspecs/features/simd.prf
index 3918c4fe73..8e041297d2 100644
--- a/mkspecs/features/simd.prf
+++ b/mkspecs/features/simd.prf
@@ -124,6 +124,7 @@ addSimdCompiler(sse4_1)
addSimdCompiler(sse4_2)
addSimdCompiler(aesni)
addSimdCompiler(shani)
+addSimdCompiler(vaes)
addSimdCompiler(avx)
addSimdCompiler(avx2)
addSimdCompiler(avx512f)
@@ -133,8 +134,12 @@ addSimdCompiler(avx512pf)
addSimdCompiler(avx512dq)
addSimdCompiler(avx512bw)
addSimdCompiler(avx512vl)
+addSimdCompiler(avx512vnni)
addSimdCompiler(avx512ifma)
addSimdCompiler(avx512vbmi)
+addSimdCompiler(avx512vbmi2)
+addSimdCompiler(avx512bitalg)
+addSimdCompiler(avx512vpopcntd)
addSimdCompiler(f16c)
addSimdCompiler(rdrnd)
addSimdCompiler(rdseed)
diff --git a/mkspecs/win32-icc/qmake.conf b/mkspecs/win32-icc/qmake.conf
index af26c5bc15..65d1aa1c7e 100644
--- a/mkspecs/win32-icc/qmake.conf
+++ b/mkspecs/win32-icc/qmake.conf
@@ -38,6 +38,12 @@ QMAKE_CFLAGS_AVX512PF += -QxMIC-AVX512
QMAKE_CFLAGS_AVX512DQ += -QxCORE-AVX512
QMAKE_CFLAGS_AVX512BW += -QxCORE-AVX512
QMAKE_CFLAGS_AVX512VL += -QxCORE-AVX512
+QMAKE_CFLAGS_AVX512VNNI += -QxCASCADELAKE
+QMAKE_CFLAGS_AVX512IFMA += -QxICELAKE-CLIENT # technically, cannonlake
+QMAKE_CFLAGS_AVX512VBMI += -QxICELAKE-CLIENT # ditto
+QMAKE_CFLAGS_AVX512VBMI2 += QxICELAKE-CLIENT
+QMAKE_CFLAGS_AVX512BITALG += QxICELAKE-CLIENT
+QMAKE_CFLAGS_AVX512POPCNTDQ += QxICELAKE-CLIENT
QMAKE_CFLAGS_F16C = $$QMAKE_CFLAGS_AVX2
QMAKE_CFLAGS_RDRND = $$QMAKE_CFLAGS_AVX2
# ICC on Windows lacks the mrdseed compiler option that sets the RDSEED macro
@@ -46,6 +52,7 @@ QMAKE_CFLAGS_ARCH_HASWELL = $$QMAKE_CFLAGS_AVX2
QMAKE_CFLAGS_AESNI = -QxSSE2
QMAKE_CFLAGS_SHANI = -QxSSE4.2
+QMAKE_CFLAGS_VAES = -QxCORE-AVX512
QMAKE_CXX = $$QMAKE_CC
QMAKE_CXXFLAGS += -Qprec -Zm200 -Zc:forScope