CPUID
AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19]
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1
Instructions
686 mnemonics
Processors
Nova Lake, Granite Rapids, Diamond Rapids (from the CPU data, which follows GCC)

AVX10 replaces AVX-512’s long list of feature flags with one feature bit and a version number. Version 1 adds no instructions: AVX10.1 is the AVX-512 instruction set of Sapphire Rapids (the F, CD, BW, DQ, IFMA, VBMI, VBMI2, VNNI, BF16, BITALG, VPOPCNTDQ and FP16 subsets, at all three vector lengths) under the new enumeration. Granite Rapids is the first processor to report it.

Detection

  • CPUID.(EAX=07H,ECX=1):EDX[19] says that AVX10 is present and that CPUID leaf 24H exists.
  • CPUID.(EAX=24H,ECX=0):EBX[7:0] is the version. Versions are cumulative, so code written for version N checks for a version of at least N.
  • The operating system enables the register state exactly as for AVX-512, with XCR0 bits 1, 2, 5, 6 and 7.
  • The EVEX forms of VAES, VPCLMULQDQ and GFNI keep their own feature bits and need both that bit and AVX10.
  • AVX10 processors still set the AVX-512 feature bits, so existing software keeps working.

One vector length for all

Early revisions of the specification allowed AVX10 processors limited to 256-bit vectors, with CPUID bits for the supported lengths. Revision 4.0 (May 2025) dropped that plan: every AVX10 processor, client or server, performance or efficient core, supports 128-, 256- and 512-bit vectors, and the old length bits in leaf 24H are now reserved as 1.

In this reference

Because AVX10.1 is a set of AVX-512 subsets, every AVX-512 mnemonic of those subsets has a page here. The tables show XED’s ISA sets, such as AVX512F_512 or AVX512BW_128, and the CPUID section below gives both ways to enable each: AVX10.1, or the classic AVX-512 bits (with AVX512VL for 128- and 256-bit forms). The processor list above comes from the site’s CPU data, because XED’s chip model describes these processors by their AVX-512 ISA sets.

Instructions

