diff --git a/src/backends/reference/workloads/Decoders.hpp b/src/backends/reference/workloads/Decoders.hpp
index faabdcd..6f30978 100644
--- a/src/backends/reference/workloads/Decoders.hpp
+++ b/src/backends/reference/workloads/Decoders.hpp
@@ -71,6 +71,7 @@
 {
     switch(info.GetDataType())
     {
+        ARMNN_NO_DEPRECATE_WARN_BEGIN
         case armnn::DataType::QuantizedSymm8PerAxis:
         {
             std::pair<unsigned int, std::vector<float>> params = armnnUtils::GetPerAxisParams(info);
@@ -79,6 +80,7 @@
                 params.second,
                 params.first);
         }
+        ARMNN_NO_DEPRECATE_WARN_END
         case DataType::QAsymmU8:
         {
             return std::make_unique<QASymm8Decoder>(
@@ -107,10 +109,21 @@
         }
         case DataType::QSymmS8:
         {
-            return std::make_unique<QSymmS8Decoder>(
-            static_cast<const int8_t*>(data),
-            info.GetQuantizationScale(),
-            info.GetQuantizationOffset());
+            if (info.HasPerAxisQuantization())
+            {
+                std::pair<unsigned int, std::vector<float>> params = armnnUtils::GetPerAxisParams(info);
+                return std::make_unique<QSymm8PerAxisDecoder>(
+                    static_cast<const int8_t*>(data),
+                    params.second,
+                    params.first);
+            }
+            else
+            {
+                return std::make_unique<QSymmS8Decoder>(
+                    static_cast<const int8_t*>(data),
+                    info.GetQuantizationScale(),
+                    info.GetQuantizationOffset());
+            }
         }
         default:
         {
