#pragma once
#include "src/arm_common/matrix_mul/opr_impl.h"
namespace megdnn {
namespace armv7 {
class MatrixMulImpl : public arm_common::MatrixMulImpl {
public:
using arm_common::MatrixMulImpl::MatrixMulImpl;
class AlgoBase : public arm_common::MatrixMulImpl::AlgoBase {
public:
AlgoBase() : arm_common::MatrixMulImpl::AlgoBase() {
m_handle_type = Handle::HandleType::ARMV7;
}
};
SmallVector<fallback::MatrixMulImpl::AlgoBase*> get_all_packed_algo() override;
MEGDNN_FB_DECL_GET_ALGO_FROM_DESC(MatrixMulImpl);
private:
class AlgoF32; class AlgoF32MK4Pack4x12; class AlgoF32MK4_4x8; class AlgoF32Gemv; class AlgoInt8x8x32K4x8x8; class AlgoInt8x8x32K4x2x16; class AlgoInt8x8x32MK4_4x2x16; class AlgoQuint8K4x8x8; class AlgoInt8x8x16K4x2x16; class AlgoInt8x8x16K4x8x8; class AlgoInt8x8x16K8x8x4; class AlgoInt8x8x16MK4_8x8x4; class AlgoInt16x16x32K12x4x1; class AlgoInt16x16x32MK8_4x8; #if __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
class AlgoF16K4x16x1; class AlgoF16MK8_4x8; #endif
#if MGB_ENABLE_DOT
class AlgoInt8x8x32K6x8x4; class AlgoQuint8DotK4x8x4; class AlgoInt8x8x32MK4_8x4x4DotProd; #endif
class AlgoPack;
public:
static const AlgoPack& algo_pack();
};
} }