Make qDetectCpuFeatures() return the CPU features it detected
Micro (nano?) optimization. Change-Id: Iba4b5c183776497d8ee1fffd1564aa53056f343d Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>bb10
parent
ffeefaac62
commit
121b0bfed5
|
|
@ -529,7 +529,7 @@ Q_CORE_EXPORT QBasicAtomicInteger<quint64> qt_cpu_features[1] = { Q_BASIC_ATOMIC
|
|||
Q_CORE_EXPORT QBasicAtomicInteger<unsigned> 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()
|
||||
|
|
|
|||
|
|
@ -344,7 +344,7 @@ extern Q_CORE_EXPORT QBasicAtomicInteger<quint64> qt_cpu_features[1];
|
|||
#else
|
||||
extern Q_CORE_EXPORT QBasicAtomicInteger<unsigned> 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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue