Branch data Line data Source code
1 : : /* SPDX-License-Identifier: BSD-3-Clause 2 : : * Copyright(c) 2001-2023 Intel Corporation 3 : : */ 4 : : 5 : : #ifndef _ICE_TMATCH_H_ 6 : : #define _ICE_TMATCH_H_ 7 : : 8 : : static inline 9 : : bool ice_ternary_match_byte(u8 key, u8 key_inv, u8 pat) 10 : : { 11 : : u8 k1, k2, v; 12 : : int i; 13 : : 14 [ # # ]: 0 : for (i = 0; i < 8; i++) { 15 : 0 : k1 = (u8)(key & (1 << i)); 16 : 0 : k2 = (u8)(key_inv & (1 << i)); 17 : 0 : v = (u8)(pat & (1 << i)); 18 : : 19 [ # # ]: 0 : if (k1 != 0 && k2 != 0) 20 : 0 : continue; 21 [ # # ]: 0 : if (k1 == 0 && k2 == 0) 22 : : return false; 23 : : 24 [ # # ]: 0 : if (k1 == v) 25 : : return false; 26 : : } 27 : : 28 : : return true; 29 : : } 30 : : 31 : : static inline 32 : 0 : bool ice_ternary_match(const u8 *key, const u8 *key_inv, 33 : : const u8 *pat, int len) 34 : : { 35 : : int i; 36 : : 37 [ # # ]: 0 : for (i = 0; i < len; i++) 38 [ # # ]: 0 : if (!ice_ternary_match_byte(key[i], key_inv[i], pat[i])) 39 : : return false; 40 : : 41 : : return true; 42 : : } 43 : : 44 : : #endif /* _ICE_TMATCH_H_ */