IVGCVSW-2997 Refactor reference LSTM workload
Signed-off-by: Nattapat Chaimanowong <nattapat.chaimanowong@arm.com>
Change-Id: I6883f878d9f701a55153292769d2fc0530d2529e
diff --git a/src/backends/reference/workloads/BaseIterator.hpp b/src/backends/reference/workloads/BaseIterator.hpp
index 3439e41..97af95a 100644
--- a/src/backends/reference/workloads/BaseIterator.hpp
+++ b/src/backends/reference/workloads/BaseIterator.hpp
@@ -29,8 +29,6 @@
class Decoder : public BaseIterator
{
public:
- using InterfaceType = IType;
-
Decoder() {}
virtual ~Decoder() {}
@@ -42,13 +40,13 @@
class Encoder : public BaseIterator
{
public:
- using InterfaceType = IType;
-
Encoder() {}
virtual ~Encoder() {}
virtual void Set(IType right) = 0;
+
+ virtual IType Get() const = 0;
};
template<typename T, typename Base>
@@ -77,6 +75,7 @@
return *this;
}
+protected:
T* m_Iterator;
};
@@ -135,6 +134,11 @@
*m_Iterator = armnn::Quantize<uint8_t>(right, m_Scale, m_Offset);
}
+ float Get() const override
+ {
+ return armnn::Dequantize(*m_Iterator, m_Scale, m_Offset);
+ }
+
private:
const float m_Scale;
const int32_t m_Offset;
@@ -151,6 +155,11 @@
*m_Iterator = armnn::Quantize<int16_t>(right, m_Scale, m_Offset);
}
+ float Get() const override
+ {
+ return armnn::Dequantize(*m_Iterator, m_Scale, m_Offset);
+ }
+
private:
const float m_Scale;
const int32_t m_Offset;
@@ -166,6 +175,11 @@
{
*m_Iterator = right;
}
+
+ float Get() const override
+ {
+ return *m_Iterator;
+ }
};
class BooleanEncoder : public TypedIterator<uint8_t, Encoder<bool>>
@@ -178,7 +192,11 @@
{
*m_Iterator = right;
}
+
+ bool Get() const override
+ {
+ return *m_Iterator;
+ }
};
-
-} //namespace armnn
\ No newline at end of file
+} //namespace armnn