4#ifndef TETL_CSTDINT_UINT128_HPP
5#define TETL_CSTDINT_UINT128_HPP
7#include <etl/_config/all.hpp>
9#include <etl/_cstdint/uint_t.hpp>
10#include <etl/_limits/numeric_limits.hpp>
22 constexpr uint128(uint64_t high, uint64_t low)
noexcept
23#if defined(_MSC_VER) || (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
60 return not(lhs
== rhs);
100 auto const [low, carry] = add_with_carry(a
.low(), b
.low());
110 static constexpr auto add_with_carry(uint64_t a, uint64_t b)
noexcept -> with_carry
112 auto const sum = a + b;
113 return with_carry{.val = sum, .carry =
static_cast<uint64_t>(sum < a)};
116#if defined(_MSC_VER) || (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
Definition adjacent_find.hpp:9
static constexpr bool is_specialized
Definition uint128.hpp:129
static constexpr auto lowest() noexcept -> uint128
Definition uint128.hpp:131
static constexpr auto max() noexcept -> uint128
Definition uint128.hpp:139
static constexpr auto min() noexcept -> uint128
Definition uint128.hpp:135
Definition numeric_limits.hpp:18
Definition uint128.hpp:14
friend constexpr auto operator!=(uint128 const &lhs, uint128 const &rhs) noexcept -> bool
Definition uint128.hpp:58
friend constexpr auto operator>=(uint128 const &a, uint128 const &b) noexcept -> bool
Definition uint128.hpp:78
constexpr auto high() const noexcept -> uint64_t
Definition uint128.hpp:48
constexpr uint128(uint64_t high, uint64_t low) noexcept
Definition uint128.hpp:22
constexpr auto low() const noexcept -> uint64_t
Definition uint128.hpp:43
constexpr operator bool() const noexcept
Definition uint128.hpp:33
friend constexpr auto operator>(uint128 const &a, uint128 const &b) noexcept -> bool
Definition uint128.hpp:68
constexpr operator uint64_t() const noexcept
Definition uint128.hpp:38
constexpr uint128()=default
friend constexpr auto operator==(uint128 const &lhs, uint128 const &rhs) noexcept -> bool
Definition uint128.hpp:53
friend constexpr auto operator&(uint128 const &lhs, uint128 const &rhs) noexcept -> uint128
Definition uint128.hpp:83
friend constexpr auto operator|(uint128 const &lhs, uint128 const &rhs) noexcept -> uint128
Definition uint128.hpp:88
friend constexpr auto operator<=(uint128 const &a, uint128 const &b) noexcept -> bool
Definition uint128.hpp:73
constexpr uint128(uint64_t val) noexcept
Definition uint128.hpp:17
friend constexpr auto operator^(uint128 const &lhs, uint128 const &rhs) noexcept -> uint128
Definition uint128.hpp:93
friend constexpr auto operator+(uint128 const &a, uint128 const &b) noexcept -> uint128
Definition uint128.hpp:98
friend constexpr auto operator<(uint128 const &a, uint128 const &b) noexcept -> bool
Definition uint128.hpp:63