summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Palimaka <kensington@gentoo.org>2017-11-28 21:58:58 +1100
committerMichael Palimaka <kensington@gentoo.org>2017-11-28 21:59:53 +1100
commit3e0bbe689cf555a4b68cea32a5ba5d5f5b898641 (patch)
treee113b30dad1e6e55baa259fb9eb2d58502bf2fc4 /dev-qt/qtcore
parentdev-qt/qtwebengine: add missing dependency (diff)
downloadgentoo-3e0bbe689cf555a4b68cea32a5ba5d5f5b898641.tar.gz
gentoo-3e0bbe689cf555a4b68cea32a5ba5d5f5b898641.tar.bz2
gentoo-3e0bbe689cf555a4b68cea32a5ba5d5f5b898641.zip
dev-qt/qtcore: backport patch from upstream fixing build when AVX2 is enabled but __F16C__ isn't defined
Closes: https://bugs.gentoo.org/635388 Package-Manager: Portage-2.3.14, Repoman-2.3.6
Diffstat (limited to 'dev-qt/qtcore')
-rw-r--r--dev-qt/qtcore/files/qtcore-5.9.3-avx.patch69
-rw-r--r--dev-qt/qtcore/qtcore-5.9.3.ebuild2
2 files changed, 71 insertions, 0 deletions
diff --git a/dev-qt/qtcore/files/qtcore-5.9.3-avx.patch b/dev-qt/qtcore/files/qtcore-5.9.3-avx.patch
new file mode 100644
index 000000000000..be18433be209
--- /dev/null
+++ b/dev-qt/qtcore/files/qtcore-5.9.3-avx.patch
@@ -0,0 +1,69 @@
+From d813c66bfcfac1837814ec4d174d0389172f0d4c Mon Sep 17 00:00:00 2001
+From: Thiago Macieira <thiago.macieira@intel.com>
+Date: Tue, 25 Apr 2017 12:02:09 -0300
+Subject: Fix the build when AVX2 is enabled but __F16C__ isn't defined
+
+If -mavx2 is used, __AVX2__ is defined, which enables the F16C code
+after commit 280e321e52fd4e86545f3f0d4bd4e047786a897e, but that was
+wrong since we aren't allowed to use the F16C intrinsics with either
+Clang or GCC (we can only do that with GCC 4.9 and Clang 4.8, and only
+with an __attribute__ decoration).
+
+With ICC and MSVC, we are allowed to use the intrinsics, but the
+#include was missing.
+
+[ChangeLog][QtCore] Fixed a compilation issue with qfloat16 if AVX2
+support is enabled in the compiler. Since all processors that support
+AVX2 also support F16C, for GCC and Clang it is recommended to either
+add -mf16c to your build or to use the corresponding -march= switch.
+
+Task-number: QTBUG-64529
+Change-Id: I84e363d735b443cb9beefffd14b8ac1fd4baa978
+Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
+---
+ src/corelib/global/qfloat16.h | 15 ++++++++++++---
+ 1 file changed, 12 insertions(+), 3 deletions(-)
+
+diff --git a/src/corelib/global/qfloat16.h b/src/corelib/global/qfloat16.h
+index 89a62a93db..a0aa9496b4 100644
+--- a/src/corelib/global/qfloat16.h
++++ b/src/corelib/global/qfloat16.h
+@@ -44,7 +44,16 @@
+ #include <QtCore/qmetatype.h>
+ #include <string.h>
+
+-#if defined __F16C__
++#if defined(QT_COMPILER_SUPPORTS_F16C) && defined(__AVX2__) && !defined(__F16C__)
++// All processors that support AVX2 do support F16C too. That doesn't mean
++// we're allowed to use the intrinsics directly, so we'll do it only for
++// the Intel and Microsoft's compilers.
++# if defined(Q_CC_INTEL) || defined(Q_CC_MSVC)
++# define __F16C__ 1
++# endif
++#endif
++
++#if defined(QT_COMPILER_SUPPORTS_F16C) && defined(__F16C__)
+ #include <immintrin.h>
+ #endif
+
+@@ -116,7 +125,7 @@ QT_WARNING_DISABLE_CLANG("-Wc99-extensions")
+ QT_WARNING_DISABLE_GCC("-Wold-style-cast")
+ inline qfloat16::qfloat16(float f) Q_DECL_NOTHROW
+ {
+-#if defined(QT_COMPILER_SUPPORTS_F16C) && (defined(__F16C__) || defined(__AVX2__))
++#if defined(QT_COMPILER_SUPPORTS_F16C) && defined(__F16C__)
+ __m128 packsingle = _mm_set_ss(f);
+ __m128i packhalf = _mm_cvtps_ph(packsingle, 0);
+ b16 = _mm_extract_epi16(packhalf, 0);
+@@ -134,7 +143,7 @@ QT_WARNING_POP
+
+ inline qfloat16::operator float() const Q_DECL_NOTHROW
+ {
+-#if defined(QT_COMPILER_SUPPORTS_F16C) && (defined(__F16C__) || defined(__AVX2__))
++#if defined(QT_COMPILER_SUPPORTS_F16C) && defined(__F16C__)
+ __m128i packhalf = _mm_cvtsi32_si128(b16);
+ __m128 packsingle = _mm_cvtph_ps(packhalf);
+ return _mm_cvtss_f32(packsingle);
+--
+cgit v1.1-6-g87c4
+
diff --git a/dev-qt/qtcore/qtcore-5.9.3.ebuild b/dev-qt/qtcore/qtcore-5.9.3.ebuild
index 779bc30c7b90..5442d7c47bf9 100644
--- a/dev-qt/qtcore/qtcore-5.9.3.ebuild
+++ b/dev-qt/qtcore/qtcore-5.9.3.ebuild
@@ -24,6 +24,8 @@ DEPEND="
"
RDEPEND="${DEPEND}"
+PATCHES=( "${FILESDIR}/${P}-avx.patch" )
+
QT5_TARGET_SUBDIRS=(
src/tools/bootstrap
src/tools/moc