Mnemonics with at least one form in AVX10.1. Each page lists all forms of the mnemonic, including those of other extensions.
MnemonicSummaryForms
KADDBAdds two 8-bit mask registers as unsigned integers.1
KADDDAdds two 32-bit mask registers as unsigned integers.1
KADDQAdds two 64-bit mask registers as unsigned integers.1
KADDWAdds two 16-bit mask registers as unsigned integers.1
KANDBComputes the bitwise AND of two 8-bit masks.1
KANDDComputes the bitwise AND of two 32-bit masks.1
KANDNBComputes the bitwise AND of the inverted first 8-bit mask with the second.1
KANDNDComputes the bitwise AND of the inverted first 32-bit mask with the second.1
KANDNQComputes the bitwise AND of the inverted first 64-bit mask with the second.1
KANDNWComputes the bitwise AND of the inverted first 16-bit mask with the second.1
KANDQComputes the bitwise AND of two 64-bit masks.1
KANDWComputes the bitwise AND of two 16-bit masks.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.5
KMOVDMoves a 32-bit mask between mask registers, general-purpose registers and memory; APX adds EVEX forms that reach the extended general-purpose registers.5
KMOVQMoves a 64-bit mask between mask registers, general-purpose registers and memory; APX adds EVEX forms that reach the extended general-purpose registers.5
KMOVWMoves a 16-bit mask between mask registers, general-purpose registers and memory; APX adds EVEX forms that reach the extended general-purpose registers.5
KNOTBInverts every bit of an 8-bit mask.1
KNOTDInverts every bit of a 32-bit mask.1
KNOTQInverts every bit of a 64-bit mask.1
KNOTWInverts every bit of a 16-bit mask.1
KORBComputes the bitwise OR of two 8-bit masks.1
KORDComputes the bitwise OR of two 32-bit masks.1
KORQComputes the bitwise OR of two 64-bit masks.1
KORTESTBORs two 8-bit masks and sets ZF if the result is all zeros and CF if it is all ones.1
KORTESTDORs two 32-bit masks and sets ZF if the result is all zeros and CF if it is all ones.1
KORTESTQORs two 64-bit masks and sets ZF if the result is all zeros and CF if it is all ones.1
KORTESTWORs two 16-bit masks and sets ZF if the result is all zeros and CF if it is all ones.1
KORWComputes the bitwise OR of two 16-bit masks.1
KSHIFTLBShifts an 8-bit mask left by an immediate count, filling with zeros.1
KSHIFTLDShifts a 32-bit mask left by an immediate count, filling with zeros.1
KSHIFTLQShifts a 64-bit mask left by an immediate count, filling with zeros.1
KSHIFTLWShifts a 16-bit mask left by an immediate count, filling with zeros.1
KSHIFTRBShifts an 8-bit mask right by an immediate count, filling with zeros.1
KSHIFTRDShifts a 32-bit mask right by an immediate count, filling with zeros.1
KSHIFTRQShifts a 64-bit mask right by an immediate count, filling with zeros.1
KSHIFTRWShifts a 16-bit mask right by an immediate count, filling with zeros.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.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.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.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.1
KUNPCKBWJoins the low 8 bits of two masks into a 16-bit mask, the second source forming the low half.1
KUNPCKDQJoins the low 32 bits of two masks into a 64-bit mask, the second source forming the low half.1
KUNPCKWDJoins the low 16 bits of two masks into a 32-bit mask, the second source forming the low half.1
KXNORBComputes the bitwise XNOR of two 8-bit masks.1
KXNORDComputes the bitwise XNOR of two 32-bit masks.1
KXNORQComputes the bitwise XNOR of two 64-bit masks.1
KXNORWComputes the bitwise XNOR of two 16-bit masks.1
KXORBComputes the bitwise XOR of two 8-bit masks.1
KXORDComputes the bitwise XOR of two 32-bit masks.1
KXORQComputes the bitwise XOR of two 64-bit masks.1
KXORWComputes the bitwise XOR of two 16-bit masks.1
VADDPDAdds packed doubles.6
VADDPHAdds packed half-precision values.6
VADDPSAdds packed singles.6
VADDSDAdds the low doubles; the other elements come from the first source.2
VADDSHAdds the low half-precision values; the other elements come from the first source.2
VADDSSAdds the low singles; the other elements come from the first source.2
VAESDECPerforms one round of AES decryption on each 128-bit lane with the round key of the matching lane.6
VAESDECLASTPerforms the last round of AES decryption on each 128-bit lane with the round key of the matching lane.6
VAESENCPerforms one round of AES encryption on each 128-bit lane with the round key of the matching lane.6
VAESENCLASTPerforms the last round of AES encryption on each 128-bit lane with the round key of the matching lane.6
VALIGNDConcatenates two vectors and extracts one vector's worth of doublewords starting at an element offset given by an immediate.6
VALIGNQConcatenates two vectors and extracts one vector's worth of quadwords starting at an element offset given by an immediate.6
VANDNPDComputes the bitwise AND of the inverted first source with the second, as packed doubles.6
VANDNPSComputes the bitwise AND of the inverted first source with the second, as packed singles.6
VANDPDComputes the bitwise AND of packed doubles.6
VANDPSComputes the bitwise AND of packed singles.6
VBLENDMPDPicks each of the packed doubles from the second source where a mask bit is set, otherwise from the first.6
VBLENDMPSPicks each of the packed singles from the second source where a mask bit is set, otherwise from the first.6
VBROADCASTF32X2Copies a group of two singles (64 bits) from memory or a register to every such group of a vector.4
VBROADCASTF32X4Copies a group of four singles (128 bits) from memory to every 128-bit block of a vector.2
VBROADCASTF32X8Copies a group of eight singles (256 bits) from memory to both halves of a ZMM register.1
VBROADCASTF64X2Copies a group of two doubles (128 bits) from memory to every 128-bit block of a vector.2
VBROADCASTF64X4Copies a group of four doubles (256 bits) from memory to both halves of a ZMM register.1
VBROADCASTI32X2Copies a group of two doublewords (64 bits) from memory or a register to every such group of a vector.6
VBROADCASTI32X4Copies a group of four doublewords (128 bits) from memory to every 128-bit block of a vector.2
VBROADCASTI32X8Copies a group of eight doublewords (256 bits) from memory to both halves of a ZMM register.1
VBROADCASTI64X2Copies a group of two quadwords (128 bits) from memory to every 128-bit block of a vector.2
VBROADCASTI64X4Copies a group of four quadwords (256 bits) from memory to both halves of a ZMM register.1
VBROADCASTSDCopies one double from memory or an XMM register to every element of a vector.4
VBROADCASTSSCopies one single from memory or an XMM register to every element of a vector.6
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.6
VCMPPHCompares packed half-precision values with one of 32 predicates chosen by an immediate and writes the results to a mask register.6
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.6
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).2
VCMPSHCompares the low half-precision values with one of 32 predicates chosen by an immediate and writes the result to a mask register.2
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).2
VCOMISDCompares the low doubles and sets ZF, PF and CF, clearing OF, SF and AF; any NaN signals an invalid exception.2
VCOMISHCompares the low half-precision values and sets ZF, PF and CF, clearing OF, SF and AF; any NaN signals an invalid exception.2
VCOMISSCompares the low singles and sets ZF, PF and CF, clearing OF, SF and AF; any NaN signals an invalid exception.2
VCOMPRESSPDPacks the doubles selected by a mask contiguously into the low end of a register or into memory.6
VCOMPRESSPSPacks the singles selected by a mask contiguously into the low end of a register or into memory.6
VCVTDQ2PDConverts packed signed doublewords to doubles.6
VCVTDQ2PHConverts packed signed doublewords to half precision.6
VCVTDQ2PSConverts packed signed doublewords to singles.6
VCVTNE2PS2BF16Converts two vectors of singles into one vector of bfloat16 values, rounding to nearest even.6
VCVTNEPS2BF16Converts packed single-precision values to bfloat16, rounding to nearest even with denormals flushed to zero and without consulting MXCSR.6
VCVTPD2DQConverts packed doubles to signed doublewords, rounding as MXCSR or the instruction selects.6
VCVTPD2PHConverts packed doubles to half precision, rounding as MXCSR or the instruction selects.6
VCVTPD2PSConverts packed doubles to singles, rounding as MXCSR or the instruction selects.6
VCVTPD2QQConverts packed doubles to signed quadwords, rounding as MXCSR or the instruction selects.6
VCVTPD2UDQConverts packed doubles to unsigned doublewords, rounding as MXCSR or the instruction selects.6
VCVTPD2UQQConverts packed doubles to unsigned quadwords, rounding as MXCSR or the instruction selects.6
VCVTPH2DQConverts packed half-precision values to signed doublewords, rounding as MXCSR or the instruction selects.6
VCVTPH2PDConverts packed half-precision values to doubles, which is exact.6
VCVTPH2PSConverts packed half-precision values to singles, which is exact.6
VCVTPH2PSXConverts packed half-precision values to singles like VCVTPH2PS, in the AVX512-FP16 form that also takes a broadcast memory source.6
VCVTPH2QQConverts packed half-precision values to signed quadwords, rounding as MXCSR or the instruction selects.6
VCVTPH2UDQConverts packed half-precision values to unsigned doublewords, rounding as MXCSR or the instruction selects.6
VCVTPH2UQQConverts packed half-precision values to unsigned quadwords, rounding as MXCSR or the instruction selects.6
VCVTPH2UWConverts packed half-precision values to unsigned words, rounding as MXCSR or the instruction selects.6
VCVTPH2WConverts packed half-precision values to signed words, rounding as MXCSR or the instruction selects.6
VCVTPS2DQConverts packed singles to signed doublewords, rounding as MXCSR or the instruction selects.6
VCVTPS2PDConverts packed singles to doubles, which is exact.6
VCVTPS2PHConverts packed singles to half precision, rounding as an immediate or MXCSR selects.6
VCVTPS2PHXConverts packed singles to half precision like VCVTPS2PH, but with a broadcast source and embedded rounding instead of an immediate.6
VCVTPS2QQConverts packed singles to signed quadwords, rounding as MXCSR or the instruction selects.6
VCVTPS2UDQConverts packed singles to unsigned doublewords, rounding as MXCSR or the instruction selects.6
VCVTPS2UQQConverts packed singles to unsigned quadwords, rounding as MXCSR or the instruction selects.6
VCVTQQ2PDConverts packed signed quadwords to doubles.6
VCVTQQ2PHConverts packed signed quadwords to half precision.6
VCVTQQ2PSConverts packed signed quadwords to singles.6
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.2
VCVTSD2SIConverts the low double to a signed 32- or 64-bit integer in a general-purpose register, rounding as MXCSR or the instruction selects.4
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.2
VCVTSD2USIConverts the low double to an unsigned 32- or 64-bit integer in a general-purpose register, rounding as MXCSR or the instruction selects.4
VCVTSH2SDConverts the low half-precision value of the second source to double, which is exact; the other elements come from the first source.2
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.4
VCVTSH2SSConverts the low half-precision value of the second source to single, which is exact; the other elements come from the first source.2
VCVTSH2USIConverts the low half-precision value to an unsigned integer in a 32- or 64-bit register, rounding as MXCSR or the instruction selects.4
VCVTSI2SDConverts a signed 32- or 64-bit integer to double in the low element; the other elements come from the first source.4
VCVTSI2SHConverts a signed 32- or 64-bit integer to half precision in the low element; the other elements come from the first source.4
VCVTSI2SSConverts a signed 32- or 64-bit integer to single in the low element; the other elements come from the first source.4
VCVTSS2SDConverts the low single of the second source to double, which is exact; the other elements come from the first source.2
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.2
VCVTSS2SIConverts the low single to a signed 32- or 64-bit integer in a general-purpose register, rounding as MXCSR or the instruction selects.4
VCVTSS2USIConverts the low single to an unsigned 32- or 64-bit integer in a general-purpose register, rounding as MXCSR or the instruction selects.4
VCVTTPD2DQConverts packed doubles to signed doublewords, truncating toward zero.6
VCVTTPD2QQConverts packed doubles to signed quadwords, truncating toward zero.6
VCVTTPD2UDQConverts packed doubles to unsigned doublewords, truncating toward zero.6
VCVTTPD2UQQConverts packed doubles to unsigned quadwords, truncating toward zero.6
VCVTTPH2DQConverts packed half-precision values to signed doublewords, truncating toward zero.6
VCVTTPH2QQConverts packed half-precision values to signed quadwords, truncating toward zero.6
VCVTTPH2UDQConverts packed half-precision values to unsigned doublewords, truncating toward zero.6
VCVTTPH2UQQConverts packed half-precision values to unsigned quadwords, truncating toward zero.6
VCVTTPH2UWConverts packed half-precision values to unsigned words, truncating toward zero.6
VCVTTPH2WConverts packed half-precision values to signed words, truncating toward zero.6
VCVTTPS2DQConverts packed singles to signed doublewords, truncating toward zero.6
VCVTTPS2QQConverts packed singles to signed quadwords, truncating toward zero.6
VCVTTPS2UDQConverts packed singles to unsigned doublewords, truncating toward zero.6
VCVTTPS2UQQConverts packed singles to unsigned quadwords, truncating toward zero.6
VCVTTSD2SIConverts the low double to a signed 32- or 64-bit integer in a general-purpose register, truncating toward zero.4
VCVTTSD2USIConverts the low double to an unsigned 32- or 64-bit integer in a general-purpose register, truncating toward zero.4
VCVTTSH2SIConverts the low half-precision value to a signed 32- or 64-bit integer in a general-purpose register, truncating toward zero.4
VCVTTSH2USIConverts the low half-precision value to an unsigned 32- or 64-bit integer in a general-purpose register, truncating toward zero.4
VCVTTSS2SIConverts the low single to a signed 32- or 64-bit integer in a general-purpose register, truncating toward zero.4
VCVTTSS2USIConverts the low single to an unsigned 32- or 64-bit integer in a general-purpose register, truncating toward zero.4
VCVTUDQ2PDConverts packed unsigned doublewords to doubles.6
VCVTUDQ2PHConverts packed unsigned doublewords to half precision.6
VCVTUDQ2PSConverts packed unsigned doublewords to singles.6
VCVTUQQ2PDConverts packed unsigned quadwords to doubles.6
VCVTUQQ2PHConverts packed unsigned quadwords to half precision.6
VCVTUQQ2PSConverts packed unsigned quadwords to singles.6
VCVTUSI2SDConverts an unsigned 32- or 64-bit integer to double in the low element; the other elements come from the first source.4
VCVTUSI2SHConverts an unsigned 32- or 64-bit integer to half precision in the low element; the other elements come from the first source.4
VCVTUSI2SSConverts an unsigned 32- or 64-bit integer to single in the low element; the other elements come from the first source.4
VCVTUW2PHConverts packed unsigned words to half precision.6
VCVTW2PHConverts packed signed words to half precision.6
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.6
VDIVPDDivides packed doubles.6
VDIVPHDivides packed half-precision values.6
VDIVPSDivides packed singles.6
VDIVSDDivides the low doubles; the other elements come from the first source.2
VDIVSHDivides the low half-precision values; the other elements come from the first source.2
VDIVSSDivides the low singles; the other elements come from the first source.2
VDPBF16PSMultiplies pairs of bfloat16 values and adds both products to the matching single-precision accumulator.6
VEXPANDPDSpreads consecutive doubles from the low end of a register or from memory to the positions selected by a mask.6
VEXPANDPSSpreads consecutive singles from the low end of a register or from memory to the positions selected by a mask.6
VEXTRACTF32X4Copies the 128-bit block of singles that an immediate selects to a register or memory, masked per element.4
VEXTRACTF32X8Copies the 256-bit block of singles that an immediate selects to a register or memory, masked per element.2
VEXTRACTF64X2Copies the 128-bit block of doubles that an immediate selects to a register or memory, masked per element.4
VEXTRACTF64X4Copies the 256-bit block of doubles that an immediate selects to a register or memory, masked per element.2
VEXTRACTI32X4Copies the 128-bit block of doublewords that an immediate selects to a register or memory, masked per element.4
VEXTRACTI32X8Copies the 256-bit block of doublewords that an immediate selects to a register or memory, masked per element.2
VEXTRACTI64X2Copies the 128-bit block of quadwords that an immediate selects to a register or memory, masked per element.4
VEXTRACTI64X4Copies the 256-bit block of quadwords that an immediate selects to a register or memory, masked per element.2
VEXTRACTPSCopies the single that an immediate selects from an XMM register to a general-purpose register or memory.2
VFCMADDCPHMultiplies packed complex half-precision numbers by the complex conjugates of the second source and adds the products to the destination.6
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.2
VFCMULCPHMultiplies packed complex half-precision numbers by the complex conjugates of the second source.6
VFCMULCSHMultiplies the low complex half-precision number of the first source by the complex conjugate of the second source's.2
VFIXUPIMMPDReplaces special doubles (such as NaN) of the first source with responses from a table in the second; an immediate controls exceptions.6
VFIXUPIMMPSReplaces special singles (such as NaN) of the first source with responses from a table in the second; an immediate controls exceptions.6
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.2
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.2
VFMADD132PDFused multiply-add of packed doubles: first operand times third plus second, into the first.6
VFMADD132PHFused multiply-add of packed half-precision values: first operand times third plus second, into the first.6
VFMADD132PSFused multiply-add of packed singles: first operand times third plus second, into the first.6
VFMADD132SDFused multiply-add of the low doubles: first times third plus second, into the first; the rest is unchanged.2
VFMADD132SHFused multiply-add of the low half-precision values: first times third plus second, into the first; the rest is unchanged.2
VFMADD132SSFused multiply-add of the low singles: first times third plus second, into the first; the rest is unchanged.2
VFMADD213PDFused multiply-add of packed doubles: second operand times first plus third, into the first.6
VFMADD213PHFused multiply-add of packed half-precision values: second operand times first plus third, into the first.6
VFMADD213PSFused multiply-add of packed singles: second operand times first plus third, into the first.6
VFMADD213SDFused multiply-add of the low doubles: second times first plus third, into the first; the rest is unchanged.2
VFMADD213SHFused multiply-add of the low half-precision values: second times first plus third, into the first; the rest is unchanged.2
VFMADD213SSFused multiply-add of the low singles: second times first plus third, into the first; the rest is unchanged.2
VFMADD231PDFused multiply-add of packed doubles: second operand times third plus first, into the first.6
VFMADD231PHFused multiply-add of packed half-precision values: second operand times third plus first, into the first.6
VFMADD231PSFused multiply-add of packed singles: second operand times third plus first, into the first.6
VFMADD231SDFused multiply-add of the low doubles: second times third plus first, into the first; the rest is unchanged.2
VFMADD231SHFused multiply-add of the low half-precision values: second times third plus first, into the first; the rest is unchanged.2
VFMADD231SSFused multiply-add of the low singles: second times third plus first, into the first; the rest is unchanged.2
VFMADDCPHMultiplies packed complex numbers, each a pair of half-precision values, and adds the products to the destination.6
VFMADDCSHMultiplies the low complex numbers, each a pair of half-precision values, and adds the product to the destination.2
VFMADDSUB132PDFused multiply of packed doubles, first times third, minus the second in even elements and plus it in odd ones, into the first.6
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.6
VFMADDSUB132PSFused multiply of packed singles, first times third, minus the second in even elements and plus it in odd ones, into the first.6
VFMADDSUB213PDFused multiply of packed doubles, second times first, minus the third in even elements and plus it in odd ones, into the first.6
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.6
VFMADDSUB213PSFused multiply of packed singles, second times first, minus the third in even elements and plus it in odd ones, into the first.6
VFMADDSUB231PDFused multiply of packed doubles, second times third, minus the first in even elements and plus it in odd ones, into the first.6
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.6
VFMADDSUB231PSFused multiply of packed singles, second times third, minus the first in even elements and plus it in odd ones, into the first.6
VFMSUB132PDFused multiply-subtract of packed doubles: first operand times third minus second, into the first.6
VFMSUB132PHFused multiply-subtract of packed half-precision values: first operand times third minus second, into the first.6
VFMSUB132PSFused multiply-subtract of packed singles: first operand times third minus second, into the first.6
VFMSUB132SDFused multiply-subtract of the low doubles: first times third minus second, into the first; the rest is unchanged.2
VFMSUB132SHFused multiply-subtract of the low half-precision values: first times third minus second, into the first; the rest is unchanged.2
VFMSUB132SSFused multiply-subtract of the low singles: first times third minus second, into the first; the rest is unchanged.2
VFMSUB213PDFused multiply-subtract of packed doubles: second operand times first minus third, into the first.6
VFMSUB213PHFused multiply-subtract of packed half-precision values: second operand times first minus third, into the first.6
VFMSUB213PSFused multiply-subtract of packed singles: second operand times first minus third, into the first.6
VFMSUB213SDFused multiply-subtract of the low doubles: second times first minus third, into the first; the rest is unchanged.2
VFMSUB213SHFused multiply-subtract of the low half-precision values: second times first minus third, into the first; the rest is unchanged.2
VFMSUB213SSFused multiply-subtract of the low singles: second times first minus third, into the first; the rest is unchanged.2
VFMSUB231PDFused multiply-subtract of packed doubles: second operand times third minus first, into the first.6
VFMSUB231PHFused multiply-subtract of packed half-precision values: second operand times third minus first, into the first.6
VFMSUB231PSFused multiply-subtract of packed singles: second operand times third minus first, into the first.6
VFMSUB231SDFused multiply-subtract of the low doubles: second times third minus first, into the first; the rest is unchanged.2
VFMSUB231SHFused multiply-subtract of the low half-precision values: second times third minus first, into the first; the rest is unchanged.2
VFMSUB231SSFused multiply-subtract of the low singles: second times third minus first, into the first; the rest is unchanged.2
VFMSUBADD132PDFused multiply of packed doubles, first times third, plus the second in even elements and minus it in odd ones, into the first.6
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.6
VFMSUBADD132PSFused multiply of packed singles, first times third, plus the second in even elements and minus it in odd ones, into the first.6
VFMSUBADD213PDFused multiply of packed doubles, second times first, plus the third in even elements and minus it in odd ones, into the first.6
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.6
VFMSUBADD213PSFused multiply of packed singles, second times first, plus the third in even elements and minus it in odd ones, into the first.6
VFMSUBADD231PDFused multiply of packed doubles, second times third, plus the first in even elements and minus it in odd ones, into the first.6
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.6
VFMSUBADD231PSFused multiply of packed singles, second times third, plus the first in even elements and minus it in odd ones, into the first.6
VFMULCPHMultiplies packed complex numbers, each a pair of half-precision values.6
VFMULCSHMultiplies the low complex numbers, each a pair of half-precision values.2
VFNMADD132PDFused negated multiply-add of packed doubles: minus first operand times third, plus second, into the first.6
VFNMADD132PHFused negated multiply-add of packed half-precision values: minus first operand times third, plus second, into the first.6
VFNMADD132PSFused negated multiply-add of packed singles: minus first operand times third, plus second, into the first.6
VFNMADD132SDFused negated multiply-add of the low doubles: minus first times third, plus second, into the first; the rest is unchanged.2
VFNMADD132SHFused negated multiply-add of the low half-precision values: minus first times third, plus second, into the first; the rest is unchanged.2
VFNMADD132SSFused negated multiply-add of the low singles: minus first times third, plus second, into the first; the rest is unchanged.2
VFNMADD213PDFused negated multiply-add of packed doubles: minus second operand times first, plus third, into the first.6
VFNMADD213PHFused negated multiply-add of packed half-precision values: minus second operand times first, plus third, into the first.6
VFNMADD213PSFused negated multiply-add of packed singles: minus second operand times first, plus third, into the first.6
VFNMADD213SDFused negated multiply-add of the low doubles: minus second times first, plus third, into the first; the rest is unchanged.2
VFNMADD213SHFused negated multiply-add of the low half-precision values: minus second times first, plus third, into the first; the rest is unchanged.2
VFNMADD213SSFused negated multiply-add of the low singles: minus second times first, plus third, into the first; the rest is unchanged.2
VFNMADD231PDFused negated multiply-add of packed doubles: minus second operand times third, plus first, into the first.6
VFNMADD231PHFused negated multiply-add of packed half-precision values: minus second operand times third, plus first, into the first.6
VFNMADD231PSFused negated multiply-add of packed singles: minus second operand times third, plus first, into the first.6
VFNMADD231SDFused negated multiply-add of the low doubles: minus second times third, plus first, into the first; the rest is unchanged.2
VFNMADD231SHFused negated multiply-add of the low half-precision values: minus second times third, plus first, into the first; the rest is unchanged.2
VFNMADD231SSFused negated multiply-add of the low singles: minus second times third, plus first, into the first; the rest is unchanged.2
VFNMSUB132PDFused negated multiply-subtract of packed doubles: minus first operand times third, minus second, into the first.6
VFNMSUB132PHFused negated multiply-subtract of packed half-precision values: minus first operand times third, minus second, into the first.6
VFNMSUB132PSFused negated multiply-subtract of packed singles: minus first operand times third, minus second, into the first.6
VFNMSUB132SDFused negated multiply-subtract of the low doubles: minus first times third, minus second, into the first; the rest is unchanged.2
VFNMSUB132SHFused negated multiply-subtract of the low half-precision values: minus first times third, minus second, into the first; the rest is unchanged.2
VFNMSUB132SSFused negated multiply-subtract of the low singles: minus first times third, minus second, into the first; the rest is unchanged.2
VFNMSUB213PDFused negated multiply-subtract of packed doubles: minus second operand times first, minus third, into the first.6
VFNMSUB213PHFused negated multiply-subtract of packed half-precision values: minus second operand times first, minus third, into the first.6
VFNMSUB213PSFused negated multiply-subtract of packed singles: minus second operand times first, minus third, into the first.6
VFNMSUB213SDFused negated multiply-subtract of the low doubles: minus second times first, minus third, into the first; the rest is unchanged.2
VFNMSUB213SHFused negated multiply-subtract of the low half-precision values: minus second times first, minus third, into the first; the rest is unchanged.2
VFNMSUB213SSFused negated multiply-subtract of the low singles: minus second times first, minus third, into the first; the rest is unchanged.2
VFNMSUB231PDFused negated multiply-subtract of packed doubles: minus second operand times third, minus first, into the first.6
VFNMSUB231PHFused negated multiply-subtract of packed half-precision values: minus second operand times third, minus first, into the first.6
VFNMSUB231PSFused negated multiply-subtract of packed singles: minus second operand times third, minus first, into the first.6
VFNMSUB231SDFused negated multiply-subtract of the low doubles: minus second times third, minus first, into the first; the rest is unchanged.2
VFNMSUB231SHFused negated multiply-subtract of the low half-precision values: minus second times third, minus first, into the first; the rest is unchanged.2
VFNMSUB231SSFused negated multiply-subtract of the low singles: minus second times third, minus first, into the first; the rest is unchanged.2
VFPCLASSPDTests packed doubles for the classes an immediate selects, such as NaN, zero or infinity, and writes the results to a mask register.6
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.6
VFPCLASSPSTests packed singles for the classes an immediate selects, such as NaN, zero or infinity, and writes the results to a mask register.6
VFPCLASSSDTests the low double for the classes an immediate selects, such as NaN, zero or infinity, and writes the result to a mask register.2
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.2
VFPCLASSSSTests the low single for the classes an immediate selects, such as NaN, zero or infinity, and writes the result to a mask register.2
VGATHERDPDLoads doubles from memory at addresses formed with a vector of 32-bit indices, for the elements a mask selects.3
VGATHERDPSLoads singles from memory at addresses formed with a vector of 32-bit indices, for the elements a mask selects.3
VGATHERQPDLoads doubles from memory at addresses formed with a vector of 64-bit indices, for the elements a mask selects.3
VGATHERQPSLoads singles from memory at addresses formed with a vector of 64-bit indices, for the elements a mask selects.3
VGETEXPPDExtracts the unbiased exponent of packed doubles as floating-point numbers.6
VGETEXPPHExtracts the unbiased exponent of packed half-precision values as floating-point numbers.6
VGETEXPPSExtracts the unbiased exponent of packed singles as floating-point numbers.6
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.2
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.2
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.2
VGETMANTPDExtracts the normalized mantissa of packed doubles, with the interval and sign handling chosen by an immediate.6
VGETMANTPHExtracts the normalized mantissa of packed half-precision values, with the interval and sign handling chosen by an immediate.6
VGETMANTPSExtracts the normalized mantissa of packed singles, with the interval and sign handling chosen by an immediate.6
VGETMANTSDExtracts the normalized mantissa of the low double of the second source, as an immediate selects; the other elements come from the first source.2
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.2
VGETMANTSSExtracts the normalized mantissa of the low single of the second source, as an immediate selects; the other elements come from the first source.2
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.6
VGF2P8AFFINEQBApplies an affine transformation to each byte, given by an 8x8 bit matrix from the second source and an immediate constant.6
VGF2P8MULBMultiplies bytes in the finite field GF(2^8) defined by the AES polynomial x^8 + x^4 + x^3 + x + 1.6
VINSERTF32X4Replaces the 128-bit block that an immediate selects with four singles from a register or memory.4
VINSERTF32X8Replaces the 256-bit block that an immediate selects with eight singles from a register or memory.2
VINSERTF64X2Replaces the 128-bit block that an immediate selects with two doubles from a register or memory.4
VINSERTF64X4Replaces the 256-bit block that an immediate selects with four doubles from a register or memory.2
VINSERTI32X4Replaces the 128-bit block that an immediate selects with four doublewords from a register or memory.4
VINSERTI32X8Replaces the 256-bit block that an immediate selects with eight doublewords from a register or memory.2
VINSERTI64X2Replaces the 128-bit block that an immediate selects with two quadwords from a register or memory.4
VINSERTI64X4Replaces the 256-bit block that an immediate selects with four quadwords from a register or memory.2
VINSERTPSInserts a single from a register or memory into an XMM register at the position an immediate gives, and can zero other elements.2
VMAXPDReturns the larger of each pair of packed doubles, or the second operand if either is NaN or both are zero.6
VMAXPHReturns the larger of each pair of packed half-precision values, or the second operand if either is NaN or both are zero.6
VMAXPSReturns the larger of each pair of packed singles, or the second operand if either is NaN or both are zero.6
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.2
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.2
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.2
VMINPDReturns the smaller of each pair of packed doubles, or the second operand if either is NaN or both are zero.6
VMINPHReturns the smaller of each pair of packed half-precision values, or the second operand if either is NaN or both are zero.6
VMINPSReturns the smaller of each pair of packed singles, or the second operand if either is NaN or both are zero.6
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.2
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.2
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.2
VMOVAPDMoves packed doubles between registers and memory that must be aligned to the vector size.9
VMOVAPSMoves packed singles between registers and memory that must be aligned to the vector size.9
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.4
VMOVDDUPDuplicates each even-numbered double into the next odd position.6
VMOVDQA32Moves integer vectors between registers and aligned memory, masked at doubleword granularity.9
VMOVDQA64Moves integer vectors between registers and aligned memory, masked at quadword granularity.9
VMOVDQU16Moves integer vectors between registers and memory without an alignment requirement, masked at word granularity.9
VMOVDQU32Moves integer vectors between registers and memory without an alignment requirement, masked at doubleword granularity.9
VMOVDQU64Moves integer vectors between registers and memory without an alignment requirement, masked at quadword granularity.9
VMOVDQU8Moves integer vectors between registers and memory without an alignment requirement, masked at byte granularity.9
VMOVHLPSMoves the high two singles of the second source into the low half of the result, the high half coming from the first source.1
VMOVHPDLoads a double from memory into the high half of an XMM register, or stores the high double to memory.2
VMOVHPSLoads two singles from memory into the high half of an XMM register, or stores the high two to memory.2
VMOVLHPSMoves the low two singles of the second source into the high half of the result, the low half coming from the first source.1
VMOVLPDLoads a double from memory into the low half of an XMM register, or stores the low double to memory.2
VMOVLPSLoads two singles from memory into the low half of an XMM register, or stores the low two to memory.2
VMOVNTDQStores an integer vector to aligned memory with a non-temporal hint that avoids polluting the caches.3
VMOVNTDQALoads a vector from aligned memory with a non-temporal hint, which lets it read write-combining memory efficiently.3
VMOVNTPDStores packed doubles to aligned memory with a non-temporal hint that avoids polluting the caches.3
VMOVNTPSStores packed singles to aligned memory with a non-temporal hint that avoids polluting the caches.3
VMOVQMoves a quadword between an XMM register and a general-purpose register, memory or another XMM register, zeroing the rest of a vector destination.5
VMOVSDMoves the low double between XMM registers or to and from memory; a load zeroes the rest of the register.3
VMOVSHMoves the low half-precision value between XMM registers or to and from memory; a load zeroes the rest of the register.3
VMOVSHDUPDuplicates each odd-numbered single into the even position below it.6
VMOVSLDUPDuplicates each even-numbered single into the odd position above it.6
VMOVSSMoves the low single between XMM registers or to and from memory; a load zeroes the rest of the register.3
VMOVUPDMoves packed doubles between registers and memory without an alignment requirement.9
VMOVUPSMoves packed singles between registers and memory without an alignment requirement.9
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.4
VMULPDMultiplies packed doubles.6
VMULPHMultiplies packed half-precision values.6
VMULPSMultiplies packed singles.6
VMULSDMultiplies the low doubles; the other elements come from the first source.2
VMULSHMultiplies the low half-precision values; the other elements come from the first source.2
VMULSSMultiplies the low singles; the other elements come from the first source.2
VORPDComputes the bitwise OR of packed doubles.6
VORPSComputes the bitwise OR of packed singles.6
VPABSBComputes the absolute value of packed signed bytes.6
VPABSDComputes the absolute value of packed signed doublewords.6
VPABSQComputes the absolute value of packed signed quadwords.6
VPABSWComputes the absolute value of packed signed words.6
VPACKSSDWNarrows signed doublewords from two sources to words with signed saturation.6
VPACKSSWBNarrows signed words from two sources to bytes with signed saturation.6
VPACKUSDWNarrows signed doublewords from two sources to words with unsigned saturation.6
VPACKUSWBNarrows signed words from two sources to bytes with unsigned saturation.6
VPADDBAdds packed bytes, wrapping around on overflow.6
VPADDDAdds packed doublewords, wrapping around on overflow.6
VPADDQAdds packed quadwords, wrapping around on overflow.6
VPADDSBAdds packed signed bytes with signed saturation.6
VPADDSWAdds packed signed words with signed saturation.6
VPADDUSBAdds packed unsigned bytes with unsigned saturation.6
VPADDUSWAdds packed unsigned words with unsigned saturation.6
VPADDWAdds packed words, wrapping around on overflow.6
VPALIGNRConcatenates two sources in each 128-bit lane and extracts 16 bytes starting at a byte offset given by an immediate.6
VPANDDComputes the bitwise AND of two vectors, masked at doubleword granularity.6
VPANDNDComputes the bitwise AND of the inverted first source with the second, masked at doubleword granularity.6
VPANDNQComputes the bitwise AND of the inverted first source with the second, masked at quadword granularity.6
VPANDQComputes the bitwise AND of two vectors, masked at quadword granularity.6
VPAVGBComputes the rounded average of packed unsigned bytes.6
VPAVGWComputes the rounded average of packed unsigned words.6
VPBLENDMBPicks each byte from the second source where a mask bit is set, otherwise from the first.6
VPBLENDMDPicks each doubleword from the second source where a mask bit is set, otherwise from the first.6
VPBLENDMQPicks each quadword from the second source where a mask bit is set, otherwise from the first.6
VPBLENDMWPicks each word from the second source where a mask bit is set, otherwise from the first.6
VPBROADCASTBCopies one byte from a register or memory to every byte of a vector.9
VPBROADCASTDCopies one doubleword from a register or memory to every doubleword of a vector.9
VPBROADCASTMB2QCopies the low 8 bits of a mask register, zero-extended, to every quadword.3
VPBROADCASTMW2DCopies the low 16 bits of a mask register, zero-extended, to every doubleword.3
VPBROADCASTQCopies one quadword from a register or memory to every quadword of a vector.9
VPBROADCASTWCopies one word from a register or memory to every word of a vector.9
VPCLMULQDQCarry-less multiplies one quadword of each source, chosen by an immediate, into a 128-bit product in each 128-bit lane.6
VPCMPBCompares packed signed bytes with a predicate chosen by an immediate and writes the results to a mask register.6
VPCMPDCompares packed signed doublewords with a predicate chosen by an immediate and writes the results to a mask register.6
VPCMPEQBCompares packed bytes for equality; the VEX form writes all-ones or zero elements, the EVEX form a mask register.6
VPCMPEQDCompares packed doublewords for equality; the VEX form writes all-ones or zero elements, the EVEX form a mask register.6
VPCMPEQQCompares packed quadwords for equality; the VEX form writes all-ones or zero elements, the EVEX form a mask register.6
VPCMPEQWCompares packed words for equality; the VEX form writes all-ones or zero elements, the EVEX form a mask register.6
VPCMPGTBTests packed signed bytes for greater than; the VEX form writes all-ones or zero elements, the EVEX form a mask register.6
VPCMPGTDTests packed signed doublewords for greater than; the VEX form writes all-ones or zero elements, the EVEX form a mask register.6
VPCMPGTQTests packed signed quadwords for greater than; the VEX form writes all-ones or zero elements, the EVEX form a mask register.6
VPCMPGTWTests packed signed words for greater than; the VEX form writes all-ones or zero elements, the EVEX form a mask register.6
VPCMPQCompares packed signed quadwords with a predicate chosen by an immediate and writes the results to a mask register.6
VPCMPUBCompares packed unsigned bytes with a predicate chosen by an immediate and writes the results to a mask register.6
VPCMPUDCompares packed unsigned doublewords with a predicate chosen by an immediate and writes the results to a mask register.6
VPCMPUQCompares packed unsigned quadwords with a predicate chosen by an immediate and writes the results to a mask register.6
VPCMPUWCompares packed unsigned words with a predicate chosen by an immediate and writes the results to a mask register.6
VPCMPWCompares packed signed words with a predicate chosen by an immediate and writes the results to a mask register.6
VPCOMPRESSBPacks the bytes selected by a mask contiguously into the low end of a register or into memory.6
VPCOMPRESSDPacks the doublewords selected by a mask contiguously into the low end of a register or into memory.6
VPCOMPRESSQPacks the quadwords selected by a mask contiguously into the low end of a register or into memory.6
VPCOMPRESSWPacks the words selected by a mask contiguously into the low end of a register or into memory.6
VPCONFLICTDFor each doubleword, sets a bit for every lower-numbered element of the source that holds the same value.6
VPCONFLICTQFor each quadword, sets a bit for every lower-numbered element of the source that holds the same value.6
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.6
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.6
VPDPWSSDMultiplies pairs of signed words, adds both products to the matching 32-bit accumulator.6
VPDPWSSDSMultiplies pairs of signed words and adds both products to the matching 32-bit accumulator with signed saturation.6
VPERMBRearranges the bytes of a vector across the whole register using an index vector.6
VPERMDRearranges the doublewords of a vector across the whole register using an index vector.4
VPERMI2BSelects bytes from two tables with an index vector that the result then overwrites.6
VPERMI2DSelects doublewords from two tables with an index vector that the result then overwrites.6
VPERMI2PDSelects doubles from two tables with an index vector that the result then overwrites.6
VPERMI2PSSelects singles from two tables with an index vector that the result then overwrites.6
VPERMI2QSelects quadwords from two tables with an index vector that the result then overwrites.6
VPERMI2WSelects words from two tables with an index vector that the result then overwrites.6
VPERMILPDRearranges doubles within each 128-bit lane, controlled by an immediate or by a vector.12
VPERMILPSRearranges singles within each 128-bit lane, controlled by an immediate or by a vector.12
VPERMPDRearranges doubles across the whole register, controlled by an immediate or by an index vector.8
VPERMPSRearranges singles across the whole register using an index vector.4
VPERMQRearranges quadwords across the whole register, controlled by an immediate or by an index vector.8
VPERMT2BSelects bytes from two tables with an index vector, the result overwriting the first table.6
VPERMT2DSelects doublewords from two tables with an index vector, the result overwriting the first table.6
VPERMT2PDSelects doubles from two tables with an index vector, the result overwriting the first table.6
VPERMT2PSSelects singles from two tables with an index vector, the result overwriting the first table.6
VPERMT2QSelects quadwords from two tables with an index vector, the result overwriting the first table.6
VPERMT2WSelects words from two tables with an index vector, the result overwriting the first table.6
VPERMWRearranges the words of a vector across the whole register using an index vector.6
VPEXPANDBSpreads consecutive bytes from the low end of a register or from memory to the positions selected by a mask.6
VPEXPANDDSpreads consecutive doublewords from the low end of a register or from memory to the positions selected by a mask.6
VPEXPANDQSpreads consecutive quadwords from the low end of a register or from memory to the positions selected by a mask.6
VPEXPANDWSpreads consecutive words from the low end of a register or from memory to the positions selected by a mask.6
VPEXTRBCopies the byte selected by an immediate from an XMM register to a general-purpose register or memory.2
VPEXTRDCopies the doubleword selected by an immediate from an XMM register to a general-purpose register or memory.2
VPEXTRQCopies the quadword selected by an immediate from an XMM register to a general-purpose register or memory.2
VPEXTRWCopies the word selected by an immediate from an XMM register to a general-purpose register or memory.3
VPGATHERDDLoads doublewords from memory at addresses formed with a vector of 32-bit indices, for the elements a mask selects.3
VPGATHERDQLoads quadwords from memory at addresses formed with a vector of 32-bit indices, for the elements a mask selects.3
VPGATHERQDLoads doublewords from memory at addresses formed with a vector of 64-bit indices, for the elements a mask selects.3
VPGATHERQQLoads quadwords from memory at addresses formed with a vector of 64-bit indices, for the elements a mask selects.3
VPINSRBInserts a byte from a register or memory into an XMM register at the position an immediate gives.2
VPINSRDInserts a doubleword from a register or memory into an XMM register at the position an immediate gives.2
VPINSRQInserts a quadword from a register or memory into an XMM register at the position an immediate gives.2
VPINSRWInserts a word from a register or memory into an XMM register at the position an immediate gives.2
VPLZCNTDCounts the leading zero bits of each doubleword.6
VPLZCNTQCounts the leading zero bits of each quadword.6
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.6
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.6
VPMADDUBSWMultiplies unsigned bytes of the first source by signed bytes of the second and adds adjacent products into words with signed saturation.6
VPMADDWDMultiplies signed words and adds adjacent products into doublewords.6
VPMAXSBReturns the larger of each pair of signed bytes.6
VPMAXSDReturns the larger of each pair of signed doublewords.6
VPMAXSQReturns the larger of each pair of signed quadwords.6
VPMAXSWReturns the larger of each pair of signed words.6
VPMAXUBReturns the larger of each pair of unsigned bytes.6
VPMAXUDReturns the larger of each pair of unsigned doublewords.6
VPMAXUQReturns the larger of each pair of unsigned quadwords.6
VPMAXUWReturns the larger of each pair of unsigned words.6
VPMINSBReturns the smaller of each pair of signed bytes.6
VPMINSDReturns the smaller of each pair of signed doublewords.6
VPMINSQReturns the smaller of each pair of signed quadwords.6
VPMINSWReturns the smaller of each pair of signed words.6
VPMINUBReturns the smaller of each pair of unsigned bytes.6
VPMINUDReturns the smaller of each pair of unsigned doublewords.6
VPMINUQReturns the smaller of each pair of unsigned quadwords.6
VPMINUWReturns the smaller of each pair of unsigned words.6
VPMOVB2MSets each bit of a mask register from the sign bit of the corresponding byte.3
VPMOVD2MSets each bit of a mask register from the sign bit of the corresponding doubleword.3
VPMOVDBNarrows packed doublewords to bytes by truncation.6
VPMOVDWNarrows packed doublewords to words by truncation.6
VPMOVM2BSets each byte to all ones or all zeros according to the corresponding mask bit.3
VPMOVM2DSets each doubleword to all ones or all zeros according to the corresponding mask bit.3
VPMOVM2QSets each quadword to all ones or all zeros according to the corresponding mask bit.3
VPMOVM2WSets each word to all ones or all zeros according to the corresponding mask bit.3
VPMOVQ2MSets each bit of a mask register from the sign bit of the corresponding quadword.3
VPMOVQBNarrows packed quadwords to bytes by truncation.6
VPMOVQDNarrows packed quadwords to doublewords by truncation.6
VPMOVQWNarrows packed quadwords to words by truncation.6
VPMOVSDBNarrows packed signed doublewords to bytes with signed saturation.6
VPMOVSDWNarrows packed signed doublewords to words with signed saturation.6
VPMOVSQBNarrows packed signed quadwords to bytes with signed saturation.6
VPMOVSQDNarrows packed signed quadwords to doublewords with signed saturation.6
VPMOVSQWNarrows packed signed quadwords to words with signed saturation.6
VPMOVSWBNarrows packed signed words to bytes with signed saturation.6
VPMOVSXBDSign-extends packed bytes to doublewords.6
VPMOVSXBQSign-extends packed bytes to quadwords.6
VPMOVSXBWSign-extends packed bytes to words.6
VPMOVSXDQSign-extends packed doublewords to quadwords.6
VPMOVSXWDSign-extends packed words to doublewords.6
VPMOVSXWQSign-extends packed words to quadwords.6
VPMOVUSDBNarrows packed unsigned doublewords to bytes with unsigned saturation.6
VPMOVUSDWNarrows packed unsigned doublewords to words with unsigned saturation.6
VPMOVUSQBNarrows packed unsigned quadwords to bytes with unsigned saturation.6
VPMOVUSQDNarrows packed unsigned quadwords to doublewords with unsigned saturation.6
VPMOVUSQWNarrows packed unsigned quadwords to words with unsigned saturation.6
VPMOVUSWBNarrows packed unsigned words to bytes with unsigned saturation.6
VPMOVW2MSets each bit of a mask register from the sign bit of the corresponding word.3
VPMOVWBNarrows packed words to bytes by truncation.6
VPMOVZXBDZero-extends packed bytes to doublewords.6
VPMOVZXBQZero-extends packed bytes to quadwords.6
VPMOVZXBWZero-extends packed bytes to words.6
VPMOVZXDQZero-extends packed doublewords to quadwords.6
VPMOVZXWDZero-extends packed words to doublewords.6
VPMOVZXWQZero-extends packed words to quadwords.6
VPMULDQMultiplies the signed low doublewords of each quadword into 64-bit products.6
VPMULHRSWMultiplies packed signed words as Q15 fixed-point numbers, rounding each product to a Q15 result.6
VPMULHUWMultiplies unsigned words and keeps the high 16 bits of each product.6
VPMULHWMultiplies signed words and keeps the high 16 bits of each product.6
VPMULLDMultiplies packed doublewords and keeps the low 32 bits of each product.6
VPMULLQMultiplies packed quadwords and keeps the low 64 bits of each product.6
VPMULLWMultiplies packed words and keeps the low 16 bits of each product.6
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.6
VPMULUDQMultiplies the unsigned low doublewords of each quadword into 64-bit products.6
VPOPCNTBCounts the set bits in each byte.6
VPOPCNTDCounts the set bits in each doubleword.6
VPOPCNTQCounts the set bits in each quadword.6
VPOPCNTWCounts the set bits in each word.6
VPORDComputes the bitwise OR of two vectors, masked at doubleword granularity.6
VPORQComputes the bitwise OR of two vectors, masked at quadword granularity.6
VPROLDRotates each doubleword left by an immediate count.6
VPROLQRotates each quadword left by an immediate count.6
VPROLVDRotates each doubleword left by the count in the matching element of the second source.6
VPROLVQRotates each quadword left by the count in the matching element of the second source.6
VPRORDRotates each doubleword right by an immediate count.6
VPRORQRotates each quadword right by an immediate count.6
VPRORVDRotates each doubleword right by the count in the matching element of the second source.6
VPRORVQRotates each quadword right by the count in the matching element of the second source.6
VPSADBWSums the absolute differences of unsigned bytes over each group of eight, giving one 16-bit sum per quadword.6
VPSCATTERDDStores doublewords to memory at addresses formed with a vector of 32-bit indices, for the elements a mask selects.3
VPSCATTERDQStores quadwords to memory at addresses formed with a vector of 32-bit indices, for the elements a mask selects.3
VPSCATTERQDStores doublewords to memory at addresses formed with a vector of 64-bit indices, for the elements a mask selects.3
VPSCATTERQQStores quadwords to memory at addresses formed with a vector of 64-bit indices, for the elements a mask selects.3
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.6
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.6
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.6
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.6
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.6
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.6
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.6
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.6
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.6
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.6
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.6
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.6
VPSHUFBRearranges bytes within each 128-bit lane using an index byte per result, which zeroes the byte when its top bit is set.6
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.6
VPSHUFDRearranges doublewords within each 128-bit lane as an immediate selects.6
VPSHUFHWRearranges the upper four words of each 128-bit lane as an immediate selects.6
VPSHUFLWRearranges the lower four words of each 128-bit lane as an immediate selects.6
VPSLLDShifts doublewords left by one count from a register or an immediate.12
VPSLLDQShifts each 128-bit lane left by a number of bytes given by an immediate.6
VPSLLQShifts quadwords left by one count from a register or an immediate.12
VPSLLVDShifts each doubleword left by the count in the matching element of the second source.6
VPSLLVQShifts each quadword left by the count in the matching element of the second source.6
VPSLLVWShifts each word left by the count in the matching element of the second source.6
VPSLLWShifts words left by one count from a register or an immediate.12
VPSRADShifts doublewords right arithmetically by one count from a register or an immediate.12
VPSRAQShifts quadwords right arithmetically by one count from a register or an immediate.12
VPSRAVDShifts each doubleword right arithmetically by the count in the matching element of the second source.6
VPSRAVQShifts each quadword right arithmetically by the count in the matching element of the second source.6
VPSRAVWShifts each word right arithmetically by the count in the matching element of the second source.6
VPSRAWShifts words right arithmetically by one count from a register or an immediate.12
VPSRLDShifts doublewords right logically by one count from a register or an immediate.12
VPSRLDQShifts each 128-bit lane right by a number of bytes given by an immediate.6
VPSRLQShifts quadwords right logically by one count from a register or an immediate.12
VPSRLVDShifts each doubleword right logically by the count in the matching element of the second source.6
VPSRLVQShifts each quadword right logically by the count in the matching element of the second source.6
VPSRLVWShifts each word right logically by the count in the matching element of the second source.6
VPSRLWShifts words right logically by one count from a register or an immediate.12
VPSUBBSubtracts packed bytes, wrapping around on overflow.6
VPSUBDSubtracts packed doublewords, wrapping around on overflow.6
VPSUBQSubtracts packed quadwords, wrapping around on overflow.6
VPSUBSBSubtracts packed signed bytes with signed saturation.6
VPSUBSWSubtracts packed signed words with signed saturation.6
VPSUBUSBSubtracts packed unsigned bytes with unsigned saturation.6
VPSUBUSWSubtracts packed unsigned words with unsigned saturation.6
VPSUBWSubtracts packed words, wrapping around on overflow.6
VPTERNLOGDComputes any bitwise function of three inputs, given as an 8-bit truth table in an immediate, masked at doubleword granularity.6
VPTERNLOGQComputes any bitwise function of three inputs, given as an 8-bit truth table in an immediate, masked at quadword granularity.6
VPTESTMBSets a mask bit for each pair of bytes whose AND is not zero.6
VPTESTMDSets a mask bit for each pair of doublewords whose AND is not zero.6
VPTESTMQSets a mask bit for each pair of quadwords whose AND is not zero.6
VPTESTMWSets a mask bit for each pair of words whose AND is not zero.6
VPTESTNMBSets a mask bit for each pair of bytes whose AND is zero.6
VPTESTNMDSets a mask bit for each pair of doublewords whose AND is zero.6
VPTESTNMQSets a mask bit for each pair of quadwords whose AND is zero.6
VPTESTNMWSets a mask bit for each pair of words whose AND is zero.6
VPUNPCKHBWInterleaves the high bytes of each 128-bit lane of two sources.6
VPUNPCKHDQInterleaves the high doublewords of each 128-bit lane of two sources.6
VPUNPCKHQDQInterleaves the high quadwords of each 128-bit lane of two sources.6
VPUNPCKHWDInterleaves the high words of each 128-bit lane of two sources.6
VPUNPCKLBWInterleaves the low bytes of each 128-bit lane of two sources.6
VPUNPCKLDQInterleaves the low doublewords of each 128-bit lane of two sources.6
VPUNPCKLQDQInterleaves the low quadwords of each 128-bit lane of two sources.6
VPUNPCKLWDInterleaves the low words of each 128-bit lane of two sources.6
VPXORDComputes the bitwise XOR of two vectors, masked at doubleword granularity.6
VPXORQComputes the bitwise XOR of two vectors, masked at quadword granularity.6
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.6
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.6
VRANGESDComputes the minimum, maximum, or smaller or larger magnitude of the low doubles, as an immediate selects; the rest come from the first source.2
VRANGESSComputes the minimum, maximum, or smaller or larger magnitude of the low singles, as an immediate selects; the rest come from the first source.2
VRCP14PDApproximates the reciprocal of packed doubles with a relative error below 2^-14.6
VRCP14PSApproximates the reciprocal of packed singles with a relative error below 2^-14.6
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.2
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.2
VRCPPHApproximates the reciprocal of packed half-precision values with a relative error below 2^-11 + 2^-14.6
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.2
VREDUCEPDSubtracts from packed doubles their values rounded to the number of fraction bits an immediate gives, leaving the reduced argument.6
VREDUCEPHSubtracts from packed half-precision values their values rounded to the number of fraction bits an immediate gives, leaving the reduced argument.6
VREDUCEPSSubtracts from packed singles their values rounded to the number of fraction bits an immediate gives, leaving the reduced argument.6
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.2
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.2
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.2
VRNDSCALEPDRounds packed doubles to the number of fraction bits and with the rounding mode that an immediate gives.6
VRNDSCALEPHRounds packed half-precision values to the number of fraction bits and with the rounding mode that an immediate gives.6
VRNDSCALEPSRounds packed singles to the number of fraction bits and with the rounding mode that an immediate gives.6
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.2
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.2
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.2
VRSQRT14PDApproximates the reciprocal square root of packed doubles with a relative error below 2^-14.6
VRSQRT14PSApproximates the reciprocal square root of packed singles with a relative error below 2^-14.6
VRSQRT14SDApproximates the reciprocal square root of the second source's low double, relative error below 2^-14; the rest come from the first source.2
VRSQRT14SSApproximates the reciprocal square root of the second source's low single, relative error below 2^-14; the rest come from the first source.2
VRSQRTPHApproximates the reciprocal square root of packed half-precision values with a relative error below 2^-11 + 2^-14.6
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.2
VSCALEFPDMultiplies packed doubles by 2 raised to the floor of the matching values of the second source.6
VSCALEFPHMultiplies packed half-precision values by 2 raised to the floor of the matching values of the second source.6
VSCALEFPSMultiplies packed singles by 2 raised to the floor of the matching values of the second source.6
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.2
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.2
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.2
VSCATTERDPDStores doubles to memory at addresses formed with a vector of 32-bit indices, for the elements a mask selects.3
VSCATTERDPSStores singles to memory at addresses formed with a vector of 32-bit indices, for the elements a mask selects.3
VSCATTERQPDStores doubles to memory at addresses formed with a vector of 64-bit indices, for the elements a mask selects.3
VSCATTERQPSStores singles to memory at addresses formed with a vector of 64-bit indices, for the elements a mask selects.3
VSHUFF32X4Picks 128-bit blocks of singles from the two sources as an immediate selects, the lower half of the result from the first source.4
VSHUFF64X2Picks 128-bit blocks of doubles from the two sources as an immediate selects, the lower half of the result from the first source.4
VSHUFI32X4Picks 128-bit blocks of doublewords from the two sources as an immediate selects, the lower half of the result from the first source.4
VSHUFI64X2Picks 128-bit blocks of quadwords from the two sources as an immediate selects, the lower half of the result from the first source.4
VSHUFPDPicks doubles from the two sources for each position within each 128-bit lane, as an immediate selects.6
VSHUFPSPicks singles from the two sources for each position within each 128-bit lane, as an immediate selects.6
VSQRTPDComputes the square root of packed doubles.6
VSQRTPHComputes the square root of packed half-precision values.6
VSQRTPSComputes the square root of packed singles.6
VSQRTSDComputes the square root of the low double of the second source; the other elements come from the first source.2
VSQRTSHComputes the square root of the low half-precision value of the second source; the other elements come from the first source.2
VSQRTSSComputes the square root of the low single of the second source; the other elements come from the first source.2
VSUBPDSubtracts packed doubles.6
VSUBPHSubtracts packed half-precision values.6
VSUBPSSubtracts packed singles.6
VSUBSDSubtracts the low doubles; the other elements come from the first source.2
VSUBSHSubtracts the low half-precision values; the other elements come from the first source.2
VSUBSSSubtracts the low singles; the other elements come from the first source.2
VUCOMISDCompares the low doubles and sets ZF, PF and CF, clearing OF, SF and AF; only a signaling NaN raises an invalid exception.2
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.2
VUCOMISSCompares the low singles and sets ZF, PF and CF, clearing OF, SF and AF; only a signaling NaN raises an invalid exception.2
VUNPCKHPDInterleaves the high doubles of each 128-bit lane of two sources.6
VUNPCKHPSInterleaves the high singles of each 128-bit lane of two sources.6
VUNPCKLPDInterleaves the low doubles of each 128-bit lane of two sources.6
VUNPCKLPSInterleaves the low singles of each 128-bit lane of two sources.6
VXORPDComputes the bitwise XOR of packed doubles.6
VXORPSComputes the bitwise XOR of packed singles.6

