aboutsummaryrefslogtreecommitdiff
path: root/src/backends/tosaCommon/TosaLayerSupportRules.hpp
diff options
context:
space:
mode:
authorMatthew Sloyan <matthew.sloyan@arm.com>2022-11-25 16:10:00 +0000
committerMatthew Sloyan <matthew.sloyan@arm.com>2022-12-08 12:57:47 +0000
commitc5fe6e71cd39096af7c2523ec2afe96008c51b0c (patch)
tree1486349bc36e17c1577465aab81d9eb3ca64e861 /src/backends/tosaCommon/TosaLayerSupportRules.hpp
parent3106c7f1714aea556d06d9f1e8c7faaeaeca996d (diff)
downloadarmnn-c5fe6e71cd39096af7c2523ec2afe96008c51b0c.tar.gz
IVGCVSW-7168 Add Conv2d and Constant support to TOSA Reference Backend
* Added TOSA Conv2d and Constant mappings. * Added unique naming to mappings based on previous and following layers, so they are connected correctly. * Updated existing mappings with new naming convention. * Added all mappings to one main block in OptimizeSubgraphView. * Removed isMain from mapping functions. * Added Conv2d EndToEnd test. Signed-off-by: Matthew Sloyan <matthew.sloyan@arm.com> Change-Id: I27c3e238407c32379ce25a1f01dad11523ef5d2b
Diffstat (limited to 'src/backends/tosaCommon/TosaLayerSupportRules.hpp')
-rw-r--r--src/backends/tosaCommon/TosaLayerSupportRules.hpp28
1 files changed, 24 insertions, 4 deletions
diff --git a/src/backends/tosaCommon/TosaLayerSupportRules.hpp b/src/backends/tosaCommon/TosaLayerSupportRules.hpp
index 792908c619..8855dd612d 100644
--- a/src/backends/tosaCommon/TosaLayerSupportRules.hpp
+++ b/src/backends/tosaCommon/TosaLayerSupportRules.hpp
@@ -48,14 +48,34 @@ struct TosaAssertSize : public Rule
}
};
-struct TosaContainerContains : public Rule
+struct TosaContainerContainsTwoTypes : public Rule
{
- explicit TosaContainerContains(std::tuple<DType, DType>& check, const std::vector<std::tuple<DType, DType>>& c)
+ explicit TosaContainerContainsTwoTypes(std::tuple<DType, DType>& check,
+ const std::vector<std::tuple<DType, DType>>& c)
{
for (auto item: c)
{
- if (std::get<0>(check) == std::get<0>(item)
- && std::get<1>(check) == std::get<1>(item))
+ if (std::get<0>(check) == std::get<0>(item) &&
+ std::get<1>(check) == std::get<1>(item))
+ {
+ m_Res = true;
+ return;
+ }
+ }
+ m_Res = false;
+ }
+};
+
+struct TosaContainerContainsThreeTypes : public Rule
+{
+ explicit TosaContainerContainsThreeTypes(std::tuple<DType, DType, DType>& check,
+ const std::vector<std::tuple<DType, DType, DType>>& c)
+ {
+ for (auto item: c)
+ {
+ if (std::get<0>(check) == std::get<0>(item) &&
+ std::get<1>(check) == std::get<1>(item) &&
+ std::get<2>(check) == std::get<2>(item))
{
m_Res = true;
return;