diff --git a/src/backends/reference/workloads/BaseIterator.hpp b/src/backends/reference/workloads/BaseIterator.hpp
index ca5110c..ca6d3cb 100644
--- a/src/backends/reference/workloads/BaseIterator.hpp
+++ b/src/backends/reference/workloads/BaseIterator.hpp
@@ -137,6 +137,25 @@
     const int32_t m_Offset;
 };
 
+class QSymmS8Decoder : public TypedIterator<const int8_t, Decoder<float>>
+{
+public:
+    QSymmS8Decoder(const int8_t* data, const float scale, const int32_t offset)
+            : TypedIterator(data), m_Scale(scale), m_Offset(offset) {}
+
+    QSymmS8Decoder(const float scale, const int32_t offset)
+            : QSymmS8Decoder(nullptr, scale, offset) {}
+
+    float Get() const override
+    {
+        return armnn::Dequantize(*m_Iterator, m_Scale, m_Offset);
+    }
+
+private:
+    const float m_Scale;
+    const int32_t m_Offset;
+};
+
 class QSymm16Decoder : public TypedIterator<const int16_t, Decoder<float>>
 {
 public:
@@ -245,6 +264,30 @@
     const int32_t m_Offset;
 };
 
+class QSymmS8Encoder : public TypedIterator<int8_t, Encoder<float>>
+{
+public:
+    QSymmS8Encoder(int8_t* data, const float scale, const int32_t offset)
+            : TypedIterator(data), m_Scale(scale), m_Offset(offset) {}
+
+    QSymmS8Encoder(const float scale, const int32_t offset)
+            : QSymmS8Encoder(nullptr, scale, offset) {}
+
+    void Set(float right) override
+    {
+        *m_Iterator = armnn::Quantize<int8_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;
+};
+
 class QSymm16Encoder : public TypedIterator<int16_t, Encoder<float>>
 {
 public:
