[dpdk-dev] [PATCH v14 05/23] event/dlb: add inline functions
McDaniel, Timothy
timothy.mcdaniel at intel.com
Sun Nov 1 17:21:40 CET 2020
> -----Original Message-----
> From: David Marchand <david.marchand at redhat.com>
> Sent: Saturday, October 31, 2020 4:54 PM
> To: McDaniel, Timothy <timothy.mcdaniel at intel.com>
> Cc: dev <dev at dpdk.org>; Carrillo, Erik G <erik.g.carrillo at intel.com>; Eads,
> Gage <gage.eads at intel.com>; Van Haaren, Harry
> <harry.van.haaren at intel.com>; Jerin Jacob Kollanukkaran
> <jerinj at marvell.com>; Thomas Monjalon <thomas at 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.mcdaniel at 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.mcdaniel at intel.com>
> > Reviewed-by: Gage Eads <gage.eads at 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.
More information about the dev
mailing list