ADOX — Unsigned Integer Addition of Two Operands with Overflow FlagInstruction Operand EncodingDescriptionPerforms an unsigned addition of the destination operand (first operand), the source operand (second operand) and the overflow-flag (OF) and stores the result in the destination operand. The destination operand is a general-purpose register, whereas the source operand can be a general-purpose register or memory location. The state of OF represents a carry from a previous addition. The instruction sets the OF flag with the carry generated by the unsigned addition of the operands. The ADOX instruction is executed in the context of multi-precision addition, where we add a series of operands with a carry-chain. At the beginning of a chain of additions, we execute an instruction to zero the OF (e.g. XOR).This instruction is supported in real mode and virtual-8086 mode. The operand size is always 32 bits if not in 64-bit mode. In 64-bit mode, the default operation size is 32 bits. Using a REX Prefix in the form of REX.R permits access to addi-tional registers (R8-15). Using REX Prefix in the form of REX.W promotes operation to 64-bits.ADOX executes normally either inside or outside a transaction region.Note: ADOX defines the CF and OF flags differently than the ADD/ADC instructions as defined in Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 2A.OperationIF OperandSize is 64-bitTHEN OF:DEST[63:0] := DEST[63:0] + SRC[63:0] + OF;ELSE OF:DEST[31:0] := DEST[31:0] + SRC[31:0] + OF;FI;Flags AffectedOF is updated based on result. CF, SF, ZF, AF and PF flags are unmodified.Intel C/C++ Compiler Intrinsic Equivalentunsigned char _addcarryx_u32 (unsigned char c_in, unsigned int src1, unsigned int src2, unsigned int *sum_out);unsigned char _addcarryx_u64 (unsigned char c_in, unsigned __int64 src1, unsigned __int64 src2, unsigned __int64 *sum_out);SIMD Floating-Point ExceptionsNoneOpcode/InstructionOp/ En64/32bit Mode SupportCPUID Feature FlagDescriptionF3 0F 38 F6 /rADOX r32, r/m32RMV/VADXUnsigned addition of r32 with OF, r/m32 to r32, writes OF.F3 REX.w 0F 38 F6 /rADOX r64, r/m64RMV/NEADXUnsigned addition of r64 with OF, r/m64 to r64, writes OF.Op/EnOperand 1Operand 2Operand 3Operand 4RMModRM:reg (r, w)ModRM:r/m (r)NANA
This UNOFFICIAL reference was generated from the official Intel® 64 and IA-32 Architectures Software Developer’s Manual by a dumb script. There is no guarantee that some parts aren't mangled or broken and is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.