[dpdk-dev] [PATCH v14 05/23] event/dlb: add inline functions

David Marchand david.marchand at redhat.com
Sat Oct 31 22:54:04 CET 2020


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



More information about the dev mailing list