|
NexusForce 1.0.0
A rigorously engineered full-stack C++ backend library.
|
MSVC编译器内部函数的替代实现 更多...
函数 | |
| constexpr uint8_t | neforce::_addcarry_u64 (const uint8_t carry_in, const uint64_t a, const uint64_t b, uint64_t *out) noexcept |
| 带进位的64位无符号加法 | |
| constexpr uint8_t | neforce::_subborrow_u64 (const uint8_t borrow_in, const uint64_t a, const uint64_t b, uint64_t *out) noexcept |
| 带借位的64位无符号减法 | |
| constexpr uint64_t | neforce::_umul128 (const uint64_t a, const uint64_t b, uint64_t *hi_out) noexcept |
| 64位无符号乘法 | |
| constexpr uint64_t | neforce::_udiv128 (const uint64_t dividend_hi, const uint64_t dividend_lo, const uint64_t divisor, uint64_t *remainder) noexcept |
| 128位无符号除法(基于Knuth-D) | |
MSVC编译器内部函数的替代实现
|
constexprnoexcept |
带进位的64位无符号加法
| carry_in | 进位输入(0或1) |
| a | 第一个加数 |
| b | 第二个加数 |
| out | 输出结果(低64位) |
计算 a + b + carry_in,结果存入out,返回进位标志。
在文件 msvc_intrinsic.hpp 第 36 行定义.
引用了 _addcarry_u64().
被这些函数引用 _addcarry_u64(), neforce::uint128_t::mul128() , 以及 neforce::uint128_t::operator+=().
|
constexprnoexcept |
带借位的64位无符号减法
| borrow_in | 借位输入(0或1) |
| a | 被减数 |
| b | 减数 |
| out | 输出结果(低64位) |
计算 a - b - borrow_in,结果存入out,返回借位标志。
在文件 msvc_intrinsic.hpp 第 60 行定义.
引用了 _subborrow_u64().
被这些函数引用 _subborrow_u64() , 以及 neforce::uint128_t::operator-=().
|
constexprnoexcept |
128位无符号除法(基于Knuth-D)
| dividend_hi | 被除数高64位 |
| dividend_lo | 被除数低64位 |
| divisor | 除数(64位,必须非0) |
| remainder | 输出余数(可为空) |
在文件 msvc_intrinsic.hpp 第 113 行定义.
引用了 _udiv128(), _umul128(), clz64() , 以及 remainder().
被这些函数引用 _udiv128() , 以及 neforce::uint128_t::div64().
|
constexprnoexcept |
64位无符号乘法
| a | 第一个乘数 |
| b | 第二个乘数 |
| hi_out | 输出结果的高64位 |
计算 a * b 的128位结果,低64位作为返回值,高64位存入hi_out。
在文件 msvc_intrinsic.hpp 第 86 行定义.
引用了 _umul128().
被这些函数引用 _udiv128(), _umul128(), neforce::uint128_t::mul128() , 以及 neforce::uint128_t::mul64().