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