ONE - On-device Neural Engine
Loading...
Searching...
No Matches
CircleWhere.cpp
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2020 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 "
luci/Import/Nodes/CircleWhere.h
"
18
19
#include <
luci/IR/Nodes/CircleWhere.h
>
20
21
#include <
loco.h
>
22
23
namespace
luci
24
{
25
26
bool
CircleWhereGraphBuilder::validate
(
const
ValidateArgs
&args)
const
27
{
28
if
(!
GraphBuilder::validate
(args, 1))
29
return
false
;
30
31
const
auto
&inputs = args.op.inputs;
32
const
auto
&outputs = args.op.outputs;
33
const
auto
tensors = args.reader.tensors();
34
const
auto
tensor_condition
= tensors.at(inputs.at(0));
35
const
auto
tensor_out
= tensors.at(outputs[0]);
36
assert(
tensor_condition
!=
nullptr
);
37
assert(
tensor_out
!=
nullptr
);
38
39
if
(
tensor_condition
->type() != circle::TensorType_BOOL)
40
return
false
;
41
42
if
(
tensor_out
->type() != circle::TensorType_INT64)
43
return
false
;
44
45
return
true
;
46
}
47
48
CircleNode
*
CircleWhereGraphBuilder::build_node
(
const
circle::OperatorT &,
49
const
std::vector<CircleNode *> &inputs,
50
loco::Graph
*graph)
const
51
{
52
auto
*node = graph->nodes()->create<
CircleWhere
>();
53
node->
condition
(inputs.at(0));
54
55
return
node;
56
}
57
58
}
// namespace luci
loco::Graph
A neural network graph.
Definition
Graph.h:161
luci::CircleWhereGraphBuilder::validate
bool validate(const ValidateArgs &args) const final
Definition
CircleWhere.cpp:26
luci::CircleWhereGraphBuilder::build_node
CircleNode * build_node(const circle::OperatorT &op, const std::vector< CircleNode * > &inputs, loco::Graph *graph) const override
Definition
CircleWhere.cpp:48
luci::CircleWhere
WHERE in Circle.
Definition
CircleWhere.h:34
luci::CircleWhere::condition
loco::Node * condition() const
Definition
CircleWhere.h:36
luci::GraphBuilder::validate
bool validate(const ValidateArgs &args, size_t input_cnt) const
Definition
GraphBuilder.h:37
CircleWhere.h
CircleWhere.h
loco.h
luci
Definition
CircleModel.h:27
luci::must_cast
T must_cast(loco::Node *node)
Definition
CircleNodeDecl.h:95
luci::CircleNode
Definition
CircleNodeDecl.h:42
luci::GraphBuilderBase::ValidateArgs
Definition
GraphBuilderBase.h:35
compiler
luci
import
src
Nodes
CircleWhere.cpp
Generated by
1.9.8