native 0.0.1
Vectors, masks and wide register packs for C++26
Loading...
Searching...
No Matches
ADX
Collaboration diagram for ADX:

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.

Detailed Description

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.