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