Branch data Line data Source code
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 : 0 : keycmp_generic(void *key1, void *key2, uint32_t key_size)
10 : : {
11 : 0 : 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 : 0 : KEYCMP(1)
22 : 0 : KEYCMP(2)
23 : 0 : KEYCMP(3)
24 : 0 : KEYCMP(4)
25 : 0 : KEYCMP(5)
26 : 0 : KEYCMP(6)
27 : 0 : KEYCMP(7)
28 : 0 : KEYCMP(8)
29 : 0 : KEYCMP(9)
30 : :
31 : 0 : KEYCMP(10)
32 : 0 : KEYCMP(11)
33 : 0 : KEYCMP(12)
34 : 0 : KEYCMP(13)
35 : 0 : KEYCMP(14)
36 : 0 : KEYCMP(15)
37 : 0 : KEYCMP(16)
38 : 0 : KEYCMP(17)
39 : 0 : KEYCMP(18)
40 : 0 : KEYCMP(19)
41 : :
42 : 0 : KEYCMP(20)
43 : 0 : KEYCMP(21)
44 : 0 : KEYCMP(22)
45 : 0 : KEYCMP(23)
46 : 0 : KEYCMP(24)
47 : 0 : KEYCMP(25)
48 : 0 : KEYCMP(26)
49 : 0 : KEYCMP(27)
50 : 0 : KEYCMP(28)
51 : 0 : KEYCMP(29)
52 : :
53 : 0 : KEYCMP(30)
54 : 0 : KEYCMP(31)
55 : 0 : KEYCMP(32)
56 : 0 : KEYCMP(33)
57 : 0 : KEYCMP(34)
58 : 0 : KEYCMP(35)
59 : 0 : KEYCMP(36)
60 : 0 : KEYCMP(37)
61 : 0 : KEYCMP(38)
62 : 0 : KEYCMP(39)
63 : :
64 : 0 : KEYCMP(40)
65 : 0 : KEYCMP(41)
66 : 0 : KEYCMP(42)
67 : 0 : KEYCMP(43)
68 : 0 : KEYCMP(44)
69 : 0 : KEYCMP(45)
70 : 0 : KEYCMP(46)
71 : 0 : KEYCMP(47)
72 : 0 : KEYCMP(48)
73 : 0 : KEYCMP(49)
74 : :
75 : 0 : KEYCMP(50)
76 : 0 : KEYCMP(51)
77 : 0 : KEYCMP(52)
78 : 0 : KEYCMP(53)
79 : 0 : KEYCMP(54)
80 : 0 : KEYCMP(55)
81 : 0 : KEYCMP(56)
82 : 0 : KEYCMP(57)
83 : 0 : KEYCMP(58)
84 : 0 : KEYCMP(59)
85 : :
86 : 0 : KEYCMP(60)
87 : 0 : KEYCMP(61)
88 : 0 : KEYCMP(62)
89 : 0 : KEYCMP(63)
90 : 0 : 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 : 0 : rte_swx_keycmp_func_get(uint32_t key_size)
161 : : {
162 [ # # ]: 0 : if (key_size && key_size <= 64)
163 : 0 : return keycmp_funcs[key_size - 1];
164 : :
165 : : return keycmp_generic;
166 : : }
|