blob: a4851c778f30c6ed4b06a231573300c3c04c2b1d [file] [log] [blame]
Matteo Martincigh49124022019-01-11 13:25:59 +00001//
Finn Williamsf24effa2020-07-03 10:12:03 +01002// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
Matteo Martincigh49124022019-01-11 13:25:59 +00003// SPDX-License-Identifier: MIT
4//
5
6#pragma once
7
8#include "LayerWithParameters.hpp"
9#include <backendsCommon/WorkloadFactory.hpp>
10
11#include <armnn/Descriptors.hpp>
12
13#include <memory>
Matteo Martincigh7997a352019-04-17 15:37:30 +010014#include <functional>
Matteo Martincigh49124022019-01-11 13:25:59 +000015
16namespace armnn
17{
18
Matteo Martincigh7997a352019-04-17 15:37:30 +010019using PreCompiledObjectDeleter = std::function<void(const void*)>;
20using PreCompiledObjectPtr = std::unique_ptr<void, PreCompiledObjectDeleter>;
21
Matteo Martincigh49124022019-01-11 13:25:59 +000022class PreCompiledLayer : public LayerWithParameters<PreCompiledDescriptor>
23{
24public:
25 PreCompiledLayer(const PreCompiledDescriptor& param, const char* name);
26 ~PreCompiledLayer();
27
Derek Lamberti94a88d22019-12-10 21:12:59 +000028 virtual std::unique_ptr<IWorkload> CreateWorkload(const IWorkloadFactory& factory) const override;
Matteo Martincigh49124022019-01-11 13:25:59 +000029
30 PreCompiledLayer* Clone(Graph &graph) const override;
31
Finn Williamsf24effa2020-07-03 10:12:03 +010032 void ValidateTensorShapesFromInputs() override;
Matteo Martincigh49124022019-01-11 13:25:59 +000033
Matteo Martincigh7997a352019-04-17 15:37:30 +010034 void SetPreCompiledObject(PreCompiledObjectPtr preCompiledObject);
Matteo Martincigh49124022019-01-11 13:25:59 +000035
jimfly01e9e7bfd2019-01-24 22:29:33 +000036 void Accept(ILayerVisitor& visitor) const override;
37
Matteo Martincigh49124022019-01-11 13:25:59 +000038private:
39 PreCompiledLayer(const PreCompiledLayer& other) = delete;
40 PreCompiledLayer& operator=(const PreCompiledLayer& other) = delete;
41
Matteo Martincigh7997a352019-04-17 15:37:30 +010042 PreCompiledObjectPtr m_PreCompiledObject;
Matteo Martincigh49124022019-01-11 13:25:59 +000043};
44
45} // namespace armnn