1 | /* |
2 | * Licensed to the Apache Software Foundation (ASF) under one |
3 | * or more contributor license agreements. See the NOTICE file |
4 | * distributed with this work for additional information |
5 | * regarding copyright ownership. The ASF licenses this file |
6 | * to you under the Apache License, Version 2.0 (the |
7 | * "License"); you may not use this file except in compliance |
8 | * with the License. You may obtain a copy of the License at |
9 | * |
10 | * http://www.apache.org/licenses/LICENSE-2.0 |
11 | * |
12 | * Unless required by applicable law or agreed to in writing, |
13 | * software distributed under the License is distributed on an |
14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
15 | * KIND, either express or implied. See the License for the |
16 | * specific language governing permissions and limitations |
17 | * under the License. |
18 | */ |
19 | |
20 | /*! |
21 | * \brief Registration of elemwise operators |
22 | * \file elemwise.cc |
23 | */ |
24 | #include <tvm/runtime/packed_func.h> |
25 | #include <tvm/runtime/registry.h> |
26 | #include <tvm/topi/elemwise.h> |
27 | |
28 | namespace tvm { |
29 | namespace topi { |
30 | |
31 | using namespace tvm; |
32 | using namespace tvm::runtime; |
33 | |
34 | TVM_REGISTER_GLOBAL("topi.acos" ).set_body([](TVMArgs args, TVMRetValue* rv) { |
35 | *rv = acos(args[0]); |
36 | }); |
37 | |
38 | TVM_REGISTER_GLOBAL("topi.acosh" ).set_body([](TVMArgs args, TVMRetValue* rv) { |
39 | *rv = acosh(args[0]); |
40 | }); |
41 | |
42 | TVM_REGISTER_GLOBAL("topi.asin" ).set_body([](TVMArgs args, TVMRetValue* rv) { |
43 | *rv = asin(args[0]); |
44 | }); |
45 | |
46 | TVM_REGISTER_GLOBAL("topi.asinh" ).set_body([](TVMArgs args, TVMRetValue* rv) { |
47 | *rv = asinh(args[0]); |
48 | }); |
49 | |
50 | TVM_REGISTER_GLOBAL("topi.atanh" ).set_body([](TVMArgs args, TVMRetValue* rv) { |
51 | *rv = atanh(args[0]); |
52 | }); |
53 | |
54 | TVM_REGISTER_GLOBAL("topi.exp" ).set_body([](TVMArgs args, TVMRetValue* rv) { *rv = exp(args[0]); }); |
55 | |
56 | TVM_REGISTER_GLOBAL("topi.fast_exp" ).set_body([](TVMArgs args, TVMRetValue* rv) { |
57 | *rv = fast_exp(args[0]); |
58 | }); |
59 | |
60 | TVM_REGISTER_GLOBAL("topi.erf" ).set_body([](TVMArgs args, TVMRetValue* rv) { *rv = erf(args[0]); }); |
61 | |
62 | TVM_REGISTER_GLOBAL("topi.fast_erf" ).set_body([](TVMArgs args, TVMRetValue* rv) { |
63 | *rv = fast_erf(args[0]); |
64 | }); |
65 | |
66 | TVM_REGISTER_GLOBAL("topi.tan" ).set_body([](TVMArgs args, TVMRetValue* rv) { *rv = tan(args[0]); }); |
67 | |
68 | TVM_REGISTER_GLOBAL("topi.cos" ).set_body([](TVMArgs args, TVMRetValue* rv) { *rv = cos(args[0]); }); |
69 | |
70 | TVM_REGISTER_GLOBAL("topi.cosh" ).set_body([](TVMArgs args, TVMRetValue* rv) { |
71 | *rv = cosh(args[0]); |
72 | }); |
73 | |
74 | TVM_REGISTER_GLOBAL("topi.sin" ).set_body([](TVMArgs args, TVMRetValue* rv) { *rv = sin(args[0]); }); |
75 | |
76 | TVM_REGISTER_GLOBAL("topi.sinh" ).set_body([](TVMArgs args, TVMRetValue* rv) { |
77 | *rv = sinh(args[0]); |
78 | }); |
79 | |
80 | TVM_REGISTER_GLOBAL("topi.tanh" ).set_body([](TVMArgs args, TVMRetValue* rv) { |
81 | *rv = tanh(args[0]); |
82 | }); |
83 | |
84 | TVM_REGISTER_GLOBAL("topi.fast_tanh" ).set_body([](TVMArgs args, TVMRetValue* rv) { |
85 | *rv = fast_tanh(args[0]); |
86 | }); |
87 | |
88 | TVM_REGISTER_GLOBAL("topi.atan" ).set_body([](TVMArgs args, TVMRetValue* rv) { |
89 | *rv = atan(args[0]); |
90 | }); |
91 | |
92 | TVM_REGISTER_GLOBAL("topi.sigmoid" ).set_body([](TVMArgs args, TVMRetValue* rv) { |
93 | *rv = sigmoid(args[0]); |
94 | }); |
95 | |
96 | TVM_REGISTER_GLOBAL("topi.sqrt" ).set_body([](TVMArgs args, TVMRetValue* rv) { |
97 | *rv = sqrt(args[0]); |
98 | }); |
99 | |
100 | TVM_REGISTER_GLOBAL("topi.rsqrt" ).set_body([](TVMArgs args, TVMRetValue* rv) { |
101 | *rv = rsqrt(args[0]); |
102 | }); |
103 | |
104 | TVM_REGISTER_GLOBAL("topi.log" ).set_body([](TVMArgs args, TVMRetValue* rv) { *rv = log(args[0]); }); |
105 | |
106 | TVM_REGISTER_GLOBAL("topi.log2" ).set_body([](TVMArgs args, TVMRetValue* rv) { |
107 | *rv = log2(args[0]); |
108 | }); |
109 | |
110 | TVM_REGISTER_GLOBAL("topi.log10" ).set_body([](TVMArgs args, TVMRetValue* rv) { |
111 | *rv = log10(args[0]); |
112 | }); |
113 | |
114 | TVM_REGISTER_GLOBAL("topi.identity" ).set_body([](TVMArgs args, TVMRetValue* rv) { |
115 | *rv = identity(args[0]); |
116 | }); |
117 | |
118 | TVM_REGISTER_GLOBAL("topi.negative" ).set_body([](TVMArgs args, TVMRetValue* rv) { |
119 | *rv = negative(args[0]); |
120 | }); |
121 | |
122 | TVM_REGISTER_GLOBAL("topi.clip" ).set_body([](TVMArgs args, TVMRetValue* rv) { |
123 | *rv = clip(args[0], args[1], args[2]); |
124 | }); |
125 | |
126 | TVM_REGISTER_GLOBAL("topi.cast" ).set_body([](TVMArgs args, TVMRetValue* rv) { |
127 | *rv = cast(args[0], args[1]); |
128 | }); |
129 | |
130 | TVM_REGISTER_GLOBAL("topi.reinterpret" ).set_body([](TVMArgs args, TVMRetValue* rv) { |
131 | *rv = reinterpret(args[0], args[1]); |
132 | }); |
133 | |
134 | TVM_REGISTER_GLOBAL("topi.elemwise_sum" ).set_body([](TVMArgs args, TVMRetValue* rv) { |
135 | *rv = elemwise_sum(args[0]); |
136 | }); |
137 | |
138 | TVM_REGISTER_GLOBAL("topi.sign" ).set_body([](TVMArgs args, TVMRetValue* rv) { |
139 | *rv = sign(args[0]); |
140 | }); |
141 | |
142 | TVM_REGISTER_GLOBAL("topi.full" ).set_body([](TVMArgs args, TVMRetValue* rv) { |
143 | *rv = full(args[0], args[1], args[2]); |
144 | }); |
145 | |
146 | TVM_REGISTER_GLOBAL("topi.full_like" ).set_body([](TVMArgs args, TVMRetValue* rv) { |
147 | *rv = full_like(args[0], args[1]); |
148 | }); |
149 | |
150 | TVM_REGISTER_GLOBAL("topi.logical_not" ).set_body([](TVMArgs args, TVMRetValue* rv) { |
151 | *rv = logical_not(args[0]); |
152 | }); |
153 | |
154 | TVM_REGISTER_GLOBAL("topi.bitwise_not" ).set_body([](TVMArgs args, TVMRetValue* rv) { |
155 | *rv = bitwise_not(args[0]); |
156 | }); |
157 | |
158 | } // namespace topi |
159 | } // namespace tvm |
160 | |