Deprecate nGraph v0 ops and builders (#1856)
[platform/upstream/dldt.git] / ngraph / core / include / ngraph / op / multiply.hpp
1 //*****************************************************************************
2 // Copyright 2017-2020 Intel Corporation
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 //     http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 //*****************************************************************************
16
17 #pragma once
18
19 #include "ngraph/op/util/binary_elementwise_arithmetic.hpp"
20
21 namespace ngraph
22 {
23     namespace op
24     {
25         namespace v0
26         {
27             /// \brief Elementwise multiplication operation.
28             class NGRAPH_DEPRECATED(
29                 "This operation is deprecated and will be removed soon. "
30                 "Use v1::Multiply instead of it.") NGRAPH_API Multiply
31                 : public util::BinaryElementwiseArithmetic
32             {
33                 NGRAPH_SUPPRESS_DEPRECATED_START
34             public:
35                 static constexpr NodeTypeInfo type_info{"Multiply", 0};
36                 const NodeTypeInfo& get_type_info() const override { return type_info; }
37                 /// \brief Constructs a multiplication operation.
38                 Multiply()
39                     : util::BinaryElementwiseArithmetic(AutoBroadcastSpec::NONE)
40                 {
41                 }
42                 /// \brief Constructs a multiplication operation.
43                 ///
44                 /// \param arg0 Node that produces the first input tensor.
45                 /// \param arg1 Node that produces the second input tensor.
46                 /// \param auto_broadcast Auto broadcast specification
47                 Multiply(const Output<Node>& arg0,
48                          const Output<Node>& arg1,
49                          const AutoBroadcastSpec& auto_broadcast = AutoBroadcastSpec());
50
51                 virtual std::shared_ptr<Node>
52                     clone_with_new_inputs(const OutputVector& new_args) const override;
53
54                 bool evaluate(const HostTensorVector& outputs,
55                               const HostTensorVector& inputs) const override;
56                 NGRAPH_SUPPRESS_DEPRECATED_END
57             };
58         } // namespace v0
59
60         namespace v1
61         {
62             /// \brief Elementwise multiplication operation.
63             class NGRAPH_API Multiply : public util::BinaryElementwiseArithmetic
64             {
65             public:
66                 NGRAPH_RTTI_DECLARATION;
67
68                 /// \brief Constructs a multiplication operation.
69                 Multiply()
70                     : util::BinaryElementwiseArithmetic(AutoBroadcastSpec::NUMPY)
71                 {
72                 }
73
74                 /// \brief Constructs a multiplication operation.
75                 ///
76                 /// \param arg0 Node that produces the first input tensor.
77                 /// \param arg1 Node that produces the second input tensor.
78                 /// \param auto_broadcast Auto broadcast specification
79                 Multiply(const Output<Node>& arg0,
80                          const Output<Node>& arg1,
81                          const AutoBroadcastSpec& auto_broadcast =
82                              AutoBroadcastSpec(AutoBroadcastType::NUMPY));
83
84                 virtual std::shared_ptr<Node>
85                     clone_with_new_inputs(const OutputVector& new_args) const override;
86
87                 bool evaluate(const HostTensorVector& outputs,
88                               const HostTensorVector& inputs) const override;
89             };
90         } // namespace v1
91
92         NGRAPH_SUPPRESS_DEPRECATED_START
93         using v0::Multiply;
94         NGRAPH_SUPPRESS_DEPRECATED_END
95     } // namespace op
96
97     NGRAPH_DEPRECATED("This operator was deprecated and will be removed with v0 operation.")
98     NGRAPH_API
99     std::shared_ptr<Node> operator*(const Output<Node>& arg0, const Output<Node>& arg1);
100 } // namespace ngraph