diff options
Diffstat (limited to 'arm_compute/core/CPP/CPPTypes.h')
-rw-r--r-- | arm_compute/core/CPP/CPPTypes.h | 103 |
1 files changed, 73 insertions, 30 deletions
diff --git a/arm_compute/core/CPP/CPPTypes.h b/arm_compute/core/CPP/CPPTypes.h index 11891937d1..b080a86938 100644 --- a/arm_compute/core/CPP/CPPTypes.h +++ b/arm_compute/core/CPP/CPPTypes.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2021 Arm Limited. + * Copyright (c) 2017-2022 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -30,17 +30,26 @@ namespace arm_compute { +namespace cpuinfo +{ +struct CpuIsaInfo; +} // namespace cpuinfo + #define ARM_COMPUTE_CPU_MODEL_LIST \ X(GENERIC) \ X(GENERIC_FP16) \ X(GENERIC_FP16_DOT) \ - X(A35) \ X(A53) \ X(A55r0) \ X(A55r1) \ + X(A35) \ X(A73) \ - X(KLEIN) \ - X(X1) + X(A76) \ + X(A510) \ + X(X1) \ + X(V1) \ + X(A64FX) \ + X(N1) /** CPU models types * @@ -56,39 +65,79 @@ enum class CPUModel class CPUInfo final { -public: - /** Constructor */ +protected: CPUInfo(); ~CPUInfo(); - /** Disable copy constructor and assignment operator to avoid copying the vector of CPUs each time - * CPUInfo is initialized once in the IScheduler and ThreadInfo will get a pointer to it. +public: + /** Access the KernelLibrary singleton. + * This method has been deprecated and will be removed in future releases + * @return The KernelLibrary instance. */ - CPUInfo &operator=(const CPUInfo &cpuinfo) = delete; - CPUInfo(const CPUInfo &cpuinfo) = delete; - CPUInfo &operator=(CPUInfo &&cpuinfo) = default; - CPUInfo(CPUInfo &&cpuinfo) = default; + static CPUInfo &get(); + + /* Delete move and copy constructors and assignment operator + s */ + CPUInfo(CPUInfo const &) = delete; // Copy construct + CPUInfo(CPUInfo &&) = delete; // Move construct + CPUInfo &operator=(CPUInfo const &) = delete; // Copy assign + CPUInfo &operator=(CPUInfo &&) = delete; // Move assign /** Checks if the cpu model supports fp16. * - * @return true of the cpu supports fp16, false otherwise + * @return true if the cpu supports fp16, false otherwise */ bool has_fp16() const; /** Checks if the cpu model supports bf16. * - * @return true of the cpu supports bf16, false otherwise + * @return true if the cpu supports bf16, false otherwise */ bool has_bf16() const; + /** Checks if the cpu model supports bf16. + * + * @return true if the cpu supports bf16, false otherwise + */ + bool has_svebf16() const; /** Checks if the cpu model supports dot product. * - * @return true of the cpu supports dot product, false otherwise + * @return true if the cpu supports dot product, false otherwise */ bool has_dotprod() const; + /** Checks if the cpu model supports floating-point matrix multiplication. + * + * @return true if the cpu supports floating-point matrix multiplication, false otherwise + */ + bool has_svef32mm() const; + /** Checks if the cpu model supports integer matrix multiplication. + * + * @return true if the cpu supports integer matrix multiplication, false otherwise + */ + bool has_i8mm() const; + /** Checks if the cpu model supports integer matrix multiplication. + * + * @return true if the cpu supports integer matrix multiplication, false otherwise + */ + bool has_svei8mm() const; /** Checks if the cpu model supports sve. * - * @return true of the cpu supports sve, false otherwise + * @return true if the cpu supports sve, false otherwise */ bool has_sve() const; + /** Checks if the cpu model supports sve2. + * + * @return true if the cpu supports sve2, false otherwise + */ + bool has_sve2() const; + /** Checks if the cpu model supports sme. + * + * @return true if the cpu supports sme, false otherwise + */ + bool has_sme() const; + /** Checks if the cpu model supports sme2. + * + * @return true if the cpu supports sme2, false otherwise + */ + bool has_sme2() const; /** Gets the cpu model for a given cpuid. * * @param[in] cpuid the id of the cpu core to be retrieved, @@ -101,6 +150,11 @@ public: * @return Current thread's @ref CPUModel */ CPUModel get_cpu_model() const; + /** Gets the current cpu's ISA information + * + * @return Current cpu's ISA information + */ + cpuinfo::CpuIsaInfo get_isa() const; /** Gets the L1 cache size * * @return the size of the L1 cache @@ -111,17 +165,6 @@ public: * @return the size of the L1 cache */ unsigned int get_L2_cache_size() const; - /** Set fp16 support - * - * @param[in] fp16 whether the cpu supports fp16. - */ - void set_fp16(const bool fp16); - /** Set dot product support - * - * @param[in] dotprod whether the cpu supports dot product. - */ - void set_dotprod(const bool dotprod); - /** Return the maximum number of CPUs present * * @return Number of CPUs @@ -136,9 +179,9 @@ private: /** Information about executing thread and CPU. */ struct ThreadInfo { - int thread_id{ 0 }; - int num_threads{ 1 }; - const CPUInfo *cpu_info{ nullptr }; + int thread_id{0}; + int num_threads{1}; + const CPUInfo *cpu_info{nullptr}; }; } // namespace arm_compute #endif /* ARM_COMPUTE_CPP_TYPES_H */ |