tetl 0.1.0
Embedded Template Library
Loading...
Searching...
No Matches
rotl.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: BSL-1.0
2
3#ifndef TETL_BIT_ROTL_HPP
4#define TETL_BIT_ROTL_HPP
5
8
9namespace etl {
10
15template <etl::builtin_unsigned_integer UInt>
16constexpr auto rotl(UInt t, int s) noexcept -> UInt
17{
18 auto const c = static_cast<unsigned>(s);
19 auto const d = static_cast<unsigned>(etl::numeric_limits<UInt>::digits);
20 if ((c % d) == 0U) {
21 return t;
22 }
23 return static_cast<UInt>((t << (c % d)) | (t >> (d - (c % d))));
24}
25
26} // namespace etl
27
28#endif // TETL_BIT_ROTL_HPP
constexpr auto rotl(UInt t, int s) noexcept -> UInt
Computes the result of bitwise left-rotating the value of x by s positions. This operation is also kn...
Definition rotl.hpp:16
Definition adjacent_find.hpp:8
static constexpr int digits
Definition numeric_limits.hpp:24