Lines Matching +full:bit +full:- +full:shift
1 /* SPDX-License-Identifier: GPL-2.0 */
9 # define aligned_byte_mask(n) ((1UL << 8*(n))-1)
11 # define aligned_byte_mask(n) (~0xffUL << (BITS_PER_LONG - 8 - 8*(n)))
31 #define for_each_set_bit(bit, addr, size) \ argument
32 for ((bit) = find_first_bit((addr), (size)); \
33 (bit) < (size); \
34 (bit) = find_next_bit((addr), (size), (bit) + 1))
36 /* same as for_each_set_bit() but use bit as value to start with */
37 #define for_each_set_bit_from(bit, addr, size) \ argument
38 for ((bit) = find_next_bit((addr), (size), (bit)); \
39 (bit) < (size); \
40 (bit) = find_next_bit((addr), (size), (bit) + 1))
42 #define for_each_clear_bit(bit, addr, size) \ argument
43 for ((bit) = find_first_zero_bit((addr), (size)); \
44 (bit) < (size); \
45 (bit) = find_next_zero_bit((addr), (size), (bit) + 1))
47 /* same as for_each_clear_bit() but use bit as value to start with */
48 #define for_each_clear_bit_from(bit, addr, size) \ argument
49 for ((bit) = find_next_zero_bit((addr), (size), (bit)); \
50 (bit) < (size); \
51 (bit) = find_next_zero_bit((addr), (size), (bit) + 1))
54 * for_each_set_clump8 - iterate over bitmap for each 8-bit clump with set bits
55 * @start: bit offset to start search and to store the current iteration offset
56 * @clump: location to store copy of current 8-bit clump
70 return order; /* We could be slightly more clever with -1 here... */ in get_bitmask_order()
79 * rol64 - rotate a 64-bit value left
81 * @shift: bits to roll
83 static inline __u64 rol64(__u64 word, unsigned int shift) in rol64() argument
85 return (word << (shift & 63)) | (word >> ((-shift) & 63)); in rol64()
89 * ror64 - rotate a 64-bit value right
91 * @shift: bits to roll
93 static inline __u64 ror64(__u64 word, unsigned int shift) in ror64() argument
95 return (word >> (shift & 63)) | (word << ((-shift) & 63)); in ror64()
99 * rol32 - rotate a 32-bit value left
101 * @shift: bits to roll
103 static inline __u32 rol32(__u32 word, unsigned int shift) in rol32() argument
105 return (word << (shift & 31)) | (word >> ((-shift) & 31)); in rol32()
109 * ror32 - rotate a 32-bit value right
111 * @shift: bits to roll
113 static inline __u32 ror32(__u32 word, unsigned int shift) in ror32() argument
115 return (word >> (shift & 31)) | (word << ((-shift) & 31)); in ror32()
119 * rol16 - rotate a 16-bit value left
121 * @shift: bits to roll
123 static inline __u16 rol16(__u16 word, unsigned int shift) in rol16() argument
125 return (word << (shift & 15)) | (word >> ((-shift) & 15)); in rol16()
129 * ror16 - rotate a 16-bit value right
131 * @shift: bits to roll
133 static inline __u16 ror16(__u16 word, unsigned int shift) in ror16() argument
135 return (word >> (shift & 15)) | (word << ((-shift) & 15)); in ror16()
139 * rol8 - rotate an 8-bit value left
141 * @shift: bits to roll
143 static inline __u8 rol8(__u8 word, unsigned int shift) in rol8() argument
145 return (word << (shift & 7)) | (word >> ((-shift) & 7)); in rol8()
149 * ror8 - rotate an 8-bit value right
151 * @shift: bits to roll
153 static inline __u8 ror8(__u8 word, unsigned int shift) in ror8() argument
155 return (word >> (shift & 7)) | (word << ((-shift) & 7)); in ror8()
159 * sign_extend32 - sign extend a 32-bit value using specified bit as sign-bit
161 * @index: 0 based bit index (0<=index<32) to sign bit
163 * This is safe to use for 16- and 8-bit types as well.
167 __u8 shift = 31 - index; in sign_extend32() local
168 return (__s32)(value << shift) >> shift; in sign_extend32()
172 * sign_extend64 - sign extend a 64-bit value using specified bit as sign-bit
174 * @index: 0 based bit index (0<=index<64) to sign bit
178 __u8 shift = 63 - index; in sign_extend64() local
179 return (__s64)(value << shift) >> shift; in sign_extend64()
192 return -1; in get_count_order()
194 return fls(--count); in get_count_order()
198 * get_count_order_long - get order after rounding @l up to power of 2
206 return -1; in get_count_order_long()
207 return (int)fls_long(--l); in get_count_order_long()
211 * __ffs64 - find first set bit in a 64 bit word
212 * @word: The 64 bit word
214 * On 64 bit arches this is a synomyn for __ffs
216 * is non-zero before calling this.
230 * assign_bit - Assign value to a bit in memory
231 * @nr: the bit to set
288 * find_last_bit - find the last set bit in a memory region
292 * Returns the bit number of the last set bit, or size.