aboutsummaryrefslogtreecommitdiff
path: root/src/dynamic/sample/SampleDynamicWorkloadFactory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/dynamic/sample/SampleDynamicWorkloadFactory.cpp')
-rw-r--r--src/dynamic/sample/SampleDynamicWorkloadFactory.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/dynamic/sample/SampleDynamicWorkloadFactory.cpp b/src/dynamic/sample/SampleDynamicWorkloadFactory.cpp
index 8796716c98..d4be0fcb3e 100644
--- a/src/dynamic/sample/SampleDynamicWorkloadFactory.cpp
+++ b/src/dynamic/sample/SampleDynamicWorkloadFactory.cpp
@@ -5,6 +5,7 @@
#include <armnn/backends/MemCopyWorkload.hpp>
#include <armnn/backends/TensorHandle.hpp>
+#include <armnn/utility/PolymorphicDowncast.hpp>
#include "SampleDynamicAdditionWorkload.hpp"
#include "SampleDynamicBackend.hpp"
@@ -77,4 +78,33 @@ std::unique_ptr<armnn::IWorkload> SampleDynamicWorkloadFactory::CreateOutput(
return std::make_unique<armnn::CopyMemGenericWorkload>(descriptor, info);
}
+std::unique_ptr<armnn::IWorkload> SampleDynamicWorkloadFactory::CreateWorkload(
+ armnn::LayerType type,
+ const armnn::QueueDescriptor& descriptor,
+ const armnn::WorkloadInfo& info) const
+{
+ using namespace armnn;
+ using namespace sdb;
+ switch(type)
+ {
+ case LayerType::Addition:
+ {
+ auto additionQueueDescriptor = PolymorphicDowncast<const AdditionQueueDescriptor*>(&descriptor);
+ return std::make_unique<SampleDynamicAdditionWorkload>(*additionQueueDescriptor, info);
+ }
+ case LayerType::Input:
+ {
+ auto inputQueueDescriptor = PolymorphicDowncast<const InputQueueDescriptor*>(&descriptor);
+ return std::make_unique<CopyMemGenericWorkload>(*inputQueueDescriptor, info);
+ }
+ case LayerType::Output:
+ {
+ auto outputQueueDescriptor = PolymorphicDowncast<const OutputQueueDescriptor*>(&descriptor);
+ return std::make_unique<CopyMemGenericWorkload>(*outputQueueDescriptor, info);
+ }
+ default:
+ return nullptr;
+ }
+}
+
} // namespace sdb