blob: d1f188d283034cd70dd99fae6678310ee1391493 [file] [log] [blame]
arovir0143095f32018-10-09 18:04:24 +01001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
Aron Virginas-Tar56055192018-11-12 18:10:43 +00006#include "NeonWorkloadFactoryHelper.hpp"
7
Aron Virginas-Tarc9cc8042018-11-01 16:15:57 +00008#include <layers/ConvertFp16ToFp32Layer.hpp>
9#include <layers/ConvertFp32ToFp16Layer.hpp>
Colm Donelanc42a9872022-02-02 16:35:09 +000010#include <armnnTestUtils/TensorHelpers.hpp>
arovir0143095f32018-10-09 18:04:24 +010011
Colm Donelan0c479742021-12-10 12:43:54 +000012#include <armnn/backends/TensorHandle.hpp>
Aron Virginas-Tarc9cc8042018-11-01 16:15:57 +000013#include <neon/NeonWorkloadFactory.hpp>
14#include <backendsCommon/test/IsLayerSupportedTestImpl.hpp>
15#include <backendsCommon/test/LayerTests.hpp>
arovir0143095f32018-10-09 18:04:24 +010016
Sadik Armagan1625efc2021-06-10 18:24:34 +010017#include <doctest/doctest.h>
arovir0143095f32018-10-09 18:04:24 +010018
19#include <string>
20
Sadik Armagan1625efc2021-06-10 18:24:34 +010021TEST_SUITE("NeonLayerSupport")
22{
23TEST_CASE("IsLayerSupportedFloat16Neon")
arovir0143095f32018-10-09 18:04:24 +010024{
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000025 armnn::NeonWorkloadFactory factory =
26 NeonWorkloadFactoryHelper::GetFactory(NeonWorkloadFactoryHelper::GetMemoryManager());
arovir0143095f32018-10-09 18:04:24 +010027 IsLayerSupportedTests<armnn::NeonWorkloadFactory, armnn::DataType::Float16>(&factory);
28}
29
Sadik Armagan1625efc2021-06-10 18:24:34 +010030TEST_CASE("IsLayerSupportedFloat32Neon")
arovir0143095f32018-10-09 18:04:24 +010031{
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000032 armnn::NeonWorkloadFactory factory =
33 NeonWorkloadFactoryHelper::GetFactory(NeonWorkloadFactoryHelper::GetMemoryManager());
arovir0143095f32018-10-09 18:04:24 +010034 IsLayerSupportedTests<armnn::NeonWorkloadFactory, armnn::DataType::Float32>(&factory);
35}
36
Sadik Armagan1625efc2021-06-10 18:24:34 +010037TEST_CASE("IsLayerSupportedQAsymmU8Neon")
arovir0143095f32018-10-09 18:04:24 +010038{
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000039 armnn::NeonWorkloadFactory factory =
40 NeonWorkloadFactoryHelper::GetFactory(NeonWorkloadFactoryHelper::GetMemoryManager());
Derek Lambertif90c56d2020-01-10 17:14:08 +000041 IsLayerSupportedTests<armnn::NeonWorkloadFactory, armnn::DataType::QAsymmU8>(&factory);
arovir0143095f32018-10-09 18:04:24 +010042}
43
Sadik Armagan1625efc2021-06-10 18:24:34 +010044TEST_CASE("IsLayerSupportedQAsymmS8Neon")
Keith Davis3463eaa2020-02-20 16:41:25 +000045{
46 armnn::NeonWorkloadFactory factory =
47 NeonWorkloadFactoryHelper::GetFactory(NeonWorkloadFactoryHelper::GetMemoryManager());
48 IsLayerSupportedTests<armnn::NeonWorkloadFactory, armnn::DataType::QAsymmS8>(&factory);
49}
50
Sadik Armagan1625efc2021-06-10 18:24:34 +010051TEST_CASE("IsLayerSupportedQSymmS8Neon")
Keith Davis9d0ff742020-02-03 14:47:54 +000052{
53 armnn::NeonWorkloadFactory factory =
54 NeonWorkloadFactoryHelper::GetFactory(NeonWorkloadFactoryHelper::GetMemoryManager());
55 IsLayerSupportedTests<armnn::NeonWorkloadFactory, armnn::DataType::QSymmS8>(&factory);
56}
57
Sadik Armagan1625efc2021-06-10 18:24:34 +010058TEST_CASE("IsConvertFp16ToFp32SupportedNeon")
arovir0143095f32018-10-09 18:04:24 +010059{
60 std::string reasonIfUnsupported;
61
62 bool result = IsConvertLayerSupportedTests<armnn::NeonWorkloadFactory, armnn::ConvertFp16ToFp32Layer,
63 armnn::DataType::Float16, armnn::DataType::Float32>(reasonIfUnsupported);
64
Sadik Armagan1625efc2021-06-10 18:24:34 +010065 CHECK(result);
arovir0143095f32018-10-09 18:04:24 +010066}
67
Sadik Armagan1625efc2021-06-10 18:24:34 +010068TEST_CASE("IsConvertFp32ToFp16SupportedNeon")
arovir0143095f32018-10-09 18:04:24 +010069{
70 std::string reasonIfUnsupported;
71
72 bool result = IsConvertLayerSupportedTests<armnn::NeonWorkloadFactory, armnn::ConvertFp32ToFp16Layer,
73 armnn::DataType::Float32, armnn::DataType::Float16>(reasonIfUnsupported);
74
Sadik Armagan1625efc2021-06-10 18:24:34 +010075 CHECK(result);
arovir0143095f32018-10-09 18:04:24 +010076}
77
Sadik Armagan1625efc2021-06-10 18:24:34 +010078TEST_CASE("IsLogicalBinarySupportedNeon")
James Conroy177df1e2020-11-13 10:18:51 +000079{
80 std::string reasonIfUnsupported;
81
82 bool result = IsLogicalBinaryLayerSupportedTests<armnn::NeonWorkloadFactory,
83 armnn::DataType::Boolean, armnn::DataType::Boolean>(reasonIfUnsupported);
84
Sadik Armagan1625efc2021-06-10 18:24:34 +010085 CHECK(result);
James Conroy177df1e2020-11-13 10:18:51 +000086}
87
Sadik Armagan1625efc2021-06-10 18:24:34 +010088TEST_CASE("IsLogicalBinaryBroadcastSupportedNeon")
James Conroy177df1e2020-11-13 10:18:51 +000089{
90 std::string reasonIfUnsupported;
91
92 bool result = IsLogicalBinaryLayerBroadcastSupportedTests<armnn::NeonWorkloadFactory,
93 armnn::DataType::Boolean, armnn::DataType::Boolean>(reasonIfUnsupported);
94
Sadik Armagan1625efc2021-06-10 18:24:34 +010095 CHECK(result);
James Conroy177df1e2020-11-13 10:18:51 +000096}
97
Sadik Armagan1625efc2021-06-10 18:24:34 +010098TEST_CASE("IsMeanSupportedNeon")
Matthew Bentham1f0ff352019-01-02 13:26:31 +000099{
100 std::string reasonIfUnsupported;
101
102 bool result = IsMeanLayerSupportedTests<armnn::NeonWorkloadFactory,
103 armnn::DataType::Float32, armnn::DataType::Float32>(reasonIfUnsupported);
104
Sadik Armagan1625efc2021-06-10 18:24:34 +0100105 CHECK(result);
Matthew Bentham1f0ff352019-01-02 13:26:31 +0000106}
107
Sadik Armagan1625efc2021-06-10 18:24:34 +0100108TEST_CASE("IsConstantSupportedNeon")
Mike Kelly0886ac42020-04-27 09:55:40 +0100109{
110 std::string reasonIfUnsupported;
111
112 bool result = IsConstantLayerSupportedTests<armnn::NeonWorkloadFactory,
113 armnn::DataType::Float16>(reasonIfUnsupported);
Sadik Armagan1625efc2021-06-10 18:24:34 +0100114 CHECK(result);
Mike Kelly0886ac42020-04-27 09:55:40 +0100115
116 result = IsConstantLayerSupportedTests<armnn::NeonWorkloadFactory,
117 armnn::DataType::Float32>(reasonIfUnsupported);
Sadik Armagan1625efc2021-06-10 18:24:34 +0100118 CHECK(result);
Mike Kelly0886ac42020-04-27 09:55:40 +0100119
120 result = IsConstantLayerSupportedTests<armnn::NeonWorkloadFactory,
121 armnn::DataType::QAsymmU8>(reasonIfUnsupported);
Sadik Armagan1625efc2021-06-10 18:24:34 +0100122 CHECK(result);
Mike Kelly0886ac42020-04-27 09:55:40 +0100123
124 result = IsConstantLayerSupportedTests<armnn::NeonWorkloadFactory,
125 armnn::DataType::Boolean>(reasonIfUnsupported);
Sadik Armagan1625efc2021-06-10 18:24:34 +0100126 CHECK(!result);
Mike Kelly0886ac42020-04-27 09:55:40 +0100127
128 result = IsConstantLayerSupportedTests<armnn::NeonWorkloadFactory,
129 armnn::DataType::QSymmS16>(reasonIfUnsupported);
Sadik Armagan1625efc2021-06-10 18:24:34 +0100130 CHECK(result);
Mike Kelly0886ac42020-04-27 09:55:40 +0100131
132 result = IsConstantLayerSupportedTests<armnn::NeonWorkloadFactory,
133 armnn::DataType::QSymmS8>(reasonIfUnsupported);
Sadik Armagan1625efc2021-06-10 18:24:34 +0100134 CHECK(result);
Mike Kelly0886ac42020-04-27 09:55:40 +0100135
136 result = IsConstantLayerSupportedTests<armnn::NeonWorkloadFactory,
137 armnn::DataType::QAsymmS8>(reasonIfUnsupported);
Sadik Armagan1625efc2021-06-10 18:24:34 +0100138 CHECK(result);
Mike Kelly0886ac42020-04-27 09:55:40 +0100139
140 result = IsConstantLayerSupportedTests<armnn::NeonWorkloadFactory,
141 armnn::DataType::BFloat16>(reasonIfUnsupported);
Sadik Armagan1625efc2021-06-10 18:24:34 +0100142 CHECK(result);
Mike Kelly0886ac42020-04-27 09:55:40 +0100143}
144
Sadik Armagan1625efc2021-06-10 18:24:34 +0100145}