blob: 8d9a7f107dcb3eb69d626d59562950090bff6394 [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 "ClWorkloadFactoryHelper.hpp"
7
Aron Virginas-Tarc9cc8042018-11-01 16:15:57 +00008#include <layers/ConvertFp16ToFp32Layer.hpp>
9#include <layers/ConvertFp32ToFp16Layer.hpp>
Matthew Bentham1f0ff352019-01-02 13:26:31 +000010#include <layers/MeanLayer.hpp>
Colm Donelanc42a9872022-02-02 16:35:09 +000011#include <armnnTestUtils/TensorHelpers.hpp>
arovir0143095f32018-10-09 18:04:24 +010012
Colm Donelan0c479742021-12-10 12:43:54 +000013#include <armnn/backends/TensorHandle.hpp>
Aron Virginas-Tarc9cc8042018-11-01 16:15:57 +000014#include <cl/ClWorkloadFactory.hpp>
15#include <cl/test/ClContextControlFixture.hpp>
16#include <backendsCommon/test/IsLayerSupportedTestImpl.hpp>
17#include <backendsCommon/test/LayerTests.hpp>
arovir0143095f32018-10-09 18:04:24 +010018
Sadik Armagan1625efc2021-06-10 18:24:34 +010019#include <doctest/doctest.h>
arovir0143095f32018-10-09 18:04:24 +010020
21#include <string>
22
Sadik Armagan1625efc2021-06-10 18:24:34 +010023TEST_SUITE("ClLayerSupport")
24{
25TEST_CASE_FIXTURE(ClContextControlFixture, "IsLayerSupportedFloat16Cl")
arovir0143095f32018-10-09 18:04:24 +010026{
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000027 armnn::ClWorkloadFactory factory =
28 ClWorkloadFactoryHelper::GetFactory(ClWorkloadFactoryHelper::GetMemoryManager());
arovir0143095f32018-10-09 18:04:24 +010029 IsLayerSupportedTests<armnn::ClWorkloadFactory, armnn::DataType::Float16>(&factory);
30}
31
Sadik Armagan1625efc2021-06-10 18:24:34 +010032TEST_CASE_FIXTURE(ClContextControlFixture, "IsLayerSupportedFloat32Cl")
arovir0143095f32018-10-09 18:04:24 +010033{
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000034 armnn::ClWorkloadFactory factory =
35 ClWorkloadFactoryHelper::GetFactory(ClWorkloadFactoryHelper::GetMemoryManager());
arovir0143095f32018-10-09 18:04:24 +010036 IsLayerSupportedTests<armnn::ClWorkloadFactory, armnn::DataType::Float32>(&factory);
37}
38
Sadik Armagan1625efc2021-06-10 18:24:34 +010039TEST_CASE_FIXTURE(ClContextControlFixture, "IsLayerSupportedQAsymmU8Cl")
arovir0143095f32018-10-09 18:04:24 +010040{
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000041 armnn::ClWorkloadFactory factory =
42 ClWorkloadFactoryHelper::GetFactory(ClWorkloadFactoryHelper::GetMemoryManager());
Derek Lambertif90c56d2020-01-10 17:14:08 +000043 IsLayerSupportedTests<armnn::ClWorkloadFactory, armnn::DataType::QAsymmU8>(&factory);
arovir0143095f32018-10-09 18:04:24 +010044}
45
Sadik Armagan1625efc2021-06-10 18:24:34 +010046TEST_CASE_FIXTURE(ClContextControlFixture, "IsLayerSupportedQAsymmS8Cl")
Keith Davisa8565012020-02-14 12:22:40 +000047{
48 armnn::ClWorkloadFactory factory =
49 ClWorkloadFactoryHelper::GetFactory(ClWorkloadFactoryHelper::GetMemoryManager());
50 IsLayerSupportedTests<armnn::ClWorkloadFactory, armnn::DataType::QAsymmS8>(&factory);
51}
52
Sadik Armagan1625efc2021-06-10 18:24:34 +010053TEST_CASE_FIXTURE(ClContextControlFixture, "IsLayerSupportedQSymmS8Cl")
Keith Davis9d0ff742020-02-03 14:47:54 +000054{
55 armnn::ClWorkloadFactory factory =
56 ClWorkloadFactoryHelper::GetFactory(ClWorkloadFactoryHelper::GetMemoryManager());
57 IsLayerSupportedTests<armnn::ClWorkloadFactory, armnn::DataType::QSymmS8>(&factory);
58}
59
Sadik Armagan1625efc2021-06-10 18:24:34 +010060TEST_CASE_FIXTURE(ClContextControlFixture, "IsConvertFp16ToFp32SupportedCl")
arovir0143095f32018-10-09 18:04:24 +010061{
62 std::string reasonIfUnsupported;
63
64 bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp16ToFp32Layer,
65 armnn::DataType::Float16, armnn::DataType::Float32>(reasonIfUnsupported);
66
Sadik Armagan1625efc2021-06-10 18:24:34 +010067 CHECK(result);
arovir0143095f32018-10-09 18:04:24 +010068}
69
Sadik Armagan1625efc2021-06-10 18:24:34 +010070TEST_CASE_FIXTURE(ClContextControlFixture, "IsConvertFp16ToFp32SupportedFp32InputCl")
arovir0143095f32018-10-09 18:04:24 +010071{
72 std::string reasonIfUnsupported;
73
74 bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp16ToFp32Layer,
75 armnn::DataType::Float32, armnn::DataType::Float32>(reasonIfUnsupported);
76
Sadik Armagan1625efc2021-06-10 18:24:34 +010077 CHECK(!result);
78 CHECK_EQ(reasonIfUnsupported, "Input should be Float16");
arovir0143095f32018-10-09 18:04:24 +010079}
80
Sadik Armagan1625efc2021-06-10 18:24:34 +010081TEST_CASE_FIXTURE(ClContextControlFixture, "IsConvertFp16ToFp32SupportedFp16OutputCl")
arovir0143095f32018-10-09 18:04:24 +010082{
83 std::string reasonIfUnsupported;
84
85 bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp16ToFp32Layer,
86 armnn::DataType::Float16, armnn::DataType::Float16>(reasonIfUnsupported);
87
Sadik Armagan1625efc2021-06-10 18:24:34 +010088 CHECK(!result);
89 CHECK_EQ(reasonIfUnsupported, "Output should be Float32");
arovir0143095f32018-10-09 18:04:24 +010090}
91
Sadik Armagan1625efc2021-06-10 18:24:34 +010092TEST_CASE_FIXTURE(ClContextControlFixture, "IsConvertFp32ToFp16SupportedCl")
arovir0143095f32018-10-09 18:04:24 +010093{
94 std::string reasonIfUnsupported;
95
96 bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp32ToFp16Layer,
97 armnn::DataType::Float32, armnn::DataType::Float16>(reasonIfUnsupported);
98
Sadik Armagan1625efc2021-06-10 18:24:34 +010099 CHECK(result);
arovir0143095f32018-10-09 18:04:24 +0100100}
101
Sadik Armagan1625efc2021-06-10 18:24:34 +0100102TEST_CASE_FIXTURE(ClContextControlFixture, "IsConvertFp32ToFp16SupportedFp16InputCl")
arovir0143095f32018-10-09 18:04:24 +0100103{
104 std::string reasonIfUnsupported;
105
106 bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp32ToFp16Layer,
107 armnn::DataType::Float16, armnn::DataType::Float16>(reasonIfUnsupported);
108
Sadik Armagan1625efc2021-06-10 18:24:34 +0100109 CHECK(!result);
110 CHECK_EQ(reasonIfUnsupported, "Input should be Float32");
arovir0143095f32018-10-09 18:04:24 +0100111}
112
Sadik Armagan1625efc2021-06-10 18:24:34 +0100113TEST_CASE_FIXTURE(ClContextControlFixture, "IsConvertFp32ToFp16SupportedFp32OutputCl")
arovir0143095f32018-10-09 18:04:24 +0100114{
115 std::string reasonIfUnsupported;
116
117 bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp32ToFp16Layer,
118 armnn::DataType::Float32, armnn::DataType::Float32>(reasonIfUnsupported);
119
Sadik Armagan1625efc2021-06-10 18:24:34 +0100120 CHECK(!result);
121 CHECK_EQ(reasonIfUnsupported, "Output should be Float16");
arovir0143095f32018-10-09 18:04:24 +0100122}
123
Sadik Armagan1625efc2021-06-10 18:24:34 +0100124TEST_CASE_FIXTURE(ClContextControlFixture, "IsLogicalBinarySupportedCl")
James Conroyfe3ec942020-11-18 14:20:53 +0000125{
126 std::string reasonIfUnsupported;
127
128 bool result = IsLogicalBinaryLayerSupportedTests<armnn::ClWorkloadFactory,
129 armnn::DataType::Boolean, armnn::DataType::Boolean>(reasonIfUnsupported);
130
Sadik Armagan1625efc2021-06-10 18:24:34 +0100131 CHECK(result);
James Conroyfe3ec942020-11-18 14:20:53 +0000132}
133
Sadik Armagan1625efc2021-06-10 18:24:34 +0100134TEST_CASE_FIXTURE(ClContextControlFixture, "IsLogicalBinaryBroadcastSupportedCl")
James Conroyfe3ec942020-11-18 14:20:53 +0000135{
136 std::string reasonIfUnsupported;
137
138 bool result = IsLogicalBinaryLayerBroadcastSupportedTests<armnn::ClWorkloadFactory,
139 armnn::DataType::Boolean, armnn::DataType::Boolean>(reasonIfUnsupported);
140
Sadik Armagan1625efc2021-06-10 18:24:34 +0100141 CHECK(result);
James Conroyfe3ec942020-11-18 14:20:53 +0000142}
143
Sadik Armagan1625efc2021-06-10 18:24:34 +0100144TEST_CASE_FIXTURE(ClContextControlFixture, "IsMeanSupportedCl")
Matthew Bentham1f0ff352019-01-02 13:26:31 +0000145{
146 std::string reasonIfUnsupported;
147
148 bool result = IsMeanLayerSupportedTests<armnn::ClWorkloadFactory,
149 armnn::DataType::Float32, armnn::DataType::Float32>(reasonIfUnsupported);
150
Sadik Armagan1625efc2021-06-10 18:24:34 +0100151 CHECK(result);
Matthew Bentham1f0ff352019-01-02 13:26:31 +0000152}
153
Sadik Armagan1625efc2021-06-10 18:24:34 +0100154TEST_CASE("IsConstantSupportedCl")
Mike Kelly0886ac42020-04-27 09:55:40 +0100155{
156 std::string reasonIfUnsupported;
157
158 bool result = IsConstantLayerSupportedTests<armnn::ClWorkloadFactory,
159 armnn::DataType::Float16>(reasonIfUnsupported);
Sadik Armagan1625efc2021-06-10 18:24:34 +0100160 CHECK(result);
Mike Kelly0886ac42020-04-27 09:55:40 +0100161
162 result = IsConstantLayerSupportedTests<armnn::ClWorkloadFactory,
163 armnn::DataType::Float32>(reasonIfUnsupported);
Sadik Armagan1625efc2021-06-10 18:24:34 +0100164 CHECK(result);
Mike Kelly0886ac42020-04-27 09:55:40 +0100165
166 result = IsConstantLayerSupportedTests<armnn::ClWorkloadFactory,
167 armnn::DataType::QAsymmU8>(reasonIfUnsupported);
Sadik Armagan1625efc2021-06-10 18:24:34 +0100168 CHECK(result);
Mike Kelly0886ac42020-04-27 09:55:40 +0100169
170 result = IsConstantLayerSupportedTests<armnn::ClWorkloadFactory,
171 armnn::DataType::Boolean>(reasonIfUnsupported);
Sadik Armagan1625efc2021-06-10 18:24:34 +0100172 CHECK(!result);
Mike Kelly0886ac42020-04-27 09:55:40 +0100173
174 result = IsConstantLayerSupportedTests<armnn::ClWorkloadFactory,
175 armnn::DataType::QSymmS16>(reasonIfUnsupported);
Sadik Armagan1625efc2021-06-10 18:24:34 +0100176 CHECK(result);
Mike Kelly0886ac42020-04-27 09:55:40 +0100177
178 result = IsConstantLayerSupportedTests<armnn::ClWorkloadFactory,
179 armnn::DataType::QSymmS8>(reasonIfUnsupported);
Sadik Armagan1625efc2021-06-10 18:24:34 +0100180 CHECK(result);
Mike Kelly0886ac42020-04-27 09:55:40 +0100181
182 result = IsConstantLayerSupportedTests<armnn::ClWorkloadFactory,
183 armnn::DataType::QAsymmS8>(reasonIfUnsupported);
Sadik Armagan1625efc2021-06-10 18:24:34 +0100184 CHECK(result);
Mike Kelly0886ac42020-04-27 09:55:40 +0100185
186 result = IsConstantLayerSupportedTests<armnn::ClWorkloadFactory,
187 armnn::DataType::BFloat16>(reasonIfUnsupported);
Sadik Armagan1625efc2021-06-10 18:24:34 +0100188 CHECK(!result);
Mike Kelly0886ac42020-04-27 09:55:40 +0100189}
190
Sadik Armagan1625efc2021-06-10 18:24:34 +0100191}