AVX-512F Instructions
64 x86 instructions in this extension - click any row for encoding, pseudocode, and full documentation.
| Mnemonic | Syntax | Format | Summary |
|---|---|---|---|
| kshiftlw | KSHIFTLW k1, k2, imm8 | EVEX | Logically shifts 16-bit mask left. |
| kshiftrw | KSHIFTRW k1, k2, imm8 | EVEX | Logically shifts 16-bit mask right. |
| ktestw | KTESTW k1, k2 | EVEX | ANDs 16-bit masks and sets EFLAGS (ZF/CF). |
| vaddss | VADDSS xmm1 {k1}, xmm2, xmm3/m32 | EVEX | Adds scalar single precision (EVEX encoded with masking). |
| valignd | VALIGND zmm1 {k1}, zmm2, zmm3/m512, imm8 | EVEX | Extracts 512-bits from two concatenated ZMMs shifted by count. |
| valignq | VALIGNQ zmm1 {k1}, zmm2, zmm3/m512, imm8 | EVEX | Extracts 512-bits from two concatenated ZMMs shifted by count. |
| vcompresspd | VCOMPRESSPD m512 {k1}, zmm1 | EVEX | Compresses active elements from ZMM to memory. |
| vcompressps | VCOMPRESSPS m512 {k1}, zmm1 | EVEX | Compresses active elements from ZMM to memory. |
| vcvtpd2udq | VCVTPD2UDQ ymm1 {k1}, zmm2/m512 | EVEX | Converts 64-bit doubles to unsigned 32-bit integers. |
| vcvtpd2uqq | VCVTPD2UQ zmm1 {k1}, zmm2/m512 | EVEX | Converts 64-bit doubles to unsigned 64-bit integers. |
| vcvtps2udq | VCVTPS2UDQ zmm1 {k1}, zmm2/m512 | EVEX | Converts 32-bit floats to unsigned 32-bit integers. |
| vcvtps2uqq | VCVTPS2UQ zmm1 {k1}, ymm2/m256 | EVEX | Converts 32-bit floats to unsigned 64-bit integers. |
| vcvtudq2pd | VCVTUDQ2PD zmm1 {k1}, ymm2/m256 | EVEX | Converts unsigned 32-bit integers to 64-bit doubles. |
| vcvtudq2ps | VCVTUDQ2PS zmm1 {k1}, zmm2/m512 | EVEX | Converts unsigned int32 to float. |
| vexpandpd | VEXPANDPD zmm1 {k1}, m512 | EVEX | Expands data from memory into sparse locations in ZMM. |
| vexpandps | VEXPANDPS zmm1 {k1}, m512 | EVEX | Expands data from memory into sparse locations in ZMM. |
| vfixupimmpd | VFIXUPIMMPD zmm1 {k1}, zmm2, zmm3/m512, imm8 | EVEX | Fixes special cases (NaN, Inf) using a table. |
| vfixupimmps | VFIXUPIMMPS zmm1 {k1}, zmm2, zmm3/m512, imm8 | EVEX | Fixes special cases (NaN, Inf) using a table (Float32). |
| vfixupimmss | VFIXUPIMMSS xmm1 {k1}, xmm2, xmm3/m32, imm8 | EVEX | Fixes special cases (NaN, Inf) in low float using table. |
| vgetexppd | VGETEXPPD zmm1 {k1}, zmm2/m512 | EVEX | Extracts exponents from doubles as float values. |
| vgetexpss | VGETEXPSS xmm1 {k1}, xmm2, xmm3/m32 | EVEX | Extracts exponent from low float. |
| vgetmantpd | VGETMANTPD zmm1 {k1}, zmm2/m512, imm8 | EVEX | Extracts mantissas from doubles. |
| vgetmantsd | VGETMANTSD xmm1 {k1}, xmm2, xmm3/m64, imm8 | EVEX | Extracts mantissa from low double. |
| vmulss | VMULSS xmm1 {k1}, xmm2, xmm3/m32 | EVEX | Multiplies scalar single precision (EVEX encoded with masking). |
| vpabsd | VPABSD zmm1 {k1}, zmm2/m512 | EVEX | Computes absolute value of 32-bit integers. |
| vpabsq | VPABSQ zmm1 {k1}, zmm2/m512 | EVEX | Computes absolute value of 64-bit integers. |
| vpcmpd | VPCMPD k1 {k2}, zmm2, zmm3/m512, imm8 | EVEX | Compares doublewords and stores result in k-register mask. |
| vpcmpq | VPCMPQ k1 {k2}, zmm2, zmm3/m512, imm8 | EVEX | Compares quadwords and stores result in k-register mask. |
| vpcmpud | VPCMPUD k1 {k2}, zmm2, zmm3/m512, imm8 | EVEX | Compares unsigned doublewords and stores result in k-register. |
| vpcmpuq | VPCMPUQ k1 {k2}, zmm2, zmm3/m512, imm8 | EVEX | Compares unsigned quadwords and stores result in k-register. |
| vpermi2d | VPERMI2D zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Shuffles doublewords from two ZMM registers into destination. |
| vpermi2q | VPERMI2Q zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Shuffles quadwords from two ZMM registers into destination. |
| vpermt2d | VPERMT2D zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Shuffles 2 sources, overwriting the index register. |
| vpermt2q | VPERMT2Q zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Shuffles 2 sources, overwriting the index register (Quadword). |
| vpmaxsq | VPMAXSQ zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Returns maximum of signed 64-bit integers. |
| vpmaxuq | VPMAXUQ zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Returns maximum of unsigned 64-bit integers. |
| vpminsq | VPMINSQ zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Returns minimum of signed 64-bit integers. |
| vpminuq | VPMINUQ zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Returns minimum of unsigned 64-bit integers. |
| vpmovdb | VPMOVDB xmm1/m128 {k1}, zmm2 | EVEX | Down-converts 32-bit integers to 8-bit. |
| vpmovsqb | VPMOVSQB xmm1/m128 {k1}, zmm2 | EVEX | Down-converts 64-bit integers to 8-bit signed saturate. |
| vpmovswb | VPMOVSWB xmm1/m128 {k1}, zmm2 | EVEX | Down-converts 16-bit integers to 8-bit signed saturate. |
| vpmovusdb | VPMOVUSDB xmm1/m128 {k1}, zmm2 | EVEX | Down-converts 32-bit to 8-bit with unsigned saturation. |
| vpmovusqb | VPMOVUSQB xmm1/m128 {k1}, zmm2 | EVEX | Down-converts 64-bit integers to 8-bit unsigned saturate. |
| vpmovuswb | VPMOVUSWB xmm1/m128 {k1}, zmm2 | EVEX | Down-converts 16-bit integers to 8-bit unsigned saturate. |
| vprolq | VPROLQ zmm1 {k1}, zmm2, imm8 | EVEX | Rotates 64-bit integers left. |
| vprolvd | VPROLVD zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Rotates doublewords left by amounts in second vector. |
| vprolvq | VPROLVQ zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Rotates quadwords left by amounts in second vector. |
| vprorq | VPRORQ zmm1 {k1}, zmm2, imm8 | EVEX | Rotates 64-bit integers right. |
| vprorvd | VPRORVD zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Rotates doublewords right by amounts in second vector. |
| vprorvq | VPRORVQ zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Rotates quadwords right by amounts in second vector. |
| vpsravq | VPSRAVQ zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Shifts quadwords right arithmetic by individual counts. |
| vpternlogd | VPTERNLOGD zmm1 {k1}, zmm2, zmm3/m512, imm8 | EVEX | Performs one of 256 logical operations on 3 inputs. |
| vpternlogq | VPTERNLOGQ zmm1 {k1}, zmm2, zmm3/m512, imm8 | EVEX | Performs one of 256 logical operations on 3 quadwords. |
| vptestmd | VPTESTMD k1 {k2}, zmm2, zmm3/m512 | EVEX | Tests doubleword integers and sets k-register mask. |
| vptestmq | VPTESTMQ k1 {k2}, zmm2, zmm3/m512 | EVEX | Tests quadword integers and sets k-register mask. |
| vrcp14ps | VRCP14PS zmm1 {k1}, zmm2/m512 | EVEX | Approximate 1/x with 2^-14 error. |
| vrndscalepd | VRNDSCALEPD zmm1 {k1}, zmm2/m512, imm8 | EVEX | Rounds doubles to integer values using imm8 control. |
| vrsqrt14ps | VRSQRT14PS zmm1 {k1}, zmm2/m512 | EVEX | Approximate 1/sqrt(x) with 2^-14 error. |
| vscalefpd | VSCALEFPD zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Scales doubles by exponents (x * 2^n). |
| vscatterdpd | VSCATTERDPD [base+zmm_idx*scale] {k1}, zmm1 | EVEX | Stores doubles to non-contiguous memory locations. |
| vscatterdps | VSCATTERDPS [base+zmm_idx*scale] {k1}, zmm1 | EVEX | Stores floats to non-contiguous memory locations. |
| vscatterqpd | VSCATTERQPD [base+zmm_idx*scale] {k1}, zmm1 | EVEX | Stores doubles using 64-bit indices. |
| vscatterqps | VSCATTERQPS [base+zmm_idx*scale] {k1}, zmm1 | EVEX | Stores floats using 64-bit indices. |
| vshuff32x4 | VSHUFF32X4 zmm1 {k1}, zmm2, zmm3/m512, imm8 | EVEX | Shuffles 128-bit blocks of single-precision floats. |