The RVV lookupx4 loads tbl24 with scalar code and always issues a
masked gather for tbl8. With the previous patch the scalar version is
faster on every core tried, so remove the RVV one.

Signed-off-by: Sun Yuechi <[email protected]>
---
 lib/lpm/meson.build   |  1 -
 lib/lpm/rte_lpm.h     |  2 --
 lib/lpm/rte_lpm_rvv.h | 59 -------------------------------------------
 3 files changed, 62 deletions(-)
 delete mode 100644 lib/lpm/rte_lpm_rvv.h

diff --git a/lib/lpm/meson.build b/lib/lpm/meson.build
index c4522eaf0c..cff8fed473 100644
--- a/lib/lpm/meson.build
+++ b/lib/lpm/meson.build
@@ -11,7 +11,6 @@ indirect_headers += files(
         'rte_lpm_scalar.h',
         'rte_lpm_sse.h',
         'rte_lpm_sve.h',
-        'rte_lpm_rvv.h',
 )
 deps += ['hash']
 deps += ['rcu']
diff --git a/lib/lpm/rte_lpm.h b/lib/lpm/rte_lpm.h
index 38a061513f..bcd3da9706 100644
--- a/lib/lpm/rte_lpm.h
+++ b/lib/lpm/rte_lpm.h
@@ -421,8 +421,6 @@ rte_lpm_lookupx4(const struct rte_lpm *lpm, xmm_t ip, 
uint32_t hop[4],
 #include "rte_lpm_altivec.h"
 #elif defined(RTE_ARCH_X86)
 #include "rte_lpm_sse.h"
-#elif defined(RTE_ARCH_RISCV) && defined(RTE_RISCV_FEATURE_V)
-#include "rte_lpm_rvv.h"
 #else
 #include "rte_lpm_scalar.h"
 #endif
diff --git a/lib/lpm/rte_lpm_rvv.h b/lib/lpm/rte_lpm_rvv.h
deleted file mode 100644
index 0d3dc91055..0000000000
--- a/lib/lpm/rte_lpm_rvv.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright (c) 2025 Institute of Software Chinese Academy of Sciences 
(ISCAS).
- */
-
-#ifndef _RTE_LPM_RVV_H_
-#define _RTE_LPM_RVV_H_
-
-#include <rte_vect.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define RTE_LPM_LOOKUP_SUCCESS 0x01000000
-#define RTE_LPM_VALID_EXT_ENTRY_BITMASK 0x03000000
-
-static inline void rte_lpm_lookupx4(
-       const struct rte_lpm *lpm, xmm_t ip, uint32_t hop[4], uint32_t defv)
-{
-       size_t vl = 4;
-
-       const uint32_t *tbl24_p = (const uint32_t *)lpm->tbl24;
-       uint32_t tbl_entries[4] = {
-               tbl24_p[((uint32_t)ip[0]) >> 8],
-               tbl24_p[((uint32_t)ip[1]) >> 8],
-               tbl24_p[((uint32_t)ip[2]) >> 8],
-               tbl24_p[((uint32_t)ip[3]) >> 8],
-       };
-       vuint32m1_t vtbl_entry = __riscv_vle32_v_u32m1(tbl_entries, vl);
-
-       vbool32_t mask = __riscv_vmseq_vx_u32m1_b32(
-           __riscv_vand_vx_u32m1(vtbl_entry, RTE_LPM_VALID_EXT_ENTRY_BITMASK, 
vl),
-           RTE_LPM_VALID_EXT_ENTRY_BITMASK, vl);
-
-       vuint32m1_t vtbl8_index = __riscv_vsll_vx_u32m1(
-           __riscv_vadd_vv_u32m1(
-               __riscv_vsll_vx_u32m1(__riscv_vand_vx_u32m1(vtbl_entry, 
0x00FFFFFF, vl), 8, vl),
-               __riscv_vand_vx_u32m1(
-                   __riscv_vle32_v_u32m1((const uint32_t *)&ip, vl), 
0x000000FF, vl),
-               vl),
-           2, vl);
-
-       vtbl_entry = __riscv_vluxei32_v_u32m1_mu(
-           mask, vtbl_entry, (const uint32_t *)(lpm->tbl8), vtbl8_index, vl);
-
-       vuint32m1_t vnext_hop = __riscv_vand_vx_u32m1(vtbl_entry, 0x00FFFFFF, 
vl);
-       mask = __riscv_vmseq_vx_u32m1_b32(
-           __riscv_vand_vx_u32m1(vtbl_entry, RTE_LPM_LOOKUP_SUCCESS, vl), 0, 
vl);
-
-       vnext_hop = __riscv_vmerge_vxm_u32m1(vnext_hop, defv, mask, vl);
-
-       __riscv_vse32_v_u32m1(hop, vnext_hop, vl);
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _RTE_LPM_RVV_H_ */
-- 
2.56.0

Reply via email to