CPUID and processors

XED splits AVX10.1 into 57 ISA sets. Software can use a form when the processor reports every CPUID bit of one alternative of the form's ISA set.

XED ISA sets of AVX10.1. Alternatives are separated by “or”; processors follow XED’s chip model, which covers AMD processors up to Zen 2.
ISA setCPUIDProcessors in XED
AVX512BW_128

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512BW + AVX512VL
CPUID.(EAX=07H,ECX=0):EBX[30] AVX512BW
CPUID.(EAX=07H,ECX=0):EBX[31] AVX512VL

Cannon Lake, Ice Lake (client), Tiger Lake, Nova Lake, Skylake-SP, Cascade Lake, Cooper Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512BW_128N

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512BW
CPUID.(EAX=07H,ECX=0):EBX[30] AVX512BW

Cannon Lake, Ice Lake (client), Tiger Lake, Nova Lake, Skylake-SP, Cascade Lake, Cooper Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512BW_256

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512BW + AVX512VL
CPUID.(EAX=07H,ECX=0):EBX[30] AVX512BW
CPUID.(EAX=07H,ECX=0):EBX[31] AVX512VL

Cannon Lake, Ice Lake (client), Tiger Lake, Nova Lake, Skylake-SP, Cascade Lake, Cooper Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512BW_512

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512BW
CPUID.(EAX=07H,ECX=0):EBX[30] AVX512BW

