Fix build with ICC: it miscompiles the F16C intrinsics

By not actually making them intrinsic, leading to linker errors:

 /home/qt/work/qt/qtbase/src/corelib/global/qfloat16_f16c.c:61: undefined reference to `_mm256_cvtps_ph'
 /home/qt/work/qt/qtbase/src/corelib/global/qfloat16_f16c.c:76: undefined reference to `_mm256_cvtph_ps'

I had the workaround applied, but only for "intel_icl", the qmake config
for the Intel compiler compatible with MS cl.exe options. The one for
compatibility with Unix cc (intel_icc) was missing.

Task-number: QTBUG-65367
Change-Id: I39332e0a867442d58082fffd15020e4838b6a01d
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
This commit is contained in:
Thiago Macieira 2017-12-20 08:39:52 -08:00 committed by Liang Qi
parent 309169afd9
commit aad0c8dda1

View File

@ -39,7 +39,7 @@ SOURCES += \
global/qrandom.cpp \
global/qhooks.cpp
# Only add global/qfloat16_f16.c if qfloat16.cpp can't #include it.
# Only add global/qfloat16_f16c.c if qfloat16.cpp can't #include it.
# Any compiler: if it is already generating F16C code, let qfloat16.cpp do it
# Clang: ICE if not generating F16C code, so use qfloat16_f16c.c
# ICC: miscompiles if not generating F16C code, so use qfloat16_f16c.c
@ -48,7 +48,7 @@ SOURCES += \
# MSVC: otherwise, it generates poorly-performing code, so use qfloat16_f16c.c
contains(QT_CPU_FEATURES.$$QT_ARCH, f16c): \
f16c_cxx = true
else: clang|intel_icl: \
else: clang|intel_icl|intel_icc: \
f16c_cxx = false
else: gcc:f16c:x86SimdAlways: \
f16c_cxx = true