xref: /dpdk/lib/eal/loongarch/include/rte_prefetch.h (revision 719834a6849e1daf4a70ff7742bbcc3ae7e25607)
129631ee5SMin Zhou /* SPDX-License-Identifier: BSD-3-Clause
229631ee5SMin Zhou  * Copyright(c) 2022 Loongson Technology Corporation Limited
329631ee5SMin Zhou  */
429631ee5SMin Zhou 
529631ee5SMin Zhou #ifndef RTE_PREFETCH_LOONGARCH_H
629631ee5SMin Zhou #define RTE_PREFETCH_LOONGARCH_H
729631ee5SMin Zhou 
81094dd94SDavid Marchand #include <rte_compat.h>
929631ee5SMin Zhou #include <rte_common.h>
1029631ee5SMin Zhou #include "generic/rte_prefetch.h"
1129631ee5SMin Zhou 
12*719834a6SMattias Rönnblom #ifdef __cplusplus
13*719834a6SMattias Rönnblom extern "C" {
14*719834a6SMattias Rönnblom #endif
15*719834a6SMattias Rönnblom 
1629631ee5SMin Zhou static inline void rte_prefetch0(const volatile void *p)
1729631ee5SMin Zhou {
1829631ee5SMin Zhou 	__builtin_prefetch((const void *)(uintptr_t)p, 0, 3);
1929631ee5SMin Zhou }
2029631ee5SMin Zhou 
2129631ee5SMin Zhou static inline void rte_prefetch1(const volatile void *p)
2229631ee5SMin Zhou {
2329631ee5SMin Zhou 	__builtin_prefetch((const void *)(uintptr_t)p, 0, 2);
2429631ee5SMin Zhou }
2529631ee5SMin Zhou 
2629631ee5SMin Zhou static inline void rte_prefetch2(const volatile void *p)
2729631ee5SMin Zhou {
2829631ee5SMin Zhou 	__builtin_prefetch((const void *)(uintptr_t)p, 0, 1);
2929631ee5SMin Zhou }
3029631ee5SMin Zhou 
3129631ee5SMin Zhou static inline void rte_prefetch_non_temporal(const volatile void *p)
3229631ee5SMin Zhou {
3329631ee5SMin Zhou 	/* non-temporal version not available, fallback to rte_prefetch0 */
3429631ee5SMin Zhou 	rte_prefetch0(p);
3529631ee5SMin Zhou }
3629631ee5SMin Zhou 
3729631ee5SMin Zhou __rte_experimental
3829631ee5SMin Zhou static inline void
3929631ee5SMin Zhou rte_cldemote(const volatile void *p)
4029631ee5SMin Zhou {
4129631ee5SMin Zhou 	RTE_SET_USED(p);
4229631ee5SMin Zhou }
4329631ee5SMin Zhou 
4429631ee5SMin Zhou #ifdef __cplusplus
4529631ee5SMin Zhou }
4629631ee5SMin Zhou #endif
4729631ee5SMin Zhou 
4829631ee5SMin Zhou #endif /* RTE_PREFETCH_LOONGARCH_H */
49