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