|
native 0.0.1
Vectors, masks and wide register packs for C++26
|
Functions | |
|
template<isa< x86 > Arch = NATIVE_BASELINE> requires (Arch.has(x86_feature::adx)) | |
| constexpr std::uint8_t | native::addcarryx (std::uint8_t carry, std::uint32_t a, std::uint32_t b, std::uint32_t *result) noexcept |
| Add 32-bit operands with carry, writing the modular result. | |
|
template<isa< x86 > Arch = NATIVE_BASELINE> requires (Arch.has(x86_feature::adx)) | |
| constexpr std::uint8_t | native::addcarryx (std::uint8_t carry, std::uint64_t a, std::uint64_t b, std::uint64_t *result) noexcept |
| Add 64-bit operands with carry, writing the modular result. | |
Add two 32/64-bit values and one if the input carry is nonzero. Write the modular sum through a valid output pointer and return carry-out as 0 or 1. Strong tags require ADX and a compatible caller target; weak tags support constant evaluation only. Module defaults use the provider's baseline. Clang 23 may lower its addcarryx intrinsic to ADD/ADC. These value-level operations do not expose independent ADCX/ADOX flag chains.
Add 32/64-bit unsigned operands with carry; see the operation contract.