xref: /dpdk/drivers/event/dlb2/dlb2_inline_fns.h (revision 6e2e98d6775b9d39ef4d5ef75d86416085154c88)
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2016-2020 Intel Corporation
3  */
4 
5 #ifndef _DLB2_INLINE_FNS_H_
6 #define _DLB2_INLINE_FNS_H_
7 
8 #include <eventdev_pmd.h>
9 
10 /* Inline functions required in more than one source file. */
11 
12 static inline struct dlb2_eventdev *
13 dlb2_pmd_priv(const struct rte_eventdev *eventdev)
14 {
15 	return eventdev->data->dev_private;
16 }
17 
18 static inline void
19 dlb2_movntdq_single(void *pp_addr, void *qe4)
20 {
21 	long long *_qe  = (long long *)qe4;
22 	__m128i src_data0 = (__m128i){_qe[0], _qe[1]};
23 
24 	_mm_stream_si128(pp_addr, src_data0);
25 }
26 
27 static inline void
28 dlb2_movdir64b(void *dest, void *src)
29 {
30 	asm volatile(".byte 0x66, 0x0f, 0x38, 0xf8, 0x02"
31 		:
32 	: "a" (dest), "d" (src));
33 }
34 
35 static inline void
36 dlb2_movdir64b_single(void *pp_addr, void *qe4)
37 {
38 	asm volatile(".byte 0x66, 0x0f, 0x38, 0xf8, 0x02"
39 		:
40 	: "a" (pp_addr), "d" (qe4));
41 }
42 
43 #endif /* _DLB2_INLINE_FNS_H_ */
44