Fixed clang-cl errors on Windows native builds.

Partially resolves MLCE-739

Change-Id: Ice06a96d6a8a26b31e334ba4e697cd41d352b026
Signed-off-by: Pablo Tello <pablo.tello@arm.com>
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/7364
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Gunes Bayir <gunes.bayir@arm.com>
Benchmark: Arm Jenkins <bsgcomp@arm.com>
Tested-by: Arm Jenkins <bsgcomp@arm.com>
diff --git a/SConstruct b/SConstruct
index d3836ce..7bdbb11 100644
--- a/SConstruct
+++ b/SConstruct
@@ -217,14 +217,14 @@
     env.Append(CPPDEFINES = ['ARM_COMPUTE_EXCEPTIONS_DISABLED'])
     env.Append(CXXFLAGS = ['-fno-exceptions'])
 
-env.Append(CXXFLAGS = ['-Wall','-DARCH_ARM',
+env.Append(CXXFLAGS = ['-DARCH_ARM',
          '-Wextra','-Wdisabled-optimization','-Wformat=2',
          '-Winit-self','-Wstrict-overflow=2','-Wswitch-default',
          '-Woverloaded-virtual', '-Wformat-security',
          '-Wctor-dtor-privacy','-Wsign-promo','-Weffc++','-Wno-overlength-strings'])
 
 if not 'windows' in env['os']:
-    env.Append(CXXFLAGS = ['-std=c++14', '-pedantic' ])
+    env.Append(CXXFLAGS = ['-Wall','-std=c++14', '-pedantic' ])
 
 env.Append(CPPDEFINES = ['_GLIBCXX_USE_NANOSLEEP'])
 
@@ -377,10 +377,13 @@
 env['CXX'] = env['compiler_cache']+ " " + compiler_prefix + cpp_compiler
 env['LD'] = toolchain_prefix + "ld"
 env['AS'] = toolchain_prefix + "as"
+
 if env['os'] == 'windows':
-    env['AR'] = "LIB"
+    env['AR'] = "llvm-lib"
+    env['RANLIB'] = "llvm-ranlib"
 else:
     env['AR'] = toolchain_prefix + "ar"
+
 env['RANLIB'] = toolchain_prefix + "ranlib"
 
 print("Using compilers:")
@@ -446,10 +449,10 @@
 env = update_data_type_layout_flags(env, data_types, data_layouts)
 
 if env['standalone']:
-    if not 'windows' in env['os']: 
+    if not 'windows' in env['os']:
         env.Append(CXXFLAGS = ['-fPIC'])
-    env.Append(LINKFLAGS = ['-static-libgcc','-static-libstdc++'])
-
+        env.Append(LINKFLAGS = ['-static-libgcc','-static-libstdc++'])
+       
 if env['Werror']:
     env.Append(CXXFLAGS = ['-Werror'])
 
@@ -487,7 +490,7 @@
         print("Cannot link OpenCL statically, which is required for bare metal / standalone builds")
         Exit(1)
 
-if env["os"] not in ["android", "bare_metal"] and (env['opencl'] or env['cppthreads']):
+if env["os"] not in ["windows","android", "bare_metal"] and (env['opencl'] or env['cppthreads']):
     env.Append(LIBS = ['pthread'])
 
 if env['os'] == 'openbsd':
@@ -503,7 +506,12 @@
 
 if env['debug']:
     env['asserts'] = True
-    env.Append(CXXFLAGS = ['-O0','-g','-gdwarf-2'])
+    if not 'windows' in env['os']:
+        env.Append(CXXFLAGS = ['-O0','-g','-gdwarf-2'])
+    else:
+        env.Append(CXXFLAGS = ['-Z7','-MTd','-fms-compatibility','-fdelayed-template-parsing'])
+        env.Append(LINKFLAGS = ['-DEBUG'])
+ 
     env.Append(CPPDEFINES = ['ARM_COMPUTE_DEBUG_ENABLED'])
 else:
     if not 'windows' in env['os']:
@@ -511,10 +519,11 @@
     else:
         # on windows we use clang-cl which does not support the option -O3
         env.Append(CXXFLAGS = ['-O2'])
- 
+
 if env['asserts']:
     env.Append(CPPDEFINES = ['ARM_COMPUTE_ASSERTS_ENABLED'])
-    env.Append(CXXFLAGS = ['-fstack-protector-strong'])
+    if not 'windows' in env['os']:
+        env.Append(CXXFLAGS = ['-fstack-protector-strong'])
 
 if env['logging']:
     env.Append(CPPDEFINES = ['ARM_COMPUTE_LOGGING_ENABLED'])
diff --git a/arm_compute/core/utils/misc/MMappedFile.h b/arm_compute/core/utils/misc/MMappedFile.h
index b3e0994..3efdbc5 100644
--- a/arm_compute/core/utils/misc/MMappedFile.h
+++ b/arm_compute/core/utils/misc/MMappedFile.h
@@ -24,7 +24,7 @@
 #ifndef ARM_COMPUTE_MISC_MMAPPED_FILE_H
 #define ARM_COMPUTE_MISC_MMAPPED_FILE_H
 
-#if !defined(BARE_METAL)
+#if !defined(_WIN64) && !defined(BARE_METAL)
 
 #include <string>
 #include <utility>
@@ -105,6 +105,6 @@
 } // namespace mmap_io
 } // namespace utils
 } // namespace arm_compute
