aboutsummaryrefslogtreecommitdiffstats
path: root/src/vppinfra/vector_neon.h
diff options
context:
space:
mode:
authorDamjan Marion <dmarion@me.com>2020-02-12 20:27:46 +0100
committerDamjan Marion <dmarion@me.com>2020-02-12 21:51:21 +0000
commit9372374f0de1d4b2767bd8c9dbaa868a9975dfaa (patch)
treeae63d70ae1698fed7bbe93ecff5ebcd4e6e5988a /src/vppinfra/vector_neon.h
parent4dc10a4d560363147e58953b0301888cc57b15ce (diff)
vppinfra: add ARM NEON implementation of u8x16_word_shift_{left,right}
Type: improvement Change-Id: I310e421513e9d3f96ad7debc72c9407e231962b8 Signed-off-by: Damjan Marion <dmarion@me.com>
Diffstat (limited to 'src/vppinfra/vector_neon.h')
-rw-r--r--src/vppinfra/vector_neon.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/vppinfra/vector_neon.h b/src/vppinfra/vector_neon.h
index 5a7bbe36a4d..307fbc541b2 100644
--- a/src/vppinfra/vector_neon.h
+++ b/src/vppinfra/vector_neon.h
@@ -182,6 +182,18 @@ u32x4_min_scalar (u32x4 v)
return vminvq_u32 (v);
}
+static_always_inline u8x16
+u8x16_word_shift_left (u8x16 x, const int n)
+{
+ return vextq_u8 (u8x16_splat (0), x, 16 - n);
+}
+
+static_always_inline u8x16
+u8x16_word_shift_right (u8x16 x, const int n)
+{
+ return vextq_u8 (x, u8x16_splat (0), n);
+}
+
#define CLIB_HAVE_VEC128_MSB_MASK
#define CLIB_HAVE_VEC128_UNALIGNED_LOAD_STORE