diff --git a/test/1.1/Mean.cpp b/test/1.1/Mean.cpp
index 7d48243..cf9ddcb 100644
--- a/test/1.1/Mean.cpp
+++ b/test/1.1/Mean.cpp
@@ -18,7 +18,11 @@
 namespace
 {
 
-static const boost::array<armnn::Compute, 2> COMPUTE_DEVICES = {{ armnn::Compute::CpuRef, armnn::Compute::GpuAcc }};
+#ifndef ARMCOMPUTECL_ENABLED
+    static const boost::array<armnn::Compute, 1> COMPUTE_DEVICES = {{ armnn::Compute::CpuRef }};
+#else
+    static const boost::array<armnn::Compute, 2> COMPUTE_DEVICES = {{ armnn::Compute::CpuRef, armnn::Compute::GpuAcc }};
+#endif
 
 void MeanTestImpl(const TestTensor& input,
                   const hidl_vec<uint32_t>& axisDimensions,
diff --git a/test/1.1/Transpose.cpp b/test/1.1/Transpose.cpp
index 6dc3e0e..e32a25f 100644
--- a/test/1.1/Transpose.cpp
+++ b/test/1.1/Transpose.cpp
@@ -21,7 +21,11 @@
 namespace
 {
 
-static const boost::array<armnn::Compute, 2> COMPUTE_DEVICES = {{ armnn::Compute::CpuRef, armnn::Compute::GpuAcc }};
+#ifndef ARMCOMPUTECL_ENABLED
+    static const boost::array<armnn::Compute, 1> COMPUTE_DEVICES = {{ armnn::Compute::CpuRef }};
+#else
+    static const boost::array<armnn::Compute, 2> COMPUTE_DEVICES = {{ armnn::Compute::CpuRef, armnn::Compute::GpuAcc }};
+#endif
 
 void TransposeTestImpl(const TestTensor & inputs, int32_t perm[],
                        const TestTensor & expectedOutputTensor, armnn::Compute computeDevice)
diff --git a/test/Convolution2D.hpp b/test/Convolution2D.hpp
index 3fda29b..c8d573d 100644
--- a/test/Convolution2D.hpp
+++ b/test/Convolution2D.hpp
@@ -20,6 +20,15 @@
 
 namespace driverTestHelpers
 {
+#define ARMNN_ANDROID_FP16_TEST(result, fp16Expectation, fp32Expectation, fp16Enabled) \
+   if (fp16Enabled) \
+   { \
+       BOOST_TEST((result == fp16Expectation || result == fp32Expectation), result << \
+       " does not match either " << fp16Expectation << "[fp16] or " << fp32Expectation << "[fp32]"); \
+   } else \
+   { \
+      BOOST_TEST(result == fp32Expectation); \
+   }
 
 void SetModelFp16Flag(V1_0::Model& model, bool fp16Enabled);
 
@@ -33,7 +42,13 @@
     using HalModel         = typename HalPolicy::Model;
     using HalOperationType = typename HalPolicy::OperationType;
 
-    auto driver = std::make_unique<ArmnnDriver>(DriverOptions(armnn::Compute::GpuAcc, fp16Enabled));
+    armnn::Compute computeDevice = armnn::Compute::GpuAcc;
+
+#ifndef ARMCOMPUTECL_ENABLED
+    computeDevice = armnn::Compute::CpuRef;
+#endif
+
+    auto driver = std::make_unique<ArmnnDriver>(DriverOptions(computeDevice, fp16Enabled));
     HalModel model = {};
 
     uint32_t outSize = paddingScheme == android::nn::kPaddingSame ? 2 : 1;
@@ -97,26 +112,11 @@
     switch (paddingScheme)
     {
     case android::nn::kPaddingValid:
-        if (fp16Enabled)
-        {
-            BOOST_TEST(outdata[0] == 1022.f);
-        }
-        else
-        {
-            BOOST_TEST(outdata[0] == 1022.25f);
-        }
+        ARMNN_ANDROID_FP16_TEST(outdata[0], 1022.f, 1022.25f, fp16Enabled)
         break;
     case android::nn::kPaddingSame:
-        if (fp16Enabled)
-        {
-            BOOST_TEST(outdata[0] == 1022.f);
-            BOOST_TEST(outdata[1] == 0.f);
-        }
-        else
-        {
-            BOOST_TEST(outdata[0] == 1022.25f);
-            BOOST_TEST(outdata[1] == 0.f);
-        }
+        ARMNN_ANDROID_FP16_TEST(outdata[0], 1022.f, 1022.25f, fp16Enabled)
+        BOOST_TEST(outdata[1] == 0.f);
         break;
     default:
         BOOST_TEST(false);
diff --git a/test/Lstm.cpp b/test/Lstm.cpp
index b1b7c9d..5681232 100644
--- a/test/Lstm.cpp
+++ b/test/Lstm.cpp
@@ -1491,8 +1491,11 @@
                  outputDimensions,                      outputValue,
                  compute);
 }
-
-static const boost::array<armnn::Compute, 2> COMPUTE_DEVICES = {{ armnn::Compute::CpuRef, armnn::Compute::GpuAcc }};
+#ifndef ARMCOMPUTECL_ENABLED
+    static const boost::array<armnn::Compute, 1> COMPUTE_DEVICES = {{ armnn::Compute::CpuRef }};
+#else
+    static const boost::array<armnn::Compute, 2> COMPUTE_DEVICES = {{ armnn::Compute::CpuRef, armnn::Compute::GpuAcc }};
+#endif
 
 BOOST_DATA_TEST_CASE(LstmNoCifgNoPeepholeNoProjectionTest, COMPUTE_DEVICES)
 {
diff --git a/test/Merger.cpp b/test/Merger.cpp
index 16ac451..9b3d847 100644
--- a/test/Merger.cpp
+++ b/test/Merger.cpp
@@ -19,7 +19,11 @@
 namespace
 {
 
-static const boost::array<armnn::Compute, 2> COMPUTE_DEVICES = {{ armnn::Compute::CpuRef, armnn::Compute::GpuAcc }};
+#ifndef ARMCOMPUTECL_ENABLED
+    static const boost::array<armnn::Compute, 1> COMPUTE_DEVICES = {{ armnn::Compute::CpuRef }};
+#else
+    static const boost::array<armnn::Compute, 2> COMPUTE_DEVICES = {{ armnn::Compute::CpuRef, armnn::Compute::GpuAcc }};
+#endif
 
 void
 MergerTestImpl(const std::vector<const TestTensor*> & inputs,
