xref: /dpdk/lib/table/rte_swx_keycmp.c (revision 7917b0d38e92e8b9ec5a870415b791420e10f11a)
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2022 Intel Corporation
3  */
4 #include <rte_common.h>
5 
6 #include "rte_swx_keycmp.h"
7 
8 static uint32_t
9 keycmp_generic(void *key1, void *key2, uint32_t key_size)
10 {
11 	return memcmp(key1, key2, key_size) ? 0 : 1;
12 }
13 
14 #define KEYCMP(N)                                                 \
15 static uint32_t                                                   \
16 keycmp##N(void *key1, void *key2, uint32_t key_size __rte_unused) \
17 {                                                                 \
18 	return memcmp(key1, key2, N) ? 0 : 1;                     \
19 }
20 
21 KEYCMP(1)
22 KEYCMP(2)
23 KEYCMP(3)
24 KEYCMP(4)
25 KEYCMP(5)
26 KEYCMP(6)
27 KEYCMP(7)
28 KEYCMP(8)
29 KEYCMP(9)
30 
31 KEYCMP(10)
32 KEYCMP(11)
33 KEYCMP(12)
34 KEYCMP(13)
35 KEYCMP(14)
36 KEYCMP(15)
37 KEYCMP(16)
38 KEYCMP(17)
39 KEYCMP(18)
40 KEYCMP(19)
41 
42 KEYCMP(20)
43 KEYCMP(21)
44 KEYCMP(22)
45 KEYCMP(23)
46 KEYCMP(24)
47 KEYCMP(25)
48 KEYCMP(26)
49 KEYCMP(27)
50 KEYCMP(28)
51 KEYCMP(29)
52 
53 KEYCMP(30)
54 KEYCMP(31)
55 KEYCMP(32)
56 KEYCMP(33)
57 KEYCMP(34)
58 KEYCMP(35)
59 KEYCMP(36)
60 KEYCMP(37)
61 KEYCMP(38)
62 KEYCMP(39)
63 
64 KEYCMP(40)
65 KEYCMP(41)
66 KEYCMP(42)
67 KEYCMP(43)
68 KEYCMP(44)
69 KEYCMP(45)
70 KEYCMP(46)
71 KEYCMP(47)
72 KEYCMP(48)
73 KEYCMP(49)
74 
75 KEYCMP(50)
76 KEYCMP(51)
77 KEYCMP(52)
78 KEYCMP(53)
79 KEYCMP(54)
80 KEYCMP(55)
81 KEYCMP(56)
82 KEYCMP(57)
83 KEYCMP(58)
84 KEYCMP(59)
85 
86 KEYCMP(60)
87 KEYCMP(61)
88 KEYCMP(62)
89 KEYCMP(63)
90 KEYCMP(64)
91 
92 static rte_swx_keycmp_func_t keycmp_funcs[] = {
93 	keycmp1,
94 	keycmp2,
95 	keycmp3,
96 	keycmp4,
97 	keycmp5,
98 	keycmp6,
99 	keycmp7,
100 	keycmp8,
101 	keycmp9,
102 	keycmp10,
103 	keycmp11,
104 	keycmp12,
105 	keycmp13,
106 	keycmp14,
107 	keycmp15,
108 	keycmp16,
109 	keycmp17,
110 	keycmp18,
111 	keycmp19,
112 	keycmp20,
113 	keycmp21,
114 	keycmp22,
115 	keycmp23,
116 	keycmp24,
117 	keycmp25,
118 	keycmp26,
119 	keycmp27,
120 	keycmp28,
121 	keycmp29,
122 	keycmp30,
123 	keycmp31,
124 	keycmp32,
125 	keycmp33,
126 	keycmp34,
127 	keycmp35,
128 	keycmp36,
129 	keycmp37,
130 	keycmp38,
131 	keycmp39,
132 	keycmp40,
133 	keycmp41,
134 	keycmp42,
135 	keycmp43,
136 	keycmp44,
137 	keycmp45,
138 	keycmp46,
139 	keycmp47,
140 	keycmp48,
141 	keycmp49,
142 	keycmp50,
143 	keycmp51,
144 	keycmp52,
145 	keycmp53,
146 	keycmp54,
147 	keycmp55,
148 	keycmp56,
149 	keycmp57,
150 	keycmp58,
151 	keycmp59,
152 	keycmp60,
153 	keycmp61,
154 	keycmp62,
155 	keycmp63,
156 	keycmp64,
157 };
158 
159 rte_swx_keycmp_func_t
160 rte_swx_keycmp_func_get(uint32_t key_size)
161 {
162 	if (key_size && key_size <= 64)
163 		return keycmp_funcs[key_size - 1];
164 
165 	return keycmp_generic;
166 }
167