ONE - On-device Neural Engine
Loading...
Searching...
No Matches
If.cpp
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2021 Samsung Electronics Co., Ltd. All Rights Reserved
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
#include "
Builders.h
"
18
19
#include "
kernels/If.h
"
20
21
namespace
luci_interpreter
22
{
23
24
std::unique_ptr<Kernel>
build_kernel_CircleIf
(
const
luci::CircleNode
*
circle_node
,
25
KernelBuilderHelper
&helper)
26
{
27
const
auto
*node =
loco::must_cast<const luci::CircleIf *>
(
circle_node
);
28
auto
output_nodes =
collectOutputNodes<luci::CircleIfOut>
(node);
29
assert(node->arity() == 1 + node->input_count());
30
assert(output_nodes.size() ==
static_cast<
size_t
>
(node->output_count()));
31
32
const
Tensor
*cond = helper.
getInputTensor
(node->cond());
33
std::vector<const Tensor *> inputs(node->input_count());
34
for
(
uint32_t
i
= 0;
i
< node->input_count(); ++
i
)
35
{
36
inputs[
i
] = helper.
getInputTensor
(node->input(
i
));
37
}
38
std::vector<Tensor *> outputs = helper.
getOutputTensors
(output_nodes);
39
40
RuntimeGraph
*then_graph = helper.
getRuntimeGraph
(node->then_graph());
41
RuntimeGraph
*else_graph = helper.
getRuntimeGraph
(node->else_graph());
42
43
return
std::make_unique<kernels::If>(cond, std::move(inputs), std::move(outputs), then_graph,
44
else_graph);
45
}
46
47
}
// namespace luci_interpreter
luci_interpreter::KernelBuilderHelper
Definition
KernelBuilderHelper.h:33
luci_interpreter::KernelBuilderHelper::getRuntimeGraph
RuntimeGraph * getRuntimeGraph(const loco::Graph *graph) const
Definition
KernelBuilderHelper.cpp:57
luci_interpreter::KernelBuilderHelper::getOutputTensors
std::vector< Tensor * > getOutputTensors(const std::vector< const loco::Node * > &nodes) const
Definition
KernelBuilderHelper.cpp:48
luci_interpreter::KernelBuilderHelper::getInputTensor
const Tensor * getInputTensor(const loco::Node *node) const
Definition
KernelBuilderHelper.cpp:24
luci_interpreter::RuntimeGraph
Definition
RuntimeGraph.h:33
luci_interpreter::Tensor
Definition
Tensor.h:101
If.h
loco::must_cast
T must_cast(FeatureEncoder *node)
A helper dynamic_cast that throws when failed.
Definition
FeatureCodec.h:80
luci_interpreter
Definition
BuddyMemoryManager.h:22
luci_interpreter::build_kernel_CircleIf
std::unique_ptr< Kernel > build_kernel_CircleIf(const luci::CircleNode *circle_node, KernelBuilderHelper &helper)
Definition
If.cpp:24
luci::must_cast
T must_cast(loco::Node *node)
Definition
CircleNodeDecl.h:95
Builders.h
luci::CircleNode
Definition
CircleNodeDecl.h:42
compiler
luci-interpreter
src
loader
nodes
If.cpp
Generated by
1.9.8