1
0
mirror of https://github.com/google/cpu_features.git synced 2025-04-27 23:22:31 +02:00

add r6 flag (#57)

Update tests and add support in ndk-compat as well
This commit is contained in:
Guillaume Chatelet 2019-01-22 11:00:48 +01:00 committed by GitHub
parent 51693b8b3e
commit 5911e96bbd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 18 additions and 1 deletions

View File

@ -24,6 +24,7 @@ typedef struct {
// https://www.mips.com/products/architectures/ase/simd/
int eva : 1; // Enhanced Virtual Addressing
// https://www.mips.com/products/architectures/mips64/
int r6 : 1; // True if is release 6 of the processor.
// Make sure to update MipsFeaturesEnum below if you add a field here.
} MipsFeatures;
@ -40,6 +41,7 @@ MipsInfo GetMipsInfo(void);
typedef enum {
MIPS_MSA,
MIPS_EVA,
MIPS_R6,
MIPS_LAST_,
} MipsFeaturesEnum;

View File

@ -135,7 +135,7 @@ static void android_cpuInit(void) {
// if (info.features.) g_cpuFeatures |= ANDROID_CPU_X86_FEATURE_SHA_NI;
#elif defined(CPU_FEATURES_ARCH_MIPS)
MipsInfo info = GetMipsInfo();
// if (info.features.) g_cpuFeatures |= ANDROID_CPU_MIPS_FEATURE_R6;
if (info.features.r6) g_cpuFeatures |= ANDROID_CPU_MIPS_FEATURE_R6;
if (info.features.msa) g_cpuFeatures |= ANDROID_CPU_MIPS_FEATURE_MSA;
#elif defined(CPU_FEATURES_ARCH_AARCH64)
Aarch64Info info = GetAarch64Info();

View File

@ -21,10 +21,12 @@
DECLARE_SETTER(MipsFeatures, msa)
DECLARE_SETTER(MipsFeatures, eva)
DECLARE_SETTER(MipsFeatures, r6)
static const CapabilityConfig kConfigs[] = {
{{MIPS_HWCAP_MSA, 0}, "msa", &set_msa}, //
{{0, 0}, "eva", &set_eva}, //
{{MIPS_HWCAP_R6, 0}, "r6", &set_r6}, //
};
static const size_t kConfigsSize = sizeof(kConfigs) / sizeof(CapabilityConfig);
@ -79,6 +81,8 @@ int GetMipsFeaturesEnumValue(const MipsFeatures* features,
return features->msa;
case MIPS_EVA:
return features->eva;
case MIPS_R6:
return features->r6;
case MIPS_LAST_:
break;
}
@ -91,6 +95,8 @@ const char* GetMipsFeaturesEnumName(MipsFeaturesEnum value) {
return "msa";
case MIPS_EVA:
return "eva";
case MIPS_R6:
return "r6";
case MIPS_LAST_:
break;
}

View File

@ -26,6 +26,15 @@ namespace {
void DisableHardwareCapabilities() { SetHardwareCapabilities(0, 0); }
TEST(CpuinfoMipsTest, FromHardwareCapBoth) {
SetHardwareCapabilities(MIPS_HWCAP_MSA | MIPS_HWCAP_R6, 0);
GetEmptyFilesystem(); // disabling /proc/cpuinfo
const auto info = GetMipsInfo();
EXPECT_TRUE(info.features.msa);
EXPECT_FALSE(info.features.eva);
EXPECT_TRUE(info.features.r6);
}
TEST(CpuinfoMipsTest, FromHardwareCapOnlyOne) {
SetHardwareCapabilities(MIPS_HWCAP_MSA, 0);
GetEmptyFilesystem(); // disabling /proc/cpuinfo