2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
6 #include <backendsCommon/test/EndToEndTestImpl.hpp>
7 #include <backendsCommon/test/MergerTestImpl.hpp>
9 #include <boost/test/unit_test.hpp>
11 BOOST_AUTO_TEST_SUITE(NeonEndToEnd)
13 std::vector<armnn::BackendId> defaultBackends = {armnn::Compute::CpuAcc};
15 BOOST_AUTO_TEST_CASE(ConstantUsage_Neon_Float32)
17 BOOST_TEST(ConstantUsageFloat32Test(defaultBackends));
20 BOOST_AUTO_TEST_CASE(FallbackToCpuRef)
22 using namespace armnn;
24 // Create runtime in which test will run and allow fallback to CpuRef.
25 IRuntime::CreationOptions options;
26 IRuntimePtr runtime(IRuntime::Create(options));
28 // Builds up the structure of the network.
29 INetworkPtr net(INetwork::Create());
31 IConnectableLayer* input = net->AddInputLayer(0);
33 // This layer configuration isn't supported by CpuAcc but we allow fallback to CpuRef so it shoud pass.
34 NormalizationDescriptor descriptor;
35 IConnectableLayer* pooling = net->AddNormalizationLayer(descriptor);
37 IConnectableLayer* output = net->AddOutputLayer(0);
39 input->GetOutputSlot(0).Connect(pooling->GetInputSlot(0));
40 pooling->GetOutputSlot(0).Connect(output->GetInputSlot(0));
42 input->GetOutputSlot(0).SetTensorInfo(TensorInfo({ 1, 1, 4, 4 }, DataType::Float32));
43 pooling->GetOutputSlot(0).SetTensorInfo(TensorInfo({ 1, 1, 4, 4 }, DataType::Float32));
45 // optimize the network
46 std::vector<BackendId> backends = {Compute::CpuAcc, Compute::CpuRef};
47 IOptimizedNetworkPtr optNet = Optimize(*net, backends, runtime->GetDeviceSpec());
49 // Load it into the runtime. It should pass.
51 BOOST_TEST(runtime->LoadNetwork(netId, std::move(optNet)) == Status::Success);
54 BOOST_AUTO_TEST_CASE(NeonMergerEndToEndDim0Test)
56 MergerDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
59 BOOST_AUTO_TEST_CASE(NeonMergerEndToEndDim0Uint8Test)
61 MergerDim0EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
64 BOOST_AUTO_TEST_CASE(NeonMergerEndToEndDim1Test)
66 MergerDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
69 BOOST_AUTO_TEST_CASE(NeonMergerEndToEndDim1Uint8Test)
71 MergerDim1EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
74 BOOST_AUTO_TEST_CASE(NeonMergerEndToEndDim3Test)
76 MergerDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
79 BOOST_AUTO_TEST_CASE(NeonMergerEndToEndDim3Uint8Test)
81 MergerDim3EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
84 BOOST_AUTO_TEST_SUITE_END()