IVGCVSW-4210 Create a public API for the common backend files

 * Create a public API for the common backend files
 * Move OutputHandler to armnn internal
 * Remove unused headers

Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com>
Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Change-Id: I3e86d908b021e3561befa9d45158d87d2cbb18c0
diff --git a/src/backends/backendsCommon/CMakeLists.txt b/src/backends/backendsCommon/CMakeLists.txt
index 93f7545..3eaae07 100644
--- a/src/backends/backendsCommon/CMakeLists.txt
+++ b/src/backends/backendsCommon/CMakeLists.txt
@@ -5,22 +5,15 @@
 
 list(APPEND armnnBackendsCommon_sources
     CpuTensorHandle.cpp
-    CpuTensorHandleFwd.hpp
     CpuTensorHandle.hpp
     DynamicBackend.cpp
-    DynamicBackend.hpp
     DynamicBackendUtils.cpp
     DynamicBackendUtils.hpp
     IBackendInternal.cpp
-    IBackendInternal.hpp
-    IBackendContext.hpp
     ITensorHandleFactory.cpp
-    ITensorHandleFactory.hpp
     LayerSupportBase.cpp
     LayerSupportBase.hpp
     LayerSupportRules.hpp
-    IMemoryManager.hpp
-    ITensorHandle.hpp
     MakeWorkloadHelper.hpp
     MemCopyWorkload.cpp
     MemCopyWorkload.hpp
@@ -29,18 +22,15 @@
     MemSyncWorkload.cpp
     MemSyncWorkload.hpp
     OptimizationViews.cpp
-    OptimizationViews.hpp
-    OutputHandler.cpp
-    OutputHandler.hpp
     TensorHandleFactoryRegistry.cpp
     TensorHandleFactoryRegistry.hpp
     WorkloadDataCollector.hpp
+    Workload.hpp
     WorkloadData.cpp
     WorkloadData.hpp
     WorkloadFactory.cpp
     WorkloadFactory.hpp
     WorkloadFactoryBase.hpp
-    Workload.hpp
     WorkloadInfo.hpp
     WorkloadUtils.cpp
     WorkloadUtils.hpp
@@ -51,6 +41,7 @@
 endif()
 
 add_library(armnnBackendsCommon OBJECT ${armnnBackendsCommon_sources})
+target_include_directories(armnnBackendsCommon PRIVATE ${PROJECT_SOURCE_DIR}/include/armnn/backends)
 target_include_directories(armnnBackendsCommon PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
 target_include_directories(armnnBackendsCommon PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
 target_include_directories(armnnBackendsCommon PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
diff --git a/src/backends/backendsCommon/CpuTensorHandle.hpp b/src/backends/backendsCommon/CpuTensorHandle.hpp
index 5fefc12..e6e59fc 100644
--- a/src/backends/backendsCommon/CpuTensorHandle.hpp
+++ b/src/backends/backendsCommon/CpuTensorHandle.hpp
@@ -2,17 +2,20 @@
 // Copyright © 2017 Arm Ltd. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
+
 #pragma once
 
-#include "CpuTensorHandleFwd.hpp"
-#include "CompatibleTypes.hpp"
+#include <armnn/backends/CpuTensorHandleFwd.hpp>
+#include <armnn/backends/ITensorHandle.hpp>
 
 #include <armnn/TypesUtils.hpp>
 
-#include <backendsCommon/OutputHandler.hpp>
+#include <CompatibleTypes.hpp>
 
 #include <algorithm>
 
+#include <boost/assert.hpp>
+
 namespace armnn
 {
 
diff --git a/src/backends/backendsCommon/CpuTensorHandleFwd.hpp b/src/backends/backendsCommon/CpuTensorHandleFwd.hpp
deleted file mode 100644
index d439d0b..0000000
--- a/src/backends/backendsCommon/CpuTensorHandleFwd.hpp
+++ /dev/null
@@ -1,16 +0,0 @@
-//
-// Copyright © 2017 Arm Ltd. All rights reserved.
-// SPDX-License-Identifier: MIT
-//
-#pragma once
-
-namespace armnn
-{
-
-class ConstCpuTensorHandle;
-class CpuTensorHandle;
-class ScopedCpuTensorHandle;
-class PassthroughCpuTensorHandle;
-class ConstPassthroughCpuTensorHandle;
-
-} // namespace armnn
diff --git a/src/backends/backendsCommon/DynamicBackend.cpp b/src/backends/backendsCommon/DynamicBackend.cpp
index c576199..8af61c0 100644
--- a/src/backends/backendsCommon/DynamicBackend.cpp
+++ b/src/backends/backendsCommon/DynamicBackend.cpp
@@ -3,8 +3,8 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include "DynamicBackend.hpp"
-#include "DynamicBackendUtils.hpp"
+#include <armnn/backends/DynamicBackend.hpp>
+#include <backendsCommon/DynamicBackendUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/backendsCommon/DynamicBackend.hpp b/src/backends/backendsCommon/DynamicBackend.hpp
deleted file mode 100644
index f888b1e..0000000
--- a/src/backends/backendsCommon/DynamicBackend.hpp
+++ /dev/null
@@ -1,54 +0,0 @@
-//
-// Copyright © 2017 Arm Ltd. All rights reserved.
-// SPDX-License-Identifier: MIT
-//
-
-#pragma once
-
-#include "IBackendInternal.hpp"
-
-#include <armnn/BackendRegistry.hpp>
-
-#include <functional>
-#include <memory>
-
-namespace armnn
-{
-
-class DynamicBackend final
-{
-public:
-    using HandleCloser = std::function<void(const void*)>;
-    using HandlePtr = std::unique_ptr<void, HandleCloser>;
-
-    explicit DynamicBackend(const void* sharedObjectHandle);
-
-    /// Public dynamic backend functions
-    BackendId GetBackendId();
-    BackendVersion GetBackendVersion();
-    IBackendInternalUniquePtr GetBackend();
-    BackendRegistry::FactoryFunction GetFactoryFunction();
-
-private:
-    /// Private utility functions
-    template<typename BackendFunctionType>
-    BackendFunctionType SetFunctionPointer(const std::string& backendFunctionName);
-    IBackendInternalUniquePtr CreateBackend();
-
-    /// Backend function pointer types
-    using IdFunctionType      = const char*(*)();
-    using VersionFunctionType = void(*)(uint32_t*, uint32_t*);
-    using FactoryFunctionType = void*(*)();
-
-    /// Backend function pointers
-    IdFunctionType      m_BackendIdFunction;
-    VersionFunctionType m_BackendVersionFunction;
-    FactoryFunctionType m_BackendFactoryFunction;
-
-    /// Shared object handle
-    HandlePtr m_Handle;
-};
-
-using DynamicBackendPtr = std::unique_ptr<DynamicBackend>;
-
-} // namespace armnn
diff --git a/src/backends/backendsCommon/DynamicBackendUtils.cpp b/src/backends/backendsCommon/DynamicBackendUtils.cpp
index b31ce60..ab0006d 100644
--- a/src/backends/backendsCommon/DynamicBackendUtils.cpp
+++ b/src/backends/backendsCommon/DynamicBackendUtils.cpp
@@ -3,7 +3,7 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include "DynamicBackendUtils.hpp"
+#include <backendsCommon/DynamicBackendUtils.hpp>
 
 #include <boost/filesystem.hpp>
 #include <boost/algorithm/string.hpp>
diff --git a/src/backends/backendsCommon/DynamicBackendUtils.hpp b/src/backends/backendsCommon/DynamicBackendUtils.hpp
index 6d9f11d..2763b9d 100644
--- a/src/backends/backendsCommon/DynamicBackendUtils.hpp
+++ b/src/backends/backendsCommon/DynamicBackendUtils.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include "IBackendInternal.hpp"
-#include "DynamicBackend.hpp"
+#include <armnn/backends/DynamicBackend.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 
 #include <armnn/Exceptions.hpp>
 
diff --git a/src/backends/backendsCommon/IBackendContext.hpp b/src/backends/backendsCommon/IBackendContext.hpp
deleted file mode 100644
index de98249..0000000
--- a/src/backends/backendsCommon/IBackendContext.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-//
-// Copyright © 2017 Arm Ltd. All rights reserved.
-// SPDX-License-Identifier: MIT
-//
-#pragma once
-
-#include <armnn/IRuntime.hpp>
-#include <memory>
-
-namespace armnn
-{
-
-class IBackendContext
-{
-protected:
-    IBackendContext(const IRuntime::CreationOptions&) {}
-
-public:
-    // Before and after Load network events
-    virtual bool BeforeLoadNetwork(NetworkId networkId) = 0;
-    virtual bool AfterLoadNetwork(NetworkId networkId) = 0;
-
-    // Before and after Unload network events
-    virtual bool BeforeUnloadNetwork(NetworkId networkId) = 0;
-    virtual bool AfterUnloadNetwork(NetworkId networkId) = 0;
-
-    virtual ~IBackendContext() {}
-};
-
-using IBackendContextUniquePtr = std::unique_ptr<IBackendContext>;
-
-} // namespace armnn
\ No newline at end of file
diff --git a/src/backends/backendsCommon/IBackendInternal.cpp b/src/backends/backendsCommon/IBackendInternal.cpp
index 01755c4..d1422d1 100644
--- a/src/backends/backendsCommon/IBackendInternal.cpp
+++ b/src/backends/backendsCommon/IBackendInternal.cpp
@@ -3,7 +3,7 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include "IBackendInternal.hpp"
+#include <armnn/backends/IBackendInternal.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/backendsCommon/IBackendInternal.hpp b/src/backends/backendsCommon/IBackendInternal.hpp
deleted file mode 100644
index 3296d81..0000000
--- a/src/backends/backendsCommon/IBackendInternal.hpp
+++ /dev/null
@@ -1,138 +0,0 @@
-//
-// Copyright © 2017 Arm Ltd. All rights reserved.
-// SPDX-License-Identifier: MIT
-//
-
-#pragma once
-
-#include <armnn/Types.hpp>
-#include <armnn/IRuntime.hpp>
-#include <armnn/Deprecated.hpp>
-
-#include <ISubgraphViewConverter.hpp>
-#include <SubgraphView.hpp>
-#include <optimizations/Optimization.hpp>
-
-#include "IBackendContext.hpp"
-#include "IMemoryManager.hpp"
-#include "ITensorHandleFactory.hpp"
-#include "OptimizationViews.hpp"
-
-#include <vector>
-#include <memory>
-
-namespace armnn
-{
-class IWorkloadFactory;
-class IMemoryManager;
-class ILayerSupport;
-
-struct BackendVersion
-{
-    uint32_t m_Major;
-    uint32_t m_Minor;
-
-    constexpr BackendVersion()
-        : m_Major(0)
-        , m_Minor(0)
-    {}
-    constexpr BackendVersion(uint32_t major, uint32_t minor)
-        : m_Major(major)
-        , m_Minor(minor)
-    {}
-
-    bool operator==(const BackendVersion& other) const
-    {
-        return this == &other ||
-               (this->m_Major == other.m_Major &&
-                this->m_Minor == other.m_Minor);
-    }
-
-    bool operator<=(const BackendVersion& other) const
-    {
-        return this->m_Major < other.m_Major ||
-               (this->m_Major == other.m_Major &&
-                this->m_Minor <= other.m_Minor);
-    }
-};
-
-inline std::ostream& operator<<(std::ostream& os, const BackendVersion& backendVersion)
-{
-    os << "[" << backendVersion.m_Major << "." << backendVersion.m_Minor << "]";
-
-    return os;
-}
-
-class IBackendInternal : public IBackend
-{
-protected:
-    // Creation must be done through a specific
-    // backend interface.
-    IBackendInternal() = default;
-
-public:
-    // Allow backends created by the factory function
-    // to be destroyed through IBackendInternal.
-    ~IBackendInternal() override = default;
-
-    using IWorkloadFactoryPtr = std::unique_ptr<IWorkloadFactory>;
-    using IBackendContextPtr = std::unique_ptr<IBackendContext>;
-    using OptimizationPtr = std::unique_ptr<Optimization>;
-    using Optimizations = std::vector<OptimizationPtr>;
-    using ILayerSupportSharedPtr = std::shared_ptr<ILayerSupport>;
-
-    using IMemoryManagerUniquePtr = std::unique_ptr<IMemoryManager>;
-    using IMemoryManagerSharedPtr = std::shared_ptr<IMemoryManager>;
-
-    using GraphUniquePtr = std::unique_ptr<Graph>;
-    using SubgraphViewUniquePtr = std::unique_ptr<SubgraphView>;
-
-    ARMNN_NO_DEPRECATE_WARN_BEGIN
-    using ISubGraphConverterPtr ARMNN_DEPRECATED_MSG("This type is no longer supported")
-        = std::unique_ptr<ISubGraphConverter>;
-    using SubGraphUniquePtr ARMNN_DEPRECATED_MSG("SubGraph is deprecated, use SubgraphView instead")
-        = std::unique_ptr<SubGraph>;
-
-    ARMNN_DEPRECATED_MSG("This method is no longer supported")
-    virtual ISubGraphConverterPtr CreateSubGraphConverter(const std::shared_ptr<SubGraph>& subGraph) const;
-
-    ARMNN_DEPRECATED_MSG("Use \"OptimizationViews OptimizeSubgraphView(const SubgraphView&)\" instead")
-    virtual Optimizations GetOptimizations() const;
-
-    ARMNN_DEPRECATED_MSG("Use \"OptimizationViews OptimizeSubgraphView(const SubgraphView&)\" instead")
-    virtual SubGraphUniquePtr OptimizeSubGraph(const SubGraph& subGraph, bool& optimizationAttempted) const;
-    ARMNN_NO_DEPRECATE_WARN_END
-
-    virtual IMemoryManagerUniquePtr CreateMemoryManager() const;
-
-    virtual IWorkloadFactoryPtr CreateWorkloadFactory(
-        const IMemoryManagerSharedPtr& memoryManager = nullptr) const = 0;
-
-    virtual IWorkloadFactoryPtr CreateWorkloadFactory(
-        class TensorHandleFactoryRegistry& tensorHandleFactoryRegistry) const;
-
-    virtual IBackendContextPtr CreateBackendContext(const IRuntime::CreationOptions&) const;
-
-    virtual ILayerSupportSharedPtr GetLayerSupport() const = 0;
-
-    virtual OptimizationViews OptimizeSubgraphView(const SubgraphView& subgraph) const;
-
-    bool SupportsTensorAllocatorAPI() const;
-
-    ITensorHandleFactory::FactoryId GetBackwardCompatibleFavoriteHandleFactory();
-
-    /// (Optional) Returns a vector of supported TensorHandleFactory ids in preference order.
-    virtual std::vector<ITensorHandleFactory::FactoryId> GetHandleFactoryPreferences() const;
-
-    /// (Optional) Register TensorHandleFactories
-    /// Either this method or CreateMemoryManager() and
-    /// IWorkloadFactory::CreateTensor()/IWorkloadFactory::CreateSubtensor() methods must be implemented.
-    virtual void RegisterTensorHandleFactories(class TensorHandleFactoryRegistry& registry) {}
-
-    /// Returns the version of the Backend API
-    static constexpr BackendVersion GetApiVersion() { return BackendVersion(1, 0); }
-};
-
-using IBackendInternalUniquePtr = std::unique_ptr<IBackendInternal>;
-
-} // namespace armnn
diff --git a/src/backends/backendsCommon/IMemoryManager.hpp b/src/backends/backendsCommon/IMemoryManager.hpp
deleted file mode 100644
index 28b81e7..0000000
--- a/src/backends/backendsCommon/IMemoryManager.hpp
+++ /dev/null
@@ -1,26 +0,0 @@
-//
-// Copyright © 2017 Arm Ltd. All rights reserved.
-// SPDX-License-Identifier: MIT
-//
-#pragma once
-
-#include <memory>
-
-namespace armnn
-{
-
-class IMemoryManager
-{
-protected:
-    IMemoryManager() {}
-
-public:
-    virtual void Acquire() = 0;
-    virtual void Release() = 0;
-
-    virtual ~IMemoryManager() {}
-};
-
-using IMemoryManagerUniquePtr = std::unique_ptr<IMemoryManager>;
-
-} // namespace armnn
\ No newline at end of file
diff --git a/src/backends/backendsCommon/ITensorHandle.hpp b/src/backends/backendsCommon/ITensorHandle.hpp
deleted file mode 100644
index e1b80b8..0000000
--- a/src/backends/backendsCommon/ITensorHandle.hpp
+++ /dev/null
@@ -1,77 +0,0 @@
-//
-// Copyright © 2017 Arm Ltd. All rights reserved.
-// SPDX-License-Identifier: MIT
-//
-#pragma once
-
-#include <armnn/MemorySources.hpp>
-
-namespace armnn
-{
-
-class TensorShape;
-
-class ITensorHandle
-{
-public:
-    virtual ~ITensorHandle(){}
-
-    /// Indicate to the memory manager that this resource is active.
-    /// This is used to compute overlapping lifetimes of resources.
-    virtual void Manage() = 0;
-
-    /// Indicate to the memory manager that this resource is no longer active.
-    /// This is used to compute overlapping lifetimes of resources.
-    virtual void Allocate() = 0;
-
-    /// Get the parent tensor if this is a subtensor.
-    /// \return a pointer to the parent tensor. Otherwise nullptr if not a subtensor.
-    virtual ITensorHandle* GetParent() const = 0;
-
-    /// Map the tensor data for access.
-    /// \param blocking hint to block the calling thread until all other accesses are complete. (backend dependent)
-    /// \return pointer to the first element of the mapped data.
-    virtual const void* Map(bool blocking=true) const = 0;
-
-    /// Unmap the tensor data
-    virtual void Unmap() const = 0;
-
-    /// Map the tensor data for access. Must be paired with call to Unmap().
-    /// \param blocking hint to block the calling thread until all other accesses are complete. (backend dependent)
-    /// \return pointer to the first element of the mapped data.
-    void* Map(bool blocking=true)
-    {
-        return const_cast<void*>(static_cast<const ITensorHandle*>(this)->Map(blocking));
-    }
-
-    /// Unmap the tensor data that was previously mapped with call to Map().
-    void Unmap()
-    {
-        return static_cast<const ITensorHandle*>(this)->Unmap();
-    }
-
-    /// Get the strides for each dimension ordered from largest to smallest where
-    /// the smallest value is the same as the size of a single element in the tensor.
-    /// \return a TensorShape filled with the strides for each dimension
-    virtual TensorShape GetStrides() const = 0;
-
-    /// Get the number of elements for each dimension ordered from slowest iterating dimension
-    /// to fastest iterating dimension.
-    /// \return a TensorShape filled with the number of elements for each dimension.
-    virtual TensorShape GetShape() const = 0;
-
-    // Testing support to be able to verify and set tensor data content
-    virtual void CopyOutTo(void* memory) const = 0;
-    virtual void CopyInFrom(const void* memory) = 0;
-
-    /// Get flags describing supported import sources.
-    virtual unsigned int GetImportFlags() const { return 0; }
-
-    /// Import externally allocated memory
-    /// \param memory base address of the memory being imported.
-    /// \param source source of the allocation for the memory being imported.
-    /// \return true on success or false on failure
-    virtual bool Import(void* memory, MemorySource source) { return false; };
-};
-
-}
diff --git a/src/backends/backendsCommon/ITensorHandleFactory.cpp b/src/backends/backendsCommon/ITensorHandleFactory.cpp
index 91f5692..57fdcba 100644
--- a/src/backends/backendsCommon/ITensorHandleFactory.cpp
+++ b/src/backends/backendsCommon/ITensorHandleFactory.cpp
@@ -3,7 +3,7 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include "ITensorHandleFactory.hpp"
+#include <armnn/backends/ITensorHandleFactory.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/backendsCommon/ITensorHandleFactory.hpp b/src/backends/backendsCommon/ITensorHandleFactory.hpp
deleted file mode 100644
index 2e47423..0000000
--- a/src/backends/backendsCommon/ITensorHandleFactory.hpp
+++ /dev/null
@@ -1,72 +0,0 @@
-//
-// Copyright © 2017 Arm Ltd. All rights reserved.
-// SPDX-License-Identifier: MIT
-//
-
-#pragma once
-
-#include <armnn/IRuntime.hpp>
-#include <armnn/MemorySources.hpp>
-#include <armnn/Types.hpp>
-#include "ITensorHandle.hpp"
-
-#include <boost/core/ignore_unused.hpp>
-
-namespace armnn
-{
-
-class ITensorHandleFactory
-{
-public:
-    using FactoryId = std::string;
-    static const FactoryId LegacyFactoryId;   // Use the workload factory to create the tensor handle
-    static const FactoryId DeferredFactoryId; // Some TensorHandleFactory decisions are deferred to run-time
-
-    virtual ~ITensorHandleFactory() {}
-
-    virtual std::unique_ptr<ITensorHandle> CreateSubTensorHandle(ITensorHandle& parent,
-                                                                 TensorShape const& subTensorShape,
-                                                                 unsigned int const* subTensorOrigin) const = 0;
-
-    virtual std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo) const = 0;
-
-    virtual std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo,
-                                                              DataLayout dataLayout) const = 0;
-
-    // Utility Functions for backends which require TensorHandles to have unmanaged memory.
-    // These should be overloaded if required to facilitate direct import of input tensors
-    // and direct export of output tensors.
-    virtual std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo,
-                                                              const bool IsMemoryManaged) const
-    {
-        boost::ignore_unused(IsMemoryManaged);
-        return CreateTensorHandle(tensorInfo);
-    }
-
-    virtual std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo,
-                                                              DataLayout dataLayout,
-                                                              const bool IsMemoryManaged) const
-    {
-        boost::ignore_unused(IsMemoryManaged);
-        return CreateTensorHandle(tensorInfo, dataLayout);
-    }
-
-    virtual const FactoryId& GetId() const = 0;
-
-    virtual bool SupportsSubTensors() const = 0;
-
-    virtual bool SupportsMapUnmap() const final { return true; }
-
-    virtual MemorySourceFlags GetExportFlags() const { return 0; }
-    virtual MemorySourceFlags GetImportFlags() const { return 0; }
-};
-
-enum class EdgeStrategy
-{
-    Undefined,              /// No strategy has been defined. Used internally to verify integrity of optimizations.
-    DirectCompatibility,    /// Destination backend can work directly with tensors on source backend.
-    ExportToTarget,         /// Source backends tensor data can be exported to destination backend tensor without copy.
-    CopyToTarget            /// Copy contents from source backend tensor to destination backend tensor.
-};
-
-} //namespace armnn
diff --git a/src/backends/backendsCommon/LayerSupportBase.cpp b/src/backends/backendsCommon/LayerSupportBase.cpp
index 9ffad7b..55261b8 100644
--- a/src/backends/backendsCommon/LayerSupportBase.cpp
+++ b/src/backends/backendsCommon/LayerSupportBase.cpp
@@ -3,10 +3,10 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include "LayerSupportBase.hpp"
-
 #include <armnn/Exceptions.hpp>
 
+#include <backendsCommon/LayerSupportBase.hpp>
+
 #include <boost/core/ignore_unused.hpp>
 
 namespace
diff --git a/src/backends/backendsCommon/LayerSupportRules.hpp b/src/backends/backendsCommon/LayerSupportRules.hpp
index db3f38c..bf997db 100644
--- a/src/backends/backendsCommon/LayerSupportRules.hpp
+++ b/src/backends/backendsCommon/LayerSupportRules.hpp
@@ -11,9 +11,6 @@
 namespace armnn
 {
 
-namespace
-{
-
 inline armnn::Optional<armnn::DataType> GetBiasTypeFromWeightsType(armnn::Optional<armnn::DataType> weightsType)
 {
     if (!weightsType)
@@ -36,8 +33,6 @@
     return armnn::EmptyOptional();
 }
 
-} //namespace
-
 template<typename F>
 bool CheckSupportRule(F rule, Optional<std::string&> reasonIfUnsupported, const char* reason)
 {
diff --git a/src/backends/backendsCommon/MemCopyWorkload.cpp b/src/backends/backendsCommon/MemCopyWorkload.cpp
index c4e6f52..572c0fc 100644
--- a/src/backends/backendsCommon/MemCopyWorkload.cpp
+++ b/src/backends/backendsCommon/MemCopyWorkload.cpp
@@ -3,12 +3,11 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include "MemCopyWorkload.hpp"
-
-#include "CpuTensorHandle.hpp"
-
 #include <ResolveType.hpp>
 
+#include <backendsCommon/MemCopyWorkload.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
+
 #include <boost/cast.hpp>
 
 #include <cstring>
diff --git a/src/backends/backendsCommon/MemCopyWorkload.hpp b/src/backends/backendsCommon/MemCopyWorkload.hpp
index bcbba16..e7a20bf 100644
--- a/src/backends/backendsCommon/MemCopyWorkload.hpp
+++ b/src/backends/backendsCommon/MemCopyWorkload.hpp
@@ -4,10 +4,11 @@
 //
 #pragma once
 
-#include "CpuTensorHandleFwd.hpp"
 #include "Workload.hpp"
 #include "WorkloadUtils.hpp"
 
+#include <armnn/backends/CpuTensorHandleFwd.hpp>
+
 #include <utility>
 
 namespace armnn
diff --git a/src/backends/backendsCommon/MemImportWorkload.cpp b/src/backends/backendsCommon/MemImportWorkload.cpp
index ed00241..c059428 100644
--- a/src/backends/backendsCommon/MemImportWorkload.cpp
+++ b/src/backends/backendsCommon/MemImportWorkload.cpp
@@ -3,12 +3,11 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include "MemImportWorkload.hpp"
-
-#include "CpuTensorHandle.hpp"
-
 #include <ResolveType.hpp>
 
+#include <backendsCommon/MemImportWorkload.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
+
 #include <boost/cast.hpp>
 
 #include <cstring>
diff --git a/src/backends/backendsCommon/MemImportWorkload.hpp b/src/backends/backendsCommon/MemImportWorkload.hpp
index e16b99e..7a49739 100644
--- a/src/backends/backendsCommon/MemImportWorkload.hpp
+++ b/src/backends/backendsCommon/MemImportWorkload.hpp
@@ -4,10 +4,11 @@
 //
 #pragma once
 
-#include "CpuTensorHandleFwd.hpp"
 #include "Workload.hpp"
 #include "WorkloadUtils.hpp"
 
+#include <armnn/backends/CpuTensorHandleFwd.hpp>
+
 #include <utility>
 
 namespace armnn
diff --git a/src/backends/backendsCommon/MemSyncWorkload.cpp b/src/backends/backendsCommon/MemSyncWorkload.cpp
index a1d309c..1c850db 100644
--- a/src/backends/backendsCommon/MemSyncWorkload.cpp
+++ b/src/backends/backendsCommon/MemSyncWorkload.cpp
@@ -3,12 +3,11 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include "MemSyncWorkload.hpp"
-
-#include "CpuTensorHandle.hpp"
-
 #include <ResolveType.hpp>
 
+#include <backendsCommon/MemSyncWorkload.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
+
 #include <boost/cast.hpp>
 
 #include <cstring>
diff --git a/src/backends/backendsCommon/MemSyncWorkload.hpp b/src/backends/backendsCommon/MemSyncWorkload.hpp
index 3a167d2..4b9140f 100644
--- a/src/backends/backendsCommon/MemSyncWorkload.hpp
+++ b/src/backends/backendsCommon/MemSyncWorkload.hpp
@@ -4,10 +4,11 @@
 //
 #pragma once
 
-#include "CpuTensorHandleFwd.hpp"
 #include "Workload.hpp"
 #include "WorkloadUtils.hpp"
 
+#include <armnn/backends/CpuTensorHandleFwd.hpp>
+
 #include <utility>
 
 namespace armnn
diff --git a/src/backends/backendsCommon/OptimizationViews.cpp b/src/backends/backendsCommon/OptimizationViews.cpp
index 1190eea..eee2c67 100644
--- a/src/backends/backendsCommon/OptimizationViews.cpp
+++ b/src/backends/backendsCommon/OptimizationViews.cpp
@@ -3,8 +3,7 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include "OptimizationViews.hpp"
-
+#include <armnn/backends/OptimizationViews.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/backendsCommon/OptimizationViews.hpp b/src/backends/backendsCommon/OptimizationViews.hpp
deleted file mode 100644
index a63fdf1..0000000
--- a/src/backends/backendsCommon/OptimizationViews.hpp
+++ /dev/null
@@ -1,69 +0,0 @@
-//
-// Copyright © 2017 Arm Ltd. All rights reserved.
-// SPDX-License-Identifier: MIT
-//
-
-#pragma once
-#include <SubgraphView.hpp>
-
-namespace armnn
-{
-
-class OptimizationViews
-{
-public:
-    OptimizationViews() = default;
-    OptimizationViews(const OptimizationViews&) = delete;
-    OptimizationViews& operator=(const OptimizationViews&) = delete;
-    OptimizationViews(OptimizationViews&&) = default;
-    OptimizationViews& operator=(OptimizationViews&&) = default;
-
-    struct SubstitutionPair
-    {
-        /// Subgraph of Layers from the original graph which should be replaced
-        SubgraphView m_SubstitutableSubgraph;
-
-        /// A subgraph of new layers which will replace layers in m_SubstitutableSubgraph
-        SubgraphView m_ReplacementSubgraph;
-    };
-
-    using Subgraphs = std::vector<SubgraphView>;
-    using Substitutions = std::vector<SubstitutionPair>;
-
-    void AddSubstitution(SubstitutionPair&& substitution)
-    {
-        m_SuccesfulOptimizations.emplace_back(substitution);
-    }
-
-    void AddFailedSubgraph(SubgraphView&& subgraph)
-    {
-        m_FailedOptimizations.emplace_back(subgraph);
-    }
-
-    void AddUntouchedSubgraph(SubgraphView&& subgraph)
-    {
-        m_UntouchedSubgraphs.emplace_back(subgraph);
-    }
-
-    const Substitutions& GetSubstitutions() const { return m_SuccesfulOptimizations; }
-    const Subgraphs& GetFailedSubgraphs() const { return m_FailedOptimizations; }
-    const Subgraphs& GetUntouchedSubgraphs() const { return m_UntouchedSubgraphs; }
-
-    Substitutions& GetSubstitutions() { return m_SuccesfulOptimizations; }
-    Subgraphs& GetFailedSubgraphs() { return m_FailedOptimizations; }
-    Subgraphs& GetUntouchedSubgraphs() { return m_UntouchedSubgraphs; }
-
-    bool Validate(const SubgraphView& originalSubgraph) const;
-
-    Graph& GetGraph() { return m_Graph; }
-
-private:
-    Substitutions m_SuccesfulOptimizations;     ///< Proposed substitutions from successful optimizations
-    Subgraphs m_FailedOptimizations;            ///< Subgraphs from the original subgraph which cannot be supported
-    Subgraphs m_UntouchedSubgraphs;             ///< Subgraphs from the original subgraph which remain unmodified
-
-    /// Graph object used only as a container for any layer generated by the optimization process
-    Graph m_Graph;
-};
-
-} //namespace armnn
diff --git a/src/backends/backendsCommon/OutputHandler.cpp b/src/backends/backendsCommon/OutputHandler.cpp
deleted file mode 100644
index e3655b0..0000000
--- a/src/backends/backendsCommon/OutputHandler.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-//
-// Copyright © 2017 Arm Ltd. All rights reserved.
-// SPDX-License-Identifier: MIT
-//
-
-#include "OutputHandler.hpp"
-
-#include "ITensorHandle.hpp"
-#include "WorkloadDataCollector.hpp"
-
-#include <backendsCommon/WorkloadFactory.hpp>
-
-#include <boost/assert.hpp>
-
-namespace armnn
-{
-
-void OutputHandler::SetTensorInfo(const TensorInfo& tensorInfo)
-{
-    m_TensorInfo = tensorInfo;
-    m_bTensorInfoSet = true;
-}
-
-void OutputHandler::CreateTensorHandles(const IWorkloadFactory& factory, const bool IsMemoryManaged)
-{
-    m_TensorHandle = factory.CreateTensorHandle(m_TensorInfo, IsMemoryManaged);
-}
-
-void OutputHandler::CreateTensorHandles(const ITensorHandleFactory& factory, const bool IsMemoryManaged)
-{
-    m_TensorHandle = factory.CreateTensorHandle(m_TensorInfo, IsMemoryManaged);
-}
-
-void OutputHandler::CollectWorkloadOutputs(WorkloadDataCollector& dataCollector) const
-{
-    dataCollector.Push(m_TensorHandle.get(), m_TensorInfo);
-}
-
-} // namespace armnn
diff --git a/src/backends/backendsCommon/OutputHandler.hpp b/src/backends/backendsCommon/OutputHandler.hpp
deleted file mode 100644
index 81768c6..0000000
--- a/src/backends/backendsCommon/OutputHandler.hpp
+++ /dev/null
@@ -1,63 +0,0 @@
-//
-// Copyright © 2017 Arm Ltd. All rights reserved.
-// SPDX-License-Identifier: MIT
-//
-#pragma once
-
-#include "ITensorHandle.hpp"
-#include "ITensorHandleFactory.hpp"
-
-#include <armnn/Descriptors.hpp>
-#include <armnn/INetwork.hpp>
-#include <armnn/Tensor.hpp>
-#include <armnn/Types.hpp>
-
-#include <memory>
-#include <set>
-#include <string>
-#include <vector>
-
-#include <boost/assert.hpp>
-
-namespace armnn
-{
-
-class ITensorHandle;
-class IWorkloadFactory;
-class OutputSlot;
-class WorkloadDataCollector;
-
-class OutputHandler
-{
-public:
-    /// @brief - Sets the TensorInfo used by this output handler.
-    /// @param tensorInfo - TensorInfo for the output.
-    void SetTensorInfo(const TensorInfo& tensorInfo);
-
-    /// @brief - Creates tensor handles used by the intermediate tensors. Does not allocate memory.
-    /// @param factory - Factory to be used for handler creation.
-    void CreateTensorHandles(const IWorkloadFactory& factory, const bool IsMemoryManaged = true);
-    void CreateTensorHandles(const ITensorHandleFactory& factory, const bool IsMemoryManaged = true);
-
-    /// @brief - Gets the matching TensorInfo for the output.
-    /// @return - References to the output TensorInfo.
-    const TensorInfo& GetTensorInfo() const { return m_TensorInfo; }
-
-    /// @brief - Gets the allocated tensor memory.
-    /// @return - Pointer to the tensor memory.
-    ITensorHandle* GetData() const { return m_TensorHandle.get(); }
-
-    /// Fill the outputs for a given queue descriptor.
-    void CollectWorkloadOutputs(WorkloadDataCollector& dataCollector) const;
-
-    void SetData(std::unique_ptr<ITensorHandle> data) { m_TensorHandle = std::move(data); }
-
-    /// @brief Returns true if SetTensorInfo() has been called at least once on this.
-    bool IsTensorInfoSet() const { return m_bTensorInfoSet; }
-private:
-    std::unique_ptr<ITensorHandle> m_TensorHandle;
-    TensorInfo m_TensorInfo;
-    bool m_bTensorInfoSet = false;
-};
-
-} //namespace armnn
diff --git a/src/backends/backendsCommon/TensorHandleFactoryRegistry.cpp b/src/backends/backendsCommon/TensorHandleFactoryRegistry.cpp
index 4692b9f..0670461 100644
--- a/src/backends/backendsCommon/TensorHandleFactoryRegistry.cpp
+++ b/src/backends/backendsCommon/TensorHandleFactoryRegistry.cpp
@@ -3,9 +3,8 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include "TensorHandleFactoryRegistry.hpp"
-#include "IMemoryManager.hpp"
-
+#include <backendsCommon/TensorHandleFactoryRegistry.hpp>
+#include <armnn/backends/IMemoryManager.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/backendsCommon/TensorHandleFactoryRegistry.hpp b/src/backends/backendsCommon/TensorHandleFactoryRegistry.hpp
index 9e02985..f926478 100644
--- a/src/backends/backendsCommon/TensorHandleFactoryRegistry.hpp
+++ b/src/backends/backendsCommon/TensorHandleFactoryRegistry.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include "ITensorHandleFactory.hpp"
+#include <armnn/backends/ITensorHandleFactory.hpp>
 
 #include <memory>
 #include <vector>
diff --git a/src/backends/backendsCommon/WorkloadData.cpp b/src/backends/backendsCommon/WorkloadData.cpp
index 251d3b9..56dff9b 100644
--- a/src/backends/backendsCommon/WorkloadData.cpp
+++ b/src/backends/backendsCommon/WorkloadData.cpp
@@ -3,10 +3,8 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include "WorkloadData.hpp"
-
-#include "CpuTensorHandle.hpp"
-
+#include <backendsCommon/WorkloadData.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
 #include <armnnUtils/DataLayoutIndexed.hpp>
 #include <armnnUtils/TensorUtils.hpp>
 
diff --git a/src/backends/backendsCommon/WorkloadData.hpp b/src/backends/backendsCommon/WorkloadData.hpp
index 6a96a4a..43be3cd 100644
--- a/src/backends/backendsCommon/WorkloadData.hpp
+++ b/src/backends/backendsCommon/WorkloadData.hpp
@@ -4,7 +4,8 @@
 //
 #pragma once
 
-#include "CpuTensorHandleFwd.hpp"
+#include <armnn/backends/CpuTensorHandleFwd.hpp>
+#include <armnn/backends/ITensorHandle.hpp>
 
 #include <InternalTypes.hpp>
 
@@ -14,7 +15,6 @@
 #include <armnn/Types.hpp>
 #include <armnn/Tensor.hpp>
 
-#include <backendsCommon/OutputHandler.hpp>
 #include <backendsCommon/WorkloadInfo.hpp>
 
 namespace armnn
diff --git a/src/backends/backendsCommon/WorkloadFactory.cpp b/src/backends/backendsCommon/WorkloadFactory.cpp
index 9901dcb..1d4ed7e 100644
--- a/src/backends/backendsCommon/WorkloadFactory.cpp
+++ b/src/backends/backendsCommon/WorkloadFactory.cpp
@@ -3,9 +3,6 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include "CpuTensorHandle.hpp"
-#include "WorkloadFactory.hpp"
-
 #include <Layer.hpp>
 #include <LayersFwd.hpp>
 
@@ -15,7 +12,10 @@
 #include <armnn/BackendRegistry.hpp>
 
 #include <backendsCommon/WorkloadFactory.hpp>
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <backendsCommon/WorkloadFactory.hpp>
+
 #include <backendsCommon/test/WorkloadTestUtils.hpp>
 
 #include <boost/cast.hpp>
diff --git a/src/backends/backendsCommon/WorkloadFactory.hpp b/src/backends/backendsCommon/WorkloadFactory.hpp
index 819b8c7..6e6478f 100644
--- a/src/backends/backendsCommon/WorkloadFactory.hpp
+++ b/src/backends/backendsCommon/WorkloadFactory.hpp
@@ -6,8 +6,8 @@
 
 #include <armnn/TensorFwd.hpp>
 #include <armnn/Optional.hpp>
+#include <armnn/backends/ITensorHandle.hpp>
 
-#include <backendsCommon/OutputHandler.hpp>
 #include <backendsCommon/Workload.hpp>
 
 #include <memory>
diff --git a/src/backends/backendsCommon/WorkloadUtils.cpp b/src/backends/backendsCommon/WorkloadUtils.cpp
index 73946c6..0cf8ad1 100644
--- a/src/backends/backendsCommon/WorkloadUtils.cpp
+++ b/src/backends/backendsCommon/WorkloadUtils.cpp
@@ -3,7 +3,7 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include "WorkloadUtils.hpp"
+#include <backendsCommon/WorkloadUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/backendsCommon/WorkloadUtils.hpp b/src/backends/backendsCommon/WorkloadUtils.hpp
index 6fe8707..92ef2d2 100644
--- a/src/backends/backendsCommon/WorkloadUtils.hpp
+++ b/src/backends/backendsCommon/WorkloadUtils.hpp
@@ -6,7 +6,8 @@
 #pragma once
 
 #include "CpuTensorHandle.hpp"
-#include "ITensorHandle.hpp"
+
+#include <armnn/backends/ITensorHandle.hpp>
 
 #include <armnn/Tensor.hpp>
 
diff --git a/src/backends/backendsCommon/common.mk b/src/backends/backendsCommon/common.mk
index 5fc24c3..4461cd6 100644
--- a/src/backends/backendsCommon/common.mk
+++ b/src/backends/backendsCommon/common.mk
@@ -18,7 +18,6 @@
     MemImportWorkload.cpp \
     MemSyncWorkload.cpp \
     OptimizationViews.cpp \
-    OutputHandler.cpp \
     TensorHandleFactoryRegistry.cpp \
     WorkloadData.cpp \
     WorkloadFactory.cpp \
diff --git a/src/backends/backendsCommon/test/BackendRegistryTests.cpp b/src/backends/backendsCommon/test/BackendRegistryTests.cpp
index e1ab7ec..172c0a9 100644
--- a/src/backends/backendsCommon/test/BackendRegistryTests.cpp
+++ b/src/backends/backendsCommon/test/BackendRegistryTests.cpp
@@ -6,7 +6,7 @@
 #include <armnn/Types.hpp>
 #include <armnn/BackendRegistry.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 
 #include <boost/test/unit_test.hpp>
 
diff --git a/src/backends/backendsCommon/test/CommonTestUtils.cpp b/src/backends/backendsCommon/test/CommonTestUtils.cpp
index 80512e2..287c71e 100644
--- a/src/backends/backendsCommon/test/CommonTestUtils.cpp
+++ b/src/backends/backendsCommon/test/CommonTestUtils.cpp
@@ -5,7 +5,7 @@
 
 #include "CommonTestUtils.hpp"
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 
 using namespace armnn;
 
diff --git a/src/backends/backendsCommon/test/DynamicBackendTests.hpp b/src/backends/backendsCommon/test/DynamicBackendTests.hpp
index 2615bdc..561578e 100644
--- a/src/backends/backendsCommon/test/DynamicBackendTests.hpp
+++ b/src/backends/backendsCommon/test/DynamicBackendTests.hpp
@@ -5,13 +5,14 @@
 
 #pragma once
 
-#include <backendsCommon/DynamicBackend.hpp>
+#include <armnn/BackendRegistry.hpp>
+#include <armnn/ILayerSupport.hpp>
+
+#include <armnn/backends/DynamicBackend.hpp>
+
 #include <backendsCommon/DynamicBackendUtils.hpp>
 #include <backendsCommon/CpuTensorHandle.hpp>
 
-#include <armnn/ILayerSupport.hpp>
-#include <armnn/BackendRegistry.hpp>
-
 #include <reference/workloads/RefConvolution2dWorkload.hpp>
 
 #include <Runtime.hpp>
diff --git a/src/backends/backendsCommon/test/MockBackend.cpp b/src/backends/backendsCommon/test/MockBackend.cpp
index 4fb692c..c5a4ed9 100644
--- a/src/backends/backendsCommon/test/MockBackend.cpp
+++ b/src/backends/backendsCommon/test/MockBackend.cpp
@@ -8,8 +8,8 @@
 
 #include <armnn/BackendRegistry.hpp>
 
-#include <backendsCommon/IBackendContext.hpp>
-#include <backendsCommon/IMemoryManager.hpp>
+#include <armnn/backends/IBackendContext.hpp>
+#include <armnn/backends/IMemoryManager.hpp>
 
 #include <Optimizer.hpp>
 #include <SubgraphViewSelector.hpp>
diff --git a/src/backends/backendsCommon/test/MockBackend.hpp b/src/backends/backendsCommon/test/MockBackend.hpp
index 88c4785..437f23d 100644
--- a/src/backends/backendsCommon/test/MockBackend.hpp
+++ b/src/backends/backendsCommon/test/MockBackend.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include <backendsCommon/IBackendInternal.hpp>
-#include <backendsCommon/OptimizationViews.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
+#include <armnn/backends/OptimizationViews.hpp>
 #include <LayerSupportCommon.hpp>
 #include <backendsCommon/LayerSupportBase.hpp>
 
diff --git a/src/backends/backendsCommon/test/OptimizationViewsTests.cpp b/src/backends/backendsCommon/test/OptimizationViewsTests.cpp
index 67c3e2c..5474f5d 100644
--- a/src/backends/backendsCommon/test/OptimizationViewsTests.cpp
+++ b/src/backends/backendsCommon/test/OptimizationViewsTests.cpp
@@ -8,7 +8,7 @@
 #include <Graph.hpp>
 #include <SubgraphView.hpp>
 #include <SubgraphViewSelector.hpp>
-#include <backendsCommon/OptimizationViews.hpp>
+#include <armnn/backends/OptimizationViews.hpp>
 #include <Network.hpp>
 
 #include "CommonTestUtils.hpp"
diff --git a/src/backends/backendsCommon/test/TensorCopyUtils.hpp b/src/backends/backendsCommon/test/TensorCopyUtils.hpp
index 36f6369..d3c8d90 100644
--- a/src/backends/backendsCommon/test/TensorCopyUtils.hpp
+++ b/src/backends/backendsCommon/test/TensorCopyUtils.hpp
@@ -6,7 +6,7 @@
 
 #include <armnn/Tensor.hpp>
 
-#include <backendsCommon/ITensorHandle.hpp>
+#include <armnn/backends/ITensorHandle.hpp>
 
 void CopyDataToITensorHandle(armnn::ITensorHandle* tensorHandle, const void* memory);
 
diff --git a/src/backends/backendsCommon/test/TestDynamicBackend.cpp b/src/backends/backendsCommon/test/TestDynamicBackend.cpp
index 7230702..a53f169 100644
--- a/src/backends/backendsCommon/test/TestDynamicBackend.cpp
+++ b/src/backends/backendsCommon/test/TestDynamicBackend.cpp
@@ -5,7 +5,7 @@
 
 #include "TestDynamicBackend.hpp"
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 
 constexpr const char* TestDynamicBackendId()
 {
diff --git a/src/backends/backendsCommon/test/WorkloadTestUtils.hpp b/src/backends/backendsCommon/test/WorkloadTestUtils.hpp
index 2f3e786..552eab2 100644
--- a/src/backends/backendsCommon/test/WorkloadTestUtils.hpp
+++ b/src/backends/backendsCommon/test/WorkloadTestUtils.hpp
@@ -6,8 +6,8 @@
 
 #include <armnn/Tensor.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
-#include <backendsCommon/IMemoryManager.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
+#include <armnn/backends/IMemoryManager.hpp>
 #include <backendsCommon/Workload.hpp>
 #include <backendsCommon/WorkloadInfo.hpp>
 
diff --git a/src/backends/backendsCommon/test/layerTests/AbsTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/AbsTestImpl.hpp
index 88bf1ea..d0f775e 100644
--- a/src/backends/backendsCommon/test/layerTests/AbsTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/AbsTestImpl.hpp
@@ -9,7 +9,7 @@
 
 #include <ResolveType.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
diff --git a/src/backends/backendsCommon/test/layerTests/ActivationTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/ActivationTestImpl.hpp
index 2d6362f..2251ceb 100644
--- a/src/backends/backendsCommon/test/layerTests/ActivationTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/ActivationTestImpl.hpp
@@ -7,7 +7,7 @@
 
 #include "LayerTestResult.hpp"
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 //
diff --git a/src/backends/backendsCommon/test/layerTests/AdditionTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/AdditionTestImpl.hpp
index 60ef975..eb65c54 100644
--- a/src/backends/backendsCommon/test/layerTests/AdditionTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/AdditionTestImpl.hpp
@@ -7,7 +7,7 @@
 
 #include "LayerTestResult.hpp"
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 LayerTestResult<float, 4> AdditionTest(
diff --git a/src/backends/backendsCommon/test/layerTests/ArgMinMaxTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/ArgMinMaxTestImpl.hpp
index b3bd7db..24deba7 100644
--- a/src/backends/backendsCommon/test/layerTests/ArgMinMaxTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/ArgMinMaxTestImpl.hpp
@@ -9,7 +9,7 @@
 
 #include <ResolveType.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
diff --git a/src/backends/backendsCommon/test/layerTests/BatchNormalizationTestImpl.cpp b/src/backends/backendsCommon/test/layerTests/BatchNormalizationTestImpl.cpp
index a92ff03..8471456 100644
--- a/src/backends/backendsCommon/test/layerTests/BatchNormalizationTestImpl.cpp
+++ b/src/backends/backendsCommon/test/layerTests/BatchNormalizationTestImpl.cpp
@@ -13,7 +13,7 @@
 #include <armnnUtils/DataLayoutIndexed.hpp>
 
 #include <backendsCommon/CpuTensorHandle.hpp>
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 #include <backendsCommon/test/TensorCopyUtils.hpp>
diff --git a/src/backends/backendsCommon/test/layerTests/BatchNormalizationTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/BatchNormalizationTestImpl.hpp
index a2dacde..eaffb82 100644
--- a/src/backends/backendsCommon/test/layerTests/BatchNormalizationTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/BatchNormalizationTestImpl.hpp
@@ -9,7 +9,7 @@
 
 #include <Half.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 LayerTestResult<float, 4> BatchNormFloat32Test(
diff --git a/src/backends/backendsCommon/test/layerTests/BatchToSpaceNdTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/BatchToSpaceNdTestImpl.hpp
index 67e7cc5..79462d1 100644
--- a/src/backends/backendsCommon/test/layerTests/BatchToSpaceNdTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/BatchToSpaceNdTestImpl.hpp
@@ -11,7 +11,7 @@
 
 #include <armnn/ArmNN.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 #include <backendsCommon/test/DataTypeUtils.hpp>
diff --git a/src/backends/backendsCommon/test/layerTests/ComparisonTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/ComparisonTestImpl.hpp
index 84928fa..d53c623 100644
--- a/src/backends/backendsCommon/test/layerTests/ComparisonTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/ComparisonTestImpl.hpp
@@ -7,7 +7,7 @@
 
 #include "LayerTestResult.hpp"
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 // Equal
diff --git a/src/backends/backendsCommon/test/layerTests/ConcatTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/ConcatTestImpl.hpp
index 223bf19..4ce9d29 100644
--- a/src/backends/backendsCommon/test/layerTests/ConcatTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/ConcatTestImpl.hpp
@@ -10,7 +10,7 @@
 #include <ResolveType.hpp>
 #include <Half.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
diff --git a/src/backends/backendsCommon/test/layerTests/ConstantTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/ConstantTestImpl.hpp
index fa3e228..932965a 100644
--- a/src/backends/backendsCommon/test/layerTests/ConstantTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/ConstantTestImpl.hpp
@@ -7,7 +7,7 @@
 
 #include "LayerTestResult.hpp"
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 LayerTestResult<float, 4> ConstantTest(
diff --git a/src/backends/backendsCommon/test/layerTests/Conv2dTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/Conv2dTestImpl.hpp
index 69bfa97..6261bdf 100644
--- a/src/backends/backendsCommon/test/layerTests/Conv2dTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/Conv2dTestImpl.hpp
@@ -11,7 +11,7 @@
 
 #include <armnn/Types.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 //
diff --git a/src/backends/backendsCommon/test/layerTests/ConvertFp16ToFp32TestImpl.hpp b/src/backends/backendsCommon/test/layerTests/ConvertFp16ToFp32TestImpl.hpp
index 8e77e26..f0f1a4b 100644
--- a/src/backends/backendsCommon/test/layerTests/ConvertFp16ToFp32TestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/ConvertFp16ToFp32TestImpl.hpp
@@ -7,7 +7,7 @@
 
 #include "LayerTestResult.hpp"
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 LayerTestResult<float, 4> SimpleConvertFp16ToFp32Test(
diff --git a/src/backends/backendsCommon/test/layerTests/ConvertFp32ToFp16TestImpl.hpp b/src/backends/backendsCommon/test/layerTests/ConvertFp32ToFp16TestImpl.hpp
index bb0fce2..2637247 100644
--- a/src/backends/backendsCommon/test/layerTests/ConvertFp32ToFp16TestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/ConvertFp32ToFp16TestImpl.hpp
@@ -9,7 +9,7 @@
 
 #include <Half.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 LayerTestResult<armnn::Half, 4> SimpleConvertFp32ToFp16Test(
diff --git a/src/backends/backendsCommon/test/layerTests/DebugTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/DebugTestImpl.hpp
index e355279..7582663 100644
--- a/src/backends/backendsCommon/test/layerTests/DebugTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/DebugTestImpl.hpp
@@ -7,7 +7,7 @@
 
 #include "LayerTestResult.hpp"
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 LayerTestResult<float, 4> Debug4dFloat32Test(
diff --git a/src/backends/backendsCommon/test/layerTests/DepthToSpaceTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/DepthToSpaceTestImpl.hpp
index 4dbcd26..18797c6 100644
--- a/src/backends/backendsCommon/test/layerTests/DepthToSpaceTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/DepthToSpaceTestImpl.hpp
@@ -8,7 +8,7 @@
 
 #include <ResolveType.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
diff --git a/src/backends/backendsCommon/test/layerTests/DequantizeTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/DequantizeTestImpl.hpp
index 4d83780..008fea8 100644
--- a/src/backends/backendsCommon/test/layerTests/DequantizeTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/DequantizeTestImpl.hpp
@@ -7,7 +7,7 @@
 
 #include "LayerTestResult.hpp"
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 #include <Half.hpp>
diff --git a/src/backends/backendsCommon/test/layerTests/DetectionPostProcessTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/DetectionPostProcessTestImpl.hpp
index bcb5abf..b8a241d 100644
--- a/src/backends/backendsCommon/test/layerTests/DetectionPostProcessTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/DetectionPostProcessTestImpl.hpp
@@ -9,7 +9,7 @@
 #include <armnn/Types.hpp>
 
 #include <backendsCommon/CpuTensorHandle.hpp>
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 #include <backendsCommon/test/TensorCopyUtils.hpp>
diff --git a/src/backends/backendsCommon/test/layerTests/DivisionTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/DivisionTestImpl.hpp
index 0446f8b..5e8c502 100644
--- a/src/backends/backendsCommon/test/layerTests/DivisionTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/DivisionTestImpl.hpp
@@ -9,7 +9,7 @@
 
 #include <Half.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 LayerTestResult<float, 4> DivisionByZeroTest(
diff --git a/src/backends/backendsCommon/test/layerTests/ElementwiseTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/ElementwiseTestImpl.hpp
index 1bb1348..86c5606 100644
--- a/src/backends/backendsCommon/test/layerTests/ElementwiseTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/ElementwiseTestImpl.hpp
@@ -11,7 +11,7 @@
 
 #include <ResolveType.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/Workload.hpp>
 #include <backendsCommon/WorkloadData.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
diff --git a/src/backends/backendsCommon/test/layerTests/FakeQuantizationTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/FakeQuantizationTestImpl.hpp
index 506e968..b317d40 100644
--- a/src/backends/backendsCommon/test/layerTests/FakeQuantizationTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/FakeQuantizationTestImpl.hpp
@@ -7,7 +7,7 @@
 
 #include "LayerTestResult.hpp"
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 LayerTestResult<float, 2> FakeQuantizationTest(
diff --git a/src/backends/backendsCommon/test/layerTests/FloorTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/FloorTestImpl.hpp
index e5baf5d..257756f 100644
--- a/src/backends/backendsCommon/test/layerTests/FloorTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/FloorTestImpl.hpp
@@ -9,7 +9,7 @@
 
 #include <ResolveType.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
diff --git a/src/backends/backendsCommon/test/layerTests/FullyConnectedTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/FullyConnectedTestImpl.hpp
index 8a2463c..d181557 100644
--- a/src/backends/backendsCommon/test/layerTests/FullyConnectedTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/FullyConnectedTestImpl.hpp
@@ -9,7 +9,7 @@
 
 #include <ResolveType.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
diff --git a/src/backends/backendsCommon/test/layerTests/GatherTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/GatherTestImpl.hpp
index 33df179..b6a2dd1 100644
--- a/src/backends/backendsCommon/test/layerTests/GatherTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/GatherTestImpl.hpp
@@ -9,7 +9,7 @@
 
 #include <Half.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 LayerTestResult<float, 1> Gather1dParamsFloat32Test(
diff --git a/src/backends/backendsCommon/test/layerTests/InstanceNormalizationTestImpl.cpp b/src/backends/backendsCommon/test/layerTests/InstanceNormalizationTestImpl.cpp
index d25fcea..c734a2d 100644
--- a/src/backends/backendsCommon/test/layerTests/InstanceNormalizationTestImpl.cpp
+++ b/src/backends/backendsCommon/test/layerTests/InstanceNormalizationTestImpl.cpp
@@ -11,7 +11,7 @@
 #include <armnn/ArmNN.hpp>
 
 #include <backendsCommon/CpuTensorHandle.hpp>
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 #include <backendsCommon/test/DataLayoutUtils.hpp>
diff --git a/src/backends/backendsCommon/test/layerTests/InstanceNormalizationTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/InstanceNormalizationTestImpl.hpp
index 4030bee..b79ba5f 100644
--- a/src/backends/backendsCommon/test/layerTests/InstanceNormalizationTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/InstanceNormalizationTestImpl.hpp
@@ -11,7 +11,7 @@
 
 #include <armnn/Types.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 LayerTestResult<float, 4> InstanceNormFloat32Test(
diff --git a/src/backends/backendsCommon/test/layerTests/L2NormalizationTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/L2NormalizationTestImpl.hpp
index 78c2ac1..b50fdcd 100644
--- a/src/backends/backendsCommon/test/layerTests/L2NormalizationTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/L2NormalizationTestImpl.hpp
@@ -9,7 +9,7 @@
 
 #include <armnn/Types.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 LayerTestResult<float, 4> L2NormalizationDefaultEpsilonTest(
diff --git a/src/backends/backendsCommon/test/layerTests/LogSoftmaxTestImpl.cpp b/src/backends/backendsCommon/test/layerTests/LogSoftmaxTestImpl.cpp
index 4c340c8..3a2f39a 100644
--- a/src/backends/backendsCommon/test/layerTests/LogSoftmaxTestImpl.cpp
+++ b/src/backends/backendsCommon/test/layerTests/LogSoftmaxTestImpl.cpp
@@ -12,7 +12,7 @@
 #include <armnn/ArmNN.hpp>
 
 #include <backendsCommon/CpuTensorHandle.hpp>
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 #include <backendsCommon/test/TensorCopyUtils.hpp>
diff --git a/src/backends/backendsCommon/test/layerTests/LogSoftmaxTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/LogSoftmaxTestImpl.hpp
index 18a14cc..af18d69 100644
--- a/src/backends/backendsCommon/test/layerTests/LogSoftmaxTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/LogSoftmaxTestImpl.hpp
@@ -9,7 +9,7 @@
 
 #include <ResolveType.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
diff --git a/src/backends/backendsCommon/test/layerTests/LstmTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/LstmTestImpl.hpp
index 2779009..dad1760 100644
--- a/src/backends/backendsCommon/test/layerTests/LstmTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/LstmTestImpl.hpp
@@ -7,7 +7,7 @@
 
 #include "LayerTestResult.hpp"
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 #if defined(ARMNNREF_ENABLED)
diff --git a/src/backends/backendsCommon/test/layerTests/MaximumTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/MaximumTestImpl.hpp
index 0c7ab47..005d586 100644
--- a/src/backends/backendsCommon/test/layerTests/MaximumTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/MaximumTestImpl.hpp
@@ -9,7 +9,7 @@
 
 #include <Half.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 LayerTestResult<float, 4> MaximumSimpleTest(armnn::IWorkloadFactory& workloadFactory,
diff --git a/src/backends/backendsCommon/test/layerTests/MeanTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/MeanTestImpl.hpp
index d0bdfa4..bab7337 100644
--- a/src/backends/backendsCommon/test/layerTests/MeanTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/MeanTestImpl.hpp
@@ -9,7 +9,7 @@
 
 #include <ResolveType.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 namespace
diff --git a/src/backends/backendsCommon/test/layerTests/MinimumTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/MinimumTestImpl.hpp
index 7a33e5e..b1e38dc 100644
--- a/src/backends/backendsCommon/test/layerTests/MinimumTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/MinimumTestImpl.hpp
@@ -9,7 +9,7 @@
 
 #include <Half.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 LayerTestResult<float, 4> MinimumBroadcast1ElementTest1(
diff --git a/src/backends/backendsCommon/test/layerTests/MultiplicationTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/MultiplicationTestImpl.hpp
index c566751..3e2f2ff 100644
--- a/src/backends/backendsCommon/test/layerTests/MultiplicationTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/MultiplicationTestImpl.hpp
@@ -7,7 +7,7 @@
 
 #include "LayerTestResult.hpp"
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 LayerTestResult<float, 4> MultiplicationTest(
diff --git a/src/backends/backendsCommon/test/layerTests/NormalizationTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/NormalizationTestImpl.hpp
index be66f6c..4da1ad2 100644
--- a/src/backends/backendsCommon/test/layerTests/NormalizationTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/NormalizationTestImpl.hpp
@@ -9,7 +9,7 @@
 
 #include <armnn/Types.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 LayerTestResult<float, 4> SimpleNormalizationAcrossTest(
diff --git a/src/backends/backendsCommon/test/layerTests/PadTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/PadTestImpl.hpp
index 156b861..bc51488 100644
--- a/src/backends/backendsCommon/test/layerTests/PadTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/PadTestImpl.hpp
@@ -11,7 +11,7 @@
 
 #include <armnn/Types.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
diff --git a/src/backends/backendsCommon/test/layerTests/PermuteTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/PermuteTestImpl.hpp
index fe0d076..c5039a1 100644
--- a/src/backends/backendsCommon/test/layerTests/PermuteTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/PermuteTestImpl.hpp
@@ -9,7 +9,7 @@
 
 #include <armnn/ArmNN.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 #include <backendsCommon/test/WorkloadTestUtils.hpp>
diff --git a/src/backends/backendsCommon/test/layerTests/Pooling2dTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/Pooling2dTestImpl.hpp
index 6f7a595..2f0cde2 100644
--- a/src/backends/backendsCommon/test/layerTests/Pooling2dTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/Pooling2dTestImpl.hpp
@@ -9,7 +9,7 @@
 
 #include <armnn/Types.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 LayerTestResult<float,   4> SimpleMaxPooling2dSize2x2Stride2x2Test(
diff --git a/src/backends/backendsCommon/test/layerTests/PreluTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/PreluTestImpl.hpp
index dc9b908..99f3cd1 100644
--- a/src/backends/backendsCommon/test/layerTests/PreluTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/PreluTestImpl.hpp
@@ -12,7 +12,7 @@
 
 #include <armnn/ArmNN.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 #include <backendsCommon/test/TensorCopyUtils.hpp>
diff --git a/src/backends/backendsCommon/test/layerTests/QuantizeTestImpl.cpp b/src/backends/backendsCommon/test/layerTests/QuantizeTestImpl.cpp
index 7d5d73b..94d7224 100644
--- a/src/backends/backendsCommon/test/layerTests/QuantizeTestImpl.cpp
+++ b/src/backends/backendsCommon/test/layerTests/QuantizeTestImpl.cpp
@@ -9,7 +9,7 @@
 
 #include <armnn/ArmNN.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 #include <backendsCommon/test/TensorCopyUtils.hpp>
diff --git a/src/backends/backendsCommon/test/layerTests/QuantizeTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/QuantizeTestImpl.hpp
index bac438e..a2e1a49 100644
--- a/src/backends/backendsCommon/test/layerTests/QuantizeTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/QuantizeTestImpl.hpp
@@ -7,7 +7,7 @@
 
 #include "LayerTestResult.hpp"
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 LayerTestResult<uint8_t, 4> QuantizeSimpleUint8Test(
diff --git a/src/backends/backendsCommon/test/layerTests/ReshapeTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/ReshapeTestImpl.hpp
index fb0bb33..2bc1d2c 100644
--- a/src/backends/backendsCommon/test/layerTests/ReshapeTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/ReshapeTestImpl.hpp
@@ -9,7 +9,7 @@
 
 #include <ResolveType.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
diff --git a/src/backends/backendsCommon/test/layerTests/ResizeTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/ResizeTestImpl.hpp
index 4fe4b73..538a64c 100644
--- a/src/backends/backendsCommon/test/layerTests/ResizeTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/ResizeTestImpl.hpp
@@ -11,7 +11,7 @@
 
 #include <armnn/Types.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 // Bilinear
diff --git a/src/backends/backendsCommon/test/layerTests/RsqrtTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/RsqrtTestImpl.hpp
index e5a5340..dd7ab66 100644
--- a/src/backends/backendsCommon/test/layerTests/RsqrtTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/RsqrtTestImpl.hpp
@@ -9,7 +9,7 @@
 
 #include <ResolveType.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
diff --git a/src/backends/backendsCommon/test/layerTests/SliceTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/SliceTestImpl.hpp
index 59458ed..d308268 100644
--- a/src/backends/backendsCommon/test/layerTests/SliceTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/SliceTestImpl.hpp
@@ -7,7 +7,7 @@
 
 #include "LayerTestResult.hpp"
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 // Float32 tests
diff --git a/src/backends/backendsCommon/test/layerTests/SoftmaxTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/SoftmaxTestImpl.hpp
index 2e5e244..e0dfd10 100644
--- a/src/backends/backendsCommon/test/layerTests/SoftmaxTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/SoftmaxTestImpl.hpp
@@ -9,7 +9,7 @@
 
 #include <Half.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 LayerTestResult<float, 2> SimpleSoftmaxTest(
diff --git a/src/backends/backendsCommon/test/layerTests/SpaceToBatchNdTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/SpaceToBatchNdTestImpl.hpp
index cb4d8e3..984b949 100644
--- a/src/backends/backendsCommon/test/layerTests/SpaceToBatchNdTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/SpaceToBatchNdTestImpl.hpp
@@ -8,7 +8,7 @@
 
 #include <Half.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 LayerTestResult<float, 4> SpaceToBatchNdSimpleFloat32Test(
diff --git a/src/backends/backendsCommon/test/layerTests/SpaceToDepthTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/SpaceToDepthTestImpl.hpp
index 80ad542..c2f70e9 100644
--- a/src/backends/backendsCommon/test/layerTests/SpaceToDepthTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/SpaceToDepthTestImpl.hpp
@@ -8,7 +8,7 @@
 
 #include <Half.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 LayerTestResult<uint8_t, 4> SpaceToDepthNchwAsymmQ8Test(
diff --git a/src/backends/backendsCommon/test/layerTests/SplitterTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/SplitterTestImpl.hpp
index 00b5f7d..b9b3b66 100644
--- a/src/backends/backendsCommon/test/layerTests/SplitterTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/SplitterTestImpl.hpp
@@ -7,7 +7,7 @@
 
 #include <Half.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 #include <vector>
diff --git a/src/backends/backendsCommon/test/layerTests/StackTestImpl.cpp b/src/backends/backendsCommon/test/layerTests/StackTestImpl.cpp
index 80058c6..db9038e 100644
--- a/src/backends/backendsCommon/test/layerTests/StackTestImpl.cpp
+++ b/src/backends/backendsCommon/test/layerTests/StackTestImpl.cpp
@@ -10,7 +10,7 @@
 
 #include <armnn/ArmNN.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 #include <backendsCommon/test/TensorCopyUtils.hpp>
diff --git a/src/backends/backendsCommon/test/layerTests/StackTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/StackTestImpl.hpp
index b091dd4..90327dd 100644
--- a/src/backends/backendsCommon/test/layerTests/StackTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/StackTestImpl.hpp
@@ -9,7 +9,7 @@
 
 #include <Half.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 LayerTestResult<float, 4> StackAxis0Float32Test(
diff --git a/src/backends/backendsCommon/test/layerTests/StridedSliceTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/StridedSliceTestImpl.hpp
index f71ce2b..b3b1346 100644
--- a/src/backends/backendsCommon/test/layerTests/StridedSliceTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/StridedSliceTestImpl.hpp
@@ -7,7 +7,7 @@
 
 #include "LayerTestResult.hpp"
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 LayerTestResult<float, 4> StridedSlice4dFloat32Test(
diff --git a/src/backends/backendsCommon/test/layerTests/SubtractionTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/SubtractionTestImpl.hpp
index e154a7b..327aa90 100644
--- a/src/backends/backendsCommon/test/layerTests/SubtractionTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/SubtractionTestImpl.hpp
@@ -9,7 +9,7 @@
 
 #include <Half.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 LayerTestResult<float, 4> SubtractionTest(
diff --git a/src/backends/backendsCommon/test/layerTests/TransposeConvolution2dTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/TransposeConvolution2dTestImpl.hpp
index 438828f..76e66d7 100644
--- a/src/backends/backendsCommon/test/layerTests/TransposeConvolution2dTestImpl.hpp
+++ b/src/backends/backendsCommon/test/layerTests/TransposeConvolution2dTestImpl.hpp
@@ -9,7 +9,7 @@
 
 #include <ResolveType.hpp>
 
-#include <backendsCommon/IBackendInternal.hpp>
+#include <armnn/backends/IBackendInternal.hpp>
 #include <backendsCommon/WorkloadFactory.hpp>
 
 template<armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType<ArmnnType>>