diff options
author | Tobias Koenig <tobias.koenig@kdab.com> | 2016-01-14 08:23:43 +0000 |
---|---|---|
committer | Tobias Koenig <tobias.koenig@kdab.com> | 2016-01-19 08:25:02 +0000 |
commit | c5f7d15765597052983052805e0b4738497c0b5c (patch) | |
tree | ddc860a997c648ba57b10ac34e22c245238b3ac0 /src/corelib/tools/qsimd.cpp | |
parent | ea76ab2b2ded0197ddf9e33e8d6a8af909fce31c (diff) |
Replace ffsll with new qCountTrailingZeroBits
Change-Id: I44898909181e25247bf96cf4462971ac23c2a3ac
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/tools/qsimd.cpp')
-rw-r--r-- | src/corelib/tools/qsimd.cpp | 34 |
1 files changed, 2 insertions, 32 deletions
diff --git a/src/corelib/tools/qsimd.cpp b/src/corelib/tools/qsimd.cpp index 37a6126d8a..bde3f79b29 100644 --- a/src/corelib/tools/qsimd.cpp +++ b/src/corelib/tools/qsimd.cpp @@ -39,6 +39,7 @@ ****************************************************************************/ #include "qsimd_p.h" +#include "qalgorithms.h" #include <QByteArray> #include <stdio.h> @@ -676,37 +677,6 @@ static const int features_count = (sizeof features_indices) / (sizeof features_i // record what CPU features were enabled by default in this Qt build static const quint64 minFeature = qCompilerCpuFeatures; -#ifdef Q_OS_WIN -#if defined(Q_CC_GNU) -# define ffsll __builtin_ffsll -#else -int ffsll(quint64 i) -{ -#if defined(Q_OS_WIN64) - unsigned long result; - return _BitScanForward64(&result, i) ? result : 0; -#elif !defined(Q_OS_WINCE) - unsigned long result; - return _BitScanForward(&result, i) ? result : - _BitScanForward(&result, i >> 32) ? result + 32 : 0; -#else - return 0; -#endif -} -#endif -#elif defined(Q_OS_ANDROID) || defined(Q_OS_QNX) || defined(Q_OS_OSX) -# define ffsll __builtin_ffsll -#elif defined(Q_OS_INTEGRITY) -int ffsll(quint64 i) -{ - unsigned long result; - result = __CLZ32(i); - if (!result) - result = 32 + __CLZ32(i >> 32); - return result; -} -#endif - #ifdef Q_ATOMIC_INT64_IS_SUPPORTED Q_CORE_EXPORT QBasicAtomicInteger<quint64> qt_cpu_features[1] = { Q_BASIC_ATOMIC_INITIALIZER(0) }; #else @@ -762,7 +732,7 @@ void qDetectCpuFeatures() fprintf(stderr, "\n"); fflush(stderr); qFatal("Aborted. Incompatible processor: missing feature 0x%llx -%s.", missing, - features_string + features_indices[ffsll(missing) - 1]); + features_string + features_indices[qCountTrailingZeroBits(missing)]); } qt_cpu_features[0].store(f | quint32(QSimdInitialized)); |