|
NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
|
MSVC编译器内部函数的替代实现 更多...
函数 | |
| constexpr uint8_t | _addcarry_u64 (const uint8_t carry_in, const uint64_t a, const uint64_t b, uint64_t *out) noexcept |
| 带进位的64位无符号加法 | |
| constexpr uint8_t | _subborrow_u64 (const uint8_t borrow_in, const uint64_t a, const uint64_t b, uint64_t *out) noexcept |
| 带借位的64位无符号减法 | |
| constexpr uint64_t | _umul128 (const uint64_t a, const uint64_t b, uint64_t *hi_out) noexcept |
| 64位无符号乘法 | |
| constexpr uint64_t | _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 行定义.
|
constexprnoexcept |
带借位的64位无符号减法
| borrow_in | 借位输入(0或1) |
| a | 被减数 |
| b | 减数 |
| out | 输出结果(低64位) |
计算 a - b - borrow_in,结果存入out,返回借位标志。
在文件 msvc_intrinsic.hpp 第 60 行定义.
|
constexprnoexcept |
128位无符号除法(基于Knuth-D)
| dividend_hi | 被除数高64位 |
| dividend_lo | 被除数低64位 |
| divisor | 除数(64位,必须非0) |
| remainder | 输出余数(可为空) |
在文件 msvc_intrinsic.hpp 第 113 行定义.
引用了 _umul128(), clz64() , 以及 remainder().
64位无符号乘法
| a | 第一个乘数 |
| b | 第二个乘数 |
| hi_out | 输出结果的高64位 |
计算 a * b 的128位结果,低64位作为返回值,高64位存入hi_out。
在文件 msvc_intrinsic.hpp 第 86 行定义.
被这些函数引用 _udiv128().