COMPMID-1758: NEON: Implement Range

Change-Id: I56dff9462b85760fbed6db43224cadb90d283810
Reviewed-on: https://review.mlplatform.org/472
Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com>
Tested-by: Arm Jenkins <bsgcomp@arm.com>
diff --git a/arm_compute/core/NEON/wrapper/intrinsics/getlane.h b/arm_compute/core/NEON/wrapper/intrinsics/getlane.h
index 107ce44..68267ba 100644
--- a/arm_compute/core/NEON/wrapper/intrinsics/getlane.h
+++ b/arm_compute/core/NEON/wrapper/intrinsics/getlane.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2018 ARM Limited.
+ * Copyright (c) 2018-2019 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -30,62 +30,62 @@
 {
 namespace wrapper
 {
-#define VGETLANE_IMPL_8(stype, vtype, postfix)                \
-    inline stype vgetlane(const vtype vector, const int lane) \
-    {                                                         \
-        switch(lane)                                          \
-        {                                                     \
-            case 0:                                           \
-                return vget_lane_##postfix(vector, 0);        \
-            case 1:                                           \
-                return vget_lane_##postfix(vector, 1);        \
-            case 2:                                           \
-                return vget_lane_##postfix(vector, 2);        \
-            case 3:                                           \
-                return vget_lane_##postfix(vector, 3);        \
-            case 4:                                           \
-                return vget_lane_##postfix(vector, 4);        \
-            case 5:                                           \
-                return vget_lane_##postfix(vector, 5);        \
-            case 6:                                           \
-                return vget_lane_##postfix(vector, 6);        \
-            case 7:                                           \
-                return vget_lane_##postfix(vector, 7);        \
-            default:                                          \
-                ARM_COMPUTE_ERROR("Invalid lane");            \
-        }                                                     \
+#define VGETLANE_IMPL_8(stype, vtype, postfix)                         \
+    inline stype vgetlane(const vtype vector, const unsigned int lane) \
+    {                                                                  \
+        switch(lane)                                                   \
+        {                                                              \
+            case 0:                                                    \
+                return vget_lane_##postfix(vector, 0);                 \
+            case 1:                                                    \
+                return vget_lane_##postfix(vector, 1);                 \
+            case 2:                                                    \
+                return vget_lane_##postfix(vector, 2);                 \
+            case 3:                                                    \
+                return vget_lane_##postfix(vector, 3);                 \
+            case 4:                                                    \
+                return vget_lane_##postfix(vector, 4);                 \
+            case 5:                                                    \
+                return vget_lane_##postfix(vector, 5);                 \
+            case 6:                                                    \
+                return vget_lane_##postfix(vector, 6);                 \
+            case 7:                                                    \
+                return vget_lane_##postfix(vector, 7);                 \
+            default:                                                   \
+                ARM_COMPUTE_ERROR("Invalid lane");                     \
+        }                                                              \
     }
 
-#define VGETLANE_IMPL_4(stype, vtype, postfix)                \
-    inline stype vgetlane(const vtype vector, const int lane) \
-    {                                                         \
-        switch(lane)                                          \
-        {                                                     \
-            case 0:                                           \
-                return vget_lane_##postfix(vector, 0);        \
-            case 1:                                           \
-                return vget_lane_##postfix(vector, 1);        \
-            case 2:                                           \
-                return vget_lane_##postfix(vector, 2);        \
-            case 3:                                           \
-                return vget_lane_##postfix(vector, 3);        \
-            default:                                          \
-                ARM_COMPUTE_ERROR("Invalid lane");            \
-        }                                                     \
+#define VGETLANE_IMPL_4(stype, vtype, postfix)                         \
+    inline stype vgetlane(const vtype vector, const unsigned int lane) \
+    {                                                                  \
+        switch(lane)                                                   \
+        {                                                              \
+            case 0:                                                    \
+                return vget_lane_##postfix(vector, 0);                 \
+            case 1:                                                    \
+                return vget_lane_##postfix(vector, 1);                 \
+            case 2:                                                    \
+                return vget_lane_##postfix(vector, 2);                 \
+            case 3:                                                    \
+                return vget_lane_##postfix(vector, 3);                 \
+            default:                                                   \
+                ARM_COMPUTE_ERROR("Invalid lane");                     \
+        }                                                              \
     }
 
-#define VGETLANE_IMPL_2(stype, vtype, postfix)                \
-    inline stype vgetlane(const vtype vector, const int lane) \
-    {                                                         \
-        switch(lane)                                          \
-        {                                                     \
-            case 0:                                           \
-                return vget_lane_##postfix(vector, 0);        \
-            case 1:                                           \
-                return vget_lane_##postfix(vector, 1);        \
-            default:                                          \
-                ARM_COMPUTE_ERROR("Invalid lane");            \
-        }                                                     \
+#define VGETLANE_IMPL_2(stype, vtype, postfix)                         \
+    inline stype vgetlane(const vtype vector, const unsigned int lane) \
+    {                                                                  \
+        switch(lane)                                                   \
+        {                                                              \
+            case 0:                                                    \
+                return vget_lane_##postfix(vector, 0);                 \
+            case 1:                                                    \
+                return vget_lane_##postfix(vector, 1);                 \
+            default:                                                   \
+                ARM_COMPUTE_ERROR("Invalid lane");                     \
+        }                                                              \
     }
 
 VGETLANE_IMPL_8(uint8_t, uint8x8_t, u8)
@@ -99,90 +99,90 @@
 VGETLANE_IMPL_4(float16_t, float16x4_t, f16)
 #endif // __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
 
-#define VGETQLANE_IMPL_16(stype, vtype, postfix)               \
-    inline stype vgetqlane(const vtype vector, const int lane) \
-    {                                                          \
-        switch(lane)                                           \
-        {                                                      \
-            case 0:                                            \
-                return vgetq_lane_##postfix(vector, 0);        \
-            case 1:                                            \
-                return vgetq_lane_##postfix(vector, 1);        \
-            case 2:                                            \
-                return vgetq_lane_##postfix(vector, 2);        \
-            case 3:                                            \
-                return vgetq_lane_##postfix(vector, 3);        \
-            case 4:                                            \
-                return vgetq_lane_##postfix(vector, 4);        \
-            case 5:                                            \
-                return vgetq_lane_##postfix(vector, 5);        \
-            case 6:                                            \
-                return vgetq_lane_##postfix(vector, 6);        \
-            case 7:                                            \
-                return vgetq_lane_##postfix(vector, 7);        \
-            case 8:                                            \
-                return vgetq_lane_##postfix(vector, 8);        \
-            case 9:                                            \
-                return vgetq_lane_##postfix(vector, 9);        \
-            case 10:                                           \
-                return vgetq_lane_##postfix(vector, 10);       \
-            case 11:                                           \
-                return vgetq_lane_##postfix(vector, 11);       \
-            case 12:                                           \
-                return vgetq_lane_##postfix(vector, 12);       \
-            case 13:                                           \
-                return vgetq_lane_##postfix(vector, 13);       \
-            case 14:                                           \
-                return vgetq_lane_##postfix(vector, 14);       \
-            case 15:                                           \
-                return vgetq_lane_##postfix(vector, 15);       \
-            default:                                           \
-                ARM_COMPUTE_ERROR("Invalid lane");             \
-        }                                                      \
+#define VGETQLANE_IMPL_16(stype, vtype, postfix)                       \
+    inline stype vgetlane(const vtype vector, const unsigned int lane) \
+    {                                                                  \
+        switch(lane)                                                   \
+        {                                                              \
+            case 0:                                                    \
+                return vgetq_lane_##postfix(vector, 0);                \
+            case 1:                                                    \
+                return vgetq_lane_##postfix(vector, 1);                \
+            case 2:                                                    \
+                return vgetq_lane_##postfix(vector, 2);                \
+            case 3:                                                    \
+                return vgetq_lane_##postfix(vector, 3);                \
+            case 4:                                                    \
+                return vgetq_lane_##postfix(vector, 4);                \
+            case 5:                                                    \
+                return vgetq_lane_##postfix(vector, 5);                \
+            case 6:                                                    \
+                return vgetq_lane_##postfix(vector, 6);                \
+            case 7:                                                    \
+                return vgetq_lane_##postfix(vector, 7);                \
+            case 8:                                                    \
+                return vgetq_lane_##postfix(vector, 8);                \
+            case 9:                                                    \
+                return vgetq_lane_##postfix(vector, 9);                \
+            case 10:                                                   \
+                return vgetq_lane_##postfix(vector, 10);               \
+            case 11:                                                   \
+                return vgetq_lane_##postfix(vector, 11);               \
+            case 12:                                                   \
+                return vgetq_lane_##postfix(vector, 12);               \
+            case 13:                                                   \
+                return vgetq_lane_##postfix(vector, 13);               \
+            case 14:                                                   \
+                return vgetq_lane_##postfix(vector, 14);               \
+            case 15:                                                   \
+                return vgetq_lane_##postfix(vector, 15);               \
+            default:                                                   \
+                ARM_COMPUTE_ERROR("Invalid lane");                     \
+        }                                                              \
     }
 
-#define VGETQLANE_IMPL_8(stype, vtype, postfix)                \
-    inline stype vgetqlane(const vtype vector, const int lane) \
-    {                                                          \
-        switch(lane)                                           \
-        {                                                      \
-            case 0:                                            \
-                return vgetq_lane_##postfix(vector, 0);        \
-            case 1:                                            \
-                return vgetq_lane_##postfix(vector, 1);        \
-            case 2:                                            \
-                return vgetq_lane_##postfix(vector, 2);        \
-            case 3:                                            \
-                return vgetq_lane_##postfix(vector, 3);        \
-            case 4:                                            \
-                return vgetq_lane_##postfix(vector, 4);        \
-            case 5:                                            \
-                return vgetq_lane_##postfix(vector, 5);        \
-            case 6:                                            \
-                return vgetq_lane_##postfix(vector, 6);        \
-            case 7:                                            \
-                return vgetq_lane_##postfix(vector, 7);        \
-            default:                                           \
-                ARM_COMPUTE_ERROR("Invalid lane");             \
-        }                                                      \
+#define VGETQLANE_IMPL_8(stype, vtype, postfix)                        \
+    inline stype vgetlane(const vtype vector, const unsigned int lane) \
+    {                                                                  \
+        switch(lane)                                                   \
+        {                                                              \
+            case 0:                                                    \
+                return vgetq_lane_##postfix(vector, 0);                \
+            case 1:                                                    \
+                return vgetq_lane_##postfix(vector, 1);                \
+            case 2:                                                    \
+                return vgetq_lane_##postfix(vector, 2);                \
+            case 3:                                                    \
+                return vgetq_lane_##postfix(vector, 3);                \
+            case 4:                                                    \
+                return vgetq_lane_##postfix(vector, 4);                \
+            case 5:                                                    \
+                return vgetq_lane_##postfix(vector, 5);                \
+            case 6:                                                    \
+                return vgetq_lane_##postfix(vector, 6);                \
+            case 7:                                                    \
+                return vgetq_lane_##postfix(vector, 7);                \
+            default:                                                   \
+                ARM_COMPUTE_ERROR("Invalid lane");                     \
+        }                                                              \
     }
 
-#define VGETQLANE_IMPL_4(stype, vtype, postfix)                \
-    inline stype vgetqlane(const vtype vector, const int lane) \
-    {                                                          \
-        switch(lane)                                           \
-        {                                                      \
-            case 0:                                            \
-                return vgetq_lane_##postfix(vector, 0);        \
-            case 1:                                            \
-                return vgetq_lane_##postfix(vector, 1);        \
-            case 2:                                            \
-                return vgetq_lane_##postfix(vector, 2);        \
-            case 3:                                            \
-                return vgetq_lane_##postfix(vector, 3);        \
-            default:                                           \
-                ARM_COMPUTE_ERROR("Invalid lane");             \
-        }                                                      \
+#define VGETQLANE_IMPL_4(stype, vtype, postfix)                        \
+    inline stype vgetlane(const vtype vector, const unsigned int lane) \
+    {                                                                  \
+        switch(lane)                                                   \
+        {                                                              \
+            case 0:                                                    \
+                return vgetq_lane_##postfix(vector, 0);                \
+            case 1:                                                    \
+                return vgetq_lane_##postfix(vector, 1);                \
+            case 2:                                                    \
+                return vgetq_lane_##postfix(vector, 2);                \
+            case 3:                                                    \
+                return vgetq_lane_##postfix(vector, 3);                \
+            default:                                                   \
+                ARM_COMPUTE_ERROR("Invalid lane");                     \
+        }                                                              \
     }
 
 VGETQLANE_IMPL_16(uint8_t, uint8x16_t, u8)
@@ -199,6 +199,10 @@
 #undef VGETLANE_IMPL_8
 #undef VGETLANE_IMPL_4
 #undef VGETLANE_IMPL_2
+
+#undef VGETQLANE_IMPL_16
+#undef VGETQLANE_IMPL_8
+#undef VGETQLANE_IMPL_4
 } // namespace wrapper
 } // namespace arm_compute
 #endif /* __ARM_COMPUTE_WRAPPER_GET_LANE_H__ */