Replacing vtbl NEON intrinsic with rev NEON intrinsic for byte_swap. 07/14607/6
authorSirshak Das <sirshak.das@arm.com>
Wed, 22 Aug 2018 04:02:04 +0000 (12:02 +0800)
committerDamjan Marion <dmarion@me.com>
Tue, 11 Sep 2018 08:40:46 +0000 (08:40 +0000)
Using rev16 vector intrinsic to reverse byteorder in each word
independently.

Change-Id: I071c40780baffe0bda614ec5d9dd92858f574b0d
Signed-off-by: Sirshak Das <sirshak.das@arm.com>
Reviewed-by: Steve Capper <steve.capper@arm.com>
Reviewed-by: Brian Brooks <brian.brooks@arm.com>
Reviewed-by: Yi He <yi.he@arm.com>
Verified-by: Lijian Zhang <lijian.zhang@arm.com>
src/vppinfra/vector_neon.h

index 2c3578c..40e062e 100644 (file)
@@ -121,11 +121,7 @@ foreach_neon_vec128i foreach_neon_vec128u
 static_always_inline u16x8
 u16x8_byte_swap (u16x8 v)
 {
-  const u8 swap_pattern[] = {
-    1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14,
-  };
-  u8x16 swap = vld1q_u8 (swap_pattern);
-  return (u16x8) vqtbl1q_u8 ((u8x16) v, swap);
+  return (u16x8) vrev16q_u8 ((u8x16) v);
 }
 
 static_always_inline u8x16