blob: 5018b4459d1ceea9594c86557f5399d7265fbab9 [file] [log] [blame]
//
// Copyright © 2017 Arm Ltd. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include "TestDynamicBackend.hpp"
#include <armnn/backends/IBackendInternal.hpp>
#include <armnn/utility/IgnoreUnused.hpp>
constexpr const char* TestDynamicBackendId()
{
#if defined(VALID_TEST_DYNAMIC_BACKEND_1)
return "ValidTestDynamicBackend";
#elif defined(VALID_TEST_DYNAMIC_BACKEND_2) || \
defined(VALID_TEST_DYNAMIC_BACKEND_4) || \
defined(INVALID_TEST_DYNAMIC_BACKEND_9)
// This backend id is shared among different test dynamic backends for testing purposes:
// the test dynamic backend 4 is actually a duplicate of the test dynamic backend 2 (with the same version),
// the test dynamic backend 9 is actually a duplicate of the test dynamic backend 2 (but with a version
// incompatible with the current Backend API)
return "TestValid2";
#elif defined(VALID_TEST_DYNAMIC_BACKEND_3)
// The test dynamic backend 3 is a different backend than the test dynamic backend 2
return "TestValid3";
#elif defined(VALID_TEST_DYNAMIC_BACKEND_5)
// The test dynamic backend 5 is a different backend than the test dynamic backend 2
return "TestValid5";
#elif defined(INVALID_TEST_DYNAMIC_BACKEND_10)
// Empty backend id
return "";
#elif defined(INVALID_TEST_DYNAMIC_BACKEND_11)
// "Unknown" backend id, "Unknown" is a reserved id in ArmNN
return "Unknown";
#else
return "InvalidTestDynamicBackend";
#endif
}
class TestDynamicBackend : public armnn::IBackendInternal
{
public:
TestDynamicBackend()
: m_BackendId(TestDynamicBackendId())
{}
const armnn::BackendId& GetId() const override
{
return m_BackendId;
}
IWorkloadFactoryPtr CreateWorkloadFactory(const IMemoryManagerSharedPtr& memoryManager) const override
{
IgnoreUnused(memoryManager);
return IWorkloadFactoryPtr{};
}
ILayerSupportSharedPtr GetLayerSupport() const override
{
return ILayerSupportSharedPtr{};
}
private:
armnn::BackendId m_BackendId;
};
const char* GetBackendId()
{
#if defined(INVALID_TEST_DYNAMIC_BACKEND_5) || \
defined(INVALID_TEST_DYNAMIC_BACKEND_8)
// Return an invalid backend id
return nullptr;
#else
// Return a valid backend id
return TestDynamicBackendId();
#endif
}
void GetVersion(uint32_t* outMajor, uint32_t* outMinor)
{
if (!outMajor || !outMinor)
{
return;
}
#if defined(INVALID_TEST_DYNAMIC_BACKEND_7) || \
defined(INVALID_TEST_DYNAMIC_BACKEND_8)
*outMajor = 0;
*outMinor = 7;
#else
armnn::BackendVersion apiVersion = armnn::IBackendInternal::GetApiVersion();
*outMajor = apiVersion.m_Major;
#if defined(INVALID_TEST_DYNAMIC_BACKEND_9)
*outMinor = apiVersion.m_Minor + 1;
#else
*outMinor = apiVersion.m_Minor;
#endif
#endif
}
void* BackendFactory()
{
#if defined(INVALID_TEST_DYNAMIC_BACKEND_6)
// Return an invalid backend instance
return nullptr;
#else
// Return a non-null backend instance
return new TestDynamicBackend();
#endif
}