// // NNAPICommonExecution.hpp // MNN // // Created by MNN on 2022/09/05. // Copyright © 2018, Alibaba Group Holding Limited // #ifndef MNN_NNAPICOMMONEXECUTION_HPP #define MNN_NNAPICOMMONEXECUTION_HPP #include "core/Execution.hpp" #include "NNAPIBackend.hpp" #include namespace MNN { class NNAPICommonExecution : public Execution { public: NNAPICommonExecution(Backend *backend, const Op *op); virtual ~NNAPICommonExecution() = default; virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; protected: bool mNCHW; NNAPIBackend* mNNAPIBackend; const Op* mOp; std::vector getTensorIdxs(const std::vector& tensors); template inline uint32_t buildScalar(T scalar) { return mNNAPIBackend->buildScalar(scalar); } uint32_t buildConstant(const void* data, size_t size, OperandCode dtype, std::vector dims = {}, const float* scales = nullptr, int zero = 0); uint32_t buildVector(const std::vector& vec); uint32_t buildVector(const std::vector& vec); uint32_t buildTensor(OperandCode dtype, std::vector dims); ErrorCode buildOperation(int op, const std::vector &inputs, const std::vector &outputs); int formatAxis(int axis, const Tensor* t); }; } // namespace MNN #endif // MNN_NNAPICOMMONEXECUTION_HPP