The reference covers the extensions listed under ISA extensions: the general-purpose instructions and the smaller sets around them, such as CMOV, BMI1 and CMPXCHG16B, and the recent extensions: APX, AVX10.1 and AVX10.2, the AMX family and ACE, the newer VEX extensions such as AVX-VNNI-INT8, SHA512, SM3 and SM4, and system instructions such as FRED and the new MSR instructions. Every mnemonic with a form in one of them has a page that lists all of its forms, including those of extensions not covered yet: VADDPS is here because AVX10.1 has it, and its page shows its AVX forms as well.

Syntax, encodings, CPUID bits and processor lists are generated from Intel XED, the encoder and decoder library that Intel publishes under the Apache License 2.0. The summary sentences and longer explanations are our own.

Instruction pages also list the C intrinsics that compile to the instruction, with the exact form each one compiles to, taken from Clang’s headers and checked by compiling every intrinsic. The x86 intrinsics A–Z index lists all of them.

The 1044 mnemonics with at least one form in an extension this reference covers, and the extensions they belong to.
MnemonicSummaryExtensions
AAACorrects AL after adding two unpacked BCD digits: if the low digit exceeds 9 or AF is set, adds 6 to AL and 1 to AH and sets CF and AF; not in 64-bit mode.General-purpose
AADTurns the unpacked BCD digits in AH and AL into the binary number AL plus AH times the immediate base (10 as assembled) before a DIV; not in 64-bit mode.General-purpose
AADDAtomically adds a register to a naturally aligned 32- or 64-bit value in memory without returning anything, as a weakly ordered remote atomic operation.RAO-INT, APX
AAMSplits AL into two unpacked BCD digits after a MUL: AH gets AL divided by the immediate base (10 as assembled), AL the remainder; not in 64-bit mode.General-purpose
AANDAtomically ANDs a register into a naturally aligned 32- or 64-bit value in memory without returning anything, as a weakly ordered remote atomic operation.RAO-INT, APX
AASCorrects AL after subtracting two unpacked BCD digits: if the low digit exceeds 9 or AF is set, subtracts 6 from AX and 1 from AH; not in 64-bit mode.General-purpose
ADCAdds two integers and the carry flag, the step that chains multi-word additions; APX adds a three-operand form.General-purpose, APX
ADCXAdds two unsigned integers and the carry flag and changes only CF, so a carry chain can run next to an ADOX chain; APX adds a three-operand form.ADX, APX
ADDAdds two integers and sets the arithmetic flags; APX adds three-operand forms and forms that leave the flags unchanged.General-purpose, APX
ADOXAdds two unsigned integers and the overflow flag and changes only OF, so a carry chain can run next to an ADCX chain; APX adds a three-operand form.ADX, APX
ANDComputes the bitwise AND of two operands; APX adds three-operand forms and forms that leave the flags unchanged.General-purpose, APX
ANDNComputes the bitwise AND of the inverted first source with the second source into a separate destination; APX adds a form that leaves the flags unchanged.BMI1, APX
AORAtomically ORs a register into a naturally aligned 32- or 64-bit value in memory without returning anything, as a weakly ordered remote atomic operation.RAO-INT, APX
AXORAtomically XORs a register into a naturally aligned 32- or 64-bit value in memory without returning anything, as a weakly ordered remote atomic operation.RAO-INT, APX
BEXTRExtracts a bit field whose start and length come from a second register; APX adds a form that leaves the flags unchanged.BMI1, APX
BLSIIsolates the lowest set bit of the source, clearing all others; APX adds a form that leaves the flags unchanged.BMI1, APX
BLSMSKSets all bits up to and including the lowest set bit of the source and clears the rest; APX adds a form that leaves the flags unchanged.BMI1, APX
BLSRClears the lowest set bit of the source; APX adds a form that leaves the flags unchanged.BMI1, APX
BOUNDRaises a bound-range exception (#BR) unless a signed array index in a register lies within the two bounds stored in memory; not in 64-bit mode.General-purpose
BSFWrites the index of the lowest set bit of the source to the destination; a zero source sets ZF and leaves the destination unchanged.General-purpose
BSRWrites the index of the highest set bit of the source to the destination; a zero source sets ZF and leaves the destination unchanged.General-purpose
BSRINITACE instruction that sets every byte of the block scale register to 7FH, the E8M0 encoding of a scale factor of 1.0.ACE
BSRMOVFACE instruction that loads all 1024 bits of the block scale register from two ZMM sources, the first giving the upper half.ACE
BSRMOVHACE instruction that moves the upper 512 bits of the block scale register to or from a ZMM register or memory.ACE
BSRMOVLACE instruction that moves the lower 512 bits of the block scale register to or from a ZMM register or memory.ACE
BSWAPReverses the byte order of a 32- or 64-bit register, converting between little- and big-endian values; with a 16-bit register the result is undefined.General-purpose
BTCopies the bit that a register or immediate offset selects in a register or memory operand into CF; a register offset can reach beyond a memory operand.General-purpose
BTCCopies the selected bit of a register or memory operand into CF and then inverts it; with LOCK the memory form is atomic.General-purpose
BTRCopies the selected bit of a register or memory operand into CF and then clears it; with LOCK the memory form is atomic.General-purpose
BTSCopies the selected bit of a register or memory operand into CF and then sets it; with LOCK the memory form is an atomic test-and-set.General-purpose
BZHIClears the bits of the source from a given bit position upward; APX adds a form that leaves the flags unchanged.BMI2, APX
CALLPushes the return address and jumps to a relative target, one in a register or memory, or a far pointer that also changes the code segment.General-purpose
CBWSign-extends AL into AX, copying bit 7 of AL into every bit of AH (AT&T cbtw).General-purpose
CCMPsccAPX conditional compare: if the flags meet a condition, compares two operands, otherwise sets OF, SF, ZF and CF to a value in the instruction.APX
CDQSign-extends EAX into EDX:EAX, filling EDX with the sign bit of EAX, typically before a 32-bit IDIV (AT&T cltd).General-purpose
CDQESign-extends EAX into RAX in 64-bit mode; compilers emit it, as cltq in AT&T syntax, to widen a signed 32-bit value.General-purpose
CFCMOVccAPX conditionally faulting move: on a false condition, memory is untouched and cannot fault; a register destination gets zero, or a source with NDD.APX
CLCClears the carry flag (CF).General-purpose
CLDClears the direction flag (DF), so that string instructions step upward through memory; the System V and Microsoft ABIs require it clear at calls.General-purpose
CLDEMOTEHints that the cache line holding a byte of memory should move from the core's caches to a more distant level, where other cores reach it sooner.CLDEMOTE
CLFLUSHWrites back and invalidates the cache line holding a byte of memory in every cache of the coherence domain, ordered with writes and other CLFLUSHes.CLFLUSH
CLFLUSHOPTWrites back and invalidates the cache line holding a byte of memory like CLFLUSH, but unordered with flushes of other lines, so several can overlap.CLFLUSHOPT
CLIClears the interrupt flag (IF) to hold off maskable interrupts; where CPL is above IOPL it faults or clears the virtual interrupt flag instead.General-purpose
CLWBWrites the cache line holding a byte of memory back if it was modified and may keep it cached, for example to make stores to persistent memory durable.CLWB
CMCInverts the carry flag (CF).General-purpose
CMOVccCopies the source to a register if a condition on the flags holds; APX adds a three-operand form that picks one of two sources.CMOV, APX
CMPCompares two operands by subtracting the second from the first, setting the arithmetic flags as SUB would and discarding the result.General-purpose
CMPccXADDAtomically compares memory with a register, adds a second register to memory if the condition holds, and returns the old value in the first.CMPccXADD, APX
CMPSCompares the element at [RSI] with the one at [RDI], setting the flags as CMP would, and steps both pointers; REPE and REPNE repeat it.General-purpose
CMPXCHGCompares the accumulator with the destination: if equal, stores the source there and sets ZF, else loads the destination; atomic with LOCK.General-purpose
CMPXCHG16BCompares RDX:RAX with 16 aligned bytes of memory: if equal, stores RCX:RBX there and sets ZF, else loads them into RDX:RAX; atomic with LOCK.CMPXCHG16B
CMPXCHG8BCompares EDX:EAX with 8 bytes of memory: if equal, stores ECX:EBX there and sets ZF, else loads them into EDX:EAX; atomic with LOCK.General-purpose
CPUIDReturns identification and feature information about the processor in EAX, EBX, ECX and EDX, for the leaf in EAX and the sub-leaf in ECX.General-purpose
CQOSign-extends RAX into RDX:RAX, filling RDX with the sign bit of RAX, typically before a 64-bit IDIV (AT&T cqto); 64-bit mode only.General-purpose
CRC32Accumulates a CRC-32C checksum (Castagnoli polynomial) over a 1-, 2-, 4- or 8-byte operand.APX
CTESTsccAPX conditional test: if the flags meet a condition, tests two operands with AND, otherwise sets OF, SF, ZF and CF to a value in the instruction.APX
CWDSign-extends AX into DX:AX, filling DX with the sign bit of AX, typically before a 16-bit IDIV (AT&T cwtd).General-purpose
CWDESign-extends AX into EAX (AT&T cwtl); in 64-bit mode the write to EAX also clears the upper half of RAX.General-purpose
DAACorrects AL after adding two packed BCD numbers so that it holds two decimal digits, setting CF on a decimal carry; not in 64-bit mode.General-purpose
DASCorrects AL after subtracting two packed BCD numbers so that it holds two decimal digits, setting CF on a decimal borrow; not in 64-bit mode.General-purpose
DECSubtracts one from an operand without changing the carry flag; APX adds three-operand forms and forms that leave the flags unchanged.General-purpose, APX
DIVDivides an unsigned double-width dividend in rDX:rAX (AX for bytes) by the operand into quotient and remainder; APX adds a form that keeps the flags.General-purpose, APX
ENQCMDSends a 64-byte command, tagged with the PASID from the IA32_PASID MSR, to a device's enqueue register and sets ZF if the device did not accept it.APX
ENQCMDSKernel version of ENQCMD that takes the PASID and privilege bit of the 64-byte command from its memory operand instead of the IA32_PASID MSR.APX
ENTERMakes a stack frame: pushes the frame pointer, copies outer frame pointers for nested procedures, and reserves the given bytes of locals.General-purpose
ERETSReturns from a FRED event handler to code that also runs in ring 0, restoring the interrupted context from the stack.FRED
ERETUReturns from a FRED event handler in ring 0 to ring 3, restoring the user context from the stack and swapping the GS base with IA32_KERNEL_GS_BASE.FRED
HRESETResets the parts of the processor's prediction history that EAX selects and the operating system enabled in IA32_HRESET_ENABLE; allowed only in ring 0.HRESET
IBHFIndirect branch history fence: in ring 0 with BHI_DIS_S set, stops older branch history from steering later indirect branches; a no-op without BHI_CTRL.IBHF
IDIVDivides a signed double-width dividend in rDX:rAX (AX for bytes) by the operand into quotient and remainder; APX adds a form that keeps the flags.General-purpose, APX
IMULMultiplies signed integers in one-, two- and three-operand forms; APX adds new-destination, flag-preserving and zero-upper immediate forms.General-purpose, APX
INReads a byte, word or doubleword from an I/O port, given as an immediate or in DX, into AL, AX or EAX, if IOPL or the TSS permission bitmap allows.General-purpose
INCAdds one to an operand without changing the carry flag; APX adds three-operand forms and forms that leave the flags unchanged.General-purpose, APX
INSReads a byte, word or doubleword from the I/O port in DX into memory at [RDI] and steps RDI; REP repeats it RCX times.General-purpose
INTRaises the software interrupt whose vector is the immediate, calling its handler through the IDT, as 32-bit Linux system calls do with INT 80h.General-purpose
INT1Raises a debug exception (#DB) with the one-byte opcode F1, meant for hardware debuggers; also known as ICEBP.General-purpose
INT3Raises a breakpoint exception (#BP) with the one-byte opcode CC, which debuggers write over an instruction to set a breakpoint.General-purpose
INTORaises an overflow exception (#OF) if the overflow flag is set; not in 64-bit mode.General-purpose
INVEPTInvalidates cached translations derived from a VMX guest's extended page tables, for one EPT context or all of them.APX
INVPCIDInvalidates TLB entries and paging-structure caches for one address, one process-context identifier or all of them, as the type in a register selects.APX
INVVPIDInvalidates cached translations tagged with a VMX virtual-processor identifier (VPID), for one address, one VPID or all of them.APX
IRETReturns from an interrupt or exception handler, popping the instruction pointer, CS and the flags, and in 64-bit mode RSP and SS too.General-purpose
JccJumps to a relative target if a condition on the flags holds, such as JZ when ZF is set or JL when SF differs from OF.General-purpose
JCXZJumps to a short relative target if CX is zero, without testing or changing the flags; not in 64-bit mode.General-purpose
JECXZJumps to a short relative target if ECX is zero, without testing or changing the flags.General-purpose
JMPJumps to a relative target, one in a register or memory, or a far pointer that also changes the code segment.General-purpose
JMPABSAPX jump to a 64-bit absolute address given as an immediate, encoded with a REX2 prefix as an 11-byte instruction.APX
JRCXZJumps to a short relative target if RCX is zero, without testing or changing the flags; 64-bit mode only.General-purpose
KADDBAdds two 8-bit mask registers as unsigned integers.AVX10.1
KADDDAdds two 32-bit mask registers as unsigned integers.AVX10.1
KADDQAdds two 64-bit mask registers as unsigned integers.AVX10.1
KADDWAdds two 16-bit mask registers as unsigned integers.AVX10.1
KANDBComputes the bitwise AND of two 8-bit masks.AVX10.1
KANDDComputes the bitwise AND of two 32-bit masks.AVX10.1
KANDNBComputes the bitwise AND of the inverted first 8-bit mask with the second.AVX10.1
KANDNDComputes the bitwise AND of the inverted first 32-bit mask with the second.AVX10.1
KANDNQComputes the bitwise AND of the inverted first 64-bit mask with the second.AVX10.1
KANDNWComputes the bitwise AND of the inverted first 16-bit mask with the second.AVX10.1
KANDQComputes the bitwise AND of two 64-bit masks.AVX10.1
KANDWComputes the bitwise AND of two 16-bit masks.AVX10.1
KMOVBMoves an 8-bit mask between mask registers, general-purpose registers and memory; APX adds EVEX forms that reach the extended general-purpose registers.AVX10.1, APX
KMOVDMoves a 32-bit mask between mask registers, general-purpose registers and memory; APX adds EVEX forms that reach the extended general-purpose registers.AVX10.1, APX
KMOVQMoves a 64-bit mask between mask registers, general-purpose registers and memory; APX adds EVEX forms that reach the extended general-purpose registers.AVX10.1, APX
KMOVWMoves a 16-bit mask between mask registers, general-purpose registers and memory; APX adds EVEX forms that reach the extended general-purpose registers.AVX10.1, APX
KNOTBInverts every bit of an 8-bit mask.AVX10.1
KNOTDInverts every bit of a 32-bit mask.AVX10.1
KNOTQInverts every bit of a 64-bit mask.AVX10.1
KNOTWInverts every bit of a 16-bit mask.AVX10.1
KORBComputes the bitwise OR of two 8-bit masks.AVX10.1
KORDComputes the bitwise OR of two 32-bit masks.AVX10.1
KORQComputes the bitwise OR of two 64-bit masks.AVX10.1
KORTESTBORs two 8-bit masks and sets ZF if the result is all zeros and CF if it is all ones.AVX10.1
KORTESTDORs two 32-bit masks and sets ZF if the result is all zeros and CF if it is all ones.AVX10.1
KORTESTQORs two 64-bit masks and sets ZF if the result is all zeros and CF if it is all ones.AVX10.1
KORTESTWORs two 16-bit masks and sets ZF if the result is all zeros and CF if it is all ones.AVX10.1
KORWComputes the bitwise OR of two 16-bit masks.AVX10.1
KSHIFTLBShifts an 8-bit mask left by an immediate count, filling with zeros.AVX10.1
KSHIFTLDShifts a 32-bit mask left by an immediate count, filling with zeros.AVX10.1
KSHIFTLQShifts a 64-bit mask left by an immediate count, filling with zeros.AVX10.1
KSHIFTLWShifts a 16-bit mask left by an immediate count, filling with zeros.AVX10.1
KSHIFTRBShifts an 8-bit mask right by an immediate count, filling with zeros.AVX10.1
KSHIFTRDShifts a 32-bit mask right by an immediate count, filling with zeros.AVX10.1
KSHIFTRQShifts a 64-bit mask right by an immediate count, filling with zeros.AVX10.1
KSHIFTRWShifts a 16-bit mask right by an immediate count, filling with zeros.AVX10.1
KTESTBSets ZF if the AND of two 8-bit masks is zero and CF if the AND of the inverted first with the second is zero.AVX10.1
KTESTDSets ZF if the AND of two 32-bit masks is zero and CF if the AND of the inverted first with the second is zero.AVX10.1
KTESTQSets ZF if the AND of two 64-bit masks is zero and CF if the AND of the inverted first with the second is zero.AVX10.1
KTESTWSets ZF if the AND of two 16-bit masks is zero and CF if the AND of the inverted first with the second is zero.AVX10.1
KUNPCKBWJoins the low 8 bits of two masks into a 16-bit mask, the second source forming the low half.AVX10.1
KUNPCKDQJoins the low 32 bits of two masks into a 64-bit mask, the second source forming the low half.AVX10.1
KUNPCKWDJoins the low 16 bits of two masks into a 32-bit mask, the second source forming the low half.AVX10.1
KXNORBComputes the bitwise XNOR of two 8-bit masks.AVX10.1
KXNORDComputes the bitwise XNOR of two 32-bit masks.AVX10.1
KXNORQComputes the bitwise XNOR of two 64-bit masks.AVX10.1
KXNORWComputes the bitwise XNOR of two 16-bit masks.AVX10.1
KXORBComputes the bitwise XOR of two 8-bit masks.AVX10.1
KXORDComputes the bitwise XOR of two 32-bit masks.AVX10.1
KXORQComputes the bitwise XOR of two 64-bit masks.AVX10.1
KXORWComputes the bitwise XOR of two 16-bit masks.AVX10.1
LAHFCopies SF, ZF, AF, PF and CF into bits 7, 6, 4, 2 and 0 of AH; 64-bit mode needs the LAHF-SAHF feature.LAHF-SAHF
LDSLoads a far pointer from memory into a register and DS; not in 64-bit mode, where its opcode C5 starts a VEX prefix.General-purpose
LDTILECFGLoads the AMX tile configuration (palette, rows and bytes per row of each tile) from a 64-byte memory block and zeroes the tile registers.AMX-TILE, ACE, APX
LEAComputes the address of a memory operand into a register without accessing memory, which compilers also use for arithmetic such as x*5+3.General-purpose
LEAVEReleases a stack frame: copies the frame pointer into the stack pointer, then pops the caller's frame pointer.General-purpose
LESLoads a far pointer from memory into a register and ES; not in 64-bit mode, where its opcode C4 starts a VEX prefix.General-purpose
LFSLoads a far pointer from memory into a register and FS.General-purpose
LGSLoads a far pointer from memory into a register and GS.General-purpose
LKGSLoads GS from a selector but puts the descriptor's base in the IA32_KERNEL_GS_BASE MSR instead of the GS base; ring 0 of 64-bit mode only.LKGS
LODSLoads the element at [RSI] into AL, AX, EAX or RAX and steps RSI up or down, as the direction flag says.General-purpose
LOOPDecrements RCX, ECX or CX without changing the flags and jumps to a short relative target if the count is not zero.General-purpose
LOOPEDecrements RCX, ECX or CX without changing the flags and jumps to a short relative target if the count is not zero and ZF is set.General-purpose
LOOPNEDecrements RCX, ECX or CX without changing the flags and jumps to a short relative target if the count is not zero and ZF is clear.General-purpose
LSSLoads a far pointer from memory into a register and SS, switching the stack segment and pointer with one instruction.General-purpose
LZCNTCounts the leading zero bits of an operand; APX adds a form that leaves the flags unchanged.LZCNT, APX
MOVCopies data between registers, memory and immediates, and moves segment, control and debug registers; those last two only in ring 0.General-purpose
MOVBELoads or stores a 16-, 32- or 64-bit value with its byte order reversed; APX adds a register-to-register form.MOVBE, APX
MOVDIR64BCopies 64 bytes from memory to a 64-byte-aligned destination as one direct store that is written atomically and bypasses the caches.APX
MOVDIRIStores a 32- or 64-bit register to memory as a direct store that bypasses the caches.APX
MOVRSLoads a register from memory with a hint that other cores are likely to read the same data before it is written.MOVRS, APX
MOVSCopies the element at [RSI] to [RDI] and steps both pointers; REP MOVS copies RCX elements, the classic memcpy.General-purpose
MOVSXCopies a signed byte or word into a wider register, extending its sign bit.General-purpose
MOVSXDSign-extends a 32-bit register or memory operand into a 64-bit register (AT&T movslq); 64-bit mode only, where it took over ARPL's opcode.General-purpose
MOVZXCopies an unsigned byte or word into a wider register, filling the upper bits with zeros.General-purpose
MULMultiplies unsigned integers, producing a double-width result in rDX:rAX (AX for bytes); APX adds a form that leaves the flags unchanged.General-purpose, APX
MULXMultiplies rDX by an unsigned operand and writes the high and low halves of the product to two registers without touching the flags.BMI2, APX
NEGReplaces an operand with its two's complement; APX adds three-operand forms and forms that leave the flags unchanged.General-purpose, APX
NOPDoes nothing: 90 and the multi-byte 0F 1F forms pad code for alignment, and other opcodes of 0F 18 to 0F 1F are reserved to decode as NOPs.General-purpose
NOTInverts every bit of an operand without changing the flags; APX adds a three-operand form.General-purpose, APX
ORComputes the bitwise OR of two operands; APX adds three-operand forms and forms that leave the flags unchanged.General-purpose, APX
OUTWrites AL, AX or EAX to an I/O port, given as an immediate or in DX, if IOPL or the TSS permission bitmap allows.General-purpose
OUTSWrites a byte, word or doubleword from memory at [RSI] to the I/O port in DX and steps RSI; REP repeats it RCX times.General-purpose
PAUSETells the processor it is in a spin-wait loop, which avoids a penalty on leaving the loop and saves power; a NOP before the Pentium 4.General-purpose
PBNDKBEncrypts and authenticates a 256-byte bind structure with a platform key, for PCONFIG to use in configuring Total Storage Encryption.PBNDKB
PDEPDeposits the low bits of the source at the bit positions selected by a mask, clearing the others.BMI2, APX
PEXTExtracts the bits of the source at the positions selected by a mask and packs them into the low bits of the destination.BMI2, APX
POPLoads the value on top of the stack into a register, memory or a segment register and moves the stack pointer past it.General-purpose
POP2APX instruction that pops two 64-bit registers from a 16-byte-aligned stack slot.APX
POP2PPOP2 with APX's push-pop acceleration hint, marking it as the partner of a PUSH2P so the processor can forward the values without the memory round trip.APX
POPAPops the eight general-purpose registers that PUSHA saved, 16-bit or with POPAD 32-bit, discarding the saved stack pointer; not in 64-bit mode.General-purpose
POPCNTCounts the bits that are set in an operand; APX adds a form that leaves the flags unchanged.POPCNT, APX
POPFPops the flags from the stack, changing only those the privilege level allows; POPFQ, the 64-bit form, pops RFLAGS.General-purpose
POPPPops a 64-bit register with APX's push-pop acceleration hint, marking it as the partner of an earlier PUSHP.APX
PREFETCHIT0Prefetches code at a RIP-relative address into all cache levels; a no-op without RIP-relative addressing or on older processors.PREFETCHI
PREFETCHIT1Prefetches code at a RIP-relative address into every cache level but L1; a no-op without RIP-relative addressing or on older processors.PREFETCHI
PREFETCHRST2Prefetches data with a hint that several cores are likely to read it before it is written, into caches chosen for read sharing.MOVRS
PUSHMoves the stack pointer down and stores a register, memory operand, immediate or segment register on top of the stack.General-purpose
PUSH2APX instruction that pushes two 64-bit registers to a 16-byte-aligned stack slot.APX
PUSH2PPUSH2 with APX's push-pop acceleration hint, marking it as the partner of a POP2P so the processor can forward the values without the memory round trip.APX
PUSHAPushes the eight 16-bit general-purpose registers, or with PUSHAD the 32-bit ones, including the original stack pointer; not in 64-bit mode.General-purpose
PUSHFPushes the flags onto the stack: FLAGS, EFLAGS with PUSHFD, or RFLAGS with PUSHFQ, the default in 64-bit mode.General-purpose
PUSHPPushes a 64-bit register with APX's push-pop acceleration hint, marking it as the partner of a later POPP.APX
RCLRotates an operand left through the carry flag; APX adds a three-operand form.General-purpose, APX
RCRRotates an operand right through the carry flag; APX adds a three-operand form.General-purpose, APX
RDMSRReads a model-specific register into EDX:EAX, or with MSR_IMM into any 64-bit register from an MSR number given as an immediate; allowed only in ring 0.MSR_IMM, APX
RDMSRLISTReads up to 64 model-specific registers whose addresses are listed in a table in memory, selected by a bit mask in RCX, into a second table.MSRLIST
RDPIDReads the processor ID that the kernel stored in IA32_TSC_AUX (on Linux, the CPU and node number) without reading the time-stamp counter.RDPID
RDRANDReturns a random number from the processor's hardware generator; CF=1 means the value is valid, CF=0 that none was ready.RDRAND
RDSEEDReturns a random number straight from the processor's entropy source, to seed other generators; CF=1 means the value is valid, CF=0 that none was ready.RDSEED
RDTSCPReads the time-stamp counter into EDX:EAX and IA32_TSC_AUX into ECX, once all earlier instructions have executed.RDTSCP
RETReturns from a procedure: pops the return address (and CS for a far return) and optionally releases stack bytes of the caller's arguments.General-purpose
ROLRotates an operand left; APX adds three-operand forms and forms that leave the flags unchanged.General-purpose, APX
RORRotates an operand right; APX adds three-operand forms and forms that leave the flags unchanged.General-purpose, APX
RORXRotates the source right by an immediate count into a separate destination without touching the flags.BMI2, APX
SAHFStores bits 7, 6, 4, 2 and 0 of AH into SF, ZF, AF, PF and CF; 64-bit mode needs the LAHF-SAHF feature.LAHF-SAHF
SALCSets AL to FFh if the carry flag is set and to 00h if not, like SBB AL, AL but without changing the flags; not in 64-bit mode.General-purpose
SARShifts an operand right, copying the sign bit into the vacated bits; APX adds three-operand forms and forms that leave the flags unchanged.General-purpose, APX
SARXShifts the source right arithmetically by a count in a register into a separate destination without touching the flags.BMI2, APX
SBBSubtracts an integer and the carry flag, the step that chains multi-word subtractions; APX adds a three-operand form.General-purpose, APX
SCASCompares AL, AX, EAX or RAX with the element at [RDI], setting the flags as CMP would, and steps RDI; REPNE SCAS searches for a value.General-purpose
SETccWrites 1 or 0 to a byte depending on a condition on the flags; APX adds a form that also clears the rest of the destination register.General-purpose, APX
SHLShifts an operand left, filling with zeros (SAL is the same instruction); APX adds three-operand forms and forms that leave the flags unchanged.General-purpose, APX
SHLDShifts an operand left and fills the vacated bits from a second register; APX adds three-operand forms and forms that leave the flags unchanged.General-purpose, APX
SHLXShifts the source left by a count in a register into a separate destination without touching the flags.BMI2, APX
SHRShifts an operand right, filling with zeros; APX adds three-operand forms and forms that leave the flags unchanged.General-purpose, APX
SHRDShifts an operand right and fills the vacated bits from a second register; APX adds three-operand forms and forms that leave the flags unchanged.General-purpose, APX
SHRXShifts the source right logically by a count in a register into a separate destination without touching the flags.BMI2, APX
STCSets the carry flag (CF).General-purpose
STDSets the direction flag (DF), so that string instructions step downward through memory.General-purpose
STISets the interrupt flag (IF), accepting maskable interrupts after the next instruction; where CPL is above IOPL it faults or sets the virtual one instead.General-purpose
STOSStores AL, AX, EAX or RAX at [RDI] and steps RDI; REP STOS fills RCX elements, the classic memset.General-purpose
STTILECFGStores the current AMX tile configuration to a 64-byte memory block.AMX-TILE, ACE, APX
SUBSubtracts one integer from another and sets the arithmetic flags; APX adds three-operand forms and forms that leave the flags unchanged.General-purpose, APX
TCMMIMFP16PSMultiplies two tiles of complex half-precision numbers and accumulates the imaginary parts of the products into a single-precision tile.AMX-COMPLEX
TCMMRLFP16PSMultiplies two tiles of complex half-precision numbers and accumulates the real parts of the products into a single-precision tile.AMX-COMPLEX
TCVTROWD2PSMoves one row of a tile to a ZMM register, converting its 32-bit integers to single precision.AMX-AVX512, ACE
TCVTROWPS2BF16HMoves one row of a tile to a ZMM register, converting single precision to bfloat16 in the high half of each dword and zeroing the low half.AMX-AVX512, ACE
TCVTROWPS2BF16LMoves one row of a tile to a ZMM register, converting single precision to bfloat16 in the low half of each dword and zeroing the high half.AMX-AVX512, ACE
TCVTROWPS2PHHMoves one row of a tile to a ZMM register, converting single precision to half precision in the high half of each dword and zeroing the low half.AMX-AVX512, ACE
TCVTROWPS2PHLMoves one row of a tile to a ZMM register, converting single precision to half precision in the low half of each dword and zeroing the high half.AMX-AVX512, ACE
TDPBF16PSMultiplies two tiles of bfloat16 pairs and accumulates each row-by-column dot product into a single-precision tile.AMX-BF16
TDPBF8PSMultiplies two tiles of E5M2 FP8 values and accumulates each row-by-column dot product into a single-precision tile.AMX-FP8
TDPBHF8PSMultiplies a tile of E5M2 FP8 values by a tile of E4M3 FP8 values and accumulates each row-by-column dot product into a single-precision tile.AMX-FP8
TDPBSSDMultiplies two tiles of signed bytes, four per dword, and accumulates each row-by-column dot product into a tile of 32-bit integers.AMX-INT8
TDPBSUDMultiplies a tile of signed bytes by a tile of unsigned bytes and accumulates each row-by-column dot product into a tile of 32-bit integers.AMX-INT8
TDPBUSDMultiplies a tile of unsigned bytes by a tile of signed bytes and accumulates each row-by-column dot product into a tile of 32-bit integers.AMX-INT8
TDPBUUDMultiplies two tiles of unsigned bytes, four per dword, and accumulates each row-by-column dot product into a tile of 32-bit integers.AMX-INT8
TDPFP16PSMultiplies two tiles of half-precision pairs and accumulates each row-by-column dot product into a single-precision tile.AMX-FP16
TDPHBF8PSMultiplies a tile of E4M3 FP8 values by a tile of E5M2 FP8 values and accumulates each row-by-column dot product into a single-precision tile.AMX-FP8
TDPHF8PSMultiplies two tiles of E4M3 FP8 values and accumulates each row-by-column dot product into a single-precision tile.AMX-FP8
TESTANDs two operands to set SF, ZF and PF and clear CF and OF, discarding the result; TEST with the same register twice checks it for zero.General-purpose
TILELOADDLoads a tile from memory, row by row, with the row stride taken from the index register of its SIB-encoded address.AMX-TILE, APX
TILELOADDRSLoads a tile from memory like TILELOADD, with a hint that other cores are likely to read the same data before it is written.AMX-MOVRS, APX
TILELOADDRST1Loads a tile like TILELOADDRS, with the added hint that the data will be reused but need not stay in the nearest cache.AMX-MOVRS, APX
TILELOADDT1Loads a tile like TILELOADD, with a hint that the data will be reused but need not stay in the nearest cache.AMX-TILE, APX
TILEMOVCOLACE instruction that writes a ZMM register into one column of a tile register, the column chosen by an immediate or a register.ACE
TILEMOVROWMoves one row of a tile register to a ZMM register, or with ACE also the other way, the row chosen by an immediate or a register.AMX-AVX512, ACE
TILERELEASEReturns the AMX tile configuration and all tile data to their initial state: unconfigured and zero.AMX-TILE, ACE
TILESTOREDStores a tile to memory, row by row, with the row stride taken from the index register of its SIB-encoded address.AMX-TILE, APX
TILEZEROSets every byte of a tile register to zero.AMX-TILE, ACE
TOP2BF16PSACE rank-2 outer product: adds the dot product of each bfloat16 pair of one ZMM source with each pair of the other to a single-precision tile.ACE
TOP4BSSDACE outer product of two ZMM registers of signed bytes, four per dword, accumulated into a tile of 32-bit integers.ACE
TOP4BSUDACE outer product of a ZMM register of signed bytes with one of unsigned bytes, four per dword, accumulated into a tile of 32-bit integers.ACE
TOP4BUSDACE outer product of a ZMM register of unsigned bytes with one of signed bytes, four per dword, accumulated into a tile of 32-bit integers.ACE
TOP4BUUDACE outer product of two ZMM registers of unsigned bytes, four per dword, accumulated into a tile of 32-bit integers.ACE
TOP4MXBF8PSACE outer product of E5M2 FP8 vectors (OCP microscaling), scaled by the block scale register and added to a single-precision tile.ACE
TOP4MXBHF8PSACE outer product of E5M2 by E4M3 FP8 vectors (OCP microscaling), scaled by the block scale register and added to a single-precision tile.ACE
TOP4MXBSSPSACE outer product of two ZMM registers of MX INT8 values, scaled by the block scale register and accumulated into a single-precision tile.ACE
TOP4MXHBF8PSACE outer product of E4M3 by E5M2 FP8 vectors (OCP microscaling), scaled by the block scale register and added to a single-precision tile.ACE
TOP4MXHF8PSACE outer product of E4M3 FP8 vectors (OCP microscaling), scaled by the block scale register and added to a single-precision tile.ACE
TZCNTCounts the trailing zero bits of an operand; APX adds a form that leaves the flags unchanged.BMI1, APX
UD0Raises an invalid-opcode exception (#UD); some processors decode it without the ModR/M byte and operands that others read.General-purpose
UD1Raises an invalid-opcode exception (#UD); its register and memory operands are decoded but not used.General-purpose
UD2Raises an invalid-opcode exception (#UD); compilers emit it for __builtin_trap and code that must not be reached.General-purpose
UDBRaises an invalid-opcode exception (#UD) with the one-byte opcode D6, in 64-bit mode, where SALC is not available.General-purpose
URDMSRReads a model-specific register from user mode, if the operating system allows that register in its user-MSR bitmap.USER_MSR, APX
UWRMSRWrites a model-specific register from user mode, if the operating system allows that register in its user-MSR bitmap.USER_MSR, APX
VADDBF16Adds packed bfloat16 values, rounding to nearest even with denormals treated as zero and without floating-point exceptions.AVX10.2
VADDPDAdds packed doubles.AVX10.1
VADDPHAdds packed half-precision values.AVX10.1
VADDPSAdds packed singles.AVX10.1
VADDSDAdds the low doubles; the other elements come from the first source.AVX10.1
VADDSHAdds the low half-precision values; the other elements come from the first source.AVX10.1
VADDSSAdds the low singles; the other elements come from the first source.AVX10.1
VAESDECPerforms one round of AES decryption on each 128-bit lane with the round key of the matching lane.AVX10.1
VAESDECLASTPerforms the last round of AES decryption on each 128-bit lane with the round key of the matching lane.AVX10.1
VAESENCPerforms one round of AES encryption on each 128-bit lane with the round key of the matching lane.AVX10.1
VAESENCLASTPerforms the last round of AES encryption on each 128-bit lane with the round key of the matching lane.AVX10.1
VALIGNDConcatenates two vectors and extracts one vector's worth of doublewords starting at an element offset given by an immediate.AVX10.1
VALIGNQConcatenates two vectors and extracts one vector's worth of quadwords starting at an element offset given by an immediate.AVX10.1
VANDNPDComputes the bitwise AND of the inverted first source with the second, as packed doubles.AVX10.1
VANDNPSComputes the bitwise AND of the inverted first source with the second, as packed singles.AVX10.1
VANDPDComputes the bitwise AND of packed doubles.AVX10.1
VANDPSComputes the bitwise AND of packed singles.AVX10.1
VBCSTNEBF162PSLoads one bfloat16 value from memory, converts it to single precision and broadcasts it to every element, without floating-point exceptions.AVX-NE-CONVERT
VBCSTNESH2PSLoads one half-precision value from memory, converts it to single precision and broadcasts it to every element, without floating-point exceptions.AVX-NE-CONVERT
VBLENDMPDPicks each of the packed doubles from the second source where a mask bit is set, otherwise from the first.AVX10.1
VBLENDMPSPicks each of the packed singles from the second source where a mask bit is set, otherwise from the first.AVX10.1
VBROADCASTF32X2Copies a group of two singles (64 bits) from memory or a register to every such group of a vector.AVX10.1
VBROADCASTF32X4Copies a group of four singles (128 bits) from memory to every 128-bit block of a vector.AVX10.1
VBROADCASTF32X8Copies a group of eight singles (256 bits) from memory to both halves of a ZMM register.AVX10.1
VBROADCASTF64X2Copies a group of two doubles (128 bits) from memory to every 128-bit block of a vector.AVX10.1
VBROADCASTF64X4Copies a group of four doubles (256 bits) from memory to both halves of a ZMM register.AVX10.1
VBROADCASTI32X2Copies a group of two doublewords (64 bits) from memory or a register to every such group of a vector.AVX10.1
VBROADCASTI32X4Copies a group of four doublewords (128 bits) from memory to every 128-bit block of a vector.AVX10.1
VBROADCASTI32X8Copies a group of eight doublewords (256 bits) from memory to both halves of a ZMM register.AVX10.1
VBROADCASTI64X2Copies a group of two quadwords (128 bits) from memory to every 128-bit block of a vector.AVX10.1
VBROADCASTI64X4Copies a group of four quadwords (256 bits) from memory to both halves of a ZMM register.AVX10.1
VBROADCASTSDCopies one double from memory or an XMM register to every element of a vector.AVX10.1
VBROADCASTSSCopies one single from memory or an XMM register to every element of a vector.AVX10.1
VCMPBF16Compares packed bfloat16 values with one of 32 predicates chosen by an immediate and writes the results to a mask register.AVX10.2
VCMPPDCompares packed doubles with one of 32 predicates chosen by an immediate; the VEX form writes all-ones or zero elements, the EVEX form a mask register.AVX10.1
VCMPPHCompares packed half-precision values with one of 32 predicates chosen by an immediate and writes the results to a mask register.AVX10.1
VCMPPSCompares packed singles with one of 32 predicates chosen by an immediate; the VEX form writes all-ones or zero elements, the EVEX form a mask register.AVX10.1
VCMPSDCompares the low doubles with one of 32 predicates an immediate selects, into an all-ones or zero element (VEX) or a mask register (EVEX).AVX10.1
VCMPSHCompares the low half-precision values with one of 32 predicates chosen by an immediate and writes the result to a mask register.AVX10.1
VCMPSSCompares the low singles with one of 32 predicates an immediate selects, into an all-ones or zero element (VEX) or a mask register (EVEX).AVX10.1
VCOMISBF16Compares the low bfloat16 values of two registers and sets ZF, PF and CF as COMISS does, without floating-point exceptions.AVX10.2
VCOMISDCompares the low doubles and sets ZF, PF and CF, clearing OF, SF and AF; any NaN signals an invalid exception.AVX10.1
VCOMISHCompares the low half-precision values and sets ZF, PF and CF, clearing OF, SF and AF; any NaN signals an invalid exception.AVX10.1
VCOMISSCompares the low singles and sets ZF, PF and CF, clearing OF, SF and AF; any NaN signals an invalid exception.AVX10.1
VCOMPRESSPDPacks the doubles selected by a mask contiguously into the low end of a register or into memory.AVX10.1
VCOMPRESSPSPacks the singles selected by a mask contiguously into the low end of a register or into memory.AVX10.1
VCOMXSDCompares the low doubles and sets OF, SF, ZF, PF and CF so that one conditional jump can test any relation, unordered included; NaNs signal invalid.AVX10.2
VCOMXSHCompares the low half-precision values and sets OF, SF, ZF, PF and CF so that one conditional jump can test any relation; NaNs signal invalid.AVX10.2
VCOMXSSCompares the low singles and sets OF, SF, ZF, PF and CF so that one conditional jump can test any relation, unordered included; NaNs signal invalid.AVX10.2
VCVT2PH2BF8Converts two vectors of half-precision values into one vector of E5M2 FP8 values, rounding to nearest even.AVX10.2
VCVT2PH2BF8SConverts two vectors of half-precision values into one vector of E5M2 FP8 values, saturating values too large for FP8 to its largest normal.AVX10.2
VCVT2PH2HF8Converts two vectors of half-precision values into one vector of E4M3 FP8 values, rounding to nearest even.AVX10.2
VCVT2PH2HF8SConverts two vectors of half-precision values into one vector of E4M3 FP8 values, saturating values too large for FP8 to its largest normal.AVX10.2
VCVT2PS2PHXConverts two vectors of single-precision values into one vector of half-precision values, rounding as MXCSR or the instruction selects.AVX10.2
VCVTBF162IBSConverts packed bfloat16 values to signed bytes with saturation, rounding to nearest even, each result in the low byte of a zeroed 16-bit element.AVX10.2
VCVTBF162IUBSConverts packed bfloat16 values to saturated unsigned bytes, rounding to nearest even, each in the low byte of a zeroed 16-bit element.AVX10.2
VCVTBF42HF8Converts packed 4-bit E2M1 floating-point values to E4M3 FP8, which is exact.AVX10_V2_AUX
VCVTBF62HF8Converts packed 6-bit E3M2 floating-point values to E4M3 FP8, which is exact.AVX10_V2_AUX
VCVTBF82BF4SConverts packed E5M2 FP8 values to the 4-bit E2M1 format, rounding to nearest even and saturating out-of-range values.AVX10_V2_AUX
VCVTBF82BF6SConverts packed E5M2 FP8 values to the 6-bit E3M2 format, rounding to nearest even and saturating out-of-range values.AVX10_V2_AUX
VCVTBF82PSConverts packed E5M2 FP8 values to single precision, which is exact.AVX10_V2_AUX
VCVTBIASPH2BF8Converts packed half-precision values to E5M2 FP8, adding an 8-bit bias below the kept bits before truncating, which allows stochastic rounding.AVX10.2
VCVTBIASPH2BF8SConverts packed half-precision values to E5M2 FP8 with an 8-bit rounding bias, saturating values too large for FP8 to its largest normal.AVX10.2
VCVTBIASPH2HF8Converts packed half-precision values to E4M3 FP8, adding an 8-bit bias below the kept bits before truncating, which allows stochastic rounding.AVX10.2
VCVTBIASPH2HF8SConverts packed half-precision values to E4M3 FP8 with an 8-bit rounding bias, saturating values too large for FP8 to its largest normal.AVX10.2
VCVTBIASPS2BF8Converts packed single-precision values to E5M2 FP8 with a rounding bias taken from another register, which allows stochastic rounding.AVX10_V2_AUX
VCVTBIASPS2BF8SConverts packed single-precision values to E5M2 FP8 with a rounding bias, saturating values too large for FP8 to its largest normal.AVX10_V2_AUX
VCVTBIASPS2HF8Converts packed single-precision values to E4M3 FP8 with a rounding bias taken from another register, which allows stochastic rounding.AVX10_V2_AUX
VCVTBIASPS2HF8SConverts packed single-precision values to E4M3 FP8 with a rounding bias, saturating values too large for FP8 to its largest normal.AVX10_V2_AUX
VCVTDQ2PDConverts packed signed doublewords to doubles.AVX10.1
VCVTDQ2PHConverts packed signed doublewords to half precision.AVX10.1
VCVTDQ2PSConverts packed signed doublewords to singles.AVX10.1
VCVTHF62HF8Converts packed 6-bit E2M3 floating-point values to E4M3 FP8, which is exact.AVX10_V2_AUX
VCVTHF82BF4SConverts packed E4M3 FP8 values to the 4-bit E2M1 format, rounding to nearest even and saturating out-of-range values.AVX10_V2_AUX
VCVTHF82HF6SConverts packed E4M3 FP8 values to the 6-bit E2M3 format, rounding to nearest even and saturating out-of-range values.AVX10_V2_AUX
VCVTHF82PHConverts packed E4M3 FP8 values to half precision, which is exact.AVX10.2
VCVTHF82PSConverts packed E4M3 FP8 values to single precision, which is exact.AVX10_V2_AUX
VCVTNE2PS2BF16Converts two vectors of singles into one vector of bfloat16 values, rounding to nearest even.AVX10.1
VCVTNEEBF162PSConverts the even-numbered bfloat16 values of a memory operand to single precision, without floating-point exceptions.AVX-NE-CONVERT
VCVTNEEPH2PSConverts the even-numbered half-precision values of a memory operand to single precision, without floating-point exceptions.AVX-NE-CONVERT
VCVTNEOBF162PSConverts the odd-numbered bfloat16 values of a memory operand to single precision, without floating-point exceptions.AVX-NE-CONVERT
VCVTNEOPH2PSConverts the odd-numbered half-precision values of a memory operand to single precision, without floating-point exceptions.AVX-NE-CONVERT
VCVTNEPS2BF16Converts packed single-precision values to bfloat16, rounding to nearest even with denormals flushed to zero and without consulting MXCSR.AVX-NE-CONVERT, AVX10.1
VCVTPD2DQConverts packed doubles to signed doublewords, rounding as MXCSR or the instruction selects.AVX10.1
VCVTPD2PHConverts packed doubles to half precision, rounding as MXCSR or the instruction selects.AVX10.1
VCVTPD2PSConverts packed doubles to singles, rounding as MXCSR or the instruction selects.AVX10.1
VCVTPD2QQConverts packed doubles to signed quadwords, rounding as MXCSR or the instruction selects.AVX10.1
VCVTPD2UDQConverts packed doubles to unsigned doublewords, rounding as MXCSR or the instruction selects.AVX10.1
VCVTPD2UQQConverts packed doubles to unsigned quadwords, rounding as MXCSR or the instruction selects.AVX10.1
VCVTPH2BF8Converts packed half-precision values to E5M2 FP8, rounding to nearest even.AVX10.2
VCVTPH2BF8SConverts packed half-precision values to E5M2 FP8, saturating values too large for FP8 to its largest normal.AVX10.2
VCVTPH2DQConverts packed half-precision values to signed doublewords, rounding as MXCSR or the instruction selects.AVX10.1
VCVTPH2HF8Converts packed half-precision values to E4M3 FP8, rounding to nearest even.AVX10.2
VCVTPH2HF8SConverts packed half-precision values to E4M3 FP8, saturating values too large for FP8 to its largest normal.AVX10.2
VCVTPH2IBSConverts packed half-precision values to signed bytes with saturation, each result in the low byte of a zeroed 16-bit element.AVX10.2
VCVTPH2IUBSConverts packed half-precision values to unsigned bytes with saturation, each result in the low byte of a zeroed 16-bit element.AVX10.2
VCVTPH2PDConverts packed half-precision values to doubles, which is exact.AVX10.1
VCVTPH2PSConverts packed half-precision values to singles, which is exact.AVX10.1
VCVTPH2PSXConverts packed half-precision values to singles like VCVTPH2PS, in the AVX512-FP16 form that also takes a broadcast memory source.AVX10.1
VCVTPH2QQConverts packed half-precision values to signed quadwords, rounding as MXCSR or the instruction selects.AVX10.1
VCVTPH2UDQConverts packed half-precision values to unsigned doublewords, rounding as MXCSR or the instruction selects.AVX10.1
VCVTPH2UQQConverts packed half-precision values to unsigned quadwords, rounding as MXCSR or the instruction selects.AVX10.1
VCVTPH2UWConverts packed half-precision values to unsigned words, rounding as MXCSR or the instruction selects.AVX10.1
VCVTPH2WConverts packed half-precision values to signed words, rounding as MXCSR or the instruction selects.AVX10.1
VCVTPS2BF8Converts packed single-precision values to E5M2 FP8, rounding to nearest even.AVX10_V2_AUX
VCVTPS2BF8SConverts packed single-precision values to E5M2 FP8, saturating values too large for FP8 to its largest normal.AVX10_V2_AUX
VCVTPS2DQConverts packed singles to signed doublewords, rounding as MXCSR or the instruction selects.AVX10.1
VCVTPS2HF8Converts packed single-precision values to E4M3 FP8, rounding to nearest even.AVX10_V2_AUX
VCVTPS2HF8SConverts packed single-precision values to E4M3 FP8, saturating values too large for FP8 to its largest normal.AVX10_V2_AUX
VCVTPS2IBSConverts packed single-precision values to signed bytes with saturation, each result in the low byte of a zeroed 32-bit element.AVX10.2
VCVTPS2IUBSConverts packed single-precision values to unsigned bytes with saturation, each result in the low byte of a zeroed 32-bit element.AVX10.2
VCVTPS2PDConverts packed singles to doubles, which is exact.AVX10.1
VCVTPS2PHConverts packed singles to half precision, rounding as an immediate or MXCSR selects.AVX10.1
VCVTPS2PHXConverts packed singles to half precision like VCVTPS2PH, but with a broadcast source and embedded rounding instead of an immediate.AVX10.1
VCVTPS2QQConverts packed singles to signed quadwords, rounding as MXCSR or the instruction selects.AVX10.1
VCVTPS2UDQConverts packed singles to unsigned doublewords, rounding as MXCSR or the instruction selects.AVX10.1
VCVTPS2UQQConverts packed singles to unsigned quadwords, rounding as MXCSR or the instruction selects.AVX10.1
VCVTQQ2PDConverts packed signed quadwords to doubles.AVX10.1
VCVTQQ2PHConverts packed signed quadwords to half precision.AVX10.1
VCVTQQ2PSConverts packed signed quadwords to singles.AVX10.1
VCVTROPS2HF8Converts packed single-precision values to E4M3 FP8, rounding to odd, which avoids double-rounding errors when the result is narrowed again.AVX10_V2_AUX
VCVTROPS2HF8SConverts packed single-precision values to E4M3 FP8, rounding to odd and saturating values too large for FP8 to its largest normal.AVX10_V2_AUX
VCVTSD2SHConverts the low double of the second source to half precision, rounding as MXCSR or the instruction selects; the rest come from the first source.AVX10.1
VCVTSD2SIConverts the low double to a signed 32- or 64-bit integer in a general-purpose register, rounding as MXCSR or the instruction selects.AVX10.1
VCVTSD2SSConverts the low double of the second source to single, rounding as MXCSR or the instruction selects; the other elements come from the first source.AVX10.1
VCVTSD2USIConverts the low double to an unsigned 32- or 64-bit integer in a general-purpose register, rounding as MXCSR or the instruction selects.AVX10.1
VCVTSH2SDConverts the low half-precision value of the second source to double, which is exact; the other elements come from the first source.AVX10.1
VCVTSH2SIConverts the low half-precision value to a signed 32- or 64-bit integer in a general-purpose register, rounding as MXCSR or the instruction selects.AVX10.1
VCVTSH2SSConverts the low half-precision value of the second source to single, which is exact; the other elements come from the first source.AVX10.1
VCVTSH2USIConverts the low half-precision value to an unsigned integer in a 32- or 64-bit register, rounding as MXCSR or the instruction selects.AVX10.1
VCVTSI2SDConverts a signed 32- or 64-bit integer to double in the low element; the other elements come from the first source.AVX10.1
VCVTSI2SHConverts a signed 32- or 64-bit integer to half precision in the low element; the other elements come from the first source.AVX10.1
VCVTSI2SSConverts a signed 32- or 64-bit integer to single in the low element; the other elements come from the first source.AVX10.1
VCVTSS2SDConverts the low single of the second source to double, which is exact; the other elements come from the first source.AVX10.1
VCVTSS2SHConverts the low single of the second source to half precision, rounding as MXCSR or the instruction selects; the rest come from the first source.AVX10.1
VCVTSS2SIConverts the low single to a signed 32- or 64-bit integer in a general-purpose register, rounding as MXCSR or the instruction selects.AVX10.1
VCVTSS2USIConverts the low single to an unsigned 32- or 64-bit integer in a general-purpose register, rounding as MXCSR or the instruction selects.AVX10.1
VCVTTBF162IBSConverts packed bfloat16 values to signed bytes, truncating and saturating, each result in the low byte of a zeroed 16-bit element.AVX10.2
VCVTTBF162IUBSConverts packed bfloat16 values to unsigned bytes, truncating and saturating, each result in the low byte of a zeroed 16-bit element.AVX10.2
VCVTTPD2DQConverts packed doubles to signed doublewords, truncating toward zero.AVX10.1
VCVTTPD2DQSConverts packed doubles to 32-bit integers with truncation and, if the invalid exception is masked, saturation and zero for NaN.AVX10.2
VCVTTPD2QQConverts packed doubles to signed quadwords, truncating toward zero.AVX10.1
VCVTTPD2QQSConverts packed doubles to 64-bit integers with truncation and, if the invalid exception is masked, saturation and zero for NaN.AVX10.2
VCVTTPD2UDQConverts packed doubles to unsigned doublewords, truncating toward zero.AVX10.1
VCVTTPD2UDQSConverts packed doubles to unsigned 32-bit integers with truncation and, if the invalid exception is masked, saturation and zero for NaN.AVX10.2
VCVTTPD2UQQConverts packed doubles to unsigned quadwords, truncating toward zero.AVX10.1
VCVTTPD2UQQSConverts packed doubles to unsigned 64-bit integers with truncation and, if the invalid exception is masked, saturation and zero for NaN.AVX10.2
VCVTTPH2DQConverts packed half-precision values to signed doublewords, truncating toward zero.AVX10.1
VCVTTPH2IBSConverts packed half-precision values to signed bytes, truncating and saturating, each result in the low byte of a zeroed 16-bit element.AVX10.2
VCVTTPH2IUBSConverts packed half-precision values to unsigned bytes, truncating and saturating, each result in the low byte of a zeroed 16-bit element.AVX10.2
VCVTTPH2QQConverts packed half-precision values to signed quadwords, truncating toward zero.AVX10.1
VCVTTPH2UDQConverts packed half-precision values to unsigned doublewords, truncating toward zero.AVX10.1
VCVTTPH2UQQConverts packed half-precision values to unsigned quadwords, truncating toward zero.AVX10.1
VCVTTPH2UWConverts packed half-precision values to unsigned words, truncating toward zero.AVX10.1
VCVTTPH2WConverts packed half-precision values to signed words, truncating toward zero.AVX10.1
VCVTTPS2DQConverts packed singles to signed doublewords, truncating toward zero.AVX10.1
VCVTTPS2DQSConverts packed singles to 32-bit integers with truncation and, if the invalid exception is masked, saturation and zero for NaN.AVX10.2
VCVTTPS2IBSConverts packed single-precision values to signed bytes, truncating and saturating, each result in the low byte of a zeroed 32-bit element.AVX10.2
VCVTTPS2IUBSConverts packed single-precision values to unsigned bytes, truncating and saturating, each result in the low byte of a zeroed 32-bit element.AVX10.2
VCVTTPS2QQConverts packed singles to signed quadwords, truncating toward zero.AVX10.1
VCVTTPS2QQSConverts packed singles to 64-bit integers with truncation and, if the invalid exception is masked, saturation and zero for NaN.AVX10.2
VCVTTPS2UDQConverts packed singles to unsigned doublewords, truncating toward zero.AVX10.1
VCVTTPS2UDQSConverts packed singles to unsigned 32-bit integers with truncation and, if the invalid exception is masked, saturation and zero for NaN.AVX10.2
VCVTTPS2UQQConverts packed singles to unsigned quadwords, truncating toward zero.AVX10.1
VCVTTPS2UQQSConverts packed singles to unsigned 64-bit integers with truncation and, if the invalid exception is masked, saturation and zero for NaN.AVX10.2
VCVTTSD2SIConverts the low double to a signed 32- or 64-bit integer in a general-purpose register, truncating toward zero.AVX10.1
VCVTTSD2SISConverts the low double to a signed 32- or 64-bit integer with truncation and, if the invalid exception is masked, saturation and zero for NaN.AVX10.2
VCVTTSD2USIConverts the low double to an unsigned 32- or 64-bit integer in a general-purpose register, truncating toward zero.AVX10.1
VCVTTSD2USISConverts the low double to an unsigned 32- or 64-bit integer with truncation and, if the invalid exception is masked, saturation and zero for NaN.AVX10.2
VCVTTSH2SIConverts the low half-precision value to a signed 32- or 64-bit integer in a general-purpose register, truncating toward zero.AVX10.1
VCVTTSH2USIConverts the low half-precision value to an unsigned 32- or 64-bit integer in a general-purpose register, truncating toward zero.AVX10.1
VCVTTSS2SIConverts the low single to a signed 32- or 64-bit integer in a general-purpose register, truncating toward zero.AVX10.1
VCVTTSS2SISConverts the low single to a signed 32- or 64-bit integer with truncation and, if the invalid exception is masked, saturation and zero for NaN.AVX10.2
VCVTTSS2USIConverts the low single to an unsigned 32- or 64-bit integer in a general-purpose register, truncating toward zero.AVX10.1
VCVTTSS2USISConverts the low single to an unsigned 32- or 64-bit integer with truncation and, if the invalid exception is masked, saturation and zero for NaN.AVX10.2
VCVTUDQ2PDConverts packed unsigned doublewords to doubles.AVX10.1
VCVTUDQ2PHConverts packed unsigned doublewords to half precision.AVX10.1
VCVTUDQ2PSConverts packed unsigned doublewords to singles.AVX10.1
VCVTUQQ2PDConverts packed unsigned quadwords to doubles.AVX10.1
VCVTUQQ2PHConverts packed unsigned quadwords to half precision.AVX10.1
VCVTUQQ2PSConverts packed unsigned quadwords to singles.AVX10.1
VCVTUSI2SDConverts an unsigned 32- or 64-bit integer to double in the low element; the other elements come from the first source.AVX10.1
VCVTUSI2SHConverts an unsigned 32- or 64-bit integer to half precision in the low element; the other elements come from the first source.AVX10.1
VCVTUSI2SSConverts an unsigned 32- or 64-bit integer to single in the low element; the other elements come from the first source.AVX10.1
VCVTUW2PHConverts packed unsigned words to half precision.AVX10.1
VCVTW2PHConverts packed signed words to half precision.AVX10.1
VDBPSADBWSums absolute differences of 4-byte groups of the two sources into 16-bit results, after an immediate shuffles the second within each 128-bit lane.AVX10.1
VDIVBF16Divides packed bfloat16 values, rounding to nearest even with denormals treated as zero and without floating-point exceptions.AVX10.2
VDIVPDDivides packed doubles.AVX10.1
VDIVPHDivides packed half-precision values.AVX10.1
VDIVPSDivides packed singles.AVX10.1
VDIVSDDivides the low doubles; the other elements come from the first source.AVX10.1
VDIVSHDivides the low half-precision values; the other elements come from the first source.AVX10.1
VDIVSSDivides the low singles; the other elements come from the first source.AVX10.1
VDPBF16PSMultiplies pairs of bfloat16 values and adds both products to the matching single-precision accumulator.AVX10.1
VDPPHPSMultiplies pairs of half-precision values and adds both products to the matching single-precision accumulator.AVX10.2
VEXPANDPDSpreads consecutive doubles from the low end of a register or from memory to the positions selected by a mask.AVX10.1
VEXPANDPSSpreads consecutive singles from the low end of a register or from memory to the positions selected by a mask.AVX10.1
VEXTRACTF32X4Copies the 128-bit block of singles that an immediate selects to a register or memory, masked per element.AVX10.1
VEXTRACTF32X8Copies the 256-bit block of singles that an immediate selects to a register or memory, masked per element.AVX10.1
VEXTRACTF64X2Copies the 128-bit block of doubles that an immediate selects to a register or memory, masked per element.AVX10.1
VEXTRACTF64X4Copies the 256-bit block of doubles that an immediate selects to a register or memory, masked per element.AVX10.1
VEXTRACTI32X4Copies the 128-bit block of doublewords that an immediate selects to a register or memory, masked per element.AVX10.1
VEXTRACTI32X8Copies the 256-bit block of doublewords that an immediate selects to a register or memory, masked per element.AVX10.1
VEXTRACTI64X2Copies the 128-bit block of quadwords that an immediate selects to a register or memory, masked per element.AVX10.1
VEXTRACTI64X4Copies the 256-bit block of quadwords that an immediate selects to a register or memory, masked per element.AVX10.1
VEXTRACTPSCopies the single that an immediate selects from an XMM register to a general-purpose register or memory.AVX10.1
VFCMADDCPHMultiplies packed complex half-precision numbers by the complex conjugates of the second source and adds the products to the destination.AVX10.1
VFCMADDCSHMultiplies the low complex half-precision number of the first source by the conjugate of the second's and adds the product to the destination.AVX10.1
VFCMULCPHMultiplies packed complex half-precision numbers by the complex conjugates of the second source.AVX10.1
VFCMULCSHMultiplies the low complex half-precision number of the first source by the complex conjugate of the second source's.AVX10.1
VFIXUPIMMPDReplaces special doubles (such as NaN) of the first source with responses from a table in the second; an immediate controls exceptions.AVX10.1
VFIXUPIMMPSReplaces special singles (such as NaN) of the first source with responses from a table in the second; an immediate controls exceptions.AVX10.1
VFIXUPIMMSDReplaces a special low double (such as NaN) of the first source with a response from a table in the second; an immediate controls exceptions.AVX10.1
VFIXUPIMMSSReplaces a special low single (such as NaN) of the first source with a response from a table in the second; an immediate controls exceptions.AVX10.1
VFMADD132BF16Fused multiply-add of packed bfloat16 values: first operand times third plus second, into the first.AVX10.2
VFMADD132PDFused multiply-add of packed doubles: first operand times third plus second, into the first.AVX10.1
VFMADD132PHFused multiply-add of packed half-precision values: first operand times third plus second, into the first.AVX10.1
VFMADD132PSFused multiply-add of packed singles: first operand times third plus second, into the first.AVX10.1
VFMADD132SDFused multiply-add of the low doubles: first times third plus second, into the first; the rest is unchanged.AVX10.1
VFMADD132SHFused multiply-add of the low half-precision values: first times third plus second, into the first; the rest is unchanged.AVX10.1
VFMADD132SSFused multiply-add of the low singles: first times third plus second, into the first; the rest is unchanged.AVX10.1
VFMADD213BF16Fused multiply-add of packed bfloat16 values: second operand times first plus third, into the first.AVX10.2
VFMADD213PDFused multiply-add of packed doubles: second operand times first plus third, into the first.AVX10.1
VFMADD213PHFused multiply-add of packed half-precision values: second operand times first plus third, into the first.AVX10.1
VFMADD213PSFused multiply-add of packed singles: second operand times first plus third, into the first.AVX10.1
VFMADD213SDFused multiply-add of the low doubles: second times first plus third, into the first; the rest is unchanged.AVX10.1
VFMADD213SHFused multiply-add of the low half-precision values: second times first plus third, into the first; the rest is unchanged.AVX10.1
VFMADD213SSFused multiply-add of the low singles: second times first plus third, into the first; the rest is unchanged.AVX10.1
VFMADD231BF16Fused multiply-add of packed bfloat16 values: second operand times third plus first, into the first.AVX10.2
VFMADD231PDFused multiply-add of packed doubles: second operand times third plus first, into the first.AVX10.1
VFMADD231PHFused multiply-add of packed half-precision values: second operand times third plus first, into the first.AVX10.1
VFMADD231PSFused multiply-add of packed singles: second operand times third plus first, into the first.AVX10.1
VFMADD231SDFused multiply-add of the low doubles: second times third plus first, into the first; the rest is unchanged.AVX10.1
VFMADD231SHFused multiply-add of the low half-precision values: second times third plus first, into the first; the rest is unchanged.AVX10.1
VFMADD231SSFused multiply-add of the low singles: second times third plus first, into the first; the rest is unchanged.AVX10.1
VFMADDCPHMultiplies packed complex numbers, each a pair of half-precision values, and adds the products to the destination.AVX10.1
VFMADDCSHMultiplies the low complex numbers, each a pair of half-precision values, and adds the product to the destination.AVX10.1
VFMADDSUB132PDFused multiply of packed doubles, first times third, minus the second in even elements and plus it in odd ones, into the first.AVX10.1
VFMADDSUB132PHFused multiply of packed half-precision values, first times third, minus the second in even elements and plus it in odd ones, into the first.AVX10.1
VFMADDSUB132PSFused multiply of packed singles, first times third, minus the second in even elements and plus it in odd ones, into the first.AVX10.1
VFMADDSUB213PDFused multiply of packed doubles, second times first, minus the third in even elements and plus it in odd ones, into the first.AVX10.1
VFMADDSUB213PHFused multiply of packed half-precision values, second times first, minus the third in even elements and plus it in odd ones, into the first.AVX10.1
VFMADDSUB213PSFused multiply of packed singles, second times first, minus the third in even elements and plus it in odd ones, into the first.AVX10.1
VFMADDSUB231PDFused multiply of packed doubles, second times third, minus the first in even elements and plus it in odd ones, into the first.AVX10.1
VFMADDSUB231PHFused multiply of packed half-precision values, second times third, minus the first in even elements and plus it in odd ones, into the first.AVX10.1
VFMADDSUB231PSFused multiply of packed singles, second times third, minus the first in even elements and plus it in odd ones, into the first.AVX10.1
VFMSUB132BF16Fused multiply-subtract of packed bfloat16 values: first operand times third minus second, into the first.AVX10.2
VFMSUB132PDFused multiply-subtract of packed doubles: first operand times third minus second, into the first.AVX10.1
VFMSUB132PHFused multiply-subtract of packed half-precision values: first operand times third minus second, into the first.AVX10.1
VFMSUB132PSFused multiply-subtract of packed singles: first operand times third minus second, into the first.AVX10.1
VFMSUB132SDFused multiply-subtract of the low doubles: first times third minus second, into the first; the rest is unchanged.AVX10.1
VFMSUB132SHFused multiply-subtract of the low half-precision values: first times third minus second, into the first; the rest is unchanged.AVX10.1
VFMSUB132SSFused multiply-subtract of the low singles: first times third minus second, into the first; the rest is unchanged.AVX10.1
VFMSUB213BF16Fused multiply-subtract of packed bfloat16 values: second operand times first minus third, into the first.AVX10.2
VFMSUB213PDFused multiply-subtract of packed doubles: second operand times first minus third, into the first.AVX10.1
VFMSUB213PHFused multiply-subtract of packed half-precision values: second operand times first minus third, into the first.AVX10.1
VFMSUB213PSFused multiply-subtract of packed singles: second operand times first minus third, into the first.AVX10.1
VFMSUB213SDFused multiply-subtract of the low doubles: second times first minus third, into the first; the rest is unchanged.AVX10.1
VFMSUB213SHFused multiply-subtract of the low half-precision values: second times first minus third, into the first; the rest is unchanged.AVX10.1
VFMSUB213SSFused multiply-subtract of the low singles: second times first minus third, into the first; the rest is unchanged.AVX10.1
VFMSUB231BF16Fused multiply-subtract of packed bfloat16 values: second operand times third minus first, into the first.AVX10.2
VFMSUB231PDFused multiply-subtract of packed doubles: second operand times third minus first, into the first.AVX10.1
VFMSUB231PHFused multiply-subtract of packed half-precision values: second operand times third minus first, into the first.AVX10.1
VFMSUB231PSFused multiply-subtract of packed singles: second operand times third minus first, into the first.AVX10.1
VFMSUB231SDFused multiply-subtract of the low doubles: second times third minus first, into the first; the rest is unchanged.AVX10.1
VFMSUB231SHFused multiply-subtract of the low half-precision values: second times third minus first, into the first; the rest is unchanged.AVX10.1
VFMSUB231SSFused multiply-subtract of the low singles: second times third minus first, into the first; the rest is unchanged.AVX10.1
VFMSUBADD132PDFused multiply of packed doubles, first times third, plus the second in even elements and minus it in odd ones, into the first.AVX10.1
VFMSUBADD132PHFused multiply of packed half-precision values, first times third, plus the second in even elements and minus it in odd ones, into the first.AVX10.1
VFMSUBADD132PSFused multiply of packed singles, first times third, plus the second in even elements and minus it in odd ones, into the first.AVX10.1
VFMSUBADD213PDFused multiply of packed doubles, second times first, plus the third in even elements and minus it in odd ones, into the first.AVX10.1
VFMSUBADD213PHFused multiply of packed half-precision values, second times first, plus the third in even elements and minus it in odd ones, into the first.AVX10.1
VFMSUBADD213PSFused multiply of packed singles, second times first, plus the third in even elements and minus it in odd ones, into the first.AVX10.1
VFMSUBADD231PDFused multiply of packed doubles, second times third, plus the first in even elements and minus it in odd ones, into the first.AVX10.1
VFMSUBADD231PHFused multiply of packed half-precision values, second times third, plus the first in even elements and minus it in odd ones, into the first.AVX10.1
VFMSUBADD231PSFused multiply of packed singles, second times third, plus the first in even elements and minus it in odd ones, into the first.AVX10.1
VFMULCPHMultiplies packed complex numbers, each a pair of half-precision values.AVX10.1
VFMULCSHMultiplies the low complex numbers, each a pair of half-precision values.AVX10.1
VFNMADD132BF16Fused negated multiply-add of packed bfloat16 values: minus first operand times third, plus second, into the first.AVX10.2
VFNMADD132PDFused negated multiply-add of packed doubles: minus first operand times third, plus second, into the first.AVX10.1
VFNMADD132PHFused negated multiply-add of packed half-precision values: minus first operand times third, plus second, into the first.AVX10.1
VFNMADD132PSFused negated multiply-add of packed singles: minus first operand times third, plus second, into the first.AVX10.1
VFNMADD132SDFused negated multiply-add of the low doubles: minus first times third, plus second, into the first; the rest is unchanged.AVX10.1
VFNMADD132SHFused negated multiply-add of the low half-precision values: minus first times third, plus second, into the first; the rest is unchanged.AVX10.1
VFNMADD132SSFused negated multiply-add of the low singles: minus first times third, plus second, into the first; the rest is unchanged.AVX10.1
VFNMADD213BF16Fused negated multiply-add of packed bfloat16 values: minus second operand times first, plus third, into the first.AVX10.2
VFNMADD213PDFused negated multiply-add of packed doubles: minus second operand times first, plus third, into the first.AVX10.1
VFNMADD213PHFused negated multiply-add of packed half-precision values: minus second operand times first, plus third, into the first.AVX10.1
VFNMADD213PSFused negated multiply-add of packed singles: minus second operand times first, plus third, into the first.AVX10.1
VFNMADD213SDFused negated multiply-add of the low doubles: minus second times first, plus third, into the first; the rest is unchanged.AVX10.1
VFNMADD213SHFused negated multiply-add of the low half-precision values: minus second times first, plus third, into the first; the rest is unchanged.AVX10.1
VFNMADD213SSFused negated multiply-add of the low singles: minus second times first, plus third, into the first; the rest is unchanged.AVX10.1
VFNMADD231BF16Fused negated multiply-add of packed bfloat16 values: minus second operand times third, plus first, into the first.AVX10.2
VFNMADD231PDFused negated multiply-add of packed doubles: minus second operand times third, plus first, into the first.AVX10.1
VFNMADD231PHFused negated multiply-add of packed half-precision values: minus second operand times third, plus first, into the first.AVX10.1
VFNMADD231PSFused negated multiply-add of packed singles: minus second operand times third, plus first, into the first.AVX10.1
VFNMADD231SDFused negated multiply-add of the low doubles: minus second times third, plus first, into the first; the rest is unchanged.AVX10.1
VFNMADD231SHFused negated multiply-add of the low half-precision values: minus second times third, plus first, into the first; the rest is unchanged.AVX10.1
VFNMADD231SSFused negated multiply-add of the low singles: minus second times third, plus first, into the first; the rest is unchanged.AVX10.1
VFNMSUB132BF16Fused negated multiply-subtract of packed bfloat16 values: minus first operand times third, minus second, into the first.AVX10.2
VFNMSUB132PDFused negated multiply-subtract of packed doubles: minus first operand times third, minus second, into the first.AVX10.1
VFNMSUB132PHFused negated multiply-subtract of packed half-precision values: minus first operand times third, minus second, into the first.AVX10.1
VFNMSUB132PSFused negated multiply-subtract of packed singles: minus first operand times third, minus second, into the first.AVX10.1
VFNMSUB132SDFused negated multiply-subtract of the low doubles: minus first times third, minus second, into the first; the rest is unchanged.AVX10.1
VFNMSUB132SHFused negated multiply-subtract of the low half-precision values: minus first times third, minus second, into the first; the rest is unchanged.AVX10.1
VFNMSUB132SSFused negated multiply-subtract of the low singles: minus first times third, minus second, into the first; the rest is unchanged.AVX10.1
VFNMSUB213BF16Fused negated multiply-subtract of packed bfloat16 values: minus second operand times first, minus third, into the first.AVX10.2
VFNMSUB213PDFused negated multiply-subtract of packed doubles: minus second operand times first, minus third, into the first.AVX10.1
VFNMSUB213PHFused negated multiply-subtract of packed half-precision values: minus second operand times first, minus third, into the first.AVX10.1
VFNMSUB213PSFused negated multiply-subtract of packed singles: minus second operand times first, minus third, into the first.AVX10.1
VFNMSUB213SDFused negated multiply-subtract of the low doubles: minus second times first, minus third, into the first; the rest is unchanged.AVX10.1
VFNMSUB213SHFused negated multiply-subtract of the low half-precision values: minus second times first, minus third, into the first; the rest is unchanged.AVX10.1
VFNMSUB213SSFused negated multiply-subtract of the low singles: minus second times first, minus third, into the first; the rest is unchanged.AVX10.1
VFNMSUB231BF16Fused negated multiply-subtract of packed bfloat16 values: minus second operand times third, minus first, into the first.AVX10.2
VFNMSUB231PDFused negated multiply-subtract of packed doubles: minus second operand times third, minus first, into the first.AVX10.1
VFNMSUB231PHFused negated multiply-subtract of packed half-precision values: minus second operand times third, minus first, into the first.AVX10.1
VFNMSUB231PSFused negated multiply-subtract of packed singles: minus second operand times third, minus first, into the first.AVX10.1
VFNMSUB231SDFused negated multiply-subtract of the low doubles: minus second times third, minus first, into the first; the rest is unchanged.AVX10.1
VFNMSUB231SHFused negated multiply-subtract of the low half-precision values: minus second times third, minus first, into the first; the rest is unchanged.AVX10.1
VFNMSUB231SSFused negated multiply-subtract of the low singles: minus second times third, minus first, into the first; the rest is unchanged.AVX10.1
VFPCLASSBF16Tests packed bfloat16 values for the classes an immediate selects, such as NaN, zero or infinity, and writes the results to a mask register.AVX10.2
VFPCLASSPDTests packed doubles for the classes an immediate selects, such as NaN, zero or infinity, and writes the results to a mask register.AVX10.1
VFPCLASSPHTests packed half-precision values for the classes an immediate selects, such as NaN, zero or infinity, and writes the results to a mask register.AVX10.1
VFPCLASSPSTests packed singles for the classes an immediate selects, such as NaN, zero or infinity, and writes the results to a mask register.AVX10.1
VFPCLASSSDTests the low double for the classes an immediate selects, such as NaN, zero or infinity, and writes the result to a mask register.AVX10.1
VFPCLASSSHTests the low half-precision value for the classes an immediate selects, such as NaN, zero or infinity, and writes the result to a mask register.AVX10.1
VFPCLASSSSTests the low single for the classes an immediate selects, such as NaN, zero or infinity, and writes the result to a mask register.AVX10.1
VGATHERDPDLoads doubles from memory at addresses formed with a vector of 32-bit indices, for the elements a mask selects.AVX10.1
VGATHERDPSLoads singles from memory at addresses formed with a vector of 32-bit indices, for the elements a mask selects.AVX10.1
VGATHERQPDLoads doubles from memory at addresses formed with a vector of 64-bit indices, for the elements a mask selects.AVX10.1
VGATHERQPSLoads singles from memory at addresses formed with a vector of 64-bit indices, for the elements a mask selects.AVX10.1
VGETEXPBF16Extracts the unbiased exponent of each packed bfloat16 value as a bfloat16 number.AVX10.2
VGETEXPPDExtracts the unbiased exponent of packed doubles as floating-point numbers.AVX10.1
VGETEXPPHExtracts the unbiased exponent of packed half-precision values as floating-point numbers.AVX10.1
VGETEXPPSExtracts the unbiased exponent of packed singles as floating-point numbers.AVX10.1
VGETEXPSDExtracts the unbiased exponent of the low double of the second source as a floating-point number; the other elements come from the first source.AVX10.1
VGETEXPSHExtracts the unbiased exponent of the low half-precision value of the second source as a float; the other elements come from the first source.AVX10.1
VGETEXPSSExtracts the unbiased exponent of the low single of the second source as a floating-point number; the other elements come from the first source.AVX10.1
VGETMANTBF16Extracts the normalized mantissa of each packed bfloat16 value, with the interval and sign handling chosen by an immediate.AVX10.2
VGETMANTPDExtracts the normalized mantissa of packed doubles, with the interval and sign handling chosen by an immediate.AVX10.1
VGETMANTPHExtracts the normalized mantissa of packed half-precision values, with the interval and sign handling chosen by an immediate.AVX10.1
VGETMANTPSExtracts the normalized mantissa of packed singles, with the interval and sign handling chosen by an immediate.AVX10.1
VGETMANTSDExtracts the normalized mantissa of the low double of the second source, as an immediate selects; the other elements come from the first source.AVX10.1
VGETMANTSHExtracts the normalized mantissa of the low half-precision value of the second source, as an immediate selects; the rest come from the first source.AVX10.1
VGETMANTSSExtracts the normalized mantissa of the low single of the second source, as an immediate selects; the other elements come from the first source.AVX10.1
VGF2P8AFFINEINVQBReplaces each byte with its inverse in GF(2^8), then applies an affine transformation given by an 8x8 bit matrix and an immediate constant.AVX10.1
VGF2P8AFFINEQBApplies an affine transformation to each byte, given by an 8x8 bit matrix from the second source and an immediate constant.AVX10.1
VGF2P8MULBMultiplies bytes in the finite field GF(2^8) defined by the AES polynomial x^8 + x^4 + x^3 + x + 1.AVX10.1
VINSERTF32X4Replaces the 128-bit block that an immediate selects with four singles from a register or memory.AVX10.1
VINSERTF32X8Replaces the 256-bit block that an immediate selects with eight singles from a register or memory.AVX10.1
VINSERTF64X2Replaces the 128-bit block that an immediate selects with two doubles from a register or memory.AVX10.1
VINSERTF64X4Replaces the 256-bit block that an immediate selects with four doubles from a register or memory.AVX10.1
VINSERTI32X4Replaces the 128-bit block that an immediate selects with four doublewords from a register or memory.AVX10.1
VINSERTI32X8Replaces the 256-bit block that an immediate selects with eight doublewords from a register or memory.AVX10.1
VINSERTI64X2Replaces the 128-bit block that an immediate selects with two quadwords from a register or memory.AVX10.1
VINSERTI64X4Replaces the 256-bit block that an immediate selects with four quadwords from a register or memory.AVX10.1
VINSERTPSInserts a single from a register or memory into an XMM register at the position an immediate gives, and can zero other elements.AVX10.1
VMAXBF16Returns the larger of each pair of packed bfloat16 values, with the x86 convention of returning the second operand if either is NaN or both are zero.AVX10.2
VMAXPDReturns the larger of each pair of packed doubles, or the second operand if either is NaN or both are zero.AVX10.1
VMAXPHReturns the larger of each pair of packed half-precision values, or the second operand if either is NaN or both are zero.AVX10.1
VMAXPSReturns the larger of each pair of packed singles, or the second operand if either is NaN or both are zero.AVX10.1
VMAXSDReturns the larger of the low doubles, or the second operand if either is NaN or both are zero; the other elements come from the first source.AVX10.1
VMAXSHReturns the larger low half-precision value, or the second operand if either is NaN or both are zero; the other elements come from the first source.AVX10.1
VMAXSSReturns the larger of the low singles, or the second operand if either is NaN or both are zero; the other elements come from the first source.AVX10.1
VMINBF16Returns the smaller of each pair of packed bfloat16 values, with the x86 convention of returning the second operand if either is NaN or both are zero.AVX10.2
VMINMAXBF16Computes an IEEE 754-2019 minimum, maximum or magnitude comparison of packed bfloat16 values, as an immediate selects, with sign control.AVX10.2
VMINMAXPDComputes an IEEE 754-2019 minimum, maximum or magnitude comparison of packed doubles, as an immediate selects, with sign control.AVX10.2
VMINMAXPHComputes an IEEE 754-2019 minimum, maximum or magnitude comparison of packed half-precision values, as an immediate selects, with sign control.AVX10.2
VMINMAXPSComputes an IEEE 754-2019 minimum, maximum or magnitude comparison of packed singles, as an immediate selects, with sign control.AVX10.2
VMINMAXSDComputes an IEEE 754-2019 minimum, maximum or magnitude comparison of the low doubles, as an immediate selects, with sign control.AVX10.2
VMINMAXSHComputes an IEEE 754-2019 minimum, maximum or magnitude comparison of the low half-precision values, as an immediate selects, with sign control.AVX10.2
VMINMAXSSComputes an IEEE 754-2019 minimum, maximum or magnitude comparison of the low singles, as an immediate selects, with sign control.AVX10.2
VMINPDReturns the smaller of each pair of packed doubles, or the second operand if either is NaN or both are zero.AVX10.1
VMINPHReturns the smaller of each pair of packed half-precision values, or the second operand if either is NaN or both are zero.AVX10.1
VMINPSReturns the smaller of each pair of packed singles, or the second operand if either is NaN or both are zero.AVX10.1
VMINSDReturns the smaller of the low doubles, or the second operand if either is NaN or both are zero; the other elements come from the first source.AVX10.1
VMINSHReturns the smaller low half-precision value, or the second operand if either is NaN or both are zero; the other elements come from the first source.AVX10.1
VMINSSReturns the smaller of the low singles, or the second operand if either is NaN or both are zero; the other elements come from the first source.AVX10.1
VMOVAPDMoves packed doubles between registers and memory that must be aligned to the vector size.AVX10.1
VMOVAPSMoves packed singles between registers and memory that must be aligned to the vector size.AVX10.1
VMOVDMoves 32 bits between an XMM register and a general-purpose register or memory, zeroing the rest of an XMM destination; AVX10.2 adds an XMM-to-XMM form.AVX10.1, AVX10.2
VMOVDDUPDuplicates each even-numbered double into the next odd position.AVX10.1
VMOVDQA32Moves integer vectors between registers and aligned memory, masked at doubleword granularity.AVX10.1
VMOVDQA64Moves integer vectors between registers and aligned memory, masked at quadword granularity.AVX10.1
VMOVDQU16Moves integer vectors between registers and memory without an alignment requirement, masked at word granularity.AVX10.1
VMOVDQU32Moves integer vectors between registers and memory without an alignment requirement, masked at doubleword granularity.AVX10.1
VMOVDQU64Moves integer vectors between registers and memory without an alignment requirement, masked at quadword granularity.AVX10.1
VMOVDQU8Moves integer vectors between registers and memory without an alignment requirement, masked at byte granularity.AVX10.1
VMOVHLPSMoves the high two singles of the second source into the low half of the result, the high half coming from the first source.AVX10.1
VMOVHPDLoads a double from memory into the high half of an XMM register, or stores the high double to memory.AVX10.1
VMOVHPSLoads two singles from memory into the high half of an XMM register, or stores the high two to memory.AVX10.1
VMOVLHPSMoves the low two singles of the second source into the high half of the result, the low half coming from the first source.AVX10.1
VMOVLPDLoads a double from memory into the low half of an XMM register, or stores the low double to memory.AVX10.1
VMOVLPSLoads two singles from memory into the low half of an XMM register, or stores the low two to memory.AVX10.1
VMOVNTDQStores an integer vector to aligned memory with a non-temporal hint that avoids polluting the caches.AVX10.1
VMOVNTDQALoads a vector from aligned memory with a non-temporal hint, which lets it read write-combining memory efficiently.AVX10.1
VMOVNTPDStores packed doubles to aligned memory with a non-temporal hint that avoids polluting the caches.AVX10.1
VMOVNTPSStores packed singles to aligned memory with a non-temporal hint that avoids polluting the caches.AVX10.1
VMOVQMoves a quadword between an XMM register and a general-purpose register, memory or another XMM register, zeroing the rest of a vector destination.AVX10.1
VMOVRSBLoads a vector of bytes under a write mask, with a hint that other cores are likely to read the same data before it is written.MOVRS
VMOVRSDLoads a vector of doublewords under a write mask, with a hint that other cores are likely to read the same data before it is written.MOVRS
VMOVRSQLoads a vector of quadwords under a write mask, with a hint that other cores are likely to read the same data before it is written.MOVRS
VMOVRSWLoads a vector of words under a write mask, with a hint that other cores are likely to read the same data before it is written.MOVRS
VMOVSDMoves the low double between XMM registers or to and from memory; a load zeroes the rest of the register.AVX10.1
VMOVSHMoves the low half-precision value between XMM registers or to and from memory; a load zeroes the rest of the register.AVX10.1
VMOVSHDUPDuplicates each odd-numbered single into the even position below it.AVX10.1
VMOVSLDUPDuplicates each even-numbered single into the odd position above it.AVX10.1
VMOVSSMoves the low single between XMM registers or to and from memory; a load zeroes the rest of the register.AVX10.1
VMOVUPDMoves packed doubles between registers and memory without an alignment requirement.AVX10.1
VMOVUPSMoves packed singles between registers and memory without an alignment requirement.AVX10.1
VMOVWMoves 16 bits between an XMM register and a general-purpose register or memory, zeroing the rest of an XMM destination; AVX10.2 adds an XMM-to-XMM form.AVX10.1, AVX10.2
VMPSADBWComputes, per 128-bit lane, word sums of absolute differences between a 4-byte block of the second source and eight sliding blocks of the first.AVX10.2
VMULBF16Multiplies packed bfloat16 values, rounding to nearest even with denormals treated as zero and without floating-point exceptions.AVX10.2
VMULPDMultiplies packed doubles.AVX10.1
VMULPHMultiplies packed half-precision values.AVX10.1
VMULPSMultiplies packed singles.AVX10.1
VMULSDMultiplies the low doubles; the other elements come from the first source.AVX10.1
VMULSHMultiplies the low half-precision values; the other elements come from the first source.AVX10.1
VMULSSMultiplies the low singles; the other elements come from the first source.AVX10.1
VORPDComputes the bitwise OR of packed doubles.AVX10.1
VORPSComputes the bitwise OR of packed singles.AVX10.1
VPABSBComputes the absolute value of packed signed bytes.AVX10.1
VPABSDComputes the absolute value of packed signed doublewords.AVX10.1
VPABSQComputes the absolute value of packed signed quadwords.AVX10.1
VPABSWComputes the absolute value of packed signed words.AVX10.1
VPACKSSDWNarrows signed doublewords from two sources to words with signed saturation.AVX10.1
VPACKSSWBNarrows signed words from two sources to bytes with signed saturation.AVX10.1
VPACKUSDWNarrows signed doublewords from two sources to words with unsigned saturation.AVX10.1
VPACKUSWBNarrows signed words from two sources to bytes with unsigned saturation.AVX10.1
VPADDBAdds packed bytes, wrapping around on overflow.AVX10.1
VPADDDAdds packed doublewords, wrapping around on overflow.AVX10.1
VPADDQAdds packed quadwords, wrapping around on overflow.AVX10.1
VPADDSBAdds packed signed bytes with signed saturation.AVX10.1
VPADDSWAdds packed signed words with signed saturation.AVX10.1
VPADDUSBAdds packed unsigned bytes with unsigned saturation.AVX10.1
VPADDUSWAdds packed unsigned words with unsigned saturation.AVX10.1
VPADDWAdds packed words, wrapping around on overflow.AVX10.1
VPALIGNRConcatenates two sources in each 128-bit lane and extracts 16 bytes starting at a byte offset given by an immediate.AVX10.1
VPANDDComputes the bitwise AND of two vectors, masked at doubleword granularity.AVX10.1
VPANDNDComputes the bitwise AND of the inverted first source with the second, masked at doubleword granularity.AVX10.1
VPANDNQComputes the bitwise AND of the inverted first source with the second, masked at quadword granularity.AVX10.1
VPANDQComputes the bitwise AND of two vectors, masked at quadword granularity.AVX10.1
VPAVGBComputes the rounded average of packed unsigned bytes.AVX10.1
VPAVGWComputes the rounded average of packed unsigned words.AVX10.1
VPBLENDMBPicks each byte from the second source where a mask bit is set, otherwise from the first.AVX10.1
VPBLENDMDPicks each doubleword from the second source where a mask bit is set, otherwise from the first.AVX10.1
VPBLENDMQPicks each quadword from the second source where a mask bit is set, otherwise from the first.AVX10.1
VPBLENDMWPicks each word from the second source where a mask bit is set, otherwise from the first.AVX10.1
VPBROADCASTBCopies one byte from a register or memory to every byte of a vector.AVX10.1
VPBROADCASTDCopies one doubleword from a register or memory to every doubleword of a vector.AVX10.1
VPBROADCASTMB2QCopies the low 8 bits of a mask register, zero-extended, to every quadword.AVX10.1
VPBROADCASTMW2DCopies the low 16 bits of a mask register, zero-extended, to every doubleword.AVX10.1
VPBROADCASTQCopies one quadword from a register or memory to every quadword of a vector.AVX10.1
VPBROADCASTWCopies one word from a register or memory to every word of a vector.AVX10.1
VPCLMULQDQCarry-less multiplies one quadword of each source, chosen by an immediate, into a 128-bit product in each 128-bit lane.AVX10.1
VPCMPBCompares packed signed bytes with a predicate chosen by an immediate and writes the results to a mask register.AVX10.1
VPCMPDCompares packed signed doublewords with a predicate chosen by an immediate and writes the results to a mask register.AVX10.1
VPCMPEQBCompares packed bytes for equality; the VEX form writes all-ones or zero elements, the EVEX form a mask register.AVX10.1
VPCMPEQDCompares packed doublewords for equality; the VEX form writes all-ones or zero elements, the EVEX form a mask register.AVX10.1
VPCMPEQQCompares packed quadwords for equality; the VEX form writes all-ones or zero elements, the EVEX form a mask register.AVX10.1
VPCMPEQWCompares packed words for equality; the VEX form writes all-ones or zero elements, the EVEX form a mask register.AVX10.1
VPCMPGTBTests packed signed bytes for greater than; the VEX form writes all-ones or zero elements, the EVEX form a mask register.AVX10.1
VPCMPGTDTests packed signed doublewords for greater than; the VEX form writes all-ones or zero elements, the EVEX form a mask register.AVX10.1
VPCMPGTQTests packed signed quadwords for greater than; the VEX form writes all-ones or zero elements, the EVEX form a mask register.AVX10.1
VPCMPGTWTests packed signed words for greater than; the VEX form writes all-ones or zero elements, the EVEX form a mask register.AVX10.1
VPCMPQCompares packed signed quadwords with a predicate chosen by an immediate and writes the results to a mask register.AVX10.1
VPCMPUBCompares packed unsigned bytes with a predicate chosen by an immediate and writes the results to a mask register.AVX10.1
VPCMPUDCompares packed unsigned doublewords with a predicate chosen by an immediate and writes the results to a mask register.AVX10.1
VPCMPUQCompares packed unsigned quadwords with a predicate chosen by an immediate and writes the results to a mask register.AVX10.1
VPCMPUWCompares packed unsigned words with a predicate chosen by an immediate and writes the results to a mask register.AVX10.1
VPCMPWCompares packed signed words with a predicate chosen by an immediate and writes the results to a mask register.AVX10.1
VPCOMPRESSBPacks the bytes selected by a mask contiguously into the low end of a register or into memory.AVX10.1
VPCOMPRESSDPacks the doublewords selected by a mask contiguously into the low end of a register or into memory.AVX10.1
VPCOMPRESSQPacks the quadwords selected by a mask contiguously into the low end of a register or into memory.AVX10.1
VPCOMPRESSWPacks the words selected by a mask contiguously into the low end of a register or into memory.AVX10.1
VPCONFLICTDFor each doubleword, sets a bit for every lower-numbered element of the source that holds the same value.AVX10.1
VPCONFLICTQFor each quadword, sets a bit for every lower-numbered element of the source that holds the same value.AVX10.1
VPDPBSSDMultiplies signed bytes by signed bytes, sums each group of four products and adds the sum to the matching 32-bit accumulator.AVX-VNNI-INT8, AVX10.2
VPDPBSSDSMultiplies signed bytes by signed bytes, sums each group of four products and adds the sum to the matching 32-bit accumulator with signed saturation.AVX-VNNI-INT8, AVX10.2
VPDPBSUDMultiplies signed bytes of the first source by unsigned bytes of the second and adds each group of four products to a 32-bit accumulator.AVX-VNNI-INT8, AVX10.2
VPDPBSUDSMultiplies signed bytes of the first source by unsigned bytes of the second and adds each group of four products to a 32-bit accumulator, saturating.AVX-VNNI-INT8, AVX10.2
VPDPBUSDMultiplies unsigned bytes of the first source by signed bytes of the second and adds each group of four products to a 32-bit accumulator.AVX-VNNI, AVX10.1
VPDPBUSDSMultiplies unsigned bytes of the first source by signed bytes of the second and adds each group of four products to a 32-bit accumulator, saturating.AVX-VNNI, AVX10.1
VPDPBUUDMultiplies unsigned bytes by unsigned bytes, sums each group of four products and adds the sum to the matching 32-bit accumulator.AVX-VNNI-INT8, AVX10.2
VPDPBUUDSMultiplies unsigned bytes by unsigned bytes and adds each group of four products to the matching 32-bit accumulator with unsigned saturation.AVX-VNNI-INT8, AVX10.2
VPDPWSSDMultiplies pairs of signed words, adds both products to the matching 32-bit accumulator.AVX-VNNI, AVX10.1
VPDPWSSDSMultiplies pairs of signed words and adds both products to the matching 32-bit accumulator with signed saturation.AVX-VNNI, AVX10.1
VPDPWSUDMultiplies signed words of the first source by unsigned words of the second and adds each pair of products to a 32-bit accumulator.AVX-VNNI-INT16, AVX10.2
VPDPWSUDSMultiplies signed words of the first source by unsigned words of the second and adds each pair of products to a 32-bit accumulator, saturating.AVX-VNNI-INT16, AVX10.2
VPDPWUSDMultiplies unsigned words of the first source by signed words of the second and adds each pair of products to a 32-bit accumulator.AVX-VNNI-INT16, AVX10.2
VPDPWUSDSMultiplies unsigned words of the first source by signed words of the second and adds each pair of products to a 32-bit accumulator, saturating.AVX-VNNI-INT16, AVX10.2
VPDPWUUDMultiplies unsigned words by unsigned words and adds each pair of products to the matching 32-bit accumulator.AVX-VNNI-INT16, AVX10.2
VPDPWUUDSMultiplies unsigned words by unsigned words and adds each pair of products to the matching 32-bit accumulator with unsigned saturation.AVX-VNNI-INT16, AVX10.2
VPERMBRearranges the bytes of a vector across the whole register using an index vector.AVX10.1
VPERMDRearranges the doublewords of a vector across the whole register using an index vector.AVX10.1
VPERMI2BSelects bytes from two tables with an index vector that the result then overwrites.AVX10.1
VPERMI2DSelects doublewords from two tables with an index vector that the result then overwrites.AVX10.1
VPERMI2PDSelects doubles from two tables with an index vector that the result then overwrites.AVX10.1
VPERMI2PSSelects singles from two tables with an index vector that the result then overwrites.AVX10.1
VPERMI2QSelects quadwords from two tables with an index vector that the result then overwrites.AVX10.1
VPERMI2WSelects words from two tables with an index vector that the result then overwrites.AVX10.1
VPERMILPDRearranges doubles within each 128-bit lane, controlled by an immediate or by a vector.AVX10.1
VPERMILPSRearranges singles within each 128-bit lane, controlled by an immediate or by a vector.AVX10.1
VPERMPDRearranges doubles across the whole register, controlled by an immediate or by an index vector.AVX10.1
VPERMPSRearranges singles across the whole register using an index vector.AVX10.1
VPERMQRearranges quadwords across the whole register, controlled by an immediate or by an index vector.AVX10.1
VPERMT2BSelects bytes from two tables with an index vector, the result overwriting the first table.AVX10.1
VPERMT2DSelects doublewords from two tables with an index vector, the result overwriting the first table.AVX10.1
VPERMT2PDSelects doubles from two tables with an index vector, the result overwriting the first table.AVX10.1
VPERMT2PSSelects singles from two tables with an index vector, the result overwriting the first table.AVX10.1
VPERMT2QSelects quadwords from two tables with an index vector, the result overwriting the first table.AVX10.1
VPERMT2WSelects words from two tables with an index vector, the result overwriting the first table.AVX10.1
VPERMWRearranges the words of a vector across the whole register using an index vector.AVX10.1
VPEXPANDBSpreads consecutive bytes from the low end of a register or from memory to the positions selected by a mask.AVX10.1
VPEXPANDDSpreads consecutive doublewords from the low end of a register or from memory to the positions selected by a mask.AVX10.1
VPEXPANDQSpreads consecutive quadwords from the low end of a register or from memory to the positions selected by a mask.AVX10.1
VPEXPANDWSpreads consecutive words from the low end of a register or from memory to the positions selected by a mask.AVX10.1
VPEXTRBCopies the byte selected by an immediate from an XMM register to a general-purpose register or memory.AVX10.1
VPEXTRDCopies the doubleword selected by an immediate from an XMM register to a general-purpose register or memory.AVX10.1
VPEXTRQCopies the quadword selected by an immediate from an XMM register to a general-purpose register or memory.AVX10.1
VPEXTRWCopies the word selected by an immediate from an XMM register to a general-purpose register or memory.AVX10.1
VPGATHERDDLoads doublewords from memory at addresses formed with a vector of 32-bit indices, for the elements a mask selects.AVX10.1
VPGATHERDQLoads quadwords from memory at addresses formed with a vector of 32-bit indices, for the elements a mask selects.AVX10.1
VPGATHERQDLoads doublewords from memory at addresses formed with a vector of 64-bit indices, for the elements a mask selects.AVX10.1
VPGATHERQQLoads quadwords from memory at addresses formed with a vector of 64-bit indices, for the elements a mask selects.AVX10.1
VPINSRBInserts a byte from a register or memory into an XMM register at the position an immediate gives.AVX10.1
VPINSRDInserts a doubleword from a register or memory into an XMM register at the position an immediate gives.AVX10.1
VPINSRQInserts a quadword from a register or memory into an XMM register at the position an immediate gives.AVX10.1
VPINSRWInserts a word from a register or memory into an XMM register at the position an immediate gives.AVX10.1
VPLZCNTDCounts the leading zero bits of each doubleword.AVX10.1
VPLZCNTQCounts the leading zero bits of each quadword.AVX10.1
VPMADD52HUQMultiplies the low 52 bits of packed unsigned quadwords into 104-bit products and adds the high 52 bits of each product to a 64-bit accumulator.AVX-IFMA, AVX10.1
VPMADD52LUQMultiplies the low 52 bits of packed unsigned quadwords into 104-bit products and adds the low 52 bits of each product to a 64-bit accumulator.AVX-IFMA, AVX10.1
VPMADDUBSWMultiplies unsigned bytes of the first source by signed bytes of the second and adds adjacent products into words with signed saturation.AVX10.1
VPMADDWDMultiplies signed words and adds adjacent products into doublewords.AVX10.1
VPMAXSBReturns the larger of each pair of signed bytes.AVX10.1
VPMAXSDReturns the larger of each pair of signed doublewords.AVX10.1
VPMAXSQReturns the larger of each pair of signed quadwords.AVX10.1
VPMAXSWReturns the larger of each pair of signed words.AVX10.1
VPMAXUBReturns the larger of each pair of unsigned bytes.AVX10.1
VPMAXUDReturns the larger of each pair of unsigned doublewords.AVX10.1
VPMAXUQReturns the larger of each pair of unsigned quadwords.AVX10.1
VPMAXUWReturns the larger of each pair of unsigned words.AVX10.1
VPMINSBReturns the smaller of each pair of signed bytes.AVX10.1
VPMINSDReturns the smaller of each pair of signed doublewords.AVX10.1
VPMINSQReturns the smaller of each pair of signed quadwords.AVX10.1
VPMINSWReturns the smaller of each pair of signed words.AVX10.1
VPMINUBReturns the smaller of each pair of unsigned bytes.AVX10.1
VPMINUDReturns the smaller of each pair of unsigned doublewords.AVX10.1
VPMINUQReturns the smaller of each pair of unsigned quadwords.AVX10.1
VPMINUWReturns the smaller of each pair of unsigned words.AVX10.1
VPMOVB2MSets each bit of a mask register from the sign bit of the corresponding byte.AVX10.1
VPMOVD2MSets each bit of a mask register from the sign bit of the corresponding doubleword.AVX10.1
VPMOVDBNarrows packed doublewords to bytes by truncation.AVX10.1
VPMOVDWNarrows packed doublewords to words by truncation.AVX10.1
VPMOVM2BSets each byte to all ones or all zeros according to the corresponding mask bit.AVX10.1
VPMOVM2DSets each doubleword to all ones or all zeros according to the corresponding mask bit.AVX10.1
VPMOVM2QSets each quadword to all ones or all zeros according to the corresponding mask bit.AVX10.1
VPMOVM2WSets each word to all ones or all zeros according to the corresponding mask bit.AVX10.1
VPMOVQ2MSets each bit of a mask register from the sign bit of the corresponding quadword.AVX10.1
VPMOVQBNarrows packed quadwords to bytes by truncation.AVX10.1
VPMOVQDNarrows packed quadwords to doublewords by truncation.AVX10.1
VPMOVQWNarrows packed quadwords to words by truncation.AVX10.1
VPMOVSDBNarrows packed signed doublewords to bytes with signed saturation.AVX10.1
VPMOVSDWNarrows packed signed doublewords to words with signed saturation.AVX10.1
VPMOVSQBNarrows packed signed quadwords to bytes with signed saturation.AVX10.1
VPMOVSQDNarrows packed signed quadwords to doublewords with signed saturation.AVX10.1
VPMOVSQWNarrows packed signed quadwords to words with signed saturation.AVX10.1
VPMOVSSDBNarrows packed signed doublewords to bytes with symmetric saturation, to the range -127 to 127.AVX10_V2_AUX
VPMOVSWBNarrows packed signed words to bytes with signed saturation.AVX10.1
VPMOVSXBDSign-extends packed bytes to doublewords.AVX10.1
VPMOVSXBQSign-extends packed bytes to quadwords.AVX10.1
VPMOVSXBWSign-extends packed bytes to words.AVX10.1
VPMOVSXDQSign-extends packed doublewords to quadwords.AVX10.1
VPMOVSXWDSign-extends packed words to doublewords.AVX10.1
VPMOVSXWQSign-extends packed words to quadwords.AVX10.1
VPMOVUSDBNarrows packed unsigned doublewords to bytes with unsigned saturation.AVX10.1
VPMOVUSDWNarrows packed unsigned doublewords to words with unsigned saturation.AVX10.1
VPMOVUSQBNarrows packed unsigned quadwords to bytes with unsigned saturation.AVX10.1
VPMOVUSQDNarrows packed unsigned quadwords to doublewords with unsigned saturation.AVX10.1
VPMOVUSQWNarrows packed unsigned quadwords to words with unsigned saturation.AVX10.1
VPMOVUSWBNarrows packed unsigned words to bytes with unsigned saturation.AVX10.1
VPMOVW2MSets each bit of a mask register from the sign bit of the corresponding word.AVX10.1
VPMOVWBNarrows packed words to bytes by truncation.AVX10.1
VPMOVZXBDZero-extends packed bytes to doublewords.AVX10.1
VPMOVZXBQZero-extends packed bytes to quadwords.AVX10.1
VPMOVZXBWZero-extends packed bytes to words.AVX10.1
VPMOVZXDQZero-extends packed doublewords to quadwords.AVX10.1
VPMOVZXWDZero-extends packed words to doublewords.AVX10.1
VPMOVZXWQZero-extends packed words to quadwords.AVX10.1
VPMULDQMultiplies the signed low doublewords of each quadword into 64-bit products.AVX10.1
VPMULHRSWMultiplies packed signed words as Q15 fixed-point numbers, rounding each product to a Q15 result.AVX10.1
VPMULHUWMultiplies unsigned words and keeps the high 16 bits of each product.AVX10.1
VPMULHWMultiplies signed words and keeps the high 16 bits of each product.AVX10.1
VPMULLDMultiplies packed doublewords and keeps the low 32 bits of each product.AVX10.1
VPMULLQMultiplies packed quadwords and keeps the low 64 bits of each product.AVX10.1
VPMULLWMultiplies packed words and keeps the low 16 bits of each product.AVX10.1
VPMULTISHIFTQBFor each byte of the result, takes 8 bits from the matching quadword of the second source at a bit offset given by a control byte of the first.AVX10.1
VPMULUDQMultiplies the unsigned low doublewords of each quadword into 64-bit products.AVX10.1
VPOPCNTBCounts the set bits in each byte.AVX10.1
VPOPCNTDCounts the set bits in each doubleword.AVX10.1
VPOPCNTQCounts the set bits in each quadword.AVX10.1
VPOPCNTWCounts the set bits in each word.AVX10.1
VPORDComputes the bitwise OR of two vectors, masked at doubleword granularity.AVX10.1
VPORQComputes the bitwise OR of two vectors, masked at quadword granularity.AVX10.1
VPROLDRotates each doubleword left by an immediate count.AVX10.1
VPROLQRotates each quadword left by an immediate count.AVX10.1
VPROLVDRotates each doubleword left by the count in the matching element of the second source.AVX10.1
VPROLVQRotates each quadword left by the count in the matching element of the second source.AVX10.1
VPRORDRotates each doubleword right by an immediate count.AVX10.1
VPRORQRotates each quadword right by an immediate count.AVX10.1
VPRORVDRotates each doubleword right by the count in the matching element of the second source.AVX10.1
VPRORVQRotates each quadword right by the count in the matching element of the second source.AVX10.1
VPSADBWSums the absolute differences of unsigned bytes over each group of eight, giving one 16-bit sum per quadword.AVX10.1
VPSCATTERDDStores doublewords to memory at addresses formed with a vector of 32-bit indices, for the elements a mask selects.AVX10.1
VPSCATTERDQStores quadwords to memory at addresses formed with a vector of 32-bit indices, for the elements a mask selects.AVX10.1
VPSCATTERQDStores doublewords to memory at addresses formed with a vector of 64-bit indices, for the elements a mask selects.AVX10.1
VPSCATTERQQStores quadwords to memory at addresses formed with a vector of 64-bit indices, for the elements a mask selects.AVX10.1
VPSHLDDJoins each doubleword of the first source above the matching one of the second, shifts the pair left by an immediate and keeps the upper half.AVX10.1
VPSHLDQJoins each quadword of the first source above the matching one of the second, shifts the pair left by an immediate and keeps the upper half.AVX10.1
VPSHLDVDJoins each doubleword of the destination above the matching one of the source, shifts the pair left by a per-element count and keeps the upper half.AVX10.1
VPSHLDVQJoins each quadword of the destination above the matching one of the source, shifts the pair left by a per-element count and keeps the upper half.AVX10.1
VPSHLDVWJoins each word of the destination above the matching one of the source, shifts the pair left by a per-element count and keeps the upper half.AVX10.1
VPSHLDWJoins each word of the first source above the matching one of the second, shifts the pair left by an immediate and keeps the upper half.AVX10.1
VPSHRDDJoins each doubleword of the second source above the matching one of the first, shifts the pair right by an immediate and keeps the lower half.AVX10.1
VPSHRDQJoins each quadword of the second source above the matching one of the first, shifts the pair right by an immediate and keeps the lower half.AVX10.1
VPSHRDVDJoins each doubleword of the source above the matching one of the destination, shifts the pair right by a per-element count and keeps the lower half.AVX10.1
VPSHRDVQJoins each quadword of the source above the matching one of the destination, shifts the pair right by a per-element count and keeps the lower half.AVX10.1
VPSHRDVWJoins each word of the source above the matching one of the destination, shifts the pair right by a per-element count and keeps the lower half.AVX10.1
VPSHRDWJoins each word of the second source above the matching one of the first, shifts the pair right by an immediate and keeps the lower half.AVX10.1
VPSHUFBRearranges bytes within each 128-bit lane using an index byte per result, which zeroes the byte when its top bit is set.AVX10.1
VPSHUFBITQMBSelects, for each byte of the second source, one bit of the matching quadword of the first and writes the bits to a mask register.AVX10.1
VPSHUFDRearranges doublewords within each 128-bit lane as an immediate selects.AVX10.1
VPSHUFHWRearranges the upper four words of each 128-bit lane as an immediate selects.AVX10.1
VPSHUFLWRearranges the lower four words of each 128-bit lane as an immediate selects.AVX10.1
VPSLLDShifts doublewords left by one count from a register or an immediate.AVX10.1
VPSLLDQShifts each 128-bit lane left by a number of bytes given by an immediate.AVX10.1
VPSLLQShifts quadwords left by one count from a register or an immediate.AVX10.1
VPSLLVDShifts each doubleword left by the count in the matching element of the second source.AVX10.1
VPSLLVQShifts each quadword left by the count in the matching element of the second source.AVX10.1
VPSLLVWShifts each word left by the count in the matching element of the second source.AVX10.1
VPSLLWShifts words left by one count from a register or an immediate.AVX10.1
VPSRADShifts doublewords right arithmetically by one count from a register or an immediate.AVX10.1
VPSRAQShifts quadwords right arithmetically by one count from a register or an immediate.AVX10.1
VPSRAVDShifts each doubleword right arithmetically by the count in the matching element of the second source.AVX10.1
VPSRAVQShifts each quadword right arithmetically by the count in the matching element of the second source.AVX10.1
VPSRAVWShifts each word right arithmetically by the count in the matching element of the second source.AVX10.1
VPSRAWShifts words right arithmetically by one count from a register or an immediate.AVX10.1
VPSRLDShifts doublewords right logically by one count from a register or an immediate.AVX10.1
VPSRLDQShifts each 128-bit lane right by a number of bytes given by an immediate.AVX10.1
VPSRLQShifts quadwords right logically by one count from a register or an immediate.AVX10.1
VPSRLVDShifts each doubleword right logically by the count in the matching element of the second source.AVX10.1
VPSRLVQShifts each quadword right logically by the count in the matching element of the second source.AVX10.1
VPSRLVWShifts each word right logically by the count in the matching element of the second source.AVX10.1
VPSRLWShifts words right logically by one count from a register or an immediate.AVX10.1
VPSUBBSubtracts packed bytes, wrapping around on overflow.AVX10.1
VPSUBDSubtracts packed doublewords, wrapping around on overflow.AVX10.1
VPSUBQSubtracts packed quadwords, wrapping around on overflow.AVX10.1
VPSUBSBSubtracts packed signed bytes with signed saturation.AVX10.1
VPSUBSWSubtracts packed signed words with signed saturation.AVX10.1
VPSUBUSBSubtracts packed unsigned bytes with unsigned saturation.AVX10.1
VPSUBUSWSubtracts packed unsigned words with unsigned saturation.AVX10.1
VPSUBWSubtracts packed words, wrapping around on overflow.AVX10.1
VPTERNLOGDComputes any bitwise function of three inputs, given as an 8-bit truth table in an immediate, masked at doubleword granularity.AVX10.1
VPTERNLOGQComputes any bitwise function of three inputs, given as an 8-bit truth table in an immediate, masked at quadword granularity.AVX10.1
VPTESTMBSets a mask bit for each pair of bytes whose AND is not zero.AVX10.1
VPTESTMDSets a mask bit for each pair of doublewords whose AND is not zero.AVX10.1
VPTESTMQSets a mask bit for each pair of quadwords whose AND is not zero.AVX10.1
VPTESTMWSets a mask bit for each pair of words whose AND is not zero.AVX10.1
VPTESTNMBSets a mask bit for each pair of bytes whose AND is zero.AVX10.1
VPTESTNMDSets a mask bit for each pair of doublewords whose AND is zero.AVX10.1
VPTESTNMQSets a mask bit for each pair of quadwords whose AND is zero.AVX10.1
VPTESTNMWSets a mask bit for each pair of words whose AND is zero.AVX10.1
VPUNPCKHBWInterleaves the high bytes of each 128-bit lane of two sources.AVX10.1
VPUNPCKHDQInterleaves the high doublewords of each 128-bit lane of two sources.AVX10.1
VPUNPCKHQDQInterleaves the high quadwords of each 128-bit lane of two sources.AVX10.1
VPUNPCKHWDInterleaves the high words of each 128-bit lane of two sources.AVX10.1
VPUNPCKLBWInterleaves the low bytes of each 128-bit lane of two sources.AVX10.1
VPUNPCKLDQInterleaves the low doublewords of each 128-bit lane of two sources.AVX10.1
VPUNPCKLQDQInterleaves the low quadwords of each 128-bit lane of two sources.AVX10.1
VPUNPCKLWDInterleaves the low words of each 128-bit lane of two sources.AVX10.1
VPXORDComputes the bitwise XOR of two vectors, masked at doubleword granularity.AVX10.1
VPXORQComputes the bitwise XOR of two vectors, masked at quadword granularity.AVX10.1
VRANGEPDComputes the minimum, maximum, or value of smaller or larger magnitude of packed doubles, as an immediate selects along with the sign of the result.AVX10.1
VRANGEPSComputes the minimum, maximum, or value of smaller or larger magnitude of packed singles, as an immediate selects along with the sign of the result.AVX10.1
VRANGESDComputes the minimum, maximum, or smaller or larger magnitude of the low doubles, as an immediate selects; the rest come from the first source.AVX10.1
VRANGESSComputes the minimum, maximum, or smaller or larger magnitude of the low singles, as an immediate selects; the rest come from the first source.AVX10.1
VRCP14PDApproximates the reciprocal of packed doubles with a relative error below 2^-14.AVX10.1
VRCP14PSApproximates the reciprocal of packed singles with a relative error below 2^-14.AVX10.1
VRCP14SDApproximates the reciprocal of the low double of the second source with a relative error below 2^-14; the other elements come from the first source.AVX10.1
VRCP14SSApproximates the reciprocal of the low single of the second source with a relative error below 2^-14; the other elements come from the first source.AVX10.1
VRCPBF16Approximates the reciprocal of each packed bfloat16 value with a relative error below 2^-8 + 2^-14.AVX10.2
VRCPPHApproximates the reciprocal of packed half-precision values with a relative error below 2^-11 + 2^-14.AVX10.1
VRCPSHApproximates the reciprocal of the second source's low half-precision value, relative error below 2^-11 + 2^-14; the rest come from the first source.AVX10.1
VREDUCEBF16Subtracts from each packed bfloat16 value its value rounded to the number of fraction bits an immediate gives, leaving the reduced argument.AVX10.2
VREDUCEPDSubtracts from packed doubles their values rounded to the number of fraction bits an immediate gives, leaving the reduced argument.AVX10.1
VREDUCEPHSubtracts from packed half-precision values their values rounded to the number of fraction bits an immediate gives, leaving the reduced argument.AVX10.1
VREDUCEPSSubtracts from packed singles their values rounded to the number of fraction bits an immediate gives, leaving the reduced argument.AVX10.1
VREDUCESDSubtracts from the low double of the second source its value rounded to the fraction bits an immediate gives; the rest come from the first source.AVX10.1
VREDUCESHSubtracts from the second source's low half-precision value that value rounded to an immediate's precision; the rest come from the first source.AVX10.1
VREDUCESSSubtracts from the low single of the second source its value rounded to the fraction bits an immediate gives; the rest come from the first source.AVX10.1
VRNDSCALEBF16Rounds each packed bfloat16 value to the number of fraction bits an immediate gives.AVX10.2
VRNDSCALEPDRounds packed doubles to the number of fraction bits and with the rounding mode that an immediate gives.AVX10.1
VRNDSCALEPHRounds packed half-precision values to the number of fraction bits and with the rounding mode that an immediate gives.AVX10.1
VRNDSCALEPSRounds packed singles to the number of fraction bits and with the rounding mode that an immediate gives.AVX10.1
VRNDSCALESDRounds the low double of the second source to the fraction bits and rounding mode an immediate gives; the rest come from the first source.AVX10.1
VRNDSCALESHRounds the second source's low half-precision value to the fraction bits and rounding mode an immediate gives; the rest come from the first source.AVX10.1
VRNDSCALESSRounds the low single of the second source to the fraction bits and rounding mode an immediate gives; the rest come from the first source.AVX10.1
VRSQRT14PDApproximates the reciprocal square root of packed doubles with a relative error below 2^-14.AVX10.1
VRSQRT14PSApproximates the reciprocal square root of packed singles with a relative error below 2^-14.AVX10.1
VRSQRT14SDApproximates the reciprocal square root of the second source's low double, relative error below 2^-14; the rest come from the first source.AVX10.1
VRSQRT14SSApproximates the reciprocal square root of the second source's low single, relative error below 2^-14; the rest come from the first source.AVX10.1
VRSQRTBF16Approximates the reciprocal square root of each packed bfloat16 value with a relative error below 2^-8 + 2^-14.AVX10.2
VRSQRTPHApproximates the reciprocal square root of packed half-precision values with a relative error below 2^-11 + 2^-14.AVX10.1
VRSQRTSHApproximates 1/sqrt(x) for the second source's low half-precision value, relative error below 2^-11 + 2^-14; the rest come from the first source.AVX10.1
VSCALEFBF16Multiplies each packed bfloat16 value by 2 raised to the floor of the corresponding value of the second source.AVX10.2
VSCALEFPDMultiplies packed doubles by 2 raised to the floor of the matching values of the second source.AVX10.1
VSCALEFPHMultiplies packed half-precision values by 2 raised to the floor of the matching values of the second source.AVX10.1
VSCALEFPSMultiplies packed singles by 2 raised to the floor of the matching values of the second source.AVX10.1
VSCALEFSDMultiplies the low double by 2 raised to the floor of the low value of the second source; the other elements come from the first source.AVX10.1
VSCALEFSHMultiplies the low half-precision value by 2 to the floor of the second source's low value; the other elements come from the first source.AVX10.1
VSCALEFSSMultiplies the low single by 2 raised to the floor of the low value of the second source; the other elements come from the first source.AVX10.1
VSCATTERDPDStores doubles to memory at addresses formed with a vector of 32-bit indices, for the elements a mask selects.AVX10.1
VSCATTERDPSStores singles to memory at addresses formed with a vector of 32-bit indices, for the elements a mask selects.AVX10.1
VSCATTERQPDStores doubles to memory at addresses formed with a vector of 64-bit indices, for the elements a mask selects.AVX10.1
VSCATTERQPSStores singles to memory at addresses formed with a vector of 64-bit indices, for the elements a mask selects.AVX10.1
VSHA512MSG1Performs the first half of the SHA-512 message schedule computation for the next four message quadwords.SHA512
VSHA512MSG2Completes the SHA-512 message schedule computation for the next four message quadwords.SHA512
VSHA512RNDS2Performs two rounds of SHA-512 (and SHA-384) on the working state, using precomputed message and round-constant sums.SHA512
VSHUFF32X4Picks 128-bit blocks of singles from the two sources as an immediate selects, the lower half of the result from the first source.AVX10.1
VSHUFF64X2Picks 128-bit blocks of doubles from the two sources as an immediate selects, the lower half of the result from the first source.AVX10.1
VSHUFI32X4Picks 128-bit blocks of doublewords from the two sources as an immediate selects, the lower half of the result from the first source.AVX10.1
VSHUFI64X2Picks 128-bit blocks of quadwords from the two sources as an immediate selects, the lower half of the result from the first source.AVX10.1
VSHUFPDPicks doubles from the two sources for each position within each 128-bit lane, as an immediate selects.AVX10.1
VSHUFPSPicks singles from the two sources for each position within each 128-bit lane, as an immediate selects.AVX10.1
VSM3MSG1Performs the first part of the SM3 message expansion for the next four message words.SM3
VSM3MSG2Completes the SM3 message expansion for the next four message words.SM3
VSM3RNDS2Performs two rounds of the SM3 hash function, starting at the round number in an immediate.SM3
VSM4KEY4Performs four rounds of SM4 key expansion in each 128-bit lane.SM4
VSM4RNDS4Performs four rounds of SM4 encryption in each 128-bit lane.SM4
VSQRTBF16Computes the square root of each packed bfloat16 value, rounding to nearest, with denormals treated as zero and without floating-point exceptions.AVX10.2
VSQRTPDComputes the square root of packed doubles.AVX10.1
VSQRTPHComputes the square root of packed half-precision values.AVX10.1
VSQRTPSComputes the square root of packed singles.AVX10.1
VSQRTSDComputes the square root of the low double of the second source; the other elements come from the first source.AVX10.1
VSQRTSHComputes the square root of the low half-precision value of the second source; the other elements come from the first source.AVX10.1
VSQRTSSComputes the square root of the low single of the second source; the other elements come from the first source.AVX10.1
VSUBBF16Subtracts packed bfloat16 values, rounding to nearest even with denormals treated as zero and without floating-point exceptions.AVX10.2
VSUBPDSubtracts packed doubles.AVX10.1
VSUBPHSubtracts packed half-precision values.AVX10.1
VSUBPSSubtracts packed singles.AVX10.1
VSUBSDSubtracts the low doubles; the other elements come from the first source.AVX10.1
VSUBSHSubtracts the low half-precision values; the other elements come from the first source.AVX10.1
VSUBSSSubtracts the low singles; the other elements come from the first source.AVX10.1
VUCOMISDCompares the low doubles and sets ZF, PF and CF, clearing OF, SF and AF; only a signaling NaN raises an invalid exception.AVX10.1
VUCOMISHCompares the low half-precision values and sets ZF, PF and CF, clearing OF, SF and AF; only a signaling NaN raises an invalid exception.AVX10.1
VUCOMISSCompares the low singles and sets ZF, PF and CF, clearing OF, SF and AF; only a signaling NaN raises an invalid exception.AVX10.1
VUCOMXSDCompares the low double-precision values of two operands like VCOMXSD but signals an invalid exception only for signaling NaNs.AVX10.2
VUCOMXSHCompares the low half-precision values of two operands like VCOMXSH but signals an invalid exception only for signaling NaNs.AVX10.2
VUCOMXSSCompares the low single-precision values of two operands like VCOMXSS but signals an invalid exception only for signaling NaNs.AVX10.2
VUNPACKBUnpacks tightly packed 2- to 7-bit fields into bytes, zero- or sign-extended, with the field size and start given by an immediate.AVX10_V2_AUX
VUNPCKHPDInterleaves the high doubles of each 128-bit lane of two sources.AVX10.1
VUNPCKHPSInterleaves the high singles of each 128-bit lane of two sources.AVX10.1
VUNPCKLPDInterleaves the low doubles of each 128-bit lane of two sources.AVX10.1
VUNPCKLPSInterleaves the low singles of each 128-bit lane of two sources.AVX10.1
VXORPDComputes the bitwise XOR of packed doubles.AVX10.1
VXORPSComputes the bitwise XOR of packed singles.AVX10.1
WRMSRLISTWrites up to 64 model-specific registers from a table in memory to the addresses listed in a second table, selected by a bit mask in RCX.MSRLIST
WRMSRNSWrites a model-specific register like WRMSR but without serializing the processor; the MSR_IMM form takes the MSR number as an immediate.WRMSRNS, MSR_IMM, APX
WRSSDWrites a 32-bit value to the current privilege level's shadow stack, where the operating system allows such writes.APX
WRSSQWrites a 64-bit value to the current privilege level's shadow stack, where the operating system allows such writes.APX
WRUSSDLets ring-0 code write a 32-bit value to a user-mode shadow stack.APX
WRUSSQLets ring-0 code write a 64-bit value to a user-mode shadow stack.APX
XADDExchanges a register with the destination and stores their sum in the destination; with LOCK it is the atomic fetch-and-add.General-purpose
XCHGSwaps two operands; with a memory operand it is atomic even without a LOCK prefix.General-purpose
XLATReplaces AL with the byte at RBX plus AL, a table lookup; XLATB is the spelling without operands.General-purpose
XORComputes the bitwise exclusive OR of two operands; APX adds three-operand forms and forms that leave the flags unchanged.General-purpose, APX

Reading the tables

The tables follow the notation of Intel’s manuals, with a few additions for information that XED records.

Instruction

Operands are in Intel order, destination first.

r8, r16, r32, r64
General-purpose registers of that width. r16/32/64 means the operand size is chosen by the prefixes: 66 for 16 bits, REX.W (or EVEX.W) for 64 bits, 32 bits otherwise.
m8 to m512, m16/32/64
A memory operand of that many bits.
imm8, imm16/32, imm64
An immediate value encoded in the instruction.
rel8, rel32, rel16/32
A branch target as a signed offset from the next instruction.
m16:16/32/64, ptr16:16/32
A far pointer, a 16-bit segment selector and an offset of 16, 32 or 64 bits, in memory or as an immediate.
AL, eAX, rAX, DX
A fixed register. eAX is AX or EAX and rAX AX, EAX or RAX, by operand size.
sreg, cr, dr
A segment, control or debug register.
m
A memory operand of which only the address matters, as for LEA.
xmm, ymm, zmm, k, tmm
A 128-, 256- or 512-bit vector register, an AVX-512 mask register, or an AMX tile register.
{k}, {k}{z}
The destination is written under a mask register; with {z}, masked-off elements can be zeroed instead of kept.
m512/m32bcst
Either a full vector in memory or one element that is broadcast to every position (EVEX.b set).
{er}, {sae}
The register form accepts a rounding mode in the instruction (embedded rounding), or suppresses floating-point exceptions.
vm32x, vm64z
A vector of addresses for gathers and scatters: 32- or 64-bit indices in an xmm, ymm or zmm register (VSIB addressing).
sibmem
A memory operand that must be encoded with a SIB byte; AMX tile loads and stores use its index register as the row stride.
{dfv}
The flags that APX’s CCMP and CTEST set when their condition is false, encoded in the instruction.
cc, scc
A condition code. Mnemonics that differ only in their condition, such as CMOVZ and CMOVNZ, share a page; the condition is part of the opcode (40+cc) or of the EVEX prefix (SC=scc).
LOCK, REP
The form carries the prefix. XED lists these as separate instructions; here they appear on the page of the base mnemonic, as do the spellings of one instruction for each operand size, such as MOVSB to MOVSQ on the page of MOVS.

Encoding

66, F2, F3, NP
A prefix that is part of the opcode; NP means none of them is allowed.
67
The address-size prefix, for a form that uses a smaller address size than the mode’s default, such as JECXZ, which tests ECX, in 64-bit mode.
REX.W, REX2
A REX prefix with W set, or APX’s two-byte REX2 prefix (D5).
0F, 0F 38, 0F 3A
The escape bytes of the legacy opcode maps.
VEX.256.66.0F38.W0
A VEX or EVEX prefix with its fields: vector length (128, 256, 512; LZ or LLZ must be zero; LIG is ignored), implied prefix, opcode map (0F, 0F38, 0F3A, or MAP4 to MAP7) and the W bit (W0, W1, WIG for ignored).
SCALABLE
In APX forms of legacy instructions, EVEX.W selects 64-bit operands and the implied 66 prefix selects 16-bit ones, as REX.W and 66 do.
/r, /0 to /7, C0
A ModR/M byte with a register operand in its reg field, with a fixed value in the reg field that extends the opcode, or a fixed ModR/M byte.
+r, +cc
A register number or a condition code added to the opcode byte.
ib, iw, id, io, /is4
An immediate of 1, 2, 4 or 8 bytes; iw/id depends on the operand size. /is4 is an immediate byte whose upper four bits name a register.
ND=1, NF=1, NF=0/1
APX bits of the EVEX prefix: ND selects the new data destination, NF suppresses the flag updates. NF=0/1 means the form exists both ways.
(without BMI1)
The bytes mean this instruction only on processors without the named feature; on those with it, they are another instruction. F3 0F BC is BSF without BMI1 and TZCNT with it.

Tags

NDD
APX new data destination: the result goes to a separate register and the other operands are only read.
NF
APX “no flags”: the instruction leaves the arithmetic flags unchanged.
ZU
APX “zero upper”: the destination register is written in full, with zeros above the result.
64-bit mode only, not in 64-bit mode
Where the form can be used. APX forms are always 64-bit only.

Requires

Each form belongs to an ISA set of XED. The column names the CPUID features that enable it; when there are alternatives, any one of them is enough. AVX-512 forms, for example, need either their AVX-512 feature bits or AVX10.1. Each page lists the exact CPUID bits and the processors that XED’s chip model gives each ISA set.

Sources

  1. Intel XED, the X86 Encoder Decoder
  2. Intel 64 and IA-32 Architectures Software Developer's Manual, Volume 2, Section 3.1: Interpreting the Instruction Reference Pages
  3. Intel Advanced Performance Extensions (Intel APX) Architecture Specification