Implement OpenCL MatMul for Lhs NT Rhs T/NT FP32/16

 - Implement ClNativeMatMulKernel class
 - Implement opencl kernel for LHS non-transposed and RHS non-transposed
 - Implement opencl kernel for LHS non-transposed and RHS transposed
 - Add test fixture and dataset for matmul
 - Implement transpose_tensor() for reference implementation to transpose high dimensional tensors

Resolves: COMPMID-5944, COMPMID-5951

Co-authored-by: Gunes Bayir <gunes.bayir@arm.com>
Co-authored-by: Ramy Elgammal <ramy.elgammal@arm.com>
Change-Id: I1d5b8978f41be27baddb3153ade880472141573f
Signed-off-by: Gunes Bayir <gunes.bayir@arm.com>
Signed-off-by: Ramy Elgammal <ramy.elgammal@arm.com>
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/9333
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Gian Marco Iodice <gianmarco.iodice@arm.com>
Benchmark: Arm Jenkins <bsgcomp@arm.com>
diff --git a/Android.bp b/Android.bp
index 28bc7e2..42116d7 100644
--- a/Android.bp
+++ b/Android.bp
@@ -49,6 +49,7 @@
         "src/core/CL/cl_kernels/common/generate_proposals_quantized.cl",
         "src/core/CL/cl_kernels/common/instance_normalization.cl",
         "src/core/CL/cl_kernels/common/l2_normalize.cl",
+        "src/core/CL/cl_kernels/common/mat_mul.cl",
         "src/core/CL/cl_kernels/common/mean_stddev_normalization.cl",
         "src/core/CL/cl_kernels/common/memset.cl",
         "src/core/CL/cl_kernels/common/minmax_layer.cl",
@@ -689,6 +690,7 @@
         "src/gpu/cl/kernels/ClIndirectConv2dAddressPrecalculationKernel.cpp",
         "src/gpu/cl/kernels/ClIndirectConv2dKernel.cpp",
         "src/gpu/cl/kernels/ClMulKernel.cpp",
+        "src/gpu/cl/kernels/ClNativeMatMulKernel.cpp",
         "src/gpu/cl/kernels/ClPermuteKernel.cpp",
         "src/gpu/cl/kernels/ClPool2dKernel.cpp",
         "src/gpu/cl/kernels/ClPool3dKernel.cpp",