From 02eb9df851093f11872c828869226903c81f1b60 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Sun, 6 Oct 2019 21:45:13 -0700 Subject: 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 --- mkspecs/common/gcc-base.conf | 7 +++++++ mkspecs/common/icc-base-unix.conf | 7 +++++++ mkspecs/features/simd.prf | 5 +++++ mkspecs/win32-icc/qmake.conf | 7 +++++++ 4 files changed, 26 insertions(+) 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 -- cgit v1.2.3