summaryrefslogtreecommitdiff
path: root/compiler/exo/src/Pass/FuseSquaredDifferencePass.cpp
diff options
context:
space:
mode:
authorChunseok Lee <chunseok.lee@samsung.com>2020-10-29 13:12:50 +0900
committerChunseok Lee <chunseok.lee@samsung.com>2020-10-29 13:12:50 +0900
commitd6b371e095d737922187a518b8faba1ef6f3a2b1 (patch)
tree9d90c09c887b5111389dbedf924f59206411cd5a /compiler/exo/src/Pass/FuseSquaredDifferencePass.cpp
parentc55f8a6db48cda9d3a78048338b7f18c4cca62b8 (diff)
downloadnnfw-d6b371e095d737922187a518b8faba1ef6f3a2b1.tar.gz
nnfw-d6b371e095d737922187a518b8faba1ef6f3a2b1.tar.bz2
nnfw-d6b371e095d737922187a518b8faba1ef6f3a2b1.zip
Imported Upstream version 0.4upstream/0.4
Diffstat (limited to 'compiler/exo/src/Pass/FuseSquaredDifferencePass.cpp')
-rw-r--r--compiler/exo/src/Pass/FuseSquaredDifferencePass.cpp86
1 files changed, 0 insertions, 86 deletions
diff --git a/compiler/exo/src/Pass/FuseSquaredDifferencePass.cpp b/compiler/exo/src/Pass/FuseSquaredDifferencePass.cpp
deleted file mode 100644
index 3f985a505..000000000
--- a/compiler/exo/src/Pass/FuseSquaredDifferencePass.cpp
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "FuseSquaredDifferencePass.h"
-
-#include "Check.h"
-
-#include "Dialect/IR/TFLNodes.h"
-
-namespace
-{
-
-/**
- * @return Casted TFLMul for fusable candidate, nullptr otherwise
- *
- * This helper checkes fusability with following conditions:
- * - TFLMul has no activation
- * - TFLMul's first and second arguments are equal and TFLSub
- */
-locoex::TFLMul *as_candidate(loco::Node *node)
-{
- auto mul = dynamic_cast<locoex::TFLMul *>(node);
- if (not mul)
- return nullptr;
-
- // Cannot fuse mul with activation function
- if (mul->fusedActivationFunction() != locoex::FusedActFunc::NONE)
- return nullptr;
-
- if (mul->x() != mul->y())
- return nullptr;
-
- if (not dynamic_cast<locoex::TFLSub *>(mul->x()))
- return nullptr;
-
- return mul;
-}
-
-void fuse_squared_difference(locoex::TFLMul *mul)
-{
- auto sub = dynamic_cast<locoex::TFLSub *>(mul->x());
- EXO_ASSERT(sub, "sub should be valid at this point");
-
- // TFLSquaredDifference to replace
- auto sq_diff = mul->graph()->nodes()->create<locoex::TFLSquaredDifference>();
- sq_diff->x(sub->x());
- sq_diff->y(sub->y());
-
- // replace
- loco::replace(mul).with(sq_diff);
-}
-
-} // namespace
-
-namespace exo
-{
-
-bool FuseSquaredDifferencePass::run(loco::Graph *g)
-{
- bool changed = false;
- for (auto node : loco::active_nodes(loco::output_nodes(g)))
- {
- if (auto mul = as_candidate(node))
- {
- fuse_squared_difference(mul);
- changed = true;
- }
- }
-
- return changed;
-}
-
-} // namespace exo