-#endif // !defined(BARE_METAL)
+#endif // !defined(_WIN64) &&!defined(BARE_METAL)
 
 #endif /* ARM_COMPUTE_MISC_MMAPPED_FILE_H */
diff --git a/src/core/NEON/kernels/convolution/common/padding.cpp b/src/core/NEON/kernels/convolution/common/padding.cpp
index f57706f..5960e66 100644
--- a/src/core/NEON/kernels/convolution/common/padding.cpp
+++ b/src/core/NEON/kernels/convolution/common/padding.cpp
@@ -81,7 +81,7 @@
 
 template void copy_and_pad_tile(
   unsigned int, unsigned int, unsigned int,
-  const float *, unsigned int, unsigned int,
+  float const *, unsigned int, unsigned int,
   float *, unsigned int, unsigned int,
   unsigned int, unsigned int, unsigned int, unsigned int, float
 );
diff --git a/src/core/NEON/kernels/convolution/common/padding.hpp b/src/core/NEON/kernels/convolution/common/padding.hpp
index b6f9587..397d902 100644
--- a/src/core/NEON/kernels/convolution/common/padding.hpp
+++ b/src/core/NEON/kernels/convolution/common/padding.hpp
@@ -34,20 +34,20 @@
  */
 template <typename T>
 void copy_and_pad_tile(
-  unsigned int tile_rows,
-  unsigned int tile_cols,
-  unsigned int n_channels,
-  const T *inptr,
-  unsigned int in_row_stride,
-  unsigned int in_col_stride,
-  T* outptr,
-  unsigned int out_row_stride,
-  unsigned int out_col_stride,
-  unsigned int pad_top,
-  unsigned int pad_left,
-  unsigned int pad_bottom,
-  unsigned int pad_right,
-  T pad_value=static_cast<T>(0)
+  const unsigned int tile_rows,
+  const unsigned int tile_cols,
+  const unsigned int n_channels,
+  const T * const inptr,
+  const unsigned int in_row_stride,
+  const unsigned int in_col_stride,
+  T* const outptr,
+  const unsigned int out_row_stride,
+  const unsigned int out_col_stride,
+  const unsigned int pad_top,
+  const unsigned int pad_left,
+  const unsigned int pad_bottom,
+  const unsigned int pad_right,
+  const T pad_value=static_cast<T>(0)
 );
 
 /** Copy a tile and remove padding elements in the output.
diff --git a/src/core/NEON/kernels/convolution/winograd/padding.cpp b/src/core/NEON/kernels/convolution/winograd/padding.cpp
index 1d44c38..aca8448 100644
--- a/src/core/NEON/kernels/convolution/winograd/padding.cpp
+++ b/src/core/NEON/kernels/convolution/winograd/padding.cpp
@@ -28,23 +28,22 @@
 
 namespace padding
 {
-
 template <typename T>
 void copy_and_pad_tile(
-  const unsigned int tile_rows,
-  const unsigned int tile_cols,
-  const unsigned int n_channels,
-  const T* const inptr,
-  const unsigned int in_row_stride,
-  const unsigned int in_col_stride,
-  T* const outptr,
-  const unsigned int out_row_stride,
-  const unsigned int out_col_stride,
-  const unsigned int pad_top,
-  const unsigned int pad_left,
-  const unsigned int pad_bottom,
-  const unsigned int pad_right,
-  const T pad_value
+  unsigned int tile_rows,
+  unsigned int tile_cols,
+  unsigned int n_channels,
+  const T *inptr,
+  unsigned int in_row_stride,
+  unsigned int in_col_stride,
+  T* outptr,
+  unsigned int out_row_stride,
+  unsigned int out_col_stride,
+  unsigned int pad_top,
+  unsigned int pad_left,
+  unsigned int pad_bottom,
+  unsigned int pad_right,
+  T pad_value
 )
 {
   for (unsigned int out_i = 0; out_i < tile_rows; out_i++)
diff --git a/support/ToolchainSupport.h b/support/ToolchainSupport.h
index 8ea50eb..0557d1d 100644
--- a/support/ToolchainSupport.h
+++ b/support/ToolchainSupport.h
@@ -297,7 +297,7 @@
 template <typename T, typename = typename std::enable_if<std::is_arithmetic<T>::value>::type>
 inline bool isfinite(T value)
 {
-    return std::isfinite(value);
+    return std::isfinite(static_cast<double>(value));
 }
 
 inline bool isfinite(half_float::half value)
@@ -310,12 +310,11 @@
     return std::isfinite(float(value));
 }
 
-#if !defined(_WIN64)
 // std::signbit
 template <typename T, typename = typename std::enable_if<std::is_arithmetic<T>::value>::type>
 inline bool signbit(T value)
 {
-    return std::signbit(value);
+    return std::signbit(static_cast<double>(value));
 }
 
 inline bool signbit(half_float::half value)
@@ -327,7 +326,6 @@
 {
     return std::signbit(float(value));
 }
-#endif // !defined(_WIN64)
 } // namespace cpp11
 } // namespace support
 } // namespace arm_compute
diff --git a/tests/AssetsLibrary.h b/tests/AssetsLibrary.h
index 80b9ecb..bd97cb7 100644
--- a/tests/AssetsLibrary.h
+++ b/tests/AssetsLibrary.h
@@ -725,7 +725,7 @@
         case DataType::U8:
         case DataType::QASYMM8:
         {
-            std::uniform_int_distribution<uint8_t> distribution_u8(std::numeric_limits<uint8_t>::lowest(), std::numeric_limits<uint8_t>::max());
+            std::uniform_int_distribution<unsigned int> distribution_u8(std::numeric_limits<uint8_t>::lowest(), std::numeric_limits<uint8_t>::max());
             fill(tensor, distribution_u8, seed_offset);
             break;
         }
@@ -734,7 +734,7 @@
         case DataType::QSYMM8_PER_CHANNEL:
         case DataType::QASYMM8_SIGNED:
         {
-            std::uniform_int_distribution<int8_t> distribution_s8(std::numeric_limits<int8_t>::lowest(), std::numeric_limits<int8_t>::max());
+            std::uniform_int_distribution<int> distribution_s8(std::numeric_limits<int8_t>::lowest(), std::numeric_limits<int8_t>::max());
             fill(tensor, distribution_s8, seed_offset);
             break;
         }
@@ -826,20 +826,20 @@
         case DataType::U8:
         case DataType::QASYMM8:
         {
-            const auto                         converted_pairs = detail::convert_range_pair<uint8_t>(excluded_range_pairs);
-            RangedUniformDistribution<uint8_t> distribution_u8(std::numeric_limits<uint8_t>::lowest(),
-                                                               std::numeric_limits<uint8_t>::max(),
-                                                               converted_pairs);
+            const auto                          converted_pairs = detail::convert_range_pair<uint32_t>(excluded_range_pairs);
+            RangedUniformDistribution<uint32_t> distribution_u8(std::numeric_limits<uint8_t>::lowest(),
+                                                                std::numeric_limits<uint8_t>::max(),
+                                                                converted_pairs);
             fill(tensor, distribution_u8, seed_offset);
             break;
         }
         case DataType::S8:
         case DataType::QSYMM8:
         {
-            const auto                        converted_pairs = detail::convert_range_pair<int8_t>(excluded_range_pairs);
-            RangedUniformDistribution<int8_t> distribution_s8(std::numeric_limits<int8_t>::lowest(),
-                                                              std::numeric_limits<int8_t>::max(),
-                                                              converted_pairs);
+            const auto                         converted_pairs = detail::convert_range_pair<int32_t>(excluded_range_pairs);
+            RangedUniformDistribution<int32_t> distribution_s8(std::numeric_limits<int8_t>::lowest(),
+                                                               std::numeric_limits<int8_t>::max(),
+                                                               converted_pairs);
             fill(tensor, distribution_s8, seed_offset);
             break;
         }
@@ -918,7 +918,7 @@
         case DataType::QASYMM8:
         {
             ARM_COMPUTE_ERROR_ON(!(std::is_same<uint8_t, D>::value));
-            std::uniform_int_distribution<uint8_t> distribution_u8(low, high);
+            std::uniform_int_distribution<uint32_t> distribution_u8(low, high);
             fill(tensor, distribution_u8, seed_offset);
             break;
         }
@@ -927,7 +927,7 @@
         case DataType::QASYMM8_SIGNED:
         {
             ARM_COMPUTE_ERROR_ON(!(std::is_same<int8_t, D>::value));
-            std::uniform_int_distribution<int8_t> distribution_s8(low, high);
+            std::uniform_int_distribution<int32_t> distribution_s8(low, high);
             fill(tensor, distribution_s8, seed_offset);
             break;
         }
diff --git a/tests/SConscript b/tests/SConscript
index 49bcb8e..8cd13ab 100644
--- a/tests/SConscript
+++ b/tests/SConscript
@@ -68,7 +68,8 @@
 test_env.Append(LIBS = arm_compute_test_framework)
 
 # Disable floating-point expression contraction (e.g. fused multiply-add operations)
-test_env.Append(CXXFLAGS = ['-ffp-contract=off'])
+if not 'windows' in env['os']:
+    test_env.Append(CXXFLAGS = ['-ffp-contract=off'])
 
 # Remove -Wnoexcept from tests
 if 'g++' in test_env['CXX'] and '-Wnoexcept' in test_env['CXXFLAGS']:
@@ -84,7 +85,10 @@
     Import("arm_compute_a")
     Import("arm_compute_core_a")
     Import("arm_compute_graph_a")
-    test_env.Append(LIBS = [arm_compute_graph_a, arm_compute_a, arm_compute_core_a])
+    if env['os']=='windows':
+        test_env.Append(LIBS = [arm_compute_graph_a, arm_compute_a])
+    else:
+        test_env.Append(LIBS = [arm_compute_graph_a, arm_compute_a, arm_compute_core_a])
     arm_compute_lib = arm_compute_graph_a
 else:
     Import("arm_compute_graph_so")
@@ -157,7 +161,7 @@
 extra_link_flags = []
 if env['os'] == 'android':
     test_env.Append(LIBS = ["log"])
-elif env['os'] not in ['bare_metal', 'macos']:
+elif env['os'] not in ['windows','bare_metal', 'macos']:
     test_env.Append(LIBS = ["rt"])
     extra_link_flags += ['-fstack-protector-strong']
 
@@ -173,7 +177,7 @@
 if test_env['linker_script']:
     bm_link_flags += ['-Wl,--build-id=none', '-T', env['linker_script']]
 
-if test_env['reference_openmp'] and env['os'] not in ['bare_metal', 'macos']:
+if test_env['reference_openmp'] and env['os'] not in ['bare_metal', 'macos','windows']:
     test_env['CXXFLAGS'].append('-fopenmp')
     test_env['LINKFLAGS'].append('-fopenmp')
 
@@ -300,4 +304,4 @@
     Depends(arm_compute_benchmark_examples, arm_compute_test_framework)
     Depends(arm_compute_benchmark_examples, arm_compute_lib)
     Default(arm_compute_benchmark_examples)
-    Export('arm_compute_benchmark_examples')
\ No newline at end of file
+    Export('arm_compute_benchmark_examples')
diff --git a/tests/validation/NEON/FillBorder.cpp b/tests/validation/NEON/FillBorder.cpp
index 343ad83..928990b 100644
--- a/tests/validation/NEON/FillBorder.cpp
+++ b/tests/validation/NEON/FillBorder.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017-2020 Arm Limited.
+ * Copyright (c) 2017-2020, 2022 Arm Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -60,10 +60,10 @@
 {
     BorderSize border_size{ static_cast<unsigned int>(size) };
 
-    std::mt19937                           generator(library->seed());
-    std::uniform_int_distribution<uint8_t> distribution_u8(0, 255);
-    const uint8_t                          border_value = distribution_u8(generator);
-    const uint8_t                          tensor_value = distribution_u8(generator);
+    std::mt19937                            generator(library->seed());
+    std::uniform_int_distribution<uint32_t> distribution_u8(0, 255);
+    const uint8_t                           border_value = distribution_u8(generator);
+    const uint8_t                           tensor_value = distribution_u8(generator);
 
     // Create tensors
     Tensor src = create_tensor<Tensor>(shape, data_type);
@@ -77,7 +77,7 @@
     validate(src.info()->padding(), padding);
 
     // Fill tensor with constant value
-    std::uniform_int_distribution<uint8_t> distribution{ tensor_value, tensor_value };
+    std::uniform_int_distribution<uint32_t> distribution{ tensor_value, tensor_value };
     library->fill(Accessor(src), distribution, 0);
 
     // Create and configure kernel
diff --git a/tests/validation/NEON/UNIT/TensorAllocator.cpp b/tests/validation/NEON/UNIT/TensorAllocator.cpp
index d84bcd4..0aab9ef 100644
--- a/tests/validation/NEON/UNIT/TensorAllocator.cpp
+++ b/tests/validation/NEON/UNIT/TensorAllocator.cpp
@@ -193,7 +193,7 @@
     ARM_COMPUTE_ASSERT(tensor.info()->is_resizable());
 }
 
-#if !defined(BARE_METAL)
+#if !defined(_WIN64) && !defined(BARE_METAL)
 TEST_CASE(ImportMemoryMappedFile, framework::DatasetMode::ALL)
 {
     const ActivationLayerInfo act_info(ActivationLayerInfo::ActivationFunction::RELU);
@@ -250,7 +250,7 @@
     tensor.allocator()->free();
     ARM_COMPUTE_ASSERT(tensor.info()->is_resizable());
 }
-#endif // !defined(BARE_METAL)
+#endif // !defined(_WIN64) && !defined(BARE_METAL)
 
 TEST_CASE(AlignedAlloc, framework::DatasetMode::ALL)
 {
diff --git a/tests/validation/fixtures/ArgMinMaxFixture.h b/tests/validation/fixtures/ArgMinMaxFixture.h
index caa6bb8..2bbce40 100644
--- a/tests/validation/fixtures/ArgMinMaxFixture.h
+++ b/tests/validation/fixtures/ArgMinMaxFixture.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2018-2021 Arm Limited.
+ * Copyright (c) 2018-2022 Arm Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -80,7 +80,7 @@
             case DataType::QASYMM8:
             {
                 std::pair<int, int> bounds = get_quantized_bounds(tensor.quantization_info(), -1.0f, 1.0f);
-                std::uniform_int_distribution<uint8_t> distribution(bounds.first, bounds.second);
+                std::uniform_int_distribution<uint32_t> distribution(bounds.first, bounds.second);
 
                 library->fill(tensor, distribution, 0);
                 break;
@@ -88,7 +88,7 @@
             case DataType::QASYMM8_SIGNED:
             {
                 std::pair<int, int> bounds = get_quantized_qasymm8_signed_bounds(tensor.quantization_info(), -1.0f, 1.0f);
-                std::uniform_int_distribution<int8_t> distribution(bounds.first, bounds.second);
+                std::uniform_int_distribution<int32_t> distribution(bounds.first, bounds.second);
 
                 library->fill(tensor, distribution, 0);
                 break;
diff --git a/tests/validation/fixtures/ConvertFullyConnectedWeightsFixture.h b/tests/validation/fixtures/ConvertFullyConnectedWeightsFixture.h
index ae84433..38088b4 100644
--- a/tests/validation/fixtures/ConvertFullyConnectedWeightsFixture.h
+++ b/tests/validation/fixtures/ConvertFullyConnectedWeightsFixture.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2018-2021 Arm Limited.
+ * Copyright (c) 2018-2022 Arm Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -61,7 +61,7 @@
         {
             case DataType::QASYMM8:
             {
-                std::uniform_int_distribution<uint8_t> distribution(0, 10);
+                std::uniform_int_distribution<uint32_t> distribution(0, 10);
                 library->fill(tensor, distribution, i);
                 break;
             }
diff --git a/tests/validation/fixtures/ConvolutionLayerFixture.h b/tests/validation/fixtures/ConvolutionLayerFixture.h
index 0b3f070..bffdc59 100644
--- a/tests/validation/fixtures/ConvolutionLayerFixture.h
+++ b/tests/validation/fixtures/ConvolutionLayerFixture.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017-2021 Arm Limited.
+ * Copyright (c) 2017-2022 Arm Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -122,14 +122,14 @@
             case DataType::QASYMM8:
             {
                 std::pair<int, int> bounds = get_quantized_bounds(tensor.quantization_info(), -1.0f, 1.0f);
-                std::uniform_int_distribution<uint8_t> distribution(bounds.first, bounds.second);
+                std::uniform_int_distribution<uint32_t> distribution(bounds.first, bounds.second);
                 library->fill(tensor, distribution, i);
                 break;
             }
             case DataType::QASYMM8_SIGNED:
             {
                 std::pair<int, int> bounds = get_quantized_qasymm8_signed_bounds(tensor.quantization_info(), -1.0f, 1.0f);
-                std::uniform_int_distribution<int8_t> distribution(bounds.first, bounds.second);
+                std::uniform_int_distribution<int32_t> distribution(bounds.first, bounds.second);
                 library->fill(tensor, distribution, i);
                 break;
             }
@@ -149,7 +149,7 @@
                         max_bound = bounds.second;
                     }
                 }
-                std::uniform_int_distribution<int8_t> distribution(min_bound, max_bound);
+                std::uniform_int_distribution<int32_t> distribution(min_bound, max_bound);
                 library->fill(tensor, distribution, i);
                 break;
             }
diff --git a/tests/validation/fixtures/DeconvolutionLayerFixture.h b/tests/validation/fixtures/DeconvolutionLayerFixture.h
index 14f071e..d13eab2 100644
--- a/tests/validation/fixtures/DeconvolutionLayerFixture.h
+++ b/tests/validation/fixtures/DeconvolutionLayerFixture.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017-2021 Arm Limited.
+ * Copyright (c) 2017-2022 Arm Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -75,14 +75,14 @@
             case DataType::QASYMM8:
             {
                 std::pair<int, int> bounds = get_quantized_bounds(tensor.quantization_info(), -1.0f, 1.0f);
-                std::uniform_int_distribution<uint8_t> distribution(bounds.first, bounds.second);
+                std::uniform_int_distribution<uint32_t> distribution(bounds.first, bounds.second);
                 library->fill(tensor, distribution, i);
                 break;
             }
             case DataType::QASYMM8_SIGNED:
             {
                 std::pair<int, int> bounds = get_quantized_qasymm8_signed_bounds(tensor.quantization_info(), -1.0f, 1.0f);
-                std::uniform_int_distribution<int8_t> distribution(bounds.first, bounds.second);
+                std::uniform_int_distribution<int32_t> distribution(bounds.first, bounds.second);
                 library->fill(tensor, distribution, i);
                 break;
             }
@@ -102,7 +102,7 @@
                         max_bound = bounds.second;
                     }
                 }
-                std::uniform_int_distribution<int8_t> distribution(min_bound, max_bound);
+                std::uniform_int_distribution<int32_t> distribution(min_bound, max_bound);
                 library->fill(tensor, distribution, i);
                 break;
             }
diff --git a/tests/validation/fixtures/DepthConvertLayerFixture.h b/tests/validation/fixtures/DepthConvertLayerFixture.h
index 130b583..53d29b4 100644
--- a/tests/validation/fixtures/DepthConvertLayerFixture.h
+++ b/tests/validation/fixtures/DepthConvertLayerFixture.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017-2021 Arm Limited.
+ * Copyright (c) 2017-2022 Arm Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -61,7 +61,7 @@
         if(is_data_type_quantized(tensor.data_type()))
         {
             std::pair<int, int> bounds = get_quantized_bounds(tensor.quantization_info(), -1.0f, 1.0f);
-            std::uniform_int_distribution<uint8_t> distribution(bounds.first, bounds.second);
+            std::uniform_int_distribution<uint32_t> distribution(bounds.first, bounds.second);
 
             library->fill(tensor, distribution, i);
         }
diff --git a/tests/validation/fixtures/DepthwiseConvolutionLayerFixture.h b/tests/validation/fixtures/DepthwiseConvolutionLayerFixture.h
index cecccc8..9fd973a 100644
--- a/tests/validation/fixtures/DepthwiseConvolutionLayerFixture.h
+++ b/tests/validation/fixtures/DepthwiseConvolutionLayerFixture.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017-2021 Arm Limited.
+ * Copyright (c) 2017-2022 Arm Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -199,14 +199,14 @@
         {
             case DataType::QASYMM8:
             {
-                std::uniform_int_distribution<uint8_t> distribution(0, 15);
+                std::uniform_int_distribution<uint32_t> distribution(0, 15);
                 library->fill(tensor, distribution, i);
                 break;
             }
             case DataType::QASYMM8_SIGNED:
             case DataType::QSYMM8_PER_CHANNEL:
             {
-                std::uniform_int_distribution<int8_t> distribution(-10, 10);
+                std::uniform_int_distribution<int32_t> distribution(-10, 10);
                 library->fill(tensor, distribution, i);
                 break;
             }
diff --git a/tests/validation/fixtures/DirectConvolutionLayerFixture.h b/tests/validation/fixtures/DirectConvolutionLayerFixture.h
index 614aa20..31186e2 100644
--- a/tests/validation/fixtures/DirectConvolutionLayerFixture.h
+++ b/tests/validation/fixtures/DirectConvolutionLayerFixture.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017-2021 Arm Limited.
+ * Copyright (c) 2017-2022 Arm Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -112,14 +112,14 @@
         {
             case DataType::QASYMM8:
             {
-                std::uniform_int_distribution<uint8_t> distribution(0, 50);
+                std::uniform_int_distribution<uint32_t> distribution(0, 50);
                 library->fill(tensor, distribution, i);
                 break;
             }
             case DataType::QASYMM8_SIGNED:
             {
                 // Use small input range to avoid all the test results being saturated at the end.
-                std::uniform_int_distribution<int8_t> distribution(-25, 25);
+                std::uniform_int_distribution<int32_t> distribution(-25, 25);
                 library->fill(tensor, distribution, i);
                 break;
             }
diff --git a/tests/validation/fixtures/FullyConnectedLayerFixture.h b/tests/validation/fixtures/FullyConnectedLayerFixture.h
index 3048c56..b5efccd 100644
--- a/tests/validation/fixtures/FullyConnectedLayerFixture.h
+++ b/tests/validation/fixtures/FullyConnectedLayerFixture.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017-2021 Arm Limited.
+ * Copyright (c) 2017-2022 Arm Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -92,12 +92,12 @@
     {
         if(_data_type == DataType::QASYMM8)
         {
-            std::uniform_int_distribution<uint8_t> distribution(0, 30);
+            std::uniform_int_distribution<uint32_t> distribution(0, 30);
             library->fill(tensor, distribution, i);
         }
         else if(_data_type == DataType::QASYMM8_SIGNED)
         {
-            std::uniform_int_distribution<int8_t> distribution(-15, 15);
+            std::uniform_int_distribution<int32_t> distribution(-15, 15);
             library->fill(tensor, distribution, i);
         }
         else if(_data_type == DataType::S32)
@@ -291,7 +291,7 @@
         }
         else if(_data_type == DataType::QASYMM8)
         {
-            std::uniform_int_distribution<uint8_t> distribution(0, 30);
+            std::uniform_int_distribution<uint32_t> distribution(0, 30);
             library->fill(tensor, distribution, i);
         }
         else if(_data_type == DataType::S32)
@@ -336,7 +336,7 @@
         }
         else if(_data_type == DataType::QASYMM8)
         {
-            constexpr AbsoluteTolerance<uint8_t> tolerance_qasymm8(1);
+            constexpr AbsoluteTolerance<uint32_t> tolerance_qasymm8(1);
             validate(AccessorType(target), ref, tolerance_qasymm8);
         }
         else
diff --git a/tests/validation/fixtures/GEMMLowpFixture.h b/tests/validation/fixtures/GEMMLowpFixture.h
index 3da4c02..5fe7d83 100644
--- a/tests/validation/fixtures/GEMMLowpFixture.h
+++ b/tests/validation/fixtures/GEMMLowpFixture.h
@@ -67,13 +67,13 @@
                     max_bound = bounds.second;
                 }
             }
-            std::uniform_int_distribution<int8_t> distribution(min_bound, max_bound);
+            std::uniform_int_distribution<int32_t> distribution(min_bound, max_bound);
             library->fill(tensor, distribution, i);
             break;
         }
         case DataType::QASYMM8:
         {
-            std::uniform_int_distribution<uint8_t> distribution(1, 254);
+            std::uniform_int_distribution<uint32_t> distribution(1, 254);
             library->fill(tensor, distribution, i);
             break;
         }
diff --git a/tests/validation/fixtures/ReductionOperationFixture.h b/tests/validation/fixtures/ReductionOperationFixture.h
index fc422ad..c333f13 100644
--- a/tests/validation/fixtures/ReductionOperationFixture.h
+++ b/tests/validation/fixtures/ReductionOperationFixture.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017-2021 Arm Limited.
+ * Copyright (c) 2017-2022 Arm Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -76,14 +76,14 @@
             if(tensor.data_type() == DataType::QASYMM8)
             {
                 std::pair<int, int> bounds = get_quantized_bounds(tensor.quantization_info(), -1.0f, 1.0f);
-                std::uniform_int_distribution<uint8_t> distribution(bounds.first, bounds.second);
+                std::uniform_int_distribution<uint32_t> distribution(bounds.first, bounds.second);
 
                 library->fill(tensor, distribution, 0);
             }
             else if(tensor.data_type() == DataType::QASYMM8_SIGNED)
             {
                 std::pair<int, int> bounds = get_quantized_qasymm8_signed_bounds(tensor.quantization_info(), -1.0f, 1.0f);
-                std::uniform_int_distribution<int8_t> distribution(bounds.first, bounds.second);
+                std::uniform_int_distribution<int32_t> distribution(bounds.first, bounds.second);
 
                 library->fill(tensor, distribution, 0);
             }
diff --git a/tests/validation/fixtures/ScaleFixture.h b/tests/validation/fixtures/ScaleFixture.h
index b719a22..c0b44bc 100644
--- a/tests/validation/fixtures/ScaleFixture.h
+++ b/tests/validation/fixtures/ScaleFixture.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017-2021 Arm Limited.
+ * Copyright (c) 2017-2022 Arm Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -59,8 +59,8 @@
 
         generate_scale(shape);
 
-        std::mt19937                           generator(library->seed());
-        std::uniform_int_distribution<uint8_t> distribution_u8(0, 255);
+        std::mt19937                            generator(library->seed());
+        std::uniform_int_distribution<uint32_t> distribution_u8(0, 255);
         _constant_border_value = static_cast<T>(distribution_u8(generator));
 
         _target    = compute_target(shape, data_layout);