1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2016-2020 Intel Corporation
3  */
4 
5 #ifndef _DLB_INLINE_FNS_H_
6 #define _DLB_INLINE_FNS_H_
7 
8 #include "rte_memcpy.h"
9 #include "rte_io.h"
10 
11 /* Inline functions required in more than one source file. */
12 
13 static inline struct dlb_eventdev *
dlb_pmd_priv(const struct rte_eventdev * eventdev)14 dlb_pmd_priv(const struct rte_eventdev *eventdev)
15 {
16 	return eventdev->data->dev_private;
17 }
18 
19 static inline void
dlb_movntdq_single(void * dest,void * src)20 dlb_movntdq_single(void *dest, void *src)
21 {
22 	long long *_src  = (long long *)src;
23 	__m128i src_data0 = (__m128i){_src[0], _src[1]};
24 
25 	_mm_stream_si128(dest, src_data0);
26 }
27 
28 static inline void
dlb_movdir64b(void * dest,void * src)29 dlb_movdir64b(void *dest, void *src)
30 {
31 	asm volatile(".byte 0x66, 0x0f, 0x38, 0xf8, 0x02"
32 		:
33 		: "a" (dest), "d" (src));
34 }
35 
36 #endif /* _DLB_INLINE_FNS_H_ */
37