aboutsummaryrefslogtreecommitdiff
path: root/src/backends/tosaReference/test/TosaRefLayerSupportTests.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/backends/tosaReference/test/TosaRefLayerSupportTests.cpp')
-rw-r--r--src/backends/tosaReference/test/TosaRefLayerSupportTests.cpp128
1 files changed, 125 insertions, 3 deletions
diff --git a/src/backends/tosaReference/test/TosaRefLayerSupportTests.cpp b/src/backends/tosaReference/test/TosaRefLayerSupportTests.cpp
index 47f31380a5..48eca344bc 100644
--- a/src/backends/tosaReference/test/TosaRefLayerSupportTests.cpp
+++ b/src/backends/tosaReference/test/TosaRefLayerSupportTests.cpp
@@ -57,9 +57,131 @@ TEST_CASE("IsLayerSupportedTosaReferenceAdditionUnsupported")
reasonIfNotSupported);
CHECK(!supported);
- REQUIRE(reasonIfNotSupported.find("TOSA Reference Operator: 14 for input: Op_ADD_input0_") != std::string::npos);
- REQUIRE(reasonIfNotSupported.find("TOSA Reference Operator: 14 for input: Op_ADD_input1_") != std::string::npos);
- REQUIRE(reasonIfNotSupported.find("TOSA Reference Operator: 14 for output: Op_ADD_output0_") != std::string::npos);
+ REQUIRE(reasonIfNotSupported.find(
+ "TOSA Reference Operator: Op_ADD for input: Op_ADD_input0_") != std::string::npos);
+ REQUIRE(reasonIfNotSupported.find(
+ "TOSA Reference Operator: Op_ADD for input: Op_ADD_input1_") != std::string::npos);
+ REQUIRE(reasonIfNotSupported.find(
+ "TOSA Reference Operator: Op_ADD for output: Op_ADD_output0_") != std::string::npos);
+}
+
+TEST_CASE("IsLayerSupportedTosaReferenceMaxPooling2d")
+{
+ armnn::TensorShape inShape = {1,1,3,4};
+ armnn::TensorShape outShape = {1,1,3,4};
+ armnn::TensorInfo in(inShape, armnn::DataType::Float32);
+ armnn::TensorInfo out(outShape, armnn::DataType::Float32);
+
+ armnn::Pooling2dDescriptor desc;
+ armnn::TosaRefLayerSupport supportChecker;
+ std::string reasonIfNotSupported;
+ auto supported = supportChecker.IsLayerSupported(armnn::LayerType::Pooling2d,
+ {in, out},
+ desc,
+ armnn::EmptyOptional(),
+ armnn::EmptyOptional(),
+ reasonIfNotSupported);
+
+ CHECK(supported);
+}
+
+TEST_CASE("IsLayerSupportedTosaReferenceAvgPooling2d_IgnoreValue")
+{
+ armnn::TensorShape inShape = {1,1,3,4};
+ armnn::TensorShape outShape = {1,1,3,4};
+ armnn::TensorInfo in(inShape, armnn::DataType::Float32);
+ armnn::TensorInfo out(outShape, armnn::DataType::Float32);
+
+ armnn::Pooling2dDescriptor desc;
+ desc.m_PaddingMethod = armnn::PaddingMethod::IgnoreValue;
+ desc.m_PoolType = armnn::PoolingAlgorithm::Average;
+
+ armnn::TosaRefLayerSupport supportChecker;
+ std::string reasonIfNotSupported;
+ auto supported = supportChecker.IsLayerSupported(armnn::LayerType::Pooling2d,
+ {in, out},
+ desc,
+ armnn::EmptyOptional(),
+ armnn::EmptyOptional(),
+ reasonIfNotSupported);
+
+ CHECK(supported);
+}
+
+TEST_CASE("IsLayerSupportedTosaReferenceAvgPooling2d_InputOutputDatatypeDifferent")
+{
+ armnn::TensorShape inShape = {1,1,3,4};
+ armnn::TensorShape outShape = {1,1,3,4};
+ armnn::TensorInfo in(inShape, armnn::DataType::QAsymmS8);
+ armnn::TensorInfo out(outShape, armnn::DataType::Signed32);
+
+ armnn::Pooling2dDescriptor desc;
+ desc.m_PaddingMethod = armnn::PaddingMethod::IgnoreValue;
+ desc.m_PoolType = armnn::PoolingAlgorithm::Average;
+
+ armnn::TosaRefLayerSupport supportChecker;
+ std::string reasonIfNotSupported;
+ auto supported = supportChecker.IsLayerSupported(armnn::LayerType::Pooling2d,
+ {in, out},
+ desc,
+ armnn::EmptyOptional(),
+ armnn::EmptyOptional(),
+ reasonIfNotSupported);
+
+ CHECK(supported);
+}
+
+TEST_CASE("IsLayerSupportedTosaReferenceMaxPooling2dUnsupported")
+{
+ armnn::TensorShape inShape = {1,1,3,4};
+ armnn::TensorShape outShape = {1,1,3,4};
+ armnn::TensorInfo in(inShape, armnn::DataType::Signed64);
+ armnn::TensorInfo out(outShape, armnn::DataType::Signed64);
+
+ armnn::Pooling2dDescriptor desc;
+ armnn::TosaRefLayerSupport supportChecker;
+ std::string reasonIfNotSupported;
+ auto supported = supportChecker.IsLayerSupported(armnn::LayerType::Pooling2d,
+ {in, out},
+ desc,
+ armnn::EmptyOptional(),
+ armnn::EmptyOptional(),
+ reasonIfNotSupported);
+
+ CHECK(!supported);
+ REQUIRE(reasonIfNotSupported.find(
+ "TOSA Reference Operator: Op_MAX_POOL2D for input: Op_MAX_POOL2D_input0_") != std::string::npos);
+ REQUIRE(reasonIfNotSupported.find(
+ "TOSA Reference Operator: Op_MAX_POOL2D for output: Op_MAX_POOL2D_output0_") != std::string::npos);
+}
+
+TEST_CASE("IsLayerSupportedTosaReferenceAvgPooling2dUnsupported_InputOutputDatatypeDifferent")
+{
+ armnn::TensorShape inShape = {1,1,3,4};
+ armnn::TensorShape outShape = {1,1,3,4};
+ armnn::TensorInfo in(inShape, armnn::DataType::Float32);
+ armnn::TensorInfo out(outShape, armnn::DataType::Float16);
+
+ armnn::Pooling2dDescriptor desc;
+ desc.m_PaddingMethod = armnn::PaddingMethod::IgnoreValue;
+ desc.m_PoolType = armnn::PoolingAlgorithm::Average;
+
+ armnn::TosaRefLayerSupport supportChecker;
+ std::string reasonIfNotSupported;
+ auto supported = supportChecker.IsLayerSupported(armnn::LayerType::Pooling2d,
+ {in, out},
+ desc,
+ armnn::EmptyOptional(),
+ armnn::EmptyOptional(),
+ reasonIfNotSupported);
+
+ CHECK(!supported);
+ REQUIRE(reasonIfNotSupported.find(
+ "TOSA Reference Operator: Op_AVG_POOL2D for input: Op_PAD_intermediate0_") != std::string::npos);
+ REQUIRE(reasonIfNotSupported.find(
+ " and output: Op_AVG_POOL2D_output0_") != std::string::npos);
+ REQUIRE(reasonIfNotSupported.find(
+ " has an unsupported input data type: 8 to output data type: 10") != std::string::npos);
}
}