Fix ARM and MIPS runtime CPU feature flags

The set values didn't match tested values, as the enum were already
on flag form.

Change-Id: I9e8b0d419682122e8d40cd47bd68d840386c2066
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
(cherry picked from commit ccd17fbc57fae0cb2e5c020e00706edc856b13df)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Allan Sandfeld Jensen 2021-04-19 17:01:05 +02:00 committed by Qt Cherry-pick Bot
parent cbec552790
commit a7b9a9328e

View File

@ -132,7 +132,7 @@ static inline quint64 detectProcessorFeatures()
#if defined(Q_OS_LINUX)
# if defined(Q_PROCESSOR_ARM_V8) && defined(Q_PROCESSOR_ARM_64)
features |= Q_UINT64_C(1) << CpuFeatureNEON; // NEON is always available on ARMv8 64bit.
features |= CpuFeatureNEON; // NEON is always available on ARMv8 64bit.
# endif
int auxv = qt_safe_open("/proc/self/auxv", O_RDONLY);
if (auxv != -1) {
@ -151,17 +151,17 @@ static inline quint64 detectProcessorFeatures()
# if defined(Q_PROCESSOR_ARM_V8) && defined(Q_PROCESSOR_ARM_64)
// For Aarch64:
if (vector[i+1] & HWCAP_CRC32)
features |= Q_UINT64_C(1) << CpuFeatureCRC32;
features |= CpuFeatureCRC32;
# endif
// Aarch32, or ARMv7 or before:
if (vector[i+1] & HWCAP_NEON)
features |= Q_UINT64_C(1) << CpuFeatureNEON;
features |= CpuFeatureNEON;
}
# if defined(Q_PROCESSOR_ARM_32)
// For Aarch32:
if (vector[i] == AT_HWCAP2) {
if (vector[i+1] & HWCAP2_CRC32)
features |= Q_UINT64_C(1) << CpuFeatureCRC32;
features |= CpuFeatureCRC32;
}
# endif
}
@ -174,10 +174,10 @@ static inline quint64 detectProcessorFeatures()
#endif
#if defined(__ARM_NEON__)
features |= Q_UINT64_C(1) << CpuFeatureNEON;
features |= CpuFeatureNEON;
#endif
#if defined(__ARM_FEATURE_CRC32)
features |= Q_UINT64_C(1) << CpuFeatureCRC32;
features |= CpuFeatureCRC32;
#endif
return features;
@ -548,18 +548,18 @@ static inline quint64 detectProcessorFeatures()
quint64 flags = 0;
#if defined __mips_dsp
flags |= Q_UINT64_C(1) << CpuFeatureDSP;
flags |= CpuFeatureDSP;
# if defined __mips_dsp_rev && __mips_dsp_rev >= 2
flags |= Q_UINT64_C(1) << CpuFeatureDSPR2;
flags |= CpuFeatureDSPR2;
# elif defined(Q_OS_LINUX)
if (procCpuinfoContains("cpu model", "MIPS 74Kc") || procCpuinfoContains("cpu model", "MIPS 74Kf"))
flags |= Q_UINT64_C(1) << CpuFeatureDSPR2;
flags |= CpuFeatureDSPR2;
# endif
#elif defined(Q_OS_LINUX)
if (procCpuinfoContains("ASEs implemented", "dsp")) {
flags |= Q_UINT64_C(1) << CpuFeatureDSP;
flags |= CpuFeatureDSP;
if (procCpuinfoContains("cpu model", "MIPS 74Kc") || procCpuinfoContains("cpu model", "MIPS 74Kf"))
flags |= Q_UINT64_C(1) << CpuFeatureDSPR2;
flags |= CpuFeatureDSPR2;
}
#endif