mirror of
https://github.com/google/cpu_features.git
synced 2025-04-27 23:22:31 +02:00
parent
51693b8b3e
commit
5911e96bbd
@ -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;
|
||||
|
||||
|
@ -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();
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user