forked from pytorch/pytorch
-
Notifications
You must be signed in to change notification settings - Fork 0
/
parse_operators.cpp
32 lines (29 loc) · 989 Bytes
/
parse_operators.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <ATen/core/ivalue.h>
#include <torch/csrc/jit/mobile/parse_operators.h>
namespace torch {
namespace jit {
namespace mobile {
void parseOperators(
c10::ivalue::TupleElements&& ops_list,
const uint64_t& module_load_options,
mobile::Function* function) {
for (auto& op : std::move(ops_list)) {
auto op_item = std::move(*std::move(op).toTuple()).elements();
TORCH_CHECK(
op_item.size() >= 2,
"There should be either two parts (name and overload name), ",
"or three parts (name, overload name and number of specified args) ",
"for an operator");
c10::optional<int> num_args;
if (op_item.size() > 2) {
num_args = op_item[2].toInt();
}
function->append_operator(
op_item[0].toStringRef(), op_item[1].toStringRef(), num_args);
}
function->initialize_operators(
(module_load_options & MobileModuleLoadOptions::OPERATOR_CHECK));
}
} // namespace mobile
} // namespace jit
} // namespace torch