LLVM 22.0.0git
bit.h File Reference

This file implements the C++20 <bit> header. More...

#include "llvm/Support/Compiler.h"
#include <cstddef>
#include <cstdint>
#include <limits>
#include <type_traits>
#include <cstring>
#include <machine/endian.h>

Go to the source code of this file.

Namespaces

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.

Enumerations

enum class  llvm::endianness { llvm::big , llvm::little , llvm::native = little }

Functions

template<typename To, typename From, typename = std::enable_if_t<sizeof(To) == sizeof(From)>, typename = std::enable_if_t<std::is_trivially_constructible<To>::value>, typename = std::enable_if_t<std::is_trivially_copyable<To>::value>, typename = std::enable_if_t<std::is_trivially_copyable<From>::value>>
To llvm::bit_cast (const From &from) noexcept
template<typename T, typename = std::enable_if_t<std::is_integral_v<T>>>
constexpr T llvm::byteswap (T V) noexcept
 Reverses the bytes in the given integer value V.
template<typename T, typename = std::enable_if_t<std::is_unsigned_v<T>>>
constexpr bool llvm::has_single_bit (T Value) noexcept
template<typename T>
int llvm::popcount (T Value) noexcept
 Count the number of set bits in a value.
template<typename T>
int llvm::countr_zero (T Val)
 Count number of 0's from the least significant bit to the most stopping at the first 1.
template<typename T>
int llvm::countl_zero (T Val)
 Count number of 0's from the most significant bit to the least stopping at the first 1.
template<typename T>
int llvm::countl_one (T Value)
 Count the number of ones from the most significant bit to the first zero bit.
template<typename T>
int llvm::countr_one (T Value)
 Count the number of ones from the least significant bit to the first zero bit.
template<typename T>
int llvm::bit_width (T Value)
 Returns the number of bits needed to represent Value if Value is nonzero.
template<typename T>
T llvm::bit_floor (T Value)
 Returns the largest integral power of two no greater than Value if Value is nonzero.
template<typename T>
T llvm::bit_ceil (T Value)
 Returns the smallest integral power of two no smaller than Value if Value is nonzero.
template<typename T, typename = std::enable_if_t<std::is_unsigned_v<T>>>
constexpr T llvm::rotr (T V, int R)
template<typename T, typename = std::enable_if_t<std::is_unsigned_v<T>>>
constexpr T llvm::rotl (T V, int R)

Detailed Description

This file implements the C++20 <bit> header.

Definition in file bit.h.