diff options
author | Damjan Marion <damarion@cisco.com> | 2021-05-05 19:31:41 +0200 |
---|---|---|
committer | Damjan Marion <damarion@cisco.com> | 2021-05-05 19:57:04 +0200 |
commit | 7d14aad6379ebf96b75dd076260a2fccb7caa3b4 (patch) | |
tree | d9d4618182aa3f0da578a583c459eb93f95a7c80 /src/vppinfra/vector_avx512.h | |
parent | a7cea39b335efbad736addf926a9fb2c8c64a460 (diff) |
vppinfra: fix x86 packs / packus wrappers
They both take signed value as input.
Type: fix
Change-Id: If3d8ec4e0b1c02d7d65262bdd9db49ff7fbfef39
Signed-off-by: Damjan Marion <damarion@cisco.com>
Diffstat (limited to 'src/vppinfra/vector_avx512.h')
-rw-r--r-- | src/vppinfra/vector_avx512.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/vppinfra/vector_avx512.h b/src/vppinfra/vector_avx512.h index 2f5763e3c92..3a01c1ed824 100644 --- a/src/vppinfra/vector_avx512.h +++ b/src/vppinfra/vector_avx512.h @@ -85,6 +85,19 @@ u16x32_msb_mask (u16x32 v) return (u32) _mm512_movepi16_mask ((__m512i) v); } +/* 512-bit packs */ +#define _(f, t, fn) \ + always_inline t t##_pack (f lo, f hi) \ + { \ + return (t) fn ((__m512i) lo, (__m512i) hi); \ + } + +_ (i16x32, i8x64, _mm512_packs_epi16) +_ (i16x32, u8x64, _mm512_packus_epi16) +_ (i32x16, i16x32, _mm512_packs_epi32) +_ (i32x16, u16x32, _mm512_packus_epi32) +#undef _ + static_always_inline u32x16 u32x16_byte_swap (u32x16 v) { |