// // Copyright © 2022 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once #include "NeonBaseWorkload.hpp" #include #include #include namespace armnn { arm_compute::Status NeonBatchMatMulValidate(const TensorInfo& inputX, const TensorInfo& inputY, const TensorInfo& output, const BatchMatMulDescriptor& descriptor); class NeonBatchMatMulWorkload : public NeonBaseWorkload { public: NeonBatchMatMulWorkload(const BatchMatMulQueueDescriptor& descriptor, const WorkloadInfo& info); virtual void Execute() const override; private: // ACL layers required to fully form a Batch Mat Mul layer. std::unique_ptr m_GEMMLayer; std::unique_ptr m_PermuteLayerX; std::unique_ptr m_PermuteLayerY; // Additional ACL arm_compute::Tensors. // Required to perform permutations. arm_compute::Tensor m_PermutedTensorX; arm_compute::Tensor m_PermutedTensorY; }; } //namespace armnn