IVGCVSW-3722 Add front end support for ArgMinMax
[platform/upstream/armnn.git] / src / armnn / layers / ArgMinMaxLayer.hpp
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5
6 #pragma once
7
8 #include "LayerWithParameters.hpp"
9
10 namespace armnn
11 {
12
13 /// This layer represents a ArgMinMax operation.
14 class ArgMinMaxLayer : public LayerWithParameters<ArgMinMaxDescriptor>
15 {
16 public:
17     /// Makes a workload for the ArgMinMax type.
18     /// @param [in] graph The graph where this layer can be found.
19     /// @param [in] factory The workload factory which will create the workload.
20     /// @return A pointer to the created workload, or nullptr if not created.
21     virtual std::unique_ptr<IWorkload> CreateWorkload(const Graph& graph,
22                                                       const IWorkloadFactory& factory) const override;
23
24     /// Creates a dynamically-allocated copy of this layer.
25     /// @param [in] graph The graph into which this layer is being cloned.
26     ArgMinMaxLayer* Clone(Graph& graph) const override;
27
28     /// Check if the input tensor shape(s)
29     /// will lead to a valid configuration of @ref ArgMinMaxLayer.
30     void ValidateTensorShapesFromInputs() override;
31
32     void Accept(ILayerVisitor& visitor) const override;
33
34 protected:
35     /// Constructor to create a ArgMinMaxLayer.
36     /// @param [in] param ArgMinMaxDescriptor to configure the ArgMinMax operation.
37     /// @param [in] name Optional name for the layer.
38     ArgMinMaxLayer(const ArgMinMaxDescriptor& param, const char* name);
39
40     /// Default destructor
41     ~ArgMinMaxLayer() = default;
42 };
43
44 }