Introduction
AVX-512 grew set by set. This page has the smaller sets that came after, or beside, Foundation, BW, DQ and CD. All of them use the zmm and mask registers and the EVEX encoding, with masking, broadcast and disp8×N as explained on the AVX-512 Foundation page, where the tuple types after the encodings below are defined too. Each set has its own CPUID bit, in leaf 7, and a program checks for it as well as for AVX-512 F. Unless a row says otherwise, the sets after the Xeon Phi ones also have 128-bit and 256-bit forms with AVX512VL; the tables give the 512-bit form.
| Set | What it adds | First processor | CPUID leaf 7 |
|---|---|---|---|
| ER | exponential and high-accuracy reciprocal approximations | Xeon Phi Knights Landing, 2016 | sub-leaf 0, EBX bit 27 |
| PF | gather and scatter prefetches | Xeon Phi Knights Landing, 2016 | sub-leaf 0, EBX bit 26 |
| 4FMAPS | four chained multiply-adds of singles | Xeon Phi Knights Mill, 2017 | sub-leaf 0, EDX bit 3 |
| 4VNNIW | four chained word dot products | Xeon Phi Knights Mill, 2017 | sub-leaf 0, EDX bit 2 |
| VPOPCNTDQ | population counts of dwords and qwords | Xeon Phi Knights Mill, 2017; Ice Lake, 2019 | sub-leaf 0, ECX bit 14 |
| IFMA | 52-bit integer multiply-add | Cannon Lake, 2018 | sub-leaf 0, EBX bit 21 |
| VBMI | byte permutes and multishift | Cannon Lake, 2018 | sub-leaf 0, ECX bit 1 |
| VNNI | byte and word dot products into dwords | Cascade Lake, 2019 | sub-leaf 0, ECX bit 11 |
| VBMI2 | byte and word compress and expand, double shifts | Ice Lake, 2019 | sub-leaf 0, ECX bit 6 |
| BITALG | byte and word population counts, bit shuffle | Ice Lake, 2019 | sub-leaf 0, ECX bit 12 |
| BF16 | bfloat16 conversions and dot product | Cooper Lake, 2020 | sub-leaf 1, EAX bit 5 |
| VP2INTERSECT | pairs of masks for equal elements | Tiger Lake, 2020 | sub-leaf 0, EDX bit 8 |
The Xeon Phi sets
ER, PF, 4FMAPS and 4VNNIW exist only on Intel’s Xeon Phi processors: ER and PF on Knights Landing (x200, launched in June 2016) and on Knights Mill, and 4FMAPS and 4VNNIW on Knights Mill (x205, from December 2017) alone. No other processor, from Intel or AMD, has them. Their instructions are 512-bit only, or scalar.
- Intel ended Knights Landing in 2018: the last orders were taken on 31 August 2018 and the last chips shipped on 19 July 2019.
- Knights Mill, the last Xeon Phi, followed in 2019: last orders on 9 August 2019, last shipments on 31 July 2020.
- The compilers have since dropped them: LLVM 19 (2024) removed its support for these sets, after deprecating it in LLVM 18, and GCC 15 did the same. LLVM 21’s disassembler still decodes the instructions, and so does ours.
The later sets
- IFMA and VBMI came with Cannon Lake (2018), VNNI with the Cascade Lake Xeons (2019), and VBMI2, BITALG and VPOPCNTDQ with Ice Lake (2019), which had IFMA and VBMI too. Tiger Lake, Rocket Lake, the Ice Lake-SP Xeons and the Xeons from Sapphire Rapids on have all six, and so do AMD’s Zen 4 (2022) and Zen 5 (2024). The Cooper Lake Xeons, built on Cascade Lake, have VNNI but not the others.
- BF16 came with the Cooper Lake Xeons (2020); Sapphire Rapids (2023) and Zen 4 have it too.
- VP2INTERSECT came with Tiger Lake (2020). Intel’s server processors that followed (Sapphire Rapids and later) do not have it; AMD added it with Zen 5 (2024).
- Intel’s hybrid client processors from Alder Lake on have no AVX-512 at all (see AVX-512 Foundation). VNNI and IFMA came back to them in VEX form, as AVX-VNNI and AVX-IFMA.
The instructions
Exponential and reciprocal approximations (ER)
| Instruction | Forms | Encoding | What it does | Set |
|---|---|---|---|---|
vexp2ps | zmm1 {k1}{z}, zmm2/m512/m32bcst{sae} | EVEX.512.66.0F38.W0 C8 /r FV | 2x for each single, with a relative error below 2−23. | AVX-512 ER (Knights Landing, 2016) |
vexp2pd | zmm1 {k1}{z}, zmm2/m512/m64bcst{sae} | EVEX.512.66.0F38.W1 C8 /r FV | 2x for each double, relative error below 2−23. | AVX-512 ER (Knights Landing, 2016) |
vrcp28ps | zmm1 {k1}{z}, zmm2/m512/m32bcst{sae} | EVEX.512.66.0F38.W0 CA /r FV | Approximate reciprocals, relative error below 2−28. | AVX-512 ER (Knights Landing, 2016) |
vrcp28pd | zmm1 {k1}{z}, zmm2/m512/m64bcst{sae} | EVEX.512.66.0F38.W1 CA /r FV | The same for doubles. | AVX-512 ER (Knights Landing, 2016) |
vrcp28ss | xmm1 {k1}{z}, xmm2, xmm3/m32{sae} | EVEX.LLIG.66.0F38.W0 CB /r T1S | The same for the low single of xmm3; the rest from xmm2. | AVX-512 ER (Knights Landing, 2016) |
vrcp28sd | xmm1 {k1}{z}, xmm2, xmm3/m64{sae} | EVEX.LLIG.66.0F38.W1 CB /r T1S | The same for the low double. | AVX-512 ER (Knights Landing, 2016) |
vrsqrt28ps | zmm1 {k1}{z}, zmm2/m512/m32bcst{sae} | EVEX.512.66.0F38.W0 CC /r FV | Approximate reciprocal square roots, relative error below 2−28. | AVX-512 ER (Knights Landing, 2016) |
vrsqrt28pd | zmm1 {k1}{z}, zmm2/m512/m64bcst{sae} | EVEX.512.66.0F38.W1 CC /r FV | The same for doubles. | AVX-512 ER (Knights Landing, 2016) |
vrsqrt28ss | xmm1 {k1}{z}, xmm2, xmm3/m32{sae} | EVEX.LLIG.66.0F38.W0 CD /r T1S | The same for the low single. | AVX-512 ER (Knights Landing, 2016) |
vrsqrt28sd | xmm1 {k1}{z}, xmm2, xmm3/m64{sae} | EVEX.LLIG.66.0F38.W1 CD /r T1S | The same for the low double. | AVX-512 ER (Knights Landing, 2016) |
Gather and scatter prefetches (PF)
These prefetch the cache lines that a gather or scatter with the same operands would touch, for the elements whose mask bits are set, and load nothing into a register. pf0 prefetches with the T0 hint (into every cache level) and pf1 with T1; the scatter forms prefetch with the intent to write. They address memory with VSIB, as the gathers do, need a mask other than k0, and use ModRM.reg as part of the opcode.
| Instruction | Forms | Encoding | What it does | Set |
|---|---|---|---|---|
vgatherpf0dps | vm32z {k1} | EVEX.512.66.0F38.W0 C6 /1 /vsib T1S | Prefetches 16 singles by dword indices, hint T0. | AVX-512 PF (Knights Landing, 2016) |
vgatherpf0dpd | vm32y {k1} | EVEX.512.66.0F38.W1 C6 /1 /vsib T1S | Prefetches 8 doubles by dword indices, hint T0. | AVX-512 PF (Knights Landing, 2016) |
vgatherpf0qps | vm64z {k1} | EVEX.512.66.0F38.W0 C7 /1 /vsib T1S | Prefetches 8 singles by qword indices, hint T0. | AVX-512 PF (Knights Landing, 2016) |
vgatherpf0qpd | vm64z {k1} | EVEX.512.66.0F38.W1 C7 /1 /vsib T1S | Prefetches 8 doubles by qword indices, hint T0. | AVX-512 PF (Knights Landing, 2016) |
vgatherpf1dps | vm32z {k1} | EVEX.512.66.0F38.W0 C6 /2 /vsib T1S | The same as VGATHERPF0DPS, hint T1. | AVX-512 PF (Knights Landing, 2016) |
vgatherpf1dpd | vm32y {k1} | EVEX.512.66.0F38.W1 C6 /2 /vsib T1S | The same as VGATHERPF0DPD, hint T1. | AVX-512 PF (Knights Landing, 2016) |
vgatherpf1qps | vm64z {k1} | EVEX.512.66.0F38.W0 C7 /2 /vsib T1S | The same as VGATHERPF0QPS, hint T1. | AVX-512 PF (Knights Landing, 2016) |
vgatherpf1qpd | vm64z {k1} | EVEX.512.66.0F38.W1 C7 /2 /vsib T1S | The same as VGATHERPF0QPD, hint T1. | AVX-512 PF (Knights Landing, 2016) |
vscatterpf0dps | vm32z {k1} | EVEX.512.66.0F38.W0 C6 /5 /vsib T1S | Prefetches 16 singles by dword indices for writing, hint T0. | AVX-512 PF (Knights Landing, 2016) |
vscatterpf0dpd | vm32y {k1} | EVEX.512.66.0F38.W1 C6 /5 /vsib T1S | Prefetches 8 doubles by dword indices for writing, hint T0. | AVX-512 PF (Knights Landing, 2016) |
vscatterpf0qps | vm64z {k1} | EVEX.512.66.0F38.W0 C7 /5 /vsib T1S | Prefetches 8 singles by qword indices for writing, hint T0. | AVX-512 PF (Knights Landing, 2016) |
vscatterpf0qpd | vm64z {k1} | EVEX.512.66.0F38.W1 C7 /5 /vsib T1S | Prefetches 8 doubles by qword indices for writing, hint T0. | AVX-512 PF (Knights Landing, 2016) |
vscatterpf1dps | vm32z {k1} | EVEX.512.66.0F38.W0 C6 /6 /vsib T1S | The same as VSCATTERPF0DPS, hint T1. | AVX-512 PF (Knights Landing, 2016) |
vscatterpf1dpd | vm32y {k1} | EVEX.512.66.0F38.W1 C6 /6 /vsib T1S | The same as VSCATTERPF0DPD, hint T1. | AVX-512 PF (Knights Landing, 2016) |
vscatterpf1qps | vm64z {k1} | EVEX.512.66.0F38.W0 C7 /6 /vsib T1S | The same as VSCATTERPF0QPS, hint T1. | AVX-512 PF (Knights Landing, 2016) |
vscatterpf1qpd | vm64z {k1} | EVEX.512.66.0F38.W1 C7 /6 /vsib T1S | The same as VSCATTERPF0QPD, hint T1. | AVX-512 PF (Knights Landing, 2016) |
Four-iteration multiply-add and dot product (4FMAPS, 4VNNIW)
Each of these works through a block of four source registers, written
zmm2+3: EVEX.vvvv names the first, and its low two bits are ignored, so
the block is zmm0–3, zmm4–7 and so on. Memory holds four elements, one for each
register, and each is broadcast in turn. The memory operand is 16 bytes, and disp8 is
scaled by 16 (Intel’s Tuple1_4X).
| Instruction | Forms | Encoding | What it does | Set |
|---|---|---|---|---|
v4fmaddps | zmm1 {k1}{z}, zmm2+3, m128 | EVEX.512.F2.0F38.W0 9A /r | Four multiply-adds in sequence: for i = 0 to 3, zmm1 = zmm1 + zmm(2+i) × the ith single of m128. | AVX-512 4FMAPS (Knights Mill, 2017) |
v4fnmaddps | zmm1 {k1}{z}, zmm2+3, m128 | EVEX.512.F2.0F38.W0 AA /r | The same, subtracting each product. | AVX-512 4FMAPS (Knights Mill, 2017) |
v4fmaddss | xmm1 {k1}{z}, xmm2+3, m128 | EVEX.LLIG.F2.0F38.W0 9B /r | The same on the low single only. | AVX-512 4FMAPS (Knights Mill, 2017) |
v4fnmaddss | xmm1 {k1}{z}, xmm2+3, m128 | EVEX.LLIG.F2.0F38.W0 AB /r | The same on the low single, subtracting. | AVX-512 4FMAPS (Knights Mill, 2017) |
vp4dpwssd | zmm1 {k1}{z}, zmm2+3, m128 | EVEX.512.F2.0F38.W0 52 /r | Four word dot products in sequence: for i = 0 to 3, each dword of zmm1 gains the two products of the signed words of zmm(2+i) with the ith pair of signed words in memory. | AVX-512 4VNNIW (Knights Mill, 2017) |
vp4dpwssds | zmm1 {k1}{z}, zmm2+3, m128 | EVEX.512.F2.0F38.W0 53 /r | The same, saturating the sums to signed dwords. | AVX-512 4VNNIW (Knights Mill, 2017) |
52-bit integer multiply-add (IFMA)
| Instruction | Forms | Encoding | What it does | Set |
|---|---|---|---|---|
vpmadd52luq | zmm1 {k1}{z}, zmm2, zmm3/m512/m64bcst | EVEX.512.66.0F38.W1 B4 /r FV | Multiplies the low 52 bits of each qword of zmm2 and zmm3, as unsigned integers, and adds the low 52 bits of the 104-bit product to zmm1’s qword. Used for big-number arithmetic. | AVX-512 IFMA (Cannon Lake, 2018) |
vpmadd52huq | zmm1 {k1}{z}, zmm2, zmm3/m512/m64bcst | EVEX.512.66.0F38.W1 B5 /r FV | The same, adding the high 52 bits of the product. | AVX-512 IFMA (Cannon Lake, 2018) |
Byte permutes (VBMI)
| Instruction | Forms | Encoding | What it does | Set |
|---|---|---|---|---|
vpermb | zmm1 {k1}{z}, zmm2, zmm3/m512 | EVEX.512.66.0F38.W0 8D /r FVM | Each byte of the result is the byte of zmm3 picked by the matching index in zmm2, across the whole vector. | AVX-512 VBMI (Cannon Lake, 2018) |
vpermi2b | zmm1 {k1}{z}, zmm2, zmm3/m512 | EVEX.512.66.0F38.W0 75 /r FVM | A lookup of bytes in two tables, zmm2 and zmm3, by the indices in zmm1, which the result overwrites. | AVX-512 VBMI (Cannon Lake, 2018) |
vpermt2b | zmm1 {k1}{z}, zmm2, zmm3/m512 | EVEX.512.66.0F38.W0 7D /r FVM | A lookup of bytes in two tables, zmm1 and zmm3, by the indices in zmm2; the result overwrites the first table. | AVX-512 VBMI (Cannon Lake, 2018) |
vpmultishiftqb | zmm1 {k1}{z}, zmm2, zmm3/m512/m64bcst | EVEX.512.66.0F38.W1 83 /r FV | Each byte of the result is the 8 bits of the matching qword of zmm3 that start at the bit given by the low six bits of the matching byte of zmm2, wrapping round the qword. | AVX-512 VBMI (Cannon Lake, 2018) |
Compress, expand and double shifts (VBMI2)
The double shifts join an element of two registers, shift the pair and keep half, as SHLD and SHRD do for general registers. The shift count is taken modulo the element size.
| Instruction | Forms | Encoding | What it does | Set |
|---|---|---|---|---|
vpcompressb | zmm1/m512 {k1}{z}, zmm2 | EVEX.512.66.0F38.W0 63 /r T1S | Packs the bytes of zmm2 whose mask bits are set into the low bytes of the destination; to memory it writes only those bytes. | AVX-512 VBMI2 (Ice Lake, 2019) |
vpcompressw | zmm1/m512 {k1}{z}, zmm2 | EVEX.512.66.0F38.W1 63 /r T1S | The same for words. | AVX-512 VBMI2 (Ice Lake, 2019) |
vpexpandb | zmm1 {k1}{z}, zmm2/m512 | EVEX.512.66.0F38.W0 62 /r T1S | The low bytes of the source, in order, go to the bytes whose mask bits are set. | AVX-512 VBMI2 (Ice Lake, 2019) |
vpexpandw | zmm1 {k1}{z}, zmm2/m512 | EVEX.512.66.0F38.W1 62 /r T1S | The same for words. | AVX-512 VBMI2 (Ice Lake, 2019) |
vpshldw | zmm1 {k1}{z}, zmm2, zmm3/m512, imm8 | EVEX.512.66.0F3A.W1 70 /r ib FVM | Each word: zmm2 (high) and zmm3 (low) joined, shifted left by imm8, the high half kept. | AVX-512 VBMI2 (Ice Lake, 2019) |
vpshldd | zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst, imm8 | EVEX.512.66.0F3A.W0 71 /r ib FV | The same for dwords. | AVX-512 VBMI2 (Ice Lake, 2019) |
vpshldq | zmm1 {k1}{z}, zmm2, zmm3/m512/m64bcst, imm8 | EVEX.512.66.0F3A.W1 71 /r ib FV | The same for qwords. | AVX-512 VBMI2 (Ice Lake, 2019) |
vpshrdw | zmm1 {k1}{z}, zmm2, zmm3/m512, imm8 | EVEX.512.66.0F3A.W1 72 /r ib FVM | Each word: zmm3 (high) and zmm2 (low) joined, shifted right by imm8, the low half kept. | AVX-512 VBMI2 (Ice Lake, 2019) |
vpshrdd | zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst, imm8 | EVEX.512.66.0F3A.W0 73 /r ib FV | The same for dwords. | AVX-512 VBMI2 (Ice Lake, 2019) |
vpshrdq | zmm1 {k1}{z}, zmm2, zmm3/m512/m64bcst, imm8 | EVEX.512.66.0F3A.W1 73 /r ib FV | The same for qwords. | AVX-512 VBMI2 (Ice Lake, 2019) |
vpshldvw | zmm1 {k1}{z}, zmm2, zmm3/m512 | EVEX.512.66.0F38.W1 70 /r FVM | Each word: zmm1 (high) and zmm2 (low) joined, shifted left by the matching word of zmm3, the high half kept in zmm1. | AVX-512 VBMI2 (Ice Lake, 2019) |
vpshldvd | zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst | EVEX.512.66.0F38.W0 71 /r FV | The same for dwords. | AVX-512 VBMI2 (Ice Lake, 2019) |
vpshldvq | zmm1 {k1}{z}, zmm2, zmm3/m512/m64bcst | EVEX.512.66.0F38.W1 71 /r FV | The same for qwords. | AVX-512 VBMI2 (Ice Lake, 2019) |
vpshrdvw | zmm1 {k1}{z}, zmm2, zmm3/m512 | EVEX.512.66.0F38.W1 72 /r FVM | Each word: zmm2 (high) and zmm1 (low) joined, shifted right by the matching word of zmm3, the low half kept in zmm1. | AVX-512 VBMI2 (Ice Lake, 2019) |
vpshrdvd | zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst | EVEX.512.66.0F38.W0 73 /r FV | The same for dwords. | AVX-512 VBMI2 (Ice Lake, 2019) |
vpshrdvq | zmm1 {k1}{z}, zmm2, zmm3/m512/m64bcst | EVEX.512.66.0F38.W1 73 /r FV | The same for qwords. | AVX-512 VBMI2 (Ice Lake, 2019) |
Dot products (VNNI)
| Instruction | Forms | Encoding | What it does | Set |
|---|---|---|---|---|
vpdpbusd | zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst | EVEX.512.66.0F38.W0 50 /r FV | For each dword: the four products of unsigned bytes of zmm2 and signed bytes of zmm3 are added to zmm1’s dword, wrapping. | AVX-512 VNNI (Cascade Lake, 2019) |
vpdpbusds | zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst | EVEX.512.66.0F38.W0 51 /r FV | The same, saturating to a signed dword. | AVX-512 VNNI (Cascade Lake, 2019) |
vpdpwssd | zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst | EVEX.512.66.0F38.W0 52 /r FV | For each dword: the two products of signed words of zmm2 and zmm3 are added to zmm1’s dword, wrapping. | AVX-512 VNNI (Cascade Lake, 2019) |
vpdpwssds | zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst | EVEX.512.66.0F38.W0 53 /r FV | The same, saturating. | AVX-512 VNNI (Cascade Lake, 2019) |
Population counts and bit shuffle (BITALG, VPOPCNTDQ)
| Instruction | Forms | Encoding | What it does | Set |
|---|---|---|---|---|
vpopcntb | zmm1 {k1}{z}, zmm2/m512 | EVEX.512.66.0F38.W0 54 /r FVM | Counts the set bits of each byte. | AVX-512 BITALG (Ice Lake, 2019) |
vpopcntw | zmm1 {k1}{z}, zmm2/m512 | EVEX.512.66.0F38.W1 54 /r FVM | Counts the set bits of each word. | AVX-512 BITALG (Ice Lake, 2019) |
vpshufbitqmb | k1 {k2}, zmm2, zmm3/m512 | EVEX.512.66.0F38.W0 8F /r FVM | Each bit of k1 is one bit of a qword of zmm2: for byte j of zmm3, its low six bits pick a bit of the qword of zmm2 that holds byte j. | AVX-512 BITALG (Ice Lake, 2019) |
vpopcntd | zmm1 {k1}{z}, zmm2/m512/m32bcst | EVEX.512.66.0F38.W0 55 /r FV | Counts the set bits of each dword. | AVX-512 VPOPCNTDQ (Knights Mill, 2017; Ice Lake, 2019) |
vpopcntq | zmm1 {k1}{z}, zmm2/m512/m64bcst | EVEX.512.66.0F38.W1 55 /r FV | Counts the set bits of each qword. | AVX-512 VPOPCNTDQ (Knights Mill, 2017; Ice Lake, 2019) |
bfloat16 (BF16)
bfloat16 is the top half of a single: a sign, the same 8-bit exponent and a 7-bit fraction. These conversions round to nearest even and raise no exceptions.
| Instruction | Forms | Encoding | What it does | Set |
|---|---|---|---|---|
vcvtne2ps2bf16 | zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst | EVEX.512.F2.0F38.W0 72 /r FV | Converts 32 singles to bfloat16: those of zmm3 into the low half of zmm1, those of zmm2 into the high half. The mask works per 16-bit element. | AVX-512 BF16 (Cooper Lake, 2020) |
vcvtneps2bf16 | ymm1 {k1}{z}, zmm2/m512/m32bcst | EVEX.512.F3.0F38.W0 72 /r FV | Converts 16 singles to bfloat16. | AVX-512 BF16 (Cooper Lake, 2020) |
vdpbf16ps | zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst | EVEX.512.F3.0F38.W0 52 /r FV | For each single of zmm1: adds the two products of the matching pairs of bfloat16 values of zmm2 and zmm3. | AVX-512 BF16 (Cooper Lake, 2020) |
Intersection (VP2INTERSECT)
| Instruction | Forms | Encoding | What it does | Set |
|---|---|---|---|---|
vp2intersectd | k1+1, zmm2, zmm3/m512/m32bcst | EVEX.512.F2.0F38.W0 68 /r FV | Writes a pair of masks, named by the even one in ModRM.reg: bit i of k1 is set where dword i of zmm2 equals any dword of zmm3, and bit j of k1+1 where dword j of zmm3 equals any of zmm2. No write mask. | AVX-512 VP2INTERSECT (Tiger Lake, 2020) |
vp2intersectq | k1+1, zmm2, zmm3/m512/m64bcst | EVEX.512.F2.0F38.W1 68 /r FV | The same for qwords. | AVX-512 VP2INTERSECT (Tiger Lake, 2020) |
Notes
- The ER and PF instructions are 512-bit only (the scalar ER ones ignore the length); 4FMAPS and 4VNNIW are 512-bit or scalar. Our decoder shows their other lengths as invalid.
- For the PF prefetches, LLVM writes the mask as an operand of its own,
vgatherpf0dps {k1}, dword ptr [...]. Intel’s manual writes it on the memory operand,VGATHERPF0DPS vm32z {k1}, and so does our decoder. - VP2INTERSECT always writes an even mask register and the one after it (k0 and k1, k2 and k3 …), and the disassembly names the even one.
- The EVEX forms of GFNI, VAES and VPCLMULQDQ, which came with Ice Lake too, are on the cryptography page.
- None of these instructions changes the flags.
Links
Reference
- Intel 64 and IA-32 Architectures Software Developer’s Manuals – Intel’s manual; volume 2 describes the instructions of these sets
- Intel Architecture Instruction Set Extensions Programming Reference – Intel’s specification of extensions before they reach the main manual
- AMD64 Architecture Programmer’s Manual, Volume 4 – AMD’s reference to the 128-bit, 256-bit and 512-bit media instructions
- x86 and amd64 instruction reference – Félix Cloutier’s copy of the instruction pages of Intel’s manual