7#include "../utility/utility.hpp"
8#include "../macros.hpp"
10#if (HI_COMPILER == HI_CC_GCC || HI_COMPILER == HI_CC_CLANG) && (HI_PROCESSOR == HI_CPU_X64 || HI_PROCESSOR == HI_CPU_ARM64)
11#define HI_HAS_INT128 1
14#if !defined(HI_HAS_INT128)
39namespace hi::inline
v1 {
45using int128_t = bigint<uintreg_t, 128 / (
sizeof(uintreg_t) * CHAR_BIT),
true>;
49using uint128_t = bigint<uintreg_t, 128 / (
sizeof(uintreg_t) * CHAR_BIT),
false>;
52template<>
struct has_intxx<128> : std::true_type {};
53template<>
struct has_uintxx<128> : std::true_type {};
54template<>
struct make_uintxx<128> {
using type =
uint128_t; };
55template<>
struct make_intxx<128> {
using type =
int128_t; };
60#if HI_PROCESSOR == HI_CPU_X86 || HI_PROCESSOR == HI_CPU_ARM
70#elif HI_PROCESSOR == HI_CPU_X64 || HI_PROCESSOR == HI_CPU_ARM64
81#error "longreg_t ulongreg_t missing implementation"
DOXYGEN BUG.
Definition algorithm.hpp:16
int64_t longreg_t
Signed integer twice the size of a standard CPU register.
Definition stdint.hpp:64
__int128 int128_t
Signed 128 bit integer.
Definition architecture.hpp:54
unsigned __int128 uint128_t
Unsigned 128 bit integer.
Definition architecture.hpp:58
uint64_t ulongreg_t
Unsigned integer twice the size of a standard CPU register.
Definition stdint.hpp:68