x86 Instructions
957 instructions - showing 100 per page, page 9 of 10 - click any row to view encoding, pseudocode, and full documentation.
| Mnemonic | Syntax | Format | Extension | Summary |
|---|---|---|---|---|
| vpcompressw | VPCOMPRESSW m512 {k1}, zmm1 | EVEX | AVX-512-VBMI2 | Compresses active words from ZMM to memory. |
| vpconflictd | VPCONFLICTD zmm1 {k1}, zmm2/m512 | EVEX | AVX-512CD | Detects duplicate values in a vector (Conflict Detection). |
| vpconflictq | VPCONFLICTQ zmm1 {k1}, zmm2/m512 | EVEX | AVX-512CD | Detects duplicate values in a quadword vector. |
| vpdpbusd | VPDPBUSD zmm1, zmm2, zmm3/m512 | EVEX | AVX-512-VNNI | Dot product of unsigned/signed bytes, accum to dword. |
| vpdpbusds | VPDPBUSDS zmm1, zmm2, zmm3/m512 | EVEX | AVX-512-VNNI | Dot product of unsigned/signed bytes, accum to dword (Saturate). |
| vpdpwssd | VPDPWSSD zmm1, zmm2, zmm3/m512 | EVEX | AVX-512-VNNI | Dot product of signed words, accum to dword. |
| vpdpwssds | VPDPWSSDS zmm1, zmm2, zmm3/m512 | EVEX | AVX-512-VNNI | Dot product of signed words, accum to dword (Saturate). |
| vperm2f128 | VPERM2F128 ymm1, ymm2, ymm3/m256, imm8 | VEX | AVX | Shuffles 128-bit float lanes between YMM registers. |
| vperm2i128 | VPERM2I128 ymm1, ymm2, ymm3/m256, imm8 | VEX | AVX2 | Shuffles two 128-bit lanes between registers. |
| vpermb | VPERMB zmm1 {k1}, zmm2, zmm3/m512 | EVEX | AVX-512-VBMI | Permutes bytes in ZMM based on index vector. |
| vpermd | VPERMD ymm1, ymm2, ymm3/m256 | VEX | AVX2 | Full permutation of 8 integers using indices from a register. |
| vpermi2b | VPERMI2B zmm1 {k1}, zmm2, zmm3/m512 | EVEX | AVX-512-VBMI | Shuffles bytes from two ZMM registers into destination. |
| vpermi2d | VPERMI2D zmm1 {k1}, zmm2, zmm3/m512 | EVEX | AVX-512F | Shuffles doublewords from two ZMM registers into destination. |
| vpermi2q | VPERMI2Q zmm1 {k1}, zmm2, zmm3/m512 | EVEX | AVX-512F | Shuffles quadwords from two ZMM registers into destination. |
| vpermilpd | VPERMILPD ymm1, ymm2/m256, imm8 | AVX | AVX | Shuffles doubles within 128-bit lanes (AVX). |
| vpermilps | VPERMILPS ymm1, ymm2/m256, imm8 | AVX | AVX | Shuffles floats within 128-bit lanes (AVX). |
| vpermps | VPERMPS ymm1, ymm2, ymm3/m256 | VEX | AVX2 | Full permutation of 8 floats using indices. |
| vpermq | VPERMQ ymm1, ymm2/m256, imm8 | VEX | AVX2 | Shuffles quadwords within 256-bit lanes using immediate. |
| vpermt2b | VPERMT2B zmm1 {k1}, zmm2, zmm3/m512 | EVEX | AVX-512-VBMI | Shuffles bytes from two sources, overwriting index. |
| vpermt2d | VPERMT2D zmm1 {k1}, zmm2, zmm3/m512 | EVEX | AVX-512F | Shuffles 2 sources, overwriting the index register. |
| vpermt2q | VPERMT2Q zmm1 {k1}, zmm2, zmm3/m512 | EVEX | AVX-512F | Shuffles 2 sources, overwriting the index register (Quadword). |
| vpermw | VPERMW zmm1 {k1}, zmm2, zmm3/m512 | EVEX | AVX-512BW | Full permutation of 32 words using indices. |
| vpexpandb | VPEXPANDB zmm1 {k1}, m512 | EVEX | AVX-512-VBMI2 | Expands bytes from memory into sparse locations in ZMM. |
| vpexpandw | VPEXPANDW zmm1 {k1}, m512 | EVEX | AVX-512-VBMI2 | Expands words from memory into sparse locations in ZMM. |
| vpgatherdd | VPGATHERDD ymm1, [base+ymm_idx*scale], ymm_mask | VEX | AVX2 | Gathers 32-bit integers using 32-bit indices. |
| vpgatherdq | VPGATHERDQ ymm1, [base+xmm_idx*scale], ymm_mask | VEX | AVX2 | Gathers 64-bit integers using 32-bit indices. |
| vpgatherqd | VPGATHERQD xmm1, [base+ymm_idx*scale], xmm_mask | VEX | AVX2 | Gathers 32-bit integers using 64-bit indices. |
| vpgatherqq | VPGATHERQQ ymm1, [base+ymm_idx*scale], ymm_mask | VEX | AVX2 | Gathers 64-bit integers using 64-bit indices. |
| vphaddbd | VPHADDBD xmm1, xmm2/m128 | XOP | XOP | Adds adjacent bytes to doublewords. |
| vphaddbq | VPHADDBQ xmm1, xmm2/m128 | XOP | XOP | Adds adjacent bytes to quadwords. |
| vphaddbw | VPHADDBW xmm1, xmm2/m128 | XOP | XOP | Adds adjacent bytes to words. |
| vphadddq | VPHADDDQ xmm1, xmm2/m128 | XOP | XOP | Adds adjacent doublewords to quadwords. |
| vphaddwd | VPHADDWD xmm1, xmm2/m128 | XOP | XOP | Adds adjacent words to doublewords. |
| vphaddwq | VPHADDWQ xmm1, xmm2/m128 | XOP | XOP | Adds adjacent words to quadwords. |
| vplzcntd | VPLZCNTD zmm1 {k1}, zmm2/m512 | EVEX | AVX-512CD | Counts leading zeros for each doubleword element. |
| vplzcntq | VPLZCNTQ zmm1 {k1}, zmm2/m512 | EVEX | AVX-512CD | Counts leading zeros for each quadword element. |
| vpmacssww | VPMACSSWW xmm1, xmm2, xmm3, xmm4 | XOP | XOP | Multiply-accumulate signed words with saturation. |
| vpmacsww | VPMACSWW xmm1, xmm2, xmm3, xmm4 | XOP | XOP | Multiply-accumulate signed words. |
| vpmadd52huq | VPMADD52HUQ zmm1 {k1}, zmm2, zmm3/m512 | EVEX | AVX-512-IFMA | Fused multiply-add for 52-bit integers (High 52 bits). |
| vpmadd52luq | VPMADD52LUQ zmm1 {k1}, zmm2, zmm3/m512 | EVEX | AVX-512-IFMA | Fused multiply-add for 52-bit integers (Low 52 bits). |
| vpmaxsq | VPMAXSQ zmm1 {k1}, zmm2, zmm3/m512 | EVEX | AVX-512F | Returns maximum of signed 64-bit integers. |
| vpmaxuq | VPMAXUQ zmm1 {k1}, zmm2, zmm3/m512 | EVEX | AVX-512F | Returns maximum of unsigned 64-bit integers. |
| vpminsq | VPMINSQ zmm1 {k1}, zmm2, zmm3/m512 | EVEX | AVX-512F | Returns minimum of signed 64-bit integers. |
| vpminuq | VPMINUQ zmm1 {k1}, zmm2, zmm3/m512 | EVEX | AVX-512F | Returns minimum of unsigned 64-bit integers. |
| vpmovb2m | VPMOVB2M k1, zmm1 | EVEX | AVX-512BW | Moves byte integer mask from ZMM to k-register. |
| vpmovd2m | VPMOVD2M k1, zmm1 | EVEX | AVX-512DQ | Moves doubleword integer mask from ZMM to k-register. |
| vpmovdb | VPMOVDB xmm1/m128 {k1}, zmm2 | EVEX | AVX-512F | Down-converts 32-bit integers to 8-bit. |
| vpmovm2b | VPMOVM2B zmm1, k1 | EVEX | AVX-512BW | Expands k-register bits to byte elements in ZMM. |
| vpmovm2d | VPMOVM2D zmm1, k1 | EVEX | AVX-512DQ | Expands k-register bits to doubleword elements in ZMM. |
| vpmovm2q | VPMOVM2Q zmm1, k1 | EVEX | AVX-512DQ | Expands k-register bits to quadword elements in ZMM. |
| vpmovm2w | VPMOVM2W zmm1, k1 | EVEX | AVX-512BW | Expands k-register bits to word elements in ZMM. |
| vpmovq2m | VPMOVQ2M k1, zmm1 | EVEX | AVX-512DQ | Moves quadword integer mask from ZMM to k-register. |
| vpmovsqb | VPMOVSQB xmm1/m128 {k1}, zmm2 | EVEX | AVX-512F | Down-converts 64-bit integers to 8-bit signed saturate. |
| vpmovswb | VPMOVSWB xmm1/m128 {k1}, zmm2 | EVEX | AVX-512F | Down-converts 16-bit integers to 8-bit signed saturate. |
| vpmovusdb | VPMOVUSDB xmm1/m128 {k1}, zmm2 | EVEX | AVX-512F | Down-converts 32-bit to 8-bit with unsigned saturation. |
| vpmovusqb | VPMOVUSQB xmm1/m128 {k1}, zmm2 | EVEX | AVX-512F | Down-converts 64-bit integers to 8-bit unsigned saturate. |
| vpmovuswb | VPMOVUSWB xmm1/m128 {k1}, zmm2 | EVEX | AVX-512F | Down-converts 16-bit integers to 8-bit unsigned saturate. |
| vpmovw2m | VPMOVW2M k1, zmm1 | EVEX | AVX-512BW | Moves word integer mask from ZMM to k-register. |
| vpmulld | VPMULLD ymm1, ymm2, ymm3/m256 | VEX | AVX2 | Multiplies 8 integers (256-bit). |
| vpmullq | VPMULLQ zmm1 {k1}, zmm2, zmm3/m512 | EVEX | AVX-512DQ | Multiplies 64-bit integers and keeps low 64-bit result. |
| vpmultishiftqb | VPMULTISHIFTQB zmm1 {k1}, zmm2, zmm3/m512 | EVEX | AVX-512-VBMI | Selects bytes from each 64-bit element based on shift control. |
| vpopcntb | VPOPCNTB zmm1 {k1}, zmm2/m512 | EVEX | AVX-512-BITALG | Counts set bits in each byte. |
| vpopcntd | VPOPCNTD zmm1 {k1}, zmm2/m512 | EVEX | AVX-512-VPOPCNTDQ | Counts set bits in each doubleword element. |
| vpopcntq | VPOPCNTQ zmm1 {k1}, zmm2/m512 | EVEX | AVX-512-VPOPCNTDQ | Counts set bits in each quadword element. |
| vpopcntw | VPOPCNTW zmm1 {k1}, zmm2/m512 | EVEX | AVX-512-BITALG | Counts set bits in each word element. |
| vprolq | VPROLQ zmm1 {k1}, zmm2, imm8 | EVEX | AVX-512F | Rotates 64-bit integers left. |
| vprolvd | VPROLVD zmm1 {k1}, zmm2, zmm3/m512 | EVEX | AVX-512F | Rotates doublewords left by amounts in second vector. |
| vprolvq | VPROLVQ zmm1 {k1}, zmm2, zmm3/m512 | EVEX | AVX-512F | Rotates quadwords left by amounts in second vector. |
| vprorq | VPRORQ zmm1 {k1}, zmm2, imm8 | EVEX | AVX-512F | Rotates 64-bit integers right. |
| vprorvd | VPRORVD zmm1 {k1}, zmm2, zmm3/m512 | EVEX | AVX-512F | Rotates doublewords right by amounts in second vector. |
| vprorvq | VPRORVQ zmm1 {k1}, zmm2, zmm3/m512 | EVEX | AVX-512F | Rotates quadwords right by amounts in second vector. |
| vprotb | VPROTB xmm1, xmm2/m128, imm8 | XOP | XOP | Rotates bytes in XMM register. |
| vprotd | VPROTD xmm1, xmm2/m128, imm8 | XOP | XOP | Rotates doublewords in XMM register. |
| vprotq | VPROTQ xmm1, xmm2/m128, imm8 | XOP | XOP | Rotates quadwords in XMM register. |
| vprotw | VPROTW xmm1, xmm2/m128, imm8 | XOP | XOP | Rotates words in XMM register. |
| vpshab | VPSHAB xmm1, xmm2/m128, xmm3 | XOP | XOP | Shifts bytes arithmetically. |
| vpshad | VPSHAD xmm1, xmm2/m128, xmm3 | XOP | XOP | Shifts doublewords arithmetically. |
| vpshaq | VPSHAQ xmm1, xmm2/m128, xmm3 | XOP | XOP | Shifts quadwords arithmetically. |
| vpshaw | VPSHAW xmm1, xmm2/m128, xmm3 | XOP | XOP | Shifts words arithmetically. |
| vpshldd | VPSHLDD zmm1 {k1}, zmm2, zmm3/m512, imm8 | EVEX | AVX-512-VBMI2 | Funnel shift left of doublewords. |
| vpshldq | VPSHLDQ zmm1 {k1}, zmm2, zmm3/m512, imm8 | EVEX | AVX-512-VBMI2 | Funnel shift left of quadwords. |
| vpshldw | VPSHLDW zmm1 {k1}, zmm2, zmm3/m512, imm8 | EVEX | AVX-512-VBMI2 | Funnel shift left of words. |
| vpshrdd | VPSHRDD zmm1 {k1}, zmm2, zmm3/m512, imm8 | EVEX | AVX-512-VBMI2 | Funnel shift right of doublewords. |
| vpshrdq | VPSHRDQ zmm1 {k1}, zmm2, zmm3/m512, imm8 | EVEX | AVX-512-VBMI2 | Funnel shift right of quadwords. |
| vpshrdw | VPSHRDW zmm1 {k1}, zmm2, zmm3/m512, imm8 | EVEX | AVX-512-VBMI2 | Funnel shift right of words. |
| vpshufb | VPSHUFB ymm1, ymm2, ymm3/m256 | VEX | AVX2 | Shuffles 32 bytes based on indices. |
| vpshufbitqmb | VPSHUFBITQMB k1 {k2}, zmm2, zmm3/m512 | EVEX | AVX-512-BITALG | Extracts bits from bytes and packs into a mask register. |
| vpsllvd | VPSLLVD ymm1, ymm2, ymm3/m256 | AVX2 | AVX2 | Shifts doublewords left by individual counts. |
| vpsllvq | VPSLLVQ ymm1, ymm2, ymm3/m256 | AVX2 | AVX2 | Shifts quadwords left by individual counts. |
| vpsravd | VPSRAVD ymm1, ymm2, ymm3/m256 | AVX2 | AVX2 | Shifts doublewords right arithmetic by individual counts. |
| vpsravq | VPSRAVQ zmm1 {k1}, zmm2, zmm3/m512 | EVEX | AVX-512F | Shifts quadwords right arithmetic by individual counts. |
| vpsrlvd | VPSRLVD ymm1, ymm2, ymm3/m256 | AVX2 | AVX2 | Shifts doublewords right logical by individual counts. |
| vpsrlvq | VPSRLVQ ymm1, ymm2, ymm3/m256 | AVX2 | AVX2 | Shifts quadwords right logical by individual counts. |
| vpsubd | VPSUBD ymm1, ymm2, ymm3/m256 | VEX | AVX2 | Subtracts 8 integers (256-bit). |
| vpternlogd | VPTERNLOGD zmm1 {k1}, zmm2, zmm3/m512, imm8 | EVEX | AVX-512F | Performs one of 256 logical operations on 3 inputs. |
| vpternlogq | VPTERNLOGQ zmm1 {k1}, zmm2, zmm3/m512, imm8 | EVEX | AVX-512F | Performs one of 256 logical operations on 3 quadwords. |
| vptestmb | VPTESTMB k1 {k2}, zmm2, zmm3/m512 | EVEX | AVX-512BW | Tests byte integers and sets k-register mask. |
| vptestmd | VPTESTMD k1 {k2}, zmm2, zmm3/m512 | EVEX | AVX-512F | Tests doubleword integers and sets k-register mask. |
| vptestmq | VPTESTMQ k1 {k2}, zmm2, zmm3/m512 | EVEX | AVX-512F | Tests quadword integers and sets k-register mask. |
| vptestmw | VPTESTMW k1 {k2}, zmm2, zmm3/m512 | EVEX | AVX-512BW | Tests word integers and sets k-register mask. |