diff --git a/src/backends/reference/workloads/Abs.cpp b/src/backends/reference/workloads/Abs.cpp
new file mode 100644
index 0000000..6a6a79c
--- /dev/null
+++ b/src/backends/reference/workloads/Abs.cpp
@@ -0,0 +1,23 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include "Abs.hpp"
+
+namespace armnn
+{
+
+void Abs(Decoder<float>& in,
+         Encoder<float>& out,
+         const TensorInfo& tensorInfo)
+{
+    for (unsigned int i = 0u; i < tensorInfo.GetNumElements(); ++i)
+    {
+        out[i];
+        in[i];
+        out.Set(std::abs(in.Get()));
+    }
+}
+
+} //namespace armnn
diff --git a/src/backends/reference/workloads/Abs.hpp b/src/backends/reference/workloads/Abs.hpp
new file mode 100644
index 0000000..b1165d2
--- /dev/null
+++ b/src/backends/reference/workloads/Abs.hpp
@@ -0,0 +1,19 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include "BaseIterator.hpp"
+#include <armnn/Tensor.hpp>
+#include <armnn/Types.hpp>
+
+namespace armnn
+{
+
+/// Performs the absolute function elementwise
+/// on the inputs to give the outputs.
+void Abs(Decoder<float>& in,
+         Encoder<float>& out,
+         const TensorInfo& tensorInfo);
+
+} //namespace armnn
diff --git a/src/backends/reference/workloads/CMakeLists.txt b/src/backends/reference/workloads/CMakeLists.txt
index c9db057..7f49e80 100644
--- a/src/backends/reference/workloads/CMakeLists.txt
+++ b/src/backends/reference/workloads/CMakeLists.txt
@@ -4,6 +4,8 @@
 #
 
 list(APPEND armnnRefBackendWorkloads_sources
+    Abs.cpp
+    Abs.hpp
     Activation.cpp
     Activation.hpp
     BaseIterator.hpp
@@ -41,6 +43,8 @@
     Pooling2d.hpp
     PreluImpl.cpp
     PreluImpl.hpp
+    RefAbsWorkload.cpp
+    RefAbsWorkload.hpp
     RefActivationWorkload.cpp
     RefActivationWorkload.hpp
     RefBatchNormalizationWorkload.cpp
diff --git a/src/backends/reference/workloads/RefAbsWorkload.cpp b/src/backends/reference/workloads/RefAbsWorkload.cpp
new file mode 100644
index 0000000..5c1f8c0
--- /dev/null
+++ b/src/backends/reference/workloads/RefAbsWorkload.cpp
@@ -0,0 +1,37 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include "RefAbsWorkload.hpp"
+
+#include "Abs.hpp"
+#include "Decoders.hpp"
+#include "Encoders.hpp"
+#include "RefWorkloadUtils.hpp"
+
+#include <Profiling.hpp>
+
+namespace armnn
+{
+
+void RefAbsWorkload::Execute() const
+{
+    ARMNN_SCOPED_PROFILING_EVENT(Compute::CpuRef, "RefAbsWorkload_Execute");
+
+    const TensorInfo& inputTensorInfo = GetTensorInfo(m_Data.m_Inputs[0]);
+
+    std::unique_ptr<Decoder<float>> decoderPtr = MakeDecoder<float>(inputTensorInfo, m_Data.m_Inputs[0]->Map());
+    Decoder<float>& decoder = *decoderPtr;
+
+    const TensorInfo& outputTensorInfo = GetTensorInfo(m_Data.m_Outputs[0]);
+
+    std::unique_ptr<Encoder<float>> encoderPtr = MakeEncoder<float>(outputTensorInfo, m_Data.m_Outputs[0]->Map());
+    Encoder<float>& encoder = *encoderPtr;
+
+    Abs(decoder,
+        encoder,
+        inputTensorInfo);
+}
+
+} //namespace armnn
diff --git a/src/backends/reference/workloads/RefAbsWorkload.hpp b/src/backends/reference/workloads/RefAbsWorkload.hpp
new file mode 100644
index 0000000..6810555
--- /dev/null
+++ b/src/backends/reference/workloads/RefAbsWorkload.hpp
@@ -0,0 +1,21 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#pragma once
+
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
+
+namespace armnn
+{
+
+class RefAbsWorkload : public BaseWorkload<AbsQueueDescriptor>
+{
+public:
+    using BaseWorkload<AbsQueueDescriptor>::BaseWorkload;
+    virtual void Execute() const override;
+};
+
+} //namespace armnn
diff --git a/src/backends/reference/workloads/RefWorkloads.hpp b/src/backends/reference/workloads/RefWorkloads.hpp
index e86dccd..1ec349e 100644
--- a/src/backends/reference/workloads/RefWorkloads.hpp
+++ b/src/backends/reference/workloads/RefWorkloads.hpp
@@ -5,6 +5,7 @@
 
 #pragma once
 
+#include "Abs.hpp"
 #include "Activation.hpp"
 #include "BatchNormImpl.hpp"
 #include "ConvImpl.hpp"
@@ -13,6 +14,7 @@
 #include "FullyConnected.hpp"
 #include "Gather.hpp"
 #include "Pooling2d.hpp"
+#include "RefAbsWorkload.hpp"
 #include "RefActivationWorkload.hpp"
 #include "RefBatchNormalizationWorkload.hpp"
 #include "RefBatchToSpaceNdWorkload.hpp"
