diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2014-06-24 17:52:14 -0700 |
---|---|---|
committer | Thiago Macieira <thiago.macieira@intel.com> | 2014-08-05 19:23:31 +0200 |
commit | 11bbacf19474844a9a48996db9cb79bd30e3246b (patch) | |
tree | 1d0c997531dbcde79be743e2a6eb440b08225f5b /src | |
parent | 9c22b5c30a1c9f519f571ff997991804e096c586 (diff) |
Remove the last remnants of iWMMXt in Qt
This code hasn't been tested for at least 4 years. It's not maintained
and probably doesn't work.
Change-Id: I4b9a5179e34111b400914f91caa6b741b69771bb
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/corelib/global/qcompilerdetection.h | 1 | ||||
-rw-r--r-- | src/corelib/tools/qsimd.cpp | 22 | ||||
-rw-r--r-- | src/corelib/tools/qsimd_p.h | 24 | ||||
-rw-r--r-- | src/gui/painting/painting.pri | 1 | ||||
-rw-r--r-- | src/gui/painting/qdrawhelper.cpp | 8 | ||||
-rw-r--r-- | src/gui/painting/qdrawhelper_iwmmxt.cpp | 158 | ||||
-rw-r--r-- | src/gui/painting/qdrawhelper_x86_p.h | 7 |
7 files changed, 7 insertions, 214 deletions
diff --git a/src/corelib/global/qcompilerdetection.h b/src/corelib/global/qcompilerdetection.h index 02365449e5..3bf1cc0cbb 100644 --- a/src/corelib/global/qcompilerdetection.h +++ b/src/corelib/global/qcompilerdetection.h @@ -1069,7 +1069,6 @@ # undef QT_COMPILER_SUPPORTS_AVX2 #endif #if !defined(Q_PROCESSOR_ARM) -# undef QT_COMPILER_SUPPORTS_IWMMXT # undef QT_COMPILER_SUPPORTS_NEON #endif #if !defined(Q_PROCESSOR_MIPS) diff --git a/src/corelib/tools/qsimd.cpp b/src/corelib/tools/qsimd.cpp index 64f13cf1e7..0271e2ff68 100644 --- a/src/corelib/tools/qsimd.cpp +++ b/src/corelib/tools/qsimd.cpp @@ -54,14 +54,13 @@ # include <intrin.h> # endif # endif -#elif defined(Q_OS_LINUX) && (defined(Q_PROCESSOR_ARM) || defined(Q_PROCESSOR_MIPS_32) || defined(QT_COMPILER_SUPPORTS_IWMMXT)) +#elif defined(Q_OS_LINUX) && (defined(Q_PROCESSOR_ARM) || defined(Q_PROCESSOR_MIPS_32)) #include "private/qcore_unix_p.h" // the kernel header definitions for HWCAP_* // (the ones we need/may need anyway) // copied from <asm/hwcap.h> (ARM) -#define HWCAP_IWMMXT 512 #define HWCAP_CRUNCH 1024 #define HWCAP_THUMBEE 2048 #define HWCAP_NEON 4096 @@ -86,8 +85,6 @@ static inline uint detectProcessorFeatures() uint features = 0; #if defined (ARM) - if (IsProcessorFeaturePresent(PF_ARM_INTEL_WMMX)) - features |= IWMMXT; # ifdef PF_ARM_NEON if (IsProcessorFeaturePresent(PF_ARM_NEON)) features |= ARM_NEON; @@ -101,7 +98,7 @@ static inline uint detectProcessorFeatures() return features; } -#elif defined(Q_PROCESSOR_ARM) || defined(QT_COMPILER_SUPPORTS_IWMMXT) +#elif defined(Q_PROCESSOR_ARM) static inline uint detectProcessorFeatures() { uint features = 0; @@ -121,8 +118,6 @@ static inline uint detectProcessorFeatures() int max = nread / (sizeof vector[0]); for (int i = 0; i < max; i += 2) if (vector[i] == AT_HWCAP) { - if (vector[i+1] & HWCAP_IWMMXT) - features |= IWMMXT; if (vector[i+1] & HWCAP_NEON) features |= NEON; break; @@ -135,10 +130,7 @@ static inline uint detectProcessorFeatures() // fall back if /proc/self/auxv wasn't found #endif -#if defined(QT_COMPILER_SUPPORTS_IWMMXT) - // runtime detection only available when running as a previlegied process - features = IWMMXT; -#elif defined(__ARM_NEON__) +#if defined(__ARM_NEON__) features = NEON; #endif @@ -470,7 +462,7 @@ static inline uint detectProcessorFeatures() /* * Use kdesdk/scripts/generate_string_table.pl to update the table below. * Here's the data (don't forget the ONE leading space): - iwmmxt + neon sse2 sse3 @@ -487,7 +479,7 @@ static inline uint detectProcessorFeatures() // begin generated static const char features_string[] = - " iwmmxt\0" + "\0" " neon\0" " sse2\0" " sse3\0" @@ -503,8 +495,8 @@ static const char features_string[] = "\0"; static const int features_indices[] = { - 0, 8, 14, 20, 26, 33, 41, 49, - 54, 60, 65, 70, 75, -1 + 0, 1, 7, 13, 19, 26, 34, 42, + 47, 53, 58, 63, 68, -1 }; // end generated diff --git a/src/corelib/tools/qsimd_p.h b/src/corelib/tools/qsimd_p.h index 19a1943367..084e09db63 100644 --- a/src/corelib/tools/qsimd_p.h +++ b/src/corelib/tools/qsimd_p.h @@ -63,7 +63,6 @@ * Supported XXX are: * Flag | Arch | GCC | Intel CC | MSVC | * ARM_NEON | ARM | I & C | None | ? | - * IWMMXT | ARM | I & C | None | I & C | * SSE2 | x86 | I & C | I & C | I & C | * SSE3 | x86 | I & C | I & C | I only | * SSSE3 | x86 | I & C | I & C | I only | @@ -236,31 +235,12 @@ #define QT_FUNCTION_TARGET_STRING_ARM_NEON "neon" #endif - -// IWMMXT intrinsics -#if defined(QT_COMPILER_SUPPORTS_IWMMXT) -#include <mmintrin.h> -#if defined(Q_OS_WINCE) -# include "qplatformdefs.h" -#endif -#endif - -#if defined(QT_COMPILER_SUPPORTS_IWMMXT) -#if !defined(__IWMMXT__) && !defined(Q_OS_WINCE) -# include <xmmintrin.h> -#elif defined(Q_OS_WINCE_STD) && defined(_X86_) -# pragma warning(disable: 4391) -# include <xmmintrin.h> -#endif -#endif - #undef QT_COMPILER_SUPPORTS_SIMD_ALWAYS QT_BEGIN_NAMESPACE enum CPUFeatures { - IWMMXT = 0x1, NEON = 0x2, ARM_NEON = NEON, SSE2 = 0x4, SSE3 = 0x8, @@ -309,9 +289,6 @@ static const uint qCompilerCpuFeatures = 0 #if defined __ARM_NEON__ | NEON #endif -#if defined __IWMMXT__ - | IWMMXT -#endif #if defined __mips_dsp | DSP #endif @@ -320,7 +297,6 @@ static const uint qCompilerCpuFeatures = 0 #endif ; - extern Q_CORE_EXPORT QBasicAtomicInt qt_cpu_features; Q_CORE_EXPORT void qDetectCpuFeatures(); diff --git a/src/gui/painting/painting.pri b/src/gui/painting/painting.pri index 31c0c214d5..a5a395cce2 100644 --- a/src/gui/painting/painting.pri +++ b/src/gui/painting/painting.pri @@ -93,7 +93,6 @@ SOURCES += \ SSE2_SOURCES += painting/qdrawhelper_sse2.cpp SSSE3_SOURCES += painting/qdrawhelper_ssse3.cpp -IWMMXT_SOURCES += painting/qdrawhelper_iwmmxt.cpp !ios { CONFIG += no_clang_integrated_as diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp index ffb952bce4..9292eeb4a5 100644 --- a/src/gui/painting/qdrawhelper.cpp +++ b/src/gui/painting/qdrawhelper.cpp @@ -6801,14 +6801,6 @@ void qInitDrawhelperAsm() functionForModeSolidAsm = qt_functionForModeSolid_SSE2; #endif // SSE2 -#ifdef QT_COMPILER_SUPPORTS_IWMMXT - if (features & IWMMXT) { - functionForModeAsm = qt_functionForMode_IWMMXT; - functionForModeSolidAsm = qt_functionForModeSolid_IWMMXT; - qDrawHelper[QImage::Format_ARGB32_Premultiplied].blendColor = qt_blend_color_argb_iwmmxt; - } -#endif // IWMMXT - #if defined(__ARM_NEON__) && !defined(Q_OS_IOS) qBlendFunctions[QImage::Format_RGB32][QImage::Format_RGB32] = qt_blend_rgb32_on_rgb32_neon; qBlendFunctions[QImage::Format_ARGB32_Premultiplied][QImage::Format_RGB32] = qt_blend_rgb32_on_rgb32_neon; diff --git a/src/gui/painting/qdrawhelper_iwmmxt.cpp b/src/gui/painting/qdrawhelper_iwmmxt.cpp deleted file mode 100644 index 7b734fdfc6..0000000000 --- a/src/gui/painting/qdrawhelper_iwmmxt.cpp +++ /dev/null @@ -1,158 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the QtGui module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifdef QT_COMPILER_SUPPORTS_IWMMXT - -#include <mmintrin.h> -#if defined(Q_OS_WINCE) -# include "qplatformdefs.h" -#endif -#if !defined(__IWMMXT__) && !defined(Q_OS_WINCE) -# include <xmmintrin.h> -#elif defined(Q_OS_WINCE_STD) && defined(_X86_) -# pragma warning(disable: 4391) -# include <xmmintrin.h> -#endif - -#include <private/qdrawhelper_sse_p.h> - -QT_BEGIN_NAMESPACE - -#ifndef _MM_SHUFFLE -#define _MM_SHUFFLE(fp3,fp2,fp1,fp0) \ - (((fp3) << 6) | ((fp2) << 4) | ((fp1) << 2) | (fp0)) -#endif - -struct QIWMMXTIntrinsics : public QMMXCommonIntrinsics -{ - static inline m64 alpha(m64 x) { - return _mm_shuffle_pi16 (x, _MM_SHUFFLE(3, 3, 3, 3)); - } - - static inline m64 _load_alpha(uint x, const m64 &mmx_0x0000) { - m64 t = _mm_unpacklo_pi8(_mm_cvtsi32_si64(x), mmx_0x0000); - return _mm_shuffle_pi16(t, _MM_SHUFFLE(0, 0, 0, 0)); - } - - static inline void end() { - } -}; - -CompositionFunctionSolid qt_functionForModeSolid_IWMMXT[numCompositionFunctions] = { - comp_func_solid_SourceOver<QIWMMXTIntrinsics>, - comp_func_solid_DestinationOver<QIWMMXTIntrinsics>, - comp_func_solid_Clear<QIWMMXTIntrinsics>, - comp_func_solid_Source<QIWMMXTIntrinsics>, - 0, - comp_func_solid_SourceIn<QIWMMXTIntrinsics>, - comp_func_solid_DestinationIn<QIWMMXTIntrinsics>, - comp_func_solid_SourceOut<QIWMMXTIntrinsics>, - comp_func_solid_DestinationOut<QIWMMXTIntrinsics>, - comp_func_solid_SourceAtop<QIWMMXTIntrinsics>, - comp_func_solid_DestinationAtop<QIWMMXTIntrinsics>, - comp_func_solid_XOR<QIWMMXTIntrinsics>, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // svg 1.2 modes - rasterop_solid_SourceOrDestination<QIWMMXTIntrinsics>, - rasterop_solid_SourceAndDestination<QIWMMXTIntrinsics>, - rasterop_solid_SourceXorDestination<QIWMMXTIntrinsics>, - rasterop_solid_NotSourceAndNotDestination<QIWMMXTIntrinsics>, - rasterop_solid_NotSourceOrNotDestination<QIWMMXTIntrinsics>, - rasterop_solid_NotSourceXorDestination<QIWMMXTIntrinsics>, - rasterop_solid_NotSource<QIWMMXTIntrinsics>, - rasterop_solid_NotSourceAndDestination<QIWMMXTIntrinsics>, - rasterop_solid_SourceAndNotDestination<QIWMMXTIntrinsics>, - rasterop_solid_NotSourceOrDestination<QIWMMXTIntrinsics>, - rasterop_solid_SourceOrNotDestination<QIWMMXTIntrinsics>, - rasterop_solid_ClearDestination<QIWMMXTIntrinsics>, - rasterop_solid_SetDestination<QIWMMXTIntrinsics>, - rasterop_solid_NotDestination<QIWMMXTIntrinsics> -}; - -CompositionFunction qt_functionForMode_IWMMXT[] = { - comp_func_SourceOver<QIWMMXTIntrinsics>, - comp_func_DestinationOver<QIWMMXTIntrinsics>, - comp_func_Clear<QIWMMXTIntrinsics>, - comp_func_Source<QIWMMXTIntrinsics>, - comp_func_Destination, - comp_func_SourceIn<QIWMMXTIntrinsics>, - comp_func_DestinationIn<QIWMMXTIntrinsics>, - comp_func_SourceOut<QIWMMXTIntrinsics>, - comp_func_DestinationOut<QIWMMXTIntrinsics>, - comp_func_SourceAtop<QIWMMXTIntrinsics>, - comp_func_DestinationAtop<QIWMMXTIntrinsics>, - comp_func_XOR<QIWMMXTIntrinsics>, - comp_func_Plus, - comp_func_Multiply, - comp_func_Screen, - comp_func_Overlay, - comp_func_Darken, - comp_func_Lighten, - comp_func_ColorDodge, - comp_func_ColorBurn, - comp_func_HardLight, - comp_func_SoftLight, - comp_func_Difference, - comp_func_Exclusion, - rasterop_SourceOrDestination, - rasterop_SourceAndDestination, - rasterop_SourceXorDestination, - rasterop_NotSourceAndNotDestination, - rasterop_NotSourceOrNotDestination, - rasterop_NotSourceXorDestination, - rasterop_NotSource, - rasterop_NotSourceAndDestination, - rasterop_SourceAndNotDestination, - rasterop_NotSourceOrDestination, - rasterop_SourceOrNotDestination, - rasterop_ClearDestination, - rasterop_SetDestination, - rasterop_NotDestination -}; - -void qt_blend_color_argb_iwmmxt(int count, const QSpan *spans, void *userData) -{ - qt_blend_color_argb_x86<QIWMMXTIntrinsics>(count, spans, userData, - (CompositionFunctionSolid*)qt_functionForModeSolid_IWMMXT); -} - -#endif // QT_COMPILER_SUPPORTS_IWMMXT - -QT_END_NAMESPACE diff --git a/src/gui/painting/qdrawhelper_x86_p.h b/src/gui/painting/qdrawhelper_x86_p.h index 97c1f87c2a..dfbb38eb2d 100644 --- a/src/gui/painting/qdrawhelper_x86_p.h +++ b/src/gui/painting/qdrawhelper_x86_p.h @@ -82,13 +82,6 @@ extern CompositionFunction qt_functionForMode_SSE2[]; extern CompositionFunctionSolid qt_functionForModeSolid_SSE2[]; #endif // __SSE2__ -#ifdef QT_COMPILER_SUPPORTS_IWMMXT -void qt_blend_color_argb_iwmmxt(int count, const QSpan *spans, void *userData); - -extern CompositionFunction qt_functionForMode_IWMMXT[]; -extern CompositionFunctionSolid qt_functionForModeSolid_IWMMXT[]; -#endif - static const int numCompositionFunctions = 38; QT_END_NAMESPACE |