aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/runtime/CPUUtils.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/runtime/CPUUtils.cpp b/src/runtime/CPUUtils.cpp
index b7aa0d5487..f3355a740b 100644
--- a/src/runtime/CPUUtils.cpp
+++ b/src/runtime/CPUUtils.cpp
@@ -95,6 +95,7 @@ bool model_supports_fp16(CPUModel model)
return false;
}
}
+
/* Convert an MIDR register value to a CPUModel enum value. */
CPUModel midr_to_model(const unsigned int midr)
{
@@ -145,6 +146,19 @@ CPUModel midr_to_model(const unsigned int midr)
break;
}
}
+ else if(implementer == 0x48) // HiSilicon CPUs
+ {
+ // Only CPUs we have code paths for are detected. All other CPUs can be safely classed as "GENERIC"
+ switch(cpunum)
+ {
+ case 0xd40: // A76 (Kirin 980)
+ model = CPUModel::GENERIC_FP16_DOT;
+ break;
+ default:
+ model = CPUModel::GENERIC;
+ break;
+ }
+ }
return model;
}