diff options
author | Raphael Kubo da Costa <rakuco@FreeBSD.org> | 2013-05-09 22:40:23 (GMT) |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-05-10 09:51:27 (GMT) |
commit | ccd1b2ee01c193cd157978c1f9f08f87d0f9c94b (patch) | |
tree | 0e6ba5a7dc229c70741da4e4b1aff696500865d9 /src/corelib/tools | |
parent | 9d12836c28eb8036775d94ca22db537b59b3a790 (diff) | |
download | Qt-ccd1b2ee01c193cd157978c1f9f08f87d0f9c94b.zip Qt-ccd1b2ee01c193cd157978c1f9f08f87d0f9c94b.tar.gz Qt-ccd1b2ee01c193cd157978c1f9f08f87d0f9c94b.tar.bz2 |
Check that 3DNow! instructions are supported before including mm3dnow.h.
Include mm3dnow.h the way we already include the (S)SSE{3,4} and AVX
instruction headers: by checking that the compiler is set to support those
instructions besides verifying that QT_HAVE_3DNOW evalues to true (which
only means the compiler supported them when the build was being configured).
This has not caused a problem in most cases so far because GCC protects its
mm3dnow.h header with an #ifdef __3dNOW__ (contrary to what it does on, say,
pmmintrin.h). clang's mm3dnow.h, on the other hand, does not have that check
and can fail if -march is set to, for example, i386 or i486.
Not backported from qt5 because qtbase because qsimd_p.h does not include
the 3DNow! headers after commit a1b30b49ef09bef2e97b9a0622bf7ad622678fee.
Change-Id: I15ab5e936c71c55f89c3f25777ab27fbd262e9cd
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/tools')
-rw-r--r-- | src/corelib/tools/qsimd_p.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/corelib/tools/qsimd_p.h b/src/corelib/tools/qsimd_p.h index 87e26e1..6a32e8f 100644 --- a/src/corelib/tools/qsimd_p.h +++ b/src/corelib/tools/qsimd_p.h @@ -199,7 +199,7 @@ QT_BEGIN_HEADER #endif // 3D now intrinsics -#if defined(QT_HAVE_3DNOW) +#if defined(QT_HAVE_3DNOW) && (defined(__3dNOW__) || defined(Q_CC_MSVC)) #include <mm3dnow.h> #endif |