Lines Matching refs:mask
21 inline BOOST_MP_CXX14_CONSTEXPR unsigned find_lsb_default(Unsigned mask) in find_lsb_default() argument
24 while (!(mask & 1u)) in find_lsb_default()
26 mask >>= 1; in find_lsb_default()
33 inline BOOST_MP_CXX14_CONSTEXPR unsigned find_msb_default(Unsigned mask) in find_msb_default() argument
36 while (mask) in find_msb_default()
39 mask >>= 1; in find_msb_default()
45 inline BOOST_MP_CXX14_CONSTEXPR unsigned find_lsb(Unsigned mask, const mpl::int_<0>&) in find_lsb() argument
47 return find_lsb_default(mask); in find_lsb()
51 inline BOOST_MP_CXX14_CONSTEXPR unsigned find_msb(Unsigned mask, const mpl::int_<0>&) in find_msb() argument
53 return find_msb_default(mask); in find_msb()
60 BOOST_FORCEINLINE unsigned find_lsb(unsigned long mask, const mpl::int_<1>&) in find_lsb() argument
63 _BitScanForward(&result, mask); in find_lsb()
67 BOOST_FORCEINLINE unsigned find_msb(unsigned long mask, const mpl::int_<1>&) in find_msb() argument
70 _BitScanReverse(&result, mask); in find_msb()
77 BOOST_FORCEINLINE unsigned find_lsb(unsigned __int64 mask, const mpl::int_<2>&) in find_lsb() argument
80 _BitScanForward64(&result, mask); in find_lsb()
84 BOOST_FORCEINLINE unsigned find_msb(Unsigned mask, const mpl::int_<2>&) in find_msb() argument
87 _BitScanReverse64(&result, mask); in find_msb()
93 BOOST_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR unsigned find_lsb(Unsigned mask) in find_lsb() argument
109 if (BOOST_MP_IS_CONST_EVALUATED(mask)) in find_lsb()
111 return find_lsb_default(mask); in find_lsb()
115 return find_lsb(static_cast<ui_type>(mask), tag_type()); in find_lsb()
119 BOOST_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR unsigned find_msb(Unsigned mask) in find_msb() argument
135 if (BOOST_MP_IS_CONST_EVALUATED(mask)) in find_msb()
137 return find_msb_default(mask); in find_msb()
141 return find_msb(static_cast<ui_type>(mask), tag_type()); in find_msb()
146 BOOST_FORCEINLINE unsigned find_lsb(unsigned mask, mpl::int_<1> const&) in find_lsb() argument
148 return __builtin_ctz(mask); in find_lsb()
150 BOOST_FORCEINLINE unsigned find_lsb(unsigned long mask, mpl::int_<2> const&) in find_lsb() argument
152 return __builtin_ctzl(mask); in find_lsb()
154 BOOST_FORCEINLINE unsigned find_lsb(boost::ulong_long_type mask, mpl::int_<3> const&) in find_lsb() argument
156 return __builtin_ctzll(mask); in find_lsb()
158 BOOST_FORCEINLINE unsigned find_msb(unsigned mask, mpl::int_<1> const&) in find_msb() argument
160 return sizeof(unsigned) * CHAR_BIT - 1 - __builtin_clz(mask); in find_msb()
162 BOOST_FORCEINLINE unsigned find_msb(unsigned long mask, mpl::int_<2> const&) in find_msb() argument
164 return sizeof(unsigned long) * CHAR_BIT - 1 - __builtin_clzl(mask); in find_msb()
166 BOOST_FORCEINLINE unsigned find_msb(boost::ulong_long_type mask, mpl::int_<3> const&) in find_msb() argument
168 return sizeof(boost::ulong_long_type) * CHAR_BIT - 1 - __builtin_clzll(mask); in find_msb()
174 BOOST_FORCEINLINE unsigned find_msb(uint128_type mask, mpl::int_<0> const&) in find_msb() argument
181 val.v = mask; in find_msb()
192 BOOST_FORCEINLINE unsigned find_lsb(uint128_type mask, mpl::int_<0> const&) in find_lsb() argument
199 val.v = mask; in find_lsb()
213 BOOST_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR unsigned find_lsb(Unsigned mask) in find_lsb() argument
227 if (BOOST_MP_IS_CONST_EVALUATED(mask)) in find_lsb()
229 return find_lsb_default(mask); in find_lsb()
233 return find_lsb(static_cast<ui_type>(mask), tag_type()); in find_lsb()
236 BOOST_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR unsigned find_msb(Unsigned mask) in find_msb() argument
250 if (BOOST_MP_IS_CONST_EVALUATED(mask)) in find_msb()
252 return find_msb_default(mask); in find_msb()
256 return find_msb(static_cast<ui_type>(mask), tag_type()); in find_msb()
259 BOOST_FORCEINLINE unsigned find_lsb(unsigned mask, mpl::int_<1> const&) in find_lsb() argument
261 return _bit_scan_forward(mask); in find_lsb()
263 BOOST_FORCEINLINE unsigned find_msb(unsigned mask, mpl::int_<1> const&) in find_msb() argument
265 return _bit_scan_reverse(mask); in find_msb()
268 BOOST_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR unsigned find_lsb(Unsigned mask) in find_lsb() argument
276 if (BOOST_MP_IS_CONST_EVALUATED(mask)) in find_lsb()
278 return find_lsb_default(mask); in find_lsb()
282 return find_lsb(static_cast<ui_type>(mask), tag_type()); in find_lsb()
285 BOOST_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR unsigned find_msb(Unsigned mask) in find_msb() argument
293 if (BOOST_MP_IS_CONST_EVALUATED(mask)) in find_msb()
295 return find_msb_default(mask); in find_msb()
299 return find_msb(static_cast<ui_type>(mask), tag_type()); in find_msb()
303 BOOST_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR unsigned find_lsb(Unsigned mask) in find_lsb() argument
305 return find_lsb(mask, mpl::int_<0>()); in find_lsb()
308 BOOST_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR unsigned find_msb(Unsigned mask) in find_msb() argument
310 return find_msb(mask, mpl::int_<0>()); in find_msb()