blob: 2a2b08da99a7479a29d749fdf1ec32bebcdf80f5 [file] [log] [blame]
Francis Murtaghbf354142022-08-12 13:54:17 +01001//
2// Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#pragma once
7
8// List of Layer Support Rules common to TOSA backends only, for use with CheckSupportRule()
9
10struct TosaOperatorAttributeOfAny : public Rule
11{
12 template<typename Container>
13 explicit TosaOperatorAttributeOfAny(TosaSerializationOperator* op, const Container& c)
14 {
15 m_Res = std::any_of(c.begin(), c.end(), [&op](Attribute attribute)
16 {
17 return attribute == op->GetAttributeType();
18 });
19 }
20};
21
22struct TosaTypeAnyOf : public Rule
23{
24 template<typename Container>
25 TosaTypeAnyOf(TosaSerializationTensor* tensor, const Container& c)
26 {
27 m_Res = std::any_of(c.begin(), c.end(), [&tensor](DType dt)
28 {
29 return dt == tensor->GetDtype();
30 });
31 }
32};
33
34struct TosaTensorNumDimensionsWithinBounds : public Rule
35{
36 explicit TosaTensorNumDimensionsWithinBounds(TosaSerializationTensor* tensor)
37 {
38 m_Res = (tensor->GetShape().size() <= MaxNumOfTensorDimensions) || (!tensor->GetShape().empty());
39 }
40};