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