Revert "vppinfra: AVX2 blend"
[vpp.git] / src / vppinfra / vector_avx2.h
index 6b298be..66c46f2 100644 (file)
@@ -137,6 +137,34 @@ u32x8_hadd (u32x8 v1, u32x8 v2)
   return (u32x8) _mm256_hadd_epi32 ((__m256i) v1, (__m256i) v2);
 }
 
+static_always_inline u16x16
+u16x16_mask_last (u16x16 v, u8 n_last)
+{
+  const u16x16 masks[17] = {
+    {0},
+    {-1},
+    {-1, -1},
+    {-1, -1, -1},
+    {-1, -1, -1, -1},
+    {-1, -1, -1, -1, -1},
+    {-1, -1, -1, -1, -1, -1},
+    {-1, -1, -1, -1, -1, -1, -1},
+    {-1, -1, -1, -1, -1, -1, -1, -1},
+    {-1, -1, -1, -1, -1, -1, -1, -1, -1},
+    {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+    {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+    {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+    {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+    {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+    {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+    {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
+  };
+
+  ASSERT (n_last < 17);
+
+  return v & masks[16 - n_last];
+}
+
 #endif /* included_vector_avx2_h */
 
 /*