> -----Original Message----- > From: David Marchand <david.march...@redhat.com> > Sent: Saturday, October 31, 2020 4:54 PM > To: McDaniel, Timothy <timothy.mcdan...@intel.com> > Cc: dev <dev@dpdk.org>; Carrillo, Erik G <erik.g.carri...@intel.com>; Eads, > Gage <gage.e...@intel.com>; Van Haaren, Harry > <harry.van.haa...@intel.com>; Jerin Jacob Kollanukkaran > <jer...@marvell.com>; Thomas Monjalon <tho...@monjalon.net> > Subject: Re: [dpdk-dev] [PATCH v14 05/23] event/dlb: add inline functions > > On Sat, Oct 31, 2020 at 7:17 PM Timothy McDaniel > <timothy.mcdan...@intel.com> wrote: > > > > Add miscellaneous inline functions that may be called > > from multiple files. These functions include inline > > assembly of new x86 instructions, such as movdir64b, > > since they are not available as builtin functions in > > the minimum supported GCC version. > > > > Signed-off-by: Timothy McDaniel <timothy.mcdan...@intel.com> > > Reviewed-by: Gage Eads <gage.e...@intel.com> > > --- > > drivers/event/dlb/dlb_inline_fns.h | 40 > ++++++++++++++++++++++++++++++++++++++ > > 1 file changed, 40 insertions(+) > > create mode 100644 drivers/event/dlb/dlb_inline_fns.h > > > > diff --git a/drivers/event/dlb/dlb_inline_fns.h > b/drivers/event/dlb/dlb_inline_fns.h > > new file mode 100644 > > index 0000000..1ecddb7 > > --- /dev/null > > +++ b/drivers/event/dlb/dlb_inline_fns.h > > @@ -0,0 +1,40 @@ > > +/* SPDX-License-Identifier: BSD-3-Clause > > + * Copyright(c) 2016-2020 Intel Corporation > > + */ > > + > > Missing banners, like in dlb2 header (caught by diffing with it). > > #ifndef __DLB_INLINE_FNS_H__ > etc... > > > +#include "rte_memcpy.h" > > +#include "rte_io.h" > > + > > +/* Inline functions required in more than one source file. */ > > + > > +static inline struct dlb_eventdev * > > +dlb_pmd_priv(const struct rte_eventdev *eventdev) > > +{ > > + return eventdev->data->dev_private; > > +} > > + > > +static inline void > > +dlb_movntdq_single(void *dest, void *src) > > +{ > > + long long *_src = (long long *)src; > > + __m128i src_data0 = (__m128i){_src[0], _src[1]}; > > + > > + _mm_stream_si128(dest, src_data0); > > +} > > + > > +static inline void > > +dlb_cldemote(void *addr) > > +{ > > + /* Load addr into RSI, then demote the cache line of the address > > + * contained in that register. > > + */ > > + asm volatile(".byte 0x0f, 0x1c, 0x06" :: "S" (addr)); > > +} > > Use EAL API. > > > > + > > +static inline void > > +dlb_movdir64b(void *dest, void *src) > > +{ > > + asm volatile(".byte 0x66, 0x0f, 0x38, 0xf8, 0x02" > > + : > > + : "a" (dest), "d" (src)); > > +} > > NO! > We introduced stuff in EAL for this, please double check. > > > -- > David Marchand
I also do not see a replacement for the new MOVDIR64B instruction in dpdk-next-eventdev or dpdk main.