diff options
author | Anthony Barbier <anthony.barbier@arm.com> | 2018-07-06 17:05:59 +0100 |
---|---|---|
committer | Anthony Barbier <anthony.barbier@arm.com> | 2018-11-02 16:54:54 +0000 |
commit | 71d9b57aac146ae3ad5648c1308a872cea90070d (patch) | |
tree | b4f36f7c6a45782ef9e40fe4c6a9e9a68d716948 /arm_compute/core/NEON/kernels/assembly | |
parent | d1794ebfa10d05af7d2458c5d506152fd38068d3 (diff) | |
download | ComputeLibrary-71d9b57aac146ae3ad5648c1308a872cea90070d.tar.gz |
COMPMID-1381: Cleaned up the AssemblyHelper interface
Introduced a new IFunction for when we'll fork the arm_gemm functions
Increased encapsulation and abstraction of which method is used
Change-Id: I5fd8b14b5c77e7f8ecb09029b5e2eccd10dbdcf4
Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/139108
Tested-by: Jenkins <bsgcomp@arm.com>
Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com>
Reviewed-by: Pablo Tello <pablo.tello@arm.com>
Diffstat (limited to 'arm_compute/core/NEON/kernels/assembly')
-rw-r--r-- | arm_compute/core/NEON/kernels/assembly/NEGEMMAssemblyWrapperKernel.h (renamed from arm_compute/core/NEON/kernels/assembly/NEGEMMAssemblyWrapper.h) | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/arm_compute/core/NEON/kernels/assembly/NEGEMMAssemblyWrapper.h b/arm_compute/core/NEON/kernels/assembly/NEGEMMAssemblyWrapperKernel.h index 646cc7861a..9eaf6061d8 100644 --- a/arm_compute/core/NEON/kernels/assembly/NEGEMMAssemblyWrapper.h +++ b/arm_compute/core/NEON/kernels/assembly/NEGEMMAssemblyWrapperKernel.h @@ -21,13 +21,15 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef __ARM_COMPUTE_ASSEMBLY_GEMM_KERNEL_WRAPPER_H__ -#define __ARM_COMPUTE_ASSEMBLY_GEMM_KERNEL_WRAPPER_H__ +#ifndef __ARM_COMPUTE_ASSEMBLY_GEMM_KERNEL_WRAPPER_KERNEL_H__ +#define __ARM_COMPUTE_ASSEMBLY_GEMM_KERNEL_WRAPPER_KERNEL_H__ #include "arm_compute/core/NEON/INEKernel.h" #include "arm_compute/core/Validate.h" #include "arm_compute/core/Utils.h" +#include "gemm_common.hpp" + namespace arm_compute { class ITensor; @@ -36,7 +38,7 @@ class ITensor; * * Some kernels were written in assembly and highly optimised for specific CPUs like A53 or A55. * This class works as a wrapper for these assembly kernels. The arm compute library creates an instance - * of NEGEMMAssemblyWrapper and other auxiliary data structures to execute a single assembly kernel + * of NEGEMMAssemblyWrapperKernel and other auxiliary data structures to execute a single assembly kernel * in the context of an NEFunctions. * * The type T is the type of the actual kernel implemented in assembly which is of type @@ -44,21 +46,21 @@ class ITensor; * * */ -template<typename T> -class NEGEMMAssemblyWrapper final : public INEKernel +template <typename TypeInput, typename TypeOutput> +class NEGEMMAssemblyWrapperKernel final : public INEKernel { public: /** Constructor */ - NEGEMMAssemblyWrapper() : _kernel(nullptr) {} + NEGEMMAssemblyWrapperKernel() : _kernel(nullptr) {} - NEGEMMAssemblyWrapper(NEGEMMAssemblyWrapper &) = delete; - NEGEMMAssemblyWrapper(NEGEMMAssemblyWrapper &&) = default; - NEGEMMAssemblyWrapper & operator=(NEGEMMAssemblyWrapper &) = delete; + NEGEMMAssemblyWrapperKernel(NEGEMMAssemblyWrapperKernel &) = delete; + NEGEMMAssemblyWrapperKernel(NEGEMMAssemblyWrapperKernel &&) = default; + NEGEMMAssemblyWrapperKernel & operator=(NEGEMMAssemblyWrapperKernel &) = delete; const char *name() const override { - return "NEGEMMAssemblyWrapper"; + return "NEGEMMAssemblyWrapperKernel"; } // Inherited methods overridden: void run(const Window &window, const ThreadInfo &info) override @@ -74,7 +76,7 @@ public: * @param[in] kernel Pointer to an assembly kernel implementation. * @param[in] num_threads Number of concurrent threads which will execute the kernel. */ - void configure(T *kernel) + void configure(arm_gemm::GemmCommon<TypeInput, TypeOutput> *kernel) { ARM_COMPUTE_ERROR_ON_NULLPTR((reinterpret_cast<void*>(kernel))); _kernel = kernel; @@ -84,8 +86,8 @@ public: INEKernel::configure(win); } private: - T* _kernel; + arm_gemm::GemmCommon<TypeInput, TypeOutput>* _kernel; }; } // namespace arm_compute -#endif /*__ARM_COMPUTE_NEGEMMAARCH64KERNEL_H__*/ +#endif /* __ARM_COMPUTE_ASSEMBLY_GEMM_KERNEL_WRAPPER_KERNEL_H__ */ |