Updated cpu detection
* Added the case in the cpu detection code for Klein cores
* Added has_sve() and set_sve() methods in CpuInfo
* Detection code checks for presence of SVE via HWCAP_SVE
* Updated the heuristic in sve kernels to check for the absence of Klein
* Resolves: COMPMID-4085
Change-Id: I0b8c72ff19dc5a3a81628d121a1afa836e724b4f
Signed-off-by: Pablo Marquez Tello <pablo.tello@arm.com>
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/5257
Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com>
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
diff --git a/arm_compute/core/CPP/CPPTypes.h b/arm_compute/core/CPP/CPPTypes.h
index fd6bfc3..2de73ac 100644
--- a/arm_compute/core/CPP/CPPTypes.h
+++ b/arm_compute/core/CPP/CPPTypes.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017-2020 Arm Limited.
+ * Copyright (c) 2017-2021 Arm Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -45,6 +45,7 @@
A53,
A55r0,
A55r1,
+ KLEIN,
X1,
A73
};
@@ -76,6 +77,10 @@
{
return std::string("GENERIC");
}
+ case CPUModel::KLEIN:
+ {
+ return std::string("KLEIN");
+ }
case CPUModel::GENERIC_FP16:
{
return std::string("GENERIC_FP16");
@@ -136,6 +141,11 @@
* @return true of the cpu supports dot product, false otherwise
*/
bool has_dotprod() const;
+ /** Checks if the cpu model supports sve.
+ *
+ * @return true of the cpu supports sve, false otherwise
+ */
+ bool has_sve() const;
/** Gets the cpu model for a given cpuid.
*
* @param[in] cpuid the id of the cpu core to be retrieved,
@@ -178,6 +188,11 @@
* @param[in] dotprod whether the cpu supports dot product.
*/
void set_dotprod(const bool dotprod);
+ /** Set sve support
+ *
+ * @param[in] sve whether the cpu supports sve.
+ */
+ void set_sve(const bool sve);
/** Set the cpumodel for a given cpu core
*
* @param[in] cpuid the id of the core to be set.
@@ -200,6 +215,7 @@
std::vector<CPUModel> _percpu = {};
bool _fp16 = false;
bool _dotprod = false;
+ bool _sve = false;
unsigned int _L1_cache_size = 32768;
unsigned int _L2_cache_size = 262144;
};