[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