Cannon Lake, Ice Lake (client), Tiger Lake, Nova Lake, Skylake-SP, Cascade Lake, Cooper Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512BW_KOPD

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512BW
CPUID.(EAX=07H,ECX=0):EBX[30] AVX512BW

Cannon Lake, Ice Lake (client), Tiger Lake, Nova Lake, Skylake-SP, Cascade Lake, Cooper Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512BW_KOPQ

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512BW
CPUID.(EAX=07H,ECX=0):EBX[30] AVX512BW

Cannon Lake, Ice Lake (client), Tiger Lake, Nova Lake, Skylake-SP, Cascade Lake, Cooper Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512CD_128

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512CD + AVX512VL
CPUID.(EAX=07H,ECX=0):EBX[28] AVX512CD
CPUID.(EAX=07H,ECX=0):EBX[31] AVX512VL

Cannon Lake, Ice Lake (client), Tiger Lake, Nova Lake, Skylake-SP, Cascade Lake, Cooper Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512CD_256

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512CD + AVX512VL
CPUID.(EAX=07H,ECX=0):EBX[28] AVX512CD
CPUID.(EAX=07H,ECX=0):EBX[31] AVX512VL

Cannon Lake, Ice Lake (client), Tiger Lake, Nova Lake, Skylake-SP, Cascade Lake, Cooper Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512CD_512

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512CD
CPUID.(EAX=07H,ECX=0):EBX[28] AVX512CD

Cannon Lake, Ice Lake (client), Tiger Lake, Nova Lake, Skylake-SP, Cascade Lake, Cooper Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids, Knights Landing, Knights Mill
AVX512DQ_128

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512DQ + AVX512VL
CPUID.(EAX=07H,ECX=0):EBX[17] AVX512DQ
CPUID.(EAX=07H,ECX=0):EBX[31] AVX512VL

Cannon Lake, Ice Lake (client), Tiger Lake, Nova Lake, Skylake-SP, Cascade Lake, Cooper Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512DQ_128N

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512DQ
CPUID.(EAX=07H,ECX=0):EBX[17] AVX512DQ

Cannon Lake, Ice Lake (client), Tiger Lake, Nova Lake, Skylake-SP, Cascade Lake, Cooper Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512DQ_256

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512DQ + AVX512VL
CPUID.(EAX=07H,ECX=0):EBX[17] AVX512DQ
CPUID.(EAX=07H,ECX=0):EBX[31] AVX512VL

Cannon Lake, Ice Lake (client), Tiger Lake, Nova Lake, Skylake-SP, Cascade Lake, Cooper Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512DQ_512

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512DQ
CPUID.(EAX=07H,ECX=0):EBX[17] AVX512DQ

Cannon Lake, Ice Lake (client), Tiger Lake, Nova Lake, Skylake-SP, Cascade Lake, Cooper Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512DQ_KOPB

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512DQ
CPUID.(EAX=07H,ECX=0):EBX[17] AVX512DQ

Cannon Lake, Ice Lake (client), Tiger Lake, Nova Lake, Skylake-SP, Cascade Lake, Cooper Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512DQ_KOPW

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512DQ
CPUID.(EAX=07H,ECX=0):EBX[17] AVX512DQ

Cannon Lake, Ice Lake (client), Tiger Lake, Nova Lake, Skylake-SP, Cascade Lake, Cooper Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512DQ_SCALAR

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512DQ
CPUID.(EAX=07H,ECX=0):EBX[17] AVX512DQ

Cannon Lake, Ice Lake (client), Tiger Lake, Nova Lake, Skylake-SP, Cascade Lake, Cooper Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512F_128

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512F + AVX512VL
CPUID.(EAX=07H,ECX=0):EBX[16] AVX512F
CPUID.(EAX=07H,ECX=0):EBX[31] AVX512VL

Cannon Lake, Ice Lake (client), Tiger Lake, Nova Lake, Skylake-SP, Cascade Lake, Cooper Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512F_128N

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512F
CPUID.(EAX=07H,ECX=0):EBX[16] AVX512F

Cannon Lake, Ice Lake (client), Tiger Lake, Nova Lake, Skylake-SP, Cascade Lake, Cooper Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids, Knights Landing, Knights Mill
AVX512F_256

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512F + AVX512VL
CPUID.(EAX=07H,ECX=0):EBX[16] AVX512F
CPUID.(EAX=07H,ECX=0):EBX[31] AVX512VL

Cannon Lake, Ice Lake (client), Tiger Lake, Nova Lake, Skylake-SP, Cascade Lake, Cooper Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512F_512

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512F
CPUID.(EAX=07H,ECX=0):EBX[16] AVX512F

Cannon Lake, Ice Lake (client), Tiger Lake, Nova Lake, Skylake-SP, Cascade Lake, Cooper Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids, Knights Landing, Knights Mill
AVX512F_KOPW

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512F
CPUID.(EAX=07H,ECX=0):EBX[16] AVX512F

Cannon Lake, Ice Lake (client), Tiger Lake, Nova Lake, Skylake-SP, Cascade Lake, Cooper Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids, Knights Landing, Knights Mill
AVX512F_SCALAR

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512F
CPUID.(EAX=07H,ECX=0):EBX[16] AVX512F

Cannon Lake, Ice Lake (client), Tiger Lake, Nova Lake, Skylake-SP, Cascade Lake, Cooper Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids, Knights Landing, Knights Mill
AVX512_BF16_128

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512_BF16
CPUID.(EAX=07H,ECX=1):EAX[5] AVX512_BF16

Nova Lake, Cooper Lake, Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512_BF16_256

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512_BF16
CPUID.(EAX=07H,ECX=1):EAX[5] AVX512_BF16

Nova Lake, Cooper Lake, Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512_BF16_512

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512_BF16
CPUID.(EAX=07H,ECX=1):EAX[5] AVX512_BF16

Nova Lake, Cooper Lake, Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512_BITALG_128

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512_BITALG + AVX512VL
CPUID.(EAX=07H,ECX=0):ECX[12] AVX512_BITALG
CPUID.(EAX=07H,ECX=0):EBX[31] AVX512VL

Ice Lake (client), Tiger Lake, Nova Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512_BITALG_256

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512_BITALG + AVX512VL
CPUID.(EAX=07H,ECX=0):ECX[12] AVX512_BITALG
CPUID.(EAX=07H,ECX=0):EBX[31] AVX512VL

Ice Lake (client), Tiger Lake, Nova Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512_BITALG_512

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512_BITALG
CPUID.(EAX=07H,ECX=0):ECX[12] AVX512_BITALG

Ice Lake (client), Tiger Lake, Nova Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512_FP16_128

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512_FP16 + AVX512VL
CPUID.(EAX=07H,ECX=0):EDX[23] AVX512_FP16
CPUID.(EAX=07H,ECX=0):EBX[31] AVX512VL

Nova Lake, Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512_FP16_128N

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512_FP16
CPUID.(EAX=07H,ECX=0):EDX[23] AVX512_FP16

Nova Lake, Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512_FP16_256

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512_FP16 + AVX512VL
CPUID.(EAX=07H,ECX=0):EDX[23] AVX512_FP16
CPUID.(EAX=07H,ECX=0):EBX[31] AVX512VL

Nova Lake, Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512_FP16_512

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512_FP16
CPUID.(EAX=07H,ECX=0):EDX[23] AVX512_FP16

Nova Lake, Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512_FP16_SCALAR

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512_FP16
CPUID.(EAX=07H,ECX=0):EDX[23] AVX512_FP16

Nova Lake, Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512_GFNI_128

AVX10.1 + GFNI
CPUID.(EAX=07H,ECX=0):ECX[8] GFNI
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

GFNI + AVX512F + AVX512VL
CPUID.(EAX=07H,ECX=0):ECX[8] GFNI
CPUID.(EAX=07H,ECX=0):EBX[16] AVX512F
CPUID.(EAX=07H,ECX=0):EBX[31] AVX512VL

Ice Lake (client), Tiger Lake, Nova Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512_GFNI_256

AVX10.1 + GFNI
CPUID.(EAX=07H,ECX=0):ECX[8] GFNI
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

GFNI + AVX512F + AVX512VL
CPUID.(EAX=07H,ECX=0):ECX[8] GFNI
CPUID.(EAX=07H,ECX=0):EBX[16] AVX512F
CPUID.(EAX=07H,ECX=0):EBX[31] AVX512VL

Ice Lake (client), Tiger Lake, Nova Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512_GFNI_512

AVX10.1 + GFNI
CPUID.(EAX=07H,ECX=0):ECX[8] GFNI
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

GFNI + AVX512F
CPUID.(EAX=07H,ECX=0):ECX[8] GFNI
CPUID.(EAX=07H,ECX=0):EBX[16] AVX512F

Ice Lake (client), Tiger Lake, Nova Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512_IFMA_128

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512IFMA + AVX512VL
CPUID.(EAX=07H,ECX=0):EBX[21] AVX512IFMA
CPUID.(EAX=07H,ECX=0):EBX[31] AVX512VL

Cannon Lake, Ice Lake (client), Tiger Lake, Nova Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512_IFMA_256

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512IFMA + AVX512VL
CPUID.(EAX=07H,ECX=0):EBX[21] AVX512IFMA
CPUID.(EAX=07H,ECX=0):EBX[31] AVX512VL

Cannon Lake, Ice Lake (client), Tiger Lake, Nova Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512_IFMA_512

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512IFMA
CPUID.(EAX=07H,ECX=0):EBX[21] AVX512IFMA

Cannon Lake, Ice Lake (client), Tiger Lake, Nova Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512_VAES_128

AVX10.1 + VAES
CPUID.(EAX=07H,ECX=0):ECX[9] VAES
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

VAES + AES + AVX512F + AVX512VL
CPUID.(EAX=07H,ECX=0):ECX[9] VAES
CPUID.01H:ECX[25] AES
CPUID.(EAX=07H,ECX=0):EBX[16] AVX512F
CPUID.(EAX=07H,ECX=0):EBX[31] AVX512VL

Ice Lake (client), Tiger Lake, Nova Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512_VAES_256

AVX10.1 + VAES
CPUID.(EAX=07H,ECX=0):ECX[9] VAES
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

VAES + AES + AVX512F + AVX512VL
CPUID.(EAX=07H,ECX=0):ECX[9] VAES
CPUID.01H:ECX[25] AES
CPUID.(EAX=07H,ECX=0):EBX[16] AVX512F
CPUID.(EAX=07H,ECX=0):EBX[31] AVX512VL

Ice Lake (client), Tiger Lake, Nova Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512_VAES_512

AVX10.1 + VAES
CPUID.(EAX=07H,ECX=0):ECX[9] VAES
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

VAES + AES + AVX512F
CPUID.(EAX=07H,ECX=0):ECX[9] VAES
CPUID.01H:ECX[25] AES
CPUID.(EAX=07H,ECX=0):EBX[16] AVX512F

Ice Lake (client), Tiger Lake, Nova Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512_VBMI2_128

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512_VBMI2 + AVX512VL
CPUID.(EAX=07H,ECX=0):ECX[6] AVX512_VBMI2
CPUID.(EAX=07H,ECX=0):EBX[31] AVX512VL

Ice Lake (client), Tiger Lake, Nova Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512_VBMI2_256

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512_VBMI2 + AVX512VL
CPUID.(EAX=07H,ECX=0):ECX[6] AVX512_VBMI2
CPUID.(EAX=07H,ECX=0):EBX[31] AVX512VL

Ice Lake (client), Tiger Lake, Nova Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512_VBMI2_512

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512_VBMI2
CPUID.(EAX=07H,ECX=0):ECX[6] AVX512_VBMI2

Ice Lake (client), Tiger Lake, Nova Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512_VBMI_128

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512VBMI + AVX512VL
CPUID.(EAX=07H,ECX=0):ECX[1] AVX512VBMI
CPUID.(EAX=07H,ECX=0):EBX[31] AVX512VL

Cannon Lake, Ice Lake (client), Tiger Lake, Nova Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512_VBMI_256

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512VBMI + AVX512VL
CPUID.(EAX=07H,ECX=0):ECX[1] AVX512VBMI
CPUID.(EAX=07H,ECX=0):EBX[31] AVX512VL

Cannon Lake, Ice Lake (client), Tiger Lake, Nova Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512_VBMI_512

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512VBMI
CPUID.(EAX=07H,ECX=0):ECX[1] AVX512VBMI

Cannon Lake, Ice Lake (client), Tiger Lake, Nova Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512_VNNI_128

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512_VNNI + AVX512VL
CPUID.(EAX=07H,ECX=0):ECX[11] AVX512_VNNI
CPUID.(EAX=07H,ECX=0):EBX[31] AVX512VL

Ice Lake (client), Tiger Lake, Nova Lake, Cascade Lake, Cooper Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512_VNNI_256

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512_VNNI + AVX512VL
CPUID.(EAX=07H,ECX=0):ECX[11] AVX512_VNNI
CPUID.(EAX=07H,ECX=0):EBX[31] AVX512VL

Ice Lake (client), Tiger Lake, Nova Lake, Cascade Lake, Cooper Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512_VNNI_512

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512_VNNI
CPUID.(EAX=07H,ECX=0):ECX[11] AVX512_VNNI

Ice Lake (client), Tiger Lake, Nova Lake, Cascade Lake, Cooper Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512_VPCLMULQDQ_128

AVX10.1 + VPCLMULQDQ
CPUID.(EAX=07H,ECX=0):ECX[10] VPCLMULQDQ
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

VPCLMULQDQ + PCLMULQDQ + AVX512F + AVX512VL
CPUID.(EAX=07H,ECX=0):ECX[10] VPCLMULQDQ
CPUID.01H:ECX[1] PCLMULQDQ
CPUID.(EAX=07H,ECX=0):EBX[16] AVX512F
CPUID.(EAX=07H,ECX=0):EBX[31] AVX512VL

Ice Lake (client), Tiger Lake, Nova Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512_VPCLMULQDQ_256

AVX10.1 + VPCLMULQDQ
CPUID.(EAX=07H,ECX=0):ECX[10] VPCLMULQDQ
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

VPCLMULQDQ + PCLMULQDQ + AVX512F + AVX512VL
CPUID.(EAX=07H,ECX=0):ECX[10] VPCLMULQDQ
CPUID.01H:ECX[1] PCLMULQDQ
CPUID.(EAX=07H,ECX=0):EBX[16] AVX512F
CPUID.(EAX=07H,ECX=0):EBX[31] AVX512VL

Ice Lake (client), Tiger Lake, Nova Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512_VPCLMULQDQ_512

AVX10.1 + VPCLMULQDQ
CPUID.(EAX=07H,ECX=0):ECX[10] VPCLMULQDQ
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

VPCLMULQDQ + PCLMULQDQ + AVX512F
CPUID.(EAX=07H,ECX=0):ECX[10] VPCLMULQDQ
CPUID.01H:ECX[1] PCLMULQDQ
CPUID.(EAX=07H,ECX=0):EBX[16] AVX512F

Ice Lake (client), Tiger Lake, Nova Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512_VPOPCNTDQ_128

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512_VPOPCNTDQ + AVX512VL
CPUID.(EAX=07H,ECX=0):ECX[14] AVX512_VPOPCNTDQ
CPUID.(EAX=07H,ECX=0):EBX[31] AVX512VL

Ice Lake (client), Tiger Lake, Nova Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512_VPOPCNTDQ_256

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512_VPOPCNTDQ + AVX512VL
CPUID.(EAX=07H,ECX=0):ECX[14] AVX512_VPOPCNTDQ
CPUID.(EAX=07H,ECX=0):EBX[31] AVX512VL

Ice Lake (client), Tiger Lake, Nova Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids
AVX512_VPOPCNTDQ_512

AVX10.1
CPUID.(EAX=07H,ECX=1):EDX[19] AVX10
CPUID.(EAX=24H,ECX=0):EBX[7:0] ≥ 1 AVX10 version

or

AVX512_VPOPCNTDQ
CPUID.(EAX=07H,ECX=0):ECX[14] AVX512_VPOPCNTDQ

Ice Lake (client), Tiger Lake, Nova Lake, Ice Lake (server), Sapphire Rapids, Emerald Rapids, Granite Rapids, Diamond Rapids, Knights Mill

Sources

  1. Intel XED v2026.08.23 (commit 0bcb6237345c): forms, encodings, ISA sets, CPUID bits and chip model.
  2. Intel Advanced Vector Extensions 10.2 Architecture Specification, revision 6.0 (361050-006, January 2026)

The tables are derived from Intel XED, Copyright Intel Corporation, licensed under the Apache License 2.0; x86-64.net converted and reformatted them. The text is our own.