ADDPD--Add Packed Double-Precision Floating-Point Values. ADDPD xmm1,xmm2/m128 66 0F 58 /r SSE2 Add packed double-precision floating-point values from xmm2/mem to xmm1 and store result in xmm1. VADDPD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG 58 /r AVX Add packed double-precision floating-point values from xmm3/mem to xmm2 and store result in xmm1. VADDPD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F.WIG 58 /r AVX Add packed double-precision floating-point values from ymm3/mem to ymm2 and store result in ymm1. VADDPD xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F.W1 58 /r AVX512VL AVX512F Add packed double-precision floating-point values from xmm3/m128/m64bcst to xmm2 and store result in xmm1 with writemask k1. VADDPD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F.W1 58 /r AVX512VL AVX512F Add packed double-precision floating-point values from ymm3/m256/m64bcst to ymm2 and store result in ymm1 with writemask k1. VADDPD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst{er} EVEX.NDS.512.66.0F.W1 58 /r AVX512F Add packed double-precision floating-point values from zmm3/m512/m64bcst to zmm2 and store result in zmm1 with writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA ADDPS--Add Packed Single-Precision Floating-Point Values. ADDPS xmm1,xmm2/m128 0F 58 /r SSE Add packed single-precision floating-point values from xmm2/m128 to xmm1 and store result in xmm1. VADDPS xmm1,xmm2,xmm3/m128 VEX.NDS.128.0F.WIG 58 /r AVX Add packed single-precision floating-point values from xmm3/m128 to xmm2 and store result in xmm1. VADDPS ymm1,ymm2,ymm3/m256 VEX.NDS.256.0F.WIG 58 /r AVX Add packed single-precision floating-point values from ymm3/m256 to ymm2 and store result in ymm1. VADDPS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.0F.W0 58 /r AVX512VL AVX512F Add packed single-precision floating-point values from xmm3/m128/m32bcst to xmm2 and store result in xmm1 with writemask k1. VADDPS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.0F.W0 58 /r AVX512VL AVX512F Add packed single-precision floating-point values from ymm3/m256/m32bcst to ymm2 and store result in ymm1 with writemask k1. VADDPS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst {er} EVEX.NDS.512.0F.W0 58 /r AVX512F Add packed single-precision floating-point values from zmm3/m512/m32bcst to zmm2 and store result in zmm1 with writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA ADDSD--Add Scalar Double-Precision Floating-Point Values. ADDSD xmm1,xmm2/m64 F2 0F 58 /r SSE2 Add the low double-precision floating-point value from xmm2/mem to xmm1 and store the result in xmm1. VADDSD xmm1,xmm2,xmm3/m64 VEX.NDS.128.F2.0F.WIG 58 /r AVX Add the low double-precision floating-point value from xmm3/mem to xmm2 and store the result in xmm1. VADDSD xmm1 {k1}{z},xmm2,xmm3/m64{er} EVEX.NDS.LIG.F2.0F.W1 58 /r AVX512F Add the low double-precision floating-point value from xmm3/m64 to xmm2 and store the result in xmm1 with writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA ADDSS--Add Scalar Single-Precision Floating-Point Values. ADDSS xmm1,xmm2/m32 F3 0F 58 /r SSE Add the low single-precision floating-point value from xmm2/mem to xmm1 and store the result in xmm1. VADDSS xmm1,xmm2,xmm3/m32 VEX.NDS.128.F3.0F.WIG 58 /r AVX Add the low single-precision floating-point value from xmm3/mem to xmm2 and store the result in xmm1. VADDSS xmm1{k1}{z},xmm2,xmm3/m32{er} EVEX.NDS.LIG.F3.0F.W0 58 /r AVX512F Add the low single-precision floating-point value from xmm3/m32 to xmm2 and store the result in xmm1with writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA VALIGND/VALIGNQ--Align Doubleword/Quadword Vectors. VALIGND xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst,imm8 EVEX.NDS.128.66.0F3A.W0 03 /r ib AVX512VL AVX512F Shift right and merge vectors xmm2 and xmm3/m128/m32bcst with double-word granularity using imm8 as number of elements to shift, and store the final result in xmm1, under writemask. VALIGNQ xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst,imm8 EVEX.NDS.128.66.0F3A.W1 03 /r ib AVX512VL AVX512F Shift right and merge vectors xmm2 and xmm3/m128/m64bcst with quad-word granularity using imm8 as number of elements to shift, and store the final result in xmm1, under writemask. VALIGND ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst,imm8 EVEX.NDS.256.66.0F3A.W0 03 /r ib AVX512VL AVX512F Shift right and merge vectors ymm2 and ymm3/m256/m32bcst with double-word granularity using imm8 as number of elements to shift, and store the final result in ymm1, under writemask. VALIGNQ ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst,imm8 EVEX.NDS.256.66.0F3A.W1 03 /r ib AVX512VL AVX512F Shift right and merge vectors ymm2 and ymm3/m256/m64bcst with quad-word granularity using imm8 as number of elements to shift, and store the final result in ymm1, under writemask. VALIGND zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst,imm8 EVEX.NDS.512.66.0F3A.W0 03 /r ib AVX512F Shift right and merge vectors zmm2 and zmm3/m512/m32bcst with double-word granularity using imm8 as number of elements to shift, and store the final result in zmm1, under writemask. VALIGNQ zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst,imm8 EVEX.NDS.512.66.0F3A.W1 03 /r ib AVX512F Shift right and merge vectors zmm2 and zmm3/m512/m64bcst with quad-word granularity using imm8 as number of elements to shift, and store the final result in zmm1, under writemask. ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA VBLENDMPD/VBLENDMPS--Blend Float64/Float32 Vectors Using an OpMask Control. VBLENDMPD xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F38.W1 65 /r AVX512VL AVX512F Blend double-precision vector xmm2 and double-precision vector xmm3/m128/m64bcst and store the result in xmm1, under control mask. VBLENDMPD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F38.W1 65 /r AVX512VL AVX512F Blend double-precision vector ymm2 and double-precision vector ymm3/m256/m64bcst and store the result in ymm1, under control mask. VBLENDMPD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.NDS.512.66.0F38.W1 65 /r AVX512F Blend double-precision vector zmm2 and double-precision vector zmm3/m512/m64bcst and store the result in zmm1, under control mask. VBLENDMPS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F38.W0 65 /r AVX512VL AVX512F Blend single-precision vector xmm2 and single-precision vector xmm3/m128/m32bcst and store the result in xmm1, under control mask. VBLENDMPS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F38.W0 65 /r AVX512VL AVX512F Blend single-precision vector ymm2 and single-precision vector ymm3/m256/m32bcst and store the result in ymm1, under control mask. VBLENDMPS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst EVEX.NDS.512.66.0F38.W0 65 /r AVX512F Blend single-precision vector zmm2 and single-precision vector zmm3/m512/m32bcst using k1 as select control and store the result in zmm1. ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA VPBLENDMB/VPBLENDMW--Blend Byte/Word Vectors Using an Opmask Control. VPBLENDMB xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F38.W0 66 /r AVX512VL AVX512BW Blend byte integer vector xmm2 and byte vector xmm3/m128 and store the result in xmm1, under control mask. VPBLENDMB ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F38.W0 66 /r AVX512VL AVX512BW Blend byte integer vector ymm2 and byte vector ymm3/m256 and store the result in ymm1, under control mask. VPBLENDMB zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F38.W0 66 /r AVX512BW Blend byte integer vector zmm2 and byte vector zmm3/m512 and store the result in zmm1, under control mask. VPBLENDMW xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F38.W1 66 /r AVX512VL AVX512BW Blend word integer vector xmm2 and word vector xmm3/m128 and store the result in xmm1, under control mask. VPBLENDMW ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F38.W1 66 /r AVX512VL AVX512BW Blend word integer vector ymm2 and word vector ymm3/m256 and store the result in ymm1, under control mask. VPBLENDMW zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F38.W1 66 /r AVX512BW Blend word integer vector zmm2 and word vector zmm3/m512 and store the result in zmm1, under control mask. ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA VPBLENDMD/VPBLENDMQ--Blend Int32/Int64 Vectors Using an OpMask Control. VPBLENDMD xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F38.W0 64 /r AVX512VL AVX512F Blend doubleword integer vector xmm2 and doubleword vector xmm3/m128/m32bcst and store the result in xmm1, under control mask. VPBLENDMD ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F38.W0 64 /r AVX512VL AVX512F Blend doubleword integer vector ymm2 and doubleword vector ymm3/m256/m32bcst and store the result in ymm1, under control mask. VPBLENDMD zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst EVEX.NDS.512.66.0F38.W0 64 /r AVX512F Blend doubleword integer vector zmm2 and doubleword vector zmm3/m512/m32bcst and store the result in zmm1, under control mask. VPBLENDMQ xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F38.W1 64 /r AVX512VL AVX512F Blend quadword integer vector xmm2 and quadword vector xmm3/m128/m64bcst and store the result in xmm1, under control mask. VPBLENDMQ ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F38.W1 64 /r AVX512VL AVX512F Blend quadword integer vector ymm2 and quadword vector ymm3/m256/m64bcst and store the result in ymm1, under control mask. VPBLENDMQ zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.NDS.512.66.0F38.W1 64 /r AVX512F Blend quadword integer vector zmm2 and quadword vector zmm3/m512/m64bcst and store the result in zmm1, under control mask. ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA ANDPD--Bitwise Logical AND of Packed Double Precision Floating-Point Values. ANDPD xmm1,xmm2/m128 66 0F 54 /r SSE2 Return the bitwise logical AND of packed double-precision floating-point values in xmm1 and xmm2/mem. VANDPD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F 54 /r AVX Return the bitwise logical AND of packed double-precision floating-point values in xmm2 and xmm3/mem. VANDPD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F 54 /r AVX Return the bitwise logical AND of packed double-precision floating-point values in ymm2 and ymm3/mem. VANDPD xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F.W1 54 /r AVX512VL AVX512DQ Return the bitwise logical AND of packed double-precision floating-point values in xmm2 and xmm3/m128/m64bcst subject to writemask k1. VANDPD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F.W1 54 /r AVX512VL AVX512DQ Return the bitwise logical AND of packed double-precision floating-point values in ymm2 and ymm3/m256/m64bcst subject to writemask k1. VANDPD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.NDS.512.66.0F.W1 54 /r AVX512DQ Return the bitwise logical AND of packed double-precision floating-point values in zmm2 and zmm3/m512/m64bcst subject to writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA ANDPS--Bitwise Logical AND of Packed Single Precision Floating-Point Values. ANDPS xmm1,xmm2/m128 0F 54 /r SSE Return the bitwise logical AND of packed single-precision floating-point values in xmm1 and xmm2/mem. VANDPS xmm1,xmm2,xmm3/m128 VEX.NDS.128.0F 54 /r AVX Return the bitwise logical AND of packed single-precision floating-point values in xmm2 and xmm3/mem. VANDPS ymm1,ymm2,ymm3/m256 VEX.NDS.256.0F 54 /r AVX Return the bitwise logical AND of packed single-precision floating-point values in ymm2 and ymm3/mem. VANDPS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.0F.W0 54 /r AVX512VL AVX512DQ Return the bitwise logical AND of packed single-precision floating-point values in xmm2 and xmm3/m128/m32bcst subject to writemask k1. VANDPS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.0F.W0 54 /r AVX512VL AVX512DQ Return the bitwise logical AND of packed single-precision floating-point values in ymm2 and ymm3/m256/m32bcst subject to writemask k1. VANDPS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst EVEX.NDS.512.0F.W0 54 /r AVX512DQ Return the bitwise logical AND of packed single-precision floating-point values in zmm2 and zmm3/m512/m32bcst subject to writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA ANDNPD--Bitwise Logical AND NOT of Packed Double Precision Floating-Point Values. ANDNPD xmm1,xmm2/m128 66 0F 55 /r SSE2 Return the bitwise logical AND NOT of packed doubleprecision floating-point values in xmm1 and xmm2/mem. VANDNPD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F 55 /r AVX Return the bitwise logical AND NOT of packed doubleprecision floating-point values in xmm2 and xmm3/mem. VANDNPD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F 55/r AVX Return the bitwise logical AND NOT of packed doubleprecision floating-point values in ymm2 and ymm3/mem. VANDNPD xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F.W1 55 /r AVX512VL AVX512DQ Return the bitwise logical AND NOT of packed doubleprecision floating-point values in xmm2 and xmm3/m128/m64bcst subject to writemask k1. VANDNPD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F.W1 55 /r AVX512VL AVX512DQ Return the bitwise logical AND NOT of packed doubleprecision floating-point values in ymm2 and ymm3/m256/m64bcst subject to writemask k1. VANDNPD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.NDS.512.66.0F.W1 55 /r AVX512DQ Return the bitwise logical AND NOT of packed doubleprecision floating-point values in zmm2 and zmm3/m512/m64bcst subject to writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA ANDNPS--Bitwise Logical AND NOT of Packed Single Precision Floating-Point Values. ANDNPS xmm1,xmm2/m128 0F 55 /r SSE Return the bitwise logical AND NOT of packed single-precision floating-point values in xmm1 and xmm2/mem. VANDNPS xmm1,xmm2,xmm3/m128 VEX.NDS.128.0F 55 /r AVX Return the bitwise logical AND NOT of packed single-precision floating-point values in xmm2 and xmm3/mem. VANDNPS ymm1,ymm2,ymm3/m256 VEX.NDS.256.0F 55 /r AVX Return the bitwise logical AND NOT of packed single-precision floating-point values in ymm2 and ymm3/mem. VANDPS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.0F.W0 54 /r AVX512VL AVX512DQ Return the bitwise logical AND of packed single-precision floating-point values in xmm2 and xmm3/m128/m32bcst subject to writemask k1. VANDPS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.0F.W0 54 /r AVX512VL AVX512DQ Return the bitwise logical AND of packed single-precision floating-point values in ymm2 and ymm3/m256/m32bcst subject to writemask k1. VANDPS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst EVEX.NDS.512.0F.W0 54 /r AVX512DQ Return the bitwise logical AND of packed single-precision floating-point values in zmm2 and zmm3/m512/m32bcst subject to writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA VBROADCAST--Load with Broadcast Floating-Point Data. VBROADCASTSS xmm1,m32 VEX.128.66.0F38.W0 18 /r AVX Broadcast single-precision floating-point element in mem to four locations in xmm1. VBROADCASTSS ymm1,m32 VEX.256.66.0F38.W0 18 /r AVX Broadcast single-precision floating-point element in mem to eight locations in ymm1. VBROADCASTSD ymm1,m64 VEX.256.66.0F38.W0 19 /r AVX Broadcast double-precision floating-point element in mem to four locations in ymm1. VBROADCASTF128 ymm1,m128 VEX.256.66.0F38.W0 1A /r AVX Broadcast 128 bits of floating-point data in mem to low and high 128-bits in ymm1. VBROADCASTSD ymm1 {k1}{z},xmm2/m64 EVEX.256.66.0F38.W1 19 /r AVX512VL AVX512F Broadcast low double-precision floating-point element in xmm2/m64 to four locations in ymm1 using writemask k1. VBROADCASTSD zmm1 {k1}{z},xmm2/m64 EVEX.512.66.0F38.W1 19 /r AVX512F Broadcast low double-precision floating-point element in xmm2/m64 to eight locations in zmm1 using writemask k1. VBROADCASTF32X2 ymm1 {k1}{z},xmm2/m64 EVEX.256.66.0F38.W0 19 /r AVX512VL AVX512DQ Broadcast two single-precision floating-point elements in xmm2/m64 to locations in ymm1 using writemask k1. VBROADCASTF32X2 zmm1 {k1}{z},xmm2/m64 EVEX.512.66.0F38.W0 19 /r AVX512DQ Broadcast two single-precision floating-point elements in xmm2/m64 to locations in zmm1 using writemask k1. VBROADCASTSS xmm1 {k1}{z},xmm2/m32 EVEX.128.66.0F38.W0 18 /r AVX512VL AVX512F Broadcast low single-precision floating-point element in xmm2/m32 to all locations in xmm1 using writemask k1. VBROADCASTSS ymm1 {k1}{z},xmm2/m32 EVEX.256.66.0F38.W0 18 /r AVX512VL AVX512F Broadcast low single-precision floating-point element in xmm2/m32 to all locations in ymm1 using writemask k1. VBROADCASTSS zmm1 {k1}{z},xmm2/m32 EVEX.512.66.0F38.W0 18 /r AVX512F Broadcast low single-precision floating-point element in xmm2/m32 to all locations in zmm1 using writemask k1. VBROADCASTF32X4 ymm1 {k1}{z},m128 EVEX.256.66.0F38.W0 1A /r AVX512VL AVX512F Broadcast 128 bits of 4 single-precision floating-point data in mem to locations in ymm1 using writemask k1. VBROADCASTF32X4 zmm1 {k1}{z},m128 EVEX.512.66.0F38.W0 1A /r AVX512F Broadcast 128 bits of 4 single-precision floating-point data in mem to locations in zmm1 using writemask k1. VBROADCASTF64X2 ymm1 {k1}{z},m128 EVEX.256.66.0F38.W1 1A /r AVX512VL AVX512DQ Broadcast 128 bits of 2 double-precision floating-point data in mem to locations in ymm1 using writemask k1. VBROADCASTF64X2 zmm1 {k1}{z},m128 EVEX.512.66.0F38.W1 1A /r AVX512DQ Broadcast 128 bits of 2 double-precision floating-point data in mem to locations in zmm1 using writemask k1. VBROADCASTF32X8 zmm1 {k1}{z},m256 EVEX.512.66.0F38.W0 1B /r AVX512DQ Broadcast 256 bits of 8 single-precision floating-point data in mem to locations in zmm1 using writemask k1. VBROADCASTF64X4 zmm1 {k1}{z},m256 EVEX.512.66.0F38.W1 1B /r AVX512F Broadcast 256 bits of 4 double-precision floating-point data in mem to locations in zmm1 using writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA reg(w) :ModRM:r/m(r) NA NA NA reg(w) :ModRM:r/m(r) NA NA NA reg(w) :ModRM:r/m(r) NA NA NA reg(w) :ModRM:r/m(r) NA NA NA VPBROADCASTB/W/D/Q--Load with Broadcast Integer Data from General Purpose Register. VPBROADCASTB xmm1 {k1}{z},reg EVEX.128.66.0F38.W0 7A /r AVX512VL AVX512BW Broadcast an 8-bit value from a GPR to all bytes in the 128-bit destination subject to writemask k1. VPBROADCASTB ymm1 {k1}{z},reg EVEX.256.66.0F38.W0 7A /r AVX512VL AVX512BW Broadcast an 8-bit value from a GPR to all bytes in the 256-bit destination subject to writemask k1. VPBROADCASTB zmm1 {k1}{z},reg EVEX.512.66.0F38.W0 7A /r AVX512BW Broadcast an 8-bit value from a GPR to all bytes in the 512-bit destination subject to writemask k1. VPBROADCASTW xmm1 {k1}{z},reg EVEX.128.66.0F38.W0 7B /r AVX512VL AVX512BW Broadcast a 16-bit value from a GPR to all words in the 128-bit destination subject to writemask k1. VPBROADCASTW ymm1 {k1}{z},reg EVEX.256.66.0F38.W0 7B /r AVX512VL AVX512BW Broadcast a 16-bit value from a GPR to all words in the 256-bit destination subject to writemask k1. VPBROADCASTW zmm1 {k1}{z},reg EVEX.512.66.0F38.W0 7B /r AVX512BW Broadcast a 16-bit value from a GPR to all words in the 512-bit destination subject to writemask k1. VPBROADCASTD xmm1 {k1}{z},r32 EVEX.128.66.0F38.W0 7C /r AVX512VL AVX512F Broadcast a 32-bit value from a GPR to all double-words in the 128-bit destination subject to writemask k1. VPBROADCASTD ymm1 {k1}{z},r32 EVEX.256.66.0F38.W0 7C /r AVX512VL AVX512F Broadcast a 32-bit value from a GPR to all double-words in the 256-bit destination subject to writemask k1. VPBROADCASTD zmm1 {k1}{z},r32 EVEX.512.66.0F38.W0 7C /r AVX512F Broadcast a 32-bit value from a GPR to all double-words in the 512-bit destination subject to writemask k1. VPBROADCASTQ xmm1 {k1}{z},r64 EVEX.128.66.0F38.W1 7C /r AVX512VL AVX512F Broadcast a 64-bit value from a GPR to all quad-words in the 128-bit destination subject to writemask k1. VPBROADCASTQ ymm1 {k1}{z},r64 EVEX.256.66.0F38.W1 7C /r AVX512VL AVX512F Broadcast a 64-bit value from a GPR to all quad-words in the 256-bit destination subject to writemask k1. VPBROADCASTQ zmm1 {k1}{z},r64 EVEX.512.66.0F38.W1 7C /r AVX512F Broadcast a 64-bit value from a GPR to all quad-words in the 512-bit destination subject to writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA VPBROADCAST--Load Integer and Broadcast. VPBROADCASTB xmm1,xmm2/m8 VEX.128.66.0F38.W0 78 /r AVX2 Broadcast a byte integer in the source operand to sixteen locations in xmm1. VPBROADCASTB ymm1,xmm2/m8 VEX.256.66.0F38.W0 78 /r AVX2 Broadcast a byte integer in the source operand to thirty-two locations in ymm1. VPBROADCASTB xmm1{k1}{z},xmm2/m8 EVEX.128.66.0F38.W0 78 /r AVX512VL AVX512BW Broadcast a byte integer in the source operand to locations in xmm1 subject to writemask k1. VPBROADCASTB ymm1{k1}{z},xmm2/m8 EVEX.256.66.0F38.W0 78 /r AVX512VL AVX512BW Broadcast a byte integer in the source operand to locations in ymm1 subject to writemask k1. VPBROADCASTB zmm1{k1}{z},xmm2/m8 EVEX.512.66.0F38.W0 78 /r AVX512BW Broadcast a byte integer in the source operand to 64 locations in zmm1 subject to writemask k1. VPBROADCASTW xmm1,xmm2/m16 VEX.128.66.0F38.W0 79 /r AVX2 Broadcast a word integer in the source operand to eight locations in xmm1. VPBROADCASTW ymm1,xmm2/m16 VEX.256.66.0F38.W0 79 /r AVX2 Broadcast a word integer in the source operand to sixteen locations in ymm1. VPBROADCASTW xmm1{k1}{z},xmm2/m16 EVEX.128.66.0F38.W0 79 /r AVX512VL AVX512BW Broadcast a word integer in the source operand to locations in xmm1 subject to writemask k1. VPBROADCASTW ymm1{k1}{z},xmm2/m16 EVEX.256.66.0F38.W0 79 /r AVX512VL AVX512BW Broadcast a word integer in the source operand to locations in ymm1 subject to writemask k1. VPBROADCASTW zmm1{k1}{z},xmm2/m16 EVEX.512.66.0F38.W0 79 /r AVX512BW Broadcast a word integer in the source operand to 32 locations in zmm1 subject to writemask k1. VPBROADCASTD xmm1,xmm2/m32 VEX.128.66.0F38.W0 58 /r AVX2 Broadcast a dword integer in the source operand to four locations in xmm1. VPBROADCASTD ymm1,xmm2/m32 VEX.256.66.0F38.W0 58 /r AVX2 Broadcast a dword integer in the source operand to eight locations in ymm1. VPBROADCASTD xmm1 {k1}{z},xmm2/m32 EVEX.128.66.0F38.W0 58 /r AVX512VL AVX512F Broadcast a dword integer in the source operand to locations in xmm1 subject to writemask k1. VPBROADCASTD ymm1 {k1}{z},xmm2/m32 EVEX.256.66.0F38.W0 58 /r AVX512VL AVX512F Broadcast a dword integer in the source operand to locations in ymm1 subject to writemask k1. VPBROADCASTD zmm1 {k1}{z},xmm2/m32 EVEX.512.66.0F38.W0 58 /r AVX512F Broadcast a dword integer in the source operand to locations in zmm1 subject to writemask k1. VPBROADCASTQ xmm1,xmm2/m64 VEX.128.66.0F38.W0 59 /r AVX2 Broadcast a qword element in source operand to two locations in xmm1. VPBROADCASTQ ymm1,xmm2/m64 VEX.256.66.0F38.W0 59 /r AVX2 Broadcast a qword element in source operand to four locations in ymm1. VPBROADCASTQ xmm1 {k1}{z},xmm2/m64 EVEX.128.66.0F38.W1 59 /r AVX512VL AVX512F Broadcast a qword element in source operand to locations in xmm1 subject to writemask k1. VPBROADCASTQ ymm1 {k1}{z},xmm2/m64 EVEX.256.66.0F38.W1 59 /r AVX512VL AVX512F Broadcast a qword element in source operand to locations in ymm1 subject to writemask k1. VPBROADCASTQ zmm1 {k1}{z},xmm2/m64 EVEX.512.66.0F38.W1 59 /r AVX512F Broadcast a qword element in source operand to locations in zmm1 subject to writemask k1. VBROADCASTI32x2 xmm1 {k 1}{z},xmm2/m64 EVEX.128.66.0F38.W0 59 /r AVX512VL AVX512DQ Broadcast two dword elements in source operand to locations in xmm1 subject to writemask k1. VBROADCASTI32x2 ymm1 {k 1}{z},xmm2/m64 EVEX.256.66.0F38.W0 59 /r AVX512VL AVX512DQ Broadcast two dword elements in source operand to locations in ymm1 subject to writemask k1. VBROADCASTI32x2 zmm1 {k1}{z},xmm2/m64 EVEX.512.66.0F38.W0 59 /r AVX512DQ Broadcast two dword elements in source operand to locations in zmm1 subject to writemask k1. VBROADCASTI128 ymm1,m128 VEX.256.66.0F38.W0 5A /r AVX2 Broadcast 128 bits of integer data in mem to low and high 128-bits in ymm1. VBROADCASTI32X4 ymm1 {k1}{z},m128 EVEX.256.66.0F38.W0 5A /r AVX512VL AVX512F Broadcast 128 bits of 4 doubleword integer data in mem to locations in ymm1 using writemask k1. VBROADCASTI32X4 zmm1 {k1}{z},m128 EVEX.512.66.0F38.W0 5A /r AVX512F Broadcast 128 bits of 4 doubleword integer data in mem to locations in zmm1 using writemask k1. VBROADCASTI64X2 ymm1 {k1}{z},m128 EVEX.256.66.0F38.W1 5A /r AVX512VL AVX512DQ Broadcast 128 bits of 2 quadword integer data in mem to locations in ymm1 using writemask k1. VBROADCASTI64X2 zmm1 {k1}{z},m128 EVEX.512.66.0F38.W1 5A /r AVX512DQ Broadcast 128 bits of 2 quadword integer data in mem to locations in zmm1 using writemask k1. VBROADCASTI32X8 zmm1 {k1}{z},m256 EVEX.512.66.0F38.W1 5B /r AVX512DQ Broadcast 256 bits of 8 doubleword integer data in mem to locations in zmm1 using writemask k1. VBROADCASTI64X4 zmm1 {k1}{z},m256 EVEX.512.66.0F38.W1 5B /r AVX512F Broadcast 256 bits of 4 quadword integer data in mem to locations in zmm1 using writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA CMPPD--Compare Packed Double-Precision Floating-Point Values. CMPPD xmm1,xmm2/m128,imm8 66 0F C2 /r ib SSE2 Compare packed double-precision floating-point values in xmm2/m128 and xmm1 using bits 2:0 of imm8 as a comparison predicate. VCMPPD xmm1,xmm2,xmm3/m128,imm8 VEX.NDS.128.66.0F.WIG C2 /r ib AVX Compare packed double-precision floating-point values in xmm3/m128 and xmm2 using bits 4:0 of imm8 as a comparison predicate. VCMPPD ymm1,ymm2,ymm3/m256,imm8 VEX.NDS.256.66.0F.WIG C2 /r ib AVX Compare packed double-precision floating-point values in ymm3/m256 and ymm2 using bits 4:0 of imm8 as a comparison predicate. VCMPPD k1 {k2},xmm2,xmm3/m128/m64bcst,imm8 EVEX.NDS.128.66.0F.W1 C2 /r ib AVX512VL AVX512F Compare packed double-precision floating-point values in xmm3/m128/m64bcst and xmm2 using bits 4:0 of imm8 as a comparison predicate with writemask k2 and leave the result in mask register k1. VCMPPD k1 {k2},ymm2,ymm3/m256/m64bcst,imm8 EVEX.NDS.256.66.0F.W1 C2 /r ib AVX512VL AVX512F Compare packed double-precision floating-point values in ymm3/m256/m64bcst and ymm2 using bits 4:0 of imm8 as a comparison predicate with writemask k2 and leave the result in mask register k1. VCMPPD k1 {k2},zmm2,zmm3/m512/m64bcst{sae},imm8 EVEX.NDS.512.66.0F.W1 C2 /r ib AVX512F Compare packed double-precision floating-point values in zmm3/m512/m64bcst and zmm2 using bits 4:0 of imm8 as a comparison predicate with writemask k2 and leave the result in mask register k1. ModRM:reg(r,w) ModRM:r/m(r) Imm8 NA ModRM:reg(w) VEX.vvvv ModRM:r/m(r) Imm8 ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) Imm8 CMPPS--Compare Packed Single-Precision Floating-Point Values. CMPPS xmm1,xmm2/m128,imm8 0F C2 /r ib SSE Compare packed single-precision floating-point values in xmm2/m128 and xmm1 using bits 2:0 of imm8 as a comparison predicate. VCMPPS xmm1,xmm2,xmm3/m128,imm8 VEX.NDS.128.0F.WIG C2 /r ib AVX Compare packed single-precision floating-point values in xmm3/m128 and xmm2 using bits 4:0 of imm8 as a comparison predicate. VCMPPS ymm1,ymm2,ymm3/m256,imm8 VEX.NDS.256.0F.WIG C2 /r ib AVX Compare packed single-precision floating-point values in ymm3/m256 and ymm2 using bits 4:0 of imm8 as a comparison predicate. VCMPPS k1 {k2},xmm2,xmm3/m128/m32bcst,imm8 EVEX.NDS.128.0F.W0 C2 /r ib AVX512VL AVX512F Compare packed single-precision floating-point values in xmm3/m128/m32bcst and xmm2 using bits 4:0 of imm8 as a comparison predicate with writemask k2 and leave the result in mask register k1. VCMPPS k1 {k2},ymm2,ymm3/m256/m32bcst,imm8 EVEX.NDS.256.0F.W0 C2 /r ib AVX512VL AVX512F Compare packed single-precision floating-point values in ymm3/m256/m32bcst and ymm2 using bits 4:0 of imm8 as a comparison predicate with writemask k2 and leave the result in mask register k1. VCMPPS k1 {k2},zmm2,zmm3/m512/m32bcst{sae},imm8 EVEX.NDS.512.0F.W0 C2 /r ib AVX512F Compare packed single-precision floating-point values in zmm3/m512/m32bcst and zmm2 using bits 4:0 of imm8 as a comparison predicate with writemask k2 and leave the result in mask register k1. ModRM:reg(r,w) ModRM:r/m(r) Imm8 NA ModRM:reg(w) VEX.vvvv ModRM:r/m(r) Imm8 ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) Imm8 CMPSD--Compare Scalar Double-Precision Floating-Point Value. CMPSD xmm1,xmm2/m64,imm8 F2 0F C2 /r ib SSE2 Compare low double-precision floating-point value in xmm2/m64 and xmm1 using bits 2:0 of imm8 as comparison predicate. VCMPSD xmm1,xmm2,xmm3/m64,imm8 VEX.NDS.128.F2.0F.WIG C2 /r ib AVX Compare low double-precision floating-point value in xmm3/m64 and xmm2 using bits 4:0 of imm8 as comparison predicate. VCMPSD k1 {k2},xmm2,xmm3/m64{sae},imm8 EVEX.NDS.LIG.F2.0F.W1 C2 /r ib AVX512F Compare low double-precision floating-point value in xmm3/m64 and xmm2 using bits 4:0 of imm8 as comparison predicate with writemask k2 and leave the result in mask register k1. ModRM:reg(r,w) ModRM:r/m(r) Imm8 NA ModRM:reg(w) VEX.vvvv ModRM:r/m(r) Imm8 ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) Imm8 CMPSS--Compare Scalar Single-Precision Floating-Point Value. CMPSS xmm1,xmm2/m32,imm8 F3 0F C2 /r ib SSE Compare low single-precision floating-point value in xmm2/m32 and xmm1 using bits 2:0 of imm8 as comparison predicate. VCMPSS xmm1,xmm2,xmm3/m32,imm8 VEX.NDS.128.F3.0F.WIG C2 /r ib AVX Compare low single-precision floating-point value in xmm3/m32 and xmm2 using bits 4:0 of imm8 as comparison predicate. VCMPSS k1 {k2},xmm2,xmm3/m32{sae},imm8 EVEX.NDS.LIG.F3.0F.W0 C2 /r ib AVX512F Compare low single-precision floating-point value in xmm3/m32 and xmm2 using bits 4:0 of imm8 as comparison predicate with writemask k2 and leave the result in mask register k1. ModRM:reg(r,w) ModRM:r/m(r) Imm8 NA ModRM:reg(w) VEX.vvvv ModRM:r/m(r) Imm8 ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) Imm8 COMISD--Compare Scalar Ordered Double-Precision Floating-Point Values and Set EFLAGS. COMISD xmm1,xmm2/m64 66 0F 2F /r SSE2 Compare low double-precision floating-point values in xmm1 and xmm2/mem64 and set the EFLAGS flags accordingly. VCOMISD xmm1,xmm2/m64 VEX.128.66.0F.WIG 2F /r AVX Compare low double-precision floating-point values in xmm1 and xmm2/mem64 and set the EFLAGS flags accordingly. VCOMISD xmm1,xmm2/m64{sae} EVEX.LIG.66.0F.W1 2F /r AVX512F Compare low double-precision floating-point values in xmm1 and xmm2/mem64 and set the EFLAGS flags accordingly. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA COMISS--Compare Scalar Ordered Single-Precision Floating-Point Values and Set EFLAGS. COMISS xmm1,xmm2/m32 0F 2F /r SSE Compare low single-precision floating-point values in xmm1 and xmm2/mem32 and set the EFLAGS flags accordingly. VCOMISS xmm1,xmm2/m32 VEX.128.0F.WIG 2F /r AVX Compare low single-precision floating-point values in xmm1 and xmm2/mem32 and set the EFLAGS flags accordingly. VCOMISS xmm1,xmm2/m32{sae} EVEX.LIG.0F.W0 2F /r AVX512F Compare low single-precision floating-point values in xmm1 and xmm2/mem32 and set the EFLAGS flags accordingly. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA DIVPD--Divide Packed Double-Precision Floating-Point Values. DIVPD xmm1,xmm2/m128 66 0F 5E /r SSE2 Divide packed double-precision floating-point values in xmm1 by packed double-precision floating-point values in xmm2/mem. VDIVPD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG 5E /r AVX Divide packed double-precision floating-point values in xmm2 by packed double-precision floating-point values in xmm3/mem. VDIVPD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F.WIG 5E /r AVX Divide packed double-precision floating-point values in ymm2 by packed double-precision floating-point values in ymm3/mem. VDIVPD xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F.W1 5E /r AVX512VL AVX512F Divide packed double-precision floating-point values in xmm2 by packed double-precision floating-point values in xmm3/m128/m64bcst and write results to xmm1 subject to writemask k1. VDIVPD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F.W1 5E /r AVX512VL AVX512F Divide packed double-precision floating-point values in ymm2 by packed double-precision floating-point values in ymm3/m256/m64bcst and write results to ymm1 subject to writemask k1. VDIVPD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst{er} EVEX.NDS.512.66.0F.W1 5E /r AVX512F Divide packed double-precision floating-point values in zmm2 by packed double-precision FP values in zmm3/m512/m64bcst and write results to zmm1 subject to writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA DIVPS--Divide Packed Single-Precision Floating-Point Values. DIVPS xmm1,xmm2/m128 0F 5E /r SSE Divide packed single-precision floating-point values in xmm1 by packed single-precision floating-point values in xmm2/mem. VDIVPS xmm1,xmm2,xmm3/m128 VEX.NDS.128.0F.WIG 5E /r AVX Divide packed single-precision floating-point values in xmm2 by packed single-precision floating-point values in xmm3/mem. VDIVPS ymm1,ymm2,ymm3/m256 VEX.NDS.256.0F.WIG 5E /r AVX Divide packed single-precision floating-point values in ymm2 by packed single-precision floating-point values in ymm3/mem. VDIVPS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.0F.W0 5E /r AVX512VL AVX512F Divide packed single-precision floating-point values in xmm2 by packed single-precision floating-point values in xmm3/m128/m32bcst and write results to xmm1 subject to writemask k1. VDIVPS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.0F.W0 5E /r AVX512VL AVX512F Divide packed single-precision floating-point values in ymm2 by packed single-precision floating-point values in ymm3/m256/m32bcst and write results to ymm1 subject to writemask k1. VDIVPS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst{er} EVEX.NDS.512.0F.W0 5E /r AVX512F Divide packed single-precision floating-point values in zmm2 by packed single-precision floating-point values in zmm3/m512/m32bcst and write results to zmm1 subject to writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA DIVSD--Divide Scalar Double-Precision Floating-Point Value. DIVSD xmm1,xmm2/m64 F2 0F 5E /r SSE2 Divide low double-precision floating-point value in xmm1 by low double-precision floating-point value in xmm2/m64. VDIVSD xmm1,xmm2,xmm3/m64 VEX.NDS.128.F2.0F.WIG 5E /r AVX Divide low double-precision floating-point value in xmm2 by low double-precision floating-point value in xmm3/m64. VDIVSD xmm1 {k1}{z},xmm2,xmm3/m64{er} EVEX.NDS.LIG.F2.0F.W1 5E /r AVX512F Divide low double-precision floating-point value in xmm2 by low double-precision floating-point value in xmm3/m64. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA DIVSS--Divide Scalar Single-Precision Floating-Point Values. DIVSS xmm1,xmm2/m32 F3 0F 5E /r SSE Divide low single-precision floating-point value in xmm1 by low single-precision floating-point value in xmm2/m32. VDIVSS xmm1,xmm2,xmm3/m32 VEX.NDS.128.F3.0F.WIG 5E /r AVX Divide low single-precision floating-point value in xmm2 by low single-precision floating-point value in xmm3/m32. VDIVSS xmm1 {k1}{z},xmm2,xmm3/m32{er} EVEX.NDS.LIG.F3.0F.W0 5E /r AVX512F Divide low single-precision floating-point value in xmm2 by low single-precision floating-point value in xmm3/m32. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA VCOMPRESSPD--Store Sparse Packed Double-Precision Floating-Point Values into Dense Memory. VCOMPRESSPD xmm1/m128 {k1}{z},xmm2 EVEX.128.66.0F38.W1 8A /r AVX512VL AVX512F Compress packed double-precision floating-point values from xmm2 to xmm1/m128 using writemask k1. VCOMPRESSPD ymm1/m256 {k1}{z},ymm2 EVEX.256.66.0F38.W1 8A /r AVX512VL AVX512F Compress packed double-precision floating-point values from ymm2 to ymm1/m256 using writemask k1. VCOMPRESSPD zmm1/m512 {k1}{z},zmm2 EVEX.512.66.0F38.W1 8A /r AVX512F Compress packed double-precision floating-point values from zmm2 using control mask k1 to zmm1/m512. ModRM:r/m(w) ModRM:reg(r) NA NA VCOMPRESSPS--Store Sparse Packed Single-Precision Floating-Point Values into Dense Memory. VCOMPRESSPS xmm1/m128 {k1}{z},xmm2 EVEX.128.66.0F38.W0 8A /r AVX512VL AVX512F Compress packed single-precision floating-point values from xmm2 to xmm1/m128 using writemask k1. VCOMPRESSPS ymm1/m256 {k1}{z},ymm2 EVEX.256.66.0F38.W0 8A /r AVX512VL AVX512F Compress packed single-precision floating-point values from ymm2 to ymm1/m256 using writemask k1. VCOMPRESSPS zmm1/m512 {k1}{z},zmm2 EVEX.512.66.0F38.W0 8A /r AVX512F Compress packed single-precision floating-point values from zmm2 using control mask k1 to zmm1/m512. ModRM:r/m(w) ModRM:reg(r) NA NA CVTDQ2PD--Convert Packed Doubleword Integers to Packed Double-Precision Floating-Point Values. CVTDQ2PD xmm1,xmm2/m64 F3 0F E6 /r SSE2 Convert two packed signed doubleword integers from xmm2/mem to two packed double-precision floatingpoint values in xmm1. VCVTDQ2PD xmm1,xmm2/m64 VEX.128.F3.0F.WIG E6 /r AVX Convert two packed signed doubleword integers from xmm2/mem to two packed double-precision floatingpoint values in xmm1. VCVTDQ2PD ymm1,xmm2/m128 VEX.256.F3.0F.WIG E6 /r AVX Convert four packed signed doubleword integers from xmm2/mem to four packed double-precision floatingpoint values in ymm1. VCVTDQ2PD xmm1 {k1}{z},xmm2/m128/m32bcst EVEX.128.F3.0F.W0 E6 /r AVX512VL AVX512F Convert 2 packed signed doubleword integers from xmm2/m128/m32bcst to eight packed double-precision floating-point values in xmm1 with writemask k1. VCVTDQ2PD ymm1 {k1}{z},xmm2/m128/m32bcst EVEX.256.F3.0F.W0 E6 /r AVX512VL AVX512F Convert 4 packed signed doubleword integers from xmm2/m128/m32bcst to 4 packed double-precision floating-point values in ymm1 with writemask k1. VCVTDQ2PD zmm1 {k1}{z},ymm2/m256/m32bcst EVEX.512.F3.0F.W0 E6 /r AVX512F Convert eight packed signed doubleword integers from ymm2/m256/m32bcst to eight packed double-precision floating-point values in zmm1 with writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA CVTDQ2PS--Convert Packed Doubleword Integers to Packed Single-Precision Floating-Point Values. CVTDQ2PS xmm1,xmm2/m128 0F 5B /r SSE2 Convert four packed signed doubleword integers from xmm2/mem to four packed single-precision floatingpoint values in xmm1. VCVTDQ2PS xmm1,xmm2/m128 VEX.128.0F.WIG 5B /r AVX Convert four packed signed doubleword integers from xmm2/mem to four packed single-precision floatingpoint values in xmm1. VCVTDQ2PS ymm1,ymm2/m256 VEX.256.0F.WIG 5B /r AVX Convert eight packed signed doubleword integers from ymm2/mem to eight packed single-precision floatingpoint values in ymm1. VCVTDQ2PS xmm1 {k1}{z},xmm2/m128/m32bcst EVEX.128.0F.W0 5B /r AVX512VL AVX512F Convert four packed signed doubleword integers from xmm2/m128/m32bcst to four packed single-precision floating-point values in xmm1with writemask k1. VCVTDQ2PS ymm1 {k1}{z},ymm2/m256/m32bcst EVEX.256.0F.W0 5B /r AVX512VL AVX512F Convert eight packed signed doubleword integers from ymm2/m256/m32bcst to eight packed single-precision floating-point values in ymm1with writemask k1. VCVTDQ2PS zmm1 {k1}{z},zmm2/m512/m32bcst{er} EVEX.512.0F.W0 5B /r AVX512F Convert sixteen packed signed doubleword integers from zmm2/m512/m32bcst to sixteen packed singleprecision floating-point values in zmm1with writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA CVTPD2DQ--Convert Packed Double-Precision Floating-Point Values to Packed Doubleword Integers. CVTPD2DQ xmm1,xmm2/m128 F2 0F E6 /r SSE2 Convert two packed double-precision floating-point values in xmm2/mem to two signed doubleword integers in xmm1. VCVTPD2DQ xmm1,xmm2/m128 VEX.128.F2.0F.WIG E6 /r AVX Convert two packed double-precision floating-point values in xmm2/mem to two signed doubleword integers in xmm1. VCVTPD2DQ xmm1,ymm2/m256 VEX.256.F2.0F.WIG E6 /r AVX Convert four packed double-precision floating-point values in ymm2/mem to four signed doubleword integers in xmm1. VCVTPD2DQ xmm1 {k1}{z},xmm2/m128/m64bcst EVEX.128.F2.0F.W1 E6 /r AVX512VL AVX512F Convert two packed double-precision floating-point values in xmm2/m128/m64bcst to two signed doubleword integers in xmm1 subject to writemask k1. VCVTPD2DQ xmm1 {k1}{z},ymm2/m256/m64bcst EVEX.256.F2.0F.W1 E6 /r AVX512VL AVX512F Convert four packed double-precision floating-point values in ymm2/m256/m64bcst to four signed doubleword integers in xmm1 subject to writemask k1. VCVTPD2DQ ymm1 {k1}{z},zmm2/m512/m64bcst{er} EVEX.512.F2.0F.W1 E6 /r AVX512F Convert eight packed double-precision floating-point values in zmm2/m512/m64bcst to eight signed doubleword integers in ymm1 subject to writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA CVTPD2PS--Convert Packed Double-Precision Floating-Point Values to Packed Single-Precision Floating-Point Values. CVTPD2PS xmm1,xmm2/m128 66 0F 5A /r SSE2 Convert two packed double-precision floating-point values in xmm2/mem to two single-precision floating-point values in xmm1. VCVTPD2PS xmm1,xmm2/m128 VEX.128.66.0F.WIG 5A /r AVX Convert two packed double-precision floating-point values in xmm2/mem to two single-precision floating-point values in xmm1. VCVTPD2PS xmm1,ymm2/m256 VEX.256.66.0F.WIG 5A /r AVX Convert four packed double-precision floating-point values in ymm2/mem to four single-precision floating-point values in xmm1. VCVTPD2PS xmm1 {k1}{z},xmm2/m128/m64bcst EVEX.128.66.0F.W1 5A /r AVX512VL AVX512F Convert two packed double-precision floating-point values in xmm2/m128/m64bcst to two singleprecision floating-point values in xmm1with writemask k1. VCVTPD2PS xmm1 {k1}{z},ymm2/m256/m64bcst EVEX.256.66.0F.W1 5A /r AVX512VL AVX512F Convert four packed double-precision floating-point values in ymm2/m256/m64bcst to four singleprecision floating-point values in xmm1with writemask k1. VCVTPD2PS ymm1 {k1}{z},zmm2/m512/m64bcst{er} EVEX.512.66.0F.W1 5A /r AVX512F Convert eight packed double-precision floating-point values in zmm2/m512/m64bcst to eight singleprecision floating-point values in ymm1with writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA VCVTPD2QQ--Convert Packed Double-Precision Floating-Point Values to Packed Quadword Integers. VCVTPD2QQ xmm1 {k1}{z},xmm2/m128/m64bcst EVEX.128.66.0F.W1 7B /r AVX512VL AVX512DQ Convert two packed double-precision floating-point values from xmm2/m128/m64bcst to two packed quadword integers in xmm1 with writemask k1. VCVTPD2QQ ymm1 {k1}{z},ymm2/m256/m64bcst EVEX.256.66.0F.W1 7B /r AVX512VL AVX512DQ Convert four packed double-precision floating-point values from ymm2/m256/m64bcst to four packed quadword integers in ymm1 with writemask k1. VCVTPD2QQ zmm1 {k1}{z},zmm2/m512/m64bcst{er} EVEX.512.66.0F.W1 7B /r AVX512DQ Convert eight packed double-precision floating-point values from zmm2/m512/m64bcst to eight packed quadword integers in zmm1 with writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA VCVTPD2UDQ--Convert Packed Double-Precision Floating-Point Values to Packed Unsigned Doubleword Integers. VCVTPD2UDQ xmm1 {k1}{z},xmm2/m128/m64bcst EVEX.128.0F.W1 79 /r AVX512VL AVX512F Convert two packed double-precision floating-point values in xmm2/m128/m64bcst to two unsigned doubleword integers in xmm1 subject to writemask k1. VCVTPD2UDQ xmm1 {k1}{z},ymm2/m256/m64bcst EVEX.256.0F.W1 79 /r AVX512VL AVX512F Convert four packed double-precision floating-point values in ymm2/m256/m64bcst to four unsigned doubleword integers in xmm1 subject to writemask k1. VCVTPD2UDQ ymm1 {k1}{z},zmm2/m512/m64bcst{er} EVEX.512.0F.W1 79 /r AVX512F Convert eight packed double-precision floating-point values in zmm2/m512/m64bcst to eight unsigned doubleword integers in ymm1 subject to writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA VCVTPD2UQQ--Convert Packed Double-Precision Floating-Point Values to Packed Unsigned Quadword Integers. VCVTPD2UQQ xmm1 {k1}{z},xmm2/m128/m64bcst EVEX.128.66.0F.W1 79 /r AVX512VL AVX512DQ Convert two packed double-precision floating-point values from xmm2/mem to two packed unsigned quadword integers in xmm1 with writemask k1. VCVTPD2UQQ ymm1 {k1}{z},ymm2/m256/m64bcst EVEX.256.66.0F.W1 79 /r AVX512VL AVX512DQ Convert fourth packed double-precision floating-point values from ymm2/mem to four packed unsigned quadword integers in ymm1 with writemask k1. VCVTPD2UQQ zmm1 {k1}{z},zmm2/m512/m64bcst{er} EVEX.512.66.0F.W1 79 /r AVX512DQ Convert eight packed double-precision floating-point values from zmm2/mem to eight packed unsigned quadword integers in zmm1 with writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA VCVTPH2PS--Convert 16-bit FP values to Single-Precision FP values. VCVTPH2PS xmm1,xmm2/m64 VEX.128.66.0F38.W0 1313 /r F16C Convert four packed half precision (16-bit) floatingpoint values in xmm2/m64 to packed single-precision floating-point value in xmm1. VCVTPH2PS ymm1,xmm2/m128 VEX.256.66.0F38.W0 1313 /r F16C Convert eight packed half precision (16-bit) floatingpoint values in xmm2/m128 to packed singleprecision floating-point value in ymm1. VCVTPH2PS xmm1 {k1}{z},xmm2/m64 EVEX.128.66.0F38.W0 1313 /r AVX512VL AVX512F Convert four packed half precision (16-bit) floatingpoint values in xmm2/m64 to packed single-precision floating-point values in xmm1. VCVTPH2PS ymm1 {k1}{z},xmm2/m128 EVEX.256.66.0F38.W0 1313 /r AVX512VL AVX512F Convert eight packed half precision (16-bit) floatingpoint values in xmm2/m128 to packed singleprecision floating-point values in ymm1. VCVTPH2PS zmm1 {k1}{z},ymm2/m256 {sae} EVEX.512.66.0F38.W0 1313 /r AVX512F Convert sixteen packed half precision (16-bit) floating-point values in ymm2/m256 to packed single-precision floating-point values in zmm1. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA VCVTPS2PH--Convert Single-Precision FP value to 16-bit FP value. VCVTPS2PH xmm1/m64,xmm2,imm8 VEX.128.66.0F3A.W0 1D 1D/r ib F16C Convert four packed single-precision floating-point values in xmm2 to packed half-precision (16-bit) floating-point values in xmm1/m64. Imm8 provides rounding controls. VCVTPS2PH xmm1/m128,ymm2,imm8 VEX.256.66.0F3A.W0 1D1D /r ib F16C Convert eight packed single-precision floating-point values in ymm2 to packed half-precision (16-bit) floating-point values in xmm1/m128. Imm8 provides rounding controls. VCVTPS2PH xmm1/m128 {k1}{z},xmm2,imm8 EVEX.128.66.0F3A.W0 1D1D /r ib AVX512VL AVX512F Convert four packed single-precision floating-point values in xmm2 to packed half-precision (16-bit) floating-point values in xmm1/m128. Imm8 provides rounding controls. VCVTPS2PH xmm1/m256 {k1}{z},ymm2,imm8 EVEX.256.66.0F3A.W0 1D1D /r ib AVX512VL AVX512F Convert eight packed single-precision floating-point values in ymm2 to packed half-precision (16-bit) floating-point values in xmm1/m256. Imm8 provides rounding controls. VCVTPS2PH ymm1/m256 {k1}{z},zmm2{sae},imm8 EVEX.512.66.0F3A.W0 1D1D /r ib AVX512F Convert sixteen packed single-precision floating-point values in zmm2 to packed half-precision (16-bit) floatingpoint values in ymm1/m256. Imm8 provides rounding controls. ModRM:r/m(w) ModRM:reg(r) Imm8 NA ModRM:r/m(w) ModRM:reg(r) Imm8 NA CVTPS2DQ--Convert Packed Single-Precision Floating-Point Values to Packed Signed Doubleword Integer Values. CVTPS2DQ xmm1,xmm2/m128 66 0F 5B /r SSE2 Convert four packed single-precision floating-point values from xmm2/mem to four packed signed doubleword values in xmm1. VCVTPS2DQ xmm1,xmm2/m128 VEX.128.66.0F.WIG 5B /r AVX Convert four packed single-precision floating-point values from xmm2/mem to four packed signed doubleword values in xmm1. VCVTPS2DQ ymm1,ymm2/m256 VEX.256.66.0F.WIG 5B /r AVX Convert eight packed single-precision floating-point values from ymm2/mem to eight packed signed doubleword values in ymm1. VCVTPS2DQ xmm1 {k1}{z},xmm2/m128/m32bcst EVEX.128.66.0F.W0 5B /r AVX512VL AVX512F Convert four packed single precision floating-point values from xmm2/m128/m32bcst to four packed signed doubleword values in xmm1 subject to writemask k1. VCVTPS2DQ ymm1 {k1}{z},ymm2/m256/m32bcst EVEX.256.66.0F.W0 5B /r AVX512VL AVX512F Convert eight packed single precision floating-point values from ymm2/m256/m32bcst to eight packed signed doubleword values in ymm1 subject to writemask k1. VCVTPS2DQ zmm1 {k1}{z},zmm2/m512/m32bcst{er} EVEX.512.66.0F.W0 5B /r AVX512F Convert sixteen packed single-precision floating-point values from zmm2/m512/m32bcst to sixteen packed signed doubleword values in zmm1 subject to writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA VCVTPS2UDQ--Convert Packed Single-Precision Floating-Point Values to Packed Unsigned Doubleword Integer Values. VCVTPS2UDQ xmm1 {k1}{z},xmm2/m128/m32bcst EVEX.128.0F.W0 79 /r AVX512VL AVX512F Convert four packed single precision floating-point values from xmm2/m128/m32bcst to four packed unsigned doubleword values in xmm1 subject to writemask k1. VCVTPS2UDQ ymm1 {k1}{z},ymm2/m256/m32bcst EVEX.256.0F.W0 79 /r AVX512VL AVX512F Convert eight packed single precision floating-point values from ymm2/m256/m32bcst to eight packed unsigned doubleword values in ymm1 subject to writemask k1. VCVTPS2UDQ zmm1 {k1}{z},zmm2/m512/m32bcst{er} EVEX.512.0F.W0 79 /r AVX512F Convert sixteen packed single-precision floating-point values from zmm2/m512/m32bcst to sixteen packed unsigned doubleword values in zmm1 subject to writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA VCVTPS2QQ--Convert Packed Single Precision Floating-Point Values to Packed Singed Quadword Integer Values. VCVTPS2QQ xmm1 {k1}{z},xmm2/m64/m32bcst EVEX.128.66.0F.W0 7B /r AVX512VL AVX512DQ Convert two packed single precision floating-point values from xmm2/m64/m32bcst to two packed signed quadword values in xmm1 subject to writemask k1. VCVTPS2QQ ymm1 {k1}{z},xmm2/m128/m32bcst EVEX.256.66.0F.W0 7B /r AVX512VL AVX512DQ Convert four packed single precision floating-point values from xmm2/m128/m32bcst to four packed signed quadword values in ymm1 subject to writemask k1. VCVTPS2QQ zmm1 {k1}{z},ymm2/m256/m32bcst{er} EVEX.512.66.0F.W0 7B /r AVX512DQ Convert eight packed single precision floating-point values from ymm2/m256/m32bcst to eight packed signed quadword values in zmm1 subject to writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA VCVTPS2UQQ--Convert Packed Single Precision Floating-Point Values to Packed Unsigned Quadword Integer Values. VCVTPS2UQQ xmm1 {k1}{z},xmm2/m64/m32bcst EVEX.128.66.0F.W0 79 /r AVX512VL AVX512DQ Convert two packed single precision floating-point values from zmm2/m64/m32bcst to two packed unsigned quadword values in zmm1 subject to writemask k1. VCVTPS2UQQ ymm1 {k1}{z},xmm2/m128/m32bcst EVEX.256.66.0F.W0 79 /r AVX512VL AVX512DQ Convert four packed single precision floating-point values from xmm2/m128/m32bcst to four packed unsigned quadword values in ymm1 subject to writemask k1. VCVTPS2UQQ zmm1 {k1}{z},ymm2/m256/m32bcst{er} EVEX.512.66.0F.W0 79 /r AVX512DQ Convert eight packed single precision floating-point values from ymm2/m256/m32bcst to eight packed unsigned quadword values in zmm1 subject to writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA CVTPS2PD--Convert Packed Single-Precision Floating-Point Values to Packed Double-Precision Floating-Point Values. CVTPS2PD xmm1,xmm2/m64 0F 5A /r SSE2 Convert two packed single-precision floating-point values in xmm2/m64 to two packed double-precision floating-point values in xmm1. VCVTPS2PD xmm1,xmm2/m64 VEX.128.0F.WIG 5A /r AVX Convert two packed single-precision floating-point values in xmm2/m64 to two packed double-precision floating-point values in xmm1. VCVTPS2PD ymm1,xmm2/m128 VEX.256.0F.WIG 5A /r AVX Convert four packed single-precision floating-point values in xmm2/m128 to four packed double-precision floatingpoint values in ymm1. VCVTPS2PD xmm1 {k1}{z},xmm2/m64/m32bcst EVEX.128.0F.W0 5A /r AVX512VL AVX512F Convert two packed single-precision floating-point values in xmm2/m64/m32bcst to packed double-precision floatingpoint values in xmm1 with writemask k1. VCVTPS2PD ymm1 {k1}{z},xmm2/m128/m32bcst EVEX.256.0F.W0 5A /r AVX512VL Convert four packed single-precision floating-point values in xmm2/m128/m32bcst to packed double-precision floating-point values in ymm1 with writemask k1. VCVTPS2PD zmm1 {k1}{z},ymm2/m256/m32bcst{sae} EVEX.512.0F.W0 5A /r AVX512F Convert eight packed single-precision floating-point values in ymm2/m256/b32bcst to eight packed double-precision floating-point values in zmm1 with writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA VCVTQQ2PD--Convert Packed Quadword Integers to Packed Double-Precision Floating-Point Values. VCVTQQ2PD xmm1 {k1}{z},xmm2/m128/m64bcst EVEX.128.F3.0F.W1 E6 /r AVX512VL AVX512DQ Convert two packed quadword integers from xmm2/m128/m64bcst to packed double-precision floatingpoint values in xmm1 with writemask k1. VCVTQQ2PD ymm1 {k1}{z},ymm2/m256/m64bcst EVEX.256.F3.0F.W1 E6 /r AVX512VL AVX512DQ Convert four packed quadword integers from ymm2/m256/m64bcst to packed double-precision floatingpoint values in ymm1 with writemask k1. VCVTQQ2PD zmm1 {k1}{z},zmm2/m512/m64bcst{er} EVEX.512.F3.0F.W1 E6 /r AVX512DQ Convert eight packed quadword integers from zmm2/m512/m64bcst to eight packed double-precision floating-point values in zmm1 with writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA VCVTQQ2PS--Convert Packed Quadword Integers to Packed Single-Precision Floating-Point Values. VCVTQQ2PS xmm1 {k1}{z},xmm2/m128/m64bcst EVEX.128.0F.W1 5B /r AVX512VL AVX512DQ Convert two packed quadword integers from xmm2/mem to packed single-precision floating-point values in xmm1 with writemask k1. VCVTQQ2PS xmm1 {k1}{z},ymm2/m256/m64bcst EVEX.256.0F.W1 5B /r AVX512VL AVX512DQ Convert four packed quadword integers from ymm2/mem to packed single-precision floating-point values in xmm1 with writemask k1. VCVTQQ2PS ymm1 {k1}{z},zmm2/m512/m64bcst{er} EVEX.512.0F.W1 5B /r AVX512DQ Convert eight packed quadword integers from zmm2/mem to eight packed single-precision floating-point values in ymm1 with writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA CVTSD2SI--Convert Scalar Double-Precision Floating-Point Value to Doubleword Integer. CVTSD2SI r32,xmm1/m64 F2 0F 2D /r SSE2 Convert one double-precision floating-point value from xmm1/m64 to one signed doubleword integer r32. CVTSD2SI r64,xmm1/m64 F2 REX.W 0F 2D /r SSE2 Convert one double-precision floating-point value from xmm1/m64 to one signed quadword integer signextended into r64. VCVTSD2SI r32,xmm1/m64 VEX.128.F2.0F.W0 2D /r AVX Convert one double-precision floating-point value from xmm1/m64 to one signed doubleword integer r32. VCVTSD2SI r64,xmm1/m64 VEX.128.F2.0F.W1 2D /r AVX Convert one double-precision floating-point value from xmm1/m64 to one signed quadword integer signextended into r64. VCVTSD2SI r32,xmm1/m64{er} EVEX.LIG.F2.0F.W0 2D /r AVX512F Convert one double-precision floating-point value from xmm1/m64 to one signed doubleword integer r32. VCVTSD2SI r64,xmm1/m64{er} EVEX.LIG.F2.0F.W1 2D /r AVX512F Convert one double-precision floating-point value from xmm1/m64 to one signed quadword integer signextended into r64. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA VCVTSD2USI--Convert Scalar Double-Precision Floating-Point Value to Unsigned Doubleword Integer. VCVTSD2USI r32,xmm1/m64{er} EVEX.LIG.F2.0F.W0 79 /r AVX512F Convert one double-precision floating-point value from xmm1/m64 to one unsigned doubleword integer r32. VCVTSD2USI r64,xmm1/m64{er} EVEX.LIG.F2.0F.W1 79 /r AVX512F Convert one double-precision floating-point value from xmm1/m64 to one unsigned quadword integer zeroextended into r64. ModRM:reg(w) ModRM:r/m(r) NA NA CVTSD2SS--Convert Scalar Double-Precision Floating-Point Value to Scalar Single-Precision Floating-Point Value. CVTSD2SS xmm1,xmm2/m64 F2 0F 5A /r SSE2 Convert one double-precision floating-point value in xmm2/m64 to one single-precision floating-point value in xmm1. VCVTSD2SS xmm1,xmm2,xmm3/m64 VEX.NDS.128.F2.0F.WIG 5A /r AVX Convert one double-precision floating-point value in xmm3/m64 to one single-precision floating-point value and merge with high bits in xmm2. VCVTSD2SS xmm1 {k1}{z},xmm2,xmm3/m64{er} EVEX.NDS.LIG.F2.0F.W1 5A /r AVX512F Convert one double-precision floating-point value in xmm3/m64 to one single-precision floating-point value and merge with high bits in xmm2 under writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA CVTSI2SD--Convert Doubleword Integer to Scalar Double-Precision Floating-Point Value. CVTSI2SD xmm1,r32/m32 F2 0F 2A /r SSE2 Convert one signed doubleword integer from r32/m32 to one double-precision floating-point value in xmm1. CVTSI2SD xmm1,r/m64 F2 REX.W 0F 2A /r SSE2 Convert one signed quadword integer from r/m64 to one double-precision floating-point value in xmm1. VCVTSI2SD xmm1,xmm2,r/m32 VEX.NDS.128.F2.0F.W0 2A /r AVX Convert one signed doubleword integer from r/m32 to one double-precision floating-point value in xmm1. VCVTSI2SD xmm1,xmm2,r/m64 VEX.NDS.128.F2.0F.W1 2A /r AVX Convert one signed quadword integer from r/m64 to one double-precision floating-point value in xmm1. VCVTSI2SD xmm1,xmm2,r/m32 EVEX.NDS.LIG.F2.0F.W0 2A /r AVX512F Convert one signed doubleword integer from r/m32 to one double-precision floating-point value in xmm1. VCVTSI2SD xmm1,xmm2,r/m64{er} EVEX.NDS.LIG.F2.0F.W1 2A /r AVX512F Convert one signed quadword integer from r/m64 to one double-precision floating-point value in xmm1. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA CVTSI2SS--Convert Doubleword Integer to Scalar Single-Precision Floating-Point Value. CVTSI2SS xmm1,r/m32 F3 0F 2A /r SSE Convert one signed doubleword integer from r/m32 to one single-precision floating-point value in xmm1. CVTSI2SS xmm1,r/m64 F3 REX.W 0F 2A /r SSE Convert one signed quadword integer from r/m64 to one single-precision floating-point value in xmm1. VCVTSI2SS xmm1,xmm2,r/m32 VEX.NDS.128.F3.0F.W0 2A /r AVX Convert one signed doubleword integer from r/m32 to one single-precision floating-point value in xmm1. VCVTSI2SS xmm1,xmm2,r/m64 VEX.NDS.128.F3.0F.W1 2A /r AVX Convert one signed quadword integer from r/m64 to one single-precision floating-point value in xmm1. VCVTSI2SS xmm1,xmm2,r/m32{er} EVEX.NDS.LIG.F3.0F.W0 2A /r AVX512F Convert one signed doubleword integer from r/m32 to one single-precision floating-point value in xmm1. VCVTSI2SS xmm1,xmm2,r/m64{er} EVEX.NDS.LIG.F3.0F.W1 2A /r AVX512F Convert one signed quadword integer from r/m64 to one single-precision floating-point value in xmm1. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA CVTSS2SD--Convert Scalar Single-Precision Floating-Point Value to Scalar Double-Precision Floating-Point Value. CVTSS2SD xmm1,xmm2/m32 F3 0F 5A /r SSE2 Convert one single-precision floating-point value in xmm2/m32 to one double-precision floating-point value in xmm1. VCVTSS2SD xmm1,xmm2,xmm3/m32 VEX.NDS.128.F3.0F.WIG 5A /r AVX Convert one single-precision floating-point value in xmm3/m32 to one double-precision floating-point value and merge with high bits of xmm2. VCVTSS2SD xmm1 {k1}{z},xmm2,xmm3/m32{sae} EVEX.NDS.LIG.F3.0F.W0 5A /r AVX512F Convert one single-precision floating-point value in xmm3/m32 to one double-precision floating-point value and merge with high bits of xmm2 under writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA CVTSS2SI--Convert Scalar Single-Precision Floating-Point Value to Doubleword Integer. CVTSS2SI r32,xmm1/m32 F3 0F 2D /r SSE Convert one single-precision floating-point value from xmm1/m32 to one signed doubleword integer in r32. CVTSS2SI r64,xmm1/m32 F3 REX.W 0F 2D /r SSE Convert one single-precision floating-point value from xmm1/m32 to one signed quadword integer in r64. VCVTSS2SI r32,xmm1/m32 VEX.128.F3.0F.W0 2D /r AVX Convert one single-precision floating-point value from xmm1/m32 to one signed doubleword integer in r32. VCVTSS2SI r64,xmm1/m32 VEX.128.F3.0F.W1 2D /r AVX Convert one single-precision floating-point value from xmm1/m32 to one signed quadword integer in r64. VCVTSS2SI r32,xmm1/m32{er} EVEX.LIG.F3.0F.W0 2D /r AVX512F Convert one single-precision floating-point value from xmm1/m32 to one signed doubleword integer in r32. VCVTSS2SI r64,xmm1/m32{er} EVEX.LIG.F3.0F.W1 2D /r AVX512F Convert one single-precision floating-point value from xmm1/m32 to one signed quadword integer in r64. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA VCVTSS2USI--Convert Scalar Single-Precision Floating-Point Value to Unsigned Doubleword Integer. VCVTSS2USI r32,xmm1/m32{er} EVEX.LIG.F3.0F.W0 79 /r AVX512F Convert one single-precision floating-point value from xmm1/m32 to one unsigned doubleword integer in r32. VCVTSS2USI r64,xmm1/m32{er} EVEX.LIG.F3.0F.W1 79 /r AVX512F Convert one single-precision floating-point value from xmm1/m32 to one unsigned quadword integer in r64. ModRM:reg(w) ModRM:r/m(r) NA NA CVTTPD2DQ--Convert with Truncation Packed Double-Precision Floating-Point Values to Packed Doubleword Integers. CVTTPD2DQ xmm1,xmm2/m128 66 0F E6 /r SSE2 Convert two packed double-precision floating-point values in xmm2/mem to two signed doubleword integers in xmm1 using truncation. VCVTTPD2DQ xmm1,xmm2/m128 VEX.128.66.0F.WIG E6 /r AVX Convert two packed double-precision floating-point values in xmm2/mem to two signed doubleword integers in xmm1 using truncation. VCVTTPD2DQ xmm1,ymm2/m256 VEX.256.66.0F.WIG E6 /r AVX Convert four packed double-precision floating-point values in ymm2/mem to four signed doubleword integers in xmm1 using truncation. VCVTTPD2DQ xmm1 {k1}{z},xmm2/m128/m64bcst EVEX.128.66.0F.W1 E6 /r AVX512VL AVX512F Convert two packed double-precision floating-point values in xmm2/m128/m64bcst to two signed doubleword integers in xmm1 using truncation subject to writemask k1. VCVTTPD2DQ xmm1 {k1}{z},ymm2/m256/m64bcst EVEX.256.66.0F.W1 E6 /r AVX512VL AVX512F Convert four packed double-precision floating-point values in ymm2/m256/m64bcst to four signed doubleword integers in xmm1 using truncation subject to writemask k1. VCVTTPD2DQ ymm1 {k1}{z},zmm2/m512/m64bcst{sae} EVEX.512.66.0F.W1 E6 /r AVX512F Convert eight packed double-precision floating-point values in zmm2/m512/m64bcst to eight signed doubleword integers in ymm1 using truncation subject to writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA VCVTTPD2QQ--Convert with Truncation Packed Double-Precision Floating-Point Values to Packed Quadword Integers. VCVTTPD2QQ xmm1 {k1}{z},xmm2/m128/m64bcst EVEX.128.66.0F.W1 7A /r AVX512VL AVX512DQ Convert two packed double-precision floating-point values from zmm2/m128/m64bcst to two packed quadword integers in zmm1 using truncation with writemask k1. VCVTTPD2QQ ymm1 {k1}{z},ymm2/m256/m64bcst EVEX.256.66.0F.W1 7A /r AVX512VL AVX512DQ Convert four packed double-precision floating-point values from ymm2/m256/m64bcst to four packed quadword integers in ymm1 using truncation with writemask k1. VCVTTPD2QQ zmm1 {k1}{z},zmm2/m512/m64bcst{sae} EVEX.512.66.0F.W1 7A /r AVX512DQ Convert eight packed double-precision floating-point values from zmm2/m512 to eight packed quadword integers in zmm1 using truncation with writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA VCVTTPD2UDQ--Convert with Truncation Packed Double-Precision Floating-Point Values to Packed Unsigned Doubleword Integers. VCVTTPD2UDQ xmm1 {k1}{z},xmm2/m128/m64bcst EVEX.128.0F.W1 78 /r AVX512VL AVX512F Convert two packed double-precision floating-point values in xmm2/m128/m64bcst to two unsigned doubleword integers in xmm1 using truncation subject to writemask k1. VCVTTPD2UDQ xmm1 {k1}{z},ymm2/m256/m64bcst EVEX.256.0F.W1 78 02 /r AVX512VL AVX512F Convert four packed double-precision floating-point values in ymm2/m256/m64bcst to four unsigned doubleword integers in xmm1 using truncation subject to writemask k1. VCVTTPD2UDQ ymm1 {k1}{z},zmm2/m512/m64bcst{sae} EVEX.512.0F.W1 78 /r AVX512F Convert eight packed double-precision floating-point values in zmm2/m512/m64bcst to eight unsigned doubleword integers in ymm1 using truncation subject to writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA VCVTTPD2UQQ--Convert with Truncation Packed Double-Precision Floating-Point Values to Packed Unsigned Quadword Integers. VCVTTPD2UQQ xmm1 {k1}{z},xmm2/m128/m64bcst EVEX.128.66.0F.W1 78 /r AVX512VL AVX512DQ Convert two packed double-precision floating-point values from xmm2/m128/m64bcst to two packed unsigned quadword integers in xmm1 using truncation with writemask k1. VCVTTPD2UQQ ymm1 {k1}{z},ymm2/m256/m64bcst EVEX.256.66.0F.W1 78 /r AVX512VL AVX512DQ Convert four packed double-precision floating-point values from ymm2/m256/m64bcst to four packed unsigned quadword integers in ymm1 using truncation with writemask k1. VCVTTPD2UQQ zmm1 {k1}{z},zmm2/m512/m64bcst{sae} EVEX.512.66.0F.W1 78 /r AVX512DQ Convert eight packed double-precision floating-point values from zmm2/mem to eight packed unsigned quadword integers in zmm1 using truncation with writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA CVTTPS2DQ--Convert with Truncation Packed Single-Precision Floating-Point Values to Packed Signed Doubleword Integer Values. CVTTPS2DQ xmm1,xmm2/m128 F3 0F 5B /r SSE2 Convert four packed single-precision floating-point values from xmm2/mem to four packed signed doubleword values in xmm1 using truncation. VCVTTPS2DQ xmm1,xmm2/m128 VEX.128.F3.0F.WIG 5B /r AVX Convert four packed single-precision floating-point values from xmm2/mem to four packed signed doubleword values in xmm1 using truncation. VCVTTPS2DQ ymm1,ymm2/m256 VEX.256.F3.0F.WIG 5B /r AVX Convert eight packed single-precision floating-point values from ymm2/mem to eight packed signed doubleword values in ymm1 using truncation. VCVTTPS2DQ xmm1 {k1}{z},xmm2/m128/m32bcst EVEX.128.F3.0F.W0 5B /r AVX512VL AVX512F Convert four packed single precision floating-point values from xmm2/m128/m32bcst to four packed signed doubleword values in xmm1 using truncation subject to writemask k1. VCVTTPS2DQ ymm1 {k1}{z},ymm2/m256/m32bcst EVEX.256.F3.0F.W0 5B /r AVX512VL AVX512F Convert eight packed single precision floating-point values from ymm2/m256/m32bcst to eight packed signed doubleword values in ymm1 using truncation subject to writemask k1. VCVTTPS2DQ zmm1 {k1}{z},zmm2/m512/m32bcst {sae} EVEX.512.F3.0F.W0 5B /r AVX512F Convert sixteen packed single-precision floating-point values from zmm2/m512/m32bcst to sixteen packed signed doubleword values in zmm1 using truncation subject to writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA VCVTTPS2UDQ--Convert with Truncation Packed Single-Precision Floating-Point Values to Packed Unsigned Doubleword Integer Values. VCVTTPS2UDQ xmm1 {k1}{z},xmm2/m128/m32bcst EVEX.128.0F.W0 78 /r AVX512VL AVX512F Convert four packed single precision floating-point values from xmm2/m128/m32bcst to four packed unsigned doubleword values in xmm1 using truncation subject to writemask k1. VCVTTPS2UDQ ymm1 {k1}{z},ymm2/m256/m32bcst EVEX.256.0F.W0 78 /r AVX512VL AVX512F Convert eight packed single precision floating-point values from ymm2/m256/m32bcst to eight packed unsigned doubleword values in ymm1 using truncation subject to writemask k1. VCVTTPS2UDQ zmm1 {k1}{z},zmm2/m512/m32bcst{sae} EVEX.512.0F.W0 78 /r AVX512F Convert sixteen packed single-precision floatingpoint values from zmm2/m512/m32bcst to sixteen packed unsigned doubleword values in zmm1 using truncation subject to writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA VCVTTPS2QQ--Convert with Truncation Packed Single Precision Floating-Point Values to Packed Singed Quadword Integer Values. VCVTTPS2QQ xmm1 {k1}{z},xmm2/m64/m32bcst EVEX.128.66.0F.W0 7A /r AVX512VL AVX512DQ Convert two packed single precision floating-point values from xmm2/m64/m32bcst to two packed signed quadword values in xmm1 using truncation subject to writemask k1. VCVTTPS2QQ ymm1 {k1}{z},xmm2/m128/m32bcst EVEX.256.66.0F.W0 7A /r AVX512VL AVX512DQ Convert four packed single precision floating-point values from xmm2/m128/m32bcst to four packed signed quadword values in ymm1 using truncation subject to writemask k1. VCVTTPS2QQ zmm1 {k1}{z},ymm2/m256/m32bcst{sae} EVEX.512.66.0F.W0 7A /r AVX512DQ Convert eight packed single precision floating-point values from ymm2/m256/m32bcst to eight packed signed quadword values in zmm1 using truncation subject to writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA VCVTTPS2UQQ--Convert with Truncation Packed Single Precision Floating-Point Values to Packed Unsigned Quadword Integer Values. VCVTTPS2UQQ xmm1 {k1}{z},xmm2/m64/m32bcst EVEX.128.66.0F.W0 78 /r AVX512VL AVX512DQ Convert two packed single precision floating-point values from zmm2/m64/m32bcst to two packed unsigned quadword values in zmm1 using truncation subject to writemask k1. VCVTTPS2UQQ ymm1 {k1}{z},xmm2/m128/m32bcst EVEX.256.66.0F.W0 78 /r AVX512VL AVX512DQ Convert four packed single precision floating-point values from xmm2/m128/m32bcst to four packed unsigned quadword values in ymm1 using truncation subject to writemask k1. VCVTTPS2UQQ zmm1 {k1}{z},ymm2/m256/m32bcst{sae} EVEX.512.66.0F.W0 78 /r AVX512DQ Convert eight packed single precision floating-point values from ymm2/m256/m32bcst to eight packed unsigned quadword values in zmm1 using truncation subject to writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA CVTTSD2SI--Convert with Truncation Scalar Double-Precision Floating-Point Value to Signed Integer. CVTTSD2SI r32,xmm1/m64 F2 0F 2C /r SSE2 Convert one double-precision floating-point value from xmm1/m64 to one signed doubleword integer in r32 using truncation. CVTTSD2SI r64,xmm1/m64 F2 REX.W 0F 2C /r SSE2 Convert one double-precision floating-point value from xmm1/m64 to one signed quadword integer in r64 using truncation. VCVTTSD2SI r32,xmm1/m64 VEX.128.F2.0F.W0 2C /r AVX Convert one double-precision floating-point value from xmm1/m64 to one signed doubleword integer in r32 using truncation. VCVTTSD2SI r64,xmm1/m64 VEX.128.F2.0F.W1 2C /r AVX Convert one double-precision floating-point value from xmm1/m64 to one signed quadword integer in r64 using truncation. VCVTTSD2SI r32,xmm1/m64{sae} EVEX.LIG.F2.0F.W0 2C /r AVX512F Convert one double-precision floating-point value from xmm1/m64 to one signed doubleword integer in r32 using truncation. VCVTTSD2SI r64,xmm1/m64{sae} EVEX.LIG.F2.0F.W1 2C /r AVX512F Convert one double-precision floating-point value from xmm1/m64 to one signed quadword integer in r64 using truncation. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA VCVTTSD2USI--Convert with Truncation Scalar Double-Precision Floating-Point Value to Unsigned Integer. VCVTTSD2USI r32,xmm1/m64{sae} EVEX.LIG.F2.0F.W0 78 /r AVX512F Convert one double-precision floating-point value from xmm1/m64 to one unsigned doubleword integer r32 using truncation. VCVTTSD2USI r64,xmm1/m64{sae} EVEX.LIG.F2.0F.W1 78 /r AVX512F Convert one double-precision floating-point value from xmm1/m64 to one unsigned quadword integer zeroextended into r64 using truncation. ModRM:reg(w) ModRM:r/m(r) NA NA CVTTSS2SI--Convert with Truncation Scalar Single-Precision Floating-Point Value to Integer. CVTTSS2SI r32,xmm1/m32 F3 0F 2C /r SSE Convert one single-precision floating-point value from xmm1/m32 to one signed doubleword integer in r32 using truncation. CVTTSS2SI r64,xmm1/m32 F3 REX.W 0F 2C /r SSE Convert one single-precision floating-point value from xmm1/m32 to one signed quadword integer in r64 using truncation. VCVTTSS2SI r32,xmm1/m32 VEX.128.F3.0F.W0 2C /r AVX Convert one single-precision floating-point value from xmm1/m32 to one signed doubleword integer in r32 using truncation. VCVTTSS2SI r64,xmm1/m32 VEX.128.F3.0F.W1 2C /r AVX Convert one single-precision floating-point value from xmm1/m32 to one signed quadword integer in r64 using truncation. VCVTTSS2SI r32,xmm1/m32{sae} EVEX.LIG.F3.0F.W0 2C /r AVX512F Convert one single-precision floating-point value from xmm1/m32 to one signed doubleword integer in r32 using truncation. VCVTTSS2SI r64,xmm1/m32{sae} EVEX.LIG.F3.0F.W1 2C /r AVX512F Convert one single-precision floating-point value from xmm1/m32 to one signed quadword integer in r64 using truncation. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA VCVTTSS2USI--Convert with Truncation Scalar Single-Precision Floating-Point Value to Unsigned Integer. VCVTTSS2USI r32,xmm1/m32{sae} EVEX.LIG.F3.0F.W0 78 /r AVX512F Convert one single-precision floating-point value from xmm1/m32 to one unsigned doubleword integer in r32 using truncation. VCVTTSS2USI r64,xmm1/m32{sae} EVEX.LIG.F3.0F.W1 78 /r AVX512F Convert one single-precision floating-point value from xmm1/m32 to one unsigned quadword integer in r64 using truncation. ModRM:reg(w) ModRM:r/m(r) NA NA VCVTUDQ2PD--Convert Packed Unsigned Doubleword Integers to Packed Double-Precision Floating-Point Values. VCVTUDQ2PD xmm1 {k1}{z},xmm2/m64/m32bcst EVEX.128.F3.0F.W0 7A /r AVX512VL AVX512F Convert two packed unsigned doubleword integers from ymm2/m64/m32bcst to packed double-precision floating-point values in zmm1 with writemask k1. VCVTUDQ2PD ymm1 {k1}{z},xmm2/m128/m32bcst EVEX.256.F3.0F.W0 7A /r AVX512VL AVX512F Convert four packed unsigned doubleword integers from xmm2/m128/m32bcst to packed doubleprecision floating-point values in zmm1 with writemask k1. VCVTUDQ2PD zmm1 {k1}{z},ymm2/m256/m32bcst EVEX.512.F3.0F.W0 7A /r AVX512F Convert eight packed unsigned doubleword integers from ymm2/m256/m32bcst to eight packed doubleprecision floating-point values in zmm1 with writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA VCVTUDQ2PS--Convert Packed Unsigned Doubleword Integers to Packed Single-Precision Floating-Point Values. VCVTUDQ2PS xmm1 {k1}{z},xmm2/m128/m32bcst EVEX.128.F2.0F.W0 7A /r AVX512VL AVX512F Convert four packed unsigned doubleword integers from xmm2/m128/m32bcst to packed single-precision floating-point values in xmm1 with writemask k1. VCVTUDQ2PS ymm1 {k1}{z},ymm2/m256/m32bcst EVEX.256.F2.0F.W0 7A /r AVX512VL AVX512F Convert eight packed unsigned doubleword integers from ymm2/m256/m32bcst to packed single-precision floating-point values in zmm1 with writemask k1. VCVTUDQ2PS zmm1 {k1}{z},zmm2/m512/m32bcst{er} EVEX.512.F2.0F.W0 7A /r AVX512F Convert sixteen packed unsigned doubleword integers from zmm2/m512/m32bcst to sixteen packed singleprecision floating-point values in zmm1 with writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA VCVTUQQ2PD--Convert Packed Unsigned Quadword Integers to Packed Double-Precision Floating-Point Values. VCVTUQQ2PD xmm1 {k1}{z},xmm2/m128/m64bcst EVEX.128.F3.0F.W1 7A /r AVX512VL AVX512DQ Convert two packed unsigned quadword integers from xmm2/m128/m64bcst to two packed double-precision floating-point values in xmm1 with writemask k1. VCVTUQQ2PD ymm1 {k1}{z},ymm2/m256/m64bcst EVEX.256.F3.0F.W1 7A /r AVX512VL AVX512DQ Convert four packed unsigned quadword integers from ymm2/m256/m64bcst to packed double-precision floatingpoint values in ymm1 with writemask k1. VCVTUQQ2PD zmm1 {k1}{z},zmm2/m512/m64bcst{er} EVEX.512.F3.0F.W1 7A /r AVX512DQ Convert eight packed unsigned quadword integers from zmm2/m512/m64bcst to eight packed double-precision floating-point values in zmm1 with writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA VCVTUQQ2PS--Convert Packed Unsigned Quadword Integers to Packed Single-Precision Floating-Point Values. VCVTUQQ2PS xmm1 {k1}{z},xmm2/m128/m64bcst EVEX.128.F2.0F.W1 7A /r AVX512VL AVX512DQ Convert two packed unsigned quadword integers from xmm2/m128/m64bcst to packed single-precision floatingpoint values in zmm1 with writemask k1. VCVTUQQ2PS xmm1 {k1}{z},ymm2/m256/m64bcst EVEX.256.F2.0F.W1 7A /r AVX512VL AVX512DQ Convert four packed unsigned quadword integers from ymm2/m256/m64bcst to packed single-precision floatingpoint values in xmm1 with writemask k1. VCVTUQQ2PS ymm1 {k1}{z},zmm2/m512/m64bcst{er} EVEX.512.F2.0F.W1 7A /r AVX512DQ Convert eight packed unsigned quadword integers from zmm2/m512/m64bcst to eight packed single-precision floating-point values in zmm1 with writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA VCVTUSI2SD--Convert Unsigned Integer to Scalar Double-Precision Floating-Point Value. VCVTUSI2SD xmm1,xmm2,r/m32 EVEX.NDS.LIG.F2.0F.W0 7B /r AVX512F Convert one unsigned doubleword integer from r/m32 to one double-precision floating-point value in xmm1. VCVTUSI2SD xmm1,xmm2,r/m64{er} EVEX.NDS.LIG.F2.0F.W1 7B /r AVX512F Convert one unsigned quadword integer from r/m64 to one double-precision floating-point value in xmm1. ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA VCVTUSI2SS--Convert Unsigned Integer to Scalar Single-Precision Floating-Point Value. VCVTUSI2SS xmm1,xmm2,r/m32{er} EVEX.NDS.LIG.F3.0F.W0 7B /r AVX512F Convert one signed doubleword integer from r/m32 to one single-precision floating-point value in xmm1. VCVTUSI2SS xmm1,xmm2,r/m64{er} EVEX.NDS.LIG.F3.0F.W1 7B /r AVX512F Convert one signed quadword integer from r/m64 to one single-precision floating-point value in xmm1. ModRM:reg(w) VEX.vvvv ModRM:r/m(r) NA VDBPSADBW--Double Block Packed Sum-Absolute-Differences (SAD) on Unsigned Bytes. VDBPSADBW xmm1 {k1}{z},xmm2,xmm3/m128,imm8 EVEX.NDS.128.66.0F3A.W0 42 /r ib AVX512VL AVX512BW Compute packed SAD word results of unsigned bytes in dword block from xmm2 with unsigned bytes of dword blocks transformed from xmm3/m128 using the shuffle controls in imm8. Results are written to xmm1 under the writemask k1. VDBPSADBW ymm1 {k1}{z},ymm2,ymm3/m256,imm8 EVEX.NDS.256.66.0F3A.W0 42 /r ib AVX512VL AVX512BW Compute packed SAD word results of unsigned bytes in dword block from ymm2 with unsigned bytes of dword blocks transformed from ymm3/m256 using the shuffle controls in imm8. Results are written to ymm1 under the writemask k1. VDBPSADBW zmm1 {k1}{z},zmm2,zmm3/m512,imm8 EVEX.NDS.512.66.0F3A.W0 42 /r ib AVX512BW Compute packed SAD word results of unsigned bytes in dword block from zmm2 with unsigned bytes of dword blocks transformed from zmm3/m512 using the shuffle controls in imm8. Results are written to zmm1 under the writemask k1. ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) Imm8 VEXPANDPD--Load Sparse Packed Double-Precision Floating-Point Values from Dense Memory. VEXPANDPD xmm1 {k1}{z},xmm2/m128 EVEX.128.66.0F38.W1 88 /r AVX512VL AVX512F Expand packed double-precision floating-point values from xmm2/m128 to xmm1 using writemask k1. VEXPANDPD ymm1 {k1}{z},ymm2/m256 EVEX.256.66.0F38.W1 88 /r AVX512VL AVX512F Expand packed double-precision floating-point values from ymm2/m256 to ymm1 using writemask k1. VEXPANDPD zmm1 {k1}{z},zmm2/m512 EVEX.512.66.0F38.W1 88 /r AVX512F Expand packed double-precision floating-point values from zmm2/m512 to zmm1 using writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA VEXPANDPS--Load Sparse Packed Single-Precision Floating-Point Values from Dense Memory. VEXPANDPS xmm1 {k1}{z},xmm2/m128 EVEX.128.66.0F38.W0 88 /r AVX512VL AVX512F Expand packed single-precision floating-point values from xmm2/m128 to xmm1 using writemask k1. VEXPANDPS ymm1 {k1}{z},ymm2/m256 EVEX.256.66.0F38.W0 88 /r AVX512VL AVX512F Expand packed single-precision floating-point values from ymm2/m256 to ymm1 using writemask k1. VEXPANDPS zmm1 {k1}{z},zmm2/m512 EVEX.512.66.0F38.W0 88 /r AVX512F Expand packed single-precision floating-point values from zmm2/m512 to zmm1 using writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA VEXTRACTF128/VEXTRACTF32x4/VEXTRACTF64x2/VEXTRACTF32x8/VEXTRACTF64x4--Extr act Packed Floating-Point Values. VEXTRACTF128 xmm1/m128,ymm2,imm8 VEX.256.66.0F3A.W0 19 /r ib AVX Extract 128 bits of packed floating-point values from ymm2 and store results in xmm1/m128. VEXTRACTF32X4 xmm1/m128 {k1}{z},ymm2,imm8 EVEX.256.66.0F3A.W0 19 /r ib AVX512VL AVX512F Extract 128 bits of packed single-precision floatingpoint values from ymm2 and store results in xmm1/m128 subject to writemask k1. VEXTRACTF32x4 xmm1/m128 {k1}{z},zmm2,imm8 EVEX.512.66.0F3A.W0 19 /r ib AVX512F Extract 128 bits of packed single-precision floatingpoint values from zmm2 and store results in xmm1/m128 subject to writemask k1. VEXTRACTF64X2 xmm1/m128 {k1}{z},ymm2,imm8 EVEX.256.66.0F3A.W1 19 /r ib AVX512VL AVX512DQ Extract 128 bits of packed double-precision floating-point values from ymm2 and store results in xmm1/m128 subject to writemask k1. VEXTRACTF64X2 xmm1/m128 {k1}{z},zmm2,imm8 EVEX.512.66.0F3A.W1 19 /r ib AVX512DQ Extract 128 bits of packed double-precision floating-point values from zmm2 and store results in xmm1/m128 subject to writemask k1. VEXTRACTF32X8 ymm1/m256 {k1}{z},zmm2,imm8 EVEX.512.66.0F3A.W0 1B /r ib AVX512DQ Extract 256 bits of packed single-precision floatingpoint values from zmm2 and store results in ymm1/m256 subject to writemask k1. VEXTRACTF64x4 ymm1/m256 {k1}{z},zmm2,imm8 EVEX.512.66.0F3A.W1 1B /r ib AVX512F Extract 256 bits of packed double-precision floating-point values from zmm2 and store results in ymm1/m256 subject to writemask k1. ModRM:r/m(w) ModRM:reg(r) Imm8 NA ModRM:r/m(w) ModRM:reg(r) Imm8 NA ModRM:r/m(w) ModRM:reg(r) Imm8 NA ModRM:r/m(w) ModRM:reg(r) Imm8 NA VEXTRACTI128/VEXTRACTI32x4/VEXTRACTI64x2/VEXTRACTI32x8/VEXTRACTI64x4--Extract packed Integer Values. VEXTRACTI128 xmm1/m128,ymm2,imm8 VEX.256.66.0F3A.W0 39 /r ib AVX2 Extract 128 bits of integer data from ymm2 and store results in xmm1/m128. VEXTRACTI32X4 xmm1/m128 {k1}{z},ymm2,imm8 EVEX.256.66.0F3A.W0 39 /r ib AVX512VL AVX512F Extract 128 bits of double-word integer values from ymm2 and store results in xmm1/m128 subject to writemask k1. VEXTRACTI32x4 xmm1/m128 {k1}{z},zmm2,imm8 EVEX.512.66.0F3A.W0 39 /r ib AVX512F Extract 128 bits of double-word integer values from zmm2 and store results in xmm1/m128 subject to writemask k1. VEXTRACTI64X2 xmm1/m128 {k1}{z},ymm2,imm8 EVEX.256.66.0F3A.W1 39 /r ib AVX512VL AVX512DQ Extract 128 bits of quad-word integer values from ymm2 and store results in xmm1/m128 subject to writemask k1. VEXTRACTI64X2 xmm1/m128 {k1}{z},zmm2,imm8 EVEX.512.66.0F3A.W1 39 /r ib AVX512DQ Extract 128 bits of quad-word integer values from zmm2 and store results in xmm1/m128 subject to writemask k1. VEXTRACTI32X8 ymm1/m256 {k1}{z},zmm2,imm8 EVEX.512.66.0F3A.W0 3B /r ib AVX512DQ Extract 256 bits of double-word integer values from zmm2 and store results in ymm1/m256 subject to writemask k1. VEXTRACTI64x4 ymm1/m256 {k1}{z},zmm2,imm8 EVEX.512.66.0F3A.W1 3B /r ib AVX512F Extract 256 bits of quad-word integer values from zmm2 and store results in ymm1/m256 subject to writemask k1. ModRM:r/m(w) ModRM:reg(r) Imm8 NA ModRM:r/m(w) ModRM:reg(r) Imm8 NA ModRM:r/m(w) ModRM:reg(r) Imm8 NA ModRM:r/m(w) ModRM:reg(r) Imm8 NA EXTRACTPS--Extract Packed Floating-Point Values. EXTRACTPS reg/m32,xmm1,imm8 66 0F 3A 17 /r ib SSE4_1 Extract one single-precision floating-point value from xmm1 at the offset specified by imm8 and store the result in reg or m32. Zero extend the results in 64-bit register if applicable. VEXTRACTPS reg/m32,xmm1,imm8 VEX.128.66.0F3A.WIG 17 /r ib AVX Extract one single-precision floating-point value from xmm1 at the offset specified by imm8 and store the result in reg or m32. Zero extend the results in 64-bit register if applicable. VEXTRACTPS reg/m32,xmm1,imm8 EVEX.128.66.0F3A.WIG 17 /r ib AVX512F Extract one single-precision floating-point value from xmm1 at the offset specified by imm8 and store the result in reg or m32. Zero extend the results in 64-bit register if applicable. ModRM:r/m(w) ModRM:reg(r) Imm8 NA ModRM:r/m(w) ModRM:reg(r) Imm8 NA VFIXUPIMMPD--Fix Up Special Packed Float64 Values. VFIXUPIMMPD xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst,imm8 EVEX.NDS.128.66.0F3A.W1 54 /r ib AVX512VL AVX512F Fix up special numbers in float64 vector xmm1, float64 vector xmm2 and int64 vector xmm3/m128/m64bcst and store the result in xmm1, under writemask. VFIXUPIMMPD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst,imm8 EVEX.NDS.256.66.0F3A.W1 54 /r ib AVX512VL AVX512F Fix up special numbers in float64 vector ymm1, float64 vector ymm2 and int64 vector ymm3/m256/m64bcst and store the result in ymm1, under writemask. VFIXUPIMMPD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst{sae},imm8 EVEX.NDS.512.66.0F3A.W1 54 /r ib AVX512F Fix up elements of float64 vector in zmm2 using int64 vector table in zmm3/m512/m64bcst, combine with preserved elements from zmm1, and store the result in zmm1. ModRM:reg(r,w) EVEX.vvvv ModRM:r/m(r) Imm8 VFIXUPIMMPS--Fix Up Special Packed Float32 Values. VFIXUPIMMPS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst,imm8 EVEX.NDS.128.66.0F3A.W0 54 /r AVX512VL AVX512F Fix up special numbers in float32 vector xmm1, float32 vector xmm2 and int32 vector xmm3/m128/m32bcst and store the result in xmm1, under writemask. VFIXUPIMMPS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst,imm8 EVEX.NDS.256.66.0F3A.W0 54 /r AVX512VL AVX512F Fix up special numbers in float32 vector ymm1, float32 vector ymm2 and int32 vector ymm3/m256/m32bcst and store the result in ymm1, under writemask. VFIXUPIMMPS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst{sae},imm8 EVEX.NDS.512.66.0F3A.W0 54 /r ib AVX512F Fix up elements of float32 vector in zmm2 using int32 vector table in zmm3/m512/m32bcst, combine with preserved elements from zmm1, and store the result in zmm1. ModRM:reg(r,w) EVEX.vvvv ModRM:r/m(r) Imm8 VFIXUPIMMSD--Fix Up Special Scalar Float64 Value. VFIXUPIMMSD xmm1 {k1}{z},xmm2,xmm3/m64{sae},imm8 EVEX.NDS.LIG.66.0F3A.W1 55 /r ib AVX512F Fix up a float64 number in the low quadword element of xmm2 using scalar int32 table in xmm3/m64 and store the result in xmm1. ModRM:reg(r,w) EVEX.vvvv ModRM:r/m(r) Imm8 VFIXUPIMMSS--Fix Up Special Scalar Float32 Value. VFIXUPIMMSS xmm1 {k1}{z},xmm2,xmm3/m32{sae},imm8 EVEX.NDS.LIG.66.0F3A.W0 55 /r ib AVX512F Fix up a float32 number in the low doubleword element in xmm2 using scalar int32 table in xmm3/m32 and store the result in xmm1. ModRM:reg(r,w) EVEX.vvvv ModRM:r/m(r) Imm8 VFMADD132PD/VFMADD213PD/VFMADD231PD--Fused Multiply-Add of Packed Double-Precision Floating-Point Values. VFMADD132PD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.W1 98 /r FMA Multiply packed double-precision floating-point values from xmm1 and xmm3/mem, add to xmm2 and put result in xmm1. VFMADD213PD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.W1 A8 /r FMA Multiply packed double-precision floating-point values from xmm1 and xmm2, add to xmm3/mem and put result in xmm1. VFMADD231PD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.W1 B8 /r FMA Multiply packed double-precision floating-point values from xmm2 and xmm3/mem, add to xmm1 and put result in xmm1. VFMADD132PD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.W1 98 /r FMA Multiply packed double-precision floating-point values from ymm1 and ymm3/mem, add to ymm2 and put result in ymm1. VFMADD213PD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.W1 A8 /r FMA Multiply packed double-precision floating-point values from ymm1 and ymm2, add to ymm3/mem and put result in ymm1. VFMADD231PD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.W1 B8 /r FMA Multiply packed double-precision floating-point values from ymm2 and ymm3/mem, add to ymm1 and put result in ymm1. VFMADD132PD xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F38.W1 98 /r AVX512VL AVX512F Multiply packed double-precision floating-point values from xmm1 and xmm3/m128/m64bcst, add to xmm2 and put result in xmm1. VFMADD213PD xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F38.W1 A8 /r AVX512VL AVX512F Multiply packed double-precision floating-point values from xmm1 and xmm2, add to xmm3/m128/m64bcst and put result in xmm1. VFMADD231PD xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F38.W1 B8 /r AVX512VL AVX512F Multiply packed double-precision floating-point values from xmm2 and xmm3/m128/m64bcst, add to xmm1 and put result in xmm1. VFMADD132PD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F38.W1 98 /r AVX512VL AVX512F Multiply packed double-precision floating-point values from ymm1 and ymm3/m256/m64bcst, add to ymm2 and put result in ymm1. VFMADD213PD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F38.W1 A8 /r AVX512VL AVX512F Multiply packed double-precision floating-point values from ymm1 and ymm2, add to ymm3/m256/m64bcst and put result in ymm1. VFMADD231PD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F38.W1 B8 /r AVX512VL AVX512F Multiply packed double-precision floating-point values from ymm2 and ymm3/m256/m64bcst, add to ymm1 and put result in ymm1. VFMADD132PD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst{er} EVEX.NDS.512.66.0F38.W1 98 /r AVX512F Multiply packed double-precision floating-point values from zmm1 and zmm3/m512/m64bcst, add to zmm2 and put result in zmm1. VFMADD213PD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst{er} EVEX.NDS.512.66.0F38.W1 A8 /r AVX512F Multiply packed double-precision floating-point values from zmm1 and zmm2, add to zmm3/m512/m64bcst and put result in zmm1. VFMADD231PD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst{er} EVEX.NDS.512.66.0F38.W1 B8 /r AVX512F Multiply packed double-precision floating-point values from zmm2 and zmm3/m512/m64bcst, add to zmm1 and put result in zmm1. ModRM:reg(r,w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(r,w) EVEX.vvvv(r) ModRM:r/m(r) NA VFMADD132PS/VFMADD213PS/VFMADD231PS--Fused Multiply-Add of Packed Single-Precision Floating-Point Values. VFMADD132PS xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.W0 98 /r FMA Multiply packed single-precision floating-point values from xmm1 and xmm3/mem, add to xmm2 and put result in xmm1. VFMADD213PS xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.W0 A8 /r FMA Multiply packed single-precision floating-point values from xmm1 and xmm2, add to xmm3/mem and put result in xmm1. VFMADD231PS xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.W0 B8 /r FMA Multiply packed single-precision floating-point values from xmm2 and xmm3/mem, add to xmm1 and put result in xmm1. VFMADD132PS ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.W0 98 /r FMA Multiply packed single-precision floating-point values from ymm1 and ymm3/mem, add to ymm2 and put result in ymm1. VFMADD213PS ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.W0 A8 /r FMA Multiply packed single-precision floating-point values from ymm1 and ymm2, add to ymm3/mem and put result in ymm1. VFMADD231PS ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.W0 B8 /r FMA Multiply packed single-precision floating-point values from ymm2 and ymm3/mem, add to ymm1 and put result in ymm1. VFMADD132PS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F38.W0 98 /r AVX512VL AVX512F Multiply packed single-precision floating-point values from xmm1 and xmm3/m128/m32bcst, add to xmm2 and put result in xmm1. VFMADD213PS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F38.W0 A8 /r AVX512VL AVX512F Multiply packed single-precision floating-point values from xmm1 and xmm2, add to xmm3/m128/m32bcst and put result in xmm1. VFMADD231PS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F38.W0 B8 /r AVX512VL AVX512F Multiply packed single-precision floating-point values from xmm2 and xmm3/m128/m32bcst, add to xmm1 and put result in xmm1. VFMADD132PS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F38.W0 98 /r AVX512VL AVX512F Multiply packed single-precision floating-point values from ymm1 and ymm3/m256/m32bcst, add to ymm2 and put result in ymm1. VFMADD213PS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F38.W0 A8 /r AVX512VL AVX512F Multiply packed single-precision floating-point values from ymm1 and ymm2, add to ymm3/m256/m32bcst and put result in ymm1. VFMADD231PS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F38.W0 B8 /r AVX512VL AVX512F Multiply packed single-precision floating-point values from ymm2 and ymm3/m256/m32bcst, add to ymm1 and put result in ymm1. VFMADD132PS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst{er} EVEX.NDS.512.66.0F38.W0 98 /r AVX512F Multiply packed single-precision floating-point values from zmm1 and zmm3/m512/m32bcst, add to zmm2 and put result in zmm1. VFMADD213PS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst{er} EVEX.NDS.512.66.0F38.W0 A8 /r AVX512F Multiply packed single-precision floating-point values from zmm1 and zmm2, add to zmm3/m512/m32bcst and put result in zmm1. VFMADD231PS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst{er} EVEX.NDS.512.66.0F38.W0 B8 /r AVX512F Multiply packed single-precision floating-point values from zmm2 and zmm3/m512/m32bcst, add to zmm1 and put result in zmm1. ModRM:reg(r,w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(r,w) EVEX.vvvv(r) ModRM:r/m(r) NA VFMADD132SD/VFMADD213SD/VFMADD231SD--Fused Multiply-Add of Scalar Double-Precision Floating-Point Values. VFMADD132SD xmm1,xmm2,xmm3/m64 VEX.DDS.128.66.0F38.W1 99 /r FMA Multiply scalar double-precision floating-point value from xmm1 and xmm3/m64, add to xmm2 and put result in xmm1. VFMADD213SD xmm1,xmm2,xmm3/m64 VEX.DDS.128.66.0F38.W1 A9 /r FMA Multiply scalar double-precision floating-point value from xmm1 and xmm2, add to xmm3/m64 and put result in xmm1. VFMADD231SD xmm1,xmm2,xmm3/m64 VEX.DDS.128.66.0F38.W1 B9 /r FMA Multiply scalar double-precision floating-point value from xmm2 and xmm3/m64, add to xmm1 and put result in xmm1. VFMADD132SD xmm1 {k1}{z},xmm2,xmm3/m64{er} EVEX.DDS.LIG.66.0F38.W1 99 /r AVX512F Multiply scalar double-precision floating-point value from xmm1 and xmm3/m64, add to xmm2 and put result in xmm1. VFMADD213SD xmm1 {k1}{z},xmm2,xmm3/m64{er} EVEX.DDS.LIG.66.0F38.W1 A9 /r AVX512F Multiply scalar double-precision floating-point value from xmm1 and xmm2, add to xmm3/m64 and put result in xmm1. VFMADD231SD xmm1 {k1}{z},xmm2,xmm3/m64{er} EVEX.DDS.LIG.66.0F38.W1 B9 /r AVX512F Multiply scalar double-precision floating-point value from xmm2 and xmm3/m64, add to xmm1 and put result in xmm1. ModRM:reg(r,w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(r,w) EVEX.vvvv(r) ModRM:r/m(r) NA VFMADD132SS/VFMADD213SS/VFMADD231SS--Fused Multiply-Add of Scalar Single-Precision Floating-Point Values. VFMADD132SS xmm1,xmm2,xmm3/m32 VEX.DDS.128.66.0F38.W0 99 /r FMA Multiply scalar single-precision floating-point value from xmm1 and xmm3/m32, add to xmm2 and put result in xmm1. VFMADD213SS xmm1,xmm2,xmm3/m32 VEX.DDS.128.66.0F38.W0 A9 /r FMA Multiply scalar single-precision floating-point value from xmm1 and xmm2, add to xmm3/m32 and put result in xmm1. VFMADD231SS xmm1,xmm2,xmm3/m32 VEX.DDS.128.66.0F38.W0 B9 /r FMA Multiply scalar single-precision floating-point value from xmm2 and xmm3/m32, add to xmm1 and put result in xmm1. VFMADD132SS xmm1 {k1}{z},xmm2,xmm3/m32{er} EVEX.DDS.LIG.66.0F38.W0 99 /r AVX512F Multiply scalar single-precision floating-point value from xmm1 and xmm3/m32, add to xmm2 and put result in xmm1. VFMADD213SS xmm1 {k1}{z},xmm2,xmm3/m32{er} EVEX.DDS.LIG.66.0F38.W0 A9 /r AVX512F Multiply scalar single-precision floating-point value from xmm1 and xmm2, add to xmm3/m32 and put result in xmm1. VFMADD231SS xmm1 {k1}{z},xmm2,xmm3/m32{er} EVEX.DDS.LIG.66.0F38.W0 B9 /r AVX512F Multiply scalar single-precision floating-point value from xmm2 an.d xmm3/m32, add to xmm1 and put result in xmm1. ModRM:reg(r,w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(r,w) EVEX.vvvv(r) ModRM:r/m(r) NA VFMADDSUB132PD/VFMADDSUB213PD/VFMADDSUB231PD--Fused Multiply-Alternating Add/Subtract of Packed Double-Precision Floating-Point Values. VFMADDSUB132PD xmm1,xmm2,xmm3/m128 VEX.DDS.128.66.0F38.W1 96 /r FMA Multiply packed double-precision floating-point values from xmm1 and xmm3/mem, add/subtract elements in xmm2 and put result in xmm1. VFMADDSUB213PD xmm1,xmm2,xmm3/m128 VEX.DDS.128.66.0F38.W1 A6 /r FMA Multiply packed double-precision floating-point values from xmm1 and xmm2, add/subtract elements in xmm3/mem and put result in xmm1. VFMADDSUB231PD xmm1,xmm2,xmm3/m128 VEX.DDS.128.66.0F38.W1 B6 /r FMA Multiply packed double-precision floating-point values from xmm2 and xmm3/mem, add/subtract elements in xmm1 and put result in xmm1. VFMADDSUB132PD ymm1,ymm2,ymm3/m256 VEX.DDS.256.66.0F38.W1 96 /r FMA Multiply packed double-precision floating-point values from ymm1 and ymm3/mem, add/subtract elements in ymm2 and put result in ymm1. VFMADDSUB213PD ymm1,ymm2,ymm3/m256 VEX.DDS.256.66.0F38.W1 A6 /r FMA Multiply packed double-precision floating-point values from ymm1 and ymm2, add/subtract elements in ymm3/mem and put result in ymm1. VFMADDSUB231PD ymm1,ymm2,ymm3/m256 VEX.DDS.256.66.0F38.W1 B6 /r FMA Multiply packed double-precision floating-point values from ymm2 and ymm3/mem, add/subtract elements in ymm1 and put result in ymm1. VFMADDSUB213PD xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.DDS.128.66.0F38.W1 A6 /r AVX512VL AVX512F Multiply packed double-precision floating-point values from xmm1 and xmm2, add/subtract elements in xmm3/m128/m64bcst and put result in xmm1 subject to writemask k1. VFMADDSUB231PD xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.DDS.128.66.0F38.W1 B6 /r AVX512VL AVX512F Multiply packed double-precision floating-point values from xmm2 and xmm3/m128/m64bcst, add/subtract elements in xmm1 and put result in xmm1 subject to writemask k1. VFMADDSUB132PD xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.DDS.128.66.0F38.W1 96 /r AVX512VL AVX512F Multiply packed double-precision floating-point values from xmm1 and xmm3/m128/m64bcst, add/subtract elements in xmm2 and put result in xmm1 subject to writemask k1. VFMADDSUB213PD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.DDS.256.66.0F38.W1 A6 /r AVX512VL AVX512F Multiply packed double-precision floating-point values from ymm1 and ymm2, add/subtract elements in ymm3/m256/m64bcst and put result in ymm1 subject to writemask k1. VFMADDSUB231PD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.DDS.256.66.0F38.W1 B6 /r AVX512VL AVX512F Multiply packed double-precision floating-point values from ymm2 and ymm3/m256/m64bcst, add/subtract elements in ymm1 and put result in ymm1 subject to writemask k1. VFMADDSUB132PD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.DDS.256.66.0F38.W1 96 /r AVX512VL AVX512F Multiply packed double-precision floating-point values from ymm1 and ymm3/m256/m64bcst, add/subtract elements in ymm2 and put result in ymm1 subject to writemask k1. VFMADDSUB213PD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst{er} EVEX.DDS.512.66.0F38.W1 A6 /r AVX512F Multiply packed double-precision floating-point values from zmm1and zmm2, add/subtract elements in zmm3/m512/m64bcst and put result in zmm1 subject to writemask k1. VFMADDSUB231PD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst{er} EVEX.DDS.512.66.0F38.W1 B6 /r AVX512F Multiply packed double-precision floating-point values from zmm2 and zmm3/m512/m64bcst, add/subtract elements in zmm1 and put result in zmm1 subject to writemask k1. VFMADDSUB132PD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst{er} EVEX.DDS.512.66.0F38.W1 96 /r AVX512F Multiply packed double-precision floating-point values from zmm1 and zmm3/m512/m64bcst, add/subtract elements in zmm2 and put result in zmm1 subject to writemask k1. ModRM:reg(r,w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(r,w) EVEX.vvvv(r) ModRM:r/m(r) NA VFMADDSUB132PS/VFMADDSUB213PS/VFMADDSUB231PS--Fused Multiply-Alternating Add/Subtract of Packed Single-Precision Floating-Point Values. VFMADDSUB132PS xmm1,xmm2,xmm3/m128 VEX.DDS.128.66.0F38.W0 96 /r FMA Multiply packed single-precision floating-point values from xmm1 and xmm3/mem, add/subtract elements in xmm2 and put result in xmm1. VFMADDSUB213PS xmm1,xmm2,xmm3/m128 VEX.DDS.128.66.0F38.W0 A6 /r FMA Multiply packed single-precision floating-point values from xmm1 and xmm2, add/subtract elements in xmm3/mem and put result in xmm1. VFMADDSUB231PS xmm1,xmm2,xmm3/m128 VEX.DDS.128.66.0F38.W0 B6 /r FMA Multiply packed single-precision floating-point values from xmm2 and xmm3/mem, add/subtract elements in xmm1 and put result in xmm1. VFMADDSUB132PS ymm1,ymm2,ymm3/m256 VEX.DDS.256.66.0F38.W0 96 /r FMA Multiply packed single-precision floating-point values from ymm1 and ymm3/mem, add/subtract elements in ymm2 and put result in ymm1. VFMADDSUB213PS ymm1,ymm2,ymm3/m256 VEX.DDS.256.66.0F38.W0 A6 /r FMA Multiply packed single-precision floating-point values from ymm1 and ymm2, add/subtract elements in ymm3/mem and put result in ymm1. VFMADDSUB231PS ymm1,ymm2,ymm3/m256 VEX.DDS.256.66.0F38.W0 B6 /r FMA Multiply packed single-precision floating-point values from ymm2 and ymm3/mem, add/subtract elements in ymm1 and put result in ymm1. VFMADDSUB213PS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.DDS.128.66.0F38.W0 A6 /r AVX512VL AVX512F Multiply packed single-precision floating-point values from xmm1 and xmm2, add/subtract elements in xmm3/m128/m32bcst and put result in xmm1 subject to writemask k1. VFMADDSUB231PS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.DDS.128.66.0F38.W0 B6 /r AVX512VL AVX512F Multiply packed single-precision floating-point values from xmm2 and xmm3/m128/m32bcst, add/subtract elements in xmm1 and put result in xmm1 subject to writemask k1. VFMADDSUB132PS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.DDS.128.66.0F38.W0 96 /r AVX512VL AVX512F Multiply packed single-precision floating-point values from xmm1 and xmm3/m128/m32bcst, add/subtract elements in zmm2 and put result in xmm1 subject to writemask k1. VFMADDSUB213PS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.DDS.256.66.0F38.W0 A6 /r AVX512VL AVX512F Multiply packed single-precision floating-point values from ymm1 and ymm2, add/subtract elements in ymm3/m256/m32bcst and put result in ymm1 subject to writemask k1. VFMADDSUB231PS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.DDS.256.66.0F38.W0 B6 /r AVX512VL AVX512F Multiply packed single-precision floating-point values from ymm2 and ymm3/m256/m32bcst, add/subtract elements in ymm1 and put result in ymm1 subject to writemask k1. VFMADDSUB132PS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.DDS.256.66.0F38.W0 96 /r AVX512VL AVX512F Multiply packed single-precision floating-point values from ymm1 and ymm3/m256/m32bcst, add/subtract elements in ymm2 and put result in ymm1 subject to writemask k1. VFMADDSUB213PS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst{er} EVEX.DDS.512.66.0F38.W0 A6 /r AVX512F Multiply packed single-precision floating-point values from zmm1 and zmm2, add/subtract elements in zmm3/m512/m32bcst and put result in zmm1 subject to writemask k1. VFMADDSUB231PS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst{er} EVEX.DDS.512.66.0F38.W0 B6 /r AVX512F Multiply packed single-precision floating-point values from zmm2 and zmm3/m512/m32bcst, add/subtract elements in zmm1 and put result in zmm1 subject to writemask k1. VFMADDSUB132PS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst{er} EVEX.DDS.512.66.0F38.W0 96 /r AVX512F Multiply packed single-precision floating-point values from zmm1 and zmm3/m512/m32bcst, add/subtract elements in zmm2 and put result in zmm1 subject to writemask k1. ModRM:reg(r,w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(r,w) EVEX.vvvv(r) ModRM:r/m(r) NA VFMSUBADD132PD/VFMSUBADD213PD/VFMSUBADD231PD--Fused Multiply-Alternating Subtract/Add of Packed Double-Precision Floating-Point Values. VFMSUBADD132PD xmm1,xmm2,xmm3/m128 VEX.DDS.128.66.0F38.W1 97 /r FMA Multiply packed double-precision floating-point values from xmm1 and xmm3/mem, subtract/add elements in xmm2 and put result in xmm1. VFMSUBADD213PD xmm1,xmm2,xmm3/m128 VEX.DDS.128.66.0F38.W1 A7 /r FMA Multiply packed double-precision floating-point values from xmm1 and xmm2, subtract/add elements in xmm3/mem and put result in xmm1. VFMSUBADD231PD xmm1,xmm2,xmm3/m128 VEX.DDS.128.66.0F38.W1 B7 /r FMA Multiply packed double-precision floating-point values from xmm2 and xmm3/mem, subtract/add elements in xmm1 and put result in xmm1. VFMSUBADD132PD ymm1,ymm2,ymm3/m256 VEX.DDS.256.66.0F38.W1 97 /r FMA Multiply packed double-precision floating-point values from ymm1 and ymm3/mem, subtract/add elements in ymm2 and put result in ymm1. VFMSUBADD213PD ymm1,ymm2,ymm3/m256 VEX.DDS.256.66.0F38.W1 A7 /r FMA Multiply packed double-precision floating-point values from ymm1 and ymm2, subtract/add elements in ymm3/mem and put result in ymm1. VFMSUBADD231PD ymm1,ymm2,ymm3/m256 VEX.DDS.256.66.0F38.W1 B7 /r FMA Multiply packed double-precision floating-point values from ymm2 and ymm3/mem, subtract/add elements in ymm1 and put result in ymm1. VFMSUBADD132PD xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.DDS.128.66.0F38.W1 97 /r AVX512VL AVX512F Multiply packed double-precision floating-point values from xmm1 and xmm3/m128/m64bcst, subtract/add elements in xmm2 and put result in xmm1 subject to writemask k1. VFMSUBADD213PD xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.DDS.128.66.0F38.W1 A7 /r AVX512VL AVX512F Multiply packed double-precision floating-point values from xmm1 and xmm2, subtract/add elements in xmm3/m128/m64bcst and put result in xmm1 subject to writemask k1. VFMSUBADD231PD xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.DDS.128.66.0F38.W1 B7 /r AVX512VL AVX512F Multiply packed double-precision floating-point values from xmm2 and xmm3/m128/m64bcst, subtract/add elements in xmm1 and put result in xmm1 subject to writemask k1. VFMSUBADD132PD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.DDS.256.66.0F38.W1 97 /r AVX512VL AVX512F Multiply packed double-precision floating-point values from ymm1 and ymm3/m256/m64bcst, subtract/add elements in ymm2 and put result in ymm1 subject to writemask k1. VFMSUBADD213PD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.DDS.256.66.0F38.W1 A7 /r AVX512VL AVX512F Multiply packed double-precision floating-point values from ymm1 and ymm2, subtract/add elements in ymm3/m256/m64bcst and put result in ymm1 subject to writemask k1. VFMSUBADD231PD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.DDS.256.66.0F38.W1 B7 /r AVX512VL AVX512F Multiply packed double-precision floating-point values from ymm2 and ymm3/m256/m64bcst, subtract/add elements in ymm1 and put result in ymm1 subject to writemask k1. VFMSUBADD132PD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst{er} EVEX.DDS.512.66.0F38.W1 97 /r AVX512F Multiply packed double-precision floating-point values from zmm1 and zmm3/m512/m64bcst, subtract/add elements in zmm2 and put result in zmm1 subject to writemask k1. VFMSUBADD213PD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst{er} EVEX.DDS.512.66.0F38.W1 A7 /r AVX512F Multiply packed double-precision floating-point values from zmm1 and zmm2, subtract/add elements in zmm3/m512/m64bcst and put result in zmm1 subject to writemask k1. VFMSUBADD231PD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst{er} EVEX.DDS.512.66.0F38.W1 B7 /r AVX512F Multiply packed double-precision floating-point values from zmm2 and zmm3/m512/m64bcst, subtract/add elements in zmm1 and put result in zmm1 subject to writemask k1. ModRM:reg(r,w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(r,w) EVEX.vvvv(r) ModRM:r/m(r) NA VFMSUBADD132PS/VFMSUBADD213PS/VFMSUBADD231PS--Fused Multiply-Alternating Subtract/Add of Packed Single-Precision Floating-Point Values. VFMSUBADD132PS xmm1,xmm2,xmm3/m128 VEX.DDS.128.66.0F38.W0 97 /r FMA Multiply packed single-precision floating-point values from xmm1 and xmm3/mem, subtract/add elements in xmm2 and put result in xmm1. VFMSUBADD213PS xmm1,xmm2,xmm3/m128 VEX.DDS.128.66.0F38.W0 A7 /r FMA Multiply packed single-precision floating-point values from xmm1 and xmm2, subtract/add elements in xmm3/mem and put result in xmm1. VFMSUBADD231PS xmm1,xmm2,xmm3/m128 VEX.DDS.128.66.0F38.W0 B7 /r FMA Multiply packed single-precision floating-point values from xmm2 and xmm3/mem, subtract/add elements in xmm1 and put result in xmm1. VFMSUBADD132PS ymm1,ymm2,ymm3/m256 VEX.DDS.256.66.0F38.W0 97 /r FMA Multiply packed single-precision floating-point values from ymm1 and ymm3/mem, subtract/add elements in ymm2 and put result in ymm1. VFMSUBADD213PS ymm1,ymm2,ymm3/m256 VEX.DDS.256.66.0F38.W0 A7 /r FMA Multiply packed single-precision floating-point values from ymm1 and ymm2, subtract/add elements in ymm3/mem and put result in ymm1. VFMSUBADD231PS ymm1,ymm2,ymm3/m256 VEX.DDS.256.66.0F38.W0 B7 /r FMA Multiply packed single-precision floating-point values from ymm2 and ymm3/mem, subtract/add elements in ymm1 and put result in ymm1. VFMSUBADD132PS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.DDS.128.66.0F38.W0 97 /r AVX512VL AVX512F Multiply packed single-precision floating-point values from xmm1 and xmm3/m128/m32bcst, subtract/add elements in xmm2 and put result in xmm1 subject to writemask k1. VFMSUBADD213PS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.DDS.128.66.0F38.W0 A7 /r AVX512VL AVX512F Multiply packed single-precision floating-point values from xmm1 and xmm2, subtract/add elements in xmm3/m128/m32bcst and put result in xmm1 subject to writemask k1. VFMSUBADD231PS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.DDS.128.66.0F38.W0 B7 /r AVX512VL AVX512F Multiply packed single-precision floating-point values from xmm2 and xmm3/m128/m32bcst, subtract/add elements in xmm1 and put result in xmm1 subject to writemask k1. VFMSUBADD132PS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.DDS.256.66.0F38.W0 97 /r AVX512VL AVX512F Multiply packed single-precision floating-point values from ymm1 and ymm3/m256/m32bcst, subtract/add elements in ymm2 and put result in ymm1 subject to writemask k1. VFMSUBADD213PS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.DDS.256.66.0F38.W0 A7 /r AVX512VL AVX512F Multiply packed single-precision floating-point values from ymm1 and ymm2, subtract/add elements in ymm3/m256/m32bcst and put result in ymm1 subject to writemask k1. VFMSUBADD231PS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.DDS.256.66.0F38.W0 B7 /r AVX512VL AVX512F Multiply packed single-precision floating-point values from ymm2 and ymm3/m256/m32bcst, subtract/add elements in ymm1 and put result in ymm1 subject to writemask k1. VFMSUBADD132PS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst{er} EVEX.DDS.512.66.0F38.W0 97 /r AVX512F Multiply packed single-precision floating-point values from zmm1 and zmm3/m512/m32bcst, subtract/add elements in zmm2 and put result in zmm1 subject to writemask k1. VFMSUBADD213PS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst{er} EVEX.DDS.512.66.0F38.W0 A7 /r AVX512F Multiply packed single-precision floating-point values from zmm1 and zmm2, subtract/add elements in zmm3/m512/m32bcst and put result in zmm1 subject to writemask k1. VFMSUBADD231PS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst{er} EVEX.DDS.512.66.0F38.W0 B7 /r AVX512F Multiply packed single-precision floating-point values from zmm2 and zmm3/m512/m32bcst, subtract/add elements in zmm1 and put result in zmm1 subject to writemask k1. ModRM:reg(r,w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(r,w) EVEX.vvvv(r) ModRM:r/m(r) NA VFMSUB132PD/VFMSUB213PD/VFMSUB231PD--Fused Multiply-Subtract of Packed Double-Precision Floating-Point Values. VFMSUB132PD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.W1 9A /r FMA Multiply packed double-precision floating-point values from xmm1 and xmm3/mem, subtract xmm2 and put result in xmm1. VFMSUB213PD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.W1 AA /r FMA Multiply packed double-precision floating-point values from xmm1 and xmm2, subtract xmm3/mem and put result in xmm1. VFMSUB231PD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.W1 BA /r FMA Multiply packed double-precision floating-point values from xmm2 and xmm3/mem, subtract xmm1 and put result in xmm1. VFMSUB132PD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.W1 9A /r FMA Multiply packed double-precision floating-point values from ymm1 and ymm3/mem, subtract ymm2 and put result in ymm1. VFMSUB213PD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.W1 AA /r FMA Multiply packed double-precision floating-point values from ymm1 and ymm2, subtract ymm3/mem and put result in ymm1. VFMSUB231PD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.W1 BA /r FMA Multiply packed double-precision floating-point values from ymm2 and ymm3/mem, subtract ymm1 and put result in ymm1.S. VFMSUB132PD xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F38.W1 9A /r AVX512VL AVX512F Multiply packed double-precision floating-point values from xmm1 and xmm3/m128/m64bcst, subtract xmm2 and put result in xmm1 subject to writemask k1. VFMSUB213PD xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F38.W1 AA /r AVX512VL AVX512F Multiply packed double-precision floating-point values from xmm1 and xmm2, subtract xmm3/m128/m64bcst and put result in xmm1 subject to writemask k1. VFMSUB231PD xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F38.W1 BA /r AVX512VL AVX512F Multiply packed double-precision floating-point values from xmm2 and xmm3/m128/m64bcst, subtract xmm1 and put result in xmm1 subject to writemask k1. VFMSUB132PD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F38.W1 9A /r AVX512VL AVX512F Multiply packed double-precision floating-point values from ymm1 and ymm3/m256/m64bcst, subtract ymm2 and put result in ymm1 subject to writemask k1. VFMSUB213PD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F38.W1 AA /r AVX512VL AVX512F Multiply packed double-precision floating-point values from ymm1 and ymm2, subtract ymm3/m256/m64bcst and put result in ymm1 subject to writemask k1. VFMSUB231PD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F38.W1 BA /r AVX512VL AVX512F Multiply packed double-precision floating-point values from ymm2 and ymm3/m256/m64bcst, subtract ymm1 and put result in ymm1 subject to writemask k1. VFMSUB132PD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst{er} EVEX.NDS.512.66.0F38.W1 9A /r AVX512F Multiply packed double-precision floating-point values from zmm1 and zmm3/m512/m64bcst, subtract zmm2 and put result in zmm1 subject to writemask k1. VFMSUB213PD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst{er} EVEX.NDS.512.66.0F38.W1 AA /r AVX512F Multiply packed double-precision floating-point values from zmm1 and zmm2, subtract zmm3/m512/m64bcst and put result in zmm1 subject to writemask k1. VFMSUB231PD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst{er} EVEX.NDS.512.66.0F38.W1 BA /r AVX512F Multiply packed double-precision floating-point values from zmm2 and zmm3/m512/m64bcst, subtract zmm1 and put result in zmm1 subject to writemask k1. ModRM:reg(r,w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(r,w) EVEX.vvvv(r) ModRM:r/m(r) NA VFMSUB132PS/VFMSUB213PS/VFMSUB231PS--Fused Multiply-Subtract of Packed Single-Precision Floating-Point Values. VFMSUB132PS xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.W0 9A /r FMA Multiply packed single-precision floating-point values from xmm1 and xmm3/mem, subtract xmm2 and put result in xmm1. VFMSUB213PS xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.W0 AA /r FMA Multiply packed single-precision floating-point values from xmm1 and xmm2, subtract xmm3/mem and put result in xmm1. VFMSUB231PS xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.W0 BA /r FMA Multiply packed single-precision floating-point values from xmm2 and xmm3/mem, subtract xmm1 and put result in xmm1. VFMSUB132PS ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.W0 9A /r FMA Multiply packed single-precision floating-point values from ymm1 and ymm3/mem, subtract ymm2 and put result in ymm1. VFMSUB213PS ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.W0 AA /r FMA Multiply packed single-precision floating-point values from ymm1 and ymm2, subtract ymm3/mem and put result in ymm1. VFMSUB231PS ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.W0 BA /r FMA Multiply packed single-precision floating-point values from ymm2 and ymm3/mem, subtract ymm1 and put result in ymm1. VFMSUB132PS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F38.W0 9A /r AVX512VL AVX512F Multiply packed single-precision floating-point values from xmm1 and xmm3/m128/m32bcst, subtract xmm2 and put result in xmm1. VFMSUB213PS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F38.W0 AA /r AVX512VL AVX512F Multiply packed single-precision floating-point values from xmm1 and xmm2, subtract xmm3/m128/m32bcst and put result in xmm1. VFMSUB231PS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F38.W0 BA /r AVX512VL AVX512F Multiply packed single-precision floating-point values from xmm2 and xmm3/m128/m32bcst, subtract xmm1 and put result in xmm1. VFMSUB132PS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F38.W0 9A /r AVX512VL AVX512F Multiply packed single-precision floating-point values from ymm1 and ymm3/m256/m32bcst, subtract ymm2 and put result in ymm1. VFMSUB213PS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F38.W0 AA /r AVX512VL AVX512F Multiply packed single-precision floating-point values from ymm1 and ymm2, subtract ymm3/m256/m32bcst and put result in ymm1. VFMSUB231PS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F38.W0 BA /r AVX512VL AVX512F Multiply packed single-precision floating-point values from ymm2 and ymm3/m256/m32bcst, subtract ymm1 and put result in ymm1. VFMSUB132PS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst{er} EVEX.NDS.512.66.0F38.W0 9A /r AVX512F Multiply packed single-precision floating-point values from zmm1 and zmm3/m512/m32bcst, subtract zmm2 and put result in zmm1. VFMSUB213PS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst{er} EVEX.NDS.512.66.0F38.W0 AA /r AVX512F Multiply packed single-precision floating-point values from zmm1 and zmm2, subtract zmm3/m512/m32bcst and put result in zmm1. VFMSUB231PS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst{er} EVEX.NDS.512.66.0F38.W0 BA /r AVX512F Multiply packed single-precision floating-point values from zmm2 and zmm3/m512/m32bcst, subtract zmm1 and put result in zmm1. ModRM:reg(r,w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(r,w) EVEX.vvvv(r) ModRM:r/m(r) NA VFMSUB132SD/VFMSUB213SD/VFMSUB231SD--Fused Multiply-Subtract of Scalar Double-Precision Floating-Point Values. VFMSUB132SD xmm1,xmm2,xmm3/m64 VEX.DDS.128.66.0F38.W1 9B /r FMA Multiply scalar double-precision floating-point value from xmm1 and xmm3/m64, subtract xmm2 and put result in xmm1. VFMSUB213SD xmm1,xmm2,xmm3/m64 VEX.DDS.128.66.0F38.W1 AB /r FMA Multiply scalar double-precision floating-point value from xmm1 and xmm2, subtract xmm3/m64 and put result in xmm1. VFMSUB231SD xmm1,xmm2,xmm3/m64 VEX.DDS.128.66.0F38.W1 BB /r FMA Multiply scalar double-precision floating-point value from xmm2 and xmm3/m64, subtract xmm1 and put result in xmm1. VFMSUB132SD xmm1 {k1}{z},xmm2,xmm3/m64{er} EVEX.DDS.LIG.66.0F38.W1 9B /r AVX512F Multiply scalar double-precision floating-point value from xmm1 and xmm3/m64, subtract xmm2 and put result in xmm1. VFMSUB213SD xmm1 {k1}{z},xmm2,xmm3/m64{er} EVEX.DDS.LIG.66.0F38.W1 AB /r AVX512F Multiply scalar double-precision floating-point value from xmm1 and xmm2, subtract xmm3/m64 and put result in xmm1. VFMSUB231SD xmm1 {k1}{z},xmm2,xmm3/m64{er} EVEX.DDS.LIG.66.0F38.W1 BB /r AVX512F Multiply scalar double-precision floating-point value from xmm2 and xmm3/m64, subtract xmm1 and put result in xmm1. ModRM:reg(r,w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(r,w) EVEX.vvvv(r) ModRM:r/m(r) NA VFMSUB132SS/VFMSUB213SS/VFMSUB231SS--Fused Multiply-Subtract of Scalar Single-Precision Floating-Point Values. VFMSUB132SS xmm1,xmm2,xmm3/m32 VEX.DDS.128.66.0F38.W0 9B /r FMA Multiply scalar single-precision floating-point value from xmm1 and xmm3/m32, subtract xmm2 and put result in xmm1. VFMSUB213SS xmm1,xmm2,xmm3/m32 VEX.DDS.128.66.0F38.W0 AB /r FMA Multiply scalar single-precision floating-point value from xmm1 and xmm2, subtract xmm3/m32 and put result in xmm1. VFMSUB231SS xmm1,xmm2,xmm3/m32 VEX.DDS.128.66.0F38.W0 BB /r FMA Multiply scalar single-precision floating-point value from xmm2 and xmm3/m32, subtract xmm1 and put result in xmm1. VFMSUB132SS xmm1 {k1}{z},xmm2,xmm3/m32{er} EVEX.DDS.LIG.66.0F38.W0 9B /r AVX512F Multiply scalar single-precision floating-point value from xmm1 and xmm3/m32, subtract xmm2 and put result in xmm1. VFMSUB213SS xmm1 {k1}{z},xmm2,xmm3/m32{er} EVEX.DDS.LIG.66.0F38.W0 AB /r AVX512F Multiply scalar single-precision floating-point value from xmm1 and xmm2, subtract xmm3/m32 and put result in xmm1. VFMSUB231SS xmm1 {k1}{z},xmm2,xmm3/m32{er} EVEX.DDS.LIG.66.0F38.W0 BB /r AVX512F Multiply scalar single-precision floating-point value from xmm2 and xmm3/m32, subtract xmm1 and put result in xmm1. ModRM:reg(r,w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(r,w) EVEX.vvvv(r) ModRM:r/m(r) NA VFNMADD132PD/VFNMADD213PD/VFNMADD231PD--Fused Negative Multiply-Add of Packed Double-Precision Floating-Point Values. VFNMADD132PD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.W1 9C /r FMA Multiply packed double-precision floating-point values from xmm1 and xmm3/mem, negate the multiplication result and add to xmm2 and put result in xmm1. VFNMADD213PD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.W1 AC /r FMA Multiply packed double-precision floating-point values from xmm1 and xmm2, negate the multiplication result and add to xmm3/mem and put result in xmm1. VFNMADD231PD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.W1 BC /r FMA Multiply packed double-precision floating-point values from xmm2 and xmm3/mem, negate the multiplication result and add to xmm1 and put result in xmm1. VFNMADD132PD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.W1 9C /r FMA Multiply packed double-precision floating-point values from ymm1 and ymm3/mem, negate the multiplication result and add to ymm2 and put result in ymm1. VFNMADD213PD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.W1 AC /r FMA Multiply packed double-precision floating-point values from ymm1 and ymm2, negate the multiplication result and add to ymm3/mem and put result in ymm1. VFNMADD231PD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.W1 BC /r FMA Multiply packed double-precision floating-point values from ymm2 and ymm3/mem, negate the multiplication result and add to ymm1 and put result in ymm1. VFNMADD132PD xmm0 {k1}{z},xmm1,xmm2/m128/m64bcst EVEX.NDS.128.66.0F38.W1 9C /r AVX512VL AVX512F Multiply packed double-precision floating-point values from xmm1 and xmm3/m128/m64bcst, negate the multiplication result and add to xmm2 and put result in xmm1. VFNMADD213PD xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F38.W1 AC /r AVX512VL AVX512F Multiply packed double-precision floating-point values from xmm1 and xmm2, negate the multiplication result and add to xmm3/m128/m64bcst and put result in xmm1. VFNMADD231PD xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F38.W1 BC /r AVX512VL AVX512F Multiply packed double-precision floating-point values from xmm2 and xmm3/m128/m64bcst, negate the multiplication result and add to xmm1 and put result in xmm1. VFNMADD132PD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F38.W1 9C /r AVX512VL AVX512F Multiply packed double-precision floating-point values from ymm1 and ymm3/m256/m64bcst, negate the multiplication result and add to ymm2 and put result in ymm1. VFNMADD213PD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F38.W1 AC /r AVX512VL AVX512F Multiply packed double-precision floating-point values from ymm1 and ymm2, negate the multiplication result and add to ymm3/m256/m64bcst and put result in ymm1. VFNMADD231PD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F38.W1 BC /r AVX512VL AVX512F Multiply packed double-precision floating-point values from ymm2 and ymm3/m256/m64bcst, negate the multiplication result and add to ymm1 and put result in ymm1. VFNMADD132PD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst{er} EVEX.NDS.512.66.0F38.W1 9C /r AVX512F Multiply packed double-precision floating-point values from zmm1 and zmm3/m512/m64bcst, negate the multiplication result and add to zmm2 and put result in zmm1. VFNMADD213PD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst{er} EVEX.NDS.512.66.0F38.W1 AC /r AVX512F Multiply packed double-precision floating-point values from zmm1 and zmm2, negate the multiplication result and add to zmm3/m512/m64bcst and put result in zmm1. VFNMADD231PD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst{er} EVEX.NDS.512.66.0F38.W1 BC /r AVX512F Multiply packed double-precision floating-point values from zmm2 and zmm3/m512/m64bcst, negate the multiplication result and add to zmm1 and put result in zmm1. ModRM:reg(r,w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(r,w) EVEX.vvvv(r) ModRM:r/m(r) NA VFNMADD132PS/VFNMADD213PS/VFNMADD231PS--Fused Negative Multiply-Add of Packed Single-Precision Floating-Point Values. VFNMADD132PS xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.W0 9C /r FMA Multiply packed single-precision floating-point values from xmm1 and xmm3/mem, negate the multiplication result and add to xmm2 and put result in xmm1. VFNMADD213PS xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.W0 AC /r FMA Multiply packed single-precision floating-point values from xmm1 and xmm2, negate the multiplication result and add to xmm3/mem and put result in xmm1. VFNMADD231PS xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.W0 BC /r FMA Multiply packed single-precision floating-point values from xmm2 and xmm3/mem, negate the multiplication result and add to xmm1 and put result in xmm1. VFNMADD132PS ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.W0 9C /r FMA Multiply packed single-precision floating-point values from ymm1 and ymm3/mem, negate the multiplication result and add to ymm2 and put result in ymm1. VFNMADD213PS ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.W0 AC /r FMA Multiply packed single-precision floating-point values from ymm1 and ymm2, negate the multiplication result and add to ymm3/mem and put result in ymm1. VFNMADD231PS ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.W0 BC /r FMA Multiply packed single-precision floating-point values from ymm2 and ymm3/mem, negate the multiplication result and add to ymm1 and put result in ymm1. VFNMADD132PS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F38.W0 9C /r AVX512VL AVX512F Multiply packed single-precision floating-point values from xmm1 and xmm3/m128/m32bcst, negate the multiplication result and add to xmm2 and put result in xmm1. VFNMADD213PS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F38.W0 AC /r AVX512VL AVX512F Multiply packed single-precision floating-point values from xmm1 and xmm2, negate the multiplication result and add to xmm3/m128/m32bcst and put result in xmm1. VFNMADD231PS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F38.W0 BC /r AVX512VL AVX512F Multiply packed single-precision floating-point values from xmm2 and xmm3/m128/m32bcst, negate the multiplication result and add to xmm1 and put result in xmm1. VFNMADD132PS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F38.W0 9C /r AVX512VL AVX512F Multiply packed single-precision floating-point values from ymm1 and ymm3/m256/m32bcst, negate the multiplication result and add to ymm2 and put result in ymm1. VFNMADD213PS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F38.W0 AC /r AVX512VL AVX512F Multiply packed single-precision floating-point values from ymm1 and ymm2, negate the multiplication result and add to ymm3/m256/m32bcst and put result in ymm1. VFNMADD231PS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F38.W0 BC /r AVX512VL AVX512F Multiply packed single-precision floating-point values from ymm2 and ymm3/m256/m32bcst, negate the multiplication result and add to ymm1 and put result in ymm1. VFNMADD132PS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst{er} EVEX.NDS.512.66.0F38.W0 9C /r AVX512VL AVX512F Multiply packed single-precision floating-point values from zmm1 and zmm3/m512/m32bcst, negate the multiplication result and add to zmm2 and put result in zmm1. VFNMADD213PS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst{er} EVEX.NDS.512.66.0F38.W0 AC /r AVX512F Multiply packed single-precision floating-point values from zmm1 and zmm2, negate the multiplication result and add to zmm3/m512/m32bcst and put result in zmm1. VFNMADD231PS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst{er} EVEX.NDS.512.66.0F38.W0 BC /r AVX512F Multiply packed single-precision floating-point values from zmm2 and zmm3/m512/m32bcst, negate the multiplication result and add to zmm1 and put result in zmm1. ModRM:reg(r,w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(r,w) EVEX.vvvv(r) ModRM:r/m(r) NA VFNMADD132SD/VFNMADD213SD/VFNMADD231SD--Fused Negative Multiply-Add of Scalar Double-Precision Floating-Point Values. VFNMADD132SD xmm1,xmm2,xmm3/m64 VEX.DDS.128.66.0F38.W1 9D /r FMA Multiply scalar double-precision floating-point value from xmm1 and xmm3/mem, negate the multiplication result and add to xmm2 and put result in xmm1. VFNMADD213SD xmm1,xmm2,xmm3/m64 VEX.DDS.128.66.0F38.W1 AD /r FMA Multiply scalar double-precision floating-point value from xmm1 and xmm2, negate the multiplication result and add to xmm3/mem and put result in xmm1. VFNMADD231SD xmm1,xmm2,xmm3/m64 VEX.DDS.128.66.0F38.W1 BD /r FMA Multiply scalar double-precision floating-point value from xmm2 and xmm3/mem, negate the multiplication result and add to xmm1 and put result in xmm1. VFNMADD132SD xmm1 {k1}{z},xmm2,xmm3/m64{er} EVEX.DDS.LIG.66.0F38.W1 9D /r AVX512F Multiply scalar double-precision floating-point value from xmm1 and xmm3/m64, negate the multiplication result and add to xmm2 and put result in xmm1. VFNMADD213SD xmm1 {k1}{z},xmm2,xmm3/m64{er} EVEX.DDS.LIG.66.0F38.W1 AD /r AVX512F Multiply scalar double-precision floating-point value from xmm1 and xmm2, negate the multiplication result and add to xmm3/m64 and put result in xmm1. VFNMADD231SD xmm1 {k1}{z},xmm2,xmm3/m64{er} EVEX.DDS.LIG.66.0F38.W1 BD /r AVX512F Multiply scalar double-precision floating-point value from xmm2 and xmm3/m64, negate the multiplication result and add to xmm1 and put result in xmm1. ModRM:reg(r,w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(r,w) EVEX.vvvv(r) ModRM:r/m(r) NA VFNMADD132SS/VFNMADD213SS/VFNMADD231SS--Fused Negative Multiply-Add of Scalar Single-Precision Floating-Point Values. VFNMADD132SS xmm1,xmm2,xmm3/m32 VEX.DDS.LIG.128.66.0F38.W0 9D /r FMA Multiply scalar single-precision floating-point value from xmm1 and xmm3/m32, negate the multiplication result and add to xmm2 and put result in xmm1. VFNMADD213SS xmm1,xmm2,xmm3/m32 VEX.DDS.LIG.128.66.0F38.W0 AD /r FMA Multiply scalar single-precision floating-point value from xmm1 and xmm2, negate the multiplication result and add to xmm3/m32 and put result in xmm1. VFNMADD231SS xmm1,xmm2,xmm3/m32 VEX.DDS.LIG.128.66.0F38.W0 BD /r FMA Multiply scalar single-precision floating-point value from xmm2 and xmm3/m32, negate the multiplication result and add to xmm1 and put result in xmm1. VFNMADD132SS xmm1 {k1}{z},xmm2,xmm3/m32{er} EVEX.DDS.LIG.66.0F38.W0 9D /r AVX512F Multiply scalar single-precision floating-point value from xmm1 and xmm3/m32, negate the multiplication result and add to xmm2 and put result in xmm1. VFNMADD213SS xmm1 {k1}{z},xmm2,xmm3/m32{er} EVEX.DDS.LIG.66.0F38.W0 AD /r AVX512F Multiply scalar single-precision floating-point value from xmm1 and xmm2, negate the multiplication result and add to xmm3/m32 and put result in xmm1. VFNMADD231SS xmm1 {k1}{z},xmm2,xmm3/m32{er} EVEX.DDS.LIG.66.0F38.W0 BD /r AVX512F Multiply scalar single-precision floating-point value from xmm2 and xmm3/m32, negate the multiplication result and add to xmm1 and put result in xmm1. ModRM:reg(r,w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(r,w) EVEX.vvvv(r) ModRM:r/m(r) NA VFNMSUB132PD/VFNMSUB213PD/VFNMSUB231PD--Fused Negative Multiply-Subtract of Packed Double-Precision Floating-Point Values. VFNMSUB132PD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.W1 9E /r FMA Multiply packed double-precision floating-point values from xmm1 and xmm3/mem, negate the multiplication result and subtract xmm2 and put result in xmm1. VFNMSUB213PD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.W1 AE /r FMA Multiply packed double-precision floating-point values from xmm1 and xmm2, negate the multiplication result and subtract xmm3/mem and put result in xmm1. VFNMSUB231PD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.W1 BE /r FMA Multiply packed double-precision floating-point values from xmm2 and xmm3/mem, negate the multiplication result and subtract xmm1 and put result in xmm1. VFNMSUB132PD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.W1 9E /r FMA Multiply packed double-precision floating-point values from ymm1 and ymm3/mem, negate the multiplication result and subtract ymm2 and put result in ymm1. VFNMSUB213PD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.W1 AE /r FMA Multiply packed double-precision floating-point values from ymm1 and ymm2, negate the multiplication result and subtract ymm3/mem and put result in ymm1. VFNMSUB231PD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.W1 BE /r FMA Multiply packed double-precision floating-point values from ymm2 and ymm3/mem, negate the multiplication result and subtract ymm1 and put result in ymm1. VFNMSUB132PD xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F38.W1 9E /r AVX512VL AVX512F Multiply packed double-precision floating-point values from xmm1 and xmm3/m128/m64bcst, negate the multiplication result and subtract xmm2 and put result in xmm1. VFNMSUB213PD xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F38.W1 AE /r AVX512VL AVX512F Multiply packed double-precision floating-point values from xmm1 and xmm2, negate the multiplication result and subtract xmm3/m128/m64bcst and put result in xmm1. VFNMSUB231PD xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F38.W1 BE /r AVX512VL AVX512F Multiply packed double-precision floating-point values from xmm2 and xmm3/m128/m64bcst, negate the multiplication result and subtract xmm1 and put result in xmm1. VFNMSUB132PD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F38.W1 9E /r AVX512VL AVX512F Multiply packed double-precision floating-point values from ymm1 and ymm3/m256/m64bcst, negate the multiplication result and subtract ymm2 and put result in ymm1. VFNMSUB213PD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F38.W1 AE /r AVX512VL AVX512F Multiply packed double-precision floating-point values from ymm1 and ymm2, negate the multiplication result and subtract ymm3/m256/m64bcst and put result in ymm1. VFNMSUB231PD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F38.W1 BE /r AVX512VL AVX512F Multiply packed double-precision floating-point values from ymm2 and ymm3/m256/m64bcst, negate the multiplication result and subtract ymm1 and put result in ymm1. VFNMSUB132PD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst{er} EVEX.NDS.512.66.0F38.W1 9E /r AVX512F Multiply packed double-precision floating-point values from zmm1 and zmm3/m512/m64bcst, negate the multiplication result and subtract zmm2 and put result in zmm1. VFNMSUB213PD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst{er} EVEX.NDS.512.66.0F38.W1 AE /r AVX512F Multiply packed double-precision floating-point values from zmm1 and zmm2, negate the multiplication result and subtract zmm3/m512/m64bcst and put result in zmm1. VFNMSUB231PD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst{er} EVEX.NDS.512.66.0F38.W1 BE /r AVX512F Multiply packed double-precision floating-point values from zmm2 and zmm3/m512/m64bcst, negate the multiplication result and subtract zmm1 and put result in zmm1. ModRM:reg(r,w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(r,w) EVEX.vvvv(r) ModRM:r/m(r) NA VFNMSUB132PS/VFNMSUB213PS/VFNMSUB231PS--Fused Negative Multiply-Subtract of Packed Single-Precision Floating-Point Values. VFNMSUB132PS xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.W0 9E /r FMA Multiply packed single-precision floating-point values from xmm1 and xmm3/mem, negate the multiplication result and subtract xmm2 and put result in xmm1. VFNMSUB213PS xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.W0 AE /r FMA Multiply packed single-precision floating-point values from xmm1 and xmm2, negate the multiplication result and subtract xmm3/mem and put result in xmm1. VFNMSUB231PS xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.W0 BE /r FMA Multiply packed single-precision floating-point values from xmm2 and xmm3/mem, negate the multiplication result and subtract xmm1 and put result in xmm1. VFNMSUB132PS ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.W0 9E /r FMA Multiply packed single-precision floating-point values from ymm1 and ymm3/mem, negate the multiplication result and subtract ymm2 and put result in ymm1. VFNMSUB213PS ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.W0 AE /r FMA Multiply packed single-precision floating-point values from ymm1 and ymm2, negate the multiplication result and subtract ymm3/mem and put result in ymm1. VFNMSUB231PS ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.W0 BE /r FMA Multiply packed single-precision floating-point values from ymm2 and ymm3/mem, negate the multiplication result and subtract ymm1 and put result in ymm1. VFNMSUB132PS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F38.W0 9E /r AVX512VL AVX512F Multiply packed single-precision floating-point values from xmm1 and xmm3/m128/m32bcst, negate the multiplication result and subtract xmm2 and put result in xmm1. VFNMSUB213PS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F38.W0 AE /r AVX512VL AVX512F Multiply packed single-precision floating-point values from xmm1 and xmm2, negate the multiplication result and subtract xmm3/m128/m32bcst and put result in xmm1. VFNMSUB231PS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F38.W0 BE /r AVX512VL AVX512F Multiply packed single-precision floating-point values from xmm2 and xmm3/m128/m32bcst, negate the multiplication result subtract add to xmm1 and put result in xmm1. VFNMSUB132PS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F38.W0 9E /r AVX512VL AVX512F Multiply packed single-precision floating-point values from ymm1 and ymm3/m256/m32bcst, negate the multiplication result and subtract ymm2 and put result in ymm1. VFNMSUB213PS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F38.W0 AE /r AVX512VL AVX512F Multiply packed single-precision floating-point values from ymm1 and ymm2, negate the multiplication result and subtract ymm3/m256/m32bcst and put result in ymm1. VFNMSUB231PS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F38.W0 BE /r AVX512VL AVX512F Multiply packed single-precision floating-point values from ymm2 and ymm3/m256/m32bcst, negate the multiplication result subtract add to ymm1 and put result in ymm1. VFNMSUB132PS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst{er} EVEX.NDS.512.66.0F38.W0 9E /r AVX512F Multiply packed single-precision floating-point values from zmm1 and zmm3/m512/m32bcst, negate the multiplication result and subtract zmm2 and put result in zmm1. VFNMSUB213PS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst{er} EVEX.NDS.512.66.0F38.W0 AE /r AVX512F Multiply packed single-precision floating-point values from zmm1 and zmm2, negate the multiplication result and subtract zmm3/m512/m32bcst and put result in zmm1. VFNMSUB231PS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst{er} EVEX.NDS.512.66.0F38.W0 BE /r AVX512F Multiply packed single-precision floating-point values from zmm2 and zmm3/m512/m32bcst, negate the multiplication result subtract add to zmm1 and put result in zmm1. ModRM:reg(r,w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(r,w) EVEX.vvvv(r) ModRM:r/m(r) NA VFNMSUB132SD/VFNMSUB213SD/VFNMSUB231SD--Fused Negative Multiply-Subtract of Scalar Double-Precision Floating-Point Values. VFNMSUB132SD xmm1,xmm2,xmm3/m64 VEX.DDS.128.66.0F38.W1 9F /r FMA Multiply scalar double-precision floating-point value from xmm1 and xmm3/mem, negate the multiplication result and subtract xmm2 and put result in xmm1. VFNMSUB213SD xmm1,xmm2,xmm3/m64 VEX.DDS.128.66.0F38.W1 AF /r FMA Multiply scalar double-precision floating-point value from xmm1 and xmm2, negate the multiplication result and subtract xmm3/mem and put result in xmm1. VFNMSUB231SD xmm1,xmm2,xmm3/m64 VEX.DDS.128.66.0F38.W1 BF /r FMA Multiply scalar double-precision floating-point value from xmm2 and xmm3/mem, negate the multiplication result and subtract xmm1 and put result in xmm1. VFNMSUB132SD xmm1 {k1}{z},xmm2,xmm3/m64{er} EVEX.DDS.LIG.66.0F38.W1 9F /r AVX512F Multiply scalar double-precision floating-point value from xmm1 and xmm3/m64, negate the multiplication result and subtract xmm2 and put result in xmm1. VFNMSUB213SD xmm1 {k1}{z},xmm2,xmm3/m64{er} EVEX.DDS.LIG.66.0F38.W1 AF /r AVX512F Multiply scalar double-precision floating-point value from xmm1 and xmm2, negate the multiplication result and subtract xmm3/m64 and put result in xmm1. VFNMSUB231SD xmm1 {k1}{z},xmm2,xmm3/m64{er} EVEX.DDS.LIG.66.0F38.W1 BF /r AVX512F Multiply scalar double-precision floating-point value from xmm2 and xmm3/m64, negate the multiplication result and subtract xmm1 and put result in xmm1. ModRM:reg(r,w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(r,w) EVEX.vvvv(r) ModRM:r/m(r) NA VFNMSUB132SS/VFNMSUB213SS/VFNMSUB231SS--Fused Negative Multiply-Subtract of Scalar Single-Precision Floating-Point Values. VFNMSUB132SS xmm1,xmm2,xmm3/m32 VEX.DDS.128.66.0F38.W0 9F /r FMA Multiply scalar single-precision floating-point value from xmm1 and xmm3/m32, negate the multiplication result and subtract xmm2 and put result in xmm1. VFNMSUB213SS xmm1,xmm2,xmm3/m32 VEX.DDS.128.66.0F38.W0 AF /r FMA Multiply scalar single-precision floating-point value from xmm1 and xmm2, negate the multiplication result and subtract xmm3/m32 and put result in xmm1. VFNMSUB231SS xmm1,xmm2,xmm3/m32 VEX.DDS.128.66.0F38.W0 BF /r FMA Multiply scalar single-precision floating-point value from xmm2 and xmm3/m32, negate the multiplication result and subtract xmm1 and put result in xmm1. VFNMSUB132SS xmm1 {k1}{z},xmm2,xmm3/m32{er} EVEX.DDS.LIG.66.0F38.W0 9F /r AVX512F Multiply scalar single-precision floating-point value from xmm1 and xmm3/m32, negate the multiplication result and subtract xmm2 and put result in xmm1. VFNMSUB213SS xmm1 {k1}{z},xmm2,xmm3/m32{er} EVEX.DDS.LIG.66.0F38.W0 AF /r AVX512F Multiply scalar single-precision floating-point value from xmm1 and xmm2, negate the multiplication result and subtract xmm3/m32 and put result in xmm1. VFNMSUB231SS xmm1 {k1}{z},xmm2,xmm3/m32{er} EVEX.DDS.LIG.66.0F38.W0 BF /r AVX512F Multiply scalar single-precision floating-point value from xmm2 and xmm3/m32, negate the multiplication result and subtract xmm1 and put result in xmm1. ModRM:reg(r,w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(r,w) EVEX.vvvv(r) ModRM:r/m(r) NA VFPCLASSPD--Tests Types Of a Packed Float64 Values. VFPCLASSPD k2 {k1},xmm2/m128/m64bcst,imm8 EVEX.128.66.0F3A.W1 66 /r ib AVX512VL AVX512DQ Tests the input for the following categories: NaN, +0, -0, +Infinity, -Infinity, denormal, finite negative. The immediate field provides a mask bit for each of these category tests. The masked test results are OR-ed together to form a mask result. VFPCLASSPD k2 {k1},ymm2/m256/m64bcst,imm8 EVEX.256.66.0F3A.W1 66 /r ib AVX512VL AVX512DQ Tests the input for the following categories: NaN, +0, -0, +Infinity, -Infinity, denormal, finite negative. The immediate field provides a mask bit for each of these category tests. The masked test results are OR-ed together to form a mask result. VFPCLASSPD k2 {k1},zmm2/m512/m64bcst,imm8 EVEX.512.66.0F3A.W1 66 /r ib AVX512DQ Tests the input for the following categories: NaN, +0, -0, +Infinity, -Infinity, denormal, finite negative. The immediate field provides a mask bit for each of these category tests. The masked test results are OR-ed together to form a mask result. ModRM:reg(w) ModRM:r/m(r) NA NA VFPCLASSPS--Tests Types Of a Packed Float32 Values. VFPCLASSPS k2 {k1},xmm2/m128/m32bcst,imm8 EVEX.128.66.0F3A.W0 66 /r ib AVX512VL AVX512DQ Tests the input for the following categories: NaN, +0, -0, +Infinity, -Infinity, denormal, finite negative. The immediate field provides a mask bit for each of these category tests. The masked test results are OR-ed together to form a mask result. VFPCLASSPS k2 {k1},ymm2/m256/m32bcst,imm8 EVEX.256.66.0F3A.W0 66 /r ib AVX512VL AVX512DQ Tests the input for the following categories: NaN, +0, -0, +Infinity, -Infinity, denormal, finite negative. The immediate field provides a mask bit for each of these category tests. The masked test results are OR-ed together to form a mask result. VFPCLASSPS k2 {k1},zmm2/m512/m32bcst,imm8 EVEX.512.66.0F3A.W0 66 /r ib AVX512DQ Tests the input for the following categories: NaN, +0, -0, +Infinity, -Infinity, denormal, finite negative. The immediate field provides a mask bit for each of these category tests. The masked test results are OR-ed together to form a mask result. ModRM:reg(w) ModRM:r/m(r) NA NA VFPCLASSSD--Tests Types Of a Scalar Float64 Values. VFPCLASSSD k2 {k1},xmm2/m64,imm8 EVEX.LIG.66.0F3A.W1 67 /r ib AVX512DQ Tests the input for the following categories: NaN, +0, -0, +Infinity, -Infinity, denormal, finite negative. The immediate field provides a mask bit for each of these category tests. The masked test results are OR-ed together to form a mask result. ModRM:reg(w) ModRM:r/m(r) NA NA VFPCLASSSS--Tests Types Of a Scalar Float32 Values. VFPCLASSSS k2 {k1},xmm2/m32,imm8 EVEX.LIG.66.0F3A.W0 67 /r AVX512DQ Tests the input for the following categories: NaN, +0, -0, +Infinity, -Infinity, denormal, finite negative. The immediate field provides a mask bit for each of these category tests. The masked test results are OR-ed together to form a mask result. ModRM:reg(w) ModRM:r/m(r) NA NA VPGATHERDD/VPGATHERDQ--Gather Packed Dword, Packed Qword with Signed Dword Indices. VPGATHERDD xmm1 {k1},vm32x EVEX.128.66.0F38.W0 90 /vsib AVX512VL AVX512F Using signed dword indices, gather dword values from memory using writemask k1 for merging-masking. VPGATHERDD ymm1 {k1},vm32y EVEX.256.66.0F38.W0 90 /vsib AVX512VL AVX512F Using signed dword indices, gather dword values from memory using writemask k1 for merging-masking. VPGATHERDD zmm1 {k1},vm32z EVEX.512.66.0F38.W0 90 /vsib AVX512F Using signed dword indices, gather dword values from memory using writemask k1 for merging-masking. VPGATHERDQ xmm1 {k1},vm32x EVEX.128.66.0F38.W1 90 /vsib AVX512VL AVX512F Using signed dword indices, gather quadword values from memory using writemask k1 for merging-masking. VPGATHERDQ ymm1 {k1},vm32x EVEX.256.66.0F38.W1 90 /vsib AVX512VL AVX512F Using signed dword indices, gather quadword values from memory using writemask k1 for merging-masking. VPGATHERDQ zmm1 {k1},vm32y EVEX.512.66.0F38.W1 90 /vsib AVX512F Using signed dword indices, gather quadword values from memory using writemask k1 for merging-masking. ModRM:reg(w) BaseReg(R): VSIB:base,VectorReg(R): VSIB:index NA NA VPGATHERQD/VPGATHERQQ--Gather Packed Dword, Packed Qword with Signed Qword Indices. VPGATHERQD xmm1 {k1},vm64x EVEX.128.66.0F38.W0 91 /vsib AVX512VL AVX512F Using signed qword indices, gather dword values from memory using writemask k1 for merging-masking. VPGATHERQD xmm1 {k1},vm64y EVEX.256.66.0F38.W0 91 /vsib AVX512VL AVX512F Using signed qword indices, gather dword values from memory using writemask k1 for merging-masking. VPGATHERQD ymm1 {k1},vm64z EVEX.512.66.0F38.W0 91 /vsib AVX512F Using signed qword indices, gather dword values from memory using writemask k1 for merging-masking. VPGATHERQQ xmm1 {k1},vm64x EVEX.128.66.0F38.W1 91 /vsib AVX512VL AVX512F Using signed qword indices, gather quadword values from memory using writemask k1 for merging-masking. VPGATHERQQ ymm1 {k1},vm64y EVEX.256.66.0F38.W1 91 /vsib AVX512VL AVX512F Using signed qword indices, gather quadword values from memory using writemask k1 for merging-masking. VPGATHERQQ zmm1 {k1},vm64z EVEX.512.66.0F38.W1 91 /vsib AVX512F Using signed qword indices, gather quadword values from memory using writemask k1 for merging-masking. ModRM:reg(w) BaseReg(R): VSIB:base,VectorReg(R): VSIB:index NA NA VGATHERDPS/VGATHERDPD--Gather Packed Single, Packed Double with Signed Dword. VGATHERDPS xmm1 {k1},vm32x EVEX.128.66.0F38.W0 92 /vsib AVX512VL AVX512F Using signed dword indices, gather single-precision floatingpoint values from memory using k1 as completion mask. VGATHERDPS ymm1 {k1},vm32y EVEX.256.66.0F38.W0 92 /vsib AVX512VL AVX512F Using signed dword indices, gather single-precision floatingpoint values from memory using k1 as completion mask. VGATHERDPS zmm1 {k1},vm32z EVEX.512.66.0F38.W0 92 /vsib AVX512F Using signed dword indices, gather single-precision floatingpoint values from memory using k1 as completion mask. VGATHERDPD xmm1 {k1},vm32x EVEX.128.66.0F38.W1 92 /vsib AVX512VL AVX512F Using signed dword indices, gather float64 vector into float64 vector xmm1 using k1 as completion mask. VGATHERDPD ymm1 {k1},vm32x EVEX.256.66.0F38.W1 92 /vsib AVX512VL AVX512F Using signed dword indices, gather float64 vector into float64 vector ymm1 using k1 as completion mask. VGATHERDPD zmm1 {k1},vm32y EVEX.512.66.0F38.W1 92 /vsib AVX512F Using signed dword indices, gather float64 vector into float64 vector zmm1 using k1 as completion mask. ModRM:reg(w) BaseReg(R): VSIB:base,VectorReg(R): VSIB:index NA NA VGATHERQPS/VGATHERQPD--Gather Packed Single, Packed Double with Signed Qword Indices. VGATHERQPS xmm1 {k1},vm64x EVEX.128.66.0F38.W0 93 /vsib AVX512VL AVX512F Using signed qword indices, gather single-precision floating-point values from memory using k1 as completion mask. VGATHERQPS xmm1 {k1},vm64y EVEX.256.66.0F38.W0 93 /vsib AVX512VL AVX512F Using signed qword indices, gather single-precision floating-point values from memory using k1 as completion mask. VGATHERQPS ymm1 {k1},vm64z EVEX.512.66.0F38.W0 93 /vsib AVX512F Using signed qword indices, gather single-precision floating-point values from memory using k1 as completion mask. VGATHERQPD xmm1 {k1},vm64x EVEX.128.66.0F38.W1 93 /vsib AVX512VL AVX512F Using signed qword indices, gather float64 vector into float64 vector xmm1 using k1 as completion mask. VGATHERQPD ymm1 {k1},vm64y EVEX.256.66.0F38.W1 93 /vsib AVX512VL AVX512F Using signed qword indices, gather float64 vector into float64 vector ymm1 using k1 as completion mask. VGATHERQPD zmm1 {k1},vm64z EVEX.512.66.0F38.W1 93 /vsib AVX512F Using signed qword indices, gather float64 vector into float64 vector zmm1 using k1 as completion mask. ModRM:reg(w) BaseReg(R): VSIB:base,VectorReg(R): VSIB:index NA NA VGETEXPPD--Convert Exponents of Packed DP FP Values to DP FP Values. VGETEXPPD xmm1 {k1}{z},xmm2/m128/m64bcst EVEX.128.66.0F38.W1 42 /r AVX512VL AVX512F Convert the exponent of packed double-precision floating-point values in the source operand to DP FP results representing unbiased integer exponents and stores the results in the destination register. VGETEXPPD ymm1 {k1}{z},ymm2/m256/m64bcst EVEX.256.66.0F38.W1 42 /r AVX512VL AVX512F Convert the exponent of packed double-precision floating-point values in the source operand to DP FP results representing unbiased integer exponents and stores the results in the destination register. VGETEXPPD zmm1 {k1}{z},zmm2/m512/m64bcst{sae} EVEX.512.66.0F38.W1 42 /r AVX512F Convert the exponent of packed double-precision floating-point values in the source operand to DP FP results representing unbiased integer exponents and stores the results in the destination under writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA VGETEXPPS--Convert Exponents of Packed SP FP Values to SP FP Values. VGETEXPPS xmm1 {k1}{z},xmm2/m128/m32bcst EVEX.128.66.0F38.W0 42 /r AVX512VL AVX512F Convert the exponent of packed single-precision floating-point values in the source operand to SP FP results representing unbiased integer exponents and stores the results in the destination register. VGETEXPPS ymm1 {k1}{z},ymm2/m256/m32bcst EVEX.256.66.0F38.W0 42 /r AVX512VL AVX512F Convert the exponent of packed single-precision floating-point values in the source operand to SP FP results representing unbiased integer exponents and stores the results in the destination register. VGETEXPPS zmm1 {k1}{z},zmm2/m512/m32bcst{sae} EVEX.512.66.0F38.W0 42 /r AVX512F Convert the exponent of packed single-precision floating-point values in the source operand to SP FP results representing unbiased integer exponents and stores the results in the destination register. ModRM:reg(w) ModRM:r/m(r) NA NA VGETEXPSD--Convert Exponents of Scalar DP FP Values to DP FP Value. VGETEXPSD xmm1 {k1}{z},xmm2,xmm3/m64{sae} EVEX.NDS.LIG.66.0F38.W1 43 /r AVX512F Convert the biased exponent (bits 62:52) of the low doubleprecision floating-point value in xmm3/m64 to a DP FP value representing unbiased integer exponent. Stores the result to the low 64-bit of xmm1 under the writemask k1 and merge with the other elements of xmm2. ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA VGETEXPSS--Convert Exponents of Scalar SP FP Values to SP FP Value. VGETEXPSS xmm1 {k1}{z},xmm2,xmm3/m32{sae} EVEX.NDS.LIG.66.0F38.W0 43 /r AVX512F Convert the biased exponent (bits 30:23) of the low singleprecision floating-point value in xmm3/m32 to a SP FP value representing unbiased integer exponent. Stores the result to xmm1 under the writemask k1 and merge with the other elements of xmm2. ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA VGETMANTPD--Extract Float64 Vector of Normalized Mantissas from Float64 Vector. VGETMANTPD xmm1 {k1}{z},xmm2/m128/m64bcst,imm8 EVEX.128.66.0F3A.W1 26 /r ib AVX512VL AVX512F Get Normalized Mantissa from float64 vector xmm2/m128/m64bcst and store the result in xmm1, using imm8 for sign control and mantissa interval normalization, under writemask. VGETMANTPD ymm1 {k1}{z},ymm2/m256/m64bcst,imm8 EVEX.256.66.0F3A.W1 26 /r ib AVX512VL AVX512F Get Normalized Mantissa from float64 vector ymm2/m256/m64bcst and store the result in ymm1, using imm8 for sign control and mantissa interval normalization, under writemask. VGETMANTPD zmm1 {k1}{z},zmm2/m512/m64bcst{sae},imm8 EVEX.512.66.0F3A.W1 26 /r ib AVX512F Get Normalized Mantissa from float64 vector zmm2/m512/m64bcst and store the result in zmm1, using imm8 for sign control and mantissa interval normalization, under writemask. ModRM:reg(w) ModRM:r/m(r) Imm8 NA VGETMANTPS--Extract Float32 Vector of Normalized Mantissas from Float32 Vector. VGETMANTPS xmm1 {k1}{z},xmm2/m128/m32bcst,imm8 EVEX.128.66.0F3A.W0 26 /r ib AVX512VL AVX512F Get normalized mantissa from float32 vector xmm2/m128/m32bcst and store the result in xmm1, using imm8 for sign control and mantissa interval normalization, under writemask. VGETMANTPS ymm1 {k1}{z},ymm2/m256/m32bcst,imm8 EVEX.256.66.0F3A.W0 26 /r ib AVX512VL AVX512F Get normalized mantissa from float32 vector ymm2/m256/m32bcst and store the result in ymm1, using imm8 for sign control and mantissa interval normalization, under writemask. VGETMANTPS zmm1 {k1}{z},zmm2/m512/m32bcst{sae},imm8 EVEX.512.66.0F3A.W0 26 /r ib AVX512F Get normalized mantissa from float32 vector zmm2/m512/m32bcst and store the result in zmm1, using imm8 for sign control and mantissa interval normalization, under writemask. ModRM:reg(w) ModRM:r/m(r) Imm8 NA VGETMANTSD--Extract Float64 of Normalized Mantissas from Float64 Scalar. VGETMANTSD xmm1 {k1}{z},xmm2,xmm3/m64{sae},imm8 EVEX.NDS.LIG.66.0F3A.W1 27 /r ib AVX512F Extract the normalized mantissa of the low float64 element in xmm3/m64 using imm8 for sign control and mantissa interval normalization. Store the mantissa to xmm1 under the writemask k1 and merge with the other elements of xmm2. ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA VGETMANTSS--Extract Float32 Vector of Normalized Mantissa from Float32 Vector. VGETMANTSS xmm1 {k1}{z},xmm2,xmm3/m32{sae},imm8 EVEX.NDS.LIG.66.0F3A.W0 27 /r ib AVX512F Extract the normalized mantissa from the low float32 element of xmm3/m32 using imm8 for sign control and mantissa interval normalization, store the mantissa to xmm1 under the writemask k1 and merge with the other elements of xmm2. ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA VINSERTF128/VINSERTF32x4/VINSERTF64x2/VINSERTF32x8/VINSERTF64x4--Insert Packed Floating-Point Values. VINSERTF128 ymm1,ymm2,xmm3/m128,imm8 VEX.NDS.256.66.0F3A.W0 18 /r ib AVX Insert 128 bits of packed floating-point values from xmm3/m128 and the remaining values from ymm2 into ymm1. VINSERTF32X4 ymm1 {k1}{z},ymm2,xmm3/m128,imm8 EVEX.NDS.256.66.0F3A.W0 18 /r ib AVX512VL AVX512F Insert 128 bits of packed single-precision floatingpoint values from xmm3/m128 and the remaining values from ymm2 into ymm1 under writemask k1. VINSERTF32X4 zmm1 {k1}{z},zmm2,xmm3/m128,imm8 EVEX.NDS.512.66.0F3A.W0 18 /r ib AVX512F Insert 128 bits of packed single-precision floatingpoint values from xmm3/m128 and the remaining values from zmm2 into zmm1 under writemask k1. VINSERTF64X2 ymm1 {k1}{z},ymm2,xmm3/m128,imm8 EVEX.NDS.256.66.0F3A.W1 18 /r ib AVX512VL AVX512DQ Insert 128 bits of packed double-precision floatingpoint values from xmm3/m128 and the remaining values from ymm2 into ymm1 under writemask k1. VINSERTF64X2 zmm1 {k1}{z},zmm2,xmm3/m128,imm8 EVEX.NDS.512.66.0F3A.W1 18 /r ib AVX512DQ Insert 128 bits of packed double-precision floatingpoint values from xmm3/m128 and the remaining values from zmm2 into zmm1 under writemask k1. VINSERTF32X8 zmm1 {k1}{z},zmm2,ymm3/m256,imm8 EVEX.NDS.512.66.0F3A.W0 1A /r ib AVX512DQ Insert 256 bits of packed single-precision floatingpoint values from ymm3/m256 and the remaining values from zmm2 into zmm1 under writemask k1. VINSERTF64X4 zmm1 {k1}{z},zmm2,ymm3/m256,imm8 EVEX.NDS.512.66.0F3A.W1 1A /r ib AVX512F Insert 256 bits of packed double-precision floatingpoint values from ymm3/m256 and the remaining values from zmm2 into zmm1 under writemask k1. ModRM:reg(w) VEX.vvvv ModRM:r/m(r) Imm8 ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) Imm8 ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) Imm8 ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) Imm8 VINSERTI128/VINSERTI32x4/VINSERTI64x2/VINSERTI32x8/VINSERTI64x4--Insert Packed Integer Values. VINSERTI128 ymm1,ymm2,xmm3/m128,imm8 VEX.NDS.256.66.0F3A.W0 38 /r ib AVX2 Insert 128 bits of integer data from xmm3/m128 and the remaining values from ymm2 into ymm1. VINSERTI32X4 ymm1 {k1}{z},ymm2,xmm3/m128,imm8 EVEX.NDS.256.66.0F3A.W0 38 /r ib AVX512VL AVX512F Insert 128 bits of packed doubleword integer values from xmm3/m128 and the remaining values from ymm2 into ymm1 under writemask k1. VINSERTI32X4 zmm1 {k1}{z},zmm2,xmm3/m128,imm8 EVEX.NDS.512.66.0F3A.W0 38 /r ib AVX512F Insert 128 bits of packed doubleword integer values from xmm3/m128 and the remaining values from zmm2 into zmm1 under writemask k1. VINSERTI64X2 ymm1 {k1}{z},ymm2,xmm3/m128,imm8 EVEX.NDS.256.66.0F3A.W1 38 /r ib AVX512VL AVX512DQ Insert 128 bits of packed quadword integer values from xmm3/m128 and the remaining values from ymm2 into ymm1 under writemask k1. VINSERTI64X2 zmm1 {k1}{z},zmm2,xmm3/m128,imm8 EVEX.NDS.512.66.0F3A.W1 38 /r ib AVX512DQ Insert 128 bits of packed quadword integer values from xmm3/m128 and the remaining values from zmm2 into zmm1 under writemask k1. VINSERTI32X8 zmm1 {k1}{z},zmm2,ymm3/m256,imm8 EVEX.NDS.512.66.0F3A.W0 3A /r ib AVX512DQ Insert 256 bits of packed doubleword integer values from ymm3/m256 and the remaining values from zmm2 into zmm1 under writemask k1. VINSERTI64X4 zmm1 {k1}{z},zmm2,ymm3/m256,imm8 EVEX.NDS.512.66.0F3A.W1 3A /r ib AVX512F Insert 256 bits of packed quadword integer values from ymm3/m256 and the remaining values from zmm2 into zmm1 under writemask k1. ModRM:reg(w) VEX.vvvv ModRM:r/m(r) Imm8 ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) Imm8 ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) Imm8 ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) Imm8 INSERTPS--Insert Scalar Single-Precision Floating-Point Value. INSERTPS xmm1,xmm2/m32,imm8 66 0F 3A 21 /r ib SSE4_1 Insert a single-precision floating-point value selected by imm8 from xmm2/m32 into xmm1 at the specified destination element specified by imm8 and zero out destination elements in xmm1 as indicated in imm8. VINSERTPS xmm1,xmm2,xmm3/m32,imm8 VEX.NDS.128.66.0F3A.WIG 21 /r ib AVX Insert a single-precision floating-point value selected by imm8 from xmm3/m32 and merge with values in xmm2 at the specified destination element specified by imm8 and write out the result and zero out destination elements in xmm1 as indicated in imm8. VINSERTPS xmm1,xmm2,xmm3/m32,imm8 EVEX.NDS.128.66.0F3A.W0 21 /r ib AVX512F Insert a single-precision floating-point value selected by imm8 from xmm3/m32 and merge with values in xmm2 at the specified destination element specified by imm8 and write out the result and zero out destination elements in xmm1 as indicated in imm8. ModRM:reg(r,w) ModRM:r/m(r) Imm8 NA ModRM:reg(w) VEX.vvvv ModRM:r/m(r) Imm8 ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) Imm8 MAXPD--Maximum of Packed Double-Precision Floating-Point Values. MAXPD xmm1,xmm2/m128 66 0F 5F /r SSE2 Return the maximum double-precision floating-point values between xmm1 and xmm2/m128. VMAXPD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG 5F /r AVX Return the maximum double-precision floating-point values between xmm2 and xmm3/m128. VMAXPD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F.WIG 5F /r AVX Return the maximum packed double-precision floating-point values between ymm2 and ymm3/m256. VMAXPD xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F.W1 5F /r AVX512VL AVX512F Return the maximum packed double-precision floating-point values between xmm2 and xmm3/m128/m64bcst and store result in xmm1 subject to writemask k1. VMAXPD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F.W1 5F /r AVX512VL AVX512F Return the maximum packed double-precision floating-point values between ymm2 and ymm3/m256/m64bcst and store result in ymm1 subject to writemask k1. VMAXPD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst{sae} EVEX.NDS.512.66.0F.W1 5F /r AVX512F Return the maximum packed double-precision floating-point values between zmm2 and zmm3/m512/m64bcst and store result in zmm1 subject to writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA MAXPS--Maximum of Packed Single-Precision Floating-Point Values. MAXPS xmm1,xmm2/m128 0F 5F /r SSE Return the maximum single-precision floating-point values between xmm1 and xmm2/mem. VMAXPS xmm1,xmm2,xmm3/m128 VEX.NDS.128.0F.WIG 5F /r AVX Return the maximum single-precision floating-point values between xmm2 and xmm3/mem. VMAXPS ymm1,ymm2,ymm3/m256 VEX.NDS.256.0F.WIG 5F /r AVX Return the maximum single-precision floating-point values between ymm2 and ymm3/mem. VMAXPS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.0F.W0 5F /r AVX512VL AVX512F Return the maximum packed single-precision floating-point values between xmm2 and xmm3/m128/m32bcst and store result in xmm1 subject to writemask k1. VMAXPS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.0F.W0 5F /r AVX512VL AVX512F Return the maximum packed single-precision floating-point values between ymm2 and ymm3/m256/m32bcst and store result in ymm1 subject to writemask k1. VMAXPS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst{sae} EVEX.NDS.512.0F.W0 5F /r AVX512F Return the maximum packed single-precision floating-point values between zmm2 and zmm3/m512/m32bcst and store result in zmm1 subject to writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA MAXSD--Return Maximum Scalar Double-Precision Floating-Point Value. MAXSD xmm1,xmm2/m64 F2 0F 5F /r SSE2 Return the maximum scalar double-precision floating-point value between xmm2/m64 and xmm1. VMAXSD xmm1,xmm2,xmm3/m64 VEX.NDS.128.F2.0F.WIG 5F /r AVX Return the maximum scalar double-precision floating-point value between xmm3/m64 and xmm2. VMAXSD xmm1 {k1}{z},xmm2,xmm3/m64{sae} EVEX.NDS.LIG.F2.0F.W1 5F /r AVX512F Return the maximum scalar double-precision floating-point value between xmm3/m64 and xmm2. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA MAXSS--Return Maximum Scalar Single-Precision Floating-Point Value. MAXSS xmm1,xmm2/m32 F3 0F 5F /r SSE Return the maximum scalar single-precision floating-point value between xmm2/m32 and xmm1. VMAXSS xmm1,xmm2,xmm3/m32 VEX.NDS.128.F3.0F.WIG 5F /r AVX Return the maximum scalar single-precision floating-point value between xmm3/m32 and xmm2. VMAXSS xmm1 {k1}{z},xmm2,xmm3/m32{sae} EVEX.NDS.LIG.F3.0F.W0 5F /r AVX512F Return the maximum scalar single-precision floating-point value between xmm3/m32 and xmm2. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA MINPD--Minimum of Packed Double-Precision Floating-Point Values. MINPD xmm1,xmm2/m128 66 0F 5D /r SSE2 Return the minimum double-precision floating-point values between xmm1 and xmm2/mem. VMINPD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG 5D /r AVX Return the minimum double-precision floating-point values between xmm2 and xmm3/mem. VMINPD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F.WIG 5D /r AVX Return the minimum packed double-precision floating-point values between ymm2 and ymm3/mem. VMINPD xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F.W1 5D /r AVX512VL AVX512F Return the minimum packed double-precision floating-point values between xmm2 and xmm3/m128/m64bcst and store result in xmm1 subject to writemask k1. VMINPD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F.W1 5D /r AVX512VL AVX512F Return the minimum packed double-precision floating-point values between ymm2 and ymm3/m256/m64bcst and store result in ymm1 subject to writemask k1. VMINPD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst{sae} EVEX.NDS.512.66.0F.W1 5D /r AVX512F Return the minimum packed double-precision floating-point values between zmm2 and zmm3/m512/m64bcst and store result in zmm1 subject to writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA MINPS--Minimum of Packed Single-Precision Floating-Point Values. MINPS xmm1,xmm2/m128 0F 5D /r SSE Return the minimum single-precision floating-point values between xmm1 and xmm2/mem. VMINPS xmm1,xmm2,xmm3/m128 VEX.NDS.128.0F.WIG 5D /r AVX Return the minimum single-precision floating-point values between xmm2 and xmm3/mem. VMINPS ymm1,ymm2,ymm3/m256 VEX.NDS.256.0F.WIG 5D /r AVX Return the minimum single double-precision floating-point values between ymm2 and ymm3/mem. VMINPS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.0F.W0 5D /r AVX512VL AVX512F Return the minimum packed single-precision floating-point values between xmm2 and xmm3/m128/m32bcst and store result in xmm1 subject to writemask k1. VMINPS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.0F.W0 5D /r AVX512VL AVX512F Return the minimum packed single-precision floating-point values between ymm2 and ymm3/m256/m32bcst and store result in ymm1 subject to writemask k1. VMINPS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst{sae} EVEX.NDS.512.0F.W0 5D /r AVX512F Return the minimum packed single-precision floating-point values between zmm2 and zmm3/m512/m32bcst and store result in zmm1 subject to writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA MINSD--Return Minimum Scalar Double-Precision Floating-Point Value. MINSD xmm1,xmm2/m64 F2 0F 5D /r SSE2 Return the minimum scalar double-precision floatingpoint value between xmm2/m64 and xmm1. VMINSD xmm1,xmm2,xmm3/m64 VEX.NDS.128.F2.0F.WIG 5D /r AVX Return the minimum scalar double-precision floatingpoint value between xmm3/m64 and xmm2. VMINSD xmm1 {k1}{z},xmm2,xmm3/m64{sae} EVEX.NDS.LIG.F2.0F.W1 5D /r AVX512F Return the minimum scalar double-precision floatingpoint value between xmm3/m64 and xmm2. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA MINSS--Return Minimum Scalar Single-Precision Floating-Point Value. MINSS xmm1,xmm2/m32 F3 0F 5D /r SSE Return the minimum scalar single-precision floatingpoint value between xmm2/m32 and xmm1. VMINSS xmm1,xmm2,xmm3/m32 VEX.NDS.128.F3.0F.WIG 5D /r AVX Return the minimum scalar single-precision floatingpoint value between xmm3/m32 and xmm2. VMINSS xmm1 {k1}{z},xmm2,xmm3/m32{sae} EVEX.NDS.LIG.F3.0F.W0 5D /r AVX512F Return the minimum scalar single-precision floatingpoint value between xmm3/m32 and xmm2. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA MOVAPD--Move Aligned Packed Double-Precision Floating-Point Values. MOVAPD xmm1,xmm2/m128 66 0F 28 /r SSE2 Move aligned packed double-precision floatingpoint values from xmm2/mem to xmm1. MOVAPD xmm2/m128,xmm1 66 0F 29 /r SSE2 Move aligned packed double-precision floatingpoint values from xmm1 to xmm2/mem. VMOVAPD xmm1,xmm2/m128 VEX.128.66.0F.WIG 28 /r AVX Move aligned packed double-precision floatingpoint values from xmm2/mem to xmm1. VMOVAPD xmm2/m128,xmm1 VEX.128.66.0F.WIG 29 /r AVX Move aligned packed double-precision floatingpoint values from xmm1 to xmm2/mem. VMOVAPD ymm1,ymm2/m256 VEX.256.66.0F.WIG 28 /r AVX Move aligned packed double-precision floatingpoint values from ymm2/mem to ymm1. VMOVAPD ymm2/m256,ymm1 VEX.256.66.0F.WIG 29 /r AVX Move aligned packed double-precision floatingpoint values from ymm1 to ymm2/mem. VMOVAPD xmm1 {k1}{z},xmm2/m128 EVEX.128.66.0F.W1 28 /r AVX512VL AVX512F Move aligned packed double-precision floatingpoint values from xmm2/m128 to xmm1 using writemask k1. VMOVAPD ymm1 {k1}{z},ymm2/m256 EVEX.256.66.0F.W1 28 /r AVX512VL AVX512F Move aligned packed double-precision floatingpoint values from ymm2/m256 to ymm1 using writemask k1. VMOVAPD zmm1 {k1}{z},zmm2/m512 EVEX.512.66.0F.W1 28 /r AVX512F Move aligned packed double-precision floatingpoint values from zmm2/m512 to zmm1 using writemask k1. VMOVAPD xmm2/m128 {k1}{z},xmm1 EVEX.128.66.0F.W1 29 /r AVX512VL AVX512F Move aligned packed double-precision floatingpoint values from xmm1 to xmm2/m128 using writemask k1. VMOVAPD ymm2/m256 {k1}{z},ymm1 EVEX.256.66.0F.W1 29 /r AVX512VL AVX512F Move aligned packed double-precision floatingpoint values from ymm1 to ymm2/m256 using writemask k1. VMOVAPD zmm2/m512 {k1}{z},zmm1 EVEX.512.66.0F.W1 29 /r AVX512F Move aligned packed double-precision floatingpoint values from zmm1 to zmm2/m512 using writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:r/m(w) ModRM:reg(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:r/m(w) ModRM:reg(r) NA NA MOVAPS--Move Aligned Packed Single-Precision Floating-Point Values. MOVAPS xmm1,xmm2/m128 0F 28 /r SSE Move aligned packed single-precision floating-point values from xmm2/mem to xmm1. MOVAPS xmm2/m128,xmm1 0F 29 /r SSE Move aligned packed single-precision floating-point values from xmm1 to xmm2/mem. VMOVAPS xmm1,xmm2/m128 VEX.128.0F.WIG 28 /r AVX Move aligned packed single-precision floating-point values from xmm2/mem to xmm1. VMOVAPS xmm2/m128,xmm1 VEX.128.0F.WIG 29 /r AVX Move aligned packed single-precision floating-point values from xmm1 to xmm2/mem. VMOVAPS ymm1,ymm2/m256 VEX.256.0F.WIG 28 /r AVX Move aligned packed single-precision floating-point values from ymm2/mem to ymm1. VMOVAPS ymm2/m256,ymm1 VEX.256.0F.WIG 29 /r AVX Move aligned packed single-precision floating-point values from ymm1 to ymm2/mem. VMOVAPS xmm1 {k1}{z},xmm2/m128 EVEX.128.0F.W0 28 /r AVX512VL AVX512F Move aligned packed single-precision floating-point values from xmm2/m128 to xmm1 using writemask k1. VMOVAPS ymm1 {k1}{z},ymm2/m256 EVEX.256.0F.W0 28 /r AVX512VL AVX512F Move aligned packed single-precision floating-point values from ymm2/m256 to ymm1 using writemask k1. VMOVAPS zmm1 {k1}{z},zmm2/m512 EVEX.512.0F.W0 28 /r AVX512F Move aligned packed single-precision floating-point values from zmm2/m512 to zmm1 using writemask k1. VMOVAPS xmm2/m128 {k1}{z},xmm1 EVEX.128.0F.W0 29 /r AVX512VL AVX512F Move aligned packed single-precision floating-point values from xmm1 to xmm2/m128 using writemask k1. VMOVAPS ymm2/m256 {k 1}{z},ymm1 EVEX.256.0F.W0 29 /r AVX512VL AVX512F Move aligned packed single-precision floating-point values from ymm1 to ymm2/m256 using writemask k1. VMOVAPS zmm2/m512 {k1}{z},zmm1 EVEX.512.0F.W0 29 /r AVX512F Move aligned packed single-precision floating-point values from zmm1 to zmm2/m512 using writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:r/m(w) ModRM:reg(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:r/m(w) ModRM:reg(r) NA NA MOVD/MOVQ--Move Doubleword and Quadword. MOVD xmm1,r32/m32 66 0F 6E /r SSE2 Move doubleword from r/m32 to xmm1. MOVQ xmm1,r64/m64 66 REX.W 0F 6E /r SSE2 Move quadword from r/m64 to xmm1. VMOVD xmm1,r32/m32 VEX.128.66.0F.W0 6E /r AVX Move doubleword from r/m32 to xmm1. VMOVQ xmm1,r64/m64 VEX.128.66.0F.W1 6E /r AVX Move quadword from r/m64 to xmm1. VMOVD xmm1,r32/m32 EVEX.128.66.0F.W0 6E /r AVX512F Move doubleword from r/m32 to xmm1. VMOVQ xmm1,r64/m64 EVEX.128.66.0F.W1 6E /r AVX512F Move quadword from r/m64 to xmm1. MOVD r32/m32,xmm1 66 0F 7E /r SSE2 Move doubleword from xmm1 register to r/m32. MOVQ r64/m64,xmm1 66 REX.W 0F 7E /r SSE2 Move quadword from xmm1 register to r/m64. VMOVD r32/m32,xmm1 VEX.128.66.0F.W0 7E /r AVX Move doubleword from xmm1 register to r/m32. VMOVQ r64/m64,xmm1 VEX.128.66.0F.W1 7E /r AVX Move quadword from xmm1 register to r/m64. VMOVD r32/m32,xmm1 EVEX.128.66.0F.W0 7E /r AVX512F Move doubleword from xmm1 register to r/m32. VMOVQ r64/m64,xmm1 EVEX.128.66.0F.W1 7E /r AVX512F Move quadword from xmm1 register to r/m64. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:r/m(w) ModRM:reg(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:r/m(w) ModRM:reg(r) NA NA MOVQ--Move Quadword. MOVQ xmm1,xmm2/m64 F3 0F 7E /r SSE2 Move quadword from xmm2/m64 to xmm1. VMOVQ xmm1,xmm2/m64 VEX.128.F3.0F.WIG 7E /r AVX Move quadword from xmm2/m64 to xmm1. VMOVQ xmm1,xmm2/m64 EVEX.128.F3.0F.W1 7E /r AVX512F Move quadword from xmm2/m64 to xmm1. MOVQ xmm1/m64,xmm2 66 0F D6 /r SSE2 Move quadword from xmm2 register to xmm1/m64. VMOVQ xmm1/m64,xmm2 VEX.128.66.0F D6.WIG /r AVX Move quadword from xmm2 register to xmm1/m64. VMOVQ xmm1/m64,xmm2 EVEX.128.66.0F.W1 D6 /r AVX512F Move quadword from xmm2 register to xmm1/m64. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:r/m(w) ModRM:reg(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:r/m(w) ModRM:reg(r) NA NA MOVDDUP--Replicate Double FP Values. MOVDDUP xmm1,xmm2/m64 F2 0F 12 /r SSE3 Move double-precision floating-point value from xmm2/m64 and duplicate into xmm1. VMOVDDUP xmm1,xmm2/m64 VEX.128.F2.0F.WIG 12 /r AVX Move double-precision floating-point value from xmm2/m64 and duplicate into xmm1. VMOVDDUP ymm1,ymm2/m256 VEX.256.F2.0F.WIG 12 /r AVX Move even index double-precision floating-point values from ymm2/mem and duplicate each element into ymm1. VMOVDDUP xmm1 {k1}{z},xmm2/m64 EVEX.128.F2.0F.W1 12 /r AVX512VL AVX512F Move double-precision floating-point value from xmm2/m64 and duplicate each element into xmm1 subject to writemask k1. VMOVDDUP ymm1 {k1}{z},ymm2/m256 EVEX.256.F2.0F.W1 12 /r AVX512VL AVX512F Move even index double-precision floating-point values from ymm2/m256 and duplicate each element into ymm1 subject to writemask k1. VMOVDDUP zmm1 {k1}{z},zmm2/m512 EVEX.512.F2.0F.W1 12 /r AVX512F Move even index double-precision floating-point values from zmm2/m512 and duplicate each element into zmm1 subject to writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA MOVDQA,VMOVDQA32/64--Move Aligned Packed Integer Values. MOVDQA xmm1,xmm2/m128 66 0F 6F /r SSE2 Move aligned packed integer values from xmm2/mem to xmm1. MOVDQA xmm2/m128,xmm1 66 0F 7F /r SSE2 Move aligned packed integer values from xmm1 to xmm2/mem. VMOVDQA xmm1,xmm2/m128 VEX.128.66.0F.WIG 6F /r AVX Move aligned packed integer values from xmm2/mem to xmm1. VMOVDQA xmm2/m128,xmm1 VEX.128.66.0F.WIG 7F /r AVX Move aligned packed integer values from xmm1 to xmm2/mem. VMOVDQA ymm1,ymm2/m256 VEX.256.66.0F.WIG 6F /r AVX Move aligned packed integer values from ymm2/mem to ymm1. VMOVDQA ymm2/m256,ymm1 VEX.256.66.0F.WIG 7F /r AVX Move aligned packed integer values from ymm1 to ymm2/mem. VMOVDQA32 xmm1 {k1}{z},xmm2/m128 EVEX.128.66.0F.W0 6F /r AVX512VL AVX512F Move aligned packed doubleword integer values from xmm2/m128 to xmm1 using writemask k1. VMOVDQA32 ymm1 {k1}{z},ymm2/m256 EVEX.256.66.0F.W0 6F /r AVX512VL AVX512F Move aligned packed doubleword integer values from ymm2/m256 to ymm1 using writemask k1. VMOVDQA32 zmm1 {k1}{z},zmm2/m512 EVEX.512.66.0F.W0 6F /r AVX512F Move aligned packed doubleword integer values from zmm2/m512 to zmm1 using writemask k1. VMOVDQA32 xmm2/m128 {k1}{z},xmm1 EVEX.128.66.0F.W0 7F /r AVX512VL AVX512F Move aligned packed doubleword integer values from xmm1 to xmm2/m128 using writemask k1. VMOVDQA32 ymm2/m256 {k1}{z},ymm1 EVEX.256.66.0F.W0 7F /r AVX512VL AVX512F Move aligned packed doubleword integer values from ymm1 to ymm2/m256 using writemask k1. VMOVDQA32 zmm2/m512 {k1}{z},zmm1 EVEX.512.66.0F.W0 7F /r AVX512F Move aligned packed doubleword integer values from zmm1 to zmm2/m512 using writemask k1. VMOVDQA64 xmm1 {k1}{z},xmm2/m128 EVEX.128.66.0F.W1 6F /r AVX512VL AVX512F Move aligned quadword integer values from xmm2/m128 to xmm1 using writemask k1. VMOVDQA64 ymm1 {k1}{z},ymm2/m256 EVEX.256.66.0F.W1 6F /r AVX512VL AVX512F Move aligned quadword integer values from ymm2/m256 to ymm1 using writemask k1. VMOVDQA64 zmm1 {k1}{z},zmm2/m512 EVEX.512.66.0F.W1 6F /r AVX512F Move aligned packed quadword integer values from zmm2/m512 to zmm1 using writemask k1. VMOVDQA64 xmm2/m128 {k1}{z},xmm1 EVEX.128.66.0F.W1 7F /r AVX512VL AVX512F Move aligned packed quadword integer values from xmm1 to xmm2/m128 using writemask k1. VMOVDQA64 ymm2/m256 {k1}{z},ymm1 EVEX.256.66.0F.W1 7F /r AVX512VL AVX512F Move aligned packed quadword integer values from ymm1 to ymm2/m256 using writemask k1. VMOVDQA64 zmm2/m512 {k1}{z},zmm1 EVEX.512.66.0F.W1 7F /r AVX512F Move aligned packed quadword integer values from zmm1 to zmm2/m512 using writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:r/m(w) ModRM:reg(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:r/m(w) ModRM:reg(r) NA NA MOVDQU,VMOVDQU8/16/32/64--Move Unaligned Packed Integer Values. MOVDQU xmm1,xmm2/m128 F3 0F 6F /r SSE2 Move unaligned packed integer values from xmm2/m128 to xmm1. MOVDQU xmm2/m128,xmm1 F3 0F 7F /r SSE2 Move unaligned packed integer values from xmm1 to xmm2/m128. VMOVDQU xmm1,xmm2/m128 VEX.128.F3.0F.WIG 6F /r AVX Move unaligned packed integer values from xmm2/m128 to xmm1. VMOVDQU xmm2/m128,xmm1 VEX.128.F3.0F.WIG 7F /r AVX Move unaligned packed integer values from xmm1 to xmm2/m128. VMOVDQU ymm1,ymm2/m256 VEX.256.F3.0F.WIG 6F /r AVX Move unaligned packed integer values from ymm2/m256 to ymm1. VMOVDQU ymm2/m256,ymm1 VEX.256.F3.0F.WIG 7F /r AVX Move unaligned packed integer values from ymm1 to ymm2/m256. VMOVDQU8 xmm1 {k1}{z},xmm2/m128 EVEX.128.F2.0F.W0 6F /r AVX512VL AVX512BW Move unaligned packed byte integer values from xmm2/m128 to xmm1 using writemask k1. VMOVDQU8 ymm1 {k1}{z},ymm2/m256 EVEX.256.F2.0F.W0 6F /r AVX512VL AVX512BW Move unaligned packed byte integer values from ymm2/m256 to ymm1 using writemask k1. VMOVDQU8 zmm1 {k1}{z},zmm2/m512 EVEX.512.F2.0F.W0 6F /r AVX512BW Move unaligned packed byte integer values from zmm2/m512 to zmm1 using writemask k1. VMOVDQU8 xmm2/m128 {k1}{z},xmm1 EVEX.128.F2.0F.W0 7F /r AVX512VL AVX512BW Move unaligned packed byte integer values from xmm1 to xmm2/m128 using writemask k1. VMOVDQU8 ymm2/m256 {k 1}{z},ymm1 EVEX.256.F2.0F.W0 7F /r AVX512VL AVX512BW Move unaligned packed byte integer values from ymm1 to ymm2/m256 using writemask k1. VMOVDQU8 zmm2/m512 {k1}{z},zmm1 EVEX.512.F2.0F.W0 7F /r AVX512BW Move unaligned packed byte integer values from zmm1 to zmm2/m512 using writemask k1. VMOVDQU16 xmm1 {k1}{z},xmm2/m128 EVEX.128.F2.0F.W1 6F /r AVX512VL AVX512BW Move unaligned packed word integer values from xmm2/m128 to xmm1 using writemask k1. VMOVDQU16 ymm1 {k1}{z},ymm2/m256 EVEX.256.F2.0F.W1 6F /r AVX512VL AVX512BW Move unaligned packed word integer values from ymm2/m256 to ymm1 using writemask k1. VMOVDQU16 zmm1 {k1}{z},zmm2/m512 EVEX.512.F2.0F.W1 6F /r AVX512BW Move unaligned packed word integer values from zmm2/m512 to zmm1 using writemask k1. VMOVDQU16 xmm2/m128 {k1}{z},xmm1 EVEX.128.F2.0F.W1 7F /r AVX512VL AVX512BW Move unaligned packed word integer values from xmm1 to xmm2/m128 using writemask k1. VMOVDQU16 ymm2/m256 {k1}{z},ymm1 EVEX.256.F2.0F.W1 7F /r AVX512VL AVX512BW Move unaligned packed word integer values from ymm1 to ymm2/m256 using writemask k1. VMOVDQU16 zmm2/m512 {k1}{z},zmm1 EVEX.512.F2.0F.W1 7F /r AVX512BW Move unaligned packed word integer values from zmm1 to zmm2/m512 using writemask k1. VMOVDQU32 xmm1 {k1}{z},xmm2/mm128 EVEX.128.F3.0F.W0 6F /r AVX512VL AVX512F Move unaligned packed doubleword integer values from xmm2/m128 to xmm1 using writemask k1. VMOVDQU32 ymm1 {k1}{z},ymm2/m256 EVEX.256.F3.0F.W0 6F /r AVX512VL AVX512F Move unaligned packed doubleword integer values from ymm2/m256 to ymm1 using writemask k1. VMOVDQU32 zmm1 {k 1}{z},zmm2/m512 EVEX.512.F3.0F.W0 6F /r AVX512F Move unaligned packed doubleword integer values from zmm2/m512 to zmm1 using writemask k1. VMOVDQU32 xmm2/m128 {k1}{z},xmm1 EVEX.128.F3.0F.W0 7F /r AVX512VL AVX512F Move unaligned packed doubleword integer values from xmm1 to xmm2/m128 using writemask k1. VMOVDQU32 ymm2/m256 {k1}{z},ymm1 EVEX.256.F3.0F.W0 7F /r AVX512VL AVX512F Move unaligned packed doubleword integer values from ymm1 to ymm2/m256 using writemask k1. VMOVDQU32 zmm2/m512 {k1}{z},zmm1 EVEX.512.F3.0F.W0 7F /r AVX512F Move unaligned packed doubleword integer values from zmm1 to zmm2/m512 using writemask k1. VMOVDQU64 xmm1 {k1}{z},xmm2/m128 EVEX.128.F3.0F.W1 6F /r AVX512VL AVX512F Move unaligned packed quadword integer values from xmm2/m128 to xmm1 using writemask k1. VMOVDQU64 ymm1 {k1}{z},ymm2/m256 EVEX.256.F3.0F.W1 6F /r AVX512VL AVX512F Move unaligned packed quadword integer values from ymm2/m256 to ymm1 using writemask k1. VMOVDQU64 zmm1 {k1}{z},zmm2/m512 EVEX.512.F3.0F.W1 6F /r AVX512F Move unaligned packed quadword integer values from zmm2/m512 to zmm1 using writemask k1. VMOVDQU64 xmm2/m128 {k1}{z},xmm1 EVEX.128.F3.0F.W1 7F /r AVX512VL AVX512F Move unaligned packed quadword integer values from xmm1 to xmm2/m128 using writemask k1. VMOVDQU64 ymm2/m256 {k1}{z},ymm1 EVEX.256.F3.0F.W1 7F /r AVX512VL AVX512F Move unaligned packed quadword integer values from ymm1 to ymm2/m256 using writemask k1. VMOVDQU64 zmm2/m512 {k1}{z},zmm1 EVEX.512.F3.0F.W1 7F /r AVX512F Move unaligned packed quadword integer values from zmm1 to zmm2/m512 using writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:r/m(w) ModRM:reg(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:r/m(w) ModRM:reg(r) NA NA MOVHLPS--Move Packed Single-Precision Floating-Point Values High to Low. MOVHLPS xmm1,xmm2 0F 12 /r SSE Move two packed single-precision floating-point values from high quadword of xmm2 to low quadword of xmm1. VMOVHLPS xmm1,xmm2,xmm3 VEX.NDS.128.0F.WIG 12 /r AVX Merge two packed single-precision floating-point values from high quadword of xmm3 and low quadword of xmm2. VMOVHLPS xmm1,xmm2,xmm3 EVEX.NDS.128.0F.W0 12 /r AVX512F Merge two packed single-precision floating-point values from high quadword of xmm3 and low quadword of xmm2. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) vvvv(r) ModRM:r/m(r) NA MOVHPD--Move High Packed Double-Precision Floating-Point Value. MOVHPD xmm1,m64 66 0F 16 /r SSE2 Move double-precision floating-point value from m64 to high quadword of xmm1. VMOVHPD xmm2,xmm1,m64 VEX.NDS.128.66.0F.WIG 16 /r AVX Merge double-precision floating-point value from m64 and the low quadword of xmm1. VMOVHPD xmm2,xmm1,m64 EVEX.NDS.128.66.0F.W1 16 /r AVX512F Merge double-precision floating-point value from m64 and the low quadword of xmm1. MOVHPD m64,xmm1 66 0F 17 /r SSE2 Move double-precision floating-point value from high quadword of xmm1 to m64. VMOVHPD m64,xmm1 VEX.128.66.0F.WIG 17 /r AVX Move double-precision floating-point value from high quadword of xmm1 to m64. VMOVHPD m64,xmm1 EVEX.128.66.0F.W1 17 /r AVX512F Move double-precision floating-point value from high quadword of xmm1 to m64. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv ModRM:r/m(r) NA ModRM:r/m(w) ModRM:reg(r) NA NA ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA ModRM:r/m(w) ModRM:reg(r) NA NA MOVHPS--Move High Packed Single-Precision Floating-Point Values. MOVHPS xmm1,m64 0F 16 /r SSE Move two packed single-precision floating-point values from m64 to high quadword of xmm1. VMOVHPS xmm2,xmm1,m64 VEX.NDS.128.0F.WIG 16 /r AVX Merge two packed single-precision floating-point values from m64 and the low quadword of xmm1. VMOVHPS xmm2,xmm1,m64 EVEX.NDS.128.0F.W0 16 /r AVX512F Merge two packed single-precision floating-point values from m64 and the low quadword of xmm1. MOVHPS m64,xmm1 0F 17 /r SSE Move two packed single-precision floating-point values from high quadword of xmm1 to m64. VMOVHPS m64,xmm1 VEX.128.0F.WIG 17 /r AVX Move two packed single-precision floating-point values from high quadword of xmm1 to m64. VMOVHPS m64,xmm1 EVEX.128.0F.W0 17 /r AVX512F Move two packed single-precision floating-point values from high quadword of xmm1 to m64. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv ModRM:r/m(r) NA ModRM:r/m(w) ModRM:reg(r) NA NA ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA ModRM:r/m(w) ModRM:reg(r) NA NA MOVLHPS--Move Packed Single-Precision Floating-Point Values Low to High. MOVLHPS xmm1,xmm2 0F 16 /r SSE Move two packed single-precision floating-point values from low quadword of xmm2 to high quadword of xmm1. VMOVLHPS xmm1,xmm2,xmm3 VEX.NDS.128.0F.WIG 16 /r AVX Merge two packed single-precision floating-point values from low quadword of xmm3 and low quadword of xmm2. VMOVLHPS xmm1,xmm2,xmm3 EVEX.NDS.128.0F.W0 16 /r AVX512F Merge two packed single-precision floating-point values from low quadword of xmm3 and low quadword of xmm2. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) vvvv(r) ModRM:r/m(r) NA MOVLPD--Move Low Packed Double-Precision Floating-Point Value. MOVLPD xmm1,m64 66 0F 12 /r SSE2 Move double-precision floating-point value from m64 to low quadword of xmm1. VMOVLPD xmm2,xmm1,m64 VEX.NDS.128.66.0F.WIG 12 /r AVX Merge double-precision floating-point value from m64 and the high quadword of xmm1. VMOVLPD xmm2,xmm1,m64 EVEX.NDS.128.66.0F.W1 12 /r AVX512F Merge double-precision floating-point value from m64 and the high quadword of xmm1. MOVLPD m64,xmm1 66 0F 13/r SSE2 Move double-precision floating-point value from low quadword of xmm1 to m64. VMOVLPD m64,xmm1 VEX.128.66.0F.WIG 13/r AVX Move double-precision floating-point value from low quadword of xmm1 to m64. VMOVLPD m64,xmm1 EVEX.128.66.0F.W1 13/r AVX512F Move double-precision floating-point value from low quadword of xmm1 to m64. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:r/m(r) VEX.vvvv ModRM:r/m(r) NA ModRM:r/m(w) ModRM:reg(r) NA NA ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA ModRM:r/m(w) ModRM:reg(r) NA NA MOVLPS--Move Low Packed Single-Precision Floating-Point Values. MOVLPS xmm1,m64 0F 12 /r SSE Move two packed single-precision floating-point values from m64 to low quadword of xmm1. VMOVLPS xmm2,xmm1,m64 VEX.NDS.128.0F.WIG 12 /r AVX Merge two packed single-precision floating-point values from m64 and the high quadword of xmm1. VMOVLPS xmm2,xmm1,m64 EVEX.NDS.128.0F.W0 12 /r AVX512F Merge two packed single-precision floating-point values from m64 and the high quadword of xmm1. MOVLPS m64,xmm1 0F 13/r SSE Move two packed single-precision floating-point values from low quadword of xmm1 to m64. VMOVLPS m64,xmm1 VEX.128.0F.WIG 13/r AVX Move two packed single-precision floating-point values from low quadword of xmm1 to m64. VMOVLPS m64,xmm1 EVEX.128.0F.W0 13/r AVX512F Move two packed single-precision floating-point values from low quadword of xmm1 to m64. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv ModRM:r/m(r) NA ModRM:r/m(w) ModRM:reg(r) NA NA ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA ModRM:r/m(w) ModRM:reg(r) NA NA MOVNTDQA--Load Double Quadword Non-Temporal Aligned Hint. MOVNTDQA xmm1,m128 66 0F 38 2A /r SSE4_1 Move double quadword from m128 to xmm1 using nontemporal hint if WC memory type. VMOVNTDQA xmm1,m128 VEX.128.66.0F38.WIG 2A /r AVX Move double quadword from m128 to xmm using nontemporal hint if WC memory type. VMOVNTDQA ymm1,m256 VEX.256.66.0F38.WIG 2A /r AVX2 Move 256-bit data from m256 to ymm using non-temporal hint if WC memory type. VMOVNTDQA xmm1,m128 EVEX.128.66.0F38 2A /r AVX512VL AVX512F Move 128-bit data from m128 to xmm using non-temporal hint if WC memory type. VMOVNTDQA ymm1,m256 EVEX.256.66.0F38 2A /r AVX512VL AVX512F Move 256-bit data from m256 to ymm using non-temporal hint if WC memory type. VMOVNTDQA zmm1,m512 EVEX.512.66.0F38.W0 2A /r AVX512F Move 512-bit data from m512 to zmm using non-temporal hint if WC memory type. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA MOVNTDQ--Store Packed Integers Using Non-Temporal Hint. MOVNTDQ m128,xmm1 66 0F E7 /r SSE2 Move packed integer values in xmm1 to m128 using nontemporal hint. VMOVNTDQ m128,xmm1 VEX.128.66.0F.WIG E7 /r AVX Move packed integer values in xmm1 to m128 using nontemporal hint. VMOVNTDQ m256,ymm1 VEX.256.66.0F.WIG E7 /r AVX Move packed integer values in ymm1 to m256 using nontemporal hint. VMOVNTDQ m128,xmm1 EVEX.128.66.0F E7 /r AVX512VL AVX512F Move packed integer values in xmm1 to m128 using nontemporal hint. VMOVNTDQ m256,ymm1 EVEX.256.66.0F E7 /r AVX512VL AVX512F Move packed integer values in zmm1 to m256 using nontemporal hint. VMOVNTDQ m512,zmm1 EVEX.512.66.0F.W0 E7 /r AVX512F Move packed integer values in zmm1 to m512 using nontemporal hint. ModRM:r/m(w) ModRM:reg(r) NA NA ModRM:r/m(w) ModRM:reg(r) NA NA MOVNTPD--Store Packed Double-Precision Floating-Point Values Using Non-Temporal Hint. MOVNTPD m128,xmm1 66 0F 2B /r SSE2 Move packed double-precision values in xmm1 to m128 using non-temporal hint. VMOVNTPD m128,xmm1 VEX.128.66.0F.WIG 2B /r AVX Move packed double-precision values in xmm1 to m128 using non-temporal hint. VMOVNTPD m256,ymm1 VEX.256.66.0F.WIG 2B /r AVX Move packed double-precision values in ymm1 to m256 using non-temporal hint. VMOVNTPD m128,xmm1 EVEX.128.66.0F.W1 2B /r AVX512VL AVX512F Move packed double-precision values in xmm1 to m128 using non-temporal hint. VMOVNTPD m256,ymm1 EVEX.256.66.0F.W1 2B /r AVX512VL AVX512F Move packed double-precision values in ymm1 to m256 using non-temporal hint. VMOVNTPD m512,zmm1 EVEX.512.66.0F.W1 2B /r AVX512F Move packed double-precision values in zmm1 to m512 using non-temporal hint. ModRM:r/m(w) ModRM:reg(r) NA NA ModRM:r/m(w) ModRM:reg(r) NA NA MOVNTPS--Store Packed Single-Precision Floating-Point Values Using Non-Temporal Hint. MOVNTPS m128,xmm1 0F 2B /r SSE Move packed single-precision values xmm1 to mem using non-temporal hint. VMOVNTPS m128,xmm1 VEX.128.0F.WIG 2B /r AVX Move packed single-precision values xmm1 to mem using non-temporal hint. VMOVNTPS m256,ymm1 VEX.256.0F.WIG 2B /r AVX Move packed single-precision values ymm1 to mem using non-temporal hint. VMOVNTPS m128,xmm1 EVEX.128.66.0F.W0 2B /r AVX512VL AVX512F Move packed single-precision values in xmm1 to m128 using non-temporal hint. VMOVNTPS m256,ymm1 EVEX.256.66.0F.W0 2B /r AVX512VL AVX512F Move packed single-precision values in ymm1 to m256 using non-temporal hint. VMOVNTPS m512,zmm1 EVEX.512.0F.W0 2B /r AVX512F Move packed single-precision values in zmm1 to m512 using non-temporal hint. ModRM:r/m(w) ModRM:reg(r) NA NA ModRM:r/m(w) ModRM:reg(r) NA NA MOVSD--Move or Merge Scalar Double-Precision Floating-Point Value. MOVSD xmm1,xmm2 F2 0F 10 /r SSE2 Move scalar double-precision floating-point value from xmm2 to xmm1 register. MOVSD xmm1,m64 F2 0F 10 /r SSE2 Load scalar double-precision floating-point value from m64 to xmm1 register. MOVSD xmm1/m64,xmm2 F2 0F 11 /r SSE2 Move scalar double-precision floating-point value from xmm2 register to xmm1/m64. VMOVSD xmm1,xmm2,xmm3 VEX.NDS.LIG.F2.0F.WIG 10 /r AVX Merge scalar double-precision floating-point value from xmm2 and xmm3 to xmm1 register. VMOVSD xmm1,m64 VEX.LIG.F2.0F.WIG 10 /r AVX Load scalar double-precision floating-point value from m64 to xmm1 register. VMOVSD xmm1,xmm2,xmm3 VEX.NDS.LIG.F2.0F.WIG 11 /r AVX Merge scalar double-precision floating-point value from xmm2 and xmm3 registers to xmm1. VMOVSD m64,xmm1 VEX.LIG.F2.0F.WIG 11 /r AVX Store scalar double-precision floating-point value from xmm1 register to m64. VMOVSD xmm1 {k1}{z},xmm2,xmm3 EVEX.NDS.LIG.F2.0F.W1 10 /r AVX512F Merge scalar double-precision floating-point value from xmm2 and xmm3 registers to xmm1 under writemask k1. VMOVSD xmm1 {k1}{z},m64 EVEX.LIG.F2.0F.W1 10 /r AVX512F Load scalar double-precision floating-point value from m64 to xmm1 register under writemask k1. VMOVSD xmm1 {k1}{z},xmm2,xmm3 EVEX.NDS.LIG.F2.0F.W1 11 /r AVX512F Merge scalar double-precision floating-point value from xmm2 and xmm3 registers to xmm1 under writemask k1. VMOVSD m64 {k1},xmm1 EVEX.LIG.F2.0F.W1 11 /r AVX512F Store scalar double-precision floating-point value from xmm1 register to m64 under writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:r/m(w) ModRM:reg(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:r/m(w) vvvv(r) ModRM:reg(r) NA ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:r/m(w) ModRM:reg(r) NA NA MOVSHDUP--Replicate Single FP Values. MOVSHDUP xmm1,xmm2/m128 F3 0F 16 /r SSE3 Move odd index single-precision floating-point values from xmm2/mem and duplicate each element into xmm1. VMOVSHDUP xmm1,xmm2/m128 VEX.128.F3.0F.WIG 16 /r AVX Move odd index single-precision floating-point values from xmm2/mem and duplicate each element into xmm1. VMOVSHDUP ymm1,ymm2/m256 VEX.256.F3.0F.WIG 16 /r AVX Move odd index single-precision floating-point values from ymm2/mem and duplicate each element into ymm1. VMOVSHDUP xmm1 {k1}{z},xmm2/m128 EVEX.128.F3.0F.W0 16 /r AVX512VL AVX512F Move odd index single-precision floating-point values from xmm2/m128 and duplicate each element into xmm1 under writemask. VMOVSHDUP ymm1 {k1}{z},ymm2/m256 EVEX.256.F3.0F.W0 16 /r AVX512VL AVX512F Move odd index single-precision floating-point values from ymm2/m256 and duplicate each element into ymm1 under writemask. VMOVSHDUP zmm1 {k1}{z},zmm2/m512 EVEX.512.F3.0F.W0 16 /r AVX512F Move odd index single-precision floating-point values from zmm2/m512 and duplicate each element into zmm1 under writemask. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA MOVSLDUP--Replicate Single FP Values. MOVSLDUP xmm1,xmm2/m128 F3 0F 12 /r SSE3 Move even index single-precision floating-point values from xmm2/mem and duplicate each element into xmm1. VMOVSLDUP xmm1,xmm2/m128 VEX.128.F3.0F.WIG 12 /r AVX Move even index single-precision floating-point values from xmm2/mem and duplicate each element into xmm1. VMOVSLDUP ymm1,ymm2/m256 VEX.256.F3.0F.WIG 12 /r AVX Move even index single-precision floating-point values from ymm2/mem and duplicate each element into ymm1. VMOVSLDUP xmm1 {k1}{z},xmm2/m128 EVEX.128.F3.0F.W0 12 /r AVX512VL AVX512F Move even index single-precision floating-point values from xmm2/m128 and duplicate each element into xmm1 under writemask. VMOVSLDUP ymm1 {k1}{z},ymm2/m256 EVEX.256.F3.0F.W0 12 /r AVX512VL AVX512F Move even index single-precision floating-point values from ymm2/m256 and duplicate each element into ymm1 under writemask. VMOVSLDUP zmm1 {k1}{z},zmm2/m512 EVEX.512.F3.0F.W0 12 /r AVX512F Move even index single-precision floating-point values from zmm2/m512 and duplicate each element into zmm1 under writemask. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA MOVSS--Move or Merge Scalar Single-Precision Floating-Point Value. MOVSS xmm1,xmm2 F3 0F 10 /r SSE Merge scalar single-precision floating-point value from xmm2 to xmm1 register. MOVSS xmm1,m32 F3 0F 10 /r SSE Load scalar single-precision floating-point value from m32 to xmm1 register. VMOVSS xmm1,xmm2,xmm3 VEX.NDS.LIG.F3.0F.WIG 10 /r AVX Merge scalar single-precision floating-point value from xmm2 and xmm3 to xmm1 register. VMOVSS xmm1,m32 VEX.LIG.F3.0F.WIG 10 /r AVX Load scalar single-precision floating-point value from m32 to xmm1 register. MOVSS xmm2/m32,xmm1 F3 0F 11 /r SSE Move scalar single-precision floating-point value from xmm1 register to xmm2/m32. VMOVSS xmm1,xmm2,xmm3 VEX.NDS.LIG.F3.0F.WIG 11 /r AVX Move scalar single-precision floating-point value from xmm2 and xmm3 to xmm1 register. VMOVSS m32,xmm1 VEX.LIG.F3.0F.WIG 11 /r AVX Move scalar single-precision floating-point value from xmm1 register to m32. VMOVSS xmm1 {k1}{z},xmm2,xmm3 EVEX.NDS.LIG.F3.0F.W0 10 /r AVX512F Move scalar single-precision floating-point value from xmm2 and xmm3 to xmm1 register under writemask k1. VMOVSS xmm1 {k1}{z},m32 EVEX.LIG.F3.0F.W0 10 /r AVX512F Move scalar single-precision floating-point values from m32 to xmm1 under writemask k1. VMOVSS xmm1 {k1}{z},xmm2,xmm3 EVEX.NDS.LIG.F3.0F.W0 11 /r AVX512F Move scalar single-precision floating-point value from xmm2 and xmm3 to xmm1 register under writemask k1. VMOVSS m32 {k1},xmm1 EVEX.LIG.F3.0F.W0 11 /r AVX512F Move scalar single-precision floating-point values from xmm1 to m32 under writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:r/m(w) ModRM:reg(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:r/m(w) vvvv(r) ModRM:reg(r) NA ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:r/m(w) ModRM:reg(r) NA NA MOVUPD--Move Unaligned Packed Double-Precision Floating-Point Values. MOVUPD xmm1,xmm2/m128 66 0F 10 /r SSE2 Move unaligned packed double-precision floatingpoint from xmm2/mem to xmm1. MOVUPD xmm2/m128,xmm1 66 0F 11 /r SSE2 Move unaligned packed double-precision floatingpoint from xmm1 to xmm2/mem. VMOVUPD xmm1,xmm2/m128 VEX.128.66.0F.WIG 10 /r AVX Move unaligned packed double-precision floatingpoint from xmm2/mem to xmm1. VMOVUPD xmm2/m128,xmm1 VEX.128.66.0F.WIG 11 /r AVX Move unaligned packed double-precision floatingpoint from xmm1 to xmm2/mem. VMOVUPD ymm1,ymm2/m256 VEX.256.66.0F.WIG 10 /r AVX Move unaligned packed double-precision floatingpoint from ymm2/mem to ymm1. VMOVUPD ymm2/m256,ymm1 VEX.256.66.0F.WIG 11 /r AVX Move unaligned packed double-precision floatingpoint from ymm1 to ymm2/mem. VMOVUPD xmm1 {k1}{z},xmm2/m128 EVEX.128.66.0F.W1 10 /r AVX512VL AVX512F Move unaligned packed double-precision floatingpoint from xmm2/m128 to xmm1 using writemask k1. VMOVUPD xmm2/m128 {k1}{z},xmm1 EVEX.128.66.0F.W1 11 /r AVX512VL AVX512F Move unaligned packed double-precision floatingpoint from xmm1 to xmm2/m128 using writemask k1. VMOVUPD ymm1 {k1}{z},ymm2/m256 EVEX.256.66.0F.W1 10 /r AVX512VL AVX512F Move unaligned packed double-precision floatingpoint from ymm2/m256 to ymm1 using writemask k1. VMOVUPD ymm2/m256 {k1}{z},ymm1 EVEX.256.66.0F.W1 11 /r AVX512VL AVX512F Move unaligned packed double-precision floatingpoint from ymm1 to ymm2/m256 using writemask k1. VMOVUPD zmm1 {k1}{z},zmm2/m512 EVEX.512.66.0F.W1 10 /r AVX512F Move unaligned packed double-precision floatingpoint values from zmm2/m512 to zmm1 using writemask k1. VMOVUPD zmm2/m512 {k1}{z},zmm1 EVEX.512.66.0F.W1 11 /r AVX512F Move unaligned packed double-precision floatingpoint values from zmm1 to zmm2/m512 using writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:r/m(w) ModRM:reg(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:r/m(w) ModRM:reg(r) NA NA MOVUPS--Move Unaligned Packed Single-Precision Floating-Point Values. MOVUPS xmm1,xmm2/m128 0F 10 /r SSE Move unaligned packed single-precision floating-point from xmm2/mem to xmm1. MOVUPS xmm2/m128,xmm1 0F 11 /r SSE Move unaligned packed single-precision floating-point from xmm1 to xmm2/mem. VMOVUPS xmm1,xmm2/m128 VEX.128.0F.WIG 10 /r AVX Move unaligned packed single-precision floating-point from xmm2/mem to xmm1. VMOVUPS xmm2/m128,xmm1 VEX.128.0F 11.WIG /r AVX Move unaligned packed single-precision floating-point from xmm1 to xmm2/mem. VMOVUPS ymm1,ymm2/m256 VEX.256.0F 10.WIG /r AVX Move unaligned packed single-precision floating-point from ymm2/mem to ymm1. VMOVUPS ymm2/m256,ymm1 VEX.256.0F 11.WIG /r AVX Move unaligned packed single-precision floating-point from ymm1 to ymm2/mem. VMOVUPS xmm1 {k1}{z},xmm2/m128 EVEX.128.0F.W0 10 /r AVX512VL AVX512F Move unaligned packed single-precision floating-point values from xmm2/m128 to xmm1 using writemask k1. VMOVUPS ymm1 {k1}{z},ymm2/m256 EVEX.256.0F.W0 10 /r AVX512VL AVX512F Move unaligned packed single-precision floating-point values from ymm2/m256 to ymm1 using writemask k1. VMOVUPS zmm1 {k1}{z},zmm2/m512 EVEX.512.0F.W0 10 /r AVX512F Move unaligned packed single-precision floating-point values from zmm2/m512 to zmm1 using writemask k1. VMOVUPS xmm2/m128 {k 1}{z},xmm1 EVEX.128.0F.W0 11 /r AVX512VL AVX512F Move unaligned packed single-precision floating-point values from xmm1 to xmm2/m128 using writemask k1. VMOVUPS ymm2/m256 {k1}{z},ymm1 EVEX.256.0F.W0 11 /r AVX512VL AVX512F Move unaligned packed single-precision floating-point values from ymm1 to ymm2/m256 using writemask k1. VMOVUPS zmm2/m512 {k1}{z},zmm1 EVEX.512.0F.W0 11 /r AVX512F Move unaligned packed single-precision floating-point values from zmm1 to zmm2/m512 using writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:r/m(w) ModRM:reg(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:r/m(w) ModRM:reg(r) NA NA PSADBW--Compute Sum of Absolute Differences. PSADBW xmm1,xmm2/m128 66 0F F6 /r SSE2 Computes the absolute differences of the packed unsigned byte integers from xmm2 /m128 and xmm1; the 8 low differences and 8 high differences are then summed separately to produce two unsigned word integer results. VPSADBW xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F F6 /r AVX Computes the absolute differences of the packed unsigned byte integers from xmm3 /m128 and xmm2; the 8 low differences and 8 high differences are then summed separately to produce two unsigned word integer results. VPSADBW ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F F6 /r AVX2 Computes the absolute differences of the packed unsigned byte integers from ymm3 /m256 and ymm2; then each consecutive 8 differences are summed separately to produce four unsigned word integer results. VPSADBW xmm1,xmm2,xmm3/m128 EVEX.NDS.128.66.0F.WIG F6 /r AVX512VL AVX512BW Computes the absolute differences of the packed unsigned byte integers from xmm3 /m128 and xmm2; then each consecutive 8 differences are summed separately to produce four unsigned word integer results. VPSADBW ymm1,ymm2,ymm3/m256 EVEX.NDS.256.66.0F.WIG F6 /r AVX512VL AVX512BW Computes the absolute differences of the packed unsigned byte integers from ymm3 /m256 and ymm2; then each consecutive 8 differences are summed separately to produce four unsigned word integer results. VPSADBW zmm1,zmm2,zmm3/m512 EVEX.NDS.512.66.0F.WIG F6 /r AVX512BW Computes the absolute differences of the packed unsigned byte integers from zmm3 /m512 and zmm2; then each consecutive 8 differences are summed separately to produce four unsigned word integer results. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA MULPD--Multiply Packed Double-Precision Floating-Point Values. MULPD xmm1,xmm2/m128 66 0F 59 /r SSE2 Multiply packed double-precision floating-point values in xmm2/m128 with xmm1 and store result in xmm1. VMULPD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG 59 /r AVX Multiply packed double-precision floating-point values in xmm3/m128 with xmm2 and store result in xmm1. VMULPD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F.WIG 59 /r AVX Multiply packed double-precision floating-point values in ymm3/m256 with ymm2 and store result in ymm1. VMULPD xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F.W1 59 /r AVX512VL AVX512F Multiply packed double-precision floating-point values from xmm3/m128/m64bcst to xmm2 and store result in xmm1. VMULPD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F.W1 59 /r AVX512VL AVX512F Multiply packed double-precision floating-point values from ymm3/m256/m64bcst to ymm2 and store result in ymm1. VMULPD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst{er} EVEX.NDS.512.66.0F.W1 59 /r AVX512F Multiply packed double-precision floating-point values in zmm3/m512/m64bcst with zmm2 and store result in zmm1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA MULPS--Multiply Packed Single-Precision Floating-Point Values. MULPS xmm1,xmm2/m128 0F 59 /r SSE Multiply packed single-precision floating-point values in xmm2/m128 with xmm1 and store result in xmm1. VMULPS xmm1,xmm2,xmm3/m128 VEX.NDS.128.0F.WIG 59 /r AVX Multiply packed single-precision floating-point values in xmm3/m128 with xmm2 and store result in xmm1. VMULPS ymm1,ymm2,ymm3/m256 VEX.NDS.256.0F.WIG 59 /r AVX Multiply packed single-precision floating-point values in ymm3/m256 with ymm2 and store result in ymm1. VMULPS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.0F.W0 59 /r AVX512VL AVX512F Multiply packed single-precision floating-point values from xmm3/m128/m32bcst to xmm2 and store result in xmm1. VMULPS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.0F.W0 59 /r AVX512VL AVX512F Multiply packed single-precision floating-point values from ymm3/m256/m32bcst to ymm2 and store result in ymm1. VMULPS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst {er} EVEX.NDS.512.0F.W0 59 /r AVX512F Multiply packed single-precision floating-point values in zmm3/m512/m32bcst with zmm2 and store result in zmm1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA MULSD--Multiply Scalar Double-Precision Floating-Point Value. MULSD xmm1,xmm2/m64 F2 0F 59 /r SSE2 Multiply the low double-precision floating-point value in xmm2/m64 by low double-precision floating-point value in xmm1. VMULSD xmm1,xmm2,xmm3/m64 VEX.NDS.128.F2.0F.WIG 59 /r AVX Multiply the low double-precision floating-point value in xmm3/m64 by low double-precision floating-point value in xmm2. VMULSD xmm1 {k1}{z},xmm2,xmm3/m64 {er} EVEX.NDS.LIG.F2.0F.W1 59 /r AVX512F Multiply the low double-precision floating-point value in xmm3/m64 by low double-precision floating-point value in xmm2. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA MULSS--Multiply Scalar Single-Precision Floating-Point Values. MULSS xmm1,xmm2/m32 F3 0F 59 /r SSE Multiply the low single-precision floating-point value in xmm2/m32 by the low single-precision floating-point value in xmm1. VMULSS xmm1,xmm2,xmm3/m32 VEX.NDS.128.F3.0F.WIG 59 /r AVX Multiply the low single-precision floating-point value in xmm3/m32 by the low single-precision floating-point value in xmm2. VMULSS xmm1 {k1}{z},xmm2,xmm3/m32 {er} EVEX.NDS.LIG.F3.0F.W0 59 /r AVX512F Multiply the low single-precision floating-point value in xmm3/m32 by the low single-precision floating-point value in xmm2. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA ORPD--Bitwise Logical OR of Packed Double Precision Floating-Point Values. ORPD xmm1,xmm2/m128 66 0F 56/r SSE2 Return the bitwise logical OR of packed double-precision floating-point values in xmm1 and xmm2/mem. VORPD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F 56 /r AVX Return the bitwise logical OR of packed double-precision floating-point values in xmm2 and xmm3/mem. VORPD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F 56 /r AVX Return the bitwise logical OR of packed double-precision floating-point values in ymm2 and ymm3/mem. VORPD xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F.W1 56 /r AVX512VL AVX512DQ Return the bitwise logical OR of packed double-precision floating-point values in xmm2 and xmm3/m128/m64bcst subject to writemask k1. VORPD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F.W1 56 /r AVX512VL AVX512DQ Return the bitwise logical OR of packed double-precision floating-point values in ymm2 and ymm3/m256/m64bcst subject to writemask k1. VORPD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.NDS.512.66.0F.W1 56 /r AVX512DQ Return the bitwise logical OR of packed double-precision floating-point values in zmm2 and zmm3/m512/m64bcst subject to writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA ORPS--Bitwise Logical OR of Packed Single Precision Floating-Point Values. ORPS xmm1,xmm2/m128 0F 56 /r SSE Return the bitwise logical OR of packed single-precision floating-point values in xmm1 and xmm2/mem. VORPS xmm1,xmm2,xmm3/m128 VEX.NDS.128.0F 56 /r AVX Return the bitwise logical OR of packed single-precision floating-point values in xmm2 and xmm3/mem. VORPS ymm1,ymm2,ymm3/m256 VEX.NDS.256.0F 56 /r AVX Return the bitwise logical OR of packed single-precision floating-point values in ymm2 and ymm3/mem. VORPS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.0F.W0 56 /r AVX512VL AVX512DQ Return the bitwise logical OR of packed single-precision floating-point values in xmm2 and xmm3/m128/m32bcst subject to writemask k1. VORPS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.0F.W0 56 /r AVX512VL AVX512DQ Return the bitwise logical OR of packed single-precision floating-point values in ymm2 and ymm3/m256/m32bcst subject to writemask k1. VORPS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst EVEX.NDS.512.0F.W0 56 /r AVX512DQ Return the bitwise logical OR of packed single-precision floating-point values in zmm2 and zmm3/m512/m32bcst subject to writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA PABSB/PABSW/PABSD/PABSQ--Packed Absolute Value. PABSB xmm1,xmm2/m128 66 0F 38 1C /r SSSE3 Compute the absolute value of bytes in xmm2/m128 and store UNSIGNED result in xmm1. PABSW xmm1,xmm2/m128 66 0F 38 1D /r SSSE3 Compute the absolute value of 16-bit integers in xmm2/m128 and store UNSIGNED result in xmm1. PABSD xmm1,xmm2/m128 66 0F 38 1E /r SSSE3 Compute the absolute value of 32-bit integers in xmm2/m128 and store UNSIGNED result in xmm1. VPABSB xmm1,xmm2/m128 VEX.128.66.0F38.WIG 1C /r AVX Compute the absolute value of bytes in xmm2/m128 and store UNSIGNED result in xmm1. VPABSW xmm1,xmm2/m128 VEX.128.66.0F38.WIG 1D /r AVX Compute the absolute value of 16-bit integers in xmm2/m128 and store UNSIGNED result in xmm1. VPABSD xmm1,xmm2/m128 VEX.128.66.0F38.WIG 1E /r AVX Compute the absolute value of 32-bit integers in xmm2/m128 and store UNSIGNED result in xmm1. VPABSB ymm1,ymm2/m256 VEX.256.66.0F38.WIG 1C /r AVX2 Compute the absolute value of bytes in ymm2/m256 and store UNSIGNED result in ymm1. VPABSW ymm1,ymm2/m256 VEX.256.66.0F38.WIG 1D /r AVX2 Compute the absolute value of 16-bit integers in ymm2/m256 and store UNSIGNED result in ymm1. VPABSD ymm1,ymm2/m256 VEX.256.66.0F38.WIG 1E /r AVX2 Compute the absolute value of 32-bit integers in ymm2/m256 and store UNSIGNED result in ymm1. VPABSB xmm1 {k1}{z},xmm2/m128 EVEX.128.66.0F 38 1C /r AVX512VL AVX512BW Compute the absolute value of bytes in xmm2/m128 and store UNSIGNED result in xmm1 using writemask k1. VPABSB ymm1 {k1}{z},ymm2/m256 EVEX.256.66.0F 38 1C /r AVX512VL AVX512BW Compute the absolute value of bytes in ymm2/m256 and store UNSIGNED result in ymm1 using writemask k1. VPABSB zmm1 {k1}{z},zmm2/m512 EVEX.512.66.0F 38 1C /r AVX512BW Compute the absolute value of bytes in zmm2/m512 and store UNSIGNED result in zmm1 using writemask k1. VPABSW xmm1 {k1}{z},xmm2/m128 EVEX.128.66.0F 38 1D /r AVX512VL AVX512BW Compute the absolute value of 16-bit integers in xmm2/m128 and store UNSIGNED result in xmm1 using writemask k1. VPABSW ymm1 {k1}{z},ymm2/m256 EVEX.256.66.0F 38 1D /r AVX512VL AVX512BW Compute the absolute value of 16-bit integers in ymm2/m256 and store UNSIGNED result in ymm1 using writemask k1. VPABSW zmm1 {k1}{z},zmm2/m512 EVEX.512.66.0F 38 1D /r AVX512BW Compute the absolute value of 16-bit integers in zmm2/m512 and store UNSIGNED result in zmm1 using writemask k1. VPABSD xmm1 {k1}{z},xmm2/m128/m32bcst EVEX.128.66.0F.W0 38 1E /r AVX512VL AVX512F Compute the absolute value of 32-bit integers in xmm2/m128/m32bcst and store UNSIGNED result in xmm1 using writemask k1. VPABSD ymm1 {k1}{z},ymm2/m256/m32bcst EVEX.256.66.0F.W0 38 1E /r AVX512VL AVX512F Compute the absolute value of 32-bit integers in ymm2/m256/m32bcst and store UNSIGNED result in ymm1 using writemask k1. VPABSD zmm1 {k1}{z},zmm2/m512/m32bcst EVEX.512.66.0F38.W0 1E /r AVX512F Compute the absolute value of 32-bit integers in zmm2/m512/m32bcst and store UNSIGNED result in zmm1 using writemask k1. VPABSQ xmm1 {k1}{z},xmm2/m128/m64bcst EVEX.128.66.0F.W1 38 1F /r AVX512VL AVX512F Compute the absolute value of 64-bit integers in xmm2/m128/m64bcst and store UNSIGNED result in xmm1 using writemask k1. VPABSQ ymm1 {k1}{z},ymm2/m256/m64bcst EVEX.256.66.0F.W1 38 1F /r AVX512VL AVX512F Compute the absolute value of 64-bit integers in ymm2/m256/m64bcst and store UNSIGNED result in ymm1 using writemask k1. VPABSQ zmm1 {k1}{z},zmm2/m512/m64bcst EVEX.512.66.0F38.W1 1F /r AVX512F Compute the absolute value of 64-bit integers in zmm2/m512/m64bcst and store UNSIGNED result in zmm1 using writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA PACKSSWB/PACKSSDW--Pack with Signed Saturation. PACKSSWB xmm1,xmm2/m128 66 0F 63 /r SSE2 Converts 8 packed signed word integers from xmm1 and from xxm2/m128 into 16 packed signed byte integers in xmm1 using signed saturation. PACKSSDW xmm1,xmm2/m128 66 0F 6B /r SSE2 Converts 4 packed signed doubleword integers from xmm1 and from xmm2/m128 into 8 packed signed word integers in xmm1 using signed saturation. VPACKSSWB xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F 63 /r AVX Converts 8 packed signed word integers from xmm2 and from xmm3/m128 into 16 packed signed byte integers in xmm1 using signed saturation. VPACKSSDW xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F 6B /r AVX Converts 4 packed signed doubleword integers from xmm2 and from xmm3/m128 into 8 packed signed word integers in xmm1 using signed saturation. VPACKSSWB ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F 63 /r AVX2 Converts 16 packed signed word integers from ymm2 and from ymm3/m256 into 32 packed signed byte integers in ymm1 using signed saturation. VPACKSSDW ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F 6B /r AVX2 Converts 8 packed signed doubleword integers from ymm2 and from ymm3/m256 into 16 packed signed word integers in ymm1 using signed saturation. VPACKSSWB xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.WIG 63 /r AVX512VL AVX512BW Converts packed signed word integers from xmm2 and from xmm3/m128 into packed signed byte integers in xmm1 using signed saturation under writemask k1. VPACKSSWB ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F.WIG 63 /r AVX512VL AVX512BW Converts packed signed word integers from ymm2 and from ymm3/m256 into packed signed byte integers in ymm1 using signed saturation under writemask k1. VPACKSSWB zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F.WIG 63 /r AVX512BW Converts packed signed word integers from zmm2 and from zmm3/m512 into packed signed byte integers in zmm1 using signed saturation under writemask k1. VPACKSSDW xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F.W0 6B /r AVX512VL AVX512BW Converts packed signed doubleword integers from xmm2 and from xmm3/m128/m32bcst into packed signed word integers in xmm1 using signed saturation under writemask k1. VPACKSSDW ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F.W0 6B /r AVX512VL AVX512BW Converts packed signed doubleword integers from ymm2 and from ymm3/m256/m32bcst into packed signed word integers in ymm1 using signed saturation under writemask k1. VPACKSSDW zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst EVEX.NDS.512.66.0F.W0 6B /r AVX512BW Converts packed signed doubleword integers from zmm2 and from zmm3/m512/m32bcst into packed signed word integers in zmm1 using signed saturation under writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA PACKUSDW--Pack with Unsigned Saturation. PACKUSDW xmm1,xmm2/m128 66 0F 38 2B /r SSE4_1 Convert 4 packed signed doubleword integers from xmm1 and 4 packed signed doubleword integers from xmm2/m128 into 8 packed unsigned word integers in xmm1 using unsigned saturation. VPACKUSDW xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38 2B /r AVX Convert 4 packed signed doubleword integers from xmm2 and 4 packed signed doubleword integers from xmm3/m128 into 8 packed unsigned word integers in xmm1 using unsigned saturation. VPACKUSDW ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38 2B /r AVX2 Convert 8 packed signed doubleword integers from ymm2 and 8 packed signed doubleword integers from ymm3/m256 into 16 packed unsigned word integers in ymm1 using unsigned saturation. VPACKUSDW xmm1{k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F38.W0 2B /r AVX512VL AVX512BW Convert packed signed doubleword integers from xmm2 and packed signed doubleword integers from xmm3/m128/m32bcst into packed unsigned word integers in xmm1 using unsigned saturation under writemask k1. VPACKUSDW ymm1{k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F38.W0 2B /r AVX512VL AVX512BW Convert packed signed doubleword integers from ymm2 and packed signed doubleword integers from ymm3/m256/m32bcst into packed unsigned word integers in ymm1 using unsigned saturation under writemask k1. VPACKUSDW zmm1{k1}{z},zmm2,zmm3/m512/m32bcst EVEX.NDS.512.66.0F38.W0 2B /r AVX512BW Convert packed signed doubleword integers from zmm2 and packed signed doubleword integers from zmm3/m512/m32bcst into packed unsigned word integers in zmm1 using unsigned saturation under writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA PACKUSWB--Pack with Unsigned Saturation. PACKUSWB xmm1,xmm2/m128 66 0F 67 /r SSE2 Converts 8 signed word integers from xmm1 and 8 signed word integers from xmm2/m128 into 16 unsigned byte integers in xmm1 using unsigned saturation. VPACKUSWB xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F 67 /r AVX Converts 8 signed word integers from xmm2 and 8 signed word integers from xmm3/m128 into 16 unsigned byte integers in xmm1 using unsigned saturation. VPACKUSWB ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F 67 /r AVX2 Converts 16 signed word integers from ymm2 and 16 signed word integers from ymm3/m256 into 32 unsigned byte integers in ymm1 using unsigned saturation. VPACKUSWB xmm1{k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.WIG 67 /r AVX512VL AVX512BW Converts signed word integers from xmm2 and signed word integers from xmm3/m128 into unsigned byte integers in xmm1 using unsigned saturation under writemask k1. VPACKUSWB ymm1{k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F.WIG 67 /r AVX512VL AVX512BW Converts signed word integers from ymm2 and signed word integers from ymm3/m256 into unsigned byte integers in ymm1 using unsigned saturation under writemask k1. VPACKUSWB zmm1{k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F.WIG 67 /r AVX512BW Converts signed word integers from zmm2 and signed word integers from zmm3/m512 into unsigned byte integers in zmm1 using unsigned saturation under writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA PADDB/PADDW/PADDD/PADDQ--Add Packed Integers. PADDB xmm1,xmm2/m128 66 0F FC /r SSE2 Add packed byte integers from xmm2/m128 and xmm1. PADDW xmm1,xmm2/m128 66 0F FD /r SSE2 Add packed word integers from xmm2/m128 and xmm1. PADDD xmm1,xmm2/m128 66 0F FE /r SSE2 Add packed doubleword integers from xmm2/m128 and xmm1. PADDQ xmm1,xmm2/m128 66 0F D4 /r SSE2 Add packed quadword integers from xmm2/m128 and xmm1. VPADDB xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG FC /r AVX Add packed byte integers from xmm2, and xmm3/m128 and store in xmm1. VPADDW xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG FD /r AVX Add packed word integers from xmm2, xmm3/m128 and store in xmm1. VPADDD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG FE /r AVX Add packed doubleword integers from xmm2, xmm3/m128 and store in xmm1. VPADDQ xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG D4 /r AVX Add packed quadword integers from xmm2, xmm3/m128 and store in xmm1. VPADDB ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F.WIG FC /r AVX2 Add packed byte integers from ymm2, and ymm3/m256 and store in ymm1. VPADDW ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F.WIG FD /r AVX2 Add packed word integers from ymm2, ymm3/m256 and store in ymm1. VPADDD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F.WIG FE /r AVX2 Add packed doubleword integers from ymm2, ymm3/m256 and store in ymm1. VPADDQ ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F.WIG D4 /r AVX2 Add packed quadword integers from ymm2, ymm3/m256 and store in ymm1. VPADDB xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.WIG FC /r AVX512VL AVX512BW Add packed byte integers from xmm2, and xmm3/m128 and store in xmm1 using writemask k1. VPADDW xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.WIG FD /r AVX512VL AVX512BW Add packed word integers from xmm2, and xmm3/m128 and store in xmm1 using writemask k1. VPADDD xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F.W0 FE /r AVX512VL AVX512F Add packed doubleword integers from xmm2, and xmm3/m128/m32bcst and store in xmm1 using writemask k1. VPADDQ xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F.W1 D4 /r AVX512VL AVX512F Add packed quadword integers from xmm2, and xmm3/m128/m64bcst and store in xmm1 using writemask k1. VPADDB ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F.WIG FC /r AVX512VL AVX512BW Add packed byte integers from ymm2, and ymm3/m256 and store in ymm1 using writemask k1. VPADDW ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F.WIG FD /r AVX512VL AVX512BW Add packed word integers from ymm2, and ymm3/m256 and store in ymm1 using writemask k1. VPADDD ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F.W0 FE /r AVX512VL AVX512F Add packed doubleword integers from ymm2, ymm3/m256/m32bcst and store in ymm1 using writemask k1. VPADDQ ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F.W1 D4 /r AVX512VL AVX512F Add packed quadword integers from ymm2, ymm3/m256/m64bcst and store in ymm1 using writemask k1. VPADDB zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F.WIG FC /r AVX512BW Add packed byte integers from zmm2, and zmm3/m512 and store in zmm1 using writemask k1. VPADDW zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F.WIG FD /r AVX512BW Add packed word integers from zmm2, and zmm3/m512 and store in zmm1 using writemask k1. VPADDD zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst EVEX.NDS.512.66.0F.W0 FE /r AVX512F Add packed doubleword integers from zmm2, zmm3/m512/m32bcst and store in zmm1 using writemask k1. VPADDQ zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.NDS.512.66.0F.W1 D4 /r AVX512F Add packed quadword integers from zmm2, zmm3/m512/m64bcst and store in zmm1 using writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA PADDSB/PADDSW--Add Packed Signed Integers with Signed Saturation. PADDSB xmm1,xmm2/m128 66 0F EC /r SSE2 Add packed signed byte integers from xmm2/m128 and xmm1 and saturate the results. PADDSW xmm1,xmm2/m128 66 0F ED /r SSE2 Add packed signed word integers from xmm2/m128 and xmm1 and saturate the results. VPADDSB xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F EC AVX Add packed signed byte integers from xmm2, and xmm3/m128 and store the saturated results in xmm1. VPADDSW xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F ED AVX Add packed signed word integers from xmm2, and xmm3/m128 and store the saturated results in xmm1. VPADDSB ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F EC AVX2 Add packed signed byte integers from ymm2, and ymm3/m256 and store the saturated results in ymm1. VPADDSW ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F ED AVX2 Add packed signed word integers from ymm2, and ymm3/m256 and store the saturated results in ymm1. VPADDSB xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.WIG EC /r AVX512VL AVX512BW Add packed signed byte integers from xmm2, and xmm3/m128 and store the saturated results in xmm1 under writemask k1. VPADDSB ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F.WIG EC /r AVX512VL AVX512BW Add packed signed byte integers from ymm2, and ymm3/m256 and store the saturated results in ymm1 under writemask k1. VPADDSB zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F.WIG EC /r AVX512BW Add packed signed byte integers from zmm2, and zmm3/m512 and store the saturated results in zmm1 under writemask k1. VPADDSW xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.WIG ED /r AVX512VL AVX512BW Add packed signed word integers from xmm2, and xmm3/m128 and store the saturated results in xmm1 under writemask k1. VPADDSW ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F.WIG ED /r AVX512VL AVX512BW Add packed signed word integers from ymm2, and ymm3/m256 and store the saturated results in ymm1 under writemask k1. VPADDSW zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F.WIG ED /r AVX512BW Add packed signed word integers from zmm2, and zmm3/m512 and store the saturated results in zmm1 under writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA PADDUSB/PADDUSW--Add Packed Unsigned Integers with Unsigned Saturation. PADDUSB xmm1,xmm2/m128 66 0F DC /r SSE2 Add packed unsigned byte integers from xmm2/m128 and xmm1 and saturate the results. PADDUSW xmm1,xmm2/m128 66 0F DD /r SSE2 Add packed unsigned word integers from xmm2/m128 and xmm1 and saturate the results. VPADDUSB xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F DC AVX Add packed unsigned byte integers from xmm2, and xmm3/m128 and store the saturated results in xmm1. VPADDUSW xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F DD AVX Add packed unsigned word integers from xmm2, and xmm3/m128 and store the saturated results in xmm1. VPADDUSB ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F DC AVX2 Add packed unsigned byte integers from ymm2, and ymm3/m256 and store the saturated results in ymm1. VPADDUSW ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F DD AVX2 Add packed unsigned word integers from ymm2, and ymm3/m256 and store the saturated results in ymm1. VPADDUSB xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.WIG DC /r AVX512VL AVX512BW Add packed unsigned byte integers from xmm2, and xmm3/m128 and store the saturated results in xmm1 under writemask k1. VPADDUSB ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F.WIG DC /r AVX512VL AVX512BW Add packed unsigned byte integers from ymm2, and ymm3/m256 and store the saturated results in ymm1 under writemask k1. VPADDUSB zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F.WIG DC /r AVX512BW Add packed unsigned byte integers from zmm2, and zmm3/m512 and store the saturated results in zmm1 under writemask k1. VPADDUSW xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.WIG DD /r AVX512VL AVX512BW Add packed unsigned word integers from xmm2, and xmm3/m128 and store the saturated results in xmm1 under writemask k1. VPADDUSW ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F.WIG DD /r AVX512VL AVX512BW Add packed unsigned word integers from ymm2, and ymm3/m256 and store the saturated results in ymm1 under writemask k1. VPADDUSW zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F.WIG DD /r AVX512BW Add packed unsigned word integers from zmm2, and zmm3/m512 and store the saturated results in zmm1 under writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA PALIGNR--Byte Align. PALIGNR xmm1,xmm2/m128,imm8 66 0F 3A 0F /r ib SSSE3 Concatenate destination and source operands, extract byte aligned result shifted to the right by constant value in imm8 and result is stored in xmm1. VPALIGNR xmm1,xmm2,xmm3/m128,imm8 VEX.NDS.128.66.0F3A 0F /r ib AVX Concatenate xmm2 and xmm3/m128 into a 32-byte intermediate result, extract byte aligned result shifted to the right by constant value in imm8 and result is stored in xmm1. VPALIGNR ymm1,ymm2,ymm3/m256,imm8 VEX.NDS.256.66.0F3A 0F /r ib AVX2 Concatenate pairs of 16 bytes in ymm2 and ymm3/m256 into 32-byte intermediate result, extract byte-aligned, 16-byte result shifted to the right by constant values in imm8 from each intermediate result, and two 16-byte results are stored in ymm1. VPALIGNR xmm1 {k1}{z},xmm2,xmm3/m128,imm8 EVEX.NDS.128.66.0F3A.WIG 0F /r ib AVX512VL AVX512BW Concatenate xmm2 and xmm3/m128 into a 32-byte intermediate result, extract byte aligned result shifted to the right by constant value in imm8 and result is stored in xmm1. VPALIGNR ymm1 {k1}{z},ymm2,ymm3/m256 imm8 EVEX.NDS.256.66.0F3A.WIG 0F /r ib AVX512VL AVX512BW Concatenate pairs of 16 bytes in ymm2 and ymm3/m256 into 32-byte intermediate result, extract byte-aligned, 16-byte result shifted to the right by constant values in imm8 from each intermediate result, and two 16-byte results are stored in ymm1. VPALIGNR zmm1 {k1}{z},zmm2,zmm3/m512,imm8 EVEX.NDS.512.66.0F3A.WIG 0F /r ib AVX512BW Concatenate pairs of 16 bytes in zmm2 and zmm3/m512 into 32-byte intermediate result, extract byte-aligned, 16-byte result shifted to the right by constant values in imm8 from each intermediate result, and four 16-byte results are stored in zmm1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA PAND--Logical AND. PAND xmm1,xmm2/m128 66 0F DB /r SSE2 Bitwise AND of xmm2/m128 and xmm1. VPAND xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG DB /r AVX Bitwise AND of xmm2, and xmm3/m128 and store result in xmm1. VPAND ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F.WIG DB /r AVX2 Bitwise AND of ymm2, and ymm3/m256 and store result in ymm1. VPANDD xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F.W0 DB /r AVX512VL AVX512F Bitwise AND of packed doubleword integers in xmm2 and xmm3/m128/m32bcst and store result in xmm1 using writemask k1. VPANDD ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F.W0 DB /r AVX512VL AVX512F Bitwise AND of packed doubleword integers in ymm2 and ymm3/m256/m32bcst and store result in ymm1 using writemask k1. VPANDD zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst EVEX.NDS.512.66.0F.W0 DB /r AVX512F Bitwise AND of packed doubleword integers in zmm2 and zmm3/m512/m32bcst and store result in zmm1 using writemask k1. VPANDQ xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F.W1 DB /r AVX512VL AVX512F Bitwise AND of packed quadword integers in xmm2 and xmm3/m128/m64bcst and store result in xmm1 using writemask k1. VPANDQ ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F.W1 DB /r AVX512VL AVX512F Bitwise AND of packed quadword integers in ymm2 and ymm3/m256/m64bcst and store result in ymm1 using writemask k1. VPANDQ zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.NDS.512.66.0F.W1 DB /r AVX512F Bitwise AND of packed quadword integers in zmm2 and zmm3/m512/m64bcst and store result in zmm1 using writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA PANDN--Logical AND NOT. PANDN xmm1,xmm2/m128 66 0F DF /r SSE2 Bitwise AND NOT of xmm2/m128 and xmm1. VPANDN xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG DF /r AVX Bitwise AND NOT of xmm2, and xmm3/m128 and store result in xmm1. VPANDN ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F.WIG DF /r AVX2 Bitwise AND NOT of ymm2, and ymm3/m256 and store result in ymm1. VPANDND xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F.W0 DF /r AVX512VL AVX512F Bitwise AND NOT of packed doubleword integers in xmm2 and xmm3/m128/m32bcst and store result in xmm1 using writemask k1. VPANDND ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F.W0 DF /r AVX512VL AVX512F Bitwise AND NOT of packed doubleword integers in ymm2 and ymm3/m256/m32bcst and store result in ymm1 using writemask k1. VPANDND zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst EVEX.NDS.512.66.0F.W0 DF /r AVX512F Bitwise AND NOT of packed doubleword integers in zmm2 and zmm3/m512/m32bcst and store result in zmm1 using writemask k1. VPANDNQ xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F.W1 DF /r AVX512VL AVX512F Bitwise AND NOT of packed quadword integers in xmm2 and xmm3/m128/m64bcst and store result in xmm1 using writemask k1. VPANDNQ ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F.W1 DF /r AVX512VL AVX512F Bitwise AND NOT of packed quadword integers in ymm2 and ymm3/m256/m64bcst and store result in ymm1 using writemask k1. VPANDNQ zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.NDS.512.66.0F.W1 DF /r AVX512F Bitwise AND NOT of packed quadword integers in zmm2 and zmm3/m512/m64bcst and store result in zmm1 using writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA PAVGB/PAVGW--Average Packed Integers. PAVGB xmm1,xmm2/m128 66 0F E0,/r SSE2 Average packed unsigned byte integers from xmm2/m128 and xmm1 with rounding. PAVGW xmm1,xmm2/m128 66 0F E3,/r SSE2 Average packed unsigned word integers from xmm2/m128 and xmm1 with rounding. VPAVGB xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F E0 AVX Average packed unsigned byte integers from xmm2, and xmm3/m128 with rounding and store to xmm1. VPAVGW xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F E3 AVX Average packed unsigned word integers from xmm2, xmm3/m128 with rounding to xmm1. VPAVGB ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F E0 AVX2 Average packed unsigned byte integers from ymm2, and ymm3/m256 with rounding and store to ymm1. VPAVGW ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F E3 AVX2 Average packed unsigned word integers from ymm2, ymm3/m256 with rounding to ymm1. VPAVGB xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.WIG E0 /r AVX512VL AVX512BW Average packed unsigned byte integers from xmm2, and xmm3/m128 with rounding and store to xmm1 under writemask k1. VPAVGB ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F.WIG E0 /r AVX512VL AVX512BW Average packed unsigned byte integers from ymm2, and ymm3/m256 with rounding and store to ymm1 under writemask k1. VPAVGB zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F.WIG E0 /r AVX512BW Average packed unsigned byte integers from zmm2, and zmm3/m512 with rounding and store to zmm1 under writemask k1. VPAVGW xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.WIG E3 /r AVX512VL AVX512BW Average packed unsigned word integers from xmm2, xmm3/m128 with rounding to xmm1 under writemask k1. VPAVGW ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F.WIG E3 /r AVX512VL AVX512BW Average packed unsigned word integers from ymm2, ymm3/m256 with rounding to ymm1 under writemask k1. VPAVGW zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F.WIG E3 /r AVX512BW Average packed unsigned word integers from zmm2, zmm3/m512 with rounding to zmm1 under writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA VPBROADCASTM--Broadcast Mask to Vector Register. VPBROADCASTMB2Q xmm1,k1 EVEX.128.F3.0F38.W1 2A /r AVX512VL AVX512CD Broadcast low byte value in k1 to two locations in xmm1. VPBROADCASTMB2Q ymm1,k1 EVEX.256.F3.0F38.W1 2A /r AVX512VL AVX512CD Broadcast low byte value in k1 to four locations in ymm1. VPBROADCASTMB2Q zmm1,k1 EVEX.512.F3.0F38.W1 2A /r AVX512CD Broadcast low byte value in k1 to eight locations in zmm1. VPBROADCASTMW2D xmm1,k1 EVEX.128.F3.0F38.W0 3A /r AVX512VL AVX512CD Broadcast low word value in k1 to four locations in xmm1. VPBROADCASTMW2D ymm1,k1 EVEX.256.F3.0F38.W0 3A /r AVX512VL AVX512CD Broadcast low word value in k1 to eight locations in ymm1. VPBROADCASTMW2D zmm1,k1 EVEX.512.F3.0F38.W0 3A /r AVX512CD Broadcast low word value in k1 to sixteen locations in zmm1. ModRM:reg(w) ModRM:r/m(r) NA NA PCMPEQB/PCMPEQW/PCMPEQD/PCMPEQQ--Compare Packed Integers for Equality. PCMPEQB xmm1,xmm2/m128 66 0F 74 /r SSE2 Compare packed bytes in xmm2/m128 and xmm1 for equality. PCMPEQW xmm1,xmm2/m128 66 0F 75 /r SSE2 Compare packed words in xmm2/m128 and xmm1 for equality. PCMPEQD xmm1,xmm2/m128 66 0F 76 /r SSE2 Compare packed doublewords in xmm2/m128 and xmm1 for equality. PCMPEQQ xmm1,xmm2/m128 66 0F 38 29 /r SSE4_1 Compare packed quadwords in xmm2/m128 and xmm1 for equality. VPCMPEQB xmm1,xmm2,xmm3 /m128 VEX.NDS.128.66.0F.WIG 74 /r AVX Compare packed bytes in xmm3/m128 and xmm2 for equality. VPCMPEQW xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG 75 /r AVX Compare packed words in xmm3/m128 and xmm2 for equality. VPCMPEQD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG 76 /r AVX Compare packed doublewords in xmm3/m128 and xmm2 for equality. VPCMPEQQ xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.WIG 29 /r AVX Compare packed quadwords in xmm3/m128 and xmm2 for equality. VPCMPEQB ymm1,ymm2,ymm3 /m256 VEX.NDS.256.66.0F.WIG 74 /r AVX2 Compare packed bytes in ymm3/m256 and ymm2 for equality. VPCMPEQW ymm1,ymm2,ymm3 /m256 VEX.NDS.256.66.0F.WIG 75 /r AVX2 Compare packed words in ymm3/m256 and ymm2 for equality. VPCMPEQD ymm1,ymm2,ymm3 /m256 VEX.NDS.256.66.0F.WIG 76 /r AVX2 Compare packed doublewords in ymm3/m256 and ymm2 for equality. VPCMPEQQ ymm1,ymm2,ymm3 /m256 VEX.NDS.256.66.0F38.WIG 29 /r AVX2 Compare packed quadwords in ymm3/m256 and ymm2 for equality. VPCMPEQD k1 {k2},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F.W0 76 /r AVX512VL AVX512F Compare Equal between int32 vector xmm2 and int32 vector xmm3/m128/m32bcst, and set vector mask k1 to reflect the zero/nonzero status of each element of the result, under writemask. VPCMPEQD k1 {k2},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F.W0 76 /r AVX512VL AVX512F Compare Equal between int32 vector ymm2 and int32 vector ymm3/m256/m32bcst, and set vector mask k1 to reflect the zero/nonzero status of each element of the result, under writemask. VPCMPEQD k1 {k2},zmm2,zmm3/m512/m32bcst EVEX.NDS.512.66.0F.W0 76 /r AVX512F Compare Equal between int32 vectors in zmm2 and zmm3/m512/m32bcst, and set destination k1 according to the comparison results under writemask k2,. VPCMPEQQ k1 {k2},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F38.W1 29 /r AVX512VL AVX512F Compare Equal between int64 vector xmm2 and int64 vector xmm3/m128/m64bcst, and set vector mask k1 to reflect the zero/nonzero status of each element of the result, under writemask. VPCMPEQQ k1 {k2},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F38.W1 29 /r AVX512VL AVX512F Compare Equal between int64 vector ymm2 and int64 vector ymm3/m256/m64bcst, and set vector mask k1 to reflect the zero/nonzero status of each element of the result, under writemask. VPCMPEQQ k1 {k2},zmm2,zmm3/m512/m64bcst EVEX.NDS.512.66.0F38.W1 29 /r AVX512F Compare Equal between int64 vector zmm2 and int64 vector zmm3/m512/m64bcst, and set vector mask k1 to reflect the zero/nonzero status of each element of the result, under writemask. VPCMPEQB k1 {k2},xmm2,xmm3 /m128 EVEX.NDS.128.66.0F.WIG 74 /r AVX512VL AVX512BW Compare packed bytes in xmm3/m128 and xmm2 for equality and set vector mask k1 to reflect the zero/nonzero status of each element of the result, under writemask. VPCMPEQB k1 {k2},ymm2,ymm3 /m256 EVEX.NDS.256.66.0F.WIG 74 /r AVX512VL AVX512BW Compare packed bytes in ymm3/m256 and ymm2 for equality and set vector mask k1 to reflect the zero/nonzero status of each element of the result, under writemask. VPCMPEQB k1 {k2},zmm2,zmm3 /m512 EVEX.NDS.512.66.0F.WIG 74 /r AVX512BW Compare packed bytes in zmm3/m512 and zmm2 for equality and set vector mask k1 to reflect the zero/nonzero status of each element of the result, under writemask. VPCMPEQW k1 {k2},xmm2,xmm3 /m128 EVEX.NDS.128.66.0F.WIG 75 /r AVX512VL AVX512BW Compare packed words in xmm3/m128 and xmm2 for equality and set vector mask k1 to reflect the zero/nonzero status of each element of the result, under writemask. VPCMPEQW k1 {k2},ymm2,ymm3 /m256 EVEX.NDS.256.66.0F.WIG 75 /r AVX512VL AVX512BW Compare packed words in ymm3/m256 and ymm2 for equality and set vector mask k1 to reflect the zero/nonzero status of each element of the result, under writemask. VPCMPEQW k1 {k2},zmm2,zmm3 /m512 EVEX.NDS.512.66.0F.WIG 75 /r AVX512BW Compare packed words in zmm3/m512 and zmm2 for equality and set vector mask k1 to reflect the zero/nonzero status of each element of the result, under writemask. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA PCMPGTB/PCMPGTW/PCMPGTD/PCMPGTQ--Compare Packed Integers for Greater Than. PCMPGTB xmm1,xmm2/m128 66 0F 64 /r SSE2 Compare packed signed byte integers in xmm1 and xmm2/m128 for greater than. PCMPGTW xmm1,xmm2/m128 66 0F 65 /r SSE2 Compare packed signed word integers in xmm1 and xmm2/m128 for greater than. PCMPGTD xmm1,xmm2/m128 66 0F 66 /r SSE2 Compare packed signed doubleword integers in xmm1 and xmm2/m128 for greater than. PCMPGTQ xmm1,xmm2/m128 66 0F 38 37 /r SSE4_2 Compare packed qwords in xmm2/m128 and xmm1 for greater than. VPCMPGTB xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG 64 /r AVX Compare packed signed byte integers in xmm2 and xmm3/m128 for greater than. VPCMPGTW xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG 65 /r AVX Compare packed signed word integers in xmm2 and xmm3/m128 for greater than. VPCMPGTD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG 66 /r AVX Compare packed signed doubleword integers in xmm2 and xmm3/m128 for greater than. VPCMPGTQ xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.WIG 37 /r AVX Compare packed signed qwords in xmm2 and xmm3/m128 for greater than. VPCMPGTB ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F.WIG 64 /r AVX2 Compare packed signed byte integers in ymm2 and ymm3/m256 for greater than. VPCMPGTW ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F.WIG 65 /r AVX2 Compare packed signed word integers in ymm2 and ymm3/m256 for greater than. VPCMPGTD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F.WIG 66 /r AVX2 Compare packed signed doubleword integers in ymm2 and ymm3/m256 for greater than. VPCMPGTQ ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.WIG 37 /r AVX2 Compare packed signed qwords in ymm2 and ymm3/m256 for greater than. VPCMPGTD k1 {k2},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F.W0 66 /r AVX512VL AVX512F Compare Greater between int32 vector xmm2 and int32 vector xmm3/m128/m32bcst, and set vector mask k1 to reflect the zero/nonzero status of each element of the result, under writemask. VPCMPGTD k1 {k2},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F.W0 66 /r AVX512VL AVX512F Compare Greater between int32 vector ymm2 and int32 vector ymm3/m256/m32bcst, and set vector mask k1 to reflect the zero/nonzero status of each element of the result, under writemask. VPCMPGTD k1 {k2},zmm2,zmm3/m512/m32bcst EVEX.NDS.512.66.0F.W0 66 /r AVX512F Compare Greater between int32 elements in zmm2 and zmm3/m512/m32bcst, and set destination k1 according to the comparison results under writemask. k2. VPCMPGTQ k1 {k2},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F38.W1 37 /r AVX512VL AVX512F Compare Greater between int64 vector xmm2 and int64 vector xmm3/m128/m64bcst, and set vector mask k1 to reflect the zero/nonzero status of each element of the result, under writemask. VPCMPGTQ k1 {k2},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F38.W1 37 /r AVX512VL AVX512F Compare Greater between int64 vector ymm2 and int64 vector ymm3/m256/m64bcst, and set vector mask k1 to reflect the zero/nonzero status of each element of the result, under writemask. VPCMPGTQ k1 {k2},zmm2,zmm3/m512/m64bcst EVEX.NDS.512.66.0F38.W1 37 /r AVX512F Compare Greater between int64 vector zmm2 and int64 vector zmm3/m512/m64bcst, and set vector mask k1 to reflect the zero/nonzero status of each element of the result, under writemask. VPCMPGTB k1 {k2},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.WIG 64 /r AVX512VL AVX512BW Compare packed signed byte integers in xmm2 and xmm3/m128 for greater than, and set vector mask k1 to reflect the zero/nonzero status of each element of the result, under writemask. VPCMPGTB k1 {k2},ymm2,ymm3/m256 EVEX.NDS.256.66.0F.WIG 64 /r AVX512VL AVX512BW Compare packed signed byte integers in ymm2 and ymm3/m256 for greater than, and set vector mask k1 to reflect the zero/nonzero status of each element of the result, under writemask. VPCMPGTB k1 {k2},zmm2,zmm3/m512 EVEX.NDS.512.66.0F.WIG 64 /r AVX512BW Compare packed signed byte integers in zmm2 and zmm3/m512 for greater than, and set vector mask k1 to reflect the zero/nonzero status of each element of the result, under writemask. VPCMPGTW k1 {k2},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.WIG 65 /r AVX512VL AVX512BW Compare packed signed word integers in xmm2 and xmm3/m128 for greater than, and set vector mask k1 to reflect the zero/nonzero status of each element of the result, under writemask. VPCMPGTW k1 {k2},ymm2,ymm3/m256 EVEX.NDS.256.66.0F.WIG 65 /r AVX512VL AVX512BW Compare packed signed word integers in ymm2 and ymm3/m256 for greater than, and set vector mask k1 to reflect the zero/nonzero status of each element of the result, under writemask. VPCMPGTW k1 {k2},zmm2,zmm3/m512 EVEX.NDS.512.66.0F.WIG 65 /r AVX512BW Compare packed signed word integers in zmm2 and zmm3/m512 for greater than, and set vector mask k1 to reflect the zero/nonzero status of each element of the result, under writemask. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA VPCMPB/VPCMPUB--Compare Packed Byte Values Into Mask. VPCMPB k1 {k2},xmm2,xmm3/m128,imm8 EVEX.NDS.128.66.0F3A.W0 3F /r ib AVX512VL AVX512BW Compare packed signed byte values in xmm3/m128 and xmm2 using bits 2:0 of imm8 as a comparison predicate with writemask k2 and leave the result in mask register k1. VPCMPB k1 {k2},ymm2,ymm3/m256,imm8 EVEX.NDS.256.66.0F3A.W0 3F /r ib AVX512VL AVX512BW Compare packed signed byte values in ymm3/m256 and ymm2 using bits 2:0 of imm8 as a comparison predicate with writemask k2 and leave the result in mask register k1. VPCMPB k1 {k2},zmm2,zmm3/m512,imm8 EVEX.NDS.512.66.0F3A.W0 3F /r ib AVX512BW Compare packed signed byte values in zmm3/m512 and zmm2 using bits 2:0 of imm8 as a comparison predicate with writemask k2 and leave the result in mask register k1. VPCMPUB k1 {k2},xmm2,xmm3/m128,imm8 EVEX.NDS.128.66.0F3A.W0 3E /r ib AVX512VL AVX512BW Compare packed unsigned byte values in xmm3/m128 and xmm2 using bits 2:0 of imm8 as a comparison predicate with writemask k2 and leave the result in mask register k1. VPCMPUB k1 {k2},ymm2,ymm3/m256,imm8 EVEX.NDS.256.66.0F3A.W0 3E /r ib AVX512VL AVX512BW Compare packed unsigned byte values in ymm3/m256 and ymm2 using bits 2:0 of imm8 as a comparison predicate with writemask k2 and leave the result in mask register k1. VPCMPUB k1 {k2},zmm2,zmm3/m512,imm8 EVEX.NDS.512.66.0F3A.W0 3E /r ib AVX512BW Compare packed unsigned byte values in zmm3/m512 and zmm2 using bits 2:0 of imm8 as a comparison predicate with writemask k2 and leave the result in mask register k1. ModRM:reg(w) vvvv(r) ModRM:r/m(r) NA VPCMPD/VPCMPUD--Compare Packed Integer Values into Mask. VPCMPD k1 {k2},xmm2,xmm3/m128/m32bcst,imm8 EVEX.NDS.128.66.0F3A.W0 1F /r ib AVX512VL AVX512F Compare packed signed doubleword integer values in xmm3/m128/m32bcst and xmm2 using bits 2:0 of imm8 as a comparison predicate with writemask k2 and leave the result in mask register k1. VPCMPD k1 {k2},ymm2,ymm3/m256/m32bcst,imm8 EVEX.NDS.256.66.0F3A.W0 1F /r ib AVX512VL AVX512F Compare packed signed doubleword integer values in ymm3/m256/m32bcst and ymm2 using bits 2:0 of imm8 as a comparison predicate with writemask k2 and leave the result in mask register k1. VPCMPD k1 {k2},zmm2,zmm3/m512/m32bcst,imm8 EVEX.NDS.512.66.0F3A.W0 1F /r ib AVX512F Compare packed signed doubleword integer values in zmm2 and zmm3/m512/m32bcst using bits 2:0 of imm8 as a comparison predicate. The comparison results are written to the destination k1 under writemask k2. VPCMPUD k1 {k2},xmm2,xmm3/m128/m32bcst,imm8 EVEX.NDS.128.66.0F3A.W0 1E /r ib AVX512VL AVX512F Compare packed unsigned doubleword integer values in xmm3/m128/m32bcst and xmm2 using bits 2:0 of imm8 as a comparison predicate with writemask k2 and leave the result in mask register k1. VPCMPUD k1 {k2},ymm2,ymm3/m256/m32bcst,imm8 EVEX.NDS.256.66.0F3A.W0 1E /r ib AVX512VL AVX512F Compare packed unsigned doubleword integer values in ymm3/m256/m32bcst and ymm2 using bits 2:0 of imm8 as a comparison predicate with writemask k2 and leave the result in mask register k1. VPCMPUD k1 {k2},zmm2,zmm3/m512/m32bcst,imm8 EVEX.NDS.512.66.0F3A.W0 1E /r ib AVX512F Compare packed unsigned doubleword integer values in zmm2 and zmm3/m512/m32bcst using bits 2:0 of imm8 as a comparison predicate. The comparison results are written to the destination k1 under writemask k2. ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) Imm8 VPCMPQ/VPCMPUQ--Compare Packed Integer Values into Mask. VPCMPQ k1 {k2},xmm2,xmm3/m128/m64bcst,imm8 EVEX.NDS.128.66.0F3A.W1 1F /r ib AVX512VL AVX512F Compare packed signed quadword integer values in xmm3/m128/m64bcst and xmm2 using bits 2:0 of imm8 as a comparison predicate with writemask k2 and leave the result in mask register k1. VPCMPQ k1 {k2},ymm2,ymm3/m256/m64bcst,imm8 EVEX.NDS.256.66.0F3A.W1 1F /r ib AVX512VL AVX512F Compare packed signed quadword integer values in ymm3/m256/m64bcst and ymm2 using bits 2:0 of imm8 as a comparison predicate with writemask k2 and leave the result in mask register k1. VPCMPQ k1 {k2},zmm2,zmm3/m512/m64bcst,imm8 EVEX.NDS.512.66.0F3A.W1 1F /r ib AVX512F Compare packed signed quadword integer values in zmm3/m512/m64bcst and zmm2 using bits 2:0 of imm8 as a comparison predicate with writemask k2 and leave the result in mask register k1. VPCMPUQ k1 {k2},xmm2,xmm3/m128/m64bcst,imm8 EVEX.NDS.128.66.0F3A.W1 1E /r ib AVX512VL AVX512F Compare packed unsigned quadword integer values in xmm3/m128/m64bcst and xmm2 using bits 2:0 of imm8 as a comparison predicate with writemask k2 and leave the result in mask register k1. VPCMPUQ k1 {k2},ymm2,ymm3/m256/m64bcst,imm8 EVEX.NDS.256.66.0F3A.W1 1E /r ib AVX512VL AVX512F Compare packed unsigned quadword integer values in ymm3/m256/m64bcst and ymm2 using bits 2:0 of imm8 as a comparison predicate with writemask k2 and leave the result in mask register k1. VPCMPUQ k1 {k2},zmm2,zmm3/m512/m64bcst,imm8 EVEX.NDS.512.66.0F3A.W1 1E /r ib AVX512F Compare packed unsigned quadword integer values in zmm3/m512/m64bcst and zmm2 using bits 2:0 of imm8 as a comparison predicate with writemask k2 and leave the result in mask register k1. ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) Imm8 VPCMPW/VPCMPUW--Compare Packed Word Values Into Mask. VPCMPW k1 {k2},xmm2,xmm3/m128,imm8 EVEX.NDS.128.66.0F3A.W1 3F /r ib AVX512VL AVX512BW Compare packed signed word integers in xmm3/m128 and xmm2 using bits 2:0 of imm8 as a comparison predicate with writemask k2 and leave the result in mask register k1. VPCMPW k1 {k2},ymm2,ymm3/m256,imm8 EVEX.NDS.256.66.0F3A.W1 3F /r ib AVX512VL AVX512BW Compare packed signed word integers in ymm3/m256 and ymm2 using bits 2:0 of imm8 as a comparison predicate with writemask k2 and leave the result in mask register k1. VPCMPW k1 {k2},zmm2,zmm3/m512,imm8 EVEX.NDS.512.66.0F3A.W1 3F /r ib AVX512BW Compare packed signed word integers in zmm3/m512 and zmm2 using bits 2:0 of imm8 as a comparison predicate with writemask k2 and leave the result in mask register k1. VPCMPUW k1 {k2},xmm2,xmm3/m128,imm8 EVEX.NDS.128.66.0F3A.W1 3E /r ib AVX512VL AVX512BW Compare packed unsigned word integers in xmm3/m128 and xmm2 using bits 2:0 of imm8 as a comparison predicate with writemask k2 and leave the result in mask register k1. VPCMPUW k1 {k2},ymm2,ymm3/m256,imm8 EVEX.NDS.256.66.0F3A.W1 3E /r ib AVX512VL AVX512BW Compare packed unsigned word integers in ymm3/m256 and ymm2 using bits 2:0 of imm8 as a comparison predicate with writemask k2 and leave the result in mask register k1. VPCMPUW k1 {k2},zmm2,zmm3/m512,imm8 EVEX.NDS.512.66.0F3A.W1 3E /r ib AVX512BW Compare packed unsigned word integers in zmm3/m512 and zmm2 using bits 2:0 of imm8 as a comparison predicate with writemask k2 and leave the result in mask register k1. ModRM:reg(w) vvvv(r) ModRM:r/m(r) NA VPCOMPRESSD--Store Sparse Packed Doubleword Integer Values into Dense Memory/Register. VPCOMPRESSD xmm1/m128 {k1}{z},xmm2 EVEX.128.66.0F38.W0 8B /r AVX512VL AVX512F Compress packed doubleword integer values from xmm2 to xmm1/m128 using controlmask k1. VPCOMPRESSD ymm1/m256 {k1}{z},ymm2 EVEX.256.66.0F38.W0 8B /r AVX512VL AVX512F Compress packed doubleword integer values from ymm2 to ymm1/m256 using controlmask k1. VPCOMPRESSD zmm1/m512 {k1}{z},zmm2 EVEX.512.66.0F38.W0 8B /r AVX512F Compress packed doubleword integer values from zmm2 to zmm1/m512 using controlmask k1. ModRM:r/m(w) ModRM:reg(r) NA NA VPCOMPRESSQ--Store Sparse Packed Quadword Integer Values into Dense Memory/Register. VPCOMPRESSQ xmm1/m128 {k1}{z},xmm2 EVEX.128.66.0F38.W1 8B /r AVX512VL AVX512F Compress packed quadword integer values from xmm2 to xmm1/m128 using controlmask k1. VPCOMPRESSQ ymm1/m256 {k1}{z},ymm2 EVEX.256.66.0F38.W1 8B /r AVX512VL AVX512F Compress packed quadword integer values from ymm2 to ymm1/m256 using controlmask k1. VPCOMPRESSQ zmm1/m512 {k1}{z},zmm2 EVEX.512.66.0F38.W1 8B /r AVX512F Compress packed quadword integer values from zmm2 to zmm1/m512 using controlmask k1. ModRM:r/m(w) ModRM:reg(r) NA NA VPCONFLICTD/Q--Detect Conflicts Within a Vector of Packed Dword/Qword Values into Dense Memory/ Register. VPCONFLICTD xmm1 {k1}{z},xmm2/m128/m32bcst EVEX.128.66.0F38.W0 C4 /r AVX512VL AVX512CD Detect duplicate double-word values in xmm2/m128/m32bcst using writemask k1. VPCONFLICTD ymm1 {k1}{z},ymm2/m256/m32bcst EVEX.256.66.0F38.W0 C4 /r AVX512VL AVX512CD Detect duplicate double-word values in ymm2/m256/m32bcst using writemask k1. VPCONFLICTD zmm1 {k1}{z},zmm2/m512/m32bcst EVEX.512.66.0F38.W0 C4 /r AVX512CD Detect duplicate double-word values in zmm2/m512/m32bcst using writemask k1. VPCONFLICTQ xmm1 {k1}{z},xmm2/m128/m64bcst EVEX.128.66.0F38.W1 C4 /r AVX512VL AVX512CD Detect duplicate quad-word values in xmm2/m128/m64bcst using writemask k1. VPCONFLICTQ ymm1 {k1}{z},ymm2/m256/m64bcst EVEX.256.66.0F38.W1 C4 /r AVX512VL AVX512CD Detect duplicate quad-word values in ymm2/m256/m64bcst using writemask k1. VPCONFLICTQ zmm1 {k1}{z},zmm2/m512/m64bcst EVEX.512.66.0F38.W1 C4 /r AVX512CD Detect duplicate quad-word values in zmm2/m512/m64bcst using writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA VPERMB--Permute Packed Bytes Elements. VPERMB xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.128.NDS.66.0F38.W0 8D /r AVX512VL AVX512VBMI Permute bytes in xmm3/m128 using byte indexes in xmm2 and store the result in xmm1 using writemask k1. VPERMB ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.256.NDS.66.0F38.W0 8D /r AVX512VL AVX512VBMI Permute bytes in ymm3/m256 using byte indexes in ymm2 and store the result in ymm1 using writemask k1. VPERMB zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.512.NDS.66.0F38.W0 8D /r AVX512VBMI Permute bytes in zmm3/m512 using byte indexes in zmm2 and store the result in zmm1 using writemask k1. ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA VPERMD/VPERMW--Permute Packed Doublewords/Words Elements. VPERMD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.W0 36 /r AVX2 Permute doublewords in ymm3/m256 using indices in ymm2 and store the result in ymm1. VPERMD ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F38.W0 36 /r AVX512VL AVX512F Permute doublewords in ymm3/m256/m32bcst using indexes in ymm2 and store the result in ymm1 using writemask k1. VPERMD zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst EVEX.NDS.512.66.0F38.W0 36 /r AVX512F Permute doublewords in zmm3/m512/m32bcst using indices in zmm2 and store the result in zmm1 using writemask k1. VPERMW xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F38.W1 8D /r AVX512VL AVX512BW Permute word integers in xmm3/m128 using indexes in xmm2 and store the result in xmm1 using writemask k1. VPERMW ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F38.W1 8D /r AVX512VL AVX512BW Permute word integers in ymm3/m256 using indexes in ymm2 and store the result in ymm1 using writemask k1. VPERMW zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F38.W1 8D /r AVX512BW Permute word integers in zmm3/m512 using indexes in zmm2 and store the result in zmm1 using writemask k1. ModRM:reg(w) VEX.vvvv ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA ModRM:reg(w) VEX.vvvv ModRM:r/m(r) NA VPERMI2B--Full Permute of Bytes From Two Tables Overwriting the Index. VPERMI2B xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.DDS.128.66.0F38.W0 75 /r AVX512VL AVX512VBMI Permute bytes in xmm3/m128 and xmm2 using byte indexes in xmm1 and store the byte results in xmm1 using writemask k1. VPERMI2B ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.DDS.256.66.0F38.W0 75 /r AVX512VL AVX512VBMI Permute bytes in ymm3/m256 and ymm2 using byte indexes in ymm1 and store the byte results in ymm1 using writemask k1. VPERMI2B zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.DDS.512.66.0F38.W0 75 /r AVX512VBMI Permute bytes in zmm3/m512 and zmm2 using byte indexes in zmm1 and store the byte results in zmm1 using writemask k1. ModRM:reg(r,w) EVEX.vvvv ModRM:r/m(r) NA VPERMI2W/D/Q/PS/PD--Full Permute From Two Tables Overwriting the Index. VPERMI2W xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.DDS.128.66.0F38.W1 75 /r AVX512VL AVX512BW Permute word integers from two tables in xmm3/m128 and xmm2 using indexes in xmm1 and store the result in xmm1 using writemask k1. VPERMI2W ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.DDS.256.66.0F38.W1 75 /r AVX512VL AVX512BW Permute word integers from two tables in ymm3/m256 and ymm2 using indexes in ymm1 and store the result in ymm1 using writemask k1. VPERMI2W zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.DDS.512.66.0F38.W1 75 /r AVX512BW Permute word integers from two tables in zmm3/m512 and zmm2 using indexes in zmm1 and store the result in zmm1 using writemask k1. VPERMI2D xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.DDS.128.66.0F38.W0 76 /r AVX512VL AVX512F Permute double-words from two tables in xmm3/m128/m32bcst and xmm2 using indexes in xmm1 and store the result in xmm1 using writemask k1. VPERMI2D ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.DDS.256.66.0F38.W0 76 /r AVX512VL AVX512F Permute double-words from two tables in ymm3/m256/m32bcst and ymm2 using indexes in ymm1 and store the result in ymm1 using writemask k1. VPERMI2D zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst EVEX.DDS.512.66.0F38.W0 76 /r AVX512F Permute double-words from two tables in zmm3/m512/m32bcst and zmm2 using indices in zmm1 and store the result in zmm1 using writemask k1. VPERMI2Q xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.DDS.128.66.0F38.W1 76 /r AVX512VL AVX512F Permute quad-words from two tables in xmm3/m128/m64bcst and xmm2 using indexes in xmm1 and store the result in xmm1 using writemask k1. VPERMI2Q ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.DDS.256.66.0F38.W1 76 /r AVX512VL AVX512F Permute quad-words from two tables in ymm3/m256/m64bcst and ymm2 using indexes in ymm1 and store the result in ymm1 using writemask k1. VPERMI2Q zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.DDS.512.66.0F38.W1 76 /r AVX512F Permute quad-words from two tables in zmm3/m512/m64bcst and zmm2 using indices in zmm1 and store the result in zmm1 using writemask k1. VPERMI2PS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.DDS.128.66.0F38.W0 77 /r AVX512VL AVX512F Permute single-precision FP values from two tables in xmm3/m128/m32bcst and xmm2 using indexes in xmm1 and store the result in xmm1 using writemask k1. VPERMI2PS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.DDS.256.66.0F38.W0 77 /r AVX512VL AVX512F Permute single-precision FP values from two tables in ymm3/m256/m32bcst and ymm2 using indexes in ymm1 and store the result in ymm1 using writemask k1. VPERMI2PS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst EVEX.DDS.512.66.0F38.W0 77 /r AVX512F Permute single-precision FP values from two tables in zmm3/m512/m32bcst and zmm2 using indices in zmm1 and store the result in zmm1 using writemask k1. VPERMI2PD xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.DDS.128.66.0F38.W1 77 /r AVX512VL AVX512F Permute double-precision FP values from two tables in xmm3/m128/m64bcst and xmm2 using indexes in xmm1 and store the result in xmm1 using writemask k1. VPERMI2PD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.DDS.256.66.0F38.W1 77 /r AVX512VL AVX512F Permute double-precision FP values from two tables in ymm3/m256/m64bcst and ymm2 using indexes in ymm1 and store the result in ymm1 using writemask k1. VPERMI2PD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.DDS.512.66.0F38.W1 77 /r AVX512F Permute double-precision FP values from two tables in zmm3/m512/m64bcst and zmm2 using indices in zmm1 and store the result in zmm1 using writemask k1. ModRM:reg(r,w) EVEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(r,w) EVEX.vvvv(r) ModRM:r/m(r) NA VPERMT2B--Full Permute of Bytes From Two Tables Overwriting a Table. VPERMT2B xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.DDS.128.66.0F38.W0 7D /r AVX512VL AVX512VBMI Permute bytes in xmm3/m128 and xmm1 using byte indexes in xmm2 and store the byte results in xmm1 using writemask k1. VPERMT2B ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F38.W0 7D /r AVX512VL AVX512VBMI Permute bytes in ymm3/m256 and ymm1 using byte indexes in ymm2 and store the byte results in ymm1 using writemask k1. VPERMT2B zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F38.W0 7D /r AVX512VBMI Permute bytes in zmm3/m512 and zmm1 using byte indexes in zmm2 and store the byte results in zmm1 using writemask k1. ModRM:reg(r,w) EVEX.vvvv ModRM:r/m(r) NA VPERMT2W/D/Q/PS/PD--Full Permute from Two Tables Overwriting one Table. VPERMT2W xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.DDS.128.66.0F38.W1 7D /r AVX512VL AVX512BW Permute word integers from two tables in xmm3/m128 and xmm1 using indexes in xmm2 and store the result in xmm1 using writemask k1. VPERMT2W ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.DDS.256.66.0F38.W1 7D /r AVX512VL AVX512BW Permute word integers from two tables in ymm3/m256 and ymm1 using indexes in ymm2 and store the result in ymm1 using writemask k1. VPERMT2W zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.DDS.512.66.0F38.W1 7D /r AVX512BW Permute word integers from two tables in zmm3/m512 and zmm1 using indexes in zmm2 and store the result in zmm1 using writemask k1. VPERMT2D xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.DDS.128.66.0F38.W0 7E /r AVX512VL AVX512F Permute double-words from two tables in xmm3/m128/m32bcst and xmm1 using indexes in xmm2 and store the result in xmm1 using writemask k1. VPERMT2D ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.DDS.256.66.0F38.W0 7E /r AVX512VL AVX512F Permute double-words from two tables in ymm3/m256/m32bcst and ymm1 using indexes in ymm2 and store the result in ymm1 using writemask k1. VPERMT2D zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst EVEX.DDS.512.66.0F38.W0 7E /r AVX512F Permute double-words from two tables in zmm3/m512/m32bcst and zmm1 using indices in zmm2 and store the result in zmm1 using writemask k1. VPERMT2Q xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.DDS.128.66.0F38.W1 7E /r AVX512VL AVX512F Permute quad-words from two tables in xmm3/m128/m64bcst and xmm1 using indexes in xmm2 and store the result in xmm1 using writemask k1. VPERMT2Q ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.DDS.256.66.0F38.W1 7E /r AVX512VL AVX512F Permute quad-words from two tables in ymm3/m256/m64bcst and ymm1 using indexes in ymm2 and store the result in ymm1 using writemask k1. VPERMT2Q zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.DDS.512.66.0F38.W1 7E /r AVX512F Permute quad-words from two tables in zmm3/m512/m64bcst and zmm1 using indices in zmm2 and store the result in zmm1 using writemask k1. VPERMT2PS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.DDS.128.66.0F38.W0 7F /r AVX512VL AVX512F Permute single-precision FP values from two tables in xmm3/m128/m32bcst and xmm1 using indexes in xmm2 and store the result in xmm1 using writemask k1. VPERMT2PS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.DDS.256.66.0F38.W0 7F /r AVX512VL AVX512F Permute single-precision FP values from two tables in ymm3/m256/m32bcst and ymm1 using indexes in ymm2 and store the result in ymm1 using writemask k1. VPERMT2PS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst EVEX.DDS.512.66.0F38.W0 7F /r AVX512F Permute single-precision FP values from two tables in zmm3/m512/m32bcst and zmm1 using indices in zmm2 and store the result in zmm1 using writemask k1. VPERMT2PD xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.DDS.128.66.0F38.W1 7F /r AVX512VL AVX512F Permute double-precision FP values from two tables in xmm3/m128/m64bcst and xmm1 using indexes in xmm2 and store the result in xmm1 using writemask k1. VPERMT2PD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.DDS.256.66.0F38.W1 7F /r AVX512VL AVX512F Permute double-precision FP values from two tables in ymm3/m256/m64bcst and ymm1 using indexes in ymm2 and store the result in ymm1 using writemask k1. VPERMT2PD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.DDS.512.66.0F38.W1 7F /r AVX512F Permute double-precision FP values from two tables in zmm3/m512/m64bcst and zmm1 using indices in zmm2 and store the result in zmm1 using writemask k1. ModRM:reg(r,w) EVEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(r,w) EVEX.vvvv(r) ModRM:r/m(r) NA VPERMILPD--Permute In-Lane of Pairs of Double-Precision Floating-Point Values. VPERMILPD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.W0 0D /r AVX Permute double-precision floating-point values in xmm2 using controls from xmm3/m128 and store result in xmm1. VPERMILPD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.W0 0D /r AVX Permute double-precision floating-point values in ymm2 using controls from ymm3/m256 and store result in ymm1. VPERMILPD xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F38.W1 0D /r AVX512VL AVX512F Permute double-precision floating-point values in xmm2 using control from xmm3/m128/m64bcst and store the result in xmm1 using writemask k1. VPERMILPD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F38.W1 0D /r AVX512VL AVX512F Permute double-precision floating-point values in ymm2 using control from ymm3/m256/m64bcst and store the result in ymm1 using writemask k1. VPERMILPD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.NDS.512.66.0F38.W1 0D /r AVX512F Permute double-precision floating-point values in zmm2 using control from zmm3/m512/m64bcst and store the result in zmm1 using writemask k1. VPERMILPD xmm1,xmm2/m128,imm8 VEX.128.66.0F3A.W0 05 /r ib AVX Permute double-precision floating-point values in xmm2/m128 using controls from imm8. VPERMILPD ymm1,ymm2/m256,imm8 VEX.256.66.0F3A.W0 05 /r ib AVX Permute double-precision floating-point values in ymm2/m256 using controls from imm8. VPERMILPD xmm1 {k1}{z},xmm2/m128/m64bcst,imm8 EVEX.128.66.0F3A.W1 05 /r ib AVX512VL AVX512F Permute double-precision floating-point values in xmm2/m128/m64bcst using controls from imm8 and store the result in xmm1 using writemask k1. VPERMILPD ymm1 {k1}{z},ymm2/m256/m64bcst,imm8 EVEX.256.66.0F3A.W1 05 /r ib AVX512VL AVX512F Permute double-precision floating-point values in ymm2/m256/m64bcst using controls from imm8 and store the result in ymm1 using writemask k1. VPERMILPD zmm1 {k1}{z},zmm2/m512/m64bcst,imm8 EVEX.512.66.0F3A.W1 05 /r ib AVX512F Permute double-precision floating-point values in zmm2/m512/m64bcst using controls from imm8 and store the result in zmm1 using writemask k1. ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) ModRM:r/m(r) NA NA VPERMILPS--Permute In-Lane of Quadruples of Single-Precision Floating-Point Values. VPERMILPS xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.W0 0C /r AVX Permute single-precision floating-point values in xmm2 using controls from xmm3/m128 and store result in xmm1. VPERMILPS xmm1,xmm2/m128,imm8 VEX.128.66.0F3A.W0 04 /r ib AVX Permute single-precision floating-point values in xmm2/m128 using controls from imm8 and store result in xmm1. VPERMILPS ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.W0 0C /r AVX Permute single-precision floating-point values in ymm2 using controls from ymm3/m256 and store result in ymm1. VPERMILPS ymm1,ymm2/m256,imm8 VEX.256.66.0F3A.W0 04 /r ib AVX Permute single-precision floating-point values in ymm2/m256 using controls from imm8 and store result in ymm1. VPERMILPS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F38.W0 0C /r AVX512VL AVX512F Permute single-precision floating-point values xmm2 using control from xmm3/m128/m32bcst and store the result in xmm1 using writemask k1. VPERMILPS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F38.W0 0C /r AVX512VL AVX512F Permute single-precision floating-point values ymm2 using control from ymm3/m256/m32bcst and store the result in ymm1 using writemask k1. VPERMILPS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst EVEX.NDS.512.66.0F38.W0 0C /r AVX512F Permute single-precision floating-point values zmm2 using control from zmm3/m512/m32bcst and store the result in zmm1 using writemask k1. VPERMILPS xmm1 {k1}{z},xmm2/m128/m32bcst,imm8 EVEX.128.66.0F3A.W0 04 /r ib AVX512VL AVX512F Permute single-precision floating-point values xmm2/m128/m32bcst using controls from imm8 and store the result in xmm1 using writemask k1. VPERMILPS ymm1 {k1}{z},ymm2/m256/m32bcst,imm8 EVEX.256.66.0F3A.W0 04 /r ib AVX512VL AVX512F Permute single-precision floating-point values ymm2/m256/m32bcst using controls from imm8 and store the result in ymm1 using writemask k1. VPERMILPS zmm1 {k1}{z},zmm2/m512/m32bcst,imm8 EVEX.512.66.0F3A.W0 04 /r ib AVX512F Permute single-precision floating-point values zmm2/m512/m32bcst using controls from imm8 and store the result in zmm1 using writemask k1. ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) ModRM:r/m(r) NA NA VPERMPD--Permute Double-Precision Floating-Point Elements. VPERMPD ymm1,ymm2/m256,imm8 VEX.256.66.0F3A.W1 01 /r ib AVX2 Permute double-precision floating-point elements in ymm2/m256 using indices in imm8 and store the result in ymm1. VPERMPD ymm1 {k1}{z},ymm2/m256/m64bcst,imm8 EVEX.256.66.0F3A.W1 01 /r ib AVX512VL AVX512F Permute double-precision floating-point elements in ymm2/m256/m64bcst using indexes in imm8 and store the result in ymm1 subject to writemask k1. VPERMPD zmm1 {k1}{z},zmm2/m512/m64bcst,imm8 EVEX.512.66.0F3A.W1 01 /r ib AVX512F Permute double-precision floating-point elements in zmm2/m512/m64bcst using indices in imm8 and store the result in zmm1 subject to writemask k1. VPERMPD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F38.W1 16 /r AVX512VL AVX512F Permute double-precision floating-point elements in ymm3/m256/m64bcst using indexes in ymm2 and store the result in ymm1 subject to writemask k1. VPERMPD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.NDS.512.66.0F38.W1 16 /r AVX512F Permute double-precision floating-point elements in zmm3/m512/m64bcst using indices in zmm2 and store the result in zmm1 subject to writemask k1. ModRM:reg(w) ModRM:r/m(r) Imm8 NA ModRM:reg(w) ModRM:r/m(r) Imm8 NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA VPERMPS--Permute Single-Precision Floating-Point Elements. VPERMPS ymm1,ymm2,ymm3/m256 VEX.256.66.0F38.W0 16 /r AVX2 Permute single-precision floating-point elements in ymm3/m256 using indices in ymm2 and store the result in ymm1. VPERMPS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F38.W0 16 /r AVX512VL AVX512F Permute single-precision floating-point elements in ymm3/m256/m32bcst using indexes in ymm2 and store the result in ymm1 subject to write mask k1. VPERMPS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst EVEX.NDS.512.66.0F38.W0 16 /r AVX512F Permute single-precision floating-point values in zmm3/m512/m32bcst using indices in zmm2 and store the result in zmm1 subject to write mask k1. ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA VPERMQ--Qwords Element Permutation. VPERMQ ymm1,ymm2/m256,imm8 VEX.256.66.0F3A.W1 00 /r ib AVX2 Permute qwords in ymm2/m256 using indices in imm8 and store the result in ymm1. VPERMQ ymm1 {k1}{z},ymm2/m256/m64bcst,imm8 EVEX.256.66.0F3A.W1 00 /r ib AVX512VL AVX512F Permute qwords in ymm2/m256/m64bcst using indexes in imm8 and store the result in ymm1. VPERMQ zmm1 {k1}{z},zmm2/m512/m64bcst,imm8 EVEX.512.66.0F3A.W1 00 /r ib AVX512F Permute qwords in zmm2/m512/m64bcst using indices in imm8 and store the result in zmm1. VPERMQ ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F38.W1 36 /r AVX512VL AVX512F Permute qwords in ymm3/m256/m64bcst using indexes in ymm2 and store the result in ymm1. VPERMQ zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.NDS.512.66.0F38.W1 36 /r AVX512F Permute qwords in zmm3/m512/m64bcst using indices in zmm2 and store the result in zmm1. ModRM:reg(w) ModRM:r/m(r) Imm8 NA ModRM:reg(w) ModRM:r/m(r) Imm8 NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA VPEXPANDD--Load Sparse Packed Doubleword Integer Values from Dense Memory / Register. VPEXPANDD xmm1 {k1}{z},xmm2/m128 EVEX.128.66.0F38.W0 89 /r AVX512VL AVX512F Expand packed double-word integer values from xmm2/m128 to xmm1 using writemask k1. VPEXPANDD ymm1 {k1}{z},ymm2/m256 EVEX.256.66.0F38.W0 89 /r AVX512VL AVX512F Expand packed double-word integer values from ymm2/m256 to ymm1 using writemask k1. VPEXPANDD zmm1 {k1}{z},zmm2/m512 EVEX.512.66.0F38.W0 89 /r AVX512F Expand packed double-word integer values from zmm2/m512 to zmm1 using writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA VPEXPANDQ--Load Sparse Packed Quadword Integer Values from Dense Memory / Register. VPEXPANDQ xmm1 {k1}{z},xmm2/m128 EVEX.128.66.0F38.W1 89 /r AVX512VL AVX512F Expand packed quad-word integer values from xmm2/m128 to xmm1 using writemask k1. VPEXPANDQ ymm1 {k1}{z},ymm2/m256 EVEX.256.66.0F38.W1 89 /r AVX512VL AVX512F Expand packed quad-word integer values from ymm2/m256 to ymm1 using writemask k1. VPEXPANDQ zmm1 {k1}{z},zmm2/m512 EVEX.512.66.0F38.W1 89 /r AVX512F Expand packed quad-word integer values from zmm2/m512 to zmm1 using writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA PEXTRB/PEXTRW/PEXTRD/PEXTRQ--Extract Integer. PEXTRB reg/m8,xmm2,imm8 66 0F 3A 14 /r ib SSE4_1 Extract a byte integer value from xmm2 at the source byte offset specified by imm8 into reg or m8. The upper bits of r64/r32 is filled with zeros. PEXTRW reg,xmm1,imm8 66 0F C5 /r ib SSE2 Extract the word specified by imm8 from xmm1 and move it to reg, bits 15:0. The upper bits of r64/r32 is filled with zeros. PEXTRW reg/m16,xmm2,imm8 66 0F 3A 15 /r ib SSE4_1 Extract a word integer value from xmm2 at the source word offset specified by imm8 into reg or m16. The upper bits of r64/r32 is filled with zeros. PEXTRD r32/m32,xmm2,imm8 66 0F 3A 16 /r ib SSE4_1 Extract a dword integer value from xmm2 at the source dword offset specified by imm8 into r32/m32. PEXTRQ r64/m64,xmm2,imm8 66 REX.W 0F 3A 16 /r ib SSE4_1 Extract a qword integer value from xmm2 at the source dword offset specified by imm8 into r64/m64. VPEXTRB reg/m8,xmm2,imm8 VEX.128.66.0F3A 14 /r ib AVX Extract a byte integer value from xmm2 at the source byte offset specified by imm8 into reg or m8. The upper bits of r64/r32 is filled with zeros. VPEXTRW reg,xmm1,imm8 VEX.128.66.0F C5 /r ib AVX Extract the word specified by imm8 from xmm1 and move it to reg, bits 15:0. Zero-extend the result. The upper bits of r64/r32 is filled with zeros. VPEXTRW reg/m16,xmm2,imm8 VEX.128.66.0F3A 15 /r ib AVX Extract a word integer value from xmm2 at the source word offset specified by imm8 into reg or m16. The upper bits of r64/r32 is filled with zeros. VPEXTRD r32/m32,xmm2,imm8 VEX.128.66.0F3A.W0 16 /r ib AVX Extract a dword integer value from xmm2 at the source dword offset specified by imm8 into r32/m32. VPEXTRQ r64/m64,xmm2,imm8 VEX.128.66.0F3A.W1 16 /r ib AVX Extract a qword integer value from xmm2 at the source dword offset specified by imm8 into r64/m64. VPEXTRB reg/m8,xmm2,imm8 EVEX.128.66.0F3A.WIG 14 /r ib AVX512BW Extract a byte integer value from xmm2 at the source byte offset specified by imm8 into reg or m8. The upper bits of r64/r32 is filled with zeros. VPEXTRW reg,xmm1,imm8 EVEX.128.66.0F.WIG C5 /r ib AVX512BW Extract the word specified by imm8 from xmm1 and move it to reg, bits 15:0. Zero-extend the result. The upper bits of r64/r32 is filled with zeros. VPEXTRW reg/m16,xmm2,imm8 EVEX.128.66.0F3A.WIG 15 /r ib AVX512BW Extract a word integer value from xmm2 at the source word offset specified by imm8 into reg or m16. The upper bits of r64/r32 is filled with zeros. VPEXTRD r32/m32,xmm2,imm8 EVEX.128.66.0F3A.W0 16 /r ib AVX512DQ Extract a dword integer value from xmm2 at the source dword offset specified by imm8 into r32/m32. VPEXTRQ r64/m64,xmm2,imm8 EVEX.128.66.0F3A.W1 16 /r ib AVX512DQ Extract a qword integer value from xmm2 at the source dword offset specified by imm8 into r64/m64. ModRM:r/m(w) ModRM:reg(r) Imm8 NA ModRM:reg(w) ModRM:r/m(r) Imm8 NA ModRM:r/m(w) ModRM:reg(r) Imm8 NA VPLZCNTD/Q--Count the Number of Leading Zero Bits for Packed Dword, Packed Qword Values. VPLZCNTD xmm1 {k1}{z},xmm2/m128/m32bcst EVEX.128.66.0F38.W0 44 /r AVX512VL AVX512CD Count the number of leading zero bits in each dword element of xmm2/m128/m32bcst using writemask k1. VPLZCNTD ymm1 {k1}{z},ymm2/m256/m32bcst EVEX.256.66.0F38.W0 44 /r AVX512VL AVX512CD Count the number of leading zero bits in each dword element of ymm2/m256/m32bcst using writemask k1. VPLZCNTD zmm1 {k1}{z},zmm2/m512/m32bcst EVEX.512.66.0F38.W0 44 /r AVX512CD Count the number of leading zero bits in each dword element of zmm2/m512/m32bcst using writemask k1. VPLZCNTQ xmm1 {k1}{z},xmm2/m128/m64bcst EVEX.128.66.0F38.W1 44 /r AVX512VL AVX512CD Count the number of leading zero bits in each qword element of xmm2/m128/m64bcst using writemask k1. VPLZCNTQ ymm1 {k1}{z},ymm2/m256/m64bcst EVEX.256.66.0F38.W1 44 /r AVX512VL AVX512CD Count the number of leading zero bits in each qword element of ymm2/m256/m64bcst using writemask k1. VPLZCNTQ zmm1 {k1}{z},zmm2/m512/m64bcst EVEX.512.66.0F38.W1 44 /r AVX512CD Count the number of leading zero bits in each qword element of zmm2/m512/m64bcst using writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA PMADDUBSW--Multiply and Add Packed Integers. PMADDUBSW xmm1,xmm2/m128 66 0F 38 04 /r SSSE3 Multiply signed and unsigned bytes, add horizontal pair of signed words, pack saturated signed-words to xmm1. VPMADDUBSW xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38 04 /r AVX Multiply signed and unsigned bytes, add horizontal pair of signed words, pack saturated signed-words to xmm1. VPMADDUBSW ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38 04 /r AVX2 Multiply signed and unsigned bytes, add horizontal pair of signed words, pack saturated signed-words to xmm1. VPMADDUBSW xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F38.WIG 04 /r AVX512VL AVX512BW Multiply signed and unsigned bytes, add horizontal pair of signed words, pack saturated signed-words to xmm1 under writemask k1. VPMADDUBSW ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F38.WIG 04 /r AVX512VL AVX512BW Multiply signed and unsigned bytes, add horizontal pair of signed words, pack saturated signed-words to ymm1 under writemask k1. VPMADDUBSW zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F38.WIG 04 /r AVX512BW Multiply signed and unsigned bytes, add horizontal pair of signed words, pack saturated signed-words to zmm1 under writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA PMADDWD--Multiply and Add Packed Integers. PMADDWD xmm1,xmm2/m128 66 0F F5 /r SSE2 Multiply the packed word integers in xmm1 by the packed word integers in xmm2/m128, add adjacent doubleword results, and store in xmm1. VPMADDWD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F F5 /r AVX Multiply the packed word integers in xmm2 by the packed word integers in xmm3/m128, add adjacent doubleword results, and store in xmm1. VPMADDWD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F F5 /r AVX2 Multiply the packed word integers in ymm2 by the packed word integers in ymm3/m256, add adjacent doubleword results, and store in ymm1. VPMADDWD xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.WIG F5 /r AVX512VL AVX512BW Multiply the packed word integers in xmm2 by the packed word integers in xmm3/m128, add adjacent doubleword results, and store in xmm1 under writemask k1. VPMADDWD ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F.WIG F5 /r AVX512VL AVX512BW Multiply the packed word integers in ymm2 by the packed word integers in ymm3/m256, add adjacent doubleword results, and store in ymm1 under writemask k1. VPMADDWD zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F.WIG F5 /r AVX512BW Multiply the packed word integers in zmm2 by the packed word integers in zmm3/m512, add adjacent doubleword results, and store in zmm1 under writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA PINSRB/PINSRW/PINSRD/PINSRQ--Insert Integer. PINSRB xmm1,r32/m8,imm8 66 0F 3A 20 /r ib SSE4_1 Insert a byte integer value from r32/m8 into xmm1 at the byte offset in imm8. PINSRW xmm1,r32/m16,imm8 66 0F C4 /r ib SSE2 Insert a word integer value from r32/m16 into xmm1 at the word offset in imm8. PINSRD xmm1,r32/m32,imm8 66 0F 3A 22 /r ib SSE4_1 Insert a dword integer value from r32/m32 into xmm1 at the dword offset in imm8. PINSRQ xmm1,r64/m64,imm8 66 REX.W 0F 3A 22 /r ib SSE4_1 Insert a qword integer value from r64/m64 into xmm1 at the qword offset in imm8. VPINSRB xmm1,xmm2,r32/m8,imm8 VEX.NDS.128.66.0F3A 20 /r ib AVX Merge a byte integer value from r32/m8 and rest from xmm2 into xmm1 at the byte offset in imm8. VPINSRW xmm1,xmm2,r32/m16,imm8 VEX.NDS.128.66.0F C4 /r ib AVX Insert a word integer value from r32/m16 and rest from xmm2 into xmm1 at the word offset in imm8. VPINSRD xmm1,xmm2,r32/m32,imm8 VEX.NDS.128.66.0F3A.W0 22 /r ib AVX Insert a dword integer value from r32/m32 and rest from xmm2 into xmm1 at the dword offset in imm8. VPINSRQ xmm1,xmm2,r64/m64,imm8 VEX.NDS.128.66.0F3A.W1 22 /r ib AVX Insert a qword integer value from r64/m64 and rest from xmm2 into xmm1 at the qword offset in imm8. VPINSRB xmm1,xmm2,r32/m8,imm8 EVEX.NDS.128.66.0F3A.WIG 20 /r ib AVX512BW Merge a byte integer value from r32/m8 and rest from xmm2 into xmm1 at the byte offset in imm8. VPINSRW xmm1,xmm2,r32/m16,imm8 EVEX.NDS.128.66.0F.WIG C4 /r ib AVX512BW Insert a word integer value from r32/m16 and rest from xmm2 into xmm1 at the word offset in imm8. VPINSRD xmm1,xmm2,r32/m32,imm8 EVEX.NDS.128.66.0F3A.W0 22 /r ib AVX512DQ Insert a dword integer value from r32/m32 and rest from xmm2 into xmm1 at the dword offset in imm8. VPINSRQ xmm1,xmm2,r64/m64,imm8 EVEX.NDS.128.66.0F3A.W1 22 /r ib AVX512DQ Insert a qword integer value from r64/m64 and rest from xmm2 into xmm1 at the qword offset in imm8. ModRM:reg(r,w) ModRM:r/m(r) Imm8 NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) Imm8 ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) Imm8 VPMADD52LUQ--Packed Multiply of Unsigned 52-bit Integers and Add the Low 52-bit Products to Qword Accumulators. VPMADD52LUQ xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.DDS.128.66.0F38.W1 B4 /r AVX512IFMA AVX512VL Multiply unsigned 52-bit integers in xmm2 and xmm3/m128 and add the low 52 bits of the 104-bit product to the qword unsigned integers in xmm1 using writemask k1. VPMADD52LUQ ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.DDS.256.66.0F38.W1 B4 /r AVX512IFMA AVX512VL Multiply unsigned 52-bit integers in ymm2 and ymm3/m128 and add the low 52 bits of the 104-bit product to the qword unsigned integers in ymm1 using writemask k1. VPMADD52LUQ zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.DDS.512.66.0F38.W1 B4 /r AVX512IFMA Multiply unsigned 52-bit integers in zmm2 and zmm3/m128 and add the low 52 bits of the 104-bit product to the qword unsigned integers in zmm1 using writemask k1. ModRM:reg(r,w) EVEX.vvvv(r) ModRM.r/m(r) NA VPMADD52HUQ--Packed Multiply of Unsigned 52-bit Unsigned Integers and Add High 52-bit Products to 64-bit Accumulators'. VPMADD52HUQ xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.DDS.128.66.0F38.W1 B5 /r AVX512IFMA AVX512VL Multiply unsigned 52-bit integers in xmm2 and xmm3/m128 and add the high 52 bits of the 104bit product to the qword unsigned integers in xmm1 using writemask k1. VPMADD52HUQ ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.DDS.256.66.0F38.W1 B5 /r AVX512IFMA AVX512VL Multiply unsigned 52-bit integers in ymm2 and ymm3/m128 and add the high 52 bits of the 104bit product to the qword unsigned integers in ymm1 using writemask k1. VPMADD52HUQ zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.DDS.512.66.0F38.W1 B5 /r AVX512IFMA Multiply unsigned 52-bit integers in zmm2 and zmm3/m128 and add the high 52 bits of the 104bit product to the qword unsigned integers in zmm1 using writemask k1. ModRM:reg(r,w) EVEX.vvvv(r) ModRM.r/m(r) NA PMAXSB/PMAXSW/PMAXSD/PMAXSQ--Maximum of Packed Signed Integers. PMAXSB xmm1,xmm2/m128 66 0F 38 3C /r SSE4_1 Compare packed signed byte integers in xmm1 and xmm2/m128 and store packed maximum values in xmm1. PMAXSW xmm1,xmm2/m128 66 0F EE /r SSE2 Compare packed signed word integers in xmm2/m128 and xmm1 and stores maximum packed values in xmm1. PMAXSD xmm1,xmm2/m128 66 0F 38 3D /r SSE4_1 Compare packed signed dword integers in xmm1 and xmm2/m128 and store packed maximum values in xmm1. VPMAXSB xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.WIG 3C /r AVX Compare packed signed byte integers in xmm2 and xmm3/m128 and store packed maximum values in xmm1. VPMAXSW xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG EE /r AVX Compare packed signed word integers in xmm3/m128 and xmm2 and store packed maximum values in xmm1. VPMAXSD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.WIG 3D /r AVX Compare packed signed dword integers in xmm2 and xmm3/m128 and store packed maximum values in xmm1. VPMAXSB ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.WIG 3C /r AVX2 Compare packed signed byte integers in ymm2 and ymm3/m256 and store packed maximum values in ymm1. VPMAXSW ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F.WIG EE /r AVX2 Compare packed signed word integers in ymm3/m256 and ymm2 and store packed maximum values in ymm1. VPMAXSD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.WIG 3D /r AVX2 Compare packed signed dword integers in ymm2 and ymm3/m256 and store packed maximum values in ymm1. VPMAXSB xmm1{k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F38.WIG 3C /r AVX512VL AVX512BW Compare packed signed byte integers in xmm2 and xmm3/m128 and store packed maximum values in xmm1 under writemask k1. VPMAXSB ymm1{k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F38.WIG 3C /r AVX512VL AVX512BW Compare packed signed byte integers in ymm2 and ymm3/m256 and store packed maximum values in ymm1 under writemask k1. VPMAXSB zmm1{k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F38.WIG 3C /r AVX512BW Compare packed signed byte integers in zmm2 and zmm3/m512 and store packed maximum values in zmm1 under writemask k1. VPMAXSW xmm1{k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.WIG EE /r AVX512VL AVX512BW Compare packed signed word integers in xmm2 and xmm3/m128 and store packed maximum values in xmm1 under writemask k1. VPMAXSW ymm1{k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F.WIG EE /r AVX512VL AVX512BW Compare packed signed word integers in ymm2 and ymm3/m256 and store packed maximum values in ymm1 under writemask k1. VPMAXSW zmm1{k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F.WIG EE /r AVX512BW Compare packed signed word integers in zmm2 and zmm3/m512 and store packed maximum values in zmm1 under writemask k1. VPMAXSD xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F38.W0 3D /r AVX512VL AVX512F Compare packed signed dword integers in xmm2 and xmm3/m128/m32bcst and store packed maximum values in xmm1 using writemask k1. VPMAXSD ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F38.W0 3D /r AVX512VL AVX512F Compare packed signed dword integers in ymm2 and ymm3/m256/m32bcst and store packed maximum values in ymm1 using writemask k1. VPMAXSD zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst EVEX.NDS.512.66.0F38.W0 3D /r AVX512F Compare packed signed dword integers in zmm2 and zmm3/m512/m32bcst and store packed maximum values in zmm1 using writemask k1. VPMAXSQ xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F38.W1 3D /r AVX512VL AVX512F Compare packed signed qword integers in xmm2 and xmm3/m128/m64bcst and store packed maximum values in xmm1 using writemask k1. VPMAXSQ ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F38.W1 3D /r AVX512VL AVX512F Compare packed signed qword integers in ymm2 and ymm3/m256/m64bcst and store packed maximum values in ymm1 using writemask k1. VPMAXSQ zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.NDS.512.66.0F38.W1 3D /r AVX512F Compare packed signed qword integers in zmm2 and zmm3/m512/m64bcst and store packed maximum values in zmm1 using writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA PMAXUB/PMAXUW--Maximum of Packed Unsigned Integers. PMAXUB xmm1,xmm2/m128 66 0F DE /r SSE2 Compare packed unsigned byte integers in xmm1 and xmm2/m128 and store packed maximum values in xmm1. PMAXUW xmm1,xmm2/m128 66 0F 38 3E/r SSE4_1 Compare packed unsigned word integers in xmm2/m128 and xmm1 and stores maximum packed values in xmm1. VPMAXUB xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F DE /r AVX Compare packed unsigned byte integers in xmm2 and xmm3/m128 and store packed maximum values in xmm1. VPMAXUW xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38 3E/r AVX Compare packed unsigned word integers in xmm3/m128 and xmm2 and store maximum packed values in xmm1. VPMAXUB ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F DE /r AVX2 Compare packed unsigned byte integers in ymm2 and ymm3/m256 and store packed maximum values in ymm1. VPMAXUW ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38 3E/r AVX2 Compare packed unsigned word integers in ymm3/m256 and ymm2 and store maximum packed values in ymm1. VPMAXUB xmm1{k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.WIG DE /r AVX512VL AVX512BW Compare packed unsigned byte integers in xmm2 and xmm3/m128 and store packed maximum values in xmm1 under writemask k1. VPMAXUB ymm1{k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F.WIG DE /r AVX512VL AVX512BW Compare packed unsigned byte integers in ymm2 and ymm3/m256 and store packed maximum values in ymm1 under writemask k1. VPMAXUB zmm1{k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F.WIG DE /r AVX512BW Compare packed unsigned byte integers in zmm2 and zmm3/m512 and store packed maximum values in zmm1 under writemask k1. VPMAXUW xmm1{k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F38.WIG 3E /r AVX512VL AVX512BW Compare packed unsigned word integers in xmm2 and xmm3/m128 and store packed maximum values in xmm1 under writemask k1. VPMAXUW ymm1{k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F38.WIG 3E /r AVX512VL AVX512BW Compare packed unsigned word integers in ymm2 and ymm3/m256 and store packed maximum values in ymm1 under writemask k1. VPMAXUW zmm1{k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F38.WIG 3E /r AVX512BW Compare packed unsigned word integers in zmm2 and zmm3/m512 and store packed maximum values in zmm1 under writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA PMAXUD/PMAXUQ--Maximum of Packed Unsigned Integers. PMAXUD xmm1,xmm2/m128 66 0F 38 3F /r SSE4_1 Compare packed unsigned dword integers in xmm1 and xmm2/m128 and store packed maximum values in xmm1. VPMAXUD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.WIG 3F /r AVX Compare packed unsigned dword integers in xmm2 and xmm3/m128 and store packed maximum values in xmm1. VPMAXUD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.WIG 3F /r AVX2 Compare packed unsigned dword integers in ymm2 and ymm3/m256 and store packed maximum values in ymm1. VPMAXUD xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F38.W0 3F /r AVX512VL AVX512F Compare packed unsigned dword integers in xmm2 and xmm3/m128/m32bcst and store packed maximum values in xmm1 under writemask k1. VPMAXUD ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F38.W0 3F /r AVX512VL AVX512F Compare packed unsigned dword integers in ymm2 and ymm3/m256/m32bcst and store packed maximum values in ymm1 under writemask k1. VPMAXUD zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst EVEX.NDS.512.66.0F38.W0 3F /r AVX512F Compare packed unsigned dword integers in zmm2 and zmm3/m512/m32bcst and store packed maximum values in zmm1 under writemask k1. VPMAXUQ xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F38.W1 3F /r AVX512VL AVX512F Compare packed unsigned qword integers in xmm2 and xmm3/m128/m64bcst and store packed maximum values in xmm1 under writemask k1. VPMAXUQ ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F38.W1 3F /r AVX512VL AVX512F Compare packed unsigned qword integers in ymm2 and ymm3/m256/m64bcst and store packed maximum values in ymm1 under writemask k1. VPMAXUQ zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.NDS.512.66.0F38.W1 3F /r AVX512F Compare packed unsigned qword integers in zmm2 and zmm3/m512/m64bcst and store packed maximum values in zmm1 under writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA PMINSB/PMINSW--Minimum of Packed Signed Integers. PMINSB xmm1,xmm2/m128 66 0F 38 38 /r SSE4_1 Compare packed signed byte integers in xmm1 and xmm2/m128 and store packed minimum values in xmm1. PMINSW xmm1,xmm2/m128 66 0F EA /r SSE2 Compare packed signed word integers in xmm2/m128 and xmm1 and store packed minimum values in xmm1. VPMINSB xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38 38 /r AVX Compare packed signed byte integers in xmm2 and xmm3/m128 and store packed minimum values in xmm1. VPMINSW xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F EA /r AVX Compare packed signed word integers in xmm3/m128 and xmm2 and return packed minimum values in xmm1. VPMINSB ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38 38 /r AVX2 Compare packed signed byte integers in ymm2 and ymm3/m256 and store packed minimum values in ymm1. VPMINSW ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F EA /r AVX2 Compare packed signed word integers in ymm3/m256 and ymm2 and return packed minimum values in ymm1. VPMINSB xmm1{k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F38.WIG 38 /r AVX512VL AVX512BW Compare packed signed byte integers in xmm2 and xmm3/m128 and store packed minimum values in xmm1 under writemask k1. VPMINSB ymm1{k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F38.WIG 38 /r AVX512VL AVX512BW Compare packed signed byte integers in ymm2 and ymm3/m256 and store packed minimum values in ymm1 under writemask k1. VPMINSB zmm1{k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F38.WIG 38 /r AVX512BW Compare packed signed byte integers in zmm2 and zmm3/m512 and store packed minimum values in zmm1 under writemask k1. VPMINSW xmm1{k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.WIG EA /r AVX512VL AVX512BW Compare packed signed word integers in xmm2 and xmm3/m128 and store packed minimum values in xmm1 under writemask k1. VPMINSW ymm1{k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F.WIG EA /r AVX512VL AVX512BW Compare packed signed word integers in ymm2 and ymm3/m256 and store packed minimum values in ymm1 under writemask k1. VPMINSW zmm1{k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F.WIG EA /r AVX512BW Compare packed signed word integers in zmm2 and zmm3/m512 and store packed minimum values in zmm1 under writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA PMINSD/PMINSQ--Minimum of Packed Signed Integers. PMINSD xmm1,xmm2/m128 66 0F 38 39 /r SSE4_1 Compare packed signed dword integers in xmm1 and xmm2/m128 and store packed minimum values in xmm1. VPMINSD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.WIG 39 /r AVX Compare packed signed dword integers in xmm2 and xmm3/m128 and store packed minimum values in xmm1. VPMINSD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.WIG 39 /r AVX2 Compare packed signed dword integers in ymm2 and ymm3/m128 and store packed minimum values in ymm1. VPMINSD xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F38.W0 39 /r AVX512VL AVX512F Compare packed signed dword integers in xmm2 and xmm3/m128 and store packed minimum values in xmm1 under writemask k1. VPMINSD ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F38.W0 39 /r AVX512VL AVX512F Compare packed signed dword integers in ymm2 and ymm3/m256 and store packed minimum values in ymm1 under writemask k1. VPMINSD zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst EVEX.NDS.512.66.0F38.W0 39 /r AVX512F Compare packed signed dword integers in zmm2 and zmm3/m512/m32bcst and store packed minimum values in zmm1 under writemask k1. VPMINSQ xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F38.W1 39 /r AVX512VL AVX512F Compare packed signed qword integers in xmm2 and xmm3/m128 and store packed minimum values in xmm1 under writemask k1. VPMINSQ ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F38.W1 39 /r AVX512VL AVX512F Compare packed signed qword integers in ymm2 and ymm3/m256 and store packed minimum values in ymm1 under writemask k1. VPMINSQ zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.NDS.512.66.0F38.W1 39 /r AVX512F Compare packed signed qword integers in zmm2 and zmm3/m512/m64bcst and store packed minimum values in zmm1 under writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA PMINUB/PMINUW--Minimum of Packed Unsigned Integers. PMINUB xmm1,xmm2/m128 66 0F DA /r SSE2 Compare packed unsigned byte integers in xmm1 and xmm2/m128 and store packed minimum values in xmm1. PMINUW xmm1,xmm2/m128 66 0F 38 3A/r SSE4_1 Compare packed unsigned word integers in xmm2/m128 and xmm1 and store packed minimum values in xmm1. VPMINUB xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F DA /r AVX Compare packed unsigned byte integers in xmm2 and xmm3/m128 and store packed minimum values in xmm1. VPMINUW xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38 3A/r AVX Compare packed unsigned word integers in xmm3/m128 and xmm2 and return packed minimum values in xmm1. VPMINUB ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F DA /r AVX2 Compare packed unsigned byte integers in ymm2 and ymm3/m256 and store packed minimum values in ymm1. VPMINUW ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38 3A/r AVX2 Compare packed unsigned word integers in ymm3/m256 and ymm2 and return packed minimum values in ymm1. VPMINUB xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F DA /r AVX512VL AVX512BW Compare packed unsigned byte integers in xmm2 and xmm3/m128 and store packed minimum values in xmm1 under writemask k1. VPMINUB ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F DA /r AVX512VL AVX512BW Compare packed unsigned byte integers in ymm2 and ymm3/m256 and store packed minimum values in ymm1 under writemask k1. VPMINUB zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F DA /r AVX512BW Compare packed unsigned byte integers in zmm2 and zmm3/m512 and store packed minimum values in zmm1 under writemask k1. VPMINUW xmm1{k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F38 3A/r AVX512VL AVX512BW Compare packed unsigned word integers in xmm3/m128 and xmm2 and return packed minimum values in xmm1 under writemask k1. VPMINUW ymm1{k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F38 3A/r AVX512VL AVX512BW Compare packed unsigned word integers in ymm3/m256 and ymm2 and return packed minimum values in ymm1 under writemask k1. VPMINUW zmm1{k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F38 3A/r AVX512BW Compare packed unsigned word integers in zmm3/m512 and zmm2 and return packed minimum values in zmm1 under writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA PMINUD/PMINUQ--Minimum of Packed Unsigned Integers. PMINUD xmm1,xmm2/m128 66 0F 38 3B /r SSE4_1 Compare packed unsigned dword integers in xmm1 and xmm2/m128 and store packed minimum values in xmm1. VPMINUD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.WIG 3B /r AVX Compare packed unsigned dword integers in xmm2 and xmm3/m128 and store packed minimum values in xmm1. VPMINUD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.WIG 3B /r AVX2 Compare packed unsigned dword integers in ymm2 and ymm3/m256 and store packed minimum values in ymm1. VPMINUD xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F38.W0 3B /r AVX512VL AVX512F Compare packed unsigned dword integers in xmm2 and xmm3/m128/m32bcst and store packed minimum values in xmm1 under writemask k1. VPMINUD ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F38.W0 3B /r AVX512VL AVX512F Compare packed unsigned dword integers in ymm2 and ymm3/m256/m32bcst and store packed minimum values in ymm1 under writemask k1. VPMINUD zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst EVEX.NDS.512.66.0F38.W0 3B /r AVX512F Compare packed unsigned dword integers in zmm2 and zmm3/m512/m32bcst and store packed minimum values in zmm1 under writemask k1. VPMINUQ xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F38.W1 3B /r AVX512VL AVX512F Compare packed unsigned qword integers in xmm2 and xmm3/m128/m64bcst and store packed minimum values in xmm1 under writemask k1. VPMINUQ ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F38.W1 3B /r AVX512VL AVX512F Compare packed unsigned qword integers in ymm2 and ymm3/m256/m64bcst and store packed minimum values in ymm1 under writemask k1. VPMINUQ zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.NDS.512.66.0F38.W1 3B /r AVX512F Compare packed unsigned qword integers in zmm2 and zmm3/m512/m64bcst and store packed minimum values in zmm1 under writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA VPMOVM2B/VPMOVM2W/VPMOVM2D/VPMOVM2Q--Convert a Mask Register to a Vector Register. VPMOVM2B xmm1,k1 EVEX.128.F3.0F38.W0 28 /r AVX512VL AVX512BW Sets each byte in XMM1 to all 1's or all 0's based on the value of the corresponding bit in k1. VPMOVM2B ymm1,k1 EVEX.256.F3.0F38.W0 28 /r AVX512VL AVX512BW Sets each byte in YMM1 to all 1's or all 0's based on the value of the corresponding bit in k1. VPMOVM2B zmm1,k1 EVEX.512.F3.0F38.W0 28 /r AVX512BW Sets each byte in ZMM1 to all 1's or all 0's based on the value of the corresponding bit in k1. VPMOVM2W xmm1,k1 EVEX.128.F3.0F38.W1 28 /r AVX512VL AVX512BW Sets each word in XMM1 to all 1's or all 0's based on the value of the corresponding bit in k1. VPMOVM2W ymm1,k1 EVEX.256.F3.0F38.W1 28 /r AVX512VL AVX512BW Sets each word in YMM1 to all 1's or all 0's based on the value of the corresponding bit in k1. VPMOVM2W zmm1,k1 EVEX.512.F3.0F38.W1 28 /r AVX512BW Sets each word in ZMM1 to all 1's or all 0's based on the value of the corresponding bit in k1. VPMOVM2D xmm1,k1 EVEX.128.F3.0F38.W0 38 /r AVX512VL AVX512DQ Sets each doubleword in XMM1 to all 1's or all 0's based on the value of the corresponding bit in k1. VPMOVM2D ymm1,k1 EVEX.256.F3.0F38.W0 38 /r AVX512VL AVX512DQ Sets each doubleword in YMM1 to all 1's or all 0's based on the value of the corresponding bit in k1. VPMOVM2D zmm1,k1 EVEX.512.F3.0F38.W0 38 /r AVX512DQ Sets each doubleword in ZMM1 to all 1's or all 0's based on the value of the corresponding bit in k1. VPMOVM2Q xmm1,k1 EVEX.128.F3.0F38.W1 38 /r AVX512VL AVX512DQ Sets each quadword in XMM1 to all 1's or all 0's based on the value of the corresponding bit in k1. VPMOVM2Q ymm1,k1 EVEX.256.F3.0F38.W1 38 /r AVX512VL AVX512DQ Sets each quadword in YMM1 to all 1's or all 0's based on the value of the corresponding bit in k1. VPMOVM2Q zmm1,k1 EVEX.512.F3.0F38.W1 38 /r AVX512DQ Sets each quadword in ZMM1 to all 1's or all 0's based on the value of the corresponding bit in k1. ModRM:reg(w) ModRM:r/m(r) NA NA VPMOVB2M/VPMOVW2M/VPMOVD2M/VPMOVQ2M--Convert a Vector Register to a Mask. VPMOVB2M k1,xmm1 EVEX.128.F3.0F38.W0 29 /r AVX512VL AVX512BW Sets each bit in k1 to 1 or 0 based on the value of the most significant bit of the corresponding byte in XMM1. VPMOVB2M k1,ymm1 EVEX.256.F3.0F38.W0 29 /r AVX512VL AVX512BW Sets each bit in k1 to 1 or 0 based on the value of the most significant bit of the corresponding byte in YMM1. VPMOVB2M k1,zmm1 EVEX.512.F3.0F38.W0 29 /r AVX512BW Sets each bit in k1 to 1 or 0 based on the value of the most significant bit of the corresponding byte in ZMM1. VPMOVW2M k1,xmm1 EVEX.128.F3.0F38.W1 29 /r AVX512VL AVX512BW Sets each bit in k1 to 1 or 0 based on the value of the most significant bit of the corresponding word in XMM1. VPMOVW2M k1,ymm1 EVEX.256.F3.0F38.W1 29 /r AVX512VL AVX512BW Sets each bit in k1 to 1 or 0 based on the value of the most significant bit of the corresponding word in YMM1. VPMOVW2M k1,zmm1 EVEX.12.F3.0F38.W1 29 /r AVX512BW Sets each bit in k1 to 1 or 0 based on the value of the most significant bit of the corresponding word in ZMM1. VPMOVD2M k1,xmm1 EVEX.128.F3.0F38.W0 39 /r AVX512VL AVX512DQ Sets each bit in k1 to 1 or 0 based on the value of the most significant bit of the corresponding doubleword in XMM1. VPMOVD2M k1,ymm1 EVEX.256.F3.0F38.W0 39 /r AVX512VL AVX512DQ Sets each bit in k1 to 1 or 0 based on the value of the most significant bit of the corresponding doubleword in YMM1. VPMOVD2M k1,zmm1 EVEX.512.F3.0F38.W0 39 /r AVX512DQ Sets each bit in k1 to 1 or 0 based on the value of the most significant bit of the corresponding doubleword in ZMM1. VPMOVQ2M k1,xmm1 EVEX.128.F3.0F38.W1 39 /r AVX512VL AVX512DQ Sets each bit in k1 to 1 or 0 based on the value of the most significant bit of the corresponding quadword in XMM1. VPMOVQ2M k1,ymm1 EVEX.256.F3.0F38.W1 39 /r AVX512VL AVX512DQ Sets each bit in k1 to 1 or 0 based on the value of the most significant bit of the corresponding quadword in YMM1. VPMOVQ2M k1,zmm1 EVEX.512.F3.0F38.W1 39 /r AVX512DQ Sets each bit in k1 to 1 or 0 based on the value of the most significant bit of the corresponding quadword in ZMM1. ModRM:reg(w) ModRM:r/m(r) NA NA VPMOVQB/VPMOVSQB/VPMOVUSQB--Down Convert QWord to Byte. VPMOVQB xmm1/m16 {k1}{z},xmm2 EVEX.128.F3.0F38.W0 32 /r AVX512VL AVX512F Converts 2 packed quad-word integers from xmm2 into 2 packed byte integers in xmm1/m16 with truncation under writemask k1. VPMOVSQB xmm1/m16 {k1}{z},xmm2 EVEX.128.F3.0F38.W0 22 /r AVX512VL AVX512F Converts 2 packed signed quad-word integers from xmm2 into 2 packed signed byte integers in xmm1/m16 using signed saturation under writemask k1. VPMOVUSQB xmm1/m16 {k1}{z},xmm2 EVEX.128.F3.0F38.W0 12 /r AVX512VL AVX512F Converts 2 packed unsigned quad-word integers from xmm2 into 2 packed unsigned byte integers in xmm1/m16 using unsigned saturation under writemask k1. VPMOVQB xmm1/m32 {k1}{z},ymm2 EVEX.256.F3.0F38.W0 32 /r AVX512VL AVX512F Converts 4 packed quad-word integers from ymm2 into 4 packed byte integers in xmm1/m32 with truncation under writemask k1. VPMOVSQB xmm1/m32 {k1}{z},ymm2 EVEX.256.F3.0F38.W0 22 /r AVX512VL AVX512F Converts 4 packed signed quad-word integers from ymm2 into 4 packed signed byte integers in xmm1/m32 using signed saturation under writemask k1. VPMOVUSQB xmm1/m32 {k1}{z},ymm2 EVEX.256.F3.0F38.W0 12 /r AVX512VL AVX512F Converts 4 packed unsigned quad-word integers from ymm2 into 4 packed unsigned byte integers in xmm1/m32 using unsigned saturation under writemask k1. VPMOVQB xmm1/m64 {k1}{z},zmm2 EVEX.512.F3.0F38.W0 32 /r AVX512F Converts 8 packed quad-word integers from zmm2 into 8 packed byte integers in xmm1/m64 with truncation under writemask k1. VPMOVSQB xmm1/m64 {k1}{z},zmm2 EVEX.512.F3.0F38.W0 22 /r AVX512F Converts 8 packed signed quad-word integers from zmm2 into 8 packed signed byte integers in xmm1/m64 using signed saturation under writemask k1. VPMOVUSQB xmm1/m64 {k1}{z},zmm2 EVEX.512.F3.0F38.W0 12 /r AVX512F Converts 8 packed unsigned quad-word integers from zmm2 into 8 packed unsigned byte integers in xmm1/m64 using unsigned saturation under writemask k1. ModRM:r/m(w) ModRM:reg(r) NA NA VPMOVQW/VPMOVSQW/VPMOVUSQW--Down Convert QWord to Word. VPMOVQW xmm1/m32 {k1}{z},xmm2 EVEX.128.F3.0F38.W0 34 /r AVX512VL AVX512F Converts 2 packed quad-word integers from xmm2 into 2 packed word integers in xmm1/m32 with truncation under writemask k1. VPMOVSQW xmm1/m32 {k1}{z},xmm2 EVEX.128.F3.0F38.W0 24 /r AVX512VL AVX512F Converts 8 packed signed quad-word integers from zmm2 into 8 packed signed word integers in xmm1/m32 using signed saturation under writemask k1. VPMOVUSQW xmm1/m32 {k1}{z},xmm2 EVEX.128.F3.0F38.W0 14 /r AVX512VL AVX512F Converts 2 packed unsigned quad-word integers from xmm2 into 2 packed unsigned word integers in xmm1/m32 using unsigned saturation under writemask k1. VPMOVQW xmm1/m64 {k1}{z},ymm2 EVEX.256.F3.0F38.W0 34 /r AVX512VL AVX512F Converts 4 packed quad-word integers from ymm2 into 4 packed word integers in xmm1/m64 with truncation under writemask k1. VPMOVSQW xmm1/m64 {k1}{z},ymm2 EVEX.256.F3.0F38.W0 24 /r AVX512VL AVX512F Converts 4 packed signed quad-word integers from ymm2 into 4 packed signed word integers in xmm1/m64 using signed saturation under writemask k1. VPMOVUSQW xmm1/m64 {k1}{z},ymm2 EVEX.256.F3.0F38.W0 14 /r AVX512VL AVX512F Converts 4 packed unsigned quad-word integers from ymm2 into 4 packed unsigned word integers in xmm1/m64 using unsigned saturation under writemask k1. VPMOVQW xmm1/m128 {k1}{z},zmm2 EVEX.512.F3.0F38.W0 34 /r AVX512F Converts 8 packed quad-word integers from zmm2 into 8 packed word integers in xmm1/m128 with truncation under writemask k1. VPMOVSQW xmm1/m128 {k1}{z},zmm2 EVEX.512.F3.0F38.W0 24 /r AVX512F Converts 8 packed signed quad-word integers from zmm2 into 8 packed signed word integers in xmm1/m128 using signed saturation under writemask k1. VPMOVUSQW xmm1/m128 {k1}{z},zmm2 EVEX.512.F3.0F38.W0 14 /r AVX512F Converts 8 packed unsigned quad-word integers from zmm2 into 8 packed unsigned word integers in xmm1/m128 using unsigned saturation under writemask k1. ModRM:r/m(w) ModRM:reg(r) NA NA VPMOVQD/VPMOVSQD/VPMOVUSQD--Down Convert QWord to DWord. VPMOVQD xmm1/m128 {k1}{z},xmm2 EVEX.128.F3.0F38.W0 35 /r AVX512VL AVX512F Converts 2 packed quad-word integers from xmm2 into 2 packed double-word integers in xmm1/m128 with truncation subject to writemask k1. VPMOVSQD xmm1/m64 {k1}{z},xmm2 EVEX.128.F3.0F38.W0 25 /r AVX512VL AVX512F Converts 2 packed signed quad-word integers from xmm2 into 2 packed signed double-word integers in xmm1/m64 using signed saturation subject to writemask k1. VPMOVUSQD xmm1/m64 {k1}{z},xmm2 EVEX.128.F3.0F38.W0 15 /r AVX512VL AVX512F Converts 2 packed unsigned quad-word integers from xmm2 into 2 packed unsigned double-word integers in xmm1/m64 using unsigned saturation subject to writemask k1. VPMOVQD xmm1/m128 {k1}{z},ymm2 EVEX.256.F3.0F38.W0 35 /r AVX512VL AVX512F Converts 4 packed quad-word integers from ymm2 into 4 packed double-word integers in xmm1/m128 with truncation subject to writemask k1. VPMOVSQD xmm1/m128 {k1}{z},ymm2 EVEX.256.F3.0F38.W0 25 /r AVX512VL AVX512F Converts 4 packed signed quad-word integers from ymm2 into 4 packed signed double-word integers in xmm1/m128 using signed saturation subject to writemask k1. VPMOVUSQD xmm1/m128 {k1}{z},ymm2 EVEX.256.F3.0F38.W0 15 /r AVX512VL AVX512F Converts 4 packed unsigned quad-word integers from ymm2 into 4 packed unsigned double-word integers in xmm1/m128 using unsigned saturation subject to writemask k1. VPMOVQD ymm1/m256 {k1}{z},zmm2 EVEX.512.F3.0F38.W0 35 /r AVX512F Converts 8 packed quad-word integers from zmm2 into 8 packed double-word integers in ymm1/m256 with truncation subject to writemask k1. VPMOVSQD ymm1/m256 {k1}{z},zmm2 EVEX.512.F3.0F38.W0 25 /r AVX512F Converts 8 packed signed quad-word integers from zmm2 into 8 packed signed double-word integers in ymm1/m256 using signed saturation subject to writemask k1. VPMOVUSQD ymm1/m256 {k1}{z},zmm2 EVEX.512.F3.0F38.W0 15 /r AVX512F Converts 8 packed unsigned quad-word integers from zmm2 into 8 packed unsigned double-word integers in ymm1/m256 using unsigned saturation subject to writemask k1. ModRM:r/m(w) ModRM:reg(r) NA NA VPMOVDB/VPMOVSDB/VPMOVUSDB--Down Convert DWord to Byte. VPMOVDB xmm1/m32 {k1}{z},xmm2 EVEX.128.F3.0F38.W0 31 /r AVX512VL AVX512F Converts 4 packed double-word integers from xmm2 into 4 packed byte integers in xmm1/m32 with truncation under writemask k1. VPMOVSDB xmm1/m32 {k1}{z},xmm2 EVEX.128.F3.0F38.W0 21 /r AVX512VL AVX512F Converts 4 packed signed double-word integers from xmm2 into 4 packed signed byte integers in xmm1/m32 using signed saturation under writemask k1. VPMOVUSDB xmm1/m32 {k1}{z},xmm2 EVEX.128.F3.0F38.W0 11 /r AVX512VL AVX512F Converts 4 packed unsigned double-word integers from xmm2 into 4 packed unsigned byte integers in xmm1/m32 using unsigned saturation under writemask k1. VPMOVDB xmm1/m64 {k1}{z},ymm2 EVEX.256.F3.0F38.W0 31 /r AVX512VL AVX512F Converts 8 packed double-word integers from ymm2 into 8 packed byte integers in xmm1/m64 with truncation under writemask k1. VPMOVSDB xmm1/m64 {k1}{z},ymm2 EVEX.256.F3.0F38.W0 21 /r AVX512VL AVX512F Converts 8 packed signed double-word integers from ymm2 into 8 packed signed byte integers in xmm1/m64 using signed saturation under writemask k1. VPMOVUSDB xmm1/m64 {k1}{z},ymm2 EVEX.256.F3.0F38.W0 11 /r AVX512VL AVX512F Converts 8 packed unsigned double-word integers from ymm2 into 8 packed unsigned byte integers in xmm1/m64 using unsigned saturation under writemask k1. VPMOVDB xmm1/m128 {k1}{z},zmm2 EVEX.512.F3.0F38.W0 31 /r AVX512F Converts 16 packed double-word integers from zmm2 into 16 packed byte integers in xmm1/m128 with truncation under writemask k1. VPMOVSDB xmm1/m128 {k1}{z},zmm2 EVEX.512.F3.0F38.W0 21 /r AVX512F Converts 16 packed signed double-word integers from zmm2 into 16 packed signed byte integers in xmm1/m128 using signed saturation under writemask k1. VPMOVUSDB xmm1/m128 {k1}{z},zmm2 EVEX.512.F3.0F38.W0 11 /r AVX512F Converts 16 packed unsigned double-word integers from zmm2 into 16 packed unsigned byte integers in xmm1/m128 using unsigned saturation under writemask k1. ModRM:r/m(w) ModRM:reg(r) NA NA VPMOVDW/VPMOVSDW/VPMOVUSDW--Down Convert DWord to Word. VPMOVDW xmm1/m64 {k1}{z},xmm2 EVEX.128.F3.0F38.W0 33 /r AVX512VL AVX512F Converts 4 packed double-word integers from xmm2 into 4 packed word integers in xmm1/m64 with truncation under writemask k1. VPMOVSDW xmm1/m64 {k1}{z},xmm2 EVEX.128.F3.0F38.W0 23 /r AVX512VL AVX512F Converts 4 packed signed double-word integers from xmm2 into 4 packed signed word integers in ymm1/m64 using signed saturation under writemask k1. VPMOVUSDW xmm1/m64 {k1}{z},xmm2 EVEX.128.F3.0F38.W0 13 /r AVX512VL AVX512F Converts 4 packed unsigned double-word integers from xmm2 into 4 packed unsigned word integers in xmm1/m64 using unsigned saturation under writemask k1. VPMOVDW xmm1/m128 {k1}{z},ymm2 EVEX.256.F3.0F38.W0 33 /r AVX512VL AVX512F Converts 8 packed double-word integers from ymm2 into 8 packed word integers in xmm1/m128 with truncation under writemask k1. VPMOVSDW xmm1/m128 {k1}{z},ymm2 EVEX.256.F3.0F38.W0 23 /r AVX512VL AVX512F Converts 8 packed signed double-word integers from ymm2 into 8 packed signed word integers in xmm1/m128 using signed saturation under writemask k1. VPMOVUSDW xmm1/m128 {k1}{z},ymm2 EVEX.256.F3.0F38.W0 13 /r AVX512VL AVX512F Converts 8 packed unsigned double-word integers from ymm2 into 8 packed unsigned word integers in xmm1/m128 using unsigned saturation under writemask k1. VPMOVDW ymm1/m256 {k1}{z},zmm2 EVEX.512.F3.0F38.W0 33 /r AVX512F Converts 16 packed double-word integers from zmm2 into 16 packed word integers in ymm1/m256 with truncation under writemask k1. VPMOVSDW ymm1/m256 {k1}{z},zmm2 EVEX.512.F3.0F38.W0 23 /r AVX512F Converts 16 packed signed double-word integers from zmm2 into 16 packed signed word integers in ymm1/m256 using signed saturation under writemask k1. VPMOVUSDW ymm1/m256 {k1}{z},zmm2 EVEX.512.F3.0F38.W0 13 /r AVX512F Converts 16 packed unsigned double-word integers from zmm2 into 16 packed unsigned word integers in ymm1/m256 using unsigned saturation under writemask k1. ModRM:r/m(w) ModRM:reg(r) NA NA VPMOVWB/VPMOVSWB/VPMOVUSWB--Down Convert Word to Byte. VPMOVWB xmm1/m64 {k1}{z},xmm2 EVEX.128.F3.0F38.W0 30 /r AVX512VL AVX512BW Converts 8 packed word integers from xmm2 into 8 packed bytes in xmm1/m64 with truncation under writemask k1. VPMOVSWB xmm1/m64 {k1}{z},xmm2 EVEX.128.F3.0F38.W0 20 /r AVX512VL AVX512BW Converts 8 packed signed word integers from xmm2 into 8 packed signed bytes in xmm1/m64 using signed saturation under writemask k1. VPMOVUSWB xmm1/m64 {k1}{z},xmm2 EVEX.128.F3.0F38.W0 10 /r AVX512VL AVX512BW Converts 8 packed unsigned word integers from xmm2 into 8 packed unsigned bytes in 8mm1/m64 using unsigned saturation under writemask k1. VPMOVWB xmm1/m128 {k1}{z},ymm2 EVEX.256.F3.0F38.W0 30 /r AVX512VL AVX512BW Converts 16 packed word integers from ymm2 into 16 packed bytes in xmm1/m128 with truncation under writemask k1. VPMOVSWB xmm1/m128 {k1}{z},ymm2 EVEX.256.F3.0F38.W0 20 /r AVX512VL AVX512BW Converts 16 packed signed word integers from ymm2 into 16 packed signed bytes in xmm1/m128 using signed saturation under writemask k1. VPMOVUSWB xmm1/m128 {k1}{z},ymm2 EVEX.256.F3.0F38.W0 10 /r AVX512VL AVX512BW Converts 16 packed unsigned word integers from ymm2 into 16 packed unsigned bytes in xmm1/m128 using unsigned saturation under writemask k1. VPMOVWB ymm1/m256 {k1}{z},zmm2 EVEX.512.F3.0F38.W0 30 /r AVX512BW Converts 32 packed word integers from zmm2 into 32 packed bytes in ymm1/m256 with truncation under writemask k1. VPMOVSWB ymm1/m256 {k1}{z},zmm2 EVEX.512.F3.0F38.W0 20 /r AVX512BW Converts 32 packed signed word integers from zmm2 into 32 packed signed bytes in ymm1/m256 using signed saturation under writemask k1. VPMOVUSWB ymm1/m256 {k1}{z},zmm2 EVEX.512.F3.0F38.W0 10 /r AVX512BW Converts 32 packed unsigned word integers from zmm2 into 32 packed unsigned bytes in ymm1/m256 using unsigned saturation under writemask k1. ModRM:r/m(w) ModRM:reg(r) NA NA PMOVSX--Packed Move with Sign Extend. PMOVSXBW xmm1,xmm2/m64 66 0f 38 20 /r SSE4_1 Sign extend 8 packed 8-bit integers in the low 8 bytes of xmm2/m64 to 8 packed 16-bit integers in xmm1. PMOVSXBD xmm1,xmm2/m32 66 0f 38 21 /r SSE4_1 Sign extend 4 packed 8-bit integers in the low 4 bytes of xmm2/m32 to 4 packed 32-bit integers in xmm1. PMOVSXBQ xmm1,xmm2/m16 66 0f 38 22 /r SSE4_1 Sign extend 2 packed 8-bit integers in the low 2 bytes of xmm2/m16 to 2 packed 64-bit integers in xmm1. PMOVSXWD xmm1,xmm2/m64 66 0f 38 23/r SSE4_1 Sign extend 4 packed 16-bit integers in the low 8 bytes of xmm2/m64 to 4 packed 32-bit integers in xmm1. PMOVSXWQ xmm1,xmm2/m3 66 0f 38 24 /r SSE4_1 Sign extend 2 packed 16-bit integers in the low 4 bytes of xmm2/m32 to 2 packed 64-bit integers in xmm1. PMOVSXDQ xmm1,xmm2/m64 66 0f 38 25 /r SSE4_1 Sign extend 2 packed 32-bit integers in the low 8 bytes of xmm2/m64 to 2 packed 64-bit integers in xmm1. VPMOVSXBW xmm1,xmm2/m64 VEX.128.66.0F38.WIG 20 /r AVX Sign extend 8 packed 8-bit integers in the low 8 bytes of xmm2/m64 to 8 packed 16-bit integers in xmm1. VPMOVSXBD xmm1,xmm2/m32 VEX.128.66.0F38.WIG 21 /r AVX Sign extend 4 packed 8-bit integers in the low 4 bytes of xmm2/m32 to 4 packed 32-bit integers in xmm1. VPMOVSXBQ xmm1,xmm2/m16 VEX.128.66.0F38.WIG 22 /r AVX Sign extend 2 packed 8-bit integers in the low 2 bytes of xmm2/m16 to 2 packed 64-bit integers in xmm1. VPMOVSXWD xmm1,xmm2/m64 VEX.128.66.0F38.WIG 23 /r AVX Sign extend 4 packed 16-bit integers in the low 8 bytes of xmm2/m64 to 4 packed 32-bit integers in xmm1. VPMOVSXWQ xmm1,xmm2/m32 VEX.128.66.0F38.WIG 24 /r AVX Sign extend 2 packed 16-bit integers in the low 4 bytes of xmm2/m32 to 2 packed 64-bit integers in xmm1. VPMOVSXDQ xmm1,xmm2/m64 VEX.128.66.0F38.WIG 25 /r AVX Sign extend 2 packed 32-bit integers in the low 8 bytes of xmm2/m64 to 2 packed 64-bit integers in xmm1. VPMOVSXBW ymm1,xmm2/m128 VEX.256.66.0F38.WIG 20 /r AVX2 Sign extend 16 packed 8-bit integers in xmm2/m128 to 16 packed 16-bit integers in ymm1. VPMOVSXBD ymm1,xmm2/m64 VEX.256.66.0F38.WIG 21 /r AVX2 Sign extend 8 packed 8-bit integers in the low 8 bytes of xmm2/m64 to 8 packed 32-bit integers in ymm1. VPMOVSXBQ ymm1,xmm2/m32 VEX.256.66.0F38.WIG 22 /r AVX2 Sign extend 4 packed 8-bit integers in the low 4 bytes of xmm2/m32 to 4 packed 64-bit integers in ymm1. VPMOVSXWD ymm1,xmm2/m128 VEX.256.66.0F38.WIG 23 /r AVX2 Sign extend 8 packed 16-bit integers in the low 16 bytes of xmm2/m128 to 8 packed 32-bit integers in ymm1. VPMOVSXWQ ymm1,xmm2/m64 VEX.256.66.0F38.WIG 24 /r AVX2 Sign extend 4 packed 16-bit integers in the low 8 bytes of xmm2/m64 to 4 packed 64-bit integers in ymm1. VPMOVSXDQ ymm1,xmm2/m128 VEX.256.66.0F38.WIG 25 /r AVX2 Sign extend 4 packed 32-bit integers in the low 16 bytes of xmm2/m128 to 4 packed 64-bit integers in ymm1. VPMOVSXBW xmm1 {k1}{z},xmm2/m64 EVEX.128.66.0F38.WIG 20 /r AVX512VL AVX512BW Sign extend 8 packed 8-bit integers in xmm2/m64 to 8 packed 16-bit integers in zmm1. VPMOVSXBW ymm1 {k1}{z},xmm2/m128 EVEX.256.66.0F38.WIG 20 /r AVX512VL AVX512BW Sign extend 16 packed 8-bit integers in xmm2/m128 to 16 packed 16-bit integers in ymm1. VPMOVSXBW zmm1 {k1}{z},ymm2/m256 EVEX.512.66.0F38.WIG 20 /r AVX512BW Sign extend 32 packed 8-bit integers in ymm2/m256 to 32 packed 16-bit integers in zmm1. VPMOVSXBD xmm1 {k1}{z},xmm2/m32 EVEX.128.66.0F38.WIG 21 /r AVX512VL AVX512F Sign extend 4 packed 8-bit integers in the low 4 bytes of xmm2/m32 to 4 packed 32-bit integers in xmm1 subject to writemask k1. VPMOVSXBD ymm1 {k1}{z},xmm2/m64 EVEX.256.66.0F38.WIG 21 /r AVX512VL AVX512F Sign extend 8 packed 8-bit integers in the low 8 bytes of xmm2/m64 to 8 packed 32-bit integers in ymm1 subject to writemask k1. VPMOVSXBD zmm1 {k1}{z},xmm2/m128 EVEX.512.66.0F38.WIG 21 /r AVX512F Sign extend 16 packed 8-bit integers in the low 16 bytes of xmm2/m128 to 16 packed 32-bit integers in zmm1 subject to writemask k1. VPMOVSXBQ xmm1 {k1}{z},xmm2/m16 EVEX.128.66.0F38.WIG 22 /r AVX512VL AVX512F Sign extend 2 packed 8-bit integers in the low 2 bytes of xmm2/m16 to 2 packed 64-bit integers in xmm1 subject to writemask k1. VPMOVSXBQ ymm1 {k1}{z},xmm2/m32 EVEX.256.66.0F38.WIG 22 /r AVX512VL AVX512F Sign extend 4 packed 8-bit integers in the low 4 bytes of xmm2/m32 to 4 packed 64-bit integers in ymm1 subject to writemask k1. VPMOVSXBQ zmm1 {k1}{z},xmm2/m64 EVEX.512.66.0F38.WIG 22 /r AVX512F Sign extend 8 packed 8-bit integers in the low 8 bytes of xmm2/m64 to 8 packed 64-bit integers in zmm1 subject to writemask k1. VPMOVSXWD xmm1 {k1}{z},xmm2/m64 EVEX.128.66.0F38.WIG 23 /r AVX512VL AVX512F Sign extend 4 packed 16-bit integers in the low 8 bytes of ymm2/mem to 4 packed 32-bit integers in xmm1 subject to writemask k1. VPMOVSXWD ymm1 {k1}{z},xmm2/m128 EVEX.256.66.0F38.WIG 23 /r AVX512VL AVX512F Sign extend 8 packed 16-bit integers in the low 16 bytes of ymm2/m128 to 8 packed 32-bit integers in ymm1 subject to writemask k1. VPMOVSXWD zmm1 {k1}{z},ymm2/m256 EVEX.512.66.0F38.WIG 23 /r AVX512F Sign extend 16 packed 16-bit integers in the low 32 bytes of ymm2/m256 to 16 packed 32-bit integers in zmm1 subject to writemask k1. VPMOVSXWQ xmm1 {k1}{z},xmm2/m32 EVEX.128.66.0F38.WIG 24 /r AVX512VL AVX512F Sign extend 2 packed 16-bit integers in the low 4 bytes of xmm2/m32 to 2 packed 64-bit integers in xmm1 subject to writemask k1. VPMOVSXWQ ymm1 {k1}{z},xmm2/m64 EVEX.256.66.0F38.WIG 24 /r AVX512VL AVX512F Sign extend 4 packed 16-bit integers in the low 8 bytes of xmm2/m64 to 4 packed 64-bit integers in ymm1 subject to writemask k1. VPMOVSXWQ zmm1 {k1}{z},xmm2/m128 EVEX.512.66.0F38.WIG 24 /r AVX512F Sign extend 8 packed 16-bit integers in the low 16 bytes of xmm2/m128 to 8 packed 64-bit integers in zmm1 subject to writemask k1. VPMOVSXDQ xmm1 {k1}{z},xmm2/m64 EVEX.128.66.0F38.W0 25 /r AVX512VL AVX512F Sign extend 2 packed 32-bit integers in the low 8 bytes of xmm2/m64 to 2 packed 64-bit integers in zmm1 using writemask k1. VPMOVSXDQ ymm1 {k1}{z},xmm2/m128 EVEX.256.66.0F38.W0 25 /r AVX512VL AVX512F Sign extend 4 packed 32-bit integers in the low 16 bytes of xmm2/m128 to 4 packed 64-bit integers in zmm1 using writemask k1. VPMOVSXDQ zmm1 {k1}{z},ymm2/m256 EVEX.512.66.0F38.W0 25 /r AVX512F Sign extend 8 packed 32-bit integers in the low 32 bytes of ymm2/m256 to 8 packed 64-bit integers in zmm1 using writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA PMOVZX--Packed Move with Zero Extend. PMOVZXBW xmm1,xmm2/m64 66 0f 38 30 /r SSE4_1 Zero extend 8 packed 8-bit integers in the low 8 bytes of xmm2/m64 to 8 packed 16-bit integers in xmm1. PMOVZXBD xmm1,xmm2/m32 66 0f 38 31 /r SSE4_1 Zero extend 4 packed 8-bit integers in the low 4 bytes of xmm2/m32 to 4 packed 32-bit integers in xmm1. PMOVZXBQ xmm1,xmm2/m16 66 0f 38 32 /r SSE4_1 Zero extend 2 packed 8-bit integers in the low 2 bytes of xmm2/m16 to 2 packed 64-bit integers in xmm1. PMOVZXWD xmm1,xmm2/m64 66 0f 38 33 /r SSE4_1 Zero extend 4 packed 16-bit integers in the low 8 bytes of xmm2/m64 to 4 packed 32-bit integers in xmm1. PMOVZXWQ xmm1,xmm2/m32 66 0f 38 34 /r SSE4_1 Zero extend 2 packed 16-bit integers in the low 4 bytes of xmm2/m32 to 2 packed 64-bit integers in xmm1. PMOVZXDQ xmm1,xmm2/m64 66 0f 38 35 /r SSE4_1 Zero extend 2 packed 32-bit integers in the low 8 bytes of xmm2/m64 to 2 packed 64-bit integers in xmm1. VPMOVZXBW xmm1,xmm2/m64 VEX.128.66.0F38.WIG 30 /r AVX Zero extend 8 packed 8-bit integers in the low 8 bytes of xmm2/m64 to 8 packed 16-bit integers in xmm1. VPMOVZXBD xmm1,xmm2/m32 VEX.128.66.0F38.WIG 31 /r AVX Zero extend 4 packed 8-bit integers in the low 4 bytes of xmm2/m32 to 4 packed 32-bit integers in xmm1. VPMOVZXBQ xmm1,xmm2/m16 VEX.128.66.0F38.WIG 32 /r AVX Zero extend 2 packed 8-bit integers in the low 2 bytes of xmm2/m16 to 2 packed 64-bit integers in xmm1. VPMOVZXWD xmm1,xmm2/m64 VEX.128.66.0F38.WIG 33 /r AVX Zero extend 4 packed 16-bit integers in the low 8 bytes of xmm2/m64 to 4 packed 32-bit integers in xmm1. VPMOVZXWQ xmm1,xmm2/m32 VEX.128.66.0F38.WIG 34 /r AVX Zero extend 2 packed 16-bit integers in the low 4 bytes of xmm2/m32 to 2 packed 64-bit integers in xmm1. VPMOVZXDQ xmm1,xmm2/m64 VEX.128.66.0F 38.WIG 35 /r AVX Zero extend 2 packed 32-bit integers in the low 8 bytes of xmm2/m64 to 2 packed 64-bit integers in xmm1. VPMOVZXBW ymm1,xmm2/m128 VEX.256.66.0F38.WIG 30 /r AVX2 Zero extend 16 packed 8-bit integers in xmm2/m128 to 16 packed 16-bit integers in ymm1. VPMOVZXBD ymm1,xmm2/m64 VEX.256.66.0F38.WIG 31 /r AVX2 Zero extend 8 packed 8-bit integers in the low 8 bytes of xmm2/m64 to 8 packed 32-bit integers in ymm1. VPMOVZXBQ ymm1,xmm2/m32 VEX.256.66.0F38.WIG 32 /r AVX2 Zero extend 4 packed 8-bit integers in the low 4 bytes of xmm2/m32 to 4 packed 64-bit integers in ymm1. VPMOVZXWD ymm1,xmm2/m128 VEX.256.66.0F38.WIG 33 /r AVX2 Zero extend 8 packed 16-bit integers xmm2/m128 to 8 packed 32-bit integers in ymm1. VPMOVZXWQ ymm1,xmm2/m64 VEX.256.66.0F38.WIG 34 /r AVX2 Zero extend 4 packed 16-bit integers in the low 8 bytes of xmm2/m64 to 4 packed 64-bit integers in xmm1. VPMOVZXDQ ymm1,xmm2/m128 VEX.256.66.0F38.WIG 35 /r AVX2 Zero extend 4 packed 32-bit integers in xmm2/m128 to 4 packed 64-bit integers in ymm1. VPMOVZXBW xmm1 {k1}{z},xmm2/m64 EVEX.128.66.0F38 30.WIG /r AVX512VL AVX512BW Zero extend 8 packed 8-bit integers in the low 8 bytes of xmm2/m64 to 8 packed 16-bit integers in xmm1. VPMOVZXBW ymm1 {k1}{z},xmm2/m128 EVEX.256.66.0F38.WIG 30 /r AVX512VL AVX512BW Zero extend 16 packed 8-bit integers in xmm2/m128 to 16 packed 16-bit integers in ymm1. VPMOVZXBW zmm1 {k1}{z},ymm2/m256 EVEX.512.66.0F38.WIG 30 /r AVX512BW Zero extend 32 packed 8-bit integers in ymm2/m256 to 32 packed 16-bit integers in zmm1. VPMOVZXBD xmm1 {k1}{z},xmm2/m32 EVEX.128.66.0F38.WIG 31 /r AVX512VL AVX512F Zero extend 4 packed 8-bit integers in the low 4 bytes of xmm2/m32 to 4 packed 32-bit integers in xmm1 subject to writemask k1. VPMOVZXBD ymm1 {k1}{z},xmm2/m64 EVEX.256.66.0F38.WIG 31 /r AVX512VL AVX512F Zero extend 8 packed 8-bit integers in the low 8 bytes of xmm2/m64 to 8 packed 32-bit integers in ymm1 subject to writemask k1. VPMOVZXBD zmm1 {k1}{z},xmm2/m128 EVEX.512.66.0F38.WIG 31 /r AVX512F Zero extend 16 packed 8-bit integers in xmm2/m128 to 16 packed 32-bit integers in zmm1 subject to writemask k1. VPMOVZXBQ xmm1 {k1}{z},xmm2/m16 EVEX.128.66.0F38.WIG 32 /r AVX512VL AVX512F Zero extend 2 packed 8-bit integers in the low 2 bytes of xmm2/m16 to 2 packed 64-bit integers in xmm1 subject to writemask k1. VPMOVZXBQ ymm1 {k1}{z},xmm2/m32 EVEX.256.66.0F38.WIG 32 /r AVX512VL AVX512F Zero extend 4 packed 8-bit integers in the low 4 bytes of xmm2/m32 to 4 packed 64-bit integers in ymm1 subject to writemask k1. VPMOVZXBQ zmm1 {k1}{z},xmm2/m64 EVEX.512.66.0F38.WIG 32 /r AVX512F Zero extend 8 packed 8-bit integers in the low 8 bytes of xmm2/m64 to 8 packed 64-bit integers in zmm1 subject to writemask k1. VPMOVZXWD xmm1 {k1}{z},xmm2/m64 EVEX.128.66.0F38.WIG 33 /r AVX512VL AVX512F Zero extend 4 packed 16-bit integers in the low 8 bytes of xmm2/m64 to 4 packed 32-bit integers in xmm1 subject to writemask k1. VPMOVZXWD ymm1 {k1}{z},xmm2/m128 EVEX.256.66.0F38.WIG 33 /r AVX512VL AVX512F Zero extend 8 packed 16-bit integers in xmm2/m128 to 8 packed 32-bit integers in zmm1 subject to writemask k1. VPMOVZXWD zmm1 {k1}{z},ymm2/m256 EVEX.512.66.0F38.WIG 33 /r AVX512F Zero extend 16 packed 16-bit integers in ymm2/m256 to 16 packed 32-bit integers in zmm1 subject to writemask k1. VPMOVZXWQ xmm1 {k1}{z},xmm2/m32 EVEX.128.66.0F38.WIG 34 /r AVX512VL AVX512F Zero extend 2 packed 16-bit integers in the low 4 bytes of xmm2/m32 to 2 packed 64-bit integers in xmm1 subject to writemask k1. VPMOVZXWQ ymm1 {k1}{z},xmm2/m64 EVEX.256.66.0F38.WIG 34 /r AVX512VL AVX512F Zero extend 4 packed 16-bit integers in the low 8 bytes of xmm2/m64 to 4 packed 64-bit integers in ymm1 subject to writemask k1. VPMOVZXWQ zmm1 {k1}{z},xmm2/m128 EVEX.512.66.0F38.WIG 34 /r AVX512F Zero extend 8 packed 16-bit integers in xmm2/m128 to 8 packed 64-bit integers in zmm1 subject to writemask k1. VPMOVZXDQ xmm1 {k1}{z},xmm2/m64 EVEX.128.66.0F38.W0 35 /r AVX512VL AVX512F Zero extend 2 packed 32-bit integers in the low 8 bytes of xmm2/m64 to 2 packed 64-bit integers in zmm1 using writemask k1. VPMOVZXDQ ymm1 {k1}{z},xmm2/m128 EVEX.256.66.0F38.W0 35 /r AVX512VL AVX512F Zero extend 4 packed 32-bit integers in xmm2/m128 to 4 packed 64-bit integers in zmm1 using writemask k1. VPMOVZXDQ zmm1 {k1}{z},ymm2/m256 EVEX.512.66.0F38.W0 35 /r AVX512F Zero extend 8 packed 32-bit integers in ymm2/m256 to 8 packed 64-bit integers in zmm1 using writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA PMULDQ--Multiply Packed Doubleword Integers. PMULDQ xmm1,xmm2/m128 66 0F 38 28 /r SSE4_1 Multiply packed signed doubleword integers in xmm1 by packed signed doubleword integers in xmm2/m128, and store the quadword results in xmm1. VPMULDQ xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.WIG 28 /r AVX Multiply packed signed doubleword integers in xmm2 by packed signed doubleword integers in xmm3/m128, and store the quadword results in xmm1. VPMULDQ ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.WIG 28 /r AVX2 Multiply packed signed doubleword integers in ymm2 by packed signed doubleword integers in ymm3/m256, and store the quadword results in ymm1. VPMULDQ xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F38.W1 28 /r AVX512VL AVX512F Multiply packed signed doubleword integers in xmm2 by packed signed doubleword integers in xmm3/m128/m64bcst, and store the quadword results in xmm1 using writemask k1. VPMULDQ ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F38.W1 28 /r AVX512VL AVX512F Multiply packed signed doubleword integers in ymm2 by packed signed doubleword integers in ymm3/m256/m64bcst, and store the quadword results in ymm1 using writemask k1. VPMULDQ zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.NDS.512.66.0F38.W1 28 /r AVX512F Multiply packed signed doubleword integers in zmm2 by packed signed doubleword integers in zmm3/m512/m64bcst, and store the quadword results in zmm1 using writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA PMULHRSW--Multiply Packed Unsigned Integers with Round and Scale. PMULHRSW xmm1,xmm2/m128 66 0F 38 0B /r SSSE3 Multiply 16-bit signed words, scale and round signed doublewords, pack high 16 bits to xmm1. VPMULHRSW xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38 0B /r AVX Multiply 16-bit signed words, scale and round signed doublewords, pack high 16 bits to xmm1. VPMULHRSW ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38 0B /r AVX2 Multiply 16-bit signed words, scale and round signed doublewords, pack high 16 bits to ymm1. VPMULHRSW xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F38.WIG 0B /r AVX512VL AVX512BW Multiply 16-bit signed words, scale and round signed doublewords, pack high 16 bits to xmm1 under writemask k1. VPMULHRSW ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F38.WIG 0B /r AVX512VL AVX512BW Multiply 16-bit signed words, scale and round signed doublewords, pack high 16 bits to ymm1 under writemask k1. VPMULHRSW zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F38.WIG 0B /r AVX512BW Multiply 16-bit signed words, scale and round signed doublewords, pack high 16 bits to zmm1 under writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA PMULHUW--Multiply Packed Unsigned Integers and Store High Result. PMULHUW xmm1,xmm2/m128 66 0F E4 /r SSE2 Multiply the packed unsigned word integers in xmm1 and xmm2/m128, and store the high 16 bits of the results in xmm1. VPMULHUW xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F E4 /r AVX Multiply the packed unsigned word integers in xmm2 and xmm3/m128, and store the high 16 bits of the results in xmm1. VPMULHUW ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F E4 /r AVX2 Multiply the packed unsigned word integers in ymm2 and ymm3/m256, and store the high 16 bits of the results in ymm1. VPMULHUW xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.WIG E4 /r AVX512VL AVX512BW Multiply the packed unsigned word integers in xmm2 and xmm3/m128, and store the high 16 bits of the results in xmm1 under writemask k1. VPMULHUW ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F.WIG E4 /r AVX512VL AVX512BW Multiply the packed unsigned word integers in ymm2 and ymm3/m256, and store the high 16 bits of the results in ymm1 under writemask k1. VPMULHUW zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F.WIG E4 /r AVX512BW Multiply the packed unsigned word integers in zmm2 and zmm3/m512, and store the high 16 bits of the results in zmm1 under writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA PMULHW--Multiply Packed Integers and Store High Result. PMULHW xmm1,xmm2/m128 66 0F E5 /r SSE2 Multiply the packed signed word integers in xmm1 and xmm2/m128, and store the high 16 bits of the results in xmm1. VPMULHW xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F E5 /r AVX Multiply the packed signed word integers in xmm2 and xmm3/m128, and store the high 16 bits of the results in xmm1. VPMULHW ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F E5 /r AVX2 Multiply the packed signed word integers in ymm2 and ymm3/m256, and store the high 16 bits of the results in ymm1. VPMULHW xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.WIG E5 /r AVX512VL AVX512BW Multiply the packed signed word integers in xmm2 and xmm3/m128, and store the high 16 bits of the results in xmm1 under writemask k1. VPMULHW ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F.WIG E5 /r AVX512VL AVX512BW Multiply the packed signed word integers in ymm2 and ymm3/m256, and store the high 16 bits of the results in ymm1 under writemask k1. VPMULHW zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F.WIG E5 /r AVX512BW Multiply the packed signed word integers in zmm2 and zmm3/m512, and store the high 16 bits of the results in zmm1 under writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA PMULLD/PMULLQ--Multiply Packed Integers and Store Low Result. PMULLD xmm1,xmm2/m128 66 0F 38 40 /r SSE4_1 Multiply the packed dword signed integers in xmm1 and xmm2/m128 and store the low 32 bits of each product in xmm1. VPMULLD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.WIG 40 /r AVX Multiply the packed dword signed integers in xmm2 and xmm3/m128 and store the low 32 bits of each product in xmm1. VPMULLD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.WIG 40 /r AVX2 Multiply the packed dword signed integers in ymm2 and ymm3/m256 and store the low 32 bits of each product in ymm1. VPMULLD xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F38.W0 40 /r AVX512VL AVX512F Multiply the packed dword signed integers in xmm2 and xmm3/m128/m32bcst and store the low 32 bits of each product in xmm1 under writemask k1. VPMULLD ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F38.W0 40 /r AVX512VL AVX512F Multiply the packed dword signed integers in ymm2 and ymm3/m256/m32bcst and store the low 32 bits of each product in ymm1 under writemask k1. VPMULLD zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst EVEX.NDS.512.66.0F38.W0 40 /r AVX512F Multiply the packed dword signed integers in zmm2 and zmm3/m512/m32bcst and store the low 32 bits of each product in zmm1 under writemask k1. VPMULLQ xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F38.W1 40 /r AVX512VL AVX512DQ Multiply the packed qword signed integers in xmm2 and xmm3/m128/m64bcst and store the low 64 bits of each product in xmm1 under writemask k1. VPMULLQ ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F38.W1 40 /r AVX512VL AVX512DQ Multiply the packed qword signed integers in ymm2 and ymm3/m256/m64bcst and store the low 64 bits of each product in ymm1 under writemask k1. VPMULLQ zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.NDS.512.66.0F38.W1 40 /r AVX512DQ Multiply the packed qword signed integers in zmm2 and zmm3/m512/m64bcst and store the low 64 bits of each product in zmm1 under writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA PMULLW--Multiply Packed Integers and Store Low Result. PMULLW xmm1,xmm2/m128 66 0F D5 /r SSE2 Multiply the packed signed word integers in xmm1 and xmm2/m128, and store the low 16 bits of the results in xmm1. VPMULLW xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F D5 /r AVX Multiply the packed signed word integers in xmm2 and xmm3/m128, and store the low 16 bits of the results in xmm1. VPMULLW ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F D5 /r AVX2 Multiply the packed signed word integers in ymm2 and ymm3/m256, and store the low 16 bits of the results in ymm1. VPMULLW xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.WIG D5 /r AVX512VL AVX512BW Multiply the packed signed word integers in xmm2 and xmm3/m128, and store the low 16 bits of the results in xmm1 under writemask k1. VPMULLW ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F.WIG D5 /r AVX512VL AVX512BW Multiply the packed signed word integers in ymm2 and ymm3/m256, and store the low 16 bits of the results in ymm1 under writemask k1. VPMULLW zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F.WIG D5 /r AVX512BW Multiply the packed signed word integers in zmm2 and zmm3/m512, and store the low 16 bits of the results in zmm1 under writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA VPMULTISHIFTQB--Select Packed Unaligned Bytes from Quadword Sources. VPMULTISHIFTQB xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F38.W1 83 /r AVX512VBMI AVX512VL Select unaligned bytes from qwords in xmm3/m128/m64bcst using control bytes in xmm2, write byte results to xmm1 under k1. VPMULTISHIFTQB ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F38.W1 83 /r AVX512VBMI AVX512VL Select unaligned bytes from qwords in ymm3/m256/m64bcst using control bytes in ymm2, write byte results to ymm1 under k1. VPMULTISHIFTQB zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.NDS.512.66.0F38.W1 83 /r AVX512VBMI Select unaligned bytes from qwords in zmm3/m512/m64bcst using control bytes in zmm2, write byte results to zmm1 under k1. ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA PMULUDQ--Multiply Packed Unsigned Doubleword Integers. PMULUDQ xmm1,xmm2/m128 66 0F F4 /r SSE4_1 Multiply packed unsigned doubleword integers in xmm1 by packed unsigned doubleword integers in xmm2/m128, and store the quadword results in xmm1. VPMULUDQ xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG F4 /r AVX Multiply packed unsigned doubleword integers in xmm2 by packed unsigned doubleword integers in xmm3/m128, and store the quadword results in xmm1. VPMULUDQ ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F.WIG F4 /r AVX2 Multiply packed unsigned doubleword integers in ymm2 by packed unsigned doubleword integers in ymm3/m256, and store the quadword results in ymm1. VPMULUDQ xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F.W1 F4 /r AVX512VL AVX512F Multiply packed unsigned doubleword integers in xmm2 by packed unsigned doubleword integers in xmm3/m128/m64bcst, and store the quadword results in xmm1 under writemask k1. VPMULUDQ ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F.W1 F4 /r AVX512VL AVX512F Multiply packed unsigned doubleword integers in ymm2 by packed unsigned doubleword integers in ymm3/m256/m64bcst, and store the quadword results in ymm1 under writemask k1. VPMULUDQ zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.NDS.512.66.0F.W1 F4 /r AVX512F Multiply packed unsigned doubleword integers in zmm2 by packed unsigned doubleword integers in zmm3/m512/m64bcst, and store the quadword results in zmm1 under writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA POR--Bitwise Logical Or. POR xmm1,xmm2/m128 66 0F EB /r SSE2 Bitwise OR of xmm2/m128 and xmm1. VPOR xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG EB /r AVX Bitwise OR of xmm2/m128 and xmm3. VPOR ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F.WIG EB /r AVX2 Bitwise OR of ymm2/m256 and ymm3. VPORD xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F.W0 EB /r AVX512VL AVX512F Bitwise OR of packed doubleword integers in xmm2 and xmm3/m128/m32bcst using writemask k1. VPORD ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F.W0 EB /r AVX512VL AVX512F Bitwise OR of packed doubleword integers in ymm2 and ymm3/m256/m32bcst using writemask k1. VPORD zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst EVEX.NDS.512.66.0F.W0 EB /r AVX512F Bitwise OR of packed doubleword integers in zmm2 and zmm3/m512/m32bcst using writemask k1. VPORQ xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F.W1 EB /r AVX512VL AVX512F Bitwise OR of packed quadword integers in xmm2 and xmm3/m128/m64bcst using writemask k1. VPORQ ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F.W1 EB /r AVX512VL AVX512F Bitwise OR of packed quadword integers in ymm2 and ymm3/m256/m64bcst using writemask k1. VPORQ zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.NDS.512.66.0F.W1 EB /r AVX512F Bitwise OR of packed quadword integers in zmm2 and zmm3/m512/m64bcst using writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA PROLD/PROLVD/PROLQ/PROLVQ--Bit Rotate Left. VPROLVD xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F38.W0 15 /r AVX512VL AVX512F Rotate doublewords in xmm2 left by count in the corresponding element of xmm3/m128/m32bcst. Result written to xmm1 under writemask k1. VPROLD xmm1 {k1}{z},xmm2/m128/m32bcst,imm8 EVEX.NDD.128.66.0F.W0 72 /1 ib AVX512VL AVX512F Rotate doublewords in xmm2/m128/m32bcst left by imm8. Result written to xmm1 using writemask k1. VPROLVQ xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F38.W1 15 /r AVX512VL AVX512F Rotate quadwords in xmm2 left by count in the corresponding element of xmm3/m128/m64bcst. Result written to xmm1 under writemask k1. VPROLQ xmm1 {k1}{z},xmm2/m128/m64bcst,imm8 EVEX.NDD.128.66.0F.W1 72 /1 ib AVX512VL AVX512F Rotate quadwords in xmm2/m128/m64bcst left by imm8. Result written to xmm1 using writemask k1. VPROLVD ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F38.W0 15 /r AVX512VL AVX512F Rotate doublewords in ymm2 left by count in the corresponding element of ymm3/m256/m32bcst. Result written to ymm1 under writemask k1. VPROLD ymm1 {k1}{z},ymm2/m256/m32bcst,imm8 EVEX.NDD.256.66.0F.W0 72 /1 ib AVX512VL AVX512F Rotate doublewords in ymm2/m256/m32bcst left by imm8. Result written to ymm1 using writemask k1. VPROLVQ ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F38.W1 15 /r AVX512VL AVX512F Rotate quadwords in ymm2 left by count in the corresponding element of ymm3/m256/m64bcst. Result written to ymm1 under writemask k1. VPROLQ ymm1 {k1}{z},ymm2/m256/m64bcst,imm8 EVEX.NDD.256.66.0F.W1 72 /1 ib AVX512VL AVX512F Rotate quadwords in ymm2/m256/m64bcst left by imm8. Result written to ymm1 using writemask k1. VPROLVD zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst EVEX.NDS.512.66.0F38.W0 15 /r AVX512F Rotate left of doublewords in zmm2 by count in the corresponding element of zmm3/m512/m32bcst. Result written to zmm1 using writemask k1. VPROLD zmm1 {k1}{z},zmm2/m512/m32bcst,imm8 EVEX.NDD.512.66.0F.W0 72 /1 ib AVX512F Rotate left of doublewords in zmm3/m512/m32bcst by imm8. Result written to zmm1 using writemask k1. VPROLVQ zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.NDS.512.66.0F38.W1 15 /r AVX512F Rotate quadwords in zmm2 left by count in the corresponding element of zmm3/m512/m64bcst. Result written to zmm1under writemask k1. VPROLQ zmm1 {k1}{z},zmm2/m512/m64bcst,imm8 EVEX.NDD.512.66.0F.W1 72 /1 ib AVX512F Rotate quadwords in zmm2/m512/m64bcst left by imm8. Result written to zmm1 using writemask k1. VEX.vvvv(w) ModRM:r/m(R) Imm8 NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA PRORD/PRORVD/PRORQ/PRORVQ--Bit Rotate Right. VPRORVD xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F38.W0 14 /r AVX512VL AVX512F Rotate doublewords in xmm2 right by count in the corresponding element of xmm3/m128/m32bcst, store result using writemask k1. VPRORD xmm1 {k1}{z},xmm2/m128/m32bcst,imm8 EVEX.NDD.128.66.0F.W0 72 /0 ib AVX512VL AVX512F Rotate doublewords in xmm2/m128/m32bcst right by imm8, store result using writemask k1. VPRORVQ xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F38.W1 14 /r AVX512VL AVX512F Rotate quadwords in xmm2 right by count in the corresponding element of xmm3/m128/m64bcst, store result using writemask k1. VPRORQ xmm1 {k1}{z},xmm2/m128/m64bcst,imm8 EVEX.NDD.128.66.0F.W1 72 /0 ib AVX512VL AVX512F Rotate quadwords in xmm2/m128/m64bcst right by imm8, store result using writemask k1. VPRORVD ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F38.W0 14 /r AVX512VL AVX512F Rotate doublewords in ymm2 right by count in the corresponding element of ymm3/m256/m32bcst, store using result writemask k1. VPRORD ymm1 {k1}{z},ymm2/m256/m32bcst,imm8 EVEX.NDD.256.66.0F.W0 72 /0 ib AVX512VL AVX512F Rotate doublewords in ymm2/m256/m32bcst right by imm8, store result using writemask k1. VPRORVQ ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F38.W1 14 /r AVX512VL AVX512F Rotate quadwords in ymm2 right by count in the corresponding element of ymm3/m256/m64bcst, store result using writemask k1. VPRORQ ymm1 {k1}{z},ymm2/m256/m64bcst,imm8 EVEX.NDD.256.66.0F.W1 72 /0 ib AVX512VL AVX512F Rotate quadwords in ymm2/m256/m64bcst right by imm8, store result using writemask k1. VPRORVD zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst EVEX.NDS.512.66.0F38.W0 14 /r AVX512F Rotate doublewords in zmm2 right by count in the corresponding element of zmm3/m512/m32bcst, store result using writemask k1. VPRORD zmm1 {k1}{z},zmm2/m512/m32bcst,imm8 EVEX.NDD.512.66.0F.W0 72 /0 ib AVX512F Rotate doublewords in zmm2/m512/m32bcst right by imm8, store result using writemask k1. VPRORVQ zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.NDS.512.66.0F38.W1 14 /r AVX512F Rotate quadwords in zmm2 right by count in the corresponding element of zmm3/m512/m64bcst, store result using writemask k1. VPRORQ zmm1 {k1}{z},zmm2/m512/m64bcst,imm8 EVEX.NDD.512.66.0F.W1 72 /0 ib AVX512F Rotate quadwords in zmm2/m512/m64bcst right by imm8, store result using writemask k1. VEX.vvvv(w) ModRM:r/m(R) Imm8 NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA VPSCATTERDD/VPSCATTERDQ/VPSCATTERQD/VPSCATTERQQ--Scatter Packed Dword, Packed Qword with Signed Dword, Signed Qword Indices. VPSCATTERDD vm32x {k1},xmm1 EVEX.128.66.0F38.W0 A0 /vsib AVX512VL AVX512F Using signed dword indices, scatter dword values to memory using writemask k1. VPSCATTERDD vm32y {k1},ymm1 EVEX.256.66.0F38.W0 A0 /vsib AVX512VL AVX512F Using signed dword indices, scatter dword values to memory using writemask k1. VPSCATTERDD vm32z {k1},zmm1 EVEX.512.66.0F38.W0 A0 /vsib AVX512F Using signed dword indices, scatter dword values to memory using writemask k1. VPSCATTERDQ vm32x {k1},xmm1 EVEX.128.66.0F38.W1 A0 /vsib AVX512VL AVX512F Using signed dword indices, scatter qword values to memory using writemask k1. VPSCATTERDQ vm32x {k1},ymm1 EVEX.256.66.0F38.W1 A0 /vsib AVX512VL AVX512F Using signed dword indices, scatter qword values to memory using writemask k1. VPSCATTERDQ vm32y {k1},zmm1 EVEX.512.66.0F38.W1 A0 /vsib AVX512F Using signed dword indices, scatter qword values to memory using writemask k1. VPSCATTERQD vm64x {k1},xmm1 EVEX.128.66.0F38.W0 A1 /vsib AVX512VL AVX512F Using signed qword indices, scatter dword values to memory using writemask k1. VPSCATTERQD vm64y {k1},xmm1 EVEX.256.66.0F38.W0 A1 /vsib AVX512VL AVX512F Using signed qword indices, scatter dword values to memory using writemask k1. VPSCATTERQD vm64z {k1},ymm1 EVEX.512.66.0F38.W0 A1 /vsib AVX512F Using signed qword indices, scatter dword values to memory using writemask k1. VPSCATTERQQ vm64x {k1},xmm1 EVEX.128.66.0F38.W1 A1 /vsib AVX512VL AVX512F Using signed qword indices, scatter qword values to memory using writemask k1. VPSCATTERQQ vm64y {k1},ymm1 EVEX.256.66.0F38.W1 A1 /vsib AVX512VL AVX512F Using signed qword indices, scatter qword values to memory using writemask k1. VPSCATTERQQ vm64z {k1},zmm1 EVEX.512.66.0F38.W1 A1 /vsib AVX512F Using signed qword indices, scatter qword values to memory using writemask k1. BaseReg(R): VSIB:base,VectorReg(R): VSIB:index ModRM:reg(r) NA NA PSHUFB--Packed Shuffle Bytes. PSHUFB xmm1,xmm2/m128 66 0F 38 00 /r SSSE3 Shuffle bytes in xmm1 according to contents of xmm2/m128. VPSHUFB xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38 00 /r AVX Shuffle bytes in xmm2 according to contents of xmm3/m128. VPSHUFB ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38 00 /r AVX2 Shuffle bytes in ymm2 according to contents of ymm3/m256. VPSHUFB xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F38.WIG 00 /r AVX512VL AVX512BW Shuffle bytes in xmm2 according to contents of xmm3/m128 under write mask k1. VPSHUFB ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F38.WIG 00 /r AVX512VL AVX512BW Shuffle bytes in ymm2 according to contents of ymm3/m256 under write mask k1. VPSHUFB zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F38.WIG 00 /r AVX512BW Shuffle bytes in zmm2 according to contents of zmm3/m512 under write mask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA PSHUFHW--Shuffle Packed High Words. PSHUFHW xmm1,xmm2/m128,imm8 F3 0F 70 /r ib SSE2 Shuffle the high words in xmm2/m128 based on the encoding in imm8 and store the result in xmm1. VPSHUFHW xmm1,xmm2/m128,imm8 VEX.128.F3.0F 70 /r ib AVX Shuffle the high words in xmm2/m128 based on the encoding in imm8 and store the result in xmm1. VPSHUFHW ymm1,ymm2/m256,imm8 VEX.256.F3.0F 70 /r ib AVX2 Shuffle the high words in ymm2/m256 based on the encoding in imm8 and store the result in ymm1. VPSHUFHW xmm1 {k1}{z},xmm2/m128,imm8 EVEX.128.F3.0F.WIG 70 /r ib AVX512VL AVX512BW Shuffle the high words in xmm2/m128 based on the encoding in imm8 and store the result in xmm1 under write mask k1. VPSHUFHW ymm1 {k1}{z},ymm2/m256,imm8 EVEX.256.F3.0F.WIG 70 /r ib AVX512VL AVX512BW Shuffle the high words in ymm2/m256 based on the encoding in imm8 and store the result in ymm1 under write mask k1. VPSHUFHW zmm1 {k1}{z},zmm2/m512,imm8 EVEX.512.F3.0F.WIG 70 /r ib AVX512BW Shuffle the high words in zmm2/m512 based on the encoding in imm8 and store the result in zmm1 under write mask k1. ModRM:reg(w) ModRM:r/m(r) Imm8 NA ModRM:reg(w) ModRM:r/m(r) Imm8 NA PSHUFLW--Shuffle Packed Low Words. PSHUFLW xmm1,xmm2/m128,imm8 F2 0F 70 /r ib SSE2 Shuffle the low words in xmm2/m128 based on the encoding in imm8 and store the result in xmm1. VPSHUFLW xmm1,xmm2/m128,imm8 VEX.128.F2.0F 70 /r ib AVX Shuffle the low words in xmm2/m128 based on the encoding in imm8 and store the result in xmm1. VPSHUFLW ymm1,ymm2/m256,imm8 VEX.256.F2.0F 70 /r ib AVX2 Shuffle the low words in ymm2/m256 based on the encoding in imm8 and store the result in ymm1. VPSHUFLW xmm1 {k1}{z},xmm2/m128,imm8 EVEX.128.F2.0F.WIG 70 /r ib AVX512VL AVX512BW Shuffle the low words in xmm2/m128 based on the encoding in imm8 and store the result in xmm1 under write mask k1. VPSHUFLW ymm1 {k1}{z},ymm2/m256,imm8 EVEX.256.F2.0F.WIG 70 /r ib AVX512VL AVX512BW Shuffle the low words in ymm2/m256 based on the encoding in imm8 and store the result in ymm1 under write mask k1. VPSHUFLW zmm1 {k1}{z},zmm2/m512,imm8 EVEX.512.F2.0F.WIG 70 /r ib AVX512BW Shuffle the low words in zmm2/m512 based on the encoding in imm8 and store the result in zmm1 under write mask k1. ModRM:reg(w) ModRM:r/m(r) Imm8 NA ModRM:reg(w) ModRM:r/m(r) Imm8 NA PSHUFD--Shuffle Packed Doublewords. PSHUFD xmm1,xmm2/m128,imm8 66 0F 70 /r ib SSE2 Shuffle the doublewords in xmm2/m128 based on the encoding in imm8 and store the result in xmm1. VPSHUFD xmm1,xmm2/m128,imm8 VEX.128.66.0F.WIG 70 /r ib AVX Shuffle the doublewords in xmm2/m128 based on the encoding in imm8 and store the result in xmm1. VPSHUFD ymm1,ymm2/m256,imm8 VEX.256.66.0F.WIG 70 /r ib AVX2 Shuffle the doublewords in ymm2/m256 based on the encoding in imm8 and store the result in ymm1. VPSHUFD xmm1 {k1}{z},xmm2/m128/m32bcst,imm8 EVEX.128.66.0F.W0 70 /r ib AVX512VL AVX512F Shuffle the doublewords in xmm2/m128/m32bcst based on the encoding in imm8 and store the result in xmm1 using writemask k1. VPSHUFD ymm1 {k1}{z},ymm2/m256/m32bcst,imm8 EVEX.256.66.0F.W0 70 /r ib AVX512VL AVX512F Shuffle the doublewords in ymm2/m256/m32bcst based on the encoding in imm8 and store the result in ymm1 using writemask k1. VPSHUFD zmm1 {k1}{z},zmm2/m512/m32bcst,imm8 EVEX.512.66.0F.W0 70 /r ib AVX512F Shuffle the doublewords in zmm2/m512/m32bcst based on the encoding in imm8 and store the result in zmm1 using writemask k1. ModRM:reg(w) ModRM:r/m(r) Imm8 NA ModRM:reg(w) ModRM:r/m(r) Imm8 NA PSLLDQ--Byte Shift Left. PSLLDQ xmm1,imm8 66 0F 73 /7 ib SSE2 Shift xmm1 left by imm8 bytes while shifting in 0s and store result in xmm1. VPSLLDQ xmm1,xmm2,imm8 VEX.NDD.128.66.0F 73 /7 ib AVX Shift xmm2 left by imm8 bytes while shifting in 0s and store result in xmm1. VPSLLDQ ymm1,ymm2,imm8 VEX.NDD.256.66.0F 73 /7 ib AVX2 Shift ymm2 left by imm8 bytes while shifting in 0s and store result in ymm1. VPSLLDQ xmm1,xmm2/ m128,imm8 EVEX.NDD.128.66.0F 73 /7 ib AVX512VL AVX512BW Shift xmm2/m128 left by imm8 bytes while shifting in 0s and store result in xmm1. VPSLLDQ ymm1,ymm2/m256,imm8 EVEX.NDD.256.66.0F 73 /7 ib AVX512VL AVX512BW Shift ymm2/m256 left by imm8 bytes while shifting in 0s and store result in ymm1. VPSLLDQ zmm1,zmm2/m512,imm8 EVEX.NDD.512.66.0F 73 /7 ib AVX512BW Shift zmm2/m512 left by imm8 bytes while shifting in 0s and store result in zmm1. ModRM:r/m(r,w) Imm8 NA NA VEX.vvvv(w) ModRM:r/m(R) Imm8 NA EVEX.vvvv(w) ModRM:r/m(R) Imm8 NA PSLLW/PSLLD/PSLLQ--Bit Shift Left. PSLLW xmm1,xmm2/m128 66 0F F1/r SSE2 Shift words in xmm1 left by amount specified in xmm2/m128 while shifting in 0s. PSLLW xmm1,imm8 66 0F 71 /6 ib SSE2 Shift words in xmm1 left by imm8 while shifting in 0s. PSLLD xmm1,imm8 66 0F 72 /6 ib SSE2 Shift doublewords in xmm1 left by imm8 while shifting in 0s. PSLLQ xmm1,imm8 66 0F 73 /6 ib SSE2 Shift quadwords in xmm1 left by imm8 while shifting in 0s. VPSLLW xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG F1 /r AVX Shift words in xmm2 left by amount specified in xmm3/m128 while shifting in 0s. VPSLLW xmm1,xmm2,imm8 VEX.NDD.128.66.0F.WIG 71 /6 ib AVX Shift words in xmm2 left by imm8 while shifting in 0s. VPSLLD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG F2 /r AVX Shift doublewords in xmm2 left by amount specified in xmm3/m128 while shifting in 0s. VPSLLD xmm1,xmm2,imm8 VEX.NDD.128.66.0F.WIG 72 /6 ib AVX Shift doublewords in xmm2 left by imm8 while shifting in 0s. VPSLLQ xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG F3 /r AVX Shift quadwords in xmm2 left by amount specified in xmm3/m128 while shifting in 0s. VPSLLQ xmm1,xmm2,imm8 VEX.NDD.128.66.0F.WIG 73 /6 ib AVX Shift quadwords in xmm2 left by imm8 while shifting in 0s. VPSLLW ymm1,ymm2,xmm3/m128 VEX.NDS.256.66.0F.WIG F1 /r AVX2 Shift words in ymm2 left by amount specified in xmm3/m128 while shifting in 0s. VPSLLW ymm1,ymm2,imm8 VEX.NDD.256.66.0F.WIG 71 /6 ib AVX2 Shift words in ymm2 left by imm8 while shifting in 0s. VPSLLD ymm1,ymm2,xmm3/m128 VEX.NDS.256.66.0F.WIG F2 /r AVX2 Shift doublewords in ymm2 left by amount specified in xmm3/m128 while shifting in 0s. VPSLLD ymm1,ymm2,imm8 VEX.NDD.256.66.0F.WIG 72 /6 ib AVX2 Shift doublewords in ymm2 left by imm8 while shifting in 0s. VPSLLQ ymm1,ymm2,xmm3/m128 VEX.NDS.256.66.0F.WIG F3 /r AVX2 Shift quadwords in ymm2 left by amount specified in xmm3/m128 while shifting in 0s. VPSLLQ ymm1,ymm2,imm8 VEX.NDD.256.66.0F.WIG 73 /6 ib AVX2 Shift quadwords in ymm2 left by imm8 while shifting in 0s. VPSLLW xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.WIG F1 /r AVX512VL AVX512BW Shift words in xmm2 left by amount specified in xmm3/m128 while shifting in 0s using writemask k1. VPSLLW ymm1 {k1}{z},ymm2,xmm3/m128 EVEX.NDS.256.66.0F.WIG F1 /r AVX512VL AVX512BW Shift words in ymm2 left by amount specified in xmm3/m128 while shifting in 0s using writemask k1. VPSLLW zmm1 {k1}{z},zmm2,xmm3/m128 EVEX.NDS.512.66.0F.WIG F1 /r AVX512BW Shift words in zmm2 left by amount specified in xmm3/m128 while shifting in 0s using writemask k1. VPSLLW xmm1 {k1}{z},xmm2/m128,imm8 EVEX.NDD.128.66.0F.WIG 71 /6 ib AVX512VL AVX512BW Shift words in xmm2/m128 left by imm8 while shifting in 0s using writemask k1. VPSLLW ymm1 {k1}{z},ymm2/m256,imm8 EVEX.NDD.256.66.0F.WIG 71 /6 ib AVX512VL AVX512BW Shift words in ymm2/m256 left by imm8 while shifting in 0s using writemask k1. VPSLLW zmm1 {k1}{z},zmm2/m512,imm8 EVEX.NDD.512.66.0F.WIG 71 /6 ib AVX512BW Shift words in zmm2/m512 left by imm8 while shifting in 0 using writemask k1. VPSLLD xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.W0 F2 /r AVX512VL AVX512F Shift doublewords in xmm2 left by amount specified in xmm3/m128 while shifting in 0s under writemask k1. VPSLLD ymm1 {k1}{z},ymm2,xmm3/m128 EVEX.NDS.256.66.0F.W0 F2 /r AVX512VL AVX512F Shift doublewords in ymm2 left by amount specified in xmm3/m128 while shifting in 0s under writemask k1. VPSLLD zmm1 {k1}{z},zmm2,xmm3/m128 EVEX.NDS.512.66.0F.W0 F2 /r AVX512F Shift doublewords in zmm2 left by amount specified in xmm3/m128 while shifting in 0s under writemask k1. VPSLLD xmm1 {k1}{z},xmm2/m128/m32bcst,imm8 EVEX.NDD.128.66.0F.W0 72 /6 ib AVX512VL AVX512F Shift doublewords in xmm2/m128/m32bcst left by imm8 while shifting in 0s using writemask k1. VPSLLD ymm1 {k1}{z},ymm2/m256/m32bcst,imm8 EVEX.NDD.256.66.0F.W0 72 /6 ib AVX512VL AVX512F Shift doublewords in ymm2/m256/m32bcst left by imm8 while shifting in 0s using writemask k1. VPSLLD zmm1 {k1}{z},zmm2/m512/m32bcst,imm8 EVEX.NDD.512.66.0F.W0 72 /6 ib AVX512F Shift doublewords in zmm2/m512/m32bcst left by imm8 while shifting in 0s using writemask k1. VPSLLQ xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.W1 F3 /r AVX512VL AVX512F Shift quadwords in xmm2 left by amount specified in xmm3/m128 while shifting in 0s using writemask k1. VPSLLQ ymm1 {k1}{z},ymm2,xmm3/m128 EVEX.NDS.256.66.0F.W1 F3 /r AVX512VL AVX512F Shift quadwords in ymm2 left by amount specified in xmm3/m128 while shifting in 0s using writemask k1. VPSLLQ zmm1 {k1}{z},zmm2,xmm3/m128 EVEX.NDS.512.66.0F.W1 F3 /r AVX512F Shift quadwords in zmm2 left by amount specified in xmm3/m128 while shifting in 0s using writemask k1. VPSLLQ xmm1 {k1}{z},xmm2/m128/m64bcst,imm8 EVEX.NDD.128.66.0F.W1 73 /6 ib AVX512VL AVX512F Shift quadwords in xmm2/m128/m64bcst left by imm8 while shifting in 0s using writemask k1. VPSLLQ ymm1 {k1}{z},ymm2/m256/m64bcst,imm8 EVEX.NDD.256.66.0F.W1 73 /6 ib AVX512VL AVX512F Shift quadwords in ymm2/m256/m64bcst left by imm8 while shifting in 0s using writemask k1. VPSLLQ zmm1 {k1}{z},zmm2/m512/m64bcst,imm8 EVEX.NDD.512.66.0F.W1 73 /6 ib AVX512F Shift quadwords in zmm2/m512/m64bcst left by imm8 while shifting in 0s using writemask k1. ModRM:r/m(r,w) Imm8 NA NA ModRM:reg(w) ModRM:r/m(r) NA NA VEX.vvvv(w) ModRM:r/m(R) Imm8 NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA EVEX.vvvv(w) ModRM:r/m(R) Imm8 NA EVEX.vvvv(w) ModRM:r/m(R) Imm8 NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA PSRAW/PSRAD/PSRAQ--Bit Shift Arithmetic Right. PSRAW xmm1,xmm2/m128 66 0F E1/r SSE2 Shift words in xmm1 right by amount specified in xmm2/m128 while shifting in sign bits. PSRAW xmm1,imm8 66 0F 71 /4 ib SSE2 Shift words in xmm1 right by imm8 while shifting in sign bits. PSRAD xmm1,xmm2/m128 66 0F E2 /r SSE2 Shift doublewords in xmm1 right by amount specified in xmm2/m128 while shifting in sign bits. PSRAD xmm1,imm8 66 0F 72 /4 ib SSE2 Shift doublewords in xmm1 right by imm8 while shifting in sign bits. VPSRAW xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG E1 /r AVX Shift words in xmm2 right by amount specified in xmm3/m128 while shifting in sign bits. VPSRAW xmm1,xmm2,imm8 VEX.NDD.128.66.0F.WIG 71 /4 ib AVX Shift words in xmm2 right by imm8 while shifting in sign bits. VPSRAD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG E2 /r AVX Shift doublewords in xmm2 right by amount specified in xmm3/m128 while shifting in sign bits. VPSRAD xmm1,xmm2,imm8 VEX.NDD.128.66.0F.WIG 72 /4 ib AVX Shift doublewords in xmm2 right by imm8 while shifting in sign bits. VPSRAW ymm1,ymm2,ymm3/m128 VEX.NDS.256.66.0F.WIG E1 /r AVX2 Shift words in ymm2 right by amount specified in ymm3/m128 while shifting in sign bits. VPSRAW ymm1,ymm2,imm8 VEX.NDD.256.66.0F.WIG 71 /4 ib AVX2 Shift words in ymm2 right by imm8 while shifting in sign bits. VPSRAD ymm1,ymm2,xmm3/m128 VEX.NDS.256.66.0F.WIG E2 /r AVX2 Shift doublewords in ymm2 right by amount specified in ymm3/m128 while shifting in sign bits. VPSRAD ymm1,ymm2,imm8 VEX.NDD.256.66.0F.WIG 72 /4 ib AVX2 Shift doublewords in ymm2 right by imm8 while shifting in sign bits. VPSRAW xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.WIG E1 /r AVX512VL AVX512BW Shift words in xmm2 right by amount specified in xmm3/m128 while shifting in sign bits using writemask k1. VPSRAW ymm1 {k1}{z},ymm2,xmm3/m128 EVEX.NDS.256.66.0F.WIG E1 /r AVX512VL AVX512BW Shift words in ymm2 right by amount specified in xmm3/m128 while shifting in sign bits using writemask k1. VPSRAW zmm1 {k1}{z},zmm2,xmm3/m128 EVEX.NDS.512.66.0F.WIG E1 /r AVX512BW Shift words in zmm2 right by amount specified in xmm3/m128 while shifting in sign bits using writemask k1. VPSRAW xmm1 {k1}{z},xmm2/m128,imm8 EVEX.NDD.128.66.0F.WIG 71 /4 ib AVX512VL AVX512BW Shift words in xmm2/m128 right by imm8 while shifting in sign bits using writemask k1. VPSRAW ymm1 {k1}{z},ymm2/m256,imm8 EVEX.NDD.256.66.0F.WIG 71 /4 ib AVX512VL AVX512BW Shift words in ymm2/m256 right by imm8 while shifting in sign bits using writemask k1. VPSRAW zmm1 {k1}{z},zmm2/m512,imm8 EVEX.NDD.512.66.0F.WIG 71 /4 ib AVX512BW Shift words in zmm2/m512 right by imm8 while shifting in sign bits using writemask k1. VPSRAD xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.W0 E2 /r AVX512VL AVX512F Shift doublewords in xmm2 right by amount specified in xmm3/m128 while shifting in sign bits using writemask k1. VPSRAD ymm1 {k1}{z},ymm2,xmm3/m128 EVEX.NDS.256.66.0F.W0 E2 /r AVX512VL AVX512F Shift doublewords in ymm2 right by amount specified in xmm3/m128 while shifting in sign bits using writemask k1. VPSRAD zmm1 {k1}{z},zmm2,xmm3/m128 EVEX.NDS.512.66.0F.W0 E2 /r AVX512F Shift doublewords in zmm2 right by amount specified in xmm3/m128 while shifting in sign bits using writemask k1. VPSRAD xmm1 {k1}{z},xmm2/m128/m32bcst,imm8 EVEX.NDD.128.66.0F.W0 72 /4 ib AVX512VL AVX512F Shift doublewords in xmm2/m128/m32bcst right by imm8 while shifting in sign bits using writemask k1. VPSRAD ymm1 {k1}{z},ymm2/m256/m32bcst,imm8 EVEX.NDD.256.66.0F.W0 72 /4 ib AVX512VL AVX512F Shift doublewords in ymm2/m256/m32bcst right by imm8 while shifting in sign bits using writemask k1. VPSRAD zmm1 {k1}{z},zmm2/m512/m32bcst,imm8 EVEX.NDD.512.66.0F.W0 72 /4 ib AVX512F Shift doublewords in zmm2/m512/m32bcst right by imm8 while shifting in sign bits using writemask k1. VPSRAQ xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.W1 E2 /r AVX512VL AVX512F Shift quadwords in xmm2 right by amount specified in xmm3/m128 while shifting in sign bits using writemask k1. VPSRAQ ymm1 {k1}{z},ymm2,xmm3/m128 EVEX.NDS.256.66.0F.W1 E2 /r AVX512VL AVX512F Shift quadwords in ymm2 right by amount specified in xmm3/m128 while shifting in sign bits using writemask k1. VPSRAQ zmm1 {k1}{z},zmm2,xmm3/m128 EVEX.NDS.512.66.0F.W1 E2 /r AVX512F Shift quadwords in zmm2 right by amount specified in xmm3/m128 while shifting in sign bits using writemask k1. VPSRAQ xmm1 {k1}{z},xmm2/m128/m64bcst,imm8 EVEX.NDD.128.66.0F.W1 72 /4 ib AVX512VL AVX512F Shift quadwords in xmm2/m128/m64bcst right by imm8 while shifting in sign bits using writemask k1. VPSRAQ ymm1 {k1}{z},ymm2/m256/m64bcst,imm8 EVEX.NDD.256.66.0F.W1 72 /4 ib AVX512VL AVX512F Shift quadwords in ymm2/m256/m64bcst right by imm8 while shifting in sign bits using writemask k1. VPSRAQ zmm1 {k1}{z},zmm2/m512/m64bcst,imm8 EVEX.NDD.512.66.0F.W1 72 /4 ib AVX512F Shift quadwords in zmm2/m512/m64bcst right by imm8 while shifting in sign bits using writemask k1. ModRM:r/m(r,w) Imm8 NA NA ModRM:reg(w) ModRM:r/m(r) NA NA VEX.vvvv(w) ModRM:r/m(R) Imm8 NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA EVEX.vvvv(w) ModRM:r/m(R) Imm8 NA EVEX.vvvv(w) ModRM:r/m(R) Imm8 NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA PSRLDQ--Byte Shift Right. PSRLDQ xmm1,imm8 66 0F 73 /3 ib SSE2 Shift xmm1 right by imm8 bytes while shifting in 0s and store result in xmm1. VPSRLDQ xmm1,xmm2,imm8 VEX.NDD.128.66.0F 73 /3 ib AVX Shift xmm2 right by imm8 bytes while shifting in 0s and store result in xmm1. VPSRLDQ ymm1,ymm2,imm8 VEX.NDD.256.66.0F 73 /3 ib AVX2 Shift ymm2 right by imm8 bytes while shifting in 0s and store result in ymm1. VPSRLDQ xmm1,xmm2/m128,imm8 EVEX.NDD.128.66.0F.WIG 73 /3 ib AVX512VL AVX512BW Shift xmm2/m128 right by imm8 bytes while shifting in 0s and store result in xmm1. VPSRLDQ ymm1,ymm2/m256,imm8 EVEX.NDD.256.66.0F.WIG 73 /3 ib AVX512VL AVX512BW Shift ymm2/m256 right by imm8 bytes while shifting in 0s and store result in ymm1. VPSRLDQ zmm1,zmm2/m512,imm8 EVEX.NDD.512.66.0F.WIG 73 /3 ib AVX512BW Shift zmm2/m512 right by imm8 bytes while shifting in 0s and store result in zmm1. ModRM:r/m(r,w) Imm8 NA NA VEX.vvvv(w) ModRM:r/m(R) Imm8 NA EVEX.vvvv(w) ModRM:r/m(R) Imm8 NA PSRLW/PSRLD/PSRLQ--Shift Packed Data Right Logical. PSRLW xmm1,xmm2/m128 66 0F D1 /r SSE2 Shift words in xmm1 right by amount specified in xmm2/m128 while shifting in 0s. PSRLW xmm1,imm8 66 0F 71 /2 ib SSE2 Shift words in xmm1 right by imm8 while shifting in 0s. PSRLD xmm1,xmm2/m128 66 0F D2 /r SSE2 Shift doublewords in xmm1 right by amount specified in xmm2/m128 while shifting in 0s. PSRLD xmm1,imm8 66 0F 72 /2 ib SSE2 Shift doublewords in xmm1 right by imm8 while shifting in 0s. PSRLQ xmm1,xmm2/m128 66 0F D3 /r SSE2 Shift quadwords in xmm1 right by amount specified in xmm2/m128 while shifting in 0s. PSRLQ xmm1,imm8 66 0F 73 /2 ib SSE2 Shift quadwords in xmm1 right by imm8 while shifting in 0s. VPSRLW xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG D1 /r AVX Shift words in xmm2 right by amount specified in xmm3/m128 while shifting in 0s. VPSRLW xmm1,xmm2,imm8 VEX.NDD.128.66.0F.WIG 71 /2 ib AVX Shift words in xmm2 right by imm8 while shifting in 0s. VPSRLD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG D2 /r AVX Shift doublewords in xmm2 right by amount specified in xmm3/m128 while shifting in 0s. VPSRLD xmm1,xmm2,imm8 VEX.NDD.128.66.0F.WIG 72 /2 ib AVX Shift doublewords in xmm2 right by imm8 while shifting in 0s. VPSRLQ xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG D3 /r AVX Shift quadwords in xmm2 right by amount specified in xmm3/m128 while shifting in 0s. VPSRLQ xmm1,xmm2,imm8 VEX.NDD.128.66.0F.WIG 73 /2 ib AVX Shift quadwords in xmm2 right by imm8 while shifting in 0s. VPSRLW ymm1,ymm2,xmm3/m128 VEX.NDS.256.66.0F.WIG D1 /r AVX2 Shift words in ymm2 right by amount specified in xmm3/m128 while shifting in 0s. VPSRLW ymm1,ymm2,imm8 VEX.NDD.256.66.0F.WIG 71 /2 ib AVX2 Shift words in ymm2 right by imm8 while shifting in 0s. VPSRLD ymm1,ymm2,xmm3/m128 VEX.NDS.256.66.0F.WIG D2 /r AVX2 Shift doublewords in ymm2 right by amount specified in xmm3/m128 while shifting in 0s. VPSRLD ymm1,ymm2,imm8 VEX.NDD.256.66.0F.WIG 72 /2 ib AVX2 Shift doublewords in ymm2 right by imm8 while shifting in 0s. VPSRLQ ymm1,ymm2,xmm3/m128 VEX.NDS.256.66.0F.WIG D3 /r AVX2 Shift quadwords in ymm2 right by amount specified in xmm3/m128 while shifting in 0s. VPSRLQ ymm1,ymm2,imm8 VEX.NDD.256.66.0F.WIG 73 /2 ib AVX2 Shift quadwords in ymm2 right by imm8 while shifting in 0s. VPSRLW xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.WIG D1 /r AVX512VL AVX512BW Shift words in xmm2 right by amount specified in xmm3/m128 while shifting in 0s using writemask k1. VPSRLW ymm1 {k1}{z},ymm2,xmm3/m128 EVEX.NDS.256.66.0F.WIG D1 /r AVX512VL AVX512BW Shift words in ymm2 right by amount specified in xmm3/m128 while shifting in 0s using writemask k1. VPSRLW zmm1 {k1}{z},zmm2,xmm3/m128 EVEX.NDS.512.66.0F.WIG D1 /r AVX512BW Shift words in zmm2 right by amount specified in xmm3/m128 while shifting in 0s using writemask k1. VPSRLW xmm1 {k1}{z},xmm2/m128,imm8 EVEX.NDD.128.66.0F.WIG 71 /2 ib AVX512VL AVX512BW Shift words in xmm2/m128 right by imm8 while shifting in 0s using writemask k1. VPSRLW ymm1 {k1}{z},ymm2/m256,imm8 EVEX.NDD.256.66.0F.WIG 71 /2 ib AVX512VL AVX512BW Shift words in ymm2/m256 right by imm8 while shifting in 0s using writemask k1. VPSRLW zmm1 {k1}{z},zmm2/m512,imm8 EVEX.NDD.512.66.0F.WIG 71 /2 ib AVX512BW Shift words in zmm2/m512 right by imm8 while shifting in 0s using writemask k1. VPSRLD xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.W0 D2 /r AVX512VL AVX512F Shift doublewords in xmm2 right by amount specified in xmm3/m128 while shifting in 0s using writemask k1. VPSRLD ymm1 {k1}{z},ymm2,xmm3/m128 EVEX.NDS.256.66.0F.W0 D2 /r AVX512VL AVX512F Shift doublewords in ymm2 right by amount specified in xmm3/m128 while shifting in 0s using writemask k1. VPSRLD zmm1 {k1}{z},zmm2,xmm3/m128 EVEX.NDS.512.66.0F.W0 D2 /r AVX512F Shift doublewords in zmm2 right by amount specified in xmm3/m128 while shifting in 0s using writemask k1. VPSRLD xmm1 {k1}{z},xmm2/m128/m32bcst,imm8 EVEX.NDD.128.66.0F.W0 72 /2 ib AVX512VL AVX512F Shift doublewords in xmm2/m128/m32bcst right by imm8 while shifting in 0s using writemask k1. VPSRLD ymm1 {k1}{z},ymm2/m256/m32bcst,imm8 EVEX.NDD.256.66.0F.W0 72 /2 ib AVX512VL AVX512F Shift doublewords in ymm2/m256/m32bcst right by imm8 while shifting in 0s using writemask k1. VPSRLD zmm1 {k1}{z},zmm2/m512/m32bcst,imm8 EVEX.NDD.512.66.0F.W0 72 /2 ib AVX512F Shift doublewords in zmm2/m512/m32bcst right by imm8 while shifting in 0s using writemask k1. VPSRLQ xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.W1 D3 /r AVX512VL AVX512F Shift quadwords in xmm2 right by amount specified in xmm3/m128 while shifting in 0s using writemask k1. VPSRLQ ymm1 {k1}{z},ymm2,xmm3/m128 EVEX.NDS.256.66.0F.W1 D3 /r AVX512VL AVX512F Shift quadwords in ymm2 right by amount specified in xmm3/m128 while shifting in 0s using writemask k1. VPSRLQ zmm1 {k1}{z},zmm2,xmm3/m128 EVEX.NDS.512.66.0F.W1 D3 /r AVX512F Shift quadwords in zmm2 right by amount specified in xmm3/m128 while shifting in 0s using writemask k1. VPSRLQ xmm1 {k1}{z},xmm2/m128/m64bcst,imm8 EVEX.NDD.128.66.0F.W1 73 /2 ib AVX512VL AVX512F Shift quadwords in xmm2/m128/m64bcst right by imm8 while shifting in 0s using writemask k1. VPSRLQ ymm1 {k1}{z},ymm2/m256/m64bcst,imm8 EVEX.NDD.256.66.0F.W1 73 /2 ib AVX512VL AVX512F Shift quadwords in ymm2/m256/m64bcst right by imm8 while shifting in 0s using writemask k1. VPSRLQ zmm1 {k1}{z},zmm2/m512/m64bcst,imm8 EVEX.NDD.512.66.0F.W1 73 /2 ib AVX512F Shift quadwords in zmm2/m512/m64bcst right by imm8 while shifting in 0s using writemask k1. ModRM:r/m(r,w) Imm8 NA NA ModRM:reg(w) ModRM:r/m(r) NA NA VEX.vvvv(w) ModRM:r/m(R) Imm8 NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA EVEX.vvvv(w) ModRM:r/m(R) Imm8 NA EVEX.vvvv(w) ModRM:r/m(R) Imm8 NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA VPSLLVW/VPSLLVD/VPSLLVQ--Variable Bit Shift Left Logical. VPSLLVD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.W0 47 /r AVX2 Shift doublewords in xmm2 left by amount specified in the corresponding element of xmm3/m128 while shifting in 0s. VPSLLVQ xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.W1 47 /r AVX2 Shift quadwords in xmm2 left by amount specified in the corresponding element of xmm3/m128 while shifting in 0s. VPSLLVD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.W0 47 /r AVX2 Shift doublewords in ymm2 left by amount specified in the corresponding element of ymm3/m256 while shifting in 0s. VPSLLVQ ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.W1 47 /r AVX2 Shift quadwords in ymm2 left by amount specified in the corresponding element of ymm3/m256 while shifting in 0s. VPSLLVW xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F38.W1 12 /r AVX512VL AVX512BW Shift words in xmm2 left by amount specified in the corresponding element of xmm3/m128 while shifting in 0s using writemask k1. VPSLLVW ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F38.W1 12 /r AVX512VL AVX512BW Shift words in ymm2 left by amount specified in the corresponding element of ymm3/m256 while shifting in 0s using writemask k1. VPSLLVW zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F38.W1 12 /r AVX512BW Shift words in zmm2 left by amount specified in the corresponding element of zmm3/m512 while shifting in 0s using writemask k1. VPSLLVD xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F38.W0 47 /r AVX512VL AVX512F Shift doublewords in xmm2 left by amount specified in the corresponding element of xmm3/m128/m32bcst while shifting in 0s using writemask k1. VPSLLVD ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F38.W0 47 /r AVX512VL AVX512F Shift doublewords in ymm2 left by amount specified in the corresponding element of ymm3/m256/m32bcst while shifting in 0s using writemask k1. VPSLLVD zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst EVEX.NDS.512.66.0F38.W0 47 /r AVX512F Shift doublewords in zmm2 left by amount specified in the corresponding element of zmm3/m512/m32bcst while shifting in 0s using writemask k1. VPSLLVQ xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F38.W1 47 /r AVX512VL AVX512F Shift quadwords in xmm2 left by amount specified in the corresponding element of xmm3/m128/m64bcst while shifting in 0s using writemask k1. VPSLLVQ ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F38.W1 47 /r AVX512VL AVX512F Shift quadwords in ymm2 left by amount specified in the corresponding element of ymm3/m256/m64bcst while shifting in 0s using writemask k1. VPSLLVQ zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.NDS.512.66.0F38.W1 47 /r AVX512F Shift quadwords in zmm2 left by amount specified in the corresponding element of zmm3/m512/m64bcst while shifting in 0s using writemask k1. ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA VPSRLVW/VPSRLVD/VPSRLVQ--Variable Bit Shift Right Logical. VPSRLVD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.W0 45 /r AVX2 Shift doublewords in xmm2 right by amount specified in the corresponding element of xmm3/m128 while shifting in 0s. VPSRLVQ xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.W1 45 /r AVX2 Shift quadwords in xmm2 right by amount specified in the corresponding element of xmm3/m128 while shifting in 0s. VPSRLVD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.W0 45 /r AVX2 Shift doublewords in ymm2 right by amount specified in the corresponding element of ymm3/m256 while shifting in 0s. VPSRLVQ ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.W1 45 /r AVX2 Shift quadwords in ymm2 right by amount specified in the corresponding element of ymm3/m256 while shifting in 0s. VPSRLVW xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F38.W1 10 /r AVX512VL AVX512BW Shift words in xmm2 right by amount specified in the corresponding element of xmm3/m128 while shifting in 0s using writemask k1. VPSRLVW ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F38.W1 10 /r AVX512VL AVX512BW Shift words in ymm2 right by amount specified in the corresponding element of ymm3/m256 while shifting in 0s using writemask k1. VPSRLVW zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F38.W1 10 /r AVX512BW Shift words in zmm2 right by amount specified in the corresponding element of zmm3/m512 while shifting in 0s using writemask k1. VPSRLVD xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F38.W0 45 /r AVX512VL AVX512F Shift doublewords in xmm2 right by amount specified in the corresponding element of xmm3/m128/m32bcst while shifting in 0s using writemask k1. VPSRLVD ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F38.W0 45 /r AVX512VL AVX512F Shift doublewords in ymm2 right by amount specified in the corresponding element of ymm3/m256/m32bcst while shifting in 0s using writemask k1. VPSRLVD zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst EVEX.NDS.512.66.0F38.W0 45 /r AVX512F Shift doublewords in zmm2 right by amount specified in the corresponding element of zmm3/m512/m32bcst while shifting in 0s using writemask k1. VPSRLVQ xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F38.W1 45 /r AVX512VL AVX512F Shift quadwords in xmm2 right by amount specified in the corresponding element of xmm3/m128/m64bcst while shifting in 0s using writemask k1. VPSRLVQ ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F38.W1 45 /r AVX512VL AVX512F Shift quadwords in ymm2 right by amount specified in the corresponding element of ymm3/m256/m64bcst while shifting in 0s using writemask k1. VPSRLVQ zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.NDS.512.66.0F38.W1 45 /r AVX512F Shift quadwords in zmm2 right by amount specified in the corresponding element of zmm3/m512/m64bcst while shifting in 0s using writemask k1. ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA PSUBB/PSUBW/PSUBD/PSUBQ--Packed Integer Subtract. PSUBB xmm1,xmm2/m128 66 0F F8 /r SSE2 Subtract packed byte integers in xmm2/m128 from xmm1. PSUBW xmm1,xmm2/m128 66 0F F9 /r SSE2 Subtract packed word integers in xmm2/m128 from xmm1. PSUBD xmm1,xmm2/m128 66 0F FA /r SSE2 Subtract packed doubleword integers in xmm2/m128 from xmm1. PSUBQ xmm1,xmm2/m128 66 0F FB/r SSE2 Subtract packed quadword integers in xmm2/m128 from xmm1. VPSUBB xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG F8 /r AVX Subtract packed byte integers in xmm3/m128 from xmm2. VPSUBW xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG F9 /r AVX Subtract packed word integers in xmm3/m128 from xmm2. VPSUBD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG FA /r AVX Subtract packed doubleword integers in xmm3/m128 from xmm2. VPSUBQ xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG FB/r AVX Subtract packed quadword integers in xmm3/m128 from xmm2. VPSUBB ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F.WIG F8 /r AVX2 Subtract packed byte integers in ymm3/m256 from ymm2. VPSUBW ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F.WIG F9 /r AVX2 Subtract packed word integers in ymm3/m256 from ymm2. VPSUBD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F.WIG FA /r AVX2 Subtract packed doubleword integers in ymm3/m256 from ymm2. VPSUBQ ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F.WIG FB/r AVX2 Subtract packed quadword integers in ymm3/m256 from ymm2. VPSUBB xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.WIG F8 /r AVX512VL AVX512BW Subtract packed byte integers in xmm3/m128 from xmm2 and store in xmm1 using writemask k1. VPSUBB ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F.WIG F8 /r AVX512VL AVX512BW Subtract packed byte integers in ymm3/m256 from ymm2 and store in ymm1 using writemask k1. VPSUBB zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F.WIG F8 /r AVX512BW Subtract packed byte integers in zmm3/m512 from zmm2 and store in zmm1 using writemask k1. VPSUBW xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.WIG F9 /r AVX512VL AVX512BW Subtract packed word integers in xmm3/m128 from xmm2 and store in xmm1 using writemask k1. VPSUBW ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F.WIG F9 /r AVX512VL AVX512BW Subtract packed word integers in ymm3/m256 from ymm2 and store in ymm1 using writemask k1. VPSUBW zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F.WIG F9 /r AVX512BW Subtract packed word integers in zmm3/m512 from zmm2 and store in zmm1 using writemask k1. VPSUBD xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F.W0 FA /r AVX512VL AVX512F Subtract packed doubleword integers in xmm3/m128/m32bcst from xmm2 and store in xmm1 using writemask k1. VPSUBD ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F.W0 FA /r AVX512VL AVX512F Subtract packed doubleword integers in ymm3/m256/m32bcst from ymm2 and store in ymm1 using writemask k1. VPSUBD zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst EVEX.NDS.512.66.0F.W0 FA /r AVX512F Subtract packed doubleword integers in zmm3/m512/m32bcst from zmm2 and store in zmm1 using writemask k1. VPSUBQ xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F.W1 FB /r AVX512VL AVX512F Subtract packed quadword integers in xmm3/m128/m64bcst from xmm2 and store in xmm1 using writemask k1. VPSUBQ ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F.W1 FB /r AVX512VL AVX512F Subtract packed quadword integers in ymm3/m256/m64bcst from ymm2 and store in ymm1 using writemask k1. VPSUBQ zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.NDS.512.66.0F.W1 FB/r AVX512F Subtract packed quadword integers in zmm3/m512/m64bcst from zmm2 and store in zmm1 using writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA PSUBSB/PSUBSW--Subtract Packed Signed Integers with Signed Saturation. PSUBSB xmm1,xmm2/m128 66 0F E8 /r SSE2 Subtract packed signed byte integers in xmm2/m128 from packed signed byte integers in xmm1 and saturate results. PSUBSW xmm1,xmm2/m128 66 0F E9 /r SSE2 Subtract packed signed word integers in xmm2/m128 from packed signed word integers in xmm1 and saturate results. VPSUBSB xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F E8 /r AVX Subtract packed signed byte integers in xmm3/m128 from packed signed byte integers in xmm2 and saturate results. VPSUBSW xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F E9 /r AVX Subtract packed signed word integers in xmm3/m128 from packed signed word integers in xmm2 and saturate results. VPSUBSB ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F E8 /r AVX2 Subtract packed signed byte integers in ymm3/m256 from packed signed byte integers in ymm2 and saturate results. VPSUBSW ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F E9 /r AVX2 Subtract packed signed word integers in ymm3/m256 from packed signed word integers in ymm2 and saturate results. VPSUBSB xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.WIG E8 /r AVX512VL AVX512BW Subtract packed signed byte integers in xmm3/m128 from packed signed byte integers in xmm2 and saturate results and store in xmm1 using writemask k1. VPSUBSB ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F.WIG E8 /r AVX512VL AVX512BW Subtract packed signed byte integers in ymm3/m256 from packed signed byte integers in ymm2 and saturate results and store in ymm1 using writemask k1. VPSUBSB zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F.WIG E8 /r AVX512BW Subtract packed signed byte integers in zmm3/m512 from packed signed byte integers in zmm2 and saturate results and store in zmm1 using writemask k1. VPSUBSW xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.WIG E9 /r AVX512VL AVX512BW Subtract packed signed word integers in xmm3/m128 from packed signed word integers in xmm2 and saturate results and store in xmm1 using writemask k1. VPSUBSW ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F.WIG E9 /r AVX512VL AVX512BW Subtract packed signed word integers in ymm3/m256 from packed signed word integers in ymm2 and saturate results and store in ymm1 using writemask k1. VPSUBSW zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F.WIG E9 /r AVX512BW Subtract packed signed word integers in zmm3/m512 from packed signed word integers in zmm2 and saturate results and store in zmm1 using writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA PSUBUSB/PSUBUSW--Subtract Packed Unsigned Integers with Unsigned Saturation. PSUBUSB xmm1,xmm2/m128 66 0F D8 /r SSE2 Subtract packed unsigned byte integers in xmm2/m128 from packed unsigned byte integers in xmm1 and saturate result. PSUBUSW xmm1,xmm2/m128 66 0F D9 /r SSE2 Subtract packed unsigned word integers in xmm2/m128 from packed unsigned word integers in xmm1 and saturate result. VPSUBUSB xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F D8 /r AVX Subtract packed unsigned byte integers in xmm3/m128 from packed unsigned byte integers in xmm2 and saturate result. VPSUBUSW xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F D9 /r AVX Subtract packed unsigned word integers in xmm3/m128 from packed unsigned word integers in xmm2 and saturate result. VPSUBUSB ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F D8 /r AVX2 Subtract packed unsigned byte integers in ymm3/m256 from packed unsigned byte integers in ymm2 and saturate result. VPSUBUSW ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F D9 /r AVX2 Subtract packed unsigned word integers in ymm3/m256 from packed unsigned word integers in ymm2 and saturate result. VPSUBUSB xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.WIG D8 /r AVX512VL AVX512BW Subtract packed unsigned byte integers in xmm3/m128 from packed unsigned byte integers in xmm2, saturate results and store in xmm1 using writemask k1. VPSUBUSB ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F.WIG D8 /r AVX512VL AVX512BW Subtract packed unsigned byte integers in ymm3/m256 from packed unsigned byte integers in ymm2, saturate results and store in ymm1 using writemask k1. VPSUBUSB zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F.WIG D8 /r AVX512BW Subtract packed unsigned byte integers in zmm3/m512 from packed unsigned byte integers in zmm2, saturate results and store in zmm1 using writemask k1. VPSUBUSW xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.WIG D9 /r AVX512VL AVX512BW Subtract packed unsigned word integers in xmm3/m128 from packed unsigned word integers in xmm2 and saturate results and store in xmm1 using writemask k1. VPSUBUSW ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F.WIG D9 /r AVX512VL AVX512BW Subtract packed unsigned word integers in ymm3/m256 from packed unsigned word integers in ymm2, saturate results and store in ymm1 using writemask k1. VPSUBUSW zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F.WIG D9 /r AVX512BW Subtract packed unsigned word integers in zmm3/m512 from packed unsigned word integers in zmm2, saturate results and store in zmm1 using writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA VPTESTNMB/W/D/Q--Logical NAND and Set. VPTESTNMB k2 {k1},xmm2,xmm3/m128 EVEX.NDS.128.F3.0F38.W0 26 /r AVX512VL AVX512BW Bitwise NAND of packed byte integers in xmm2 and xmm3/m128 and set mask k2 to reflect the zero/non-zero status of each element of the result, under writemask k1. VPTESTNMB k2 {k1},ymm2,ymm3/m256 EVEX.NDS.256.F3.0F38.W0 26 /r AVX512VL AVX512BW Bitwise NAND of packed byte integers in ymm2 and ymm3/m256 and set mask k2 to reflect the zero/non-zero status of each element of the result, under writemask k1. VPTESTNMB k2 {k1},zmm2,zmm3/m512 EVEX.NDS.512.F3.0F38.W0 26 /r AVX512F AVX512BW Bitwise NAND of packed byte integers in zmm2 and zmm3/m512 and set mask k2 to reflect the zero/non-zero status of each element of the result, under writemask k1. VPTESTNMW k2 {k1},xmm2,xmm3/m128 EVEX.NDS.128.F3.0F38.W1 26 /r AVX512VL AVX512BW Bitwise NAND of packed word integers in xmm2 and xmm3/m128 and set mask k2 to reflect the zero/non-zero status of each element of the result, under writemask k1. VPTESTNMW k2 {k1},ymm2,ymm3/m256 EVEX.NDS.256.F3.0F38.W1 26 /r AVX512VL AVX512BW Bitwise NAND of packed word integers in ymm2 and ymm3/m256 and set mask k2 to reflect the zero/non-zero status of each element of the result, under writemask k1. VPTESTNMW k2 {k1},zmm2,zmm3/m512 EVEX.NDS.512.F3.0F38.W1 26 /r AVX512F AVX512BW Bitwise NAND of packed word integers in zmm2 and zmm3/m512 and set mask k2 to reflect the zero/non-zero status of each element of the result, under writemask k1. VPTESTNMD k2 {k1},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.F3.0F38.W0 27 /r AVX512VL AVX512F Bitwise NAND of packed doubleword integers in xmm2 and xmm3/m128/m32bcst and set mask k2 to reflect the zero/non-zero status of each element of the result, under writemask k1. VPTESTNMD k2 {k1},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.F3.0F38.W0 27 /r AVX512VL AVX512F Bitwise NAND of packed doubleword integers in ymm2 and ymm3/m256/m32bcst and set mask k2 to reflect the zero/non-zero status of each element of the result, under writemask k1. VPTESTNMD k2 {k1},zmm2,zmm3/m512/m32bcst EVEX.NDS.512.F3.0F38.W0 27 /r AVX512F Bitwise NAND of packed doubleword integers in zmm2 and zmm3/m512/m32bcst and set mask k2 to reflect the zero/non-zero status of each element of the result, under writemask k1. VPTESTNMQ k2 {k1},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.F3.0F38.W1 27 /r AVX512VL AVX512F Bitwise NAND of packed quadword integers in xmm2 and xmm3/m128/m64bcst and set mask k2 to reflect the zero/non-zero status of each element of the result, under writemask k1. VPTESTNMQ k2 {k1},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.F3.0F38.W1 27 /r AVX512VL AVX512F Bitwise NAND of packed quadword integers in ymm2 and ymm3/m256/m64bcst and set mask k2 to reflect the zero/non-zero status of each element of the result, under writemask k1. VPTESTNMQ k2 {k1},zmm2,zmm3/m512/m64bcst EVEX.NDS.512.F3.0F38.W1 27 /r AVX512F Bitwise NAND of packed quadword integers in zmm2 and zmm3/m512/m64bcst and set mask k2 to reflect the zero/non-zero status of each element of the result, under writemask k1. ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA PUNPCKHBW/PUNPCKHWD/PUNPCKHDQ/PUNPCKHQDQ--Unpack High Data. PUNPCKHBW xmm1,xmm2/m128 66 0F 68 /r SSE2 Interleave high-order bytes from xmm1 and xmm2/m128 into xmm1. PUNPCKHWD xmm1,xmm2/m128 66 0F 69 /r SSE2 Interleave high-order words from xmm1 and xmm2/m128 into xmm1. PUNPCKHDQ xmm1,xmm2/m128 66 0F 6A /r SSE2 Interleave high-order doublewords from xmm1 and xmm2/m128 into xmm1. PUNPCKHQDQ xmm1,xmm2/m128 66 0F 6D /r SSE2 Interleave high-order quadword from xmm1 and xmm2/m128 into xmm1 register. VPUNPCKHBW xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG 68 /r AVX Interleave high-order bytes from xmm2 and xmm3/m128 into xmm1. VPUNPCKHWD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG 69 /r AVX Interleave high-order words from xmm2 and xmm3/m128 into xmm1. VPUNPCKHDQ xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG 6A /r AVX Interleave high-order doublewords from xmm2 and xmm3/m128 into xmm1. VPUNPCKHQDQ xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG 6D /r AVX Interleave high-order quadword from xmm2 and xmm3/m128 into xmm1 register. VPUNPCKHBW ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F.WIG 68 /r AVX2 Interleave high-order bytes from ymm2 and ymm3/m256 into ymm1 register. VPUNPCKHWD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F.WIG 69 /r AVX2 Interleave high-order words from ymm2 and ymm3/m256 into ymm1 register. VPUNPCKHDQ ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F.WIG 6A /r AVX2 Interleave high-order doublewords from ymm2 and ymm3/m256 into ymm1 register. VPUNPCKHQDQ ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F.WIG 6D /r AVX2 Interleave high-order quadword from ymm2 and ymm3/m256 into ymm1 register. VPUNPCKHBW xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.WIG 68 /r AVX512VL AVX512BW Interleave high-order bytes from xmm2 and xmm3/m128 into xmm1 register using k1 write mask. VPUNPCKHWD xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.WIG 69 /r AVX512VL AVX512BW Interleave high-order words from xmm2 and xmm3/m128 into xmm1 register using k1 write mask. VPUNPCKHDQ xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F.W0 6A /r AVX512VL AVX512F Interleave high-order doublewords from xmm2 and xmm3/m128/m32bcst into xmm1 register using k1 write mask. VPUNPCKHQDQ xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F.W1 6D /r AVX512VL AVX512F Interleave high-order quadword from xmm2 and xmm3/m128/m64bcst into xmm1 register using k1 write mask. VPUNPCKHBW ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F.WIG 68 /r AVX512VL AVX512BW Interleave high-order bytes from ymm2 and ymm3/m256 into ymm1 register using k1 write mask. VPUNPCKHWD ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F.WIG 69 /r AVX512VL AVX512BW Interleave high-order words from ymm2 and ymm3/m256 into ymm1 register using k1 write mask. VPUNPCKHDQ ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F.W0 6A /r AVX512VL AVX512F Interleave high-order doublewords from ymm2 and ymm3/m256/m32bcst into ymm1 register using k1 write mask. VPUNPCKHQDQ ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F.W1 6D /r AVX512VL AVX512F Interleave high-order quadword from ymm2 and ymm3/m256/m64bcst into ymm1 register using k1 write mask. VPUNPCKHBW zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F 68/r AVX512BW Interleave high-order bytes from zmm2 and zmm3/m512 into zmm1 register. VPUNPCKHWD zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F 69/r AVX512BW Interleave high-order words from zmm2 and zmm3/m512 into zmm1 register. VPUNPCKHDQ zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst EVEX.NDS.512.66.0F.W0 6A /r AVX512F Interleave high-order doublewords from zmm2 and zmm3/m512/m32bcst into zmm1 register using k1 write mask. VPUNPCKHQDQ zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.NDS.512.66.0F.W1 6D /r AVX512F Interleave high-order quadword from zmm2 and zmm3/m512/m64bcst into zmm1 register using k1 write mask. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA PUNPCKLBW/PUNPCKLWD/PUNPCKLDQ/PUNPCKLQDQ--Unpack Low Data. PUNPCKLBW xmm1,xmm2/m128 66 0F 60 /r SSE2 Interleave low-order bytes from xmm1 and xmm2/m128 into xmm1. PUNPCKLWD xmm1,xmm2/m128 66 0F 61 /r SSE2 Interleave low-order words from xmm1 and xmm2/m128 into xmm1. PUNPCKLDQ xmm1,xmm2/m128 66 0F 62 /r SSE2 Interleave low-order doublewords from xmm1 and xmm2/m128 into xmm1. PUNPCKLQDQ xmm1,xmm2/m128 66 0F 6C /r SSE2 Interleave low-order quadword from xmm1 and xmm2/m128 into xmm1 register. VPUNPCKLBW xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG 60 /r AVX Interleave low-order bytes from xmm2 and xmm3/m128 into xmm1. VPUNPCKLWD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG 61 /r AVX Interleave low-order words from xmm2 and xmm3/m128 into xmm1. VPUNPCKLDQ xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG 62 /r AVX Interleave low-order doublewords from xmm2 and xmm3/m128 into xmm1. VPUNPCKLQDQ xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG 6C /r AVX Interleave low-order quadword from xmm2 and xmm3/m128 into xmm1 register. VPUNPCKLBW ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F.WIG 60 /r AVX2 Interleave low-order bytes from ymm2 and ymm3/m256 into ymm1 register. VPUNPCKLWD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F.WIG 61 /r AVX2 Interleave low-order words from ymm2 and ymm3/m256 into ymm1 register. VPUNPCKLDQ ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F.WIG 62 /r AVX2 Interleave low-order doublewords from ymm2 and ymm3/m256 into ymm1 register. VPUNPCKLQDQ ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F.WIG 6C /r AVX2 Interleave low-order quadword from ymm2 and ymm3/m256 into ymm1 register. VPUNPCKLBW xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.WIG 60 /r AVX512VL AVX512BW Interleave low-order bytes from xmm2 and xmm3/m128 into xmm1 register subject to write mask k1. VPUNPCKLWD xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F.WIG 61 /r AVX512VL AVX512BW Interleave low-order words from xmm2 and xmm3/m128 into xmm1 register subject to write mask k1. VPUNPCKLDQ xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F.W0 62 /r AVX512VL AVX512F Interleave low-order doublewords from xmm2 and xmm3/m128/m32bcst into xmm1 register subject to write mask k1. VPUNPCKLQDQ xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F.W1 6C /r AVX512VL AVX512F Interleave low-order quadword from zmm2 and zmm3/m512/m64bcst into zmm1 register subject to write mask k1. VPUNPCKLBW ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F.WIG 60 /r AVX512VL AVX512BW Interleave low-order bytes from ymm2 and ymm3/m256 into ymm1 register subject to write mask k1. VPUNPCKLWD ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F.WIG 61 /r AVX512VL AVX512BW Interleave low-order words from ymm2 and ymm3/m256 into ymm1 register subject to write mask k1. VPUNPCKLDQ ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F.W0 62 /r AVX512VL AVX512F Interleave low-order doublewords from ymm2 and ymm3/m256/m32bcst into ymm1 register subject to write mask k1. VPUNPCKLQDQ ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F.W1 6C /r AVX512VL AVX512F Interleave low-order quadword from ymm2 and ymm3/m256/m64bcst into ymm1 register subject to write mask k1. VPUNPCKLBW zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F 60/r AVX512BW Interleave low-order bytes from zmm2 and zmm3/m512 into zmm1 register subject to write mask k1. VPUNPCKLWD zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F 61/r AVX512BW Interleave low-order words from zmm2 and zmm3/m512 into zmm1 register subject to write mask k1. VPUNPCKLDQ zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst EVEX.NDS.512.66.0F.W0 62 /r AVX512F Interleave low-order doublewords from zmm2 and zmm3/m512/m32bcst into zmm1 register subject to write mask k1. VPUNPCKLQDQ zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.NDS.512.66.0F.W1 6C /r AVX512F Interleave low-order quadword from zmm2 and zmm3/m512/m64bcst into zmm1 register subject to write mask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA SHUFF32x4/SHUFF64x2/SHUFI32x4/SHUFI64x2--Shuffle Packed Values at 128-bit Granularity. VSHUFF32X4 ymm1{k1}{z},ymm2,ymm3/m256/m32bcst,imm8 EVEX.NDS.256.66.0F3A.W0 23 /r ib AVX512VL AVX512F Shuffle 128-bit packed single-precision floating-point values selected by imm8 from ymm2 and ymm3/m256/m32bcst and place results in ymm1 subject to writemask k1. VSHUFF32x4 zmm1{k1}{z},zmm2,zmm3/m512/m32bcst,imm8 EVEX.NDS.512.66.0F3A.W0 23 /r ib AVX512F Shuffle 128-bit packed single-precision floating-point values selected by imm8 from zmm2 and zmm3/m512/m32bcst and place results in zmm1 subject to writemask k1. VSHUFF64X2 ymm1{k1}{z},ymm2,ymm3/m256/m64bcst,imm8 EVEX.NDS.256.66.0F3A.W1 23 /r ib AVX512VL AVX512F Shuffle 128-bit packed double-precision floating-point values selected by imm8 from ymm2 and ymm3/m256/m64bcst and place results in ymm1 subject to writemask k1. VSHUFF64x2 zmm1{k1}{z},zmm2,zmm3/m512/m64bcst,imm8 EVEX.NDS.512.66.0F3A.W1 23 /r ib AVX512F Shuffle 128-bit packed double-precision floating-point values selected by imm8 from zmm2 and zmm3/m512/m64bcst and place results in zmm1 subject to writemask k1. VSHUFI32X4 ymm1{k1}{z},ymm2,ymm3/m256/m32bcst,imm8 EVEX.NDS.256.66.0F3A.W0 43 /r ib AVX512VL AVX512F Shuffle 128-bit packed double-word values selected by imm8 from ymm2 and ymm3/m256/m32bcst and place results in ymm1 subject to writemask k1. VSHUFI32x4 zmm1{k1}{z},zmm2,zmm3/m512/m32bcst,imm8 EVEX.NDS.512.66.0F3A.W0 43 /r ib AVX512F Shuffle 128-bit packed double-word values selected by imm8 from zmm2 and zmm3/m512/m32bcst and place results in zmm1 subject to writemask k1. VSHUFI64X2 ymm1{k1}{z},ymm2,ymm3/m256/m64bcst,imm8 EVEX.NDS.256.66.0F3A.W1 43 /r ib AVX512VL AVX512F Shuffle 128-bit packed quad-word values selected by imm8 from ymm2 and ymm3/m256/m64bcst and place results in ymm1 subject to writemask k1. VSHUFI64x2 zmm1{k1}{z},zmm2,zmm3/m512/m64bcst,imm8 EVEX.NDS.512.66.0F3A.W1 43 /r ib AVX512F Shuffle 128-bit packed quad-word values selected by imm8 from zmm2 and zmm3/m512/m64bcst and place results in zmm1 subject to writemask k1. ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA SHUFPD--Packed Interleave Shuffle of Pairs of Double-Precision Floating-Point Values. SHUFPD xmm1,xmm2/m128,imm8 66 0F C6 /r ib SSE2 Shuffle two pairs of double-precision floating-point values from xmm1 and xmm2/m128 using imm8 to select from each pair, interleaved result is stored in xmm1. VSHUFPD xmm1,xmm2,xmm3/m128,imm8 VEX.NDS.128.66.0F.WIG C6 /r ib AVX Shuffle two pairs of double-precision floating-point values from xmm2 and xmm3/m128 using imm8 to select from each pair, interleaved result is stored in xmm1. VSHUFPD ymm1,ymm2,ymm3/m256,imm8 VEX.NDS.256.66.0F.WIG C6 /r ib AVX Shuffle four pairs of double-precision floating-point values from ymm2 and ymm3/m256 using imm8 to select from each pair, interleaved result is stored in xmm1. VSHUFPD xmm1{k1}{z},xmm2,xmm3/m128/m64bcst,imm8 EVEX.NDS.128.0F.W1 C6 /r ib AVX512VL AVX512F Shuffle two paris of double-precision floating-point values from xmm2 and xmm3/m128/m64bcst using imm8 to select from each pair. store interleaved results in xmm1 subject to writemask k1. VSHUFPD ymm1{k1}{z},ymm2,ymm3/m256/m64bcst,imm8 EVEX.NDS.256.0F.W1 C6 /r ib AVX512VL AVX512F Shuffle four paris of double-precision floating-point values from ymm2 and ymm3/m256/m64bcst using imm8 to select from each pair. store interleaved results in ymm1 subject to writemask k1. VSHUFPD zmm1{k1}{z},zmm2,zmm3/m512/m64bcst,imm8 EVEX.NDS.512.66.0F.W1 C6 /r ib AVX512F Shuffle eight paris of double-precision floating-point values from zmm2 and zmm3/m512/m64bcst using imm8 to select from each pair. store interleaved results in zmm1 subject to writemask k1. ModRM:reg(r,w) ModRM:r/m(r) Imm8 NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) Imm8 ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) Imm8 SHUFPS--Packed Interleave Shuffle of Quadruplets of Single-Precision Floating-Point Values. SHUFPS xmm1,xmm3/m128,imm8 0F C6 /r ib SSE Select from quadruplet of single-precision floatingpoint values in xmm1 and xmm2/m128 using imm8, interleaved result pairs are stored in xmm1. VSHUFPS xmm1,xmm2,xmm3/m128,imm8 VEX.NDS.128.0F.WIG C6 /r ib AVX Select from quadruplet of single-precision floatingpoint values in xmm1 and xmm2/m128 using imm8, interleaved result pairs are stored in xmm1. VSHUFPS ymm1,ymm2,ymm3/m256,imm8 VEX.NDS.256.0F.WIG C6 /r ib AVX Select from quadruplet of single-precision floatingpoint values in ymm2 and ymm3/m256 using imm8, interleaved result pairs are stored in ymm1. VSHUFPS xmm1{k1}{z},xmm2,xmm3/m128/m32bcst,imm8 EVEX.NDS.128.0F.W0 C6 /r ib AVX512VL AVX512F Select from quadruplet of single-precision floatingpoint values in xmm1 and xmm2/m128 using imm8, interleaved result pairs are stored in xmm1, subject to writemask k1. VSHUFPS ymm1{k1}{z},ymm2,ymm3/m256/m32bcst,imm8 EVEX.NDS.256.0F.W0 C6 /r ib AVX512VL AVX512F Select from quadruplet of single-precision floatingpoint values in ymm2 and ymm3/m256 using imm8, interleaved result pairs are stored in ymm1, subject to writemask k1. VSHUFPS zmm1{k1}{z},zmm2,zmm3/m512/m32bcst,imm8 EVEX.NDS.512.0F.W0 C6 /r ib AVX512F Select from quadruplet of single-precision floatingpoint values in zmm2 and zmm3/m512 using imm8, interleaved result pairs are stored in zmm1, subject to writemask k1. ModRM:reg(r,w) ModRM:r/m(r) Imm8 NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) Imm8 ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) Imm8 SQRTPD--Square Root of Double-Precision Floating-Point Values. SQRTPD xmm1,xmm2/m128 66 0F 51 /r SSE2 Computes Square Roots of the packed double-precision floating-point values in xmm2/m128 and stores the result in xmm1. VSQRTPD xmm1,xmm2/m128 VEX.128.66.0F.WIG 51 /r AVX Computes Square Roots of the packed double-precision floating-point values in xmm2/m128 and stores the result in xmm1. VSQRTPD ymm1,ymm2/m256 VEX.256.66.0F.WIG 51 /r AVX Computes Square Roots of the packed double-precision floating-point values in ymm2/m256 and stores the result in ymm1. VSQRTPD xmm1 {k1}{z},xmm2/m128/m32bcst EVEX.128.0F.W1 51 /r AVX512VL AVX512F Computes Square Roots of the packed double-precision floating-point values in xmm2/m128/m64bcst and stores the result in xmm1 subject to writemask k1. VSQRTPD ymm1 {k1}{z},ymm2/m256/m32bcst EVEX.256.0F.W1 51 /r AVX512VL AVX512F Computes Square Roots of the packed double-precision floating-point values in ymm2/m256/m64bcst and stores the result in ymm1 subject to writemask k1. VSQRTPD zmm1 {k1}{z},zmm2/m512/m64bcst{er} EVEX.512.66.0F.W1 51 /r AVX512F Computes Square Roots of the packed double-precision floating-point values in zmm2/m512/m64bcst and stores the result in zmm1 subject to writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA SQRTPS--Square Root of Single-Precision Floating-Point Values. SQRTPS xmm1,xmm2/m128 0F 51 /r SSE Computes Square Roots of the packed single-precision floating-point values in xmm2/m128 and stores the result in xmm1. VSQRTPS xmm1,xmm2/m128 VEX.128.0F.WIG 51 /r AVX Computes Square Roots of the packed single-precision floating-point values in xmm2/m128 and stores the result in xmm1. VSQRTPS ymm1,ymm2/m256 VEX.256.0F.WIG 51/r AVX Computes Square Roots of the packed single-precision floating-point values in ymm2/m256 and stores the result in ymm1. VSQRTPS xmm1 {k1}{z},xmm2/m128/m32bcst EVEX.128.0F.W0 51 /r AVX512VL AVX512F Computes Square Roots of the packed single-precision floating-point values in xmm2/m128/m32bcst and stores the result in xmm1 subject to writemask k1. VSQRTPS ymm1 {k1}{z},ymm2/m256/m32bcst EVEX.256.0F.W0 51 /r AVX512VL AVX512F Computes Square Roots of the packed single-precision floating-point values in ymm2/m256/m32bcst and stores the result in ymm1 subject to writemask k1. VSQRTPS zmm1 {k1}{z},zmm2/m512/m32bcst{er} EVEX.512.0F.W0 51/r AVX512F Computes Square Roots of the packed single-precision floating-point values in zmm2/m512/m32bcst and stores the result in zmm1 subject to writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA SQRTSD--Compute Square Root of Scalar Double-Precision Floating-Point Value. SQRTSD xmm1,xmm2/m64 F2 0F 51/ SSE2 Computes square root of the low double-precision floatingpoint value in xmm2/m64 and stores the results in xmm1. VSQRTSD xmm1,xmm2,xmm3/m64 VEX.NDS.128.F2.0F.WIG 51/ AVX Computes square root of the low double-precision floatingpoint value in xmm3/m64 and stores the results in xmm1. Also, upper double-precision floating-point value (bits[127:64]) from xmm2 is copied to xmm1[127:64]. VSQRTSD xmm1 {k1}{z},xmm2,xmm3/m64{er} EVEX.NDS.LIG.F2.0F.W1 51/ AVX512F Computes square root of the low double-precision floatingpoint value in xmm3/m64 and stores the results in xmm1 under writemask k1. Also, upper double-precision floatingpoint value (bits[127:64]) from xmm2 is copied to xmm1[127:64]. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA SQRTSS--Compute Square Root of Scalar Single-Precision Value. SQRTSS xmm1,xmm2/m32 F3 0F 51 /r SSE Computes square root of the low single-precision floating-point value in xmm2/m32 and stores the results in xmm1. VSQRTSS xmm1,xmm2,xmm3/m32 VEX.NDS.128.F3.0F.WIG 51 /r AVX Computes square root of the low single-precision floating-point value in xmm3/m32 and stores the results in xmm1. Also, upper single-precision floating-point values (bits[127:32]) from xmm2 are copied to xmm1[127:32]. VSQRTSS xmm1 {k1}{z},xmm2,xmm3/m32{er} EVEX.NDS.LIG.F3.0F.W0 51 /r AVX512F Computes square root of the low single-precision floating-point value in xmm3/m32 and stores the results in xmm1 under writemask k1. Also, upper single-precision floating-point values (bits[127:32]) from xmm2 are copied to xmm1[127:32]. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA VPTERNLOGD/VPTERNLOGQ--Bitwise Ternary Logic. VPTERNLOGD xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst,imm8 EVEX.DDS.128.66.0F3A.W0 25 /r ib AVX512VL AVX512F Bitwise ternary logic taking xmm1, xmm2 and xmm3/m128/m32bcst as source operands and writing the result to xmm1 under writemask k1 with dword granularity. The immediate value determines the specific binary function being implemented. VPTERNLOGD ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst,imm8 EVEX.DDS.256.66.0F3A.W0 25 /r ib AVX512VL AVX512F Bitwise ternary logic taking ymm1, ymm2 and ymm3/m256/m32bcst as source operands and writing the result to ymm1 under writemask k1 with dword granularity. The immediate value determines the specific binary function being implemented. VPTERNLOGD zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst,imm8 EVEX.DDS.512.66.0F3A.W0 25 /r ib AVX512F Bitwise ternary logic taking zmm1, zmm2 and zmm3/m512/m32bcst as source operands and writing the result to zmm1 under writemask k1 with dword granularity. The immediate value determines the specific binary function being implemented. VPTERNLOGQ xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst,imm8 EVEX.DDS.128.66.0F3A.W1 25 /r ib AVX512VL AVX512F Bitwise ternary logic taking xmm1, xmm2 and xmm3/m128/m64bcst as source operands and writing the result to xmm1 under writemask k1 with qword granularity. The immediate value determines the specific binary function being implemented. VPTERNLOGQ ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst,imm8 EVEX.DDS.256.66.0F3A.W1 25 /r ib AVX512VL AVX512F Bitwise ternary logic taking ymm1, ymm2 and ymm3/m256/m64bcst as source operands and writing the result to ymm1 under writemask k1 with qword granularity. The immediate value determines the specific binary function being implemented. VPTERNLOGQ zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst,imm8 EVEX.DDS.512.66.0F3A.W1 25 /r ib AVX512F Bitwise ternary logic taking zmm1, zmm2 and zmm3/m512/m64bcst as source operands and writing the result to zmm1 under writemask k1 with qword granularity. The immediate value determines the specific binary function being implemented. ModRM:reg(r,w) EVEX.vvvv(r) ModRM:r/m(r) Imm8 VPTESTMB/VPTESTMW/VPTESTMD/VPTESTMQ--Logical AND and Set Mask. VPTESTMB k2 {k1},xmm2,xmm3/m128 EVEX.NDS.128.66.0F38.W0 26 /r AVX512VL AVX512BW Bitwise AND of packed byte integers in xmm2 and xmm3/m128 and set mask k2 to reflect the zero/non-zero status of each element of the result, under writemask k1. VPTESTMB k2 {k1},ymm2,ymm3/m256 EVEX.NDS.256.66.0F38.W0 26 /r AVX512VL AVX512BW Bitwise AND of packed byte integers in ymm2 and ymm3/m256 and set mask k2 to reflect the zero/non-zero status of each element of the result, under writemask k1. VPTESTMB k2 {k1},zmm2,zmm3/m512 EVEX.NDS.512.66.0F38.W0 26 /r AVX512BW Bitwise AND of packed byte integers in zmm2 and zmm3/m512 and set mask k2 to reflect the zero/non-zero status of each element of the result, under writemask k1. VPTESTMW k2 {k1},xmm2,xmm3/m128 EVEX.NDS.128.66.0F38.W1 26 /r AVX512VL AVX512BW Bitwise AND of packed word integers in xmm2 and xmm3/m128 and set mask k2 to reflect the zero/non-zero status of each element of the result, under writemask k1. VPTESTMW k2 {k1},ymm2,ymm3/m256 EVEX.NDS.256.66.0F38.W1 26 /r AVX512VL AVX512BW Bitwise AND of packed word integers in ymm2 and ymm3/m256 and set mask k2 to reflect the zero/non-zero status of each element of the result, under writemask k1. VPTESTMW k2 {k1},zmm2,zmm3/m512 EVEX.NDS.512.66.0F38.W1 26 /r AVX512BW Bitwise AND of packed word integers in zmm2 and zmm3/m512 and set mask k2 to reflect the zero/non-zero status of each element of the result, under writemask k1. VPTESTMD k2 {k1},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F38.W0 27 /r AVX512VL AVX512F Bitwise AND of packed doubleword integers in xmm2 and xmm3/m128/m32bcst and set mask k2 to reflect the zero/non-zero status of each element of the result, under writemask k1. VPTESTMD k2 {k1},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F38.W0 27 /r AVX512VL AVX512F Bitwise AND of packed doubleword integers in ymm2 and ymm3/m256/m32bcst and set mask k2 to reflect the zero/non-zero status of each element of the result, under writemask k1. VPTESTMD k2 {k1},zmm2,zmm3/m512/m32bcst EVEX.NDS.512.66.0F38.W0 27 /r AVX512F Bitwise AND of packed doubleword integers in zmm2 and zmm3/m512/m32bcst and set mask k2 to reflect the zero/non-zero status of each element of the result, under writemask k1. VPTESTMQ k2 {k1},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F38.W1 27 /r AVX512VL AVX512F Bitwise AND of packed quadword integers in xmm2 and xmm3/m128/m64bcst and set mask k2 to reflect the zero/non-zero status of each element of the result, under writemask k1. VPTESTMQ k2 {k1},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F38.W1 27 /r AVX512VL AVX512F Bitwise AND of packed quadword integers in ymm2 and ymm3/m256/m64bcst and set mask k2 to reflect the zero/non-zero status of each element of the result, under writemask k1. VPTESTMQ k2 {k1},zmm2,zmm3/m512/m64bcst EVEX.NDS.512.66.0F38.W1 27 /r AVX512F Bitwise AND of packed quadword integers in zmm2 and zmm3/m512/m64bcst and set mask k2 to reflect the zero/non-zero status of each element of the result, under writemask k1. ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA VPSRAVW/VPSRAVD/VPSRAVQ--Variable Bit Shift Right Arithmetic. VPSRAVD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F38.W0 46 /r AVX2 Shift doublewords in xmm2 right by amount specified in the corresponding element of xmm3/m128 while shifting in sign bits. VPSRAVD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F38.W0 46 /r AVX2 Shift doublewords in ymm2 right by amount specified in the corresponding element of ymm3/m256 while shifting in sign bits. VPSRAVW xmm1 {k1}{z},xmm2,xmm3/m128 EVEX.NDS.128.66.0F38.W1 11 /r AVX512VL AVX512BW Shift words in xmm2 right by amount specified in the corresponding element of xmm3/m128 while shifting in sign bits using writemask k1. VPSRAVW ymm1 {k1}{z},ymm2,ymm3/m256 EVEX.NDS.256.66.0F38.W1 11 /r AVX512VL AVX512BW Shift words in ymm2 right by amount specified in the corresponding element of ymm3/m256 while shifting in sign bits using writemask k1. VPSRAVW zmm1 {k1}{z},zmm2,zmm3/m512 EVEX.NDS.512.66.0F38.W1 11 /r AVX512BW Shift words in zmm2 right by amount specified in the corresponding element of zmm3/m512 while shifting in sign bits using writemask k1. VPSRAVD xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F38.W0 46 /r AVX512VL AVX512F Shift doublewords in xmm2 right by amount specified in the corresponding element of xmm3/m128/m32bcst while shifting in sign bits using writemask k1. VPSRAVD ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F38.W0 46 /r AVX512VL AVX512F Shift doublewords in ymm2 right by amount specified in the corresponding element of ymm3/m256/m32bcst while shifting in sign bits using writemask k1. VPSRAVD zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst EVEX.NDS.512.66.0F38.W0 46 /r AVX512F Shift doublewords in zmm2 right by amount specified in the corresponding element of zmm3/m512/m32bcst while shifting in sign bits using writemask k1. VPSRAVQ xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F38.W1 46 /r AVX512VL AVX512F Shift quadwords in xmm2 right by amount specified in the corresponding element of xmm3/m128/m64bcst while shifting in sign bits using writemask k1. VPSRAVQ ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F38.W1 46 /r AVX512VL AVX512F Shift quadwords in ymm2 right by amount specified in the corresponding element of ymm3/m256/m64bcst while shifting in sign bits using writemask k1. VPSRAVQ zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.NDS.512.66.0F38.W1 46 /r AVX512F Shift quadwords in zmm2 right by amount specified in the corresponding element of zmm3/m512/m64bcst while shifting in sign bits using writemask k1. ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA PXOR/PXORD/PXORQ--Exclusive Or. PXOR xmm1,xmm2/m128 66 0F EF /r SSE2 Bitwise XOR of xmm2/m128 and xmm1. VPXOR xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG EF /r AVX Bitwise XOR of xmm3/m128 and xmm2. VPXOR ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F.WIG EF /r AVX2 Bitwise XOR of ymm3/m256 and ymm2. VPXORD xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F.W0 EF /r AVX512VL AVX512F Bitwise XOR of packed doubleword integers in xmm2 and xmm3/m128 using writemask k1. VPXORD ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F.W0 EF /r AVX512VL AVX512F Bitwise XOR of packed doubleword integers in ymm2 and ymm3/m256 using writemask k1. VPXORD zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst EVEX.NDS.512.66.0F.W0 EF /r AVX512F Bitwise XOR of packed doubleword integers in zmm2 and zmm3/m512/m32bcst using writemask k1. VPXORQ xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F.W1 EF /r AVX512VL AVX512F Bitwise XOR of packed quadword integers in xmm2 and xmm3/m128 using writemask k1. VPXORQ ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F.W1 EF /r AVX512VL AVX512F Bitwise XOR of packed quadword integers in ymm2 and ymm3/m256 using writemask k1. VPXORQ zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.NDS.512.66.0F.W1 EF /r AVX512F Bitwise XOR of packed quadword integers in zmm2 and zmm3/m512/m64bcst using writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA VRANGEPD--Range Restriction Calculation For Packed Pairs of Float64 Values. VRANGEPD xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst,imm8 EVEX.NDS.128.66.0F3A.W1 50 /r ib AVX512VL AVX512DQ Calculate two RANGE operation output value from 2 pairs of double-precision floating-point values in xmm2 and xmm3/m128/m32bcst, store the results to xmm1 under the writemask k1. Imm8 specifies the comparison and sign of the range operation. VRANGEPD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst,imm8 EVEX.NDS.256.66.0F3A.W1 50 /r ib AVX512VL AVX512DQ Calculate four RANGE operation output value from 4pairs of double-precision floating-point values in ymm2 and ymm3/m256/m32bcst, store the results to ymm1 under the writemask k1. Imm8 specifies the comparison and sign of the range operation. VRANGEPD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst{sae},imm8 EVEX.NDS.512.66.0F3A.W1 50 /r ib AVX512DQ Calculate eight RANGE operation output value from 8 pairs of double-precision floating-point values in zmm2 and zmm3/m512/m32bcst, store the results to zmm1 under the writemask k1. Imm8 specifies the comparison and sign of the range operation. ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) Imm8 VRANGEPS--Range Restriction Calculation For Packed Pairs of Float32 Values. VRANGEPS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst,imm8 EVEX.NDS.128.66.0F3A.W0 50 /r ib AVX512VL AVX512DQ Calculate four RANGE operation output value from 4 pairs of single-precision floating-point values in xmm2 and xmm3/m128/m32bcst, store the results to xmm1 under the writemask k1. Imm8 specifies the comparison and sign of the range operation. VRANGEPS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst,imm8 EVEX.NDS.256.66.0F3A.W0 50 /r ib AVX512VL AVX512DQ Calculate eight RANGE operation output value from 8 pairs of single-precision floating-point values in ymm2 and ymm3/m256/m32bcst, store the results to ymm1 under the writemask k1. Imm8 specifies the comparison and sign of the range operation. VRANGEPS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst{sae},imm8 EVEX.NDS.512.66.0F3A.W0 50 /r ib AVX512DQ Calculate 16 RANGE operation output value from 16 pairs of single-precision floating-point values in zmm2 and zmm3/m512/m32bcst, store the results to zmm1 under the writemask k1. Imm8 specifies the comparison and sign of the range operation. ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) Imm8 VRANGESD--Range Restriction Calculation From a pair of Scalar Float64 Values. VRANGESD xmm1 {k1}{z},xmm2,xmm3/m64{sae},imm8 EVEX.NDS.LIG.66.0F3A.W1 51 /r AVX512DQ Calculate a RANGE operation output value from 2 doubleprecision floating-point values in xmm2 and xmm3/m64, store the output to xmm1 under writemask. Imm8 specifies the comparison and sign of the range operation. ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) Imm8 VRANGESS--Range Restriction Calculation From a Pair of Scalar Float32 Values. VRANGESS xmm1 {k1}{z},xmm2,xmm3/m32{sae},imm8 EVEX.ND.LIG.66.0F3A.W0 51 /r AVX512DQ Calculate a RANGE operation output value from 2 singleprecision floating-point values in xmm2 and xmm3/m32, store the output to xmm1 under writemask. Imm8 specifies the comparison and sign of the range operation. ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA VRCP14PD--Compute Approximate Reciprocals of Packed Float64 Values. VRCP14PD xmm1 {k1}{z},xmm2/m128/m64bcst EVEX.128.66.0F38.W1 4C /r AVX512VL AVX512F Computes the approximate reciprocals of the packed doubleprecision floating-point values in xmm2/m128/m64bcst and stores the results in xmm1. Under writemask. VRCP14PD ymm1 {k1}{z},ymm2/m256/m64bcst EVEX.256.66.0F38.W1 4C /r AVX512VL AVX512F Computes the approximate reciprocals of the packed doubleprecision floating-point values in ymm2/m256/m64bcst and stores the results in ymm1. Under writemask. VRCP14PD zmm1 {k1}{z},zmm2/m512/m64bcst EVEX.512.66.0F38.W1 4C /r AVX512F Computes the approximate reciprocals of the packed doubleprecision floating-point values in zmm2/m512/m64bcst and stores the results in zmm1. Under writemask. ModRM:reg(w) ModRM:r/m(r) NA NA VRCP14SD--Compute Approximate Reciprocal of Scalar Float64 Value. T1S VRCP14SD xmm1 {k1}{z},xmm2,xmm3/m64 EVEX.NDS.LIG.66.0F38.W1 4D /r AVX512F Computes the approximate reciprocal of the scalar doubleprecision floating-point value in xmm3/m64 and stores the result in xmm1 using writemask k1. Also, upper double-precision floating-point value (bits[127:64]) from xmm2 is copied to xmm1[127:64]. ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA VRCP14PS--Compute Approximate Reciprocals of Packed Float32 Values. VRCP14PS xmm1 {k1}{z},xmm2/m128/m32bcst EVEX.128.66.0F38.W0 4C /r AVX512VL AVX512F Computes the approximate reciprocals of the packed singleprecision floating-point values in xmm2/m128/m32bcst and stores the results in xmm1. Under writemask. VRCP14PS ymm1 {k1}{z},ymm2/m256/m32bcst EVEX.256.66.0F38.W0 4C /r AVX512VL AVX512F Computes the approximate reciprocals of the packed singleprecision floating-point values in ymm2/m256/m32bcst and stores the results in ymm1. Under writemask. VRCP14PS zmm1 {k1}{z},zmm2/m512/m32bcst EVEX.512.66.0F38.W0 4C /r AVX512F Computes the approximate reciprocals of the packed singleprecision floating-point values in zmm2/m512/m32bcst and stores the results in zmm1. Under writemask. ModRM:reg(w) ModRM:r/m(r) NA NA VRCP14SS--Compute Approximate Reciprocal of Scalar Float32 Value. VRCP14SS xmm1 {k1}{z},xmm2,xmm3/m32 EVEX.NDS.LIG.66.0F38.W0 4D /r AVX512F Computes the approximate reciprocal of the scalar singleprecision floating-point value in xmm3/m32 and stores the results in xmm1 using writemask k1. Also, upper doubleprecision floating-point value (bits[127:32]) from xmm2 is copied to xmm1[127:32]. ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA VREDUCEPD--Perform Reduction Transformation on Packed Float64 Values. VREDUCEPD xmm1 {k1}{z},xmm2/m128/m64bcst,imm8 EVEX.128.66.0F3A.W1 56 /r ib AVX512VL AVX512DQ Perform reduction transformation on packed double-precision floating point values in xmm2/m128/m32bcst by subtracting a number of fraction bits specified by the imm8 field. Stores the result in xmm1 register under writemask k1. VREDUCEPD ymm1 {k1}{z},ymm2/m256/m64bcst,imm8 EVEX.256.66.0F3A.W1 56 /r ib AVX512VL AVX512DQ Perform reduction transformation on packed double-precision floating point values in ymm2/m256/m32bcst by subtracting a number of fraction bits specified by the imm8 field. Stores the result in ymm1 register under writemask k1. VREDUCEPD zmm1 {k1}{z},zmm2/m512/m64bcst{sae},imm8 EVEX.512.66.0F3A.W1 56 /r ib AVX512DQ Perform reduction transformation on double-precision floating point values in zmm2/m512/m32bcst by subtracting a number of fraction bits specified by the imm8 field. Stores the result in zmm1 register under writemask k1. ModRM:reg(w) ModRM:r/m(r) Imm8 NA VREDUCESD--Perform a Reduction Transformation on a Scalar Float64 Value. VREDUCESD xmm1 {k1}{z},xmm2,xmm3/m64{sae},imm8 EVEX.NDS.LIG.66.0F3A.W1 57 /r AVX512DQ Perform a reduction transformation on a scalar double-precision floating point value in xmm3/m64 by subtracting a number of fraction bits specified by the imm8 field. Also, upper double precision floating-point value (bits[127:64]) from xmm2 are copied to xmm1[127:64]. Stores the result in xmm1 register. ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA VREDUCEPS--Perform Reduction Transformation on Packed Float32 Values. VREDUCEPS xmm1 {k1}{z},xmm2/m128/m32bcst,imm8 EVEX.128.66.0F3A.W0 56 /r ib AVX512VL AVX512DQ Perform reduction transformation on packed single-precision floating point values in xmm2/m128/m32bcst by subtracting a number of fraction bits specified by the imm8 field. Stores the result in xmm1 register under writemask k1. VREDUCEPS ymm1 {k1}{z},ymm2/m256/m32bcst,imm8 EVEX.256.66.0F3A.W0 56 /r ib AVX512VL AVX512DQ Perform reduction transformation on packed single-precision floating point values in ymm2/m256/m32bcst by subtracting a number of fraction bits specified by the imm8 field. Stores the result in ymm1 register under writemask k1. VREDUCEPS zmm1 {k1}{z},zmm2/m512/m32bcst{sae},imm8 EVEX.512.66.0F3A.W0 56 /r ib AVX512DQ Perform reduction transformation on packed single-precision floating point values in zmm2/m512/m32bcst by subtracting a number of fraction bits specified by the imm8 field. Stores the result in zmm1 register under writemask k1. ModRM:reg(w) ModRM:r/m(r) Imm8 NA VREDUCESS--Perform a Reduction Transformation on a Scalar Float32 Value. VREDUCESS xmm1 {k1}{z},xmm2,xmm3/m32{sae},imm8 EVEX.NDS.LIG.66.0F3A.W0 57 /r /ib AVX512DQ Perform a reduction transformation on a scalar single-precision floating point value in xmm3/m32 by subtracting a number of fraction bits specified by the imm8 field. Also, upper single precision floating-point values (bits[127:32]) from xmm2 are copied to xmm1[127:32]. Stores the result in xmm1 register. ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA VRNDSCALEPD--Round Packed Float64 Values To Include A Given Number Of Fraction Bits. VRNDSCALEPD xmm1 {k1}{z},xmm2/m128/m64bcst,imm8 EVEX.128.66.0F3A.W1 09 /r ib AVX512VL AVX512F Rounds packed double-precision floating point values in xmm2/m128/m64bcst to a number of fraction bits specified by the imm8 field. Stores the result in xmm1 register. Under writemask. VRNDSCALEPD ymm1 {k1}{z},ymm2/m256/m64bcst,imm8 EVEX.256.66.0F3A.W1 09 /r ib AVX512VL AVX512F Rounds packed double-precision floating point values in ymm2/m256/m64bcst to a number of fraction bits specified by the imm8 field. Stores the result in ymm1 register. Under writemask. VRNDSCALEPD zmm1 {k1}{z},zmm2/m512/m64bcst{sae},imm8 EVEX.512.66.0F3A.W1 09 /r ib AVX512F Rounds packed double-precision floating-point values in zmm2/m512/m64bcst to a number of fraction bits specified by the imm8 field. Stores the result in zmm1 register using writemask k1. ModRM:reg(w) ModRM:r/m(r) Imm8 NA VRNDSCALESD--Round Scalar Float64 Value To Include A Given Number Of Fraction Bits. VRNDSCALESD xmm1 {k1}{z},xmm2,xmm3/m64{sae},imm8 EVEX.NDS.LIG.66.0F3A.W1 0B /r ib AVX512F Rounds scalar double-precision floating-point value in xmm3/m64 to a number of fraction bits specified by the imm8 field. Stores the result in xmm1 register. ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) Imm8 VRNDSCALEPS--Round Packed Float32 Values To Include A Given Number Of Fraction Bits. VRNDSCALEPS xmm1 {k1}{z},xmm2/m128/m32bcst,imm8 EVEX.128.66.0F3A.W0 08 /r ib AVX512VL AVX512F Rounds packed single-precision floating point values in xmm2/m128/m32bcst to a number of fraction bits specified by the imm8 field. Stores the result in xmm1 register. Under writemask. VRNDSCALEPS ymm1 {k1}{z},ymm2/m256/m32bcst,imm8 EVEX.256.66.0F3A.W0 08 /r ib AVX512VL AVX512F Rounds packed single-precision floating point values in ymm2/m256/m32bcst to a number of fraction bits specified by the imm8 field. Stores the result in ymm1 register. Under writemask. VRNDSCALEPS zmm1 {k1}{z},zmm2/m512/m32bcst{sae},imm8 EVEX.512.66.0F3A.W0 08 /r ib AVX512F Rounds packed single-precision floating-point values in zmm2/m512/m32bcst to a number of fraction bits specified by the imm8 field. Stores the result in zmm1 register using writemask. ModRM:reg(w) ModRM:r/m(r) Imm8 NA VRNDSCALESS--Round Scalar Float32 Value To Include A Given Number Of Fraction Bits. VRNDSCALESS xmm1 {k1}{z},xmm2,xmm3/m32{sae},imm8 EVEX.NDS.LIG.66.0F3A.W0 0A /r ib AVX512F Rounds scalar single-precision floating-point value in xmm3/m32 to a number of fraction bits specified by the imm8 field. Stores the result in xmm1 register under writemask. ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA VRSQRT14PD--Compute Approximate Reciprocals of Square Roots of Packed Float64 Values. VRSQRT14PD xmm1 {k1}{z},xmm2/m128/m64bcst EVEX.128.66.0F38.W1 4E /r AVX512VL AVX512F Computes the approximate reciprocal square roots of the packed double-precision floating-point values in xmm2/m128/m64bcst and stores the results in xmm1. Under writemask. VRSQRT14PD ymm1 {k1}{z},ymm2/m256/m64bcst EVEX.256.66.0F38.W1 4E /r AVX512VL AVX512F Computes the approximate reciprocal square roots of the packed double-precision floating-point values in ymm2/m256/m64bcst and stores the results in ymm1. Under writemask. VRSQRT14PD zmm1 {k1}{z},zmm2/m512/m64bcst EVEX.512.66.0F38.W1 4E /r AVX512F Computes the approximate reciprocal square roots of the packed double-precision floating-point values in zmm2/m512/m64bcst and stores the results in zmm1 under writemask. ModRM:reg(w) ModRM:r/m(r) NA NA VRSQRT14SD--Compute Approximate Reciprocal of Square Root of Scalar Float64 Value. VRSQRT14SD xmm1 {k1}{z},xmm2,xmm3/m64 EVEX.NDS.LIG.66.0F38.W1 4F /r AVX512F Computes the approximate reciprocal square root of the scalar double-precision floating-point value in xmm3/m64 and stores the result in the low quadword element of xmm1 using writemask k1. Bits[127:64] of xmm2 is copied to xmm1[127:64]. ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA VRSQRT14PS--Compute Approximate Reciprocals of Square Roots of Packed Float32 Values. VRSQRT14PS xmm1 {k1}{z},xmm2/m128/m32bcst EVEX.128.66.0F38.W0 4E /r AVX512VL AVX512F Computes the approximate reciprocal square roots of the packed single-precision floating-point values in xmm2/m128/m32bcst and stores the results in xmm1. Under writemask. VRSQRT14PS ymm1 {k1}{z},ymm2/m256/m32bcst EVEX.256.66.0F38.W0 4E /r AVX512VL AVX512F Computes the approximate reciprocal square roots of the packed single-precision floating-point values in ymm2/m256/m32bcst and stores the results in ymm1. Under writemask. VRSQRT14PS zmm1 {k1}{z},zmm2/m512/m32bcst EVEX.512.66.0F38.W0 4E /r AVX512F Computes the approximate reciprocal square roots of the packed single-precision floating-point values in zmm2/m512/m32bcst and stores the results in zmm1. Under writemask. ModRM:reg(w) ModRM:r/m(r) NA NA VRSQRT14SS--Compute Approximate Reciprocal of Square Root of Scalar Float32 Value. VRSQRT14SS xmm1 {k1}{z},xmm2,xmm3/m32 EVEX.NDS.LIG.66.0F38.W0 4F /r AVX512F Computes the approximate reciprocal square root of the scalar single-precision floating-point value in xmm3/m32 and stores the result in the low doubleword element of xmm1 using writemask k1. Bits[127:32] of xmm2 is copied to xmm1[127:32]. ModRM:reg(w) VEX.vvvv ModRM:r/m(r) NA VSCALEFPD--Scale Packed Float64 Values With Float64 Values. VSCALEFPD xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F38.W1 2C /r AVX512VL AVX512F Scale the packed double-precision floating-point values in xmm2 using values from xmm3/m128/m64bcst. Under writemask k1. VSCALEFPD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F38.W1 2C /r AVX512VL AVX512F Scale the packed double-precision floating-point values in ymm2 using values from ymm3/m256/m64bcst. Under writemask k1. VSCALEFPD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst{er} EVEX.NDS.512.66.0F38.W1 2C /r AVX512F Scale the packed double-precision floating-point values in zmm2 using values from zmm3/m512/m64bcst. Under writemask k1. ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA VSCALEFSD--Scale Scalar Float64 Values With Float64 Values. VSCALEFSD xmm1 {k1}{z},xmm2,xmm3/m64{er} EVEX.NDS.LIG.66.0F38.W1 2D /r AVX512F Scale the scalar double-precision floating-point values in xmm2 using the value from xmm3/m64. Under writemask k1. ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA VSCALEFPS--Scale Packed Float32 Values With Float32 Values. VSCALEFPS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.66.0F38.W0 2C /r AVX512VL AVX512F Scale the packed single-precision floating-point values in xmm2 using values from xmm3/m128/m32bcst. Under writemask k1. VSCALEFPS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.66.0F38.W0 2C /r AVX512VL AVX512F Scale the packed single-precision values in ymm2 using floating point values from ymm3/m256/m32bcst. Under writemask k1. VSCALEFPS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst{er} EVEX.NDS.512.66.0F38.W0 2C /r AVX512F Scale the packed single-precision floating-point values in zmm2 using floating-point values from zmm3/m512/m32bcst. Under writemask k1. ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA VSCALEFSS--Scale Scalar Float32 Value With Float32 Value. VSCALEFSS xmm1 {k1}{z},xmm2,xmm3/m32{er} EVEX.NDS.LIG.66.0F38.W0 2D /r AVX512F Scale the scalar single-precision floating-point value in xmm2 using floating-point value from xmm3/m32. Under writemask k1. ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA VSCATTERDPS/VSCATTERDPD/VSCATTERQPS/VSCATTERQPD--Scatter Packed Single, Packed Double with Signed Dword and Qword Indices. VSCATTERDPS vm32x {k1},xmm1 EVEX.128.66.0F38.W0 A2 /vsib AVX512VL AVX512F Using signed dword indices, scatter single-precision floating-point values to memory using writemask k1. VSCATTERDPS vm32y {k1},ymm1 EVEX.256.66.0F38.W0 A2 /vsib AVX512VL AVX512F Using signed dword indices, scatter single-precision floating-point values to memory using writemask k1. VSCATTERDPS vm32z {k1},zmm1 EVEX.512.66.0F38.W0 A2 /vsib AVX512F Using signed dword indices, scatter single-precision floating-point values to memory using writemask k1. VSCATTERDPD vm32x {k1},xmm1 EVEX.128.66.0F38.W1 A2 /vsib AVX512VL AVX512F Using signed dword indices, scatter double-precision floating-point values to memory using writemask k1. VSCATTERDPD vm32x {k1},ymm1 EVEX.256.66.0F38.W1 A2 /vsib AVX512VL AVX512F Using signed dword indices, scatter double-precision floating-point values to memory using writemask k1. VSCATTERDPD vm32y {k1},zmm1 EVEX.512.66.0F38.W1 A2 /vsib AVX512F Using signed dword indices, scatter double-precision floating-point values to memory using writemask k1. VSCATTERQPS vm64x {k1},xmm1 EVEX.128.66.0F38.W0 A3 /vsib AVX512VL AVX512F Using signed qword indices, scatter single-precision floating-point values to memory using writemask k1. VSCATTERQPS vm64y {k1},xmm1 EVEX.256.66.0F38.W0 A3 /vsib AVX512VL AVX512F Using signed qword indices, scatter single-precision floating-point values to memory using writemask k1. VSCATTERQPS vm64z {k1},ymm1 EVEX.512.66.0F38.W0 A3 /vsib AVX512F Using signed qword indices, scatter single-precision floating-point values to memory using writemask k1. VSCATTERQPD vm64x {k1},xmm1 EVEX.128.66.0F38.W1 A3 /vsib AVX512VL AVX512F Using signed qword indices, scatter double-precision floating-point values to memory using writemask k1. VSCATTERQPD vm64y {k1},ymm1 EVEX.256.66.0F38.W1 A3 /vsib AVX512VL AVX512F Using signed qword indices, scatter double-precision floating-point values to memory using writemask k1. VSCATTERQPD vm64z {k1},zmm1 EVEX.512.66.0F38.W1 A3 /vsib AVX512F Using signed qword indices, scatter double-precision floating-point values to memory using writemask k1. BaseReg(R): VSIB:base,VectorReg(R): VSIB:index ModRM:reg(r) NA NA SUBPD--Subtract Packed Double-Precision Floating-Point Values. SUBPD xmm1,xmm2/m128 66 0F 5C /r SSE2 Subtract packed double-precision floating-point values in xmm2/mem from xmm1 and store result in xmm1. VSUBPD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG 5C /r AVX Subtract packed double-precision floating-point values in xmm3/mem from xmm2 and store result in xmm1. VSUBPD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F.WIG 5C /r AVX Subtract packed double-precision floating-point values in ymm3/mem from ymm2 and store result in ymm1. VSUBPD xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F.W1 5C /r AVX512VL AVX512F Subtract packed double-precision floating-point values from xmm3/m128/m64bcst to xmm2 and store result in xmm1 with writemask k1. VSUBPD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F.W1 5C /r AVX512VL AVX512F Subtract packed double-precision floating-point values from ymm3/m256/m64bcst to ymm2 and store result in ymm1 with writemask k1. VSUBPD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst{er} EVEX.NDS.512.66.0F.W1 5C /r AVX512F Subtract packed double-precision floating-point values from zmm3/m512/m64bcst to zmm2 and store result in zmm1 with writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA SUBPS--Subtract Packed Single-Precision Floating-Point Values. SUBPS xmm1,xmm2/m128 0F 5C /r SSE Subtract packed single-precision floating-point values in xmm2/mem from xmm1 and store result in xmm1. VSUBPS xmm1,xmm2,xmm3/m128 VEX.NDS.128.0F.WIG 5C /r AVX Subtract packed single-precision floating-point values in xmm3/mem from xmm2 and stores result in xmm1. VSUBPS ymm1,ymm2,ymm3/m256 VEX.NDS.256.0F.WIG 5C /r AVX Subtract packed single-precision floating-point values in ymm3/mem from ymm2 and stores result in ymm1. VSUBPS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.0F.W0 5C /r AVX512VL AVX512F Subtract packed single-precision floating-point values from xmm3/m128/m32bcst to xmm2 and stores result in xmm1 with writemask k1. VSUBPS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.0F.W0 5C /r AVX512VL AVX512F Subtract packed single-precision floating-point values from ymm3/m256/m32bcst to ymm2 and stores result in ymm1 with writemask k1. VSUBPS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst{er} EVEX.NDS.512.0F.W0 5C /r AVX512F Subtract packed single-precision floating-point values in zmm3/m512/m32bcst from zmm2 and stores result in zmm1 with writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA SUBSD--Subtract Scalar Double-Precision Floating-Point Value. SUBSD xmm1,xmm2/m64 F2 0F 5C /r SSE2 Subtract the low double-precision floating-point value in xmm2/m64 from xmm1 and store the result in xmm1. VSUBSD xmm1,xmm2,xmm3/m64 VEX.NDS.128.F2.0F.WIG 5C /r AVX Subtract the low double-precision floating-point value in xmm3/m64 from xmm2 and store the result in xmm1. VSUBSD xmm1 {k1}{z},xmm2,xmm3/m64{er} EVEX.NDS.LIG.F2.0F.W1 5C /r AVX512F Subtract the low double-precision floating-point value in xmm3/m64 from xmm2 and store the result in xmm1 under writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA SUBSS--Subtract Scalar Single-Precision Floating-Point Value. SUBSS xmm1,xmm2/m32 F3 0F 5C /r SSE Subtract the low single-precision floating-point value in xmm2/m32 from xmm1 and store the result in xmm1. VSUBSS xmm1,xmm2,xmm3/m32 VEX.NDS.128.F3.0F.WIG 5C /r AVX Subtract the low single-precision floating-point value in xmm3/m32 from xmm2 and store the result in xmm1. VSUBSS xmm1 {k1}{z},xmm2,xmm3/m32{er} EVEX.NDS.LIG.F3.0F.W0 5C /r AVX512F Subtract the low single-precision floating-point value in xmm3/m32 from xmm2 and store the result in xmm1 under writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA UCOMISD--Unordered Compare Scalar Double-Precision Floating-Point Values and Set EFLAGS. UCOMISD xmm1,xmm2/m64 66 0F 2E /r SSE2 Compare low double-precision floating-point values in xmm1 and xmm2/mem64 and set the EFLAGS flags accordingly. VUCOMISD xmm1,xmm2/m64 VEX.128.66.0F.WIG 2E /r AVX Compare low double-precision floating-point values in xmm1 and xmm2/mem64 and set the EFLAGS flags accordingly. VUCOMISD xmm1,xmm2/m64{sae} EVEX.LIG.66.0F.W1 2E /r AVX512F Compare low double-precision floating-point values in xmm1 and xmm2/m64 and set the EFLAGS flags accordingly. ModRM:reg(r) ModRM:r/m(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA UCOMISS--Unordered Compare Scalar Single-Precision Floating-Point Values and Set EFLAGS. UCOMISS xmm1,xmm2/m32 0F 2E /r SSE Compare low single-precision floating-point values in xmm1 and xmm2/mem32 and set the EFLAGS flags accordingly. VUCOMISS xmm1,xmm2/m32 VEX.128.0F.WIG 2E /r AVX Compare low single-precision floating-point values in xmm1 and xmm2/mem32 and set the EFLAGS flags accordingly. VUCOMISS xmm1,xmm2/m32{sae} EVEX.LIG.0F.W0 2E /r AVX512F Compare low single-precision floating-point values in xmm1 and xmm2/mem32 and set the EFLAGS flags accordingly. ModRM:reg(r) ModRM:r/m(r) NA NA ModRM:reg(w) ModRM:r/m(r) NA NA UNPCKHPD--Unpack and Interleave High Packed Double-Precision Floating-Point Values. UNPCKHPD xmm1,xmm2/m128 66 0F 15 /r SSE2 Unpacks and Interleaves double-precision floating-point values from high quadwords of xmm1 and xmm2/m128. VUNPCKHPD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG 15 /r AVX Unpacks and Interleaves double-precision floating-point values from high quadwords of xmm2 and xmm3/m128. VUNPCKHPD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F.WIG 15 /r AVX Unpacks and Interleaves double-precision floating-point values from high quadwords of ymm2 and ymm3/m256. VUNPCKHPD xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F.W1 15 /r AVX512VL AVX512F Unpacks and Interleaves double precision floating-point values from high quadwords of xmm2 and xmm3/m128/m64bcst subject to writemask k1. VUNPCKHPD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F.W1 15 /r AVX512VL AVX512F Unpacks and Interleaves double precision floating-point values from high quadwords of ymm2 and ymm3/m256/m64bcst subject to writemask k1. VUNPCKHPD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.NDS.512.66.0F.W1 15 /r AVX512F Unpacks and Interleaves double-precision floating-point values from high quadwords of zmm2 and zmm3/m512/m64bcst subject to writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA UNPCKHPS--Unpack and Interleave High Packed Single-Precision Floating-Point Values. UNPCKHPS xmm1,xmm2/m128 0F 15 /r SSE Unpacks and Interleaves single-precision floating-point values from high quadwords of xmm1 and xmm2/m128. VUNPCKHPS xmm1,xmm2,xmm3/m128 VEX.NDS.128.0F.WIG 15 /r AVX Unpacks and Interleaves single-precision floating-point values from high quadwords of xmm2 and xmm3/m128. VUNPCKHPS ymm1,ymm2,ymm3/m256 VEX.NDS.256.0F.WIG 15 /r AVX Unpacks and Interleaves single-precision floating-point values from high quadwords of ymm2 and ymm3/m256. VUNPCKHPS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.0F.W0 15 /r AVX512VL AVX512F Unpacks and Interleaves single-precision floating-point values from high quadwords of xmm2 and xmm3/m128/m32bcst and write result to xmm1 subject to writemask k1. VUNPCKHPS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.0F.W0 15 /r AVX512VL AVX512F Unpacks and Interleaves single-precision floating-point values from high quadwords of ymm2 and ymm3/m256/m32bcst and write result to ymm1 subject to writemask k1. VUNPCKHPS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst EVEX.NDS.512.0F.W0 15 /r AVX512F Unpacks and Interleaves single-precision floating-point values from high quadwords of zmm2 and zmm3/m512/m32bcst and write result to zmm1 subject to writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA UNPCKLPD--Unpack and Interleave Low Packed Double-Precision Floating-Point Values. UNPCKLPD xmm1,xmm2/m128 66 0F 14 /r SSE2 Unpacks and Interleaves double-precision floating-point values from low quadwords of xmm1 and xmm2/m128. VUNPCKLPD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG 14 /r AVX Unpacks and Interleaves double-precision floating-point values from low quadwords of xmm2 and xmm3/m128. VUNPCKLPD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F.WIG 14 /r AVX Unpacks and Interleaves double-precision floating-point values from low quadwords of ymm2 and ymm3/m256. VUNPCKLPD xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F.W1 14 /r AVX512VL AVX512F Unpacks and Interleaves double precision floating-point values from low quadwords of xmm2 and xmm3/m128/m64bcst subject to write mask k1. VUNPCKLPD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F.W1 14 /r AVX512VL AVX512F Unpacks and Interleaves double precision floating-point values from low quadwords of ymm2 and ymm3/m256/m64bcst subject to write mask k1. VUNPCKLPD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.NDS.512.66.0F.W1 14 /r AVX512F Unpacks and Interleaves double-precision floating-point values from low quadwords of zmm2 and zmm3/m512/m64bcst subject to write mask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA UNPCKLPS--Unpack and Interleave Low Packed Single-Precision Floating-Point Values. UNPCKLPS xmm1,xmm2/m128 0F 14 /r SSE Unpacks and Interleaves single-precision floating-point values from low quadwords of xmm1 and xmm2/m128. VUNPCKLPS xmm1,xmm2,xmm3/m128 VEX.NDS.128.0F.WIG 14 /r AVX Unpacks and Interleaves single-precision floating-point values from low quadwords of xmm2 and xmm3/m128. ymm1,ymm2,ymm3/m256 void VEX.NDS.256.0F.WIG 14 /r VUNPCKLPS AVX Unpacks and Interleaves single-precision floating-point values from low quadwords of ymm2 and ymm3/m256. VUNPCKLPS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.0F.W0 14 /r AVX512VL AVX512F Unpacks and Interleaves single-precision floating-point values from low quadwords of xmm2 and xmm3/mem and write result to xmm1 subject to write mask k1. VUNPCKLPS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.0F.W0 14 /r AVX512VL AVX512F Unpacks and Interleaves single-precision floating-point values from low quadwords of ymm2 and ymm3/mem and write result to ymm1 subject to write mask k1. VUNPCKLPS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst EVEX.NDS.512.0F.W0 14 /r AVX512F Unpacks and Interleaves single-precision floating-point values from low quadwords of zmm2 and zmm3/m512/m32bcst and write result to zmm1 subject to write mask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA XORPD--Bitwise Logical XOR of Packed Double Precision Floating-Point Values. XORPD xmm1,xmm2/m128 66 0F 57/r SSE2 Return the bitwise logical XOR of packed doubleprecision floating-point values in xmm1 and xmm2/mem. VXORPD xmm1,xmm2,xmm3/m128 VEX.NDS.128.66.0F.WIG 57 /r AVX Return the bitwise logical XOR of packed doubleprecision floating-point values in xmm2 and xmm3/mem. VXORPD ymm1,ymm2,ymm3/m256 VEX.NDS.256.66.0F.WIG 57 /r AVX Return the bitwise logical XOR of packed doubleprecision floating-point values in ymm2 and ymm3/mem. VXORPD xmm1 {k1}{z},xmm2,xmm3/m128/m64bcst EVEX.NDS.128.66.0F.W1 57 /r AVX512VL AVX512DQ Return the bitwise logical XOR of packed doubleprecision floating-point values in xmm2 and xmm3/m128/m64bcst subject to writemask k1. VXORPD ymm1 {k1}{z},ymm2,ymm3/m256/m64bcst EVEX.NDS.256.66.0F.W1 57 /r AVX512VL AVX512DQ Return the bitwise logical XOR of packed doubleprecision floating-point values in ymm2 and ymm3/m256/m64bcst subject to writemask k1. VXORPD zmm1 {k1}{z},zmm2,zmm3/m512/m64bcst EVEX.NDS.512.66.0F.W1 57 /r AVX512DQ Return the bitwise logical XOR of packed doubleprecision floating-point values in zmm2 and zmm3/m512/m64bcst subject to writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv(r) ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA XORPS--Bitwise Logical XOR of Packed Single Precision Floating-Point Values. XORPS xmm1,xmm2/m128 0F 57 /r SSE Return the bitwise logical XOR of packed singleprecision floating-point values in xmm1 and xmm2/mem. VXORPS xmm1,xmm2,xmm3/m128 VEX.NDS.128.0F.WIG 57 /r AVX Return the bitwise logical XOR of packed singleprecision floating-point values in xmm2 and xmm3/mem. VXORPS ymm1,ymm2,ymm3/m256 VEX.NDS.256.0F.WIG 57 /r AVX Return the bitwise logical XOR of packed singleprecision floating-point values in ymm2 and ymm3/mem. VXORPS xmm1 {k1}{z},xmm2,xmm3/m128/m32bcst EVEX.NDS.128.0F.W0 57 /r AVX512VL AVX512DQ Return the bitwise logical XOR of packed singleprecision floating-point values in xmm2 and xmm3/m128/m32bcst subject to writemask k1. VXORPS ymm1 {k1}{z},ymm2,ymm3/m256/m32bcst EVEX.NDS.256.0F.W0 57 /r AVX512VL AVX512DQ Return the bitwise logical XOR of packed singleprecision floating-point values in ymm2 and ymm3/m256/m32bcst subject to writemask k1. VXORPS zmm1 {k1}{z},zmm2,zmm3/m512/m32bcst EVEX.NDS.512.0F.W0 57 /r AVX512DQ Return the bitwise logical XOR of packed singleprecision floating-point values in zmm2 and zmm3/m512/m32bcst subject to writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA ModRM:reg(w) VEX.vvvv ModRM:r/m(r) NA ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA KADDW/KADDB/KADDQ/KADDD--ADD Two Masks. KADDW k1,k2,k3 VEX.L1.0F.W0 4A /r AVX512DQ Add 16 bits masks in k2 and k3 and place result in k1. KADDB k1,k2,k3 VEX.L1.66.0F.W0 4A /r AVX512DQ Add 8 bits masks in k2 and k3 and place result in k1. KADDQ k1,k2,k3 VEX.L1.0F.W1 4A /r AVX512BW Add 64 bits masks in k2 and k3 and place result in k1. KADDD k1,k2,k3 VEX.L1.66.0F.W1 4A /r AVX512BW Add 32 bits masks in k2 and k3 and place result in k1. ModRM:reg(w) VEX.1vvv(r) ModRM:r/m(r, ModRM:[7:6] must be 11b) NA KANDW/KANDB/KANDQ/KANDD--Bitwise Logical AND Masks. KANDW k1,k2,k3 VEX.NDS.L1.0F.W0 41 /r AVX512F Bitwise AND 16 bits masks k2 and k3 and place result in k1. KANDB k1,k2,k3 VEX.L1.66.0F.W0 41 /r AVX512DQ Bitwise AND 8 bits masks k2 and k3 and place result in k1. KANDQ k1,k2,k3 VEX.L1.0F.W1 41 /r AVX512BW Bitwise AND 64 bits masks k2 and k3 and place result in k1. KANDD k1,k2,k3 VEX.L1.66.0F.W1 41 /r AVX512BW Bitwise AND 32 bits masks k2 and k3 and place result in k1. ModRM:reg(w) VEX.1vvv(r) ModRM:r/m(r, ModRM:[7:6] must be 11b) NA KANDNW/KANDNB/KANDNQ/KANDND--Bitwise Logical AND NOT Masks. KANDNW k1,k2,k3 VEX.NDS.L1.0F.W0 42 /r AVX512F Bitwise AND NOT 16 bits masks k2 and k3 and place result in k1. KANDNB k1,k2,k3 VEX.L1.66.0F.W0 42 /r AVX512DQ Bitwise AND NOT 8 bits masks k1 and k2 and place result in k1. KANDNQ k1,k2,k3 VEX.L1.0F.W1 42 /r AVX512BW Bitwise AND NOT 64 bits masks k2 and k3 and place result in k1. KANDND k1,k2,k3 VEX.L1.66.0F.W1 42 /r AVX512BW Bitwise AND NOT 32 bits masks k2 and k3 and place result in k1. ModRM:reg(w) VEX.1vvv(r) ModRM:r/m(r, ModRM:[7:6] must be 11b) NA KMOVW/KMOVB/KMOVQ/KMOVD--Move from and to Mask Registers. KMOVW k1,k2/m16 VEX.L0.0F.W0 90 /r AVX512F Move 16 bits mask from k2/m16 and store the result in k1. KMOVB k1,k2/m8 VEX.L0.66.0F.W0 90 /r AVX512DQ Move 8 bits mask from k2/m8 and store the result in k1. KMOVQ k1,k2/m64 VEX.L0.0F.W1 90 /r AVX512BW Move 64 bits mask from k2/m64 and store the result in k1. KMOVD k1,k2/m32 VEX.L0.66.0F.W1 90 /r AVX512BW Move 32 bits mask from k2/m32 and store the result in k1. KMOVW m16,k1 VEX.L0.0F.W0 91 /r AVX512F Move 16 bits mask from k1 and store the result in m16. KMOVB m8,k1 VEX.L0.66.0F.W0 91 /r AVX512DQ Move 8 bits mask from k1 and store the result in m8. KMOVQ m64,k1 VEX.L0.0F.W1 91 /r AVX512BW Move 64 bits mask from k1 and store the result in m64. KMOVD m32,k1 VEX.L0.66.0F.W1 91 /r AVX512BW Move 32 bits mask from k1 and store the result in m32. KMOVW k1,r32 VEX.L0.0F.W0 92 /r AVX512F Move 16 bits mask from r32 to k1. KMOVB k1,r32 VEX.L0.66.0F.W0 92 /r AVX512DQ Move 8 bits mask from r32 to k1. KMOVQ k1,r64 VEX.L0.F2.0F.W1 92 /r AVX512BW Move 64 bits mask from r64 to k1. KMOVD k1,r32 VEX.L0.F2.0F.W0 92 /r AVX512BW Move 32 bits mask from r32 to k1. KMOVW r32,k1 VEX.L0.0F.W0 93 /r AVX512F Move 16 bits mask from k1 to r32. KMOVB r32,k1 VEX.L0.66.0F.W0 93 /r AVX512DQ Move 8 bits mask from k1 to r32. KMOVQ r64,k1 VEX.L0.F2.0F.W1 93 /r AVX512BW Move 64 bits mask from k1 to r64. KMOVD r32,k1 VEX.L0.F2.0F.W0 93 /r AVX512BW Move 32 bits mask from k1 to r32. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:r/m(w, ModRM:[7:6] must not be 11b) ModRM:reg(r) NA NA ModRM:reg(w) ModRM:r/m(r, ModRM:[7:6] must be 11b) NA NA KUNPCKBW/KUNPCKWD/KUNPCKDQ--Unpack for Mask Registers. KUNPCKBW k1,k2,k3 VEX.NDS.L1.66.0F.W0 4B /r AVX512F Unpack and interleave 8 bits masks in k2 and k3 and write word result in k1. KUNPCKWD k1,k2,k3 VEX.NDS.L1.0F.W0 4B /r AVX512BW Unpack and interleave 16 bits in k2 and k3 and write doubleword result in k1. KUNPCKDQ k1,k2,k3 VEX.NDS.L1.0F.W1 4B /r AVX512BW Unpack and interleave 32 bits masks in k2 and k3 and write quadword result in k1. ModRM:reg(w) VEX.1vvv(r) ModRM:r/m(r, ModRM:[7:6] must be 11b) NA KNOTW/KNOTB/KNOTQ/KNOTD--NOT Mask Register. KNOTW k1,k2 VEX.L0.0F.W0 44 /r AVX512F Bitwise NOT of 16 bits mask k2. KNOTB k1,k2 VEX.L0.66.0F.W0 44 /r AVX512DQ Bitwise NOT of 8 bits mask k2. KNOTQ k1,k2 VEX.L0.0F.W1 44 /r AVX512BW Bitwise NOT of 64 bits mask k2. KNOTD k1,k2 VEX.L0.66.0F.W1 44 /r AVX512BW Bitwise NOT of 32 bits mask k2. ModRM:reg(w) ModRM:r/m(r, ModRM:[7:6] must be 11b) NA NA KORW/KORB/KORQ/KORD--Bitwise Logical OR Masks. KORW k1,k2,k3 VEX.NDS.L1.0F.W0 45 /r AVX512F Bitwise OR 16 bits masks k2 and k3 and place result in k1. KORB k1,k2,k3 VEX.L1.66.0F.W0 45 /r AVX512DQ Bitwise OR 8 bits masks k2 and k3 and place result in k1. KORQ k1,k2,k3 VEX.L1.0F.W1 45 /r AVX512BW Bitwise OR 64 bits masks k2 and k3 and place result in k1. KORD k1,k2,k3 VEX.L1.66.0F.W1 45 /r AVX512BW Bitwise OR 32 bits masks k2 and k3 and place result in k1. ModRM:reg(w) VEX.1vvv(r) ModRM:r/m(r, ModRM:[7:6] must be 11b) NA KORTESTW/KORTESTB/KORTESTQ/KORTESTD--OR Masks And Set Flags. KORTESTW k1,k2 VEX.L0.0F.W0 98 /r AVX512F Bitwise OR 16 bits masks k1 and k2 and update ZF and CF accordingly. KORTESTB k1,k2 VEX.L0.66.0F.W0 98 /r AVX512DQ Bitwise OR 8 bits masks k1 and k2 and update ZF and CF accordingly. KORTESTQ k1,k2 VEX.L0.0F.W1 98 /r AVX512BW Bitwise OR 64 bits masks k1 and k2 and update ZF and CF accordingly. KORTESTD k1,k2 VEX.L0.66.0F.W1 98 /r AVX512BW Bitwise OR 32 bits masks k1 and k2 and update ZF and CF accordingly. ModRM:reg(w) ModRM:r/m(r, ModRM:[7:6] must be 11b) NA NA KSHIFTLW/KSHIFTLB/KSHIFTLQ/KSHIFTLD--Shift Left Mask Registers. KSHIFTLW k1,k2,imm8 VEX.L0.66.0F3A.W1 32 /r AVX512F Shift left 16 bits in k2 by immediate and write result in k1. KSHIFTLB k1,k2,imm8 VEX.L0.66.0F3A.W0 32 /r AVX512DQ Shift left 8 bits in k2 by immediate and write result in k1. KSHIFTLQ k1,k2,imm8 VEX.L0.66.0F3A.W1 33 /r AVX512BW Shift left 64 bits in k2 by immediate and write result in k1. KSHIFTLD k1,k2,imm8 VEX.L0.66.0F3A.W0 33 /r AVX512BW Shift left 32 bits in k2 by immediate and write result in k1. ModRM:reg(w) ModRM:r/m(r, ModRM:[7:6] must be 11b) Imm8 NA KSHIFTRW/KSHIFTRB/KSHIFTRQ/KSHIFTRD--Shift Right Mask Registers. KSHIFTRW k1,k2,imm8 VEX.L0.66.0F3A.W1 30 /r AVX512F Shift right 16 bits in k2 by immediate and write result in k1. KSHIFTRB k1,k2,imm8 VEX.L0.66.0F3A.W0 30 /r AVX512DQ Shift right 8 bits in k2 by immediate and write result in k1. KSHIFTRQ k1,k2,imm8 VEX.L0.66.0F3A.W1 31 /r AVX512BW Shift right 64 bits in k2 by immediate and write result in k1. KSHIFTRD k1,k2,imm8 VEX.L0.66.0F3A.W0 31 /r AVX512BW Shift right 32 bits in k2 by immediate and write result in k1. ModRM:reg(w) ModRM:r/m(r, ModRM:[7:6] must be 11b) Imm8 NA KXNORW/KXNORB/KXNORQ/KXNORD--Bitwise Logical XNOR Masks. KXNORW k1,k2,k3 VEX.NDS.L1.0F.W0 46 /r AVX512F Bitwise XNOR 16 bits masks k2 and k3 and place result in k1. KXNORB k1,k2,k3 VEX.L1.66.0F.W0 46 /r AVX512DQ Bitwise XNOR 8 bits masks k2 and k3 and place result in k1. KXNORQ k1,k2,k3 VEX.L1.0F.W1 46 /r AVX512BW Bitwise XNOR 64 bits masks k2 and k3 and place result in k1. KXNORD k1,k2,k3 VEX.L1.66.0F.W1 46 /r AVX512BW Bitwise XNOR 32 bits masks k2 and k3 and place result in k1. ModRM:reg(w) VEX.1vvv(r) ModRM:r/m(r, ModRM:[7:6] must be 11b) NA KTESTW/KTESTB/KTESTQ/KTESTD--Packed Bit Test Masks and Set Flags. RR KTESTW k1,k2 VEX.L0.0F.W0 99 /r AVX512DQ Set ZF and CF depending on sign bit AND and ANDN of 16 bits mask register sources. RR KTESTB k1,k2 VEX.L0.66.0F.W0 99 /r AVX512DQ Set ZF and CF depending on sign bit AND and ANDN of 8 bits mask register sources. RR KTESTQ k1,k2 VEX.L0.0F.W1 99 /r AVX512BW Set ZF and CF depending on sign bit AND and ANDN of 64 bits mask register sources. RR KTESTD k1,k2 VEX.L0.66.0F.W1 99 /r AVX512BW Set ZF and CF depending on sign bit AND and ANDN of 32 bits mask register sources. ModRM:reg(r) ModRM:r/m(r, ModRM:[7:6] must be 11b) NA NA KXORW/KXORB/KXORQ/KXORD--Bitwise Logical XOR Masks. KXORW k1,k2,k3 VEX.NDS.L1.0F.W0 47 /r AVX512F Bitwise XOR 16 bits masks k2 and k3 and place result in k1. KXORB k1,k2,k3 VEX.L1.66.0F.W0 47 /r AVX512DQ Bitwise XOR 8 bits masks k2 and k3 and place result in k1. KXORQ k1,k2,k3 VEX.L1.0F.W1 47 /r AVX512BW Bitwise XOR 64 bits masks k2 and k3 and place result in k1. KXORD k1,k2,k3 VEX.L1.66.0F.W1 47 /r AVX512BW Bitwise XOR 32 bits masks k2 and k3 and place result in k1. ModRM:reg(w) VEX.1vvv(r) ModRM:r/m(r, ModRM:[7:6] must be 11b) NA VEXP2PD--Approximation to the Exponential 2^x of Packed Double-Precision Floating-Point Values with Less Than 2^-23 Relative Error. VEXP2PD zmm1 {k1}{z},zmm2/m512/m64bcst {sae} EVEX.512.66.0F38.W1 C8 /r AVX512ER Computes approximations to the exponential 2^x (with less than 2^-23 of maximum relative error) of the packed doubleprecision floating-point values from zmm2/m512/m64bcst and stores the floating-point result in zmm1with writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA VEXP2PS--Approximation to the Exponential 2^x of Packed Single-Precision Floating-Point Values with Less Than 2^-23 Relative Error. VEXP2PS zmm1 {k1}{z},zmm2/m512/m32bcst {sae} EVEX.512.66.0F38.W0 C8 /r AVX512ER Computes approximations to the exponential 2^x (with less than 2^-23 of maximum relative error) of the packed singleprecision floating-point values from zmm2/m512/m32bcst and stores the floating-point result in zmm1with writemask k1. ModRM:reg(r,w) ModRM:r/m(r) NA NA VRCP28PD--Approximation to the Reciprocal of Packed Double-Precision Floating-Point Values with Less Than 2^-28 Relative Error. VRCP28PD zmm1 {k1}{z},zmm2/m512/m64bcst {sae} EVEX.512.66.0F38.W1 CA /r AVX512ER Computes the approximate reciprocals ( < 2^-28 relative error) of the packed double-precision floating-point values in zmm2/m512/m64bcst and stores the results in zmm1. Under writemask. ModRM:reg(w) ModRM:r/m(r) NA NA VRCP28SD--Approximation to the Reciprocal of Scalar Double-Precision Floating-Point Value with Less Than 2^-28 Relative Error. VRCP28SD xmm1 {k1}{z},xmm2,xmm3/m64 {sae} EVEX.NDS.LIG.66.0F38.W1 CB /r AVX512ER Computes the approximate reciprocal ( < 2^-28 relative error) of the scalar double-precision floating-point value in xmm3/m64 and stores the results in xmm1. Under writemask. Also, upper double-precision floating-point value (bits[127:64]) from xmm2 is copied to xmm1[127:64]. ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA VRCP28PS--Approximation to the Reciprocal of Packed Single-Precision Floating-Point Values with Less Than 2^-28 Relative Error. VRCP28PS zmm1 {k1}{z},zmm2/m512/m32bcst {sae} EVEX.512.66.0F38.W0 CA /r AVX512ER Computes the approximate reciprocals ( < 2^-28 relative error) of the packed single-precision floating-point values in zmm2/m512/m32bcst and stores the results in zmm1. Under writemask. ModRM:reg(w) ModRM:r/m(r) NA NA VRCP28SS--Approximation to the Reciprocal of Scalar Single-Precision Floating-Point Value with Less Than 2^-28 Relative Error. VRCP28SS xmm1 {k1}{z},xmm2,xmm3/m32 {sae} EVEX.NDS.LIG.66.0F38.W0 CB /r AVX512ER Computes the approximate reciprocal ( < 2^-28 relative error) of the scalar single-precision floating-point value in xmm3/m32 and stores the results in xmm1. Under writemask. Also, upper 3 single-precision floating-point values (bits[127:32]) from xmm2 is copied to xmm1[127:32]. ModRM:reg(w) EVEX.vvvv ModRM:r/m(r) NA VRSQRT28PD--Approximation to the Reciprocal Square Root of Packed Double-Precision Floating-Point Values with Less Than 2^-28 Relative Error. VRSQRT28PD zmm1 {k1}{z},zmm2/m512/m64bcst {sae} EVEX.512.66.0F38.W1 CC /r AVX512ER Computes approximations to the Reciprocal square root (<2^28 relative error) of the packed double-precision floating-point values from zmm2/m512/m64bcst and stores result in zmm1with writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA VRSQRT28SD--Approximation to the Reciprocal Square Root of Scalar Double-Precision Floating-Point Value with Less Than 2^-28 Relative Error. VRSQRT28SD xmm1 {k1}{z},xmm2,xmm3/m64 {sae} EVEX.NDS.LIG.66.0F38.W1 CD /r AVX512ER Computes approximate reciprocal square root (<2^-28 relative error) of the scalar double-precision floating-point value from xmm3/m64 and stores result in xmm1with writemask k1. Also, upper double-precision floating-point value (bits[127:64]) from xmm2 is copied to xmm1[127:64]. ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA VRSQRT28PS--Approximation to the Reciprocal Square Root of Packed Single-Precision Floating-Point Values with Less Than 2^-28 Relative Error. VRSQRT28PS zmm1 {k1}{z},zmm2/m512/m32bcst {sae} EVEX.512.66.0F38.W0 CC /r AVX512ER Computes approximations to the Reciprocal square root (<2^-28 relative error) of the packed single-precision floating-point values from zmm2/m512/m32bcst and stores result in zmm1with writemask k1. ModRM:reg(w) ModRM:r/m(r) NA NA VRSQRT28SS--Approximation to the Reciprocal Square Root of Scalar Single-Precision Floating-Point Value with Less Than 2^-28 Relative Error. VRSQRT28SS xmm1 {k1}{z},xmm2,xmm3/m32 {sae} EVEX.NDS.LIG.66.0F38.W0 CD /r AVX512ER Computes approximate reciprocal square root (<2^-28 relative error) of the scalar single-precision floating-point value from xmm3/m32 and stores result in xmm1with writemask k1. Also, upper 3 single-precision floating-point value (bits[127:32]) from xmm2 is copied to xmm1[127:32]. ModRM:reg(w) EVEX.vvvv(r) ModRM:r/m(r) NA VGATHERPF0DPS/VGATHERPF0QPS/VGATHERPF0DPD/VGATHERPF0QPD--Sparse Prefetch Packed SP/DP Data Values with Signed Dword, Signed Qword Indices Using T0 Hint. VGATHERPF0DPS vm32z {k1} EVEX.512.66.0F38.W0 C6 /1 /vsib AVX512PF Using signed dword indices, prefetch sparse byte memory locations containing single-precision data using opmask k1 and T0 hint. VGATHERPF0QPS vm64z {k1} EVEX.512.66.0F38.W0 C7 /1 /vsib AVX512PF Using signed qword indices, prefetch sparse byte memory locations containing single-precision data using opmask k1 and T0 hint. VGATHERPF0DPD vm32y {k1} EVEX.512.66.0F38.W1 C6 /1 /vsib AVX512PF Using signed dword indices, prefetch sparse byte memory locations containing double-precision data using opmask k1 and T0 hint. VGATHERPF0QPD vm64z {k1} EVEX.512.66.0F38.W1 C7 /1 /vsib AVX512PF Using signed qword indices, prefetch sparse byte memory locations containing double-precision data using opmask k1 and T0 hint. BaseReg(R): VSIB:base,VectorReg(R): VSIB:index NA NA NA VGATHERPF1DPS/VGATHERPF1QPS/VGATHERPF1DPD/VGATHERPF1QPD--Sparse Prefetch Packed SP/DP Data Values with Signed Dword, Signed Qword Indices Using T1 Hint. VGATHERPF1DPS vm32z {k1} EVEX.512.66.0F38.W0 C6 /2 /vsib AVX512PF Using signed dword indices, prefetch sparse byte memory locations containing single-precision data using opmask k1 and T1 hint. VGATHERPF1QPS vm64z {k1} EVEX.512.66.0F38.W0 C7 /2 /vsib AVX512PF Using signed qword indices, prefetch sparse byte memory locations containing single-precision data using opmask k1 and T1 hint. VGATHERPF1DPD vm32y {k1} EVEX.512.66.0F38.W1 C6 /2 /vsib AVX512PF Using signed dword indices, prefetch sparse byte memory locations containing double-precision data using opmask k1 and T1 hint. VGATHERPF1QPD vm64z {k1} EVEX.512.66.0F38.W1 C7 /2 /vsib AVX512PF Using signed qword indices, prefetch sparse byte memory locations containing double-precision data using opmask k1 and T1 hint. BaseReg(R): VSIB:base,VectorReg(R):VSIB:index NA NA NA VSCATTERPF0DPS/VSCATTERPF0QPS/VSCATTERPF0DPD/VSCATTERPF0QPD--Sparse Prefetch Packed SP/DP Data Values with Signed Dword, Signed Qword Indices Using T0 Hint with Intent to Write. VSCATTERPF0DPS vm32z {k1} EVEX.512.66.0F38.W0 C6 /5 /vsib AVX512PF Using signed dword indices, prefetch sparse byte memory locations containing single-precision data using writemask k1 and T0 hint with intent to write. VSCATTERPF0QPS vm64z {k1} EVEX.512.66.0F38.W0 C7 /5 /vsib AVX512PF Using signed qword indices, prefetch sparse byte memory locations containing single-precision data using writemask k1 and T0 hint with intent to write. VSCATTERPF0DPD vm32y {k1} EVEX.512.66.0F38.W1 C6 /5 /vsib AVX512PF Using signed dword indices, prefetch sparse byte memory locations containing double-precision data using writemask k1 and T0 hint with intent to write. VSCATTERPF0QPD vm64z {k1} EVEX.512.66.0F38.W1 C7 /5 /vsib AVX512PF Using signed qword indices, prefetch sparse byte memory locations containing double-precision data using writemask k1 and T0 hint with intent to write. BaseReg(R): VSIB:base,VectorReg(R): VSIB:index NA NA NA VSCATTERPF1DPS/VSCATTERPF1QPS/VSCATTERPF1DPD/VSCATTERPF1QPD--Sparse Prefetch Packed SP/DP Data Values with Signed Dword, Signed Qword Indices Using T1 Hint with Intent to Write. VSCATTERPF1DPS vm32z {k1} EVEX.512.66.0F38.W0 C6 /6 /vsib AVX512PF Using signed dword indices, prefetch sparse byte memory locations containing single-precision data using writemask k1 and T1 hint with intent to write. VSCATTERPF1QPS vm64z {k1} EVEX.512.66.0F38.W0 C7 /6 /vsib AVX512PF Using signed qword indices, prefetch sparse byte memory locations containing single-precision data using writemask k1 and T1 hint with intent to write. VSCATTERPF1DPD vm32y {k1} EVEX.512.66.0F38.W1 C6 /6 /vsib AVX512PF Using signed dword indices, prefetch sparse byte memory locations containing double-precision data using writemask k1 and T1 hint with intent to write. VSCATTERPF1QPD vm64z {k1} EVEX.512.66.0F38.W1 C7 /6 /vsib AVX512PF Using signed qword indices, prefetch sparse byte memory locations containing double-precision data using writemask k1 and T1 hint with intent to write. BaseReg(R): VSIB:base,VectorReg(R): VSIB:index NA NA NA SHA1RNDS4--Perform Four Rounds of SHA1 Operation. SHA1RNDS4 xmm1,xmm2/m128,imm8 0F 3A CC /r ib SHA Performs four rounds of SHA1 operation operating on SHA1 state (A,B,C,D) from xmm1, with a pre-computed sum of the next 4 round message dwords and state variable E from xmm2/m128. The immediate byte controls logic functions and round constants. ModRM:reg(r,w) ModRM:r/m(r) Imm8 NA SHA1NEXTE--Calculate SHA1 State Variable E after Four Rounds. SHA1NEXTE xmm1,xmm2/m128 0F 38 C8 /r SHA Calculates SHA1 state variable E after four rounds of operation from the current SHA1 state variable A in xmm1. The calculated value of the SHA1 state variable E is added to the scheduled dwords in xmm2/m128, and stored with some of the scheduled dwords in xmm1. ModRM:reg(r,w) ModRM:r/m(r) NA NA SHA1MSG1--Perform an Intermediate Calculation for the Next Four SHA1 Message Dwords. SHA1MSG1 xmm1,xmm2/m128 0F 38 C9 /r SHA Performs an intermediate calculation for the next four SHA1 message dwords using previous message dwords from xmm1 and xmm2/m128, storing the result in xmm1. ModRM:reg(r,w) ModRM:r/m(r) NA NA SHA1MSG2--Perform a Final Calculation for the Next Four SHA1 Message Dwords. SHA1MSG2 xmm1,xmm2/m128 0F 38 CA /r SHA Performs the final calculation for the next four SHA1 message dwords using intermediate results from xmm1 and the previous message dwords from xmm2/m128, storing the result in xmm1. ModRM:reg(r,w) ModRM:r/m(r) NA NA SHA256RNDS2--Perform Two Rounds of SHA256 Operation. SHA256RNDS2 xmm1,xmm2/m128,<XMM0> 0F 38 CB /r SHA Perform 2 rounds of SHA256 operation using an initial SHA256 state (C,D,G,H) from xmm1, an initial SHA256 state (A,B,E,F) from xmm2/m128, and a pre-computed sum of the next 2 round message dwords and the corresponding round constants from the implicit operand XMM0, storing the updated SHA256 state (A,B,E,F) result in xmm1. ModRM:reg(r,w) ModRM:r/m(r) Implicit XMM0(r) NA SHA256MSG1--Perform an Intermediate Calculation for the Next Four SHA256 Message Dwords. SHA256MSG1 xmm1,xmm2/m128 0F 38 CC /r SHA Performs an intermediate calculation for the next four SHA256 message dwords using previous message dwords from xmm1 and xmm2/m128, storing the result in xmm1. ModRM:reg(r,w) ModRM:r/m(r) NA NA SHA256MSG2--Perform a Final Calculation for the Next Four SHA256 Message Dwords. SHA256MSG2 xmm1,xmm2/m128 0F 38 CD /r SHA Performs the final calculation for the next four SHA256 message dwords using previous message dwords from xmm1 and xmm2/m128, storing the result in xmm1. ModRM:reg(r,w) ModRM:r/m(r) NA NA BNDMK--Make Bounds. BNDMK bnd,m32 F3 0F 1B /r MPX Make lower and upper bounds from m32 and store them in bnd. BNDMK bnd,m64 F3 0F 1B /r MPX Make lower and upper bounds from m64 and store them in bnd. ModRM:reg(w) ModRM:r/m(r) NA NA BNDCL--Check Lower Bound. BNDCL bnd,r/m32 F3 0F 1A /r MPX Generate a #BR if the address in r/m32 is lower than the lower bound in bnd.LB. BNDCL bnd,r/m64 F3 0F 1A /r MPX Generate a #BR if the address in r/m64 is lower than the lower bound in bnd.LB. ModRM:reg(w) ModRM:r/m(r) NA NA BNDCU/BNDCN--Check Upper Bound. BNDCU bnd,r/m32 F2 0F 1A /r MPX Generate a #BR if the address in r/m32 is higher than the upper bound in bnd.UB (bnb.UB in 1's complement form). BNDCU bnd,r/m64 F2 0F 1A /r MPX Generate a #BR if the address in r/m64 is higher than the upper bound in bnd.UB (bnb.UB in 1's complement form). BNDCN bnd,r/m32 F2 0F 1B /r MPX Generate a #BR if the address in r/m32 is higher than the upper bound in bnd.UB (bnb.UB not in 1's complement form). BNDCN bnd,r/m64 F2 0F 1B /r MPX Generate a #BR if the address in r/m64 is higher than the upper bound in bnd.UB (bnb.UB not in 1's complement form). ModRM:reg(w) ModRM:r/m(r) NA NA BNDMOV--Move Bounds. BNDMOV bnd1,bnd2/m64 66 0F 1A /r MPX Move lower and upper bound from bnd2/m64 to bound register bnd1. BNDMOV bnd1,bnd2/m128 66 0F 1A /r MPX Move lower and upper bound from bnd2/m128 to bound register bnd1. BNDMOV bnd1/m64,bnd2 66 0F 1B /r MPX Move lower and upper bound from bnd2 to bnd1/m64. BNDMOV bnd1/m128,bnd2 66 0F 1B /r MPX Move lower and upper bound from bnd2 to bound register bnd1/m128. ModRM:reg(w) ModRM:r/m(r) NA NA ModRM:r/m(w) ModRM:reg(r) NA NA BNDLDX--Load Extended Bounds Using Address Translation. BNDLDX bnd,mib 0F 1A /r MPX Load the bounds stored in a bound table entry (BTE) into bnd with address translation using the base of mib and conditional on the index of mib matching the pointer value in the BTE. ModRM:reg(w) SIB.base(r): Address of pointer,SIB.index(r) NA NA BNDSTX--Store Extended Bounds Using Address Translation. BNDSTX mib,bnd 0F 1B /r MPX Store the bounds in bnd and the pointer value in the index register of mib to a bound table entry (BTE) with address translation using the base of mib. SIB.base(r): Address of pointer,SIB.index(r) ModRM:reg(r) NA NA CLFLUSHOPT--Flush a Cache Line Optimized. CLFLUSHOPT m8 66 0F AE /7 CLFLUSHOPT Flushes cache line containing m8. ModRM:r/m(w) NA NA NA CLWB--Cache Line Write Back. CLWB m8 66 0F AE /6 CLWB Writes back modified cache line containing m8, and may retain the line in cache hierarchy in non-modified state. ModRM:r/m(w) NA NA NA PCOMMIT--Persistent Commit. PCOMMIT void 66 0F AE F8 PCOMMIT Commits stores to persistent memory. NA NA NA NA