From 121b0bfed51641ddae0585377471aeecdfec5d02 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Tue, 6 Nov 2018 14:44:05 -0800 Subject: Make qDetectCpuFeatures() return the CPU features it detected Micro (nano?) optimization. Change-Id: Iba4b5c183776497d8ee1fffd1564aa53056f343d Reviewed-by: Allan Sandfeld Jensen --- src/corelib/tools/qsimd.cpp | 3 ++- src/corelib/tools/qsimd_p.h | 8 ++------ 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/corelib/tools/qsimd.cpp b/src/corelib/tools/qsimd.cpp index 07a8b022bc..4a44cf02e0 100644 --- a/src/corelib/tools/qsimd.cpp +++ b/src/corelib/tools/qsimd.cpp @@ -529,7 +529,7 @@ Q_CORE_EXPORT QBasicAtomicInteger qt_cpu_features[1] = { Q_BASIC_ATOMIC Q_CORE_EXPORT QBasicAtomicInteger qt_cpu_features[2] = { Q_BASIC_ATOMIC_INITIALIZER(0), Q_BASIC_ATOMIC_INITIALIZER(0) }; #endif -void qDetectCpuFeatures() +quint64 qDetectCpuFeatures() { quint64 f = detectProcessorFeatures(); QByteArray disable = qgetenv("QT_NO_CPU_FEATURE"); @@ -563,6 +563,7 @@ void qDetectCpuFeatures() #ifndef Q_ATOMIC_INT64_IS_SUPPORTED qt_cpu_features[1].store(f >> 32); #endif + return f; } void qDumpCPUFeatures() diff --git a/src/corelib/tools/qsimd_p.h b/src/corelib/tools/qsimd_p.h index 9f1321df94..c36e1e484f 100644 --- a/src/corelib/tools/qsimd_p.h +++ b/src/corelib/tools/qsimd_p.h @@ -344,7 +344,7 @@ extern Q_CORE_EXPORT QBasicAtomicInteger qt_cpu_features[1]; #else extern Q_CORE_EXPORT QBasicAtomicInteger qt_cpu_features[2]; #endif -Q_CORE_EXPORT void qDetectCpuFeatures(); +Q_CORE_EXPORT quint64 qDetectCpuFeatures(); static inline quint64 qCpuFeatures() { @@ -353,11 +353,7 @@ static inline quint64 qCpuFeatures() features |= quint64(qt_cpu_features[1].load()) << 32; #endif if (Q_UNLIKELY(features == 0)) { - qDetectCpuFeatures(); - features = qt_cpu_features[0].load(); -#ifndef Q_ATOMIC_INT64_IS_SUPPORTED - features |= quint64(qt_cpu_features[1].load()) << 32; -#endif + features = qDetectCpuFeatures(); Q_ASSUME(features != 0); } return features; -- cgit v1.2.3