31#ifndef ETL_BIT_INCLUDED
32#define ETL_BIT_INCLUDED
43#if ETL_USING_CPP20 && ETL_USING_STL
52 template <
typename TDestination,
typename TSource>
54 typename etl::enable_if<!(etl::is_integral<TDestination>::value&& etl::is_integral<TSource>::value) &&
55 (
sizeof(TDestination) ==
sizeof(TSource)) &&
56 etl::is_trivially_copyable<TSource>::value &&
57 etl::is_trivially_copyable<TDestination>::value, TDestination>::type
60 TDestination destination;
62 memcpy(&destination, &source,
sizeof(TDestination));
70 template <
typename TDestination,
typename TSource>
73 typename etl::enable_if<(etl::is_integral<TDestination>::value && etl::is_integral<TSource>::value) &&
74 (
sizeof(TDestination) ==
sizeof(TSource)), TDestination>::type
77 return static_cast<TDestination
>(source);
95 ETL_NODISCARD ETL_CONSTEXPR14
98 return (value & (value - 1)) == 0;
103 template <
typename T>
104 ETL_NODISCARD ETL_CONSTEXPR14
114 template <
typename T>
115 ETL_NODISCARD ETL_CONSTEXPR14
125 template <
typename T>
126 ETL_NODISCARD ETL_CONSTEXPR14
136 template <
typename T>
137 ETL_NODISCARD ETL_CONSTEXPR14
148 template <
typename T>
153#if ETL_USING_CPP20 && ETL_USING_STL
154 return std::bit_width(value);
163 template <
typename T>
164 ETL_NODISCARD ETL_CONSTEXPR14
168#if ETL_USING_CPP20 && ETL_USING_STL
169 return std::bit_ceil(value);
185 template <
typename T>
186 ETL_NODISCARD ETL_CONSTEXPR14
190#if ETL_USING_CPP20 && ETL_USING_STL
191 return std::bit_floor(value);
207 template <
typename T>
208 ETL_NODISCARD ETL_CONSTEXPR14
210 rotl(T value,
int n) ETL_NOEXCEPT
225 template <
typename T>
226 ETL_NODISCARD ETL_CONSTEXPR14
228 rotr(T value,
int n) ETL_NOEXCEPT
243 template <
typename T>
244 ETL_NODISCARD ETL_CONSTEXPR14
ETL_CONSTEXPR14 etl::enable_if< etl::is_integral< T >::value &&etl::is_unsigned< T >::value &&(etl::integral_limits< T >::bits==16U), uint_least8_t >::type count_trailing_ones(T value)
Definition binary.h:1388
ETL_CONSTEXPR14 T rotate_left(T value)
Definition binary.h:117
ETL_CONSTEXPR14 etl::enable_if< etl::is_integral< T >::value &&etl::is_unsigned< T >::value &&(etl::integral_limits< T >::bits==16U), uint_least8_t >::type count_bits(T value)
Definition binary.h:923
ETL_CONSTEXPR14 etl::enable_if< etl::is_integral< T >::value &&etl::is_unsigned< T >::value &&(etl::integral_limits< T >::bits==16U), uint_least8_t >::type count_trailing_zeros(T value)
Definition binary.h:1142
ETL_CONSTEXPR14 etl::enable_if< etl::is_integral< T >::value &&etl::is_unsigned< T >::value &&(etl::integral_limits< T >::bits==16U), uint_least8_t >::type count_leading_ones(T value)
Definition binary.h:1874
ETL_CONSTEXPR14 etl::enable_if< etl::is_integral< T >::value &&etl::is_unsigned< T >::value &&(etl::integral_limits< T >::bits==16U), uint_least8_t >::type count_leading_zeros(T value)
Definition binary.h:1628
ETL_CONSTEXPR14 etl::enable_if< etl::is_integral< T >::value &&etl::is_unsigned< T >::value &&(etl::integral_limits< T >::bits==16U), T >::type reverse_bytes(T value)
Definition binary.h:740
ETL_CONSTEXPR14 T rotate_right(T value)
Definition binary.h:162
Definition integral_limits.h:516
enable_if
Definition type_traits_generator.h:1254
bitset_ext
Definition absolute.h:39
ETL_NODISCARD ETL_CONSTEXPR14 etl::enable_if< etl::is_unsigned< T >::value, T >::type rotr(T value, int n) ETL_NOEXCEPT
rotr
Definition bit.h:228
ETL_NODISCARD ETL_CONSTEXPR14 etl::enable_if< etl::is_unsigned< T >::value, int >::type countl_one(T value) ETL_NOEXCEPT
countl_one
Definition bit.h:117
ETL_NODISCARD ETL_CONSTEXPR14 etl::enable_if< etl::is_unsigned< T >::value, T >::type rotl(T value, int n) ETL_NOEXCEPT
rotl
Definition bit.h:210
ETL_NODISCARD ETL_CONSTEXPR14 etl::enable_if< etl::is_unsigned< T >::value, T >::type bit_floor(T value) ETL_NOEXCEPT
bit_floor
Definition bit.h:188
ETL_CONSTEXPR14 etl::enable_if< etl::is_integral< T >::value, T >::type byteswap(T value) ETL_NOEXCEPT
byteswap
Definition bit.h:86
ETL_NODISCARD ETL_CONSTEXPR14 etl::enable_if< etl::is_unsigned< T >::value, int >::type popcount(T value) ETL_NOEXCEPT
popcount
Definition bit.h:246
ETL_NODISCARD ETL_CONSTEXPR14 etl::enable_if< etl::is_unsigned< T >::value, bool >::type has_single_bit(T value) ETL_NOEXCEPT
has_single_bit
Definition bit.h:96
ETL_NODISCARD ETL_CONSTEXPR14 etl::enable_if< etl::is_unsigned< T >::value, int >::type countr_one(T value) ETL_NOEXCEPT
countr_one
Definition bit.h:139
ETL_CONSTEXPR14 etl::enable_if< etl::is_unsigned< T >::value, T >::type bit_width(T value) ETL_NOEXCEPT
bit_width
Definition bit.h:151
ETL_NODISCARD ETL_CONSTEXPR14 etl::enable_if< etl::is_unsigned< T >::value, int >::type countr_zero(T value) ETL_NOEXCEPT
countr_zero
Definition bit.h:128
ETL_NODISCARD ETL_CONSTEXPR14 etl::enable_if< etl::is_unsigned< T >::value, T >::type bit_ceil(T value)
bit_ceil
Definition bit.h:166
ETL_NODISCARD ETL_CONSTEXPR14 etl::enable_if< etl::is_unsigned< T >::value, int >::type countl_zero(T value) ETL_NOEXCEPT
countl_zero
Definition bit.h:106
ETL_NODISCARD etl::enable_if<!(etl::is_integral< TDestination >::value &&etl::is_integral< TSource >::value)&&(sizeof(TDestination)==sizeof(TSource))&&etl::is_trivially_copyable< TSource >::value &&etl::is_trivially_copyable< TDestination >::value, TDestination >::type bit_cast(const TSource &source) ETL_NOEXCEPT
bit_cast - Type to different type.
Definition bit.h:58