aboutsummaryrefslogtreecommitdiff
path: root/src/cpu/CpuContext.cpp
diff options
context:
space:
mode:
authorGeorgios Pinitas <georgios.pinitas@arm.com>2021-06-24 20:32:11 +0100
committerGeorgios Pinitas <georgios.pinitas@arm.com>2021-06-28 12:00:14 +0000
commit731fe667e3009bfbfee8b0eb74ecb68b291e4311 (patch)
treee3a8ea66b88cee4af19363212e5a92864032becd /src/cpu/CpuContext.cpp
parentb1496e6a1074c90fba64633ec92fa202f5f7d1d8 (diff)
downloadComputeLibrary-731fe667e3009bfbfee8b0eb74ecb68b291e4311.tar.gz
Simplify CpuInfo logic
Refactors the CpuInfo extraction code and cleans the usage of it in the CpuContext class Signed-off-by: Georgios Pinitas <georgios.pinitas@arm.com> Change-Id: Iea47dfdaad431fb49285da92778d6b42cf318f60 Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/5848 Tested-by: Arm Jenkins <bsgcomp@arm.com> Comments-Addressed: Arm Jenkins <bsgcomp@arm.com> Reviewed-by: Giorgio Arena <giorgio.arena@arm.com>
Diffstat (limited to 'src/cpu/CpuContext.cpp')
-rw-r--r--src/cpu/CpuContext.cpp42
1 files changed, 9 insertions, 33 deletions
diff --git a/src/cpu/CpuContext.cpp b/src/cpu/CpuContext.cpp
index a1c6413c98..1a971a6a16 100644
--- a/src/cpu/CpuContext.cpp
+++ b/src/cpu/CpuContext.cpp
@@ -90,29 +90,6 @@ AllocatorWrapper populate_allocator(AclAllocator *external_allocator)
return is_valid ? AllocatorWrapper(*external_allocator) : AllocatorWrapper(default_allocator);
}
-cpuinfo::CpuIsaInfo populate_capabilities_legacy(const CPUInfo &cpu_info)
-{
- cpuinfo::CpuIsaInfo isa_caps;
-
- // Extract SIMD extension
- isa_caps.neon = true;
- isa_caps.sve = cpu_info.has_sve();
- isa_caps.sve2 = cpu_info.has_sve2();
-
- // Extract data-type support
- isa_caps.fp16 = cpu_info.has_fp16();
- isa_caps.bf16 = cpu_info.has_bf16();
- isa_caps.svebf16 = cpu_info.has_svebf16();
-
- // Extract ISA extensions
- isa_caps.dot = cpu_info.has_dotprod();
- isa_caps.i8mm = cpu_info.has_i8mm();
- isa_caps.svei8mm = cpu_info.has_svei8mm();
- isa_caps.svef32mm = cpu_info.has_svef32mm();
-
- return isa_caps;
-}
-
cpuinfo::CpuIsaInfo populate_capabilities_flags(AclTargetCapabilities external_caps)
{
cpuinfo::CpuIsaInfo isa_caps;
@@ -123,8 +100,9 @@ cpuinfo::CpuIsaInfo populate_capabilities_flags(AclTargetCapabilities external_c
isa_caps.sve2 = external_caps & AclCpuCapabilitiesSve2;
// Extract data-type support
- isa_caps.fp16 = external_caps & AclCpuCapabilitiesFp16;
- isa_caps.bf16 = external_caps & AclCpuCapabilitiesBf16;
+ isa_caps.fp16 = external_caps & AclCpuCapabilitiesFp16;
+ isa_caps.bf16 = external_caps & AclCpuCapabilitiesBf16;
+ isa_caps.svebf16 = isa_caps.bf16;
// Extract ISA extensions
isa_caps.dot = external_caps & AclCpuCapabilitiesDot;
@@ -139,17 +117,15 @@ CpuCapabilities populate_capabilities(AclTargetCapabilities external_caps,
{
CpuCapabilities caps;
- // Extract legacy structure
- cpuinfo::CpuIsaInfo isa_caps;
+ // Populate capabilities with system information
+ caps.cpu_info = cpuinfo::CpuInfo::build();
if(external_caps != AclCpuCapabilitiesAuto)
{
- isa_caps = populate_capabilities_flags(external_caps);
- }
- else
- {
- isa_caps = populate_capabilities_legacy(CPUInfo::get());
+ cpuinfo::CpuIsaInfo isa = populate_capabilities_flags(external_caps);
+ auto cpus = caps.cpu_info.cpus();
+
+ caps.cpu_info = cpuinfo::CpuInfo(isa, cpus);
}
- caps.cpu_info = cpuinfo::CpuInfo(isa_caps, {});
// Set max number of threads
#if defined(BARE_METAL)