| Index | Manual | Download | Source | Macros | Embedded word Case ins.
Sitemap | Links | Forum | Tests | Projects

# iiy.htm
Enumerations
IiyList
Instruction handlers
CLEVICT0 CLEVICT1 DELAY SPFLT TZCNTI VADDNPD VADDNPS VADDSETSPS VANDNPD VANDNPS VANDPD VANDPS VBLENDPD VBLENDPS VBLENDVPD VBLENDVPS VCVTFXPNTDQ2PS VCVTFXPNTPD2DQ VCVTFXPNTPD2UDQ VCVTFXPNTPS2DQ VCVTFXPNTPS2UDQ VCVTFXPNTUDQ2PS VEXP223PS VEXP2PD VEXP2PS VFIXUPNANPD VFIXUPNANPS VGMAXABSPS VGMAXPD VGMAXPS VGMINPD VGMINPS VLDDQU VLDMXCSR VLDQQU VLOADUNPACKHD VLOADUNPACKHPD VLOADUNPACKHPS VLOADUNPACKHQ VLOADUNPACKLD VLOADUNPACKLPD VLOADUNPACKLPS VLOADUNPACKLQ VLOG2PS VMASKMOVDQU VMASKMOVPD VMASKMOVPS VORPD VORPS VPACKSSDW VPACKSSWB VPACKSTOREHD VPACKSTOREHPD VPACKSTOREHPS VPACKSTOREHQ VPACKSTORELD VPACKSTORELPD VPACKSTORELPS VPACKSTORELQ VPACKUSDW VPACKUSWB VPADCD VPADDSETCD VPADDSETSD VPALIGNR VPAND VPANDD VPANDN VPANDND VPANDNQ VPANDQ VPAVGB VPAVGW VPBLENDD VPBLENDVB VPBLENDW VPBROADCASTMB2Q VPBROADCASTMW2D VPCMPB VPCMPD VPCMPEQB VPCMPEQD VPCMPEQQ VPCMPEQUB VPCMPEQUD VPCMPEQUQ VPCMPEQUW VPCMPEQW VPCMPFALSEB VPCMPFALSED VPCMPFALSEQ VPCMPFALSEUB VPCMPFALSEUD VPCMPFALSEUQ VPCMPFALSEUW VPCMPFALSEW VPCMPGTB VPCMPGTD VPCMPGTQ VPCMPGTW VPCMPLEB VPCMPLED VPCMPLEQ VPCMPLEUB VPCMPLEUD VPCMPLEUQ VPCMPLEUW VPCMPLEW VPCMPLTB VPCMPLTD VPCMPLTQ VPCMPLTUB VPCMPLTUD VPCMPLTUQ VPCMPLTUW VPCMPLTW VPCMPNEQB VPCMPNEQD VPCMPNEQQ VPCMPNEQUB VPCMPNEQUD VPCMPNEQUQ VPCMPNEQUW VPCMPNEQW VPCMPNLEB VPCMPNLED VPCMPNLEQ VPCMPNLEUB VPCMPNLEUD VPCMPNLEUQ VPCMPNLEUW VPCMPNLEW VPCMPNLTB VPCMPNLTD VPCMPNLTQ VPCMPNLTUB VPCMPNLTUD VPCMPNLTUQ VPCMPNLTUW VPCMPNLTW VPCMPQ VPCMPTRUEB VPCMPTRUED VPCMPTRUEQ VPCMPTRUEUB VPCMPTRUEUD VPCMPTRUEUQ VPCMPTRUEUW VPCMPTRUEW VPCMPUB VPCMPUD VPCMPUQ VPCMPUW VPCMPW VPCONFLICTD VPCONFLICTQ VPERM2F128 VPERM2I128 VPERMB VPERMD VPERMF32X4 VPERMI2B VPERMI2D VPERMI2PD VPERMI2PS VPERMI2Q VPERMI2W VPERMILPD VPERMILPS VPERMPD VPERMPS VPERMQ VPERMT2B VPERMT2D VPERMT2PD VPERMT2PS VPERMT2Q VPERMT2W VPERMW VPHADDD VPHADDSW VPHADDW VPHSUBD VPHSUBSW VPHSUBW VPLZCNTD VPLZCNTQ VPMADD231D VPMADD233D VPMADD52HUQ VPMADD52LUQ VPMADDUBSW VPMASKMOVD VPMASKMOVQ VPMOVB2M VPMOVD2M VPMOVDB VPMOVDW VPMOVM2B VPMOVM2D VPMOVM2Q VPMOVM2W VPMOVMSKB VPMOVQ2M VPMOVQB VPMOVQD VPMOVQW VPMOVSDB VPMOVSDW VPMOVSQB VPMOVSQD VPMOVSQW VPMOVSWB VPMOVSXBD VPMOVSXBQ VPMOVSXBW VPMOVSXDQ VPMOVSXWD VPMOVSXWQ VPMOVUSDB VPMOVUSDW VPMOVUSQB VPMOVUSQD VPMOVUSQW VPMOVUSWB VPMOVW2M VPMOVWB VPMOVZXBD VPMOVZXBQ VPMOVZXBW VPMOVZXDQ VPMOVZXWD VPMOVZXWQ VPMULDQ VPMULHD VPMULHRSW VPMULHUD VPMULHUW VPMULHW VPMULLD VPMULLQ VPMULLW VPMULTISHIFTQB VPOR VPORD VPORQ VPREFETCH0 VPREFETCH1 VPREFETCH2 VPREFETCHE0 VPREFETCHE1 VPREFETCHE2 VPREFETCHENTA VPREFETCHNTA VPROLD VPROLQ VPROLVD VPROLVQ VPRORD VPRORQ VPRORVD VPRORVQ VPSBBD VPSBBRD VPSUBRD VPSUBRSETBD VPSUBSETBD VPTERNLOGD VPTERNLOGQ VPTESTMB VPTESTMD VPTESTMQ VPTESTMW VPTESTNMB VPTESTNMD VPTESTNMQ VPTESTNMW VPUNPCKHBW VPUNPCKHDQ VPUNPCKHQDQ VPUNPCKHWD VPUNPCKLBW VPUNPCKLDQ VPUNPCKLQDQ VPUNPCKLWD VPXOR VPXORD VPXORQ VRANGEPD VRANGEPS VRANGESD VRANGESS VRCP14PD VRCP14PS VRCP14SD VRCP14SS VRCP23PS VRCP28PD VRCP28PS VRCP28SD VRCP28SS VRCPSS VREDUCEPD VREDUCEPS VREDUCESD VREDUCESS VRNDFXPNTPD VRNDFXPNTPS VRNDSCALEPD VRNDSCALEPS VRNDSCALESD VRNDSCALESS VROUNDPD VROUNDPS VROUNDSD VROUNDSS VRSQRT14PD VRSQRT14PS VRSQRT14SD VRSQRT14SS VRSQRT23PS VRSQRT28PD VRSQRT28PS VRSQRT28SD VRSQRT28SS VRSQRTPS VRSQRTSS VSCALEFPD VSCALEFPS VSCALEFSD VSCALEFSS VSCALEPS VSQRTPD VSQRTPS VSQRTSD VSQRTSS VSTMXCSR VSUBRPD VSUBRPS VUNPCKHPD VUNPCKHPS VUNPCKLPD VUNPCKLPS VXORPD VXORPS

↑ IiyHandlers
  assemble VEX-encodable AVX machine instructions.
See also
  IiHandlers, [IntelVol2] [IntelAVX512].

    iiy PROGRAM FORMAT=COFF,MODEL=FLAT,WIDTH=32,MAXPASSES=64
        INCLUDEHEAD euroasm.htm, \  Interface (structures, symbols and macros) of other modules used in this source.
                    ea.htm,eaopt.htm,exp.htm,ii.htm,msg.htm,pgm.htm,pgmopt.htm,sss.htm,stm.htm,sym.htm

    iiy HEAD ; Start of module interface.

↑ %IiyList
  enumerates machine instructions of this family which €ASM can assemble.
  Each instruction declared in `%IiyList` requires the corresponding handler in this file.
See also
  DictLookupIi

    %IiyList %SET \
    VANDPS, \
    VANDNPS, \
    VORPS, \
    VXORPS, \
    VANDPD, \
    VANDNPD, \
    VORPD, \
    VXORPD, \
    VSQRTSS, \
    VSQRTSD, \
    VSQRTPS, \
    VSQRTPD, \
    VRCP14SS, \
    VRCP14SD, \
    VRCP14PS, \
    VRCP14PD, \
    VRSQRT14SS, \
    VRSQRT14SD, \
    VRSQRT14PS, \
    VRSQRT14PD, \
    VRCP28SS, \
    VRCP28SD, \
    VRCP28PS, \
    VRCP28PD, \
    VRSQRT28SS, \
    VRSQRT28SD, \
    VRSQRT28PS, \
    VRSQRT28PD, \
    VEXP2PS, \
    VEXP2PD, \
    VPMOVUSWB, \
    VPMOVUSDB, \
    VPMOVUSQB, \
    VPMOVUSDW, \
    VPMOVUSQW, \
    VPMOVUSQD, \
    VPMOVSWB, \
    VPMOVSDB, \
    VPMOVSQB, \
    VPMOVSDW, \
    VPMOVSQW, \
    VPMOVSQD, \
    VPMOVWB, \
    VPMOVDB, \
    VPMOVQB, \
    VPMOVDW, \
    VPMOVQW, \
    VPMOVQD, \
    VPMOVSXBD, \
    VPMOVSXBQ, \
    VPMOVSXWD, \
    VPMOVSXWQ, \
    VPMOVSXDQ, \
    VPMOVSXBW, \
    VPMOVZXBW, \
    VPMOVZXBD, \
    VPMOVZXBQ, \
    VPMOVZXWD, \
    VPMOVZXWQ, \
    VPMOVZXDQ, \
    VPMULDQ, \
    VPMULHRSW, \
    VPMULHUW, \
    VPMULHW, \
    VPMULLD, \
    VPMULLQ, \
    VPMULLW, \
    VPAVGB, \
    VPAVGW, \
    VPMASKMOVD, \
    VPMASKMOVQ, \
    VMASKMOVPS, \
    VMASKMOVPD, \
    VMASKMOVDQU, \
    VPMOVMSKB, \
    VPBLENDW, \
    VPBLENDD, \
    VBLENDPS, \
    VBLENDPD, \
    VBLENDVPS, \
    VBLENDVPD, \
    VPBLENDVB, \
    VLDDQU, \
    VLDQQU, \
    VLDMXCSR, \
    VSTMXCSR, \
    VRSQRTSS, \
    VRCPSS, \
    VRSQRTPS, \
    VRCPPS, \
    VUNPCKLPS, \
    VUNPCKHPS, \
    VUNPCKLPD, \
    VUNPCKHPD, \
    VPUNPCKLBW, \
    VPUNPCKLWD, \
    VPUNPCKLDQ, \
    VPUNPCKLQDQ, \
    VPUNPCKHBW, \
    VPUNPCKHWD, \
    VPUNPCKHDQ, \
    VPUNPCKHQDQ, \
    VPACKSSWB, \
    VPACKSSDW, \
    VPACKUSWB, \
    VPACKUSDW, \
    VSCALEFSS, \
    VSCALEFSD, \
    VSCALEFPS, \
    VSCALEFPD, \
    VSCALEPS, \
    VRNDSCALESS, \
    VRNDSCALESD, \
    VRNDSCALEPS, \
    VRNDSCALEPD, \
    VROUNDSS, \
    VROUNDSD, \
    VROUNDPS, \
    VROUNDPD, \
    VPMADDUBSW, \
    VPMADD52LUQ, \
    VPMADD52HUQ, \
    VPHADDW, \
    VPHADDD, \
    VPHADDSW, \
    VPHSUBW, \
    VPHSUBD, \
    VPHSUBSW, \
    VPAND, \
    VPANDD, \
    VPANDQ, \
    VPOR, \
    VPORD, \
    VPORQ, \
    VPANDN, \
    VPANDND, \
    VPANDNQ, \
    VPXOR, \
    VPXORD, \
    VPXORQ, \
    VRANGESS, \
    VRANGESD, \
    VRANGEPS, \
    VRANGEPD, \
    VREDUCESS, \
    VREDUCESD, \
    VREDUCEPS, \
    VREDUCEPD, \
    VPRORVQ, \
    VPRORVD, \
    VPROLVD, \
    VPROLVQ, \
    VPRORD, \
    VPROLD, \
    VPRORQ, \
    VPROLQ, \
    VPERMI2B, \
    VPERMI2D, \
    VPERMI2Q, \
    VPERMI2PS, \
    VPERMI2PD, \
    VPERMI2W, \
    VPERMT2B, \
    VPERMT2W, \
    VPERMT2D, \
    VPERMT2Q, \
    VPERMT2PS, \
    VPERMT2PD, \
    VPERMB, \
    VPERMW, \
    VPERMD, \
    VPERMQ, \
    VPERMPS, \
    VPERMPD, \
    VPERMILPS, \
    VPERMILPD, \
    VPERM2F128, \
    VPERM2I128, \
    VPTESTMB, \
    VPTESTMW, \
    VPTESTMD, \
    VPTESTMQ, \
    VPTESTNMB, \
    VPTESTNMW, \
    VPTESTNMD, \
    VPTESTNMQ, \
    VPTERNLOGD, \
    VPTERNLOGQ, \
    VPALIGNR, \
    VPCMPB, \
    VPCMPUB, \
    VPCMPW, \
    VPCMPUW, \
    VPCMPD, \
    VPCMPUD, \
    VPCMPQ, \
    VPCMPUQ, \
    VPCMPEQB, \
    VPCMPLTB, \
    VPCMPLEB, \
    VPCMPFALSEB, \
    VPCMPNEQB, \
    VPCMPNLTB, \
    VPCMPNLEB, \
    VPCMPTRUEB, \
    VPCMPEQUB, \
    VPCMPLTUB, \
    VPCMPLEUB, \
    VPCMPFALSEUB, \
    VPCMPNEQUB, \
    VPCMPNLTUB, \
    VPCMPNLEUB, \
    VPCMPTRUEUB, \
    VPCMPEQW, \
    VPCMPLTW, \
    VPCMPLEW, \
    VPCMPFALSEW, \
    VPCMPNEQW, \
    VPCMPNLTW, \
    VPCMPNLEW, \
    VPCMPTRUEW, \
    VPCMPEQUW, \
    VPCMPLTUW, \
    VPCMPLEUW, \
    VPCMPFALSEUW, \
    VPCMPNEQUW, \
    VPCMPNLTUW, \
    VPCMPNLEUW, \
    VPCMPTRUEUW, \
    VPCMPEQD, \
    VPCMPLTD, \
    VPCMPLED, \
    VPCMPFALSED, \
    VPCMPNEQD, \
    VPCMPNLTD, \
    VPCMPNLED, \
    VPCMPTRUED, \
    VPCMPEQUD, \
    VPCMPLTUD, \
    VPCMPLEUD, \
    VPCMPFALSEUD, \
    VPCMPNEQUD, \
    VPCMPNLTUD, \
    VPCMPNLEUD, \
    VPCMPTRUEUD, \
    VPCMPEQQ, \
    VPCMPLTQ, \
    VPCMPLEQ, \
    VPCMPFALSEQ, \
    VPCMPNEQQ, \
    VPCMPNLTQ, \
    VPCMPNLEQ, \
    VPCMPTRUEQ, \
    VPCMPEQUQ, \
    VPCMPLTUQ, \
    VPCMPLEUQ, \
    VPCMPFALSEUQ, \
    VPCMPNEQUQ, \
    VPCMPNLTUQ, \
    VPCMPNLEUQ, \
    VPCMPTRUEUQ, \
    VPCMPGTW, \
    VPCMPGTD, \
    VPCMPGTQ, \
    VPCMPGTB, \
    VPMOVM2B, \
    VPMOVM2W, \
    VPMOVM2D, \
    VPMOVM2Q, \
    VPMOVB2M, \
    VPMOVW2M, \
    VPMOVD2M, \
    VPMOVQ2M, \
    VPBROADCASTMW2D, \
    VPBROADCASTMB2Q, \
    VPCONFLICTD, \
    VPCONFLICTQ, \
    VPMULTISHIFTQB, \
    VLOADUNPACKLD, \
    VLOADUNPACKLPS, \
    VLOADUNPACKHD, \
    VLOADUNPACKHPS, \
    VLOADUNPACKLQ, \
    VLOADUNPACKLPD, \
    VLOADUNPACKHQ, \
    VLOADUNPACKHPD, \
    VPACKSTORELD, \
    VPACKSTORELPS, \
    VPACKSTOREHD, \
    VPACKSTOREHPS, \
    VPACKSTORELQ, \
    VPACKSTORELPD, \
    VPACKSTOREHQ, \
    VPACKSTOREHPD, \
    VCVTFXPNTUDQ2PS, \
    VCVTFXPNTDQ2PS, \
    VCVTFXPNTPS2UDQ, \
    VCVTFXPNTPS2DQ, \
    VCVTFXPNTPD2UDQ, \
    VCVTFXPNTPD2DQ, \
    VRNDFXPNTPS, \
    VRNDFXPNTPD, \
    VPERMF32X4, \
    VPADCD, \
    VPADDSETCD, \
    VPSBBD, \
    VPSUBRSETBD, \
    VPSUBSETBD, \
    VPSUBRD, \
    VPSBBRD, \
    VPMULHUD, \
    VPMULHD, \
    VFIXUPNANPS, \
    VPMADD231D, \
    VADDNPS, \
    VADDNPD, \
    VPADDSETSD, \
    VGMAXABSPS, \
    VGMINPS, \
    VGMAXPS, \
    VSUBRPS, \
    VADDSETSPS, \
    VSUBRPD, \
    VGMINPD, \
    VGMAXPD, \
    VFIXUPNANPD, \
    VLOG2PS, \
    VEXP223PS, \
    VRCP23PS, \
    VRSQRT23PS, \
    VPLZCNTD, \
    VPLZCNTQ, \
    VPMADD233D, \
    VPREFETCHENTA, \
    VPREFETCH0, \
    VPREFETCH1, \
    VPREFETCH2, \
    VPREFETCHE0, \
    VPREFETCHE1, \
    VPREFETCHE2, \
    VPREFETCHNTA, \
    CLEVICT0, \
    CLEVICT1, \
    DELAY, \
    SPFLT, \
    TZCNTI, \

    ;

      ENDHEAD iiy ; End of module interface.

↑ VANDPS
  Bitwise Logical AND of Packed Single-FP Values
Intel reference

  VANDPS xmm1,xmm2, xmm3/m128 | VEX.NDS.128.0F 54 /r
  VANDPS ymm1, ymm2, ymm3/m256 | VEX.NDS.256.0F 54 /r
  VANDPS xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst | EVEX.NDS.128.0F.W0 54 /r
  VANDPS ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst | EVEX.NDS.256.0F.W0 54 /r
  VANDPS zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst | EVEX.NDS.512.0F.W0 54 /r

Category
  sse1,simdfp,logical
Operands
  Vps,Wps
Opcode
  0x0F54 /r
CPU
  P3+
Tested by
  t5650

    IiyVANDPS:: PROC
        IiEmitOpcode 0x54
    .op:IiAllowModifier MASK,DATA
        IiAllowBroadcasting DWORD
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FV32
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, zmm.zmm.zmm, zmm.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix VEX.NDS.128.0F, EVEX.NDS.128.0F.W0
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix VEX.NDS.256.0F, EVEX.NDS.256.0F.W0
        RET
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.0F.W0
        RET
      ENDP IiyVANDPS::

↑ VANDNPS
  Bitwise Logical AND NOT of Packed Single-FP Values
Intel reference

  VANDNPS xmm1, xmm2, xmm3/m128 | VEX.NDS.128.0F 55 /r
  VANDNPS ymm1, ymm2, ymm3/m256 | VEX.NDS.256.0F 55 /r
  VANDNPS xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst | EVEX.NDS.128.0F.W0 55 /r
  VANDNPS ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst | EVEX.NDS.256.0F.W0 55 /r
  VANDNPS zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst | EVEX.NDS.512.0F.W0 55 /r

Category
  sse1,simdfp,logical
Operands
  Vps,Wps
Opcode
  0x0F55 /r
CPU
  P3+
Tested by
  t5650

    IiyVANDNPS:: PROC
        IiEmitOpcode 0x55
        JMP IiyVANDPS.op:
      ENDP IiyVANDNPS::

↑ VORPS
  Bitwise Logical OR of Single-FP Values
Intel reference

  VORPS xmm1,xmm2, xmm3/m128 | VEX.NDS.128.0F 56 /r
  VORPS ymm1, ymm2, ymm3/m256 | VEX.NDS.256.0F 56 /r
  VORPS xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst | EVEX.NDS.128.0F.W0 56 /r
  VORPS ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst | EVEX.NDS.256.0F.W0 56 /r
  VORPS zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst | EVEX.NDS.512.0F.W0 56 /r

Category
  sse1,simdfp,logical
Operands
  Vps,Wps
Opcode
  0x0F56 /r
CPU
  P3+
Tested by
  t5650

    IiyVORPS:: PROC
        IiEmitOpcode 0x56
        JMP IiyVANDPS.op:
      ENDP IiyVORPS::

↑ VXORPS
  Bitwise Logical XOR for Single-FP Values
Intel reference

  VXORPS xmm1,xmm2, xmm3/m128 | VEX.NDS.128.0F.WIG 57 /r
  VXORPS ymm1, ymm2, ymm3/m256 | VEX.NDS.256.0F.WIG 57 /r
  VXORPS xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst | EVEX.NDS.128.0F.W0 57 /r
  VXORPS ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst | EVEX.NDS.256.0F.W0 57 /r
  VXORPS zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst | EVEX.NDS.512.0F.W0 57 /r

Category
  sse1,simdfp,logical
Operands
  Vps,Wps
Opcode
  0x0F57 /r
CPU
  P3+
Tested by
  t5650

    IiyVXORPS:: PROC
        IiEmitOpcode 0x57
        JMP IiyVANDPS.op:
      ENDP IiyVXORPS::

↑ VANDPD
  Bitwise Logical AND of Packed Double-FP Values
Intel reference

  VANDPD xmm1, xmm2, xmm3/m128 | VEX.NDS.128.66.0F 54 /r
  VANDPD ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F 54 /r
  VANDPD xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst | EVEX.NDS.128.66.0F.W1 54 /r
  VANDPD ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst | EVEX.NDS.256.66.0F.W1 54 /r
  VANDPD zmm1 {k1}{z}, zmm2, zmm3/m512/m64bcst | EVEX.NDS.512.66.0F.W1 54 /r

Category
  sse2,pcksclr,logical
Operands
  Vpd,Wpd
Opcode
  0x660F54 /r
CPU
  P4+
Tested by
  t5652

    IiyVANDPD:: PROC
        IiEmitOpcode 0x54
    .op:IiAllowModifier MASK,DATA
        IiAllowBroadcasting QWORD
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FV64
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, zmm.zmm.zmm, zmm.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix VEX.NDS.128.66.0F, EVEX.NDS.128.66.0F.W1
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix VEX.NDS.256.66.0F, EVEX.NDS.256.66.0F.W1
        RET
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F.W1
        RET
      ENDP IiyVANDPD::

↑ VANDNPD
  Bitwise Logical AND NOT of Packed Double-FP Values
Intel reference

  VANDNPD xmm1, xmm2, xmm3/m128 | VEX.NDS.128.66.0F 55 /r
  VANDNPD ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F 55 /r
  VANDNPD xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst | EVEX.NDS.128.66.0F.W1 55 /r
  VANDNPD ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst | EVEX.NDS.256.66.0F.W1 55 /r
  VANDNPD zmm1 {k1}{z}, zmm2, zmm3/m512/m64bcst | EVEX.NDS.512.66.0F.W1 55 /r

Category
  sse2,pcksclr,logical
Operands
  Vpd,Wpd
Opcode
  0x660F55 /r
CPU
  P4+
Tested by
  t5652

    IiyVANDNPD:: PROC
        IiEmitOpcode 0x55
        JMP IiyVANDPD.op:
      ENDP IiyVANDNPD::

↑ VORPD
  Bitwise Logical OR of Double-FP Values
Intel reference

  VORPD xmm1,xmm2, xmm3/m128 | VEX.NDS.128.66.0F 56 /r
  VORPD ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F 56 /r
  VORPD xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst | EVEX.NDS.128.66.0F.W1 56 /r
  VORPD ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst | EVEX.NDS.256.66.0F.W1 56 /r
  VORPD zmm1 {k1}{z}, zmm2, zmm3/m512/m64bcst | EVEX.NDS.512.66.0F.W1 56 /r

Category
  sse2,pcksclr,logical
Operands
  Vpd,Wpd
Opcode
  0x660F56 /r
CPU
  P4+
Tested by
  t5652

    IiyVORPD:: PROC
        IiEmitOpcode 0x56
        JMP IiyVANDPD.op:
      ENDP IiyVORPD::

↑ VXORPD
  Bitwise Logical XOR for Double-FP Values
Intel reference

  VXORPD xmm1,xmm2, xmm3/m128 | VEX.NDS.128.66.0F.WIG 57 /r
  VXORPD ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F.WIG 57 /r
  VXORPD xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst | EVEX.NDS.128.66.0F.W1 57 /r
  VXORPD ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst | EVEX.NDS.256.66.0F.W1 57 /r
  VXORPD zmm1 {k1}{z}, zmm2, zmm3/m512/m64bcst | EVEX.NDS.512.66.0F.W1 57 /r

Category
  sse2,pcksclr,logical
Operands
  Vpd,Wpd
Opcode
  0x660F57 /r
CPU
  P4+
Tested by
  t5652

    IiyVXORPD:: PROC
        IiEmitOpcode 0x57
        JMP IiyVANDPD.op:
      ENDP IiyVXORPD::

↑ VSQRTSS
  Compute Square Root of Scalar Single-FP Value
Intel reference

  VSQRTSS xmm1, xmm2, xmm3/m32 | VEX.NDS.128.F3.0F.WIG 51 /r
  VSQRTSS xmm1 {k1}{z}, xmm2, xmm3/m32{er} | EVEX.NDS.LIG.F3.0F.W0 51 /r

Category
  sse1,simdfp,arith
Operands
  Vss,Wss
Opcode
  0xF30F51 /r
CPU
  P3+
Tested by
  t5654

    IiyVSQRTSS:: PROC
        IiAllowModifier MASK,DATA
        IiAllowRounding Register=xmm
        IiEmitOpcode 0x51
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX T1S32
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix VEX.NDS.128.F3.0F.WIG, EVEX.NDS.LIG.F3.0F.W0
        RET
      ENDP IiyVSQRTSS::

↑ VSQRTSD
  Compute Square Root of Scalar Double-FP Value
Intel reference

  VSQRTSD xmm1,xmm2, xmm3/m64 | VEX.NDS.128.F2.0F.WIG 51 /r
  VSQRTSD xmm1 {k1}{z}, xmm2, xmm3/m64{er} | EVEX.NDS.LIG.F2.0F.W1 51 /r

Category
  sse2,pcksclr,arith
Operands
  Vsd,Wsd
Opcode
  0xF20F51 /r
CPU
  P4+
Tested by
  t5654

    IiyVSQRTSD:: PROC
        IiAllowModifier MASK,DATA
        IiAllowRounding Register=xmm
        IiEmitOpcode 0x51
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX T1S64
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix VEX.NDS.128.F2.0F.WIG, EVEX.NDS.LIG.F2.0F.W1
        RET
      ENDP IiyVSQRTSD::

↑ VSQRTPS
  Compute Square Roots of Packed Single-FP Values
Intel reference

  VSQRTPS xmm1, xmm2/m128 | VEX.128.0F.WIG 51 /r
  VSQRTPS ymm1, ymm2/m256 | VEX.256.0F.WIG 51 /r
  VSQRTPS xmm1 {k1}{z}, xmm2/m128/m32bcst | EVEX.128.0F.W0 51 /r
  VSQRTPS ymm1 {k1}{z}, ymm2/m256/m32bcst | EVEX.256.0F.W0 51 /r
  VSQRTPS zmm1 {k1}{z}, zmm2/m512/m32bcst{er} | EVEX.512.0F.W0 51 /r

Category
  sse1,simdfp,arith
Operands
  Vps,Wps
Opcode
  0x0F51 /r
CPU
  P3+
Tested by
  t5654

    IiyVSQRTPS:: PROC
        IiAllowModifier MASK,DATA
        IiAllowRounding
        IiAllowBroadcasting DWORD
        IiEmitOpcode 0x51
        IiOpEn RM
        IiModRM /r
        IiDisp8EVEX FV32
        IiDispatchFormat  xmm.xmm, xmm.mem, ymm.ymm, ymm.mem, zmm.zmm, zmm.mem
    .xmm.xmm:
    .xmm.mem:
        IiEmitPrefix VEX.128.0F.WIG, EVEX.128.0F.W0
        RET
    .ymm.ymm:
    .ymm.mem:
        IiEmitPrefix VEX.256.0F.WIG, EVEX.256.0F.W0
        RET
    .zmm.zmm:
    .zmm.mem:
        IiEmitPrefix EVEX.512.0F.W0
        RET
      ENDP IiyVSQRTPS::

↑ VSQRTPD
  Compute Square Roots of Packed Double-FP Values
Intel reference

  VSQRTPD xmm1, xmm2/m128 | VEX.128.66.0F.WIG 51 /r
  VSQRTPD ymm1, ymm2/m256 | VEX.256.66.0F.WIG 51 /r
  VSQRTPD xmm1 {k1}{z}, xmm2/m128/m32bcst | EVEX.128.66.0F.W1 51 /r
  VSQRTPD ymm1 {k1}{z}, ymm2/m256/m32bcst | EVEX.256.66.0F.W1 51 /r
  VSQRTPD zmm1 {k1}{z}, zmm2/m512/m64bcst{er} | EVEX.512.66.0F.W1 51 /r

Category
  sse2,pcksclr,arith
Operands
  Vpd,Wpd
Opcode
  0x660F51 /r
CPU
  P4+
Tested by
  t5654

    IiyVSQRTPD:: PROC
        IiAllowModifier MASK,DATA
        IiAllowRounding
        IiAllowBroadcasting QWORD
        IiEmitOpcode 0x51
        IiOpEn RM
        IiModRM /r
        IiDisp8EVEX FV64
        IiDispatchFormat  xmm.xmm, xmm.mem, ymm.ymm, ymm.mem, zmm.zmm, zmm.mem
    .xmm.xmm:
    .xmm.mem:
        IiEmitPrefix VEX.128.66.0F.WIG, EVEX.128.66.0F.W1
        RET
    .ymm.ymm:
    .ymm.mem:
        IiEmitPrefix VEX.256.66.0F.WIG, EVEX.256.66.0F.W1
        RET
    .zmm.zmm:
    .zmm.mem:
        IiEmitPrefix EVEX.512.66.0F.W1
        RET
      ENDP IiyVSQRTPD::

↑ VRCP14SS
  Compute Approximate Reciprocal of Scalar Float32 Value
Intel reference

  VRCP14SS xmm1 {k1}{z}, xmm2, xmm3/m32 | EVEX.NDS.LIG.66.0F38.W0 4D /r

Opcode
  0x4D
Tested by
  t5656

    IiyVRCP14SS:: PROC
        IiEmitOpcode 0x4D
    .op:IiAllowModifier MASK,DATA
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX T1S32
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix EVEX.NDS.LIG.66.0F38.W0
        RET
      ENDP IiyVRCP14SS::

↑ VRCP14SD
  Compute Approximate Reciprocal of Scalar Float64 Value
Intel reference

  VRCP14SD xmm1 {k1}{z}, xmm2, xmm3/m64 | EVEX.NDS.LIG.66.0F38.W1 4D /r

Opcode
  0x4D
Tested by
  t5656

    IiyVRCP14SD:: PROC
        IiEmitOpcode 0x4D
    .op:IiAllowModifier MASK
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX T1S64
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix EVEX.NDS.LIG.66.0F38.W1
        RET
      ENDP IiyVRCP14SD::

↑ VRCP14PS
  Compute Approximate Reciprocals of Packed Float32 Values
Intel reference

  VRCP14PS xmm1 {k1}{z}, xmm2/m128/m32bcst | EVEX.128.66.0F38.W0 4C /r
  VRCP14PS ymm1 {k1}{z}, ymm2/m256/m32bcst | EVEX.256.66.0F38.W0 4C /r
  VRCP14PS zmm1 {k1}{z}, zmm2/m512/m32bcst | EVEX.512.66.0F38.W0 4C /r

Operands
  0x4C
Tested by
  t5656

    IiyVRCP14PS:: PROC
        IiEmitOpcode 0x4C
    .op:IiAllowModifier MASK,DATA
        IiAllowBroadcasting DWORD
        IiOpEn RM
        IiModRM /r
        IiDisp8EVEX FV32
        IiDispatchFormat  xmm.xmm, xmm.mem, ymm.ymm, ymm.mem, zmm.zmm, zmm.mem
    .xmm.xmm:
    .xmm.mem:
        IiEmitPrefix EVEX.128.66.0F38.W0
        RET
    .ymm.ymm:
    .ymm.mem:
        IiEmitPrefix EVEX.256.66.0F38.W0
        RET
    .zmm.zmm:
    .zmm.mem:
        IiEmitPrefix EVEX.512.66.0F38.W0
        RET
      ENDP IiyVRCP14PS::

↑ VRCP14PD
  Compute Approximate Reciprocals of Packed Float64 Values
Intel reference

  VRCP14PD xmm1 {k1}{z}, xmm2/m128/m64bcst | EVEX.128.66.0F38.W1 4C /r
  VRCP14PD ymm1 {k1}{z}, ymm2/m256/m64bcst | EVEX.256.66.0F38.W1 4C /r
  VRCP14PD zmm1 {k1}{z}, zmm2/m512/m64bcst | EVEX.512.66.0F38.W1 4C /r

Opcode
  0x4C
Tested by
  t5656

    IiyVRCP14PD:: PROC
        IiEmitOpcode 0x4C
    .op:IiAllowModifier MASK,DATA
        IiAllowBroadcasting QWORD
        IiOpEn RM
        IiModRM /r
        IiDisp8EVEX FV64
        IiDispatchFormat  xmm.xmm, xmm.mem, ymm.ymm, ymm.mem, zmm.zmm, zmm.mem
    .xmm.xmm:
    .xmm.mem:
        IiEmitPrefix EVEX.128.66.0F38.W1
        RET
    .ymm.ymm:
    .ymm.mem:
        IiEmitPrefix EVEX.256.66.0F38.W1
        RET
    .zmm.zmm:
    .zmm.mem:
        IiEmitPrefix EVEX.512.66.0F38.W1
        RET
      ENDP IiyVRCP14PD::

↑ VRSQRT14SS
  Compute Approximate Reciprocal of Square Root of Scalar Float32 Value
Intel reference

  VRSQRT14SS xmm1 {k1}{z}, xmm2, xmm3/m32 | EVEX.NDS.LIG.66.0F38.W0 4F /r

Opcode
  0x4F
Tested by
  t5658

    IiyVRSQRT14SS:: PROC
        IiEmitOpcode 0x4F
        JMP IiyVRCP14SS.op:
      ENDP IiyVRSQRT14SS::

↑ VRSQRT14SD
  Compute Approximate Reciprocal of Square Root of Scalar Float64 Value
Intel reference

  VRSQRT14SD xmm1 {k1}{z}, xmm2, xmm3/m64 | EVEX.NDS.LIG.66.0F38.W1 4F /r

Opcode
  0x4F
Tested by
  t5658

    IiyVRSQRT14SD:: PROC
        IiEmitOpcode 0x4F
        JMP IiyVRCP14SD.op:
      ENDP IiyVRSQRT14SD::

↑ VRSQRT14PS
  Compute Approximate Reciprocals of Square Roots of Packed Float32 Values
Intel reference

  VRSQRT14PS xmm1 {k1}{z}, xmm2/m128/m32bcst | EVEX.128.66.0F38.W0 4E /r
  VRSQRT14PS ymm1 {k1}{z}, ymm2/m256/m32bcst | EVEX.256.66.0F38.W0 4E /r
  VRSQRT14PS zmm1 {k1}{z}, zmm2/m512/m32bcst | EVEX.512.66.0F38.W0 4E /r

Opcode
  0x4E
Tested by
  t5658

    IiyVRSQRT14PS:: PROC
        IiEmitOpcode 0x4E
        JMP IiyVRCP14PS.op:
      ENDP IiyVRSQRT14PS::

↑ VRSQRT14PD
  Compute Approximate Reciprocals of Square Roots of Packed Float64 Values
Intel reference

  VRSQRT14PD xmm1 {k1}{z}, xmm2/m128/m64bcst | EVEX.128.66.0F38.W1 4E /r
  VRSQRT14PD ymm1 {k1}{z}, ymm2/m256/m64bcst | EVEX.256.66.0F38.W1 4E /r
  VRSQRT14PD zmm1 {k1}{z}, zmm2/m512/m64bcst | EVEX.512.66.0F38.W1 4E /r

Opcode
  0x4E
Tested by
  t5658

    IiyVRSQRT14PD:: PROC
        IiEmitOpcode 0x4E
        JMP IiyVRCP14PD.op:
      ENDP IiyVRSQRT14PD::

↑ VRCP28SS
  Approximation to the Reciprocal of Scalar Single-Precision Floating-Point Value with Less Than 2^-28 Relative Error
Intel reference

  VRCP28SS xmm1 {k1}{z}, xmm2, xmm3/m32 {sae} | EVEX.NDS.LIG.66.0F38.W0 CB /r

Opcode
  0xCB
Tested by
  t5660

    IiyVRCP28SS:: PROC
        IiEmitOpcode 0xCB
    .op:IiAllowModifier MASK,DATA
        IiAllowSuppressing Register=xmm
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX T1S32
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix EVEX.NDS.LIG.66.0F38.W0
        RET
      ENDP IiyVRCP28SS::

↑ VRCP28SD
  Approximation to the Reciprocal of Scalar Double-Precision Floating-Point Value with Less Than 2^-28 Relative Error
Intel reference

  VRCP28SD xmm1 {k1}{z}, xmm2, xmm3/m64 {sae} | EVEX.NDS.LIG.66.0F38.W1 CB /r

Opcode
  0xCB
Tested by
  t5660

    IiyVRCP28SD:: PROC
        IiEmitOpcode 0xCB
    .op:IiAllowModifier MASK,DATA
        IiAllowSuppressing Register=xmm
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX T1S64
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix EVEX.NDS.LIG.66.0F38.W1
        RET
      ENDP IiyVRCP28SD::

↑ VRCP28PS
  Approximation to the Reciprocal of Packed Single-Precision Floating-Point Values with Less Than 2^-28 Relative Error
Intel reference

  VRCP28PS zmm1 {k1}{z}, zmm2/m512/m32bcst {sae} | EVEX.512.66.0F38.W0 CA /r

Opcode
  0xCA
Tested by
  t5660

    IiyVRCP28PS:: PROC
        IiEmitOpcode 0xCA
    .op:IiAllowModifier MASK
        IiAllowSuppressing
        IiAllowBroadcasting DWORD
        IiOpEn RM
        IiModRM /r
        IiDisp8EVEX FV32
        IiDispatchFormat  zmm.zmm, zmm.mem
    .zmm.zmm:
    .zmm.mem:
        IiEmitPrefix EVEX.512.66.0F38.W0
        RET
      ENDP IiyVRCP28PS::

↑ VRCP28PD
  Approximation to the Reciprocal of Packed Double-Precision Floating-Point Values with Less Than 2^-28 Relative Error
Intel reference

  VRCP28PD zmm1 {k1}{z}, zmm2/m512/m64bcst {sae} | EVEX.512.66.0F38.W1 CA /r

Opcode
  0xCA
Tested by
  t5660

    IiyVRCP28PD:: PROC
        IiEmitOpcode 0xCA
    .op:IiAllowModifier MASK,DATA
        IiAllowSuppressing
        IiAllowBroadcasting QWORD
        IiOpEn RM
        IiModRM /r
        IiDisp8EVEX FV64
        IiDispatchFormat  zmm.zmm, zmm.mem
    .zmm.zmm:
    .zmm.mem:
        IiEmitPrefix EVEX.512.66.0F38.W1
        RET
      ENDP IiyVRCP28PD::

↑ VRSQRT28SS
  Approximation to the Reciprocal Square Root of Scalar Single-Precision Floating- Point Value with Less Than 2^-28 Relative Error
Intel reference

  VRSQRT28SS xmm1 {k1}{z}, xmm2, xmm3/m32 {sae} | EVEX.NDS.LIG.66.0F38.W0 CD /r

Opcode
  0xCD
Tested by
  t5662

    IiyVRSQRT28SS:: PROC
        IiEmitOpcode 0xCD
        JMP IiyVRCP28SS.op:
      ENDP IiyVRSQRT28SS::

↑ VRSQRT28SD
  Approximation to the Reciprocal Square Root of Scalar Double-Precision Floating-Point Value with Less Than 2^-28 Relative Error
Intel reference

  VRSQRT28SD xmm1 {k1}{z}, xmm2, xmm3/m64 {sae} | EVEX.NDS.LIG.66.0F38.W1 CD /r

Opcode
  0xCD
Tested by
  t5662

    IiyVRSQRT28SD:: PROC
        IiEmitOpcode 0xCD
        JMP IiyVRCP28SD.op:
      ENDP IiyVRSQRT28SD::

↑ VRSQRT28PS
  Approximation to the Reciprocal Square Root of Packed Single-Precision Floating-Point Values with Less Than 2^-28 Relative Error
Intel reference

  VRSQRT28PS zmm1 {k1}{z}, zmm2/m512/m32bcst {sae} | EVEX.512.66.0F38.W0 CC /r

Opcode
  0xCC
Tested by
  t5662

    IiyVRSQRT28PS:: PROC
        IiEmitOpcode 0xCC
        JMP IiyVRCP28PS.op:
      ENDP IiyVRSQRT28PS::

↑ VRSQRT28PD
  Approximation to the Reciprocal Square Root of Packed Double-Precision Floating-Point Values with Less Than 2^-28 Relative Error
Intel reference

  VRSQRT28PD zmm1 {k1}{z}, zmm2/m512/m64bcst {sae} | EVEX.512.66.0F38.W1 CC /r

Opcode
  0xCC
Tested by
  t5662

    IiyVRSQRT28PD:: PROC
        IiEmitOpcode 0xCC
        JMP IiyVRCP28PD.op:
      ENDP IiyVRSQRT28PD::

↑ VEXP2PS
  Approximation to the Exponential 2^x of Packed Single-Precision Floating-Point Values with Less Than 2^-23 Relative Error
Intel reference

  VEXP2PS zmm1 {k1}{z}, zmm2/m512/m32bcst {sae} | EVEX.512.66.0F38.W0 C8 /r

Opcode
  0xC8
Tested by
  t5664

    IiyVEXP2PS:: PROC
        IiEmitOpcode 0xC8
        JMP IiyVRCP28PS.op:
      ENDP IiyVEXP2PS::

↑ VEXP2PD
  Approximation to the Exponential 2^x of Packed Double-Precision Floating-Point Values with Less Than 2^-23 Relative Error
Intel reference

  VEXP2PD zmm1 {k1}{z}, zmm2/m512/m64bcst {sae} | EVEX.512.66.0F38.W1 C8 /r

Opcode
  0xC8
Tested by
  t5664

    IiyVEXP2PD:: PROC
        IiEmitOpcode 0xC8
        JMP IiyVRCP28PD.op:
      ENDP IiyVEXP2PD::

↑ VPMOVUSWB
  Down Convert Unsigned Word to Byte using unsigned saturation
Intel reference

  VPMOVUSWB xmm1/m64 {k1}{z}, xmm2 | EVEX.128.F3.0F38.W0 10 /r
  VPMOVUSWB xmm1/m128 {k1}{z}, ymm2 | EVEX.256.F3.0F38.W0 10 /r
  VPMOVUSWB ymm1/m256 {k1}{z}, zmm2 | EVEX.512.F3.0F38.W0 10 /r

Opcode
  0x10
Tested by
  t5670

    IiyVPMOVUSWB:: PROC
         IiEmitOpcode 0x10
    .HVM:IiDisp8EVEX HVM
         IiAllowModifier MASK,DATA
         IiOpEn MR
         IiModRM /r
         IiDispatchFormat  xmm.xmm, mem.xmm, xmm.ymm, mem.ymm, ymm.zmm, mem.zmm
    .xmm.xmm:
    .mem.xmm:
        IiEncoding DATA=QWORD
        IiEmitPrefix EVEX.128.F3.0F38.W0
        RET
    .xmm.ymm:
    .mem.ymm:
        IiEncoding DATA=OWORD
        IiEmitPrefix EVEX.256.F3.0F38.W0
        RET
    .ymm.zmm:
    .mem.zmm:
        IiEncoding DATA=YWORD
        IiEmitPrefix EVEX.512.F3.0F38.W0
        RET
      ENDP IiyVPMOVUSWB::

↑ VPMOVUSDB
  Down Convert Unsigned DWord to Byte using unsigned saturation
Intel reference

  VPMOVUSDB xmm1/m32 {k1}{z}, xmm2 | EVEX.128.F3.0F38.W0 11 /r
  VPMOVUSDB xmm1/m64 {k1}{z}, ymm2 | EVEX.256.F3.0F38.W0 11 /r
  VPMOVUSDB xmm1/m128 {k1}{z}, zmm2 | EVEX.512.F3.0F38.W0 11 /r

Opcode
  0x11
Tested by
  t5670

    IiyVPMOVUSDB:: PROC
         IiEmitOpcode 0x11
    .QVM:IiDisp8EVEX QVM
         IiAllowModifier MASK,DATA
         IiOpEn MR
         IiModRM /r
         IiDispatchFormat  xmm.xmm, mem.xmm, xmm.ymm, mem.ymm, xmm.zmm, mem.zmm
    .xmm.xmm:
    .mem.xmm:
        IiEncoding DATA=DWORD
        IiEmitPrefix EVEX.128.F3.0F38.W0
        RET
    .xmm.ymm:
    .mem.ymm:
        IiEncoding DATA=QWORD
        IiEmitPrefix EVEX.256.F3.0F38.W0
        RET
    .xmm.zmm:
    .mem.zmm:
        IiEncoding DATA=OWORD
        IiEmitPrefix EVEX.512.F3.0F38.W0
        RET
      ENDP IiyVPMOVUSDB::

↑ VPMOVUSQB
  Down Convert Unsigned QWord to Byte using unsigned saturation
Intel reference

  VPMOVUSQB xmm1/m16 {k1}{z}, xmm2 | EVEX.128.F3.0F38.W0 12 /r
  VPMOVUSQB xmm1/m32 {k1}{z}, ymm2 | EVEX.256.F3.0F38.W0 12 /r
  VPMOVUSQB xmm1/m64 {k1}{z}, zmm2 | EVEX.512.F3.0F38.W0 12 /r

Opcode
  0x12
Tested by
  t5670

    IiyVPMOVUSQB:: PROC
         IiEmitOpcode 0x12
    .OVM:IiDisp8EVEX OVM
         IiAllowModifier MASK,DATA
         IiOpEn MR
         IiModRM /r
         IiDispatchFormat  xmm.xmm, mem.xmm, xmm.ymm, mem.ymm, xmm.zmm, mem.zmm
    .xmm.xmm:
    .mem.xmm:
        IiEncoding DATA=WORD
        IiEmitPrefix EVEX.128.F3.0F38.W0
        RET
    .xmm.ymm:
    .mem.ymm:
        IiEncoding DATA=DWORD
        IiEmitPrefix EVEX.256.F3.0F38.W0
        RET
    .xmm.zmm:
    .mem.zmm:
        IiEncoding DATA=QWORD
        IiEmitPrefix EVEX.512.F3.0F38.W0
        RET
      ENDP IiyVPMOVUSQB::

↑ VPMOVUSDW
  Down Convert Unsigned DWord to Word using unsigned saturation
Intel reference

  VPMOVUSDW xmm1/m64 {k1}{z}, xmm2 | EVEX.128.F3.0F38.W0 13 /r
  VPMOVUSDW xmm1/m128 {k1}{z}, ymm2 | EVEX.256.F3.0F38.W0 13 /r
  VPMOVUSDW ymm1/m256 {k1}{z}, zmm2 | EVEX.512.F3.0F38.W0 13 /r

Opcode
  0x13
Tested by
  t5670

    IiyVPMOVUSDW:: PROC
        IiEmitOpcode 0x13
        JMP IiyVPMOVUSWB.HVM:
      ENDP IiyVPMOVUSDW::

↑ VPMOVUSQW
  Down Convert Unsigned QWord to Word using unsigned saturation
Intel reference

  VPMOVUSQW xmm1/m32 {k1}{z}, xmm2 | EVEX.128.F3.0F38.W0 14 /r
  VPMOVUSQW xmm1/m64 {k1}{z}, ymm2 | EVEX.256.F3.0F38.W0 14 /r
  VPMOVUSQW xmm1/m128 {k1}{z}, zmm2 | EVEX.512.F3.0F38.W0 14 /r

Opcode
  0x14
Tested by
  t5670

    IiyVPMOVUSQW:: PROC
        IiEmitOpcode 0x14
        JMP IiyVPMOVUSDB.QVM:
      ENDP IiyVPMOVUSQW::

↑ VPMOVUSQD
  Down Convert Unsigned QWord to DWord using unsigned saturation
Intel reference

  VPMOVUSQD xmm1/m64 {k1}{z}, xmm2 | EVEX.128.F3.0F38.W0 15 /r
  VPMOVUSQD xmm1/m128 {k1}{z}, ymm2 | EVEX.256.F3.0F38.W0 15 /r
  VPMOVUSQD ymm1/m256 {k1}{z}, zmm2 | EVEX.512.F3.0F38.W0 15 /r

Opcode
  0x15
Tested by
  t5670

    IiyVPMOVUSQD:: PROC
        IiEmitOpcode 0x15
        JMP IiyVPMOVUSWB.HVM:
      ENDP IiyVPMOVUSQD::

↑ VPMOVSWB
  Down Convert Signed Word to Byte using signed saturation
Intel reference

  VPMOVSWB xmm1/m64 {k1}{z}, xmm2 | EVEX.128.F3.0F38.W0 20 /r
  VPMOVSWB xmm1/m128 {k1}{z}, ymm2 | EVEX.256.F3.0F38.W0 20 /r
  VPMOVSWB ymm1/m256 {k1}{z}, zmm2 | EVEX.512.F3.0F38.W0 20 /r

Opcode
  0x20
Tested by
  t5672

    IiyVPMOVSWB:: PROC
        IiEmitOpcode 0x20
        JMP IiyVPMOVUSWB.HVM:
      ENDP IiyVPMOVSWB::

↑ VPMOVSDB
  Down Convert Signed DWord to Byte using signed saturation
Intel reference

  VPMOVSDB xmm1/m32 {k1}{z}, xmm2 | EVEX.128.F3.0F38.W0 21 /r
  VPMOVSDB xmm1/m64 {k1}{z}, ymm2 | EVEX.256.F3.0F38.W0 21 /r
  VPMOVSDB xmm1/m128 {k1}{z}, zmm2 | EVEX.512.F3.0F38.W0 21 /r

Opcode
  0x21
Tested by
  t5672

    IiyVPMOVSDB:: PROC
        IiEmitOpcode 0x21
        JMP IiyVPMOVUSDB.QVM:
      ENDP IiyVPMOVSDB::

↑ VPMOVSQB
  Down Convert Signed QWord to Byte using signed saturation
Intel reference

  VPMOVSQB xmm1/m16 {k1}{z}, xmm2 | EVEX.128.F3.0F38.W0 22 /r
  VPMOVSQB xmm1/m32 {k1}{z}, ymm2 | EVEX.256.F3.0F38.W0 22 /r
  VPMOVSQB xmm1/m64 {k1}{z}, zmm2 | EVEX.512.F3.0F38.W0 22 /r

Opcode
  0x22
Tested by
  t5672

    IiyVPMOVSQB:: PROC
        IiEmitOpcode 0x22
        JMP IiyVPMOVUSQB.OVM:
      ENDP IiyVPMOVSQB::

↑ VPMOVSDW
  Down Convert Signed DWord to Word using signed saturation
Intel reference

  VPMOVSDW xmm1/m64 {k1}{z}, xmm2 | EVEX.128.F3.0F38.W0 23 /r
  VPMOVSDW xmm1/m128 {k1}{z}, ymm2 | EVEX.256.F3.0F38.W0 23 /r
  VPMOVSDW ymm1/m256 {k1}{z}, zmm2 | EVEX.512.F3.0F38.W0 23 /r

Opcode
  0x23
Tested by
  t5672

    IiyVPMOVSDW:: PROC
        IiEmitOpcode 0x23
        JMP IiyVPMOVUSWB.HVM:
      ENDP IiyVPMOVSDW::

↑ VPMOVSQW
  Down Convert Signed QWord to Word using signed saturation
Intel reference

  VPMOVSQW xmm1/m32 {k1}{z}, xmm2 | EVEX.128.F3.0F38.W0 24 /r
  VPMOVSQW xmm1/m64 {k1}{z}, ymm2 | EVEX.256.F3.0F38.W0 24 /r
  VPMOVSQW xmm1/m128 {k1}{z}, zmm2 | EVEX.512.F3.0F38.W0 24 /r

Opcode
  0x24
Tested by
  t5672

    IiyVPMOVSQW:: PROC
        IiEmitOpcode 0x24
        JMP IiyVPMOVUSDB.QVM:
      ENDP IiyVPMOVSQW::

↑ VPMOVSQD
  Down Convert Signed QWord to DWord using signed saturation
Intel reference

  VPMOVSQD xmm1/m64 {k1}{z}, xmm2 | EVEX.128.F3.0F38.W0 25 /r
  VPMOVSQD xmm1/m128 {k1}{z}, ymm2 | EVEX.256.F3.0F38.W0 25 /r
  VPMOVSQD ymm1/m256 {k1}{z}, zmm2 | EVEX.512.F3.0F38.W0 25 /r

Opcode
  0x25
Tested by
  t5672

    IiyVPMOVSQD:: PROC
        IiEmitOpcode 0x25
        JMP IiyVPMOVUSWB.HVM:
      ENDP IiyVPMOVSQD::

↑ VPMOVWB
  Down Convert Word to Byte with truncation
Intel reference

  VPMOVWB xmm1/m64 {k1}{z}, xmm2 | EVEX.128.F3.0F38.W0 30 /r
  VPMOVWB xmm1/m128 {k1}{z}, ymm2 | EVEX.256.F3.0F38.W0 30 /r
  VPMOVWB ymm1/m256 {k1}{z}, zmm2 | EVEX.512.F3.0F38.W0 30 /r

Opcode
  0x30
Tested by
  t5674

    IiyVPMOVWB:: PROC
        IiEmitOpcode 0x30
        JMP IiyVPMOVUSWB.HVM:
      ENDP IiyVPMOVWB::

↑ VPMOVDB
  Down Convert DWord to Byte with truncation
Intel reference

  VPMOVDB xmm1/m32 {k1}{z}, xmm2 | EVEX.128.F3.0F38.W0 31 /r
  VPMOVDB xmm1/m64 {k1}{z}, ymm2 | EVEX.256.F3.0F38.W0 31 /r
  VPMOVDB xmm1/m128 {k1}{z}, zmm2 | EVEX.512.F3.0F38.W0 31 /r

Opcode
  0x31
Tested by
  t5674

    IiyVPMOVDB:: PROC
        IiEmitOpcode 0x31
        JMP IiyVPMOVUSDB.QVM:
      ENDP IiyVPMOVDB::

↑ VPMOVQB
  Down Convert QWord to Byte with truncation
Intel reference

  VPMOVQB xmm1/m16 {k1}{z}, xmm2 | EVEX.128.F3.0F38.W0 32 /r
  VPMOVQB xmm1/m32 {k1}{z}, ymm2 | EVEX.256.F3.0F38.W0 32 /r
  VPMOVQB xmm1/m64 {k1}{z}, zmm2 | EVEX.512.F3.0F38.W0 32 /r

Opcode
  0x32
Tested by
  t5674

    IiyVPMOVQB:: PROC
        IiEmitOpcode 0x32
        JMP IiyVPMOVUSQB.OVM:
      ENDP IiyVPMOVQB::

↑ VPMOVDW
  Down Convert DWord to Word with truncation
Intel reference

  VPMOVDW xmm1/m64 {k1}{z}, xmm2 | EVEX.128.F3.0F38.W0 33 /r
  VPMOVDW xmm1/m128 {k1}{z}, ymm2 | EVEX.256.F3.0F38.W0 33 /r
  VPMOVDW ymm1/m256 {k1}{z}, zmm2 | EVEX.512.F3.0F38.W0 33 /r

Opcode
  0x33
Tested by
  t5674

    IiyVPMOVDW:: PROC
        IiEmitOpcode 0x33
        JMP IiyVPMOVUSWB.HVM:
      ENDP IiyVPMOVDW::

↑ VPMOVQW
  Down Convert QWord to Word with truncation
Intel reference

  VPMOVQW xmm1/m32 {k1}{z}, xmm2 | EVEX.128.F3.0F38.W0 34 /r
  VPMOVQW xmm1/m64 {k1}{z}, ymm2 | EVEX.256.F3.0F38.W0 34 /r
  VPMOVQW xmm1/m128 {k1}{z}, zmm2 | EVEX.512.F3.0F38.W0 34 /r

Opcode
  0x34
Tested by
  t5674

    IiyVPMOVQW:: PROC
        IiEmitOpcode 0x34
        JMP IiyVPMOVUSDB.QVM:
      ENDP IiyVPMOVQW::

↑ VPMOVQD
  Down Convert QWord to DWord with truncation
Intel reference

  VPMOVQD xmm1/m128 {k1}{z}, xmm2 | EVEX.128.F3.0F38.W0 35 /r
  VPMOVQD xmm1/m128 {k1}{z}, ymm2 | EVEX.256.F3.0F38.W0 35 /r
  VPMOVQD ymm1/m256 {k1}{z}, zmm2 | EVEX.512.F3.0F38.W0 35 /r

Opcode
  0x35
Tested by
  t5674

    IiyVPMOVQD:: PROC
        IiEmitOpcode 0x35
        JMP IiyVPMOVUSWB.HVM:
      ENDP IiyVPMOVQD::

↑ VPMOVSXBW
  Packed Move with Sign Extend
Intel reference

  VPMOVSXBW xmm1, xmm2/m64 | VEX.128.66.0F38.WIG 20 /r
  VPMOVSXBW ymm1, xmm2/m128 | VEX.256.66.0F38.WIG 20 /r
  VPMOVSXBW xmm1 {k1}{z}, xmm2/m64 | EVEX.128.66.0F38.WIG 20 /r
  VPMOVSXBW ymm1 {k1}{z}, xmm2/m128 | EVEX.256.66.0F38.WIG 20 /r
  VPMOVSXBW zmm1 {k1}{z}, ymm2/m256 | EVEX.512.66.0F38.WIG 20 /r

Category
  sse41,simdint,conver
Operands
  Vdq,Mq | Vdq,Udq
Opcode
  0x660F3820 /r | 0x660F3820 /r
CPU
  C2++
Documented
  D43
Tested by
  t5676

    IiyVPMOVSXBW:: PROC
         IiEmitOpcode 0x20
    .HVM:IiDisp8EVEX HVM
         IiAllowModifier MASK,DATA
         IiOpEn RM
         IiModRM /r
         IiDispatchFormat  xmm.xmm, xmm.mem, ymm.xmm, ymm.mem, zmm.ymm, zmm.mem
    .xmm.xmm:
    .xmm.mem:
        IiEncoding DATA=QWORD
        IiEmitPrefix VEX.128.66.0F38.WIG, EVEX.128.66.0F38.WIG
        RET
    .ymm.xmm:
    .ymm.mem:
        IiEncoding DATA=OWORD
        IiEmitPrefix VEX.256.66.0F38.WIG, EVEX.256.66.0F38.WIG
        RET
    .zmm.ymm:
    .zmm.mem:
        IiEncoding DATA=YWORD
        IiEmitPrefix EVEX.512.66.0F38.WIG
        RET
      ENDP IiyVPMOVSXBW::

↑ VPMOVSXBD
  Packed Move with Sign Extend
Intel reference

  VPMOVSXBD xmm1, xmm2/m32 | VEX.128.66.0F38.WIG 21 /r
  VPMOVSXBD ymm1, xmm2/m64 | VEX.256.66.0F38.WIG 21 /r
  VPMOVSXBD xmm1 {k1}{z}, xmm2/m32 | EVEX.128.66.0F38.WIG 21 /r
  VPMOVSXBD ymm1 {k1}{z}, xmm2/m64 | EVEX.256.66.0F38.WIG 21 /r
  VPMOVSXBD zmm1 {k1}{z}, xmm2/m128 | EVEX.512.66.0F38.WIG 21 /r

Category
  sse41,simdint,conver
Operands
  Vdq,Md | Vdq,Udq
Opcode
  0x660F3821 /r | 0x660F3821 /r
CPU
  C2++
Documented
  D43
Tested by
  t5676

    IiyVPMOVSXBD:: PROC
         IiEmitOpcode 0x21
    .QVM:IiDisp8EVEX QVM
         IiAllowModifier MASK,DATA
         IiOpEn RM
         IiModRM /r
         IiDispatchFormat  xmm.xmm, xmm.mem, ymm.xmm, ymm.mem, zmm.xmm, zmm.mem
    .xmm.xmm:
    .xmm.mem:
        IiEncoding DATA=DWORD
        IiEmitPrefix VEX.128.66.0F38.WIG, EVEX.128.66.0F38.WIG
        RET
    .ymm.xmm:
    .ymm.mem:
        IiEncoding DATA=QWORD
        IiEmitPrefix VEX.256.66.0F38.WIG, EVEX.256.66.0F38.WIG
        RET
    .zmm.xmm:
    .zmm.mem:
        IiEncoding DATA=OWORD
        IiEmitPrefix EVEX.512.66.0F38.WIG
        RET
      ENDP IiyVPMOVSXBD::

↑ VPMOVSXBQ
  Packed Move with Sign Extend
Intel reference

  VPMOVSXBQ xmm1, xmm2/m16 | VEX.128.66.0F38.WIG 22 /r
  VPMOVSXBQ ymm1, xmm2/m32 | VEX.256.66.0F38.WIG 22 /r
  VPMOVSXBQ xmm1 {k1}{z}, xmm2/m16 | EVEX.128.66.0F38.WIG 22 /r
  VPMOVSXBQ ymm1 {k1}{z}, xmm2/m32 | EVEX.256.66.0F38.WIG 22 /r
  VPMOVSXBQ zmm1 {k1}{z}, xmm2/m64 | EVEX.512.66.0F38.WIG 22 /r

Category
  sse41,simdint,conver
Operands
  Vdq,Mw | Vdq,Udq
Opcode
  0x660F3822 /r | 0x660F3822 /r
CPU
  C2++
Documented
  D43
Tested by
  t5676

    IiyVPMOVSXBQ:: PROC
         IiEmitOpcode 0x22
    .OVM:IiDisp8EVEX OVM
         IiAllowModifier MASK,DATA
         IiOpEn RM
         IiModRM /r
         IiDispatchFormat  xmm.xmm, xmm.mem, ymm.xmm, ymm.mem, zmm.xmm, zmm.mem
    .xmm.xmm:
    .xmm.mem:
        IiEncoding DATA=WORD
        IiEmitPrefix VEX.128.66.0F38.WIG, EVEX.128.66.0F38.WIG
        RET
    .ymm.xmm:
    .ymm.mem:
        IiEncoding DATA=DWORD
        IiEmitPrefix VEX.256.66.0F38.WIG, EVEX.256.66.0F38.WIG
        RET
    .zmm.xmm:
    .zmm.mem:
        IiEncoding DATA=QWORD
        IiEmitPrefix EVEX.512.66.0F38.WIG
        RET
      ENDP IiyVPMOVSXBQ::

↑ VPMOVSXWD
  Packed Move with Sign Extend
Intel reference

  VPMOVSXWD xmm1, xmm2/m64 | VEX.128.66.0F38.WIG 23 /r
  VPMOVSXWD ymm1, xmm2/m128 | VEX.256.66.0F38.WIG 23 /r
  VPMOVSXWD xmm1 {k1}{z}, xmm2/m64 | EVEX.128.66.0F38.WIG 23 /r
  VPMOVSXWD ymm1 {k1}{z}, xmm2/m128 | EVEX.256.66.0F38.WIG 23 /r
  VPMOVSXWD zmm1 {k1}{z}, ymm2/m256 | EVEX.512.66.0F38.WIG 23 /r

Category
  sse41,simdint,conver
Operands
  Vdq,Mq | Vdq,Udq
Opcode
  0x660F3823 /r | 0x660F3823 /r
CPU
  C2++
Documented
  D43
Tested by
  t5676

    IiyVPMOVSXWD:: PROC
         IiEmitOpcode 0x23
         JMP IiyVPMOVSXBW.HVM:
      ENDP IiyVPMOVSXWD::

↑ VPMOVSXWQ
  Packed Move with Sign Extend
Intel reference

  VPMOVSXWQ xmm1, xmm2/m32 | VEX.128.66.0F38.WIG 24 /r
  VPMOVSXWQ ymm1, xmm2/m64 | VEX.256.66.0F38.WIG 24 /r
  VPMOVSXWQ xmm1 {k1}{z}, xmm2/m32 | EVEX.128.66.0F38.WIG 24 /r
  VPMOVSXWQ ymm1 {k1}{z}, xmm2/m64 | EVEX.256.66.0F38.WIG 24 /r
  VPMOVSXWQ zmm1 {k1}{z}, xmm2/m128 | EVEX.512.66.0F38.WIG 24 /r

Category
  sse41,simdint,conver
Operands
  Vdq,Md | Vdq,Udq
Opcode
  0x660F3824 /r | 0x660F3824 /r
CPU
  C2++
Documented
  D43
Tested by
  t5676

    IiyVPMOVSXWQ:: PROC
        IiEmitOpcode 0x24
        JMP IiyVPMOVSXBD.QVM:
      ENDP IiyVPMOVSXWQ::

↑ VPMOVSXDQ
  Packed Move with Sign Extend
Intel reference

  VPMOVSXDQ xmm1, xmm2/m64 | VEX.128.66.0F38.WIG 25 /r
  VPMOVSXDQ ymm1, xmm2/m128 | VEX.256.66.0F38.WIG 25 /r
  VPMOVSXDQ xmm1 {k1}{z}, xmm2/m64 | EVEX.128.66.0F38.W0 25 /r
  VPMOVSXDQ ymm1 {k1}{z}, xmm2/m128 | EVEX.256.66.0F38.W0 25 /r
  VPMOVSXDQ zmm1 {k1}{z}, ymm2/m256 | EVEX.512.66.0F38.W0 25 /r

Category
  sse41,simdint,conver
Operands
  Vdq,Mq | Vdq,Udq
Opcode
  0x660F3825 /r | 0x660F3825 /r
CPU
  C2++
Documented
  D43
Tested by
  t5676

    IiyVPMOVSXDQ:: PROC
        IiEmitOpcode 0x25
        JMP IiyVPMOVSXBW.HVM:
      ENDP IiyVPMOVSXDQ::

↑ VPMOVZXBW
  Packed Move with Zero Extend
Intel reference

  VPMOVZXBW xmm1, xmm2/m64 | VEX.128.66.0F38.WIG 30 /r
  VPMOVZXBW ymm1, xmm2/m128 | VEX.256.66.0F38.WIG 30 /r
  VPMOVZXBW xmm1 {k1}{z}, xmm2/m64 | EVEX.128.66.0F38.WIG 30 /r
  VPMOVZXBW ymm1 {k1}{z}, xmm2/m128 | EVEX.256.66.0F38.WIG 30 /r
  VPMOVZXBW zmm1 {k1}{z}, ymm2/m256 | EVEX.512.66.0F38.WIG 30 /r

Category
  sse41,simdint,conver
Operands
  Vdq,Mq | Vdq,Udq
Opcode
  0x660F3830 /r | 0x660F3830 /r
CPU
  C2++
Documented
  D43
Tested by
  t5678

    IiyVPMOVZXBW:: PROC
        IiEmitOpcode 0x30
        JMP IiyVPMOVSXBW.HVM:
      ENDP IiyVPMOVZXBW::

↑ VPMOVZXBD
  Packed Move with Zero Extend
Intel reference

  VPMOVZXBD xmm1, xmm2/m32 | VEX.128.66.0F38.WIG 31 /r
  VPMOVZXBD ymm1, xmm2/m64 | VEX.256.66.0F38.WIG 31 /r
  VPMOVZXBD xmm1 {k1}{z}, xmm2/m32 | EVEX.128.66.0F38.WIG 31 /r
  VPMOVZXBD ymm1 {k1}{z}, xmm2/m64 | EVEX.256.66.0F38.WIG 31 /r
  VPMOVZXBD zmm1 {k1}{z}, xmm2/m128 | EVEX.512.66.0F38.WIG 31 /r

Category
  sse41,simdint,conver
Operands
  Vdq,Md | Vdq,Udq
Opcode
  0x660F3831 /r | 0x660F3831 /r
CPU
  C2++
Documented
  D43
Tested by
  t5678

    IiyVPMOVZXBD:: PROC
        IiEmitOpcode 0x31
        JMP IiyVPMOVSXBD.QVM:
      ENDP IiyVPMOVZXBD::

↑ VPMOVZXBQ
  Packed Move with Zero Extend
Intel reference

  VPMOVZXBQ xmm1, xmm2/m16 | VEX.128.66.0F38.WIG 32 /r
  VPMOVZXBQ ymm1, xmm2/m32 | VEX.256.66.0F38.WIG 32 /r
  VPMOVZXBQ xmm1 {k1}{z}, xmm2/m16 | EVEX.128.66.0F38.WIG 32 /r
  VPMOVZXBQ ymm1 {k1}{z}, xmm2/m32 | EVEX.256.66.0F38.WIG 32 /r
  VPMOVZXBQ zmm1 {k1}{z}, xmm2/m64 | EVEX.512.66.0F38.WIG 32 /r

Category
  sse41,simdint,conver
Operands
  Vdq,Mw | Vdq,Udq
Opcode
  0x660F3832 /r | 0x660F3832 /r
CPU
  C2++
Documented
  D43
Tested by
  t5678

    IiyVPMOVZXBQ:: PROC
        IiEmitOpcode 0x32
        JMP IiyVPMOVSXBQ.OVM:
      ENDP IiyVPMOVZXBQ::

↑ VPMOVZXWD
  Packed Move with Zero Extend
Intel reference

  VPMOVZXWD xmm1, xmm2/m64 | VEX.128.66.0F38.WIG 33 /r
  VPMOVZXWD ymm1, xmm2/m128 | VEX.256.66.0F38.WIG 33 /r
  VPMOVZXWD xmm1 {k1}{z}, xmm2/m64 | EVEX.128.66.0F38.WIG 33 /r
  VPMOVZXWD ymm1 {k1}{z}, xmm2/m128 | EVEX.256.66.0F38.WIG 33 /r
  VPMOVZXWD zmm1 {k1}{z}, ymm2/m256 | EVEX.512.66.0F38.WIG 33 /r

Category
  sse41,simdint,conver
Operands
  Vdq,Mq | Vdq,Udq
Opcode
  0x660F3833 /r | 0x660F3833 /r
CPU
  C2++
Documented
  D43
Tested by
  t5678

    IiyVPMOVZXWD:: PROC
        IiEmitOpcode 0x33
        JMP IiyVPMOVSXBW.HVM:
      ENDP IiyVPMOVZXWD::

↑ VPMOVZXWQ
  Packed Move with Zero Extend
Intel reference

  VPMOVZXWQ xmm1, xmm2/m32 | VEX.128.66.0F38.WIG 34 /r
  VPMOVZXWQ ymm1, xmm2/m64 | VEX.256.66.0F38.WIG 34 /r
  VPMOVZXWQ xmm1 {k1}{z}, xmm2/m32 | EVEX.128.66.0F38.WIG 34 /r
  VPMOVZXWQ ymm1 {k1}{z}, xmm2/m64 | EVEX.256.66.0F38.WIG 34 /r
  VPMOVZXWQ zmm1 {k1}{z}, xmm2/m128 | EVEX.512.66.0F38.WIG 34 /r

Category
  sse41,simdint,conver
Operands
  Vdq,Md | Vdq,Udq
Opcode
  0x660F3834 /r | 0x660F3834 /r
CPU
  C2++
Documented
  D43
Tested by
  t5678

    IiyVPMOVZXWQ:: PROC
        IiEmitOpcode 0x34
        JMP IiyVPMOVSXBD.QVM:
       ENDP IiyVPMOVZXWQ::

↑ VPMOVZXDQ
  Packed Move with Zero Extend
Intel reference

  VPMOVZXDQ xmm1, xmm2/m64 | VEX.128.66.0F38.WIG 35 /r
  VPMOVZXDQ ymm1, xmm2/m128 | VEX.256.66.0F38.WIG 35 /r
  VPMOVZXDQ xmm1 {k1}{z}, xmm2/m64 | EVEX.128.66.0F38.W0 35 /r
  VPMOVZXDQ ymm1 {k1}{z}, xmm2/m128 | EVEX.256.66.0F38.W0 35 /r
  VPMOVZXDQ zmm1 {k1}{z}, ymm2/m256 | EVEX.512.66.0F38.W0 35 /r

Category
  sse41,simdint,conver
Operands
  Vdq,Mq | Vdq,Udq
Opcode
  0x660F3835 /r | 0x660F3835 /r
CPU
  C2++
Documented
  D43
Tested by
  t5678

    IiyVPMOVZXDQ:: PROC
        IiEmitOpcode 0x35
        JMP IiyVPMOVSXBW.HVM:
      ENDP IiyVPMOVZXDQ::

↑ VPMULDQ
  Multiply Packed Signed Dword Integers
Intel reference

  VPMULDQ xmm1, xmm2, xmm3/m128 | VEX.NDS.128.66.0F38.WIG 28 /r
  VPMULDQ ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F38.WIG 28 /r
  VPMULDQ xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst | EVEX.NDS.128.66.0F38.W1 28 /r
  VPMULDQ ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst | EVEX.NDS.256.66.0F38.W1 28 /r
  VPMULDQ zmm1 {k1}{z}, zmm2, zmm3/m512/m64bcst | EVEX.NDS.512.66.0F38.W1 28 /r

Category
  sse41,simdint,arith
Operands
  Vdq,Wdq
Opcode
  0x660F3828 /r
CPU
  C2++
Documented
  D43
Tested by
  t5680

    IiyVPMULDQ:: PROC
        IiAllowModifier MASK,DATA
        IiAllowBroadcasting QWORD
        IiEmitOpcode 0x28
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FV64
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, zmm.zmm.zmm, zmm.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix VEX.NDS.128.66.0F38.WIG, EVEX.NDS.128.66.0F38.W1
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix VEX.NDS.256.66.0F38.WIG, EVEX.NDS.256.66.0F38.W1
        RET
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F38.W1
        RET
      ENDP IiyVPMULDQ::

↑ VPMULHRSW
  Packed Multiply High with Round and Scale
Intel reference

  VPMULHRSW xmm1, xmm2, xmm3/m128 | VEX.NDS.128.66.0F38 0B /r
  VPMULHRSW ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F38 0B /r
  VPMULHRSW xmm1 {k1}{z}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F38.WIG 0B /r
  VPMULHRSW ymm1 {k1}{z}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F38.WIG 0B /r
  VPMULHRSW zmm1 {k1}{z}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F38.WIG 0B /r

Category
  ssse3,simdint
Operands
  Pq,Qq | Vdq,Wdq
Opcode
  0x0F380B /r | 0x660F380B /r
CPU
  C2+

    IiyVPMULHRSW:: PROC
        IiAllowModifier MASK,DATA
        IiEmitOpcode 0x0B
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FVM
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, zmm.zmm.zmm, zmm.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix VEX.NDS.128.66.0F38, EVEX.NDS.128.66.0F38.WIG
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix VEX.NDS.256.66.0F38, EVEX.NDS.256.66.0F38.WIG
        RET
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F38.WIG
        RET
      ENDP IiyVPMULHRSW::

↑ VPMULHUW
  Multiply Packed Unsigned Integers and Store High Result
Intel reference

  VPMULHUW xmm1, xmm2, xmm3/m128 | VEX.NDS.128.66.0F E4 /r
  VPMULHUW ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F E4 /r
  VPMULHUW xmm1 {k1}{z}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F.WIG E4 /r
  VPMULHUW ymm1 {k1}{z}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F.WIG E4 /r
  VPMULHUW zmm1 {k1}{z}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F.WIG E4 /r

Category
  sse1,simdint
Operands
  Pq,Qq | Vdq,Wdq
Opcode
  0x0FE4 /r | 0x660FE4 /r
CPU
  P3+

    IiyVPMULHUW:: PROC
        IiAllowModifier MASK,DATA
        IiEmitOpcode 0xE4
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FVM
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, zmm.zmm.zmm, zmm.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix VEX.NDS.128.66.0F, EVEX.NDS.128.66.0F.WIG
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix VEX.NDS.256.66.0F, EVEX.NDS.256.66.0F.WIG
        RET
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F.WIG
        RET
      ENDP IiyVPMULHUW::

↑ VPMULHW
  Multiply Packed Signed Integers and Store High Result
Intel reference

  VPMULHW xmm1, xmm2, xmm3/m128 | VEX.NDS.128.66.0F E5 /r
  VPMULHW ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F E5 /r
  VPMULHW xmm1 {k1}{z}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F.WIG E5 /r
  VPMULHW ymm1 {k1}{z}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F.WIG E5 /r
  VPMULHW zmm1 {k1}{z}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F.WIG E5 /r

Category
  mmx,arith
Operands
  Pq,Qq | Vdq,Wdq
Opcode
  0x0FE5 /r | 0x660FE5 /r
CPU
  PX+

    IiyVPMULHW:: PROC
        IiAllowModifier MASK,DATA
        IiEmitOpcode 0xE5
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FVM
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, zmm.zmm.zmm, zmm.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix VEX.NDS.128.66.0F, EVEX.NDS.128.66.0F.WIG
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix VEX.NDS.256.66.0F, EVEX.NDS.256.66.0F.WIG
        RET
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F.WIG
        RET
      ENDP IiyVPMULHW::

↑ VPMULLD
  Multiply Packed Signed Dword Integers and Store Low Result
Intel reference

  VPMULLD xmm1, xmm2, xmm3/m128 | VEX.NDS.128.66.0F38.WIG 40 /r
  VPMULLD ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F38.WIG 40 /r
  VPMULLD xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst | EVEX.NDS.128.66.0F38.W0 40 /r
  VPMULLD ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst | EVEX.NDS.256.66.0F38.W0 40 /r
  VPMULLD zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst | EVEX.NDS.512.66.0F38.W0 40 /r
  VPMULLD zmm1 {k1}, zmm2, zmm3/m512/m32bcst | MVEX.NDS.512.66.0F38.W0 40 /r

Category
  sse41,simdint,arith
Operands
  Vdq,Wdq
Opcode
  0x660F3840 /r
CPU
  C2++
Documented
  D43
Tested by
  t5680

    IiyVPMULLD:: PROC
        IiAllowModifier MASK,DATA
        IiAllowBroadcasting DWORD
        IiEmitOpcode 0x40
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FV32
        IiDisp8MVEX Si32
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, zmm.zmm.zmm, zmm.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix VEX.NDS.128.66.0F38.WIG, EVEX.NDS.128.66.0F38.W0
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix VEX.NDS.256.66.0F38.WIG, EVEX.NDS.256.66.0F38.W0
        RET
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F38.W0, MVEX.NDS.512.66.0F38.W0
        RET
      ENDP IiyVPMULLD::

↑ VPMULLQ
  Multiply Packed QWORD Signed Integers and Store Low Result
Intel reference

  VPMULLQ xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst | EVEX.NDS.128.66.0F38.W1 40 /r
  VPMULLQ ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst | EVEX.NDS.256.66.0F38.W1 40 /r
  VPMULLQ zmm1 {k1}{z}, zmm2, zmm3/m512/m64bcst | EVEX.NDS.512.66.0F38.W1 40 /r

Opcode
  0x40
Tested by
  t5680

                        array(),
    IiyVPMULLQ:: PROC
        IiAllowModifier MASK,DATA
        IiAllowBroadcasting QWORD
        IiEmitOpcode 0x40
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FV64
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, zmm.zmm.zmm, zmm.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix EVEX.NDS.128.66.0F38.W1
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix EVEX.NDS.256.66.0F38.W1
        RET
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F38.W1
        RET
      ENDP IiyVPMULLQ::

↑ VPMULLW
  Multiply Packed Signed Integers and Store Low Result
Intel reference

  VPMULLW xmm1, xmm2, xmm3/m128 | VEX.NDS.128.66.0F D5 /r
  VPMULLW ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F D5 /r
  VPMULLW xmm1 {k1}{z}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F.WIG D5 /r
  VPMULLW ymm1 {k1}{z}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F.WIG D5 /r
  VPMULLW zmm1 {k1}{z}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F.WIG D5 /r

Category
  mmx,arith
Operands
  Pq,Qq | Vdq,Wdq
Opcode
  0x0FD5 /r | 0x660FD5 /r
CPU
  PX+

    IiyVPMULLW:: PROC
        IiAllowModifier MASK,DATA
        IiEmitOpcode 0xD5
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FVM
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, zmm.zmm.zmm, zmm.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix VEX.NDS.128.66.0F, EVEX.NDS.128.66.0F.WIG
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix VEX.NDS.256.66.0F, EVEX.NDS.256.66.0F.WIG
        RET
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F.WIG
        RET
      ENDP IiyVPMULLW::

↑ VPAVGB
  Average Packed unsigned BYTE Integers
Intel reference

  VPAVGB xmm1, xmm2, xmm3/m128 | VEX.NDS.128.66.0F E0 /r
  VPAVGB ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F E0 /r
  VPAVGB xmm1 {k1}{z}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F.WIG E0 /r
  VPAVGB ymm1 {k1}{z}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F.WIG E0 /r
  VPAVGB zmm1 {k1}{z}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F.WIG E0 /r

Category
  sse1,simdint
Operands
  Pq,Qq | Vdq,Wdq
Opcode
  0x0FE0 /r | 0x660FE0 /r
CPU
  P3+
Tested by
  t5684

    IiyVPAVGB:: PROC
        IiEncoding DATA=BYTE
        IiAllowModifier MASK,DATA
        IiEmitOpcode 0xE0
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FVM
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, zmm.zmm.zmm, zmm.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix VEX.NDS.128.66.0F, EVEX.NDS.128.66.0F.WIG
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix VEX.NDS.256.66.0F, EVEX.NDS.256.66.0F.WIG
        RET
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F.WIG
        RET
      ENDP IiyVPAVGB::

↑ VPAVGW
  Average Packed unsigned WORD Integers
Intel reference

  VPAVGW xmm1, xmm2, xmm3/m128 | VEX.NDS.128.66.0F E3 /r
  VPAVGW ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F E3 /r
  VPAVGW xmm1 {k1}{z}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F.WIG E3 /r
  VPAVGW ymm1 {k1}{z}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F.WIG E3 /r
  VPAVGW zmm1 {k1}{z}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F.WIG E3 /r

Category
  sse1,simdint
Operands
  Pq,Qq | Vdq,Wdq
Opcode
  0x0FE3 /r | 0x660FE3 /r
CPU
  P3+
Tested by
  t5684

    IiyVPAVGW:: PROC
        IiEncoding DATA=WORD
        IiAllowModifier MASK,DATA
        IiEmitOpcode 0xE3
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FVM
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, zmm.zmm.zmm, zmm.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix VEX.NDS.128.66.0F, EVEX.NDS.128.66.0F.WIG
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix VEX.NDS.256.66.0F, EVEX.NDS.256.66.0F.WIG
        RET
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F.WIG
        RET
      ENDP IiyVPAVGW::

↑ VPMASKMOVD
  Conditional SIMD Integer Packed Loads and Stores
Intel reference

  VPMASKMOVD xmm1, xmm2, m128 | VEX.NDS.128.66.0F38.W0 8C /r
  VPMASKMOVD ymm1, ymm2, m256 | VEX.NDS.256.66.0F38.W0 8C /r
  VPMASKMOVD m128, xmm1, xmm2 | VEX.NDS.128.66.0F38.W0 8E /r
  VPMASKMOVD m256, ymm1, ymm2 | VEX.NDS.256.66.0F38.W0 8E /r

Opcode
  0x8C | 0x8E
Tested by
  t5468 t5668

    IiyVPMASKMOVD:: PROC
        IiAllowModifier DATA
        IiModRM /r
        CMP DL,mem
        JE .M:
        IiEmitOpcode 0x8E
        IiOpEn MVR
        IiDispatchFormat mem.xmm.xmm, mem.ymm.ymm
    .M: IiEmitOpcode 0x8C ; The last operand is in memory.
        IiOpEn RVM
        IiDispatchFormat  xmm.xmm.mem, ymm.ymm.mem
    .xmm.xmm.mem:
    .mem.xmm.xmm:
        IiEmitPrefix VEX.NDS.128.66.0F38.W0
        RET
    .ymm.ymm.mem:
    .mem.ymm.ymm:
        IiEmitPrefix VEX.NDS.256.66.0F38.W0
        RET
      ENDP IiyVPMASKMOVD::

↑ VPMASKMOVQ
  Conditional SIMD Integer Packed Loads and Stores
Intel reference

  VPMASKMOVQ xmm1, xmm2, m128 | VEX.NDS.128.66.0F38.W1 8C /r
  VPMASKMOVQ ymm1, ymm2, m256 | VEX.NDS.256.66.0F38.W1 8C /r
  VPMASKMOVQ m128, xmm1, xmm2 | VEX.NDS.128.66.0F38.W1 8E /r
  VPMASKMOVQ m256, ymm1, ymm2 | VEX.NDS.256.66.0F38.W1 8E /r

Opcode
  0x8C | 0x8E
Tested by
  t5468 t5668

    IiyVPMASKMOVQ:: PROC
        IiAllowModifier DATA
        IiModRM /r
        CMP DL,mem
        JE .M:
        IiEmitOpcode 0x8E
        IiOpEn MVR
        IiDispatchFormat mem.xmm.xmm, mem.ymm.ymm
    .M: IiEmitOpcode 0x8C ; The last operand is in memory.
        IiOpEn RVM
        IiDispatchFormat  xmm.xmm.mem, ymm.ymm.mem
    .xmm.xmm.mem:
    .mem.xmm.xmm:
        IiEmitPrefix VEX.NDS.128.66.0F38.W1
        RET
    .ymm.ymm.mem:
    .mem.ymm.ymm:
        IiEmitPrefix VEX.NDS.256.66.0F38.W1
        RET
      ENDP IiyVPMASKMOVQ::

↑ VMASKMOVPS
  Conditional SIMD Packed Loads and Stores
Intel reference

  VMASKMOVPS xmm1, xmm2, m128 | VEX.NDS.128.66.0F38.W0 2C /r
  VMASKMOVPS ymm1, ymm2, m256 | VEX.NDS.256.66.0F38.W0 2C /r
  VMASKMOVPS m128,xmm1, xmm2 | VEX.NDS.128.66.0F38.W0 2E /r
  VMASKMOVPS m256,ymm1, ymm2 | VEX.NDS.256.66.0F38.W0 2E /r

Opcode
  0x2C | 0x2E
Tested by
  t5668

    IiyVMASKMOVPS:: PROC
        IiAllowModifier DATA
        IiModRM /r
        CMP DL,mem
        JE .M:
        IiEmitOpcode 0x2E
        IiOpEn MVR
        IiDispatchFormat  mem.xmm.xmm, mem.ymm.ymm
    .M: IiEmitOpcode 0x2C
        IiOpEn RVM
        IiDispatchFormat  xmm.xmm.mem, ymm.ymm.mem
    .mem.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix VEX.NDS.128.66.0F38.W0
        RET
    .mem.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix VEX.NDS.256.66.0F38.W0
        RET
      ENDP IiyVMASKMOVPS::

↑ VMASKMOVPD
  Conditional SIMD Packed Loads and Stores
Intel reference

  VMASKMOVPD xmm1, xmm2, m128 | VEX.NDS.128.66.0F38.W0 2D /r
  VMASKMOVPD ymm1, ymm2, m256 | VEX.NDS.256.66.0F38.W0 2D /r
  VMASKMOVPD m128, xmm1, xmm2 | VEX.NDS.128.66.0F38.W0 2F /r
  VMASKMOVPD m256, ymm1, ymm2 | VEX.NDS.256.66.0F38.W0 2F /r

Opcode
  0x2D | 0x2F
Tested by
  t5668

    IiyVMASKMOVPD:: PROC
        IiAllowModifier DATA
        IiModRM /r
        CMP DL,mem
        JE .M:
        IiEmitOpcode 0x2F
        IiOpEn MVR
        IiDispatchFormat  mem.xmm.xmm, mem.ymm.ymm
    .M: IiEmitOpcode 0x2D
        IiOpEn RVM
        IiDispatchFormat  xmm.xmm.mem, ymm.ymm.mem
    .mem.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix VEX.NDS.128.66.0F38.W0
        RET
    .mem.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix VEX.NDS.256.66.0F38.W0
        RET
      ENDP IiyVMASKMOVPD::

↑ VMASKMOVDQU
  Store Selected Bytes of Double Quadword
Intel reference

  VMASKMOVDQU xmm1, xmm2 | VEX.128.66.0F.WIG F7 /r

Category
  sse2,cachect
Operands
  BDdq ,Vdq,Udq
Opcode
  0x660FF7 /r
CPU
  P4+
Tested by
  t5668

    IiyVMASKMOVDQU:: PROC
        IiEmitOpcode 0xF7
        IiOpEn RM
        IiModRM /r
        IiDispatchFormat  xmm.xmm
    .xmm.xmm:
        IiEmitPrefix VEX.128.66.0F.WIG
        RET
      ENDP IiyVMASKMOVDQU::

↑ VPMOVMSKB
  Move Byte Mask
Intel reference

  VPMOVMSKB reg, xmm1 | VEX.128.66.0F.WIG D7 /r
  VPMOVMSKB reg, ymm1 | VEX.256.66.0F.WIG D7 /r

Category
  sse1,simdint
Operands
  Gdqp,Nq | Gdqp,Udq
Opcode
  0x0FD7 /r | 0x660FD7 /r
CPU
  P3+
Tested by
  t5668

    IiyVPMOVMSKB:: PROC
        IiEmitOpcode 0xD7
        IiOpEn RM
        IiModRM /r
        IiDispatchFormat  r32.xmm, r32.ymm, r64.xmm, r64.ymm
    .r32.xmm:
    .r64.xmm:
        IiEmitPrefix VEX.128.66.0F.WIG
        RET
    .r32.ymm:
    .r64.ymm:
        IiEmitPrefix VEX.256.66.0F.WIG
        RET
      ENDP IiyVPMOVMSKB::

↑ VPBLENDW
  Blend Packed Words
Intel reference

  VPBLENDW xmm1, xmm2, xmm3/m128, imm8 | VEX.NDS.128.66.0F3A.WIG 0E /r ib
  VPBLENDW ymm1, ymm2, ymm3/m256, imm8 | VEX.NDS.256.66.0F3A.WIG 0E /r ib

Category
  sse41,simdint,datamov
Operands
  Vdq,Wdq,Ib
Opcode
  0x660F3A0E /r
CPU
  C2++
Documented
  D43
Tested by
  t5256

    IiyVPBLENDW:: PROC
        IiEmitOpcode 0x0E
    .op:IiOpEn RVM
        IiAllowModifier DATA,IMM
        IiModRM /r
        IiEmitImm Operand4, BYTE
        IiDispatchFormat  xmm.xmm.xmm.imm, xmm.xmm.mem.imm, ymm.ymm.ymm.imm, ymm.ymm.mem.imm
    .xmm.xmm.xmm.imm:
    .xmm.xmm.mem.imm:
        IiEmitPrefix VEX.NDS.128.66.0F3A.WIG
        RET
    .ymm.ymm.ymm.imm:
    .ymm.ymm.mem.imm:
        IiEmitPrefix VEX.NDS.256.66.0F3A.WIG
        RET
      ENDP IiyVPBLENDW::

↑ VPBLENDD
  Blend Packed Dwords
Description
  VPBLENDD
Intel reference

  VPBLENDD xmm1, xmm2, xmm3/m128, imm8 | VEX.NDS.128.66.0F3A.W0 02 /r ib
  VPBLENDD ymm1, ymm2, ymm3/m256, imm8 | VEX.NDS.256.66.0F3A.W0 02 /r ib

Opcode
  0x02
Tested by
  t5256

    IiyVPBLENDD:: PROC
        IiEmitOpcode 0x02
        JMP IiyVPBLENDW.op:
      ENDP IiyVPBLENDD::

↑ VBLENDPS
  Blend Packed Single-FP Values
Intel reference

  VBLENDPS xmm1, xmm2, xmm3/m128, imm8 | VEX.NDS.128.66.0F3A.WIG 0C /r ib
  VBLENDPS ymm1, ymm2, ymm3/m256, imm8 | VEX.NDS.256.66.0F3A.WIG 0C /r ib

Category
  sse41,simdfp,datamov
Operands
  Vps,Wps,Ib
Opcode
  0x660F3A0C /r
CPU
  C2++
Documented
  D43
Tested by
  t5256

    IiyVBLENDPS:: PROC
        IiEmitOpcode 0x0C
        JMP IiyVPBLENDW.op:
      ENDP IiyVBLENDPS::

↑ VBLENDPD
  Blend Packed Double-FP Values
Intel reference

  VBLENDPD xmm1, xmm2, xmm3/m128, imm8 | VEX.NDS.128.66.0F3A.WIG 0D /r ib
  VBLENDPD ymm1, ymm2, ymm3/m256, imm8 | VEX.NDS.256.66.0F3A.WIG 0D /r ib

Category
  sse41,simdfp,datamov
Operands
  Vpd,Wpd,Ib
Opcode
  0x660F3A0D /r
CPU
  C2++
Documented
  D43
Tested by
  t5256

    IiyVBLENDPD:: PROC
        IiEmitOpcode 0x0D
        JMP IiyVPBLENDW.op:
      ENDP IiyVBLENDPD::

↑ VBLENDVPS
  Variable Blend Packed Single-FP Values
Intel reference

  VBLENDVPS xmm1, xmm2, xmm3/m128, xmm4 | VEX.NDS.128.66.0F3A.W0 4A /r /is4
  VBLENDVPS ymm1, ymm2, ymm3/m256, ymm4 | VEX.NDS.256.66.0F3A.W0 4A /r /is4

Category
  sse41,simdint,datamov
Operands
  Vps,Wps,XMM0
Opcode
  0x660F3814 /r
CPU
  C2++
Documented
  D43
Tested by
  t5258

    IiyVBLENDVPS:: PROC
        IiEmitOpcode 0x4A
    .op:IiOpEn RVM
        IiAllowModifier DATA
        IiModRM /r
        IiIs4 Operand4
        IiDispatchFormat  xmm.xmm.xmm.xmm, xmm.xmm.mem.xmm, ymm.ymm.ymm.ymm, ymm.ymm.mem.ymm
    .xmm.xmm.xmm.xmm:
    .xmm.xmm.mem.xmm:
        IiEmitPrefix VEX.NDS.128.66.0F3A.W0
        RET
    .ymm.ymm.ymm.ymm:
    .ymm.ymm.mem.ymm:
        IiEmitPrefix VEX.NDS.256.66.0F3A.W0
        RET
      ENDP IiyVBLENDVPS::

↑ VBLENDVPD
  Variable Blend Packed Double-FP Values
Intel reference

  VBLENDVPD xmm1, xmm2, xmm3/m128, xmm4 | VEX.NDS.128.66.0F3A.W0 4B /r /is4
  VBLENDVPD ymm1, ymm2, ymm3/m256, ymm4 | VEX.NDS.256.66.0F3A.W0 4B /r /is4

Category
  sse41,simdint,datamov
Operands
  Vpd,Wpd,XMM0
Opcode
  0x660F3815 /r
CPU
  C2++
Documented
  D43
Tested by
  t5258

    IiyVBLENDVPD:: PROC
        IiEmitOpcode 0x4B
        JMP IiyVBLENDVPS.op:
      ENDP IiyVBLENDVPD::

↑ VPBLENDVB
  Variable Blend Packed Bytes
Intel reference

  VPBLENDVB xmm1, xmm2, xmm3/m128, xmm4 | VEX.NDS.128.66.0F3A.W0 4C /r /is4
  VPBLENDVB ymm1, ymm2, ymm3/m256, ymm4 | VEX.NDS.256.66.0F3A.W0 4C /r /is4

Category
  sse41,simdint,datamov
Operands
  Vdq,Wdq,XMM0
Opcode
  0x660F3810 /r
CPU
  C2++
Documented
  D43
Tested by
  t5258

    IiyVPBLENDVB:: PROC
        IiEmitOpcode 0x4C
        JMP IiyVBLENDVPS.op:
      ENDP IiyVPBLENDVB::

↑ VLDDQU
  Load Unaligned Integer 128 Bits
Intel reference

  VLDDQU xmm1, m128 | VEX.128.F2.0F.WIG F0 /r
  VLDDQU ymm1, m256 | VEX.256.F2.0F.WIG F0 /r

Category
  sse3,cachect
Operands
  Vdq,Mdq
Opcode
  0xF20FF0 /r
CPU
  P4++
See also
  VLDQQU.
Tested by
  t5470

    IiyVLDDQU:: PROC
        IiEmitOpcode 0xF0
        IiOpEn RM
        IiModRM /r
        IiDispatchFormat  xmm.mem, ymm.mem
    .xmm.mem:
        IiEmitPrefix VEX.128.F2.0F.WIG
        RET
    .ymm.mem:
        IiEmitPrefix VEX.256.F2.0F.WIG
        RET
      ENDP IiyVLDDQU::

↑ VLDQQU
  Load Unaligned Integer 256 Bits
Intel reference

  VLDQQU ymm1, m256 | VEX.256.F2.0F.WIG F0 /r

Opcode
  0xF0
Documented
  UNDOC, see NASM
See also
  VLDDQU.
Tested by
  t5470

    IiyVLDQQU:: PROC
        IiRequire UNDOC
        IiDispatchFormat  ymm.mem
    .ymm.mem: JMP IiyVLDDQU:
      ENDP IiyVLDQQU::

↑ VLDMXCSR
  Load MXCSR Register
Intel reference

  VLDMXCSR m32 | VEX.LZ.0F.WIG AE /2

Category
  sse1,mxcsrsm
Operands
  Md
Opcode
  0x0FAE /2
CPU
  P3+
Tested by
  t3700

    IiyVLDMXCSR:: PROC
        IiAllowModifier DATA
        IiEmitOpcode 0xAE
        IiOpEn M
        IiModRM /2
        IiEncoding DATA=DWORD
        IiDispatchFormat  mem
    .mem:
        IiEmitPrefix VEX.LZ.0F.WIG
        RET
      ENDP IiyVLDMXCSR::

↑ VSTMXCSR
  Store MXCSR Register State
Intel reference

  VSTMXCSR m32 | VEX.LZ.0F.WIG AE /3

Category
  sse1,mxcsrsm
Operands
  Md
Opcode
  0x0FAE /3
CPU
  P3+
Tested by
  t3700

    IiyVSTMXCSR:: PROC
        IiAllowModifier DATA
        IiEmitOpcode 0xAE
        IiOpEn M
        IiModRM /3
        IiEncoding DATA=DWORD
        IiDispatchFormat  mem
    .mem:
        IiEmitPrefix VEX.LZ.0F.WIG
        RET
      ENDP IiyVSTMXCSR::

↑ VRSQRTSS
  Compute Recipr. of Square Root of Scalar Single-FP Value
Intel reference

  VRSQRTSS xmm1, xmm2, xmm3/m32 | VEX.NDS.LIG.F3.0F.WIG 52 /r

Category
  sse1,simdfp,arith
Operands
  Vss,Wss
Opcode
  0xF30F52 /r
CPU
  P3+
Tested by
  t5655

    IiyVRSQRTSS:: PROC
        IiEmitOpcode 0x52
    .op:IiOpEn RVM
        IiModRM /r
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix VEX.NDS.LIG.F3.0F.WIG
        RET
      ENDP IiyVRSQRTSS::

↑ VRCPSS
  Compute Reciprocal of Scalar Single-FP Values
Intel reference

  VRCPSS xmm1, xmm2, xmm3/m32 | VEX.NDS.LIG.F3.0F.WIG 53 /r

Category
  sse1,simdfp,arith
Operands
  Vss,Wss
Opcode
  0xF30F53 /r
CPU
  P3+
Tested by
  t5655

    IiyVRCPSS:: PROC
        IiEmitOpcode 0x53
        JMP IiyVRSQRTSS.op:
      ENDP IiyVRCPSS::

↑ VRSQRTPS
  Compute Recipr. of Square Roots of Packed Single-FP Values
Intel reference

  VRSQRTPS xmm1, xmm2/m128 | VEX.128.0F.WIG 52 /r
  VRSQRTPS ymm1, ymm2/m256 | VEX.256.0F.WIG 52 /r

Category
  sse1,simdfp,arith
Operands
  Vps,Wps
Opcode
  0x0F52 /r
CPU
  P3+
Tested by
  t5655

    IiyVRSQRTPS:: PROC
        IiEmitOpcode 0x52
    .op:IiOpEn RM
        IiAllowModifier DATA
        IiModRM /r
        IiDispatchFormat  xmm.xmm, xmm.mem, ymm.ymm, ymm.mem
    .xmm.xmm:
    .xmm.mem:
        IiEmitPrefix VEX.128.0F.WIG
        RET
    .ymm.ymm:
    .ymm.mem:
        IiEmitPrefix VEX.256.0F.WIG
        RET
      ENDP IiyVRSQRTPS::

↑ VRCPPS
  Compute Reciprocals of Packed Single-FP Values
Intel reference

  VRCPPS xmm1, xmm2/m128 | VEX.128.0F.WIG 53 /r
  VRCPPS ymm1, ymm2/m256 | VEX.256.0F.WIG 53 /r

Category
  sse1,simdfp,arith
Operands
  Vps,Wps
Opcode
  0x0F53 /r
CPU
  P3+
Tested by
  t5655

    IiyVRCPPS:: PROC
        IiEmitOpcode 0x53
        JMP IiyVRSQRTPS.op:
      ENDP IiyVRCPPS::

↑ VUNPCKLPS
  Unpack and Interleave Low Packed Single-FP Values
Intel reference

  VUNPCKLPS xmm1,xmm2, xmm3/m128 | VEX.NDS.128.0F.WIG 14 /r
  VUNPCKLPS ymm1,ymm2,ymm3/m256 | VEX.NDS.256.0F.WIG 14 /r
  VUNPCKLPS xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst | EVEX.NDS.128.0F.W0 14 /r
  VUNPCKLPS ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst | EVEX.NDS.256.0F.W0 14 /r
  VUNPCKLPS zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst | EVEX.NDS.512.0F.W0 14 /r

Category
  sse1,simdfp,shunpck
Operands
  Vps,Wq
Opcode
  0x0F14 /r
CPU
  P3+

    IiyVUNPCKLPS:: PROC
        IiEmitOpcode 0x14
    .op:IiAllowModifier MASK,DATA
        IiAllowBroadcasting DWORD
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FV32
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, zmm.zmm.zmm, zmm.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix VEX.NDS.128.0F.WIG, EVEX.NDS.128.0F.W0
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix VEX.NDS.256.0F.WIG, EVEX.NDS.256.0F.W0
        RET
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.0F.W0
        RET
      ENDP IiyVUNPCKLPS::

↑ VUNPCKHPS
  Unpack and Interleave High Packed Single-FP Values
Intel reference

  VUNPCKHPS xmm1, xmm2, xmm3/m128 | VEX.NDS.128.0F.WIG 15 /r
  VUNPCKHPS ymm1, ymm2, ymm3/m256 | VEX.NDS.256.0F.WIG 15 /r
  VUNPCKHPS xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst | EVEX.NDS.128.0F.W0 15 /r
  VUNPCKHPS ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst | EVEX.NDS.256.0F.W0 15 /r
  VUNPCKHPS zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst | EVEX.NDS.512.0F.W0 15 /r

Category
  sse1,simdfp,shunpck
Operands
  Vps,Wq
Opcode
  0x0F15 /r
CPU
  P3+

    IiyVUNPCKHPS:: PROC
        IiEmitOpcode 0x15
        JMP IiyVUNPCKLPS.op:
      ENDP IiyVUNPCKHPS::

↑ VUNPCKLPD
  Unpack and Interleave Low Packed Double-FP Values
Intel reference

  VUNPCKLPD xmm1,xmm2, xmm3/m128 | VEX.NDS.128.66.0F.WIG 14 /r
  VUNPCKLPD ymm1,ymm2, ymm3/m256 | VEX.NDS.256.66.0F.WIG 14 /r
  VUNPCKLPD xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst | EVEX.NDS.128.66.0F.W1 14 /r
  VUNPCKLPD ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst | EVEX.NDS.256.66.0F.W1 14 /r
  VUNPCKLPD zmm1 {k1}{z}, zmm2, zmm3/m512/m64bcst | EVEX.NDS.512.66.0F.W1 14 /r

Category
  sse2,pcksclr,shunpck
Operands
  Vpd,Wpd
Opcode
  0x660F14 /r
CPU
  P4+

    IiyVUNPCKLPD:: PROC
        IiEmitOpcode 0x14
    .op:IiAllowModifier MASK,DATA
        IiAllowBroadcasting QWORD
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FV64
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, zmm.zmm.zmm, zmm.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix VEX.NDS.128.66.0F.WIG, EVEX.NDS.128.66.0F.W1
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix VEX.NDS.256.66.0F.WIG, EVEX.NDS.256.66.0F.W1
        RET
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F.W1
        RET
      ENDP IiyVUNPCKLPD::

↑ VUNPCKHPD
  Unpack and Interleave High Packed Double-FP Values
Intel reference

  VUNPCKHPD xmm1,xmm2, xmm3/m128 | VEX.NDS.128.66.0F.WIG 15 /r
  VUNPCKHPD ymm1,ymm2, ymm3/m256 | VEX.NDS.256.66.0F.WIG 15 /r
  VUNPCKHPD xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst | EVEX.NDS.128.66.0F.W1 15 /r
  VUNPCKHPD ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst | EVEX.NDS.256.66.0F.W1 15 /r
  VUNPCKHPD zmm1 {k1}{z}, zmm2, zmm3/m512/m64bcst | EVEX.NDS.512.66.0F.W1 15 /r

Category
  sse2,pcksclr,shunpck
Operands
  Vpd,Wpd
Opcode
  0x660F15 /r
CPU
  P4+

    IiyVUNPCKHPD:: PROC
        IiEmitOpcode 0x15
        JMP IiyVUNPCKLPD.op:
      ENDP IiyVUNPCKHPD::

↑ VPUNPCKLBW
  Unpack Low Data
Intel reference

  VPUNPCKLBW xmm1,xmm2, xmm3/m128 | VEX.NDS.128.66.0F.WIG 60 /r
  VPUNPCKLBW ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F.WIG 60 /r
  VPUNPCKLBW xmm1 {k1}{z}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F.WIG 60 /r
  VPUNPCKLBW ymm1 {k1}{z}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F.WIG 60 /r
  VPUNPCKLBW zmm1 {k1}{z}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F.WIG 60 /r

Category
  mmx,unpack
Operands
  Pq,Qd | Vdq,Wdq
Opcode
  0x0F60 /r | 0x660F60 /r
CPU
  PX+
Tested by
  t5692

    IiyVPUNPCKLBW:: PROC
        IiEmitOpcode 0x60
    .op:IiAllowModifier MASK,DATA
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FVM
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, zmm.zmm.zmm, zmm.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix VEX.NDS.128.66.0F.WIG, EVEX.NDS.128.66.0F.WIG
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix VEX.NDS.256.66.0F.WIG, EVEX.NDS.256.66.0F.WIG
        RET
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F.WIG
        RET
      ENDP IiyVPUNPCKLBW::

↑ VPUNPCKLWD
  Unpack Low Data
Intel reference

  VPUNPCKLWD xmm1,xmm2, xmm3/m128 | VEX.NDS.128.66.0F.WIG 61 /r
  VPUNPCKLWD ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F.WIG 61 /r
  VPUNPCKLWD xmm1 {k1}{z}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F.WIG 61 /r
  VPUNPCKLWD ymm1 {k1}{z}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F.WIG 61 /r
  VPUNPCKLWD zmm1 {k1}{z}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F.WIG 61 /r

Category
  mmx,unpack
Operands
  Pq,Qd | Vdq,Wdq
Opcode
  0x0F61 /r | 0x660F61 /r
CPU
  PX+
Tested by
  t5692

    IiyVPUNPCKLWD:: PROC
        IiEmitOpcode 0x61
        JMP IiyVPUNPCKLBW.op:
      ENDP IiyVPUNPCKLWD::

↑ VPUNPCKLDQ
  Unpack Low Data
Intel reference

  VPUNPCKLDQ xmm1, xmm2, xmm3/m128 | VEX.NDS.128.66.0F.WIG 62 /r
  VPUNPCKLDQ ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F.WIG 62 /r
  VPUNPCKLDQ xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst | EVEX.NDS.128.66.0F.W0 62 /r
  VPUNPCKLDQ ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst | EVEX.NDS.256.66.0F.W0 62 /r
  VPUNPCKLDQ zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst | EVEX.NDS.512.66.0F.W0 62 /r

Category
  mmx,unpack
Operands
  Pq,Qd | Vdq,Wdq
Opcode
  0x0F62 /r | 0x660F62 /r
CPU
  PX+
Tested by
  t5692

    IiyVPUNPCKLDQ:: PROC
        IiEmitOpcode 0x62
    .op:IiAllowModifier MASK,DATA
        IiAllowBroadcasting DWORD
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FV32
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, zmm.zmm.zmm, zmm.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix VEX.NDS.128.66.0F.WIG, EVEX.NDS.128.66.0F.W0
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix VEX.NDS.256.66.0F.WIG, EVEX.NDS.256.66.0F.W0
        RET
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F.W0
        RET
      ENDP IiyVPUNPCKLDQ::

↑ VPUNPCKLQDQ
  Unpack Low Data
Intel reference

  VPUNPCKLQDQ xmm1, xmm2, xmm3/m128 | VEX.NDS.128.66.0F.WIG 6C /r
  VPUNPCKLQDQ ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F.WIG 6C /r
  VPUNPCKLQDQ xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst | EVEX.NDS.128.66.0F.W1 6C /r
  VPUNPCKLQDQ ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst | EVEX.NDS.256.66.0F.W1 6C /r
  VPUNPCKLQDQ zmm1 {k1}{z}, zmm2, zmm3/m512/m64bcst | EVEX.NDS.512.66.0F.W1 6C /r

Category
  sse2,simdint,shunpck
Operands
  Vdq,Wdq
Opcode
  0x660F6C /r
CPU
  P4+
Tested by
  t5692

    IiyVPUNPCKLQDQ:: PROC
        IiEmitOpcode 0x6C
        JMP IiyVUNPCKLPD.op:
      ENDP IiyVPUNPCKLQDQ::

↑ VPUNPCKHBW
  Unpack High Data
Intel reference

  VPUNPCKHBW xmm1,xmm2, xmm3/m128 | VEX.NDS.128.66.0F.WIG 68 /r
  VPUNPCKHBW ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F.WIG 68 /r
  VPUNPCKHBW xmm1 {k1}{z}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F.WIG 68 /r
  VPUNPCKHBW ymm1 {k1}{z}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F.WIG 68 /r
  VPUNPCKHBW zmm1 {k1}{z}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F.WIG 68 /r

Category
  mmx,unpack
Operands
  Pq,Qq | Vdq,Wdq
Opcode
  0x0F68 /r | 0x660F68 /r
CPU
  PX+
Tested by
  t5694

    IiyVPUNPCKHBW:: PROC
        IiEmitOpcode 0x68
        JMP IiyVPUNPCKLBW.op:
      ENDP IiyVPUNPCKHBW::

↑ VPUNPCKHWD
  Unpack High Data
Intel reference

  VPUNPCKHWD xmm1, xmm2, xmm3/m128 | VEX.NDS.128.66.0F.WIG 69 /r
  VPUNPCKHWD ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F.WIG 69 /r
  VPUNPCKHWD xmm1 {k1}{z}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F.WIG 69 /r
  VPUNPCKHWD ymm1 {k1}{z}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F.WIG 69 /r
  VPUNPCKHWD zmm1 {k1}{z}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F.WIG 69 /r

Category
  mmx,unpack
Operands
  Pq,Qq | Vdq,Wdq
Opcode
  0x0F69 /r | 0x660F69 /r
CPU
  PX+
Tested by
  t5694

    IiyVPUNPCKHWD:: PROC
        IiEmitOpcode 0x69
        JMP IiyVPUNPCKLBW.op:
      ENDP IiyVPUNPCKHWD::

↑ VPUNPCKHDQ
  Unpack High Data
Intel reference

  VPUNPCKHDQ xmm1, xmm2, xmm3/m128 | VEX.NDS.128.66.0F.WIG 6A /r
  VPUNPCKHDQ ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F.WIG 6A /r
  VPUNPCKHDQ xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst | EVEX.NDS.128.66.0F.W0 6A /r
  VPUNPCKHDQ ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst | EVEX.NDS.256.66.0F.W0 6A /r
  VPUNPCKHDQ zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst | EVEX.NDS.512.66.0F.W0 6A /r

Category
  mmx,unpack
Operands
  Pq,Qq | Vdq,Wdq
Opcode
  0x0F6A /r | 0x660F6A /r
CPU
  PX+
Tested by
  t5694

    IiyVPUNPCKHDQ:: PROC
        IiEmitOpcode 0x6A
        JMP IiyVPUNPCKLDQ.op:
      ENDP IiyVPUNPCKHDQ::

↑ VPUNPCKHQDQ
  Unpack High Data
Intel reference

  VPUNPCKHQDQ xmm1, xmm2, xmm3/m128 | VEX.NDS.128.66.0F.WIG 6D /r
  VPUNPCKHQDQ ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F.WIG 6D /r
  VPUNPCKHQDQ xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst | EVEX.NDS.128.66.0F.W1 6D /r
  VPUNPCKHQDQ ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst | EVEX.NDS.256.66.0F.W1 6D /r
  VPUNPCKHQDQ zmm1 {k1}{z}, zmm2, zmm3/m512/m64bcst | EVEX.NDS.512.66.0F.W1 6D /r

Category
  sse2,simdint,shunpck
Operands
  Vdq,Wdq
Opcode
  0x660F6D /r
CPU
  P4+
Tested by
  t5694

    IiyVPUNPCKHQDQ:: PROC
        IiEmitOpcode 0x6D
        JMP IiyVUNPCKLPD.op:
      ENDP IiyVPUNPCKHQDQ::

↑ VPACKSSWB
  Pack with Signed Saturation
Intel reference

  VPACKSSWB xmm1, xmm2, xmm3/m128 | VEX.NDS.128.66.0F 63 /r
  VPACKSSWB ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F 63 /r
  VPACKSSWB xmm1 {k1}{z}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F.WIG 63 /r
  VPACKSSWB ymm1 {k1}{z}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F.WIG 63 /r
  VPACKSSWB zmm1 {k1}{z}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F.WIG 63 /r

Category
  mmx,conver
Operands
  Pq,Qd | Vdq,Wdq
Opcode
  0x0F63 /r | 0x660F63 /r
CPU
  PX+
Tested by
  t5696

    IiyVPACKSSWB:: PROC
        IiEmitOpcode 0x63
        JMP IiyVPUNPCKLBW.op:
      ENDP IiyVPACKSSWB::

↑ VPACKSSDW
  Pack with Signed Saturation
Intel reference

  VPACKSSDW xmm1, xmm2, xmm3/m128 | VEX.NDS.128.66.0F 6B /r
  VPACKSSDW ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F 6B /r
  VPACKSSDW xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst | EVEX.NDS.128.66.0F.W0 6B /r
  VPACKSSDW ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst | EVEX.NDS.256.66.0F.W0 6B /r
  VPACKSSDW zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst | EVEX.NDS.512.66.0F.W0 6B /r

Category
  mmx,conver
Operands
  Pq,Qq | Vdq,Wdq
Opcode
  0x0F6B /r | 0x660F6B /r
CPU
  PX+
Tested by
  t5696

    IiyVPACKSSDW:: PROC
        IiEmitOpcode 0x6B
        JMP IiyVPUNPCKLDQ.op:
      ENDP IiyVPACKSSDW::

↑ VPACKUSWB
  Pack with Unsigned Saturation
Intel reference

  VPACKUSWB xmm1,xmm2, xmm3/m128 | VEX.NDS.128.66.0F 67 /r
  VPACKUSWB ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F 67 /r
  VPACKUSWB xmm1{k1}{z}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F.WIG 67 /r
  VPACKUSWB ymm1{k1}{z}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F.WIG 67 /r
  VPACKUSWB zmm1{k1}{z}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F.WIG 67 /r

Category
  mmx,conver
Operands
  Pq,Qq | Vdq,Wdq
Opcode
  0x0F67 /r | 0x660F67 /r
CPU
  PX+
Tested by
  t5696

    IiyVPACKUSWB:: PROC
        IiEmitOpcode 0x67
        JMP IiyVPUNPCKLBW.op:
      ENDP IiyVPACKUSWB::

↑ VPACKUSDW
  Pack with Unsigned Saturation
Intel reference

  VPACKUSDW xmm1,xmm2, xmm3/m128 | VEX.NDS.128.66.0F38 2B /r
  VPACKUSDW ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F38 2B /r
  VPACKUSDW xmm1{k1}{z}, xmm2, xmm3/m128/m32bcst | EVEX.NDS.128.66.0F38.W0 2B /r
  VPACKUSDW ymm1{k1}{z}, ymm2, ymm3/m256/m32bcst | EVEX.NDS.256.66.0F38.W0 2B /r
  VPACKUSDW zmm1{k1}{z}, zmm2, zmm3/m512/m32bcst | EVEX.NDS.512.66.0F38.W0 2B /r

Category
  sse41,simdint,conver
Operands
  Vdq,Wdq
Opcode
  0x660F382B /r
CPU
  C2++
Documented
  D43
Tested by
  t5696

    IiyVPACKUSDW:: PROC
        IiRequire SSE4.1
        IiEmitOpcode 0x2B
        IiAllowModifier MASK,DATA
        IiAllowBroadcasting DWORD
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FV32
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, zmm.zmm.zmm, zmm.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix VEX.NDS.128.66.0F38, EVEX.NDS.128.66.0F38.W0
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix VEX.NDS.256.66.0F38, EVEX.NDS.256.66.0F38.W0
        RET
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F38.W0
        RET
      ENDP IiyVPACKUSDW::

↑ VSCALEFSS
  Scale Scalar Float32 Value With Float32 Value
Intel reference

  VSCALEFSS xmm1 {k1}{z}, xmm2, xmm3/m32{er} | EVEX.NDS.LIG.66.0F38.W0 2D /r

Opcode
  0x2D
Tested by
  t5710

    IiyVSCALEFSS:: PROC
        IiAllowModifier MASK,DATA
        IiAllowRounding Register=xmm
        IiEmitOpcode 0x2D
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX T1S32
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix EVEX.NDS.LIG.66.0F38.W0
        RET
      ENDP IiyVSCALEFSS::

↑ VSCALEFSD
  Scale Scalar Float64 Values With Float64 Values
Intel reference

  VSCALEFSD xmm1 {k1}{z}, xmm2, xmm3/m64{er} | EVEX.NDS.LIG.66.0F38.W1 2D /r T

Opcode
  0x2D
Tested by
  t5710

    IiyVSCALEFSD:: PROC
        IiAllowModifier MASK,DATA
        IiAllowRounding Register=xmm
        IiEmitOpcode 0x2D
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX T1S64
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix EVEX.NDS.LIG.66.0F38.W1
        RET
      ENDP IiyVSCALEFSD::

↑ VSCALEFPS
  Scale Packed Float32 Values With Float32 Values
Intel reference

  VSCALEFPS xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst | EVEX.NDS.128.66.0F38.W0 2C /r
  VSCALEFPS ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst | EVEX.NDS.256.66.0F38.W0 2C /r
  VSCALEFPS zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst{er} | EVEX.NDS.512.66.0F38.W0 2C /r

Opcode
  0x2C
Tested by
  t5710

    IiyVSCALEFPS:: PROC
        IiAllowModifier MASK,DATA
        IiAllowRounding
        IiAllowBroadcasting DWORD
        IiEmitOpcode 0x2C
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FV32
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, zmm.zmm.zmm, zmm.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix EVEX.NDS.128.66.0F38.W0
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix EVEX.NDS.256.66.0F38.W0
        RET
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F38.W0
        RET
      ENDP IiyVSCALEFPS::

↑ VSCALEFPD
  Scale Packed Float64 Values With Float64 Values
Intel reference

  VSCALEFPD xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst | EVEX.NDS.128.66.0F38.W1 2C /r
  VSCALEFPD ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst | EVEX.NDS.256.66.0F38.W1 2C /r
  VSCALEFPD zmm1 {k1}{z}, zmm2, zmm3/m512/m64bcst{er} | EVEX.NDS.512.66.0F38.W1 2C /r

Opcode
  0x2C
Tested by
  t5710

    IiyVSCALEFPD:: PROC
        IiAllowModifier MASK,DATA
        IiAllowRounding
        IiAllowBroadcasting QWORD
        IiEmitOpcode 0x2C
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FV64
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, zmm.zmm.zmm, zmm.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix EVEX.NDS.128.66.0F38.W1
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix EVEX.NDS.256.66.0F38.W1
        RET
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F38.W1
        RET
      ENDP IiyVSCALEFPD::

↑ VRNDSCALESS
  Round Scalar Float32 Value To Include A Given Number Of Fraction Bits
Intel reference

  VRNDSCALESS xmm1 {k1}{z}, xmm2, xmm3/m32{sae}, imm8 | EVEX.NDS.LIG.66.0F3A.W0 0A /r ib

Opcode
  0x0A
Tested by
  t5712

    IiyVRNDSCALESS:: PROC
        IiAllowModifier MASK,DATA,IMM
        IiAllowSuppressing Operand=DH, Register=xmm
        IiEmitOpcode 0x0A
        IiOpEn RVM
        IiModRM /r
        IiEmitImm Operand4, BYTE
        IiDisp8EVEX T1S32
        IiDispatchFormat  xmm.xmm.xmm.imm, xmm.xmm.mem.imm
    .xmm.xmm.xmm.imm:
    .xmm.xmm.mem.imm:
        IiEmitPrefix EVEX.NDS.LIG.66.0F3A.W0
        RET
      ENDP IiyVRNDSCALESS::

↑ VRNDSCALESD
  Round Scalar Float64 Value To Include A Given Number Of Fraction Bits
Intel reference

  VRNDSCALESD xmm1 {k1}{z}, xmm2, xmm3/m64{sae}, imm8 | EVEX.NDS.LIG.66.0F3A.W1 0B /r ib

Opcode
  0x0B
Tested by
  t5712

    IiyVRNDSCALESD:: PROC
        IiAllowModifier MASK,DATA,IMM
        IiAllowSuppressing Operand=DH, Register=xmm
        IiEmitOpcode 0x0B
        IiOpEn RVM
        IiModRM /r
        IiEmitImm Operand4, BYTE
        IiDisp8EVEX T1S64
        IiDispatchFormat  xmm.xmm.xmm.imm, xmm.xmm.mem.imm
    .xmm.xmm.xmm.imm:
    .xmm.xmm.mem.imm:
        IiEmitPrefix EVEX.NDS.LIG.66.0F3A.W1
        RET
      ENDP IiyVRNDSCALESD::

↑ VRNDSCALEPS
  Round Packed Float32 Values To Include A Given Number Of Fraction Bits
Intel reference

  VRNDSCALEPS xmm1 {k1}{z}, xmm2/m128/m32bcst, imm8 | EVEX.128.66.0F3A.W0 08 /r ib
  VRNDSCALEPS ymm1 {k1}{z}, ymm2/m256/m32bcst, imm8 | EVEX.256.66.0F3A.W0 08 /r ib
  VRNDSCALEPS zmm1 {k1}{z}, zmm2/m512/m32bcst{sae}, imm8 | EVEX.512.66.0F3A.W0 08 /r ib

Opcode
  0x08
Tested by
  t5712

    IiyVRNDSCALEPS:: PROC
        IiAllowModifier MASK,DATA,IMM
        IiAllowSuppressing Operand=DH
        IiAllowBroadcasting DWORD, Operand=DH
        IiEmitOpcode 0x08
        IiOpEn RM
        IiModRM /r
        IiEmitImm Operand3, BYTE
        IiDisp8EVEX FV32
        IiDispatchFormat  xmm.xmm.imm, xmm.mem.imm, ymm.ymm.imm, ymm.mem.imm, zmm.zmm.imm, zmm.mem.imm
    .xmm.xmm.imm:
    .xmm.mem.imm:
        IiEmitPrefix EVEX.128.66.0F3A.W0
        RET
    .ymm.ymm.imm:
    .ymm.mem.imm:
        IiEmitPrefix EVEX.256.66.0F3A.W0
        RET
    .zmm.zmm.imm:
    .zmm.mem.imm:
        IiEmitPrefix EVEX.512.66.0F3A.W0
        RET
      ENDP IiyVRNDSCALEPS::

↑ VRNDSCALEPD
  Round Packed Float64 Values To Include A Given Number Of Fraction Bits
Intel reference

  VRNDSCALEPD xmm1 {k1}{z}, xmm2/m128/m64bcst, imm8 | EVEX.128.66.0F3A.W1 09 /r ib
  VRNDSCALEPD ymm1 {k1}{z}, ymm2/m256/m64bcst, imm8 | EVEX.256.66.0F3A.W1 09 /r ib
  VRNDSCALEPD zmm1 {k1}{z}, zmm2/m512/m64bcst{sae}, imm8 | EVEX.512.66.0F3A.W1 09 /r ib

Opcode
  0x09
Tested by
  t5712

    IiyVRNDSCALEPD:: PROC
        IiAllowModifier MASK,DATA,IMM
        IiAllowSuppressing Operand=DH
        IiAllowBroadcasting QWORD, Operand=DH
        IiEmitOpcode 0x09
        IiOpEn RM
        IiModRM /r
        IiEmitImm Operand3, BYTE
        IiDisp8EVEX FV64
        IiDispatchFormat  xmm.xmm.imm, xmm.mem.imm, ymm.ymm.imm, ymm.mem.imm, zmm.zmm.imm, zmm.mem.imm
    .xmm.xmm.imm:
    .xmm.mem.imm:
        IiEmitPrefix EVEX.128.66.0F3A.W1
        RET
    .ymm.ymm.imm:
    .ymm.mem.imm:
        IiEmitPrefix EVEX.256.66.0F3A.W1
        RET
    .zmm.zmm.imm:
    .zmm.mem.imm:
        IiEmitPrefix EVEX.512.66.0F3A.W1
        RET
      ENDP IiyVRNDSCALEPD::

↑ VROUNDSS
  Round Scalar Single-FP Values
Intel reference

  VROUNDSS xmm1, xmm2, xmm3/m32, imm8 | VEX.NDS.LIG.66.0F3A.WIG 0A /r ib

Category
  sse41,simdfp,conver
Operands
  Vss,Wss,Ib
Opcode
  0x660F3A0A /r
CPU
  C2++
Documented
  D43
Tested by
  t5714

    IiyVROUNDSS:: PROC
        IiEmitOpcode 0x0A
        IiEncoding DATA=DWORD
    .op:IiOpEn RVM
        IiAllowModifier DATA,IMM
        IiModRM /r
        IiEmitImm Operand4, BYTE, Max=15
        IiDispatchFormat  xmm.xmm.xmm.imm, xmm.xmm.mem.imm
    .xmm.xmm.xmm.imm:
    .xmm.xmm.mem.imm:
        IiEmitPrefix VEX.NDS.LIG.66.0F3A.WIG
        RET
      ENDP IiyVROUNDSS::

↑ VROUNDSD
  Round Scalar Double-FP Values
Intel reference

  VROUNDSD xmm1, xmm2, xmm3/m64, imm8 | VEX.NDS.LIG.66.0F3A.WIG 0B /r ib

Category
  sse41,simdfp,conver
Operands
  Vsd,Wsd,Ib
Opcode
  0x660F3A0B /r
CPU
  C2++
Documented
  D43
Tested by
  t5714

    IiyVROUNDSD:: PROC
        IiEncoding DATA=QWORD
        IiEmitOpcode 0x0B
        JMP IiyVROUNDSS.op:
      ENDP IiyVROUNDSD::

↑ VROUNDPS
  Round Packed Single-FP Values
Intel reference

  VROUNDPS xmm1, xmm2/m128, imm8 | VEX.128.66.0F3A.WIG 08 /r ib
  VROUNDPS ymm1, ymm2/m256, imm8 | VEX.256.66.0F3A.WIG 08 /r ib

Category
  sse41,simdfp,conver
Operands
  Vps,Wps,Ib
Opcode
  0x660F3A08 /r
CPU
  C2++
Documented
  D43
Tested by
  t5714

    IiyVROUNDPS:: PROC
        IiEmitOpcode 0x08
    .op:IiOpEn RM
        IiAllowModifier DATA,IMM
        IiModRM /r
        IiEmitImm Operand3, BYTE, Max=15
        IiDispatchFormat  xmm.xmm.imm, xmm.mem.imm, ymm.ymm.imm, ymm.mem.imm
    .xmm.xmm.imm:
    .xmm.mem.imm:
        IiEmitPrefix VEX.128.66.0F3A.WIG
        RET
    .ymm.ymm.imm:
    .ymm.mem.imm:
        IiEmitPrefix VEX.256.66.0F3A.WIG
        RET
      ENDP IiyVROUNDPS::

↑ VROUNDPD
  Round Packed Double-FP Values
Intel reference

  VROUNDPD xmm1, xmm2/m128, imm8 | VEX.128.66.0F3A.WIG 09 /r ib
  VROUNDPD ymm1, ymm2/m256, imm8 | VEX.256.66.0F3A.WIG 09 /r ib

Category
  sse41,simdfp,conver
Operands
  Vps,Wpd,Ib
Opcode
  0x660F3A09 /r
CPU
  C2++
Documented
  D43
Tested by
  t5714

    IiyVROUNDPD:: PROC
        IiEmitOpcode 0x09
        JMP IiyVROUNDPS.op:
      ENDP IiyVROUNDPD::

↑ VPMADDUBSW
  Multiply and Add Packed Signed and Unsigned Bytes
Intel reference

  VPMADDUBSW xmm1, xmm2, xmm3/m128 | VEX.NDS.128.66.0F38 04 /r
  VPMADDUBSW ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F38 04 /r
  VPMADDUBSW xmm1 {k1}{z}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F38.WIG 04 /r
  VPMADDUBSW ymm1 {k1}{z}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F38.WIG 04 /r
  VPMADDUBSW zmm1 {k1}{z}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F38.WIG 04 /r

Category
  ssse3,simdint
Operands
  Pq,Qq | Vdq,Wdq
Opcode
  0x0F3804 /r | 0x660F3804 /r
CPU
  C2+
Tested by
  t5722

    IiyVPMADDUBSW:: PROC
        IiAllowModifier MASK,DATA
        IiEmitOpcode 0x04
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FVM
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, zmm.zmm.zmm, zmm.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix VEX.NDS.128.66.0F38, EVEX.NDS.128.66.0F38.WIG
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix VEX.NDS.256.66.0F38, EVEX.NDS.256.66.0F38.WIG
        RET
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F38.WIG
        RET
      ENDP IiyVPMADDUBSW::

↑ VPMADD52LUQ
  Packed Multiply of Unsigned 52-bit Integers and Add the Low 52-bit Products to Qword Accumulators
Intel reference

  VPMADD52LUQ xmm1 {k1}{z}, xmm2,xmm3/m128/m64bcst | EVEX.DDS.128.66.0F38.W1 B4 /r
  VPMADD52LUQ ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst | EVEX.DDS.256.66.0F38.W1 B4 /r
  VPMADD52LUQ zmm1 {k1}{z}, zmm2,zmm3/m512/m64bcst | EVEX.DDS.512.66.0F38.W1 B4 /r

Opcode
  0xB4
Tested by
  t5722

    IiyVPMADD52LUQ:: PROC
        IiEmitOpcode 0xB4
    .op:IiAllowModifier MASK,DATA
        IiAllowBroadcasting QWORD
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FV64
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, zmm.zmm.zmm, zmm.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix EVEX.DDS.128.66.0F38.W1
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix EVEX.DDS.256.66.0F38.W1
        RET
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix EVEX.DDS.512.66.0F38.W1
        RET
      ENDP IiyVPMADD52LUQ::

↑ VPMADD52HUQ
  Packed Multiply of Unsigned 52-bit Unsigned Integers and Add High 52-bit Products to 64-bit Accumulators
Intel reference

  VPMADD52HUQ xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst | EVEX.DDS.128.66.0F38.W1 B5 /r
  VPMADD52HUQ ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst | EVEX.DDS.256.66.0F38.W1 B5 /r
  VPMADD52HUQ zmm1 {k1}{z}, zmm2, zmm3/m512/m64bcst | EVEX.DDS.512.66.0F38.W1 B5 /r

Opcode
  0xB5
Tested by
  t5722

    IiyVPMADD52HUQ:: PROC
        IiEmitOpcode 0xB5
        JMP IiyVPMADD52LUQ.op:
      ENDP IiyVPMADD52HUQ::

↑ VPHADDW
  Packed Horizontal Add
Intel reference

  VPHADDW xmm1, xmm2, xmm3/m128 | VEX.NDS.128.66.0F38.WIG 01 /r
  VPHADDW ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F38.WIG 01 /r

Category
  ssse3,simdint
Operands
  Pq,Qq | Vdq,Wdq
Opcode
  0x0F3801 /r | 0x660F3801 /r
CPU
  C2+
Tested by
  t5724

    IiyVPHADDW:: PROC
        IiEmitOpcode 0x01
        IiEncoding DATA=WORD
    .op:IiOpEn RVM
        IiAllowModifier DATA
        IiModRM /r
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix VEX.NDS.128.66.0F38.WIG
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix VEX.NDS.256.66.0F38.WIG
        RET
      ENDP IiyVPHADDW::

↑ VPHADDD
  Packed Horizontal Add
Intel reference

  VPHADDD xmm1, xmm2, xmm3/m128 | VEX.NDS.128.66.0F38.WIG 02 /r
  VPHADDD ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F38.WIG 02 /r

Category
  ssse3,simdint
Operands
  Pq,Qq | Vdq,Wdq
Opcode
  0x0F3802 /r | 0x660F3802 /r
CPU
  C2+
Tested by
  t5724

    IiyVPHADDD:: PROC
        IiEncoding DATA=DWORD
        IiEmitOpcode 0x02
        JMP IiyVPHADDW.op:
      ENDP IiyVPHADDD::

↑ VPHADDSW
  Packed Horizontal Add and Saturate
Intel reference

  VPHADDSW xmm1, xmm2, xmm3/m128 | VEX.NDS.128.66.0F38.WIG 03 /r
  VPHADDSW ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F38.WIG 03 /r

Category
  ssse3,simdint
Operands
  Pq,Qq | Vdq,Wdq
Opcode
  0x0F3803 /r | 0x660F3803 /r
CPU
  C2+
Tested by
  t5724

    IiyVPHADDSW:: PROC
        IiEncoding DATA=WORD
        IiEmitOpcode 0x03
        JMP IiyVPHADDW.op:
      ENDP IiyVPHADDSW::

↑ VPHSUBW
  Packed Horizontal Subtract
Intel reference

  VPHSUBW xmm1, xmm2, xmm3/m128 | VEX.NDS.128.66.0F38.WIG 05 /r
  VPHSUBW ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F38.WIG 05 /r

Category
  ssse3,simdint
Operands
  Pq,Qq | Vdq,Wdq
Opcode
  0x0F3805 /r | 0x660F3805 /r
CPU
  C2+
Tested by
  t5724

    IiyVPHSUBW:: PROC
        IiEncoding DATA=WORD
        IiEmitOpcode 0x05
        JMP IiyVPHADDW.op:
      ENDP IiyVPHSUBW::

↑ VPHSUBD
  Packed Horizontal Subtract
Intel reference

  VPHSUBD xmm1, xmm2, xmm3/m128 | VEX.NDS.128.66.0F38.WIG 06 /r
  VPHSUBD ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F38.WIG 06 /r

Category
  ssse3,simdint
Operands
  Pq,Qq | Vdq,Wdq
Opcode
  0x0F3806 /r | 0x660F3806 /r
CPU
  C2+
Tested by
  t5724

    IiyVPHSUBD:: PROC
        IiEncoding DATA=DWORD
        IiEmitOpcode 0x06
        JMP IiyVPHADDW.op:
      ENDP IiyVPHSUBD::

↑ VPHSUBSW
  Packed Horizontal Subtract and Saturate
Intel reference

  VPHSUBSW xmm1, xmm2, xmm3/m128 | VEX.NDS.128.66.0F38.WIG 07 /r
  VPHSUBSW ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F38.WIG 07 /r

Category
  ssse3,simdint
Operands
  Pq,Qq | Vdq,Wdq
Opcode
  0x0F3807 /r | 0x660F3807 /r
CPU
  C2+
Tested by
  t5724

    IiyVPHSUBSW:: PROC
        IiEncoding DATA=WORD
        IiEmitOpcode 0x07
        JMP IiyVPHADDW.op:
      ENDP IiyVPHSUBSW::

↑ VPAND
  Logical AND
Intel reference

  VPAND xmm1, xmm2, xmm3/m128 | VEX.NDS.128.66.0F.WIG DB /r
  VPAND ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F.WIG DB /r

Category
  mmx,logical
Operands
  Pq,Qd | Vdq,Wdq
Opcode
  0x0FDB /r | 0x660FDB /r
CPU
  PX+
Tested by
  t5730

    IiyVPAND:: PROC
        IiEmitOpcode 0xDB
    .op:IiOpEn RVM
        IiAllowModifier DATA
        IiModRM /r
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix VEX.NDS.128.66.0F.WIG
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix VEX.NDS.256.66.0F.WIG
        RET
      ENDP IiyVPAND::

↑ VPANDD
  Bitwise AND Int32 Vectors
Intel reference

  VPANDD xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst | EVEX.NDS.128.66.0F.W0 DB /r
  VPANDD ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst | EVEX.NDS.256.66.0F.W0 DB /r
  VPANDD zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst | EVEX.NDS.512.66.0F.W0 DB /r
  VPANDD zmm1 {k1}, zmm2, zmm3/m512/m32bcst | MVEX.NDS.512.66.0F.W0 DB /r

Opcode
  0xDB
Tested by
  t5730

    IiyVPANDD:: PROC
        IiEmitOpcode 0xDB
    .op:IiAllowModifier MASK,DATA
        IiAllowBroadcasting DWORD
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FV32
        IiDisp8MVEX Si32
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, zmm.zmm.zmm, zmm.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix EVEX.NDS.128.66.0F.W0
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix EVEX.NDS.256.66.0F.W0
        RET
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F.W0, MVEX.NDS.512.66.0F.W0
        RET
      ENDP IiyVPANDD::

↑ VPANDQ
  Bitwise AND Int64 Vectors
Intel reference

  VPANDQ xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst | EVEX.NDS.128.66.0F.W1 DB /r
  VPANDQ ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst | EVEX.NDS.256.66.0F.W1 DB /r
  VPANDQ zmm1 {k1}{z}, zmm2, zmm3/m512/m64bcst | EVEX.NDS.512.66.0F.W1 DB /r
  VPANDQ zmm1 {k1}, zmm2, zmm3/m512/m64bcst | MVEX.NDS.512.66.0F.W1 DB /r

Opcode
  0xDB
Tested by
  t5730

    IiyVPANDQ:: PROC
        IiEmitOpcode 0xDB
    .op:IiAllowModifier MASK,DATA
        IiAllowBroadcasting QWORD
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FV64
        IiDisp8MVEX Ub64
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, zmm.zmm.zmm, zmm.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix EVEX.NDS.128.66.0F.W1
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix EVEX.NDS.256.66.0F.W1
        RET
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F.W1, MVEX.NDS.512.66.0F.W1
        RET
      ENDP IiyVPANDQ::

↑ VPOR
  Bitwise Logical OR
Intel reference

  VPOR xmm1, xmm2, xmm3/m128 | VEX.NDS.128.66.0F.WIG EB /r
  VPOR ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F.WIG EB /r

Category
  mmx,logical
Operands
  Pq,Qq | Vdq,Wdq
Opcode
  0x0FEB /r | 0x660FEB /r
CPU
  PX+
Tested by
  t5732

    IiyVPOR:: PROC
        IiEmitOpcode 0xEB
        JMP IiyVPAND.op:
      ENDP IiyVPOR::

↑ VPORD
  Bitwise OR Int32 Vectors
Intel reference

  VPORD xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst | EVEX.NDS.128.66.0F.W0 EB /r
  VPORD ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst | EVEX.NDS.256.66.0F.W0 EB /r
  VPORD zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst | EVEX.NDS.512.66.0F.W0 EB /r
  VPORD zmm1 {k1}, zmm2, zmm3/m512/m32bcst | MVEX.NDS.512.66.0F.W0 EB /r

Opcode
  0xEB
Tested by
  t5732

    IiyVPORD:: PROC
        IiEmitOpcode 0xEB
        JMP IiyVPANDD.op:
      ENDP IiyVPORD::

↑ VPORQ
  Bitwise OR Int64 Vectors
Intel reference

  VPORQ xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst | EVEX.NDS.128.66.0F.W1 EB /r
  VPORQ ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst | EVEX.NDS.256.66.0F.W1 EB /r
  VPORQ zmm1 {k1}{z}, zmm2, zmm3/m512/m64bcst | EVEX.NDS.512.66.0F.W1 EB /r
  VPORQ zmm1 {k1}, zmm2, zmm3/m512/m64bcst | MVEX.NDS.512.66.0F.W1 EB /r

Opcode
  0xEB
Tested by
  t5732

    IiyVPORQ:: PROC
        IiEmitOpcode 0xEB
        JMP IiyVPANDQ.op:
      ENDP IiyVPORQ::

↑ VPANDN
  Logical AND NOT
Intel reference

  VPANDN xmm1, xmm2, xmm3/m128 | VEX.NDS.128.66.0F.WIG DF /r
  VPANDN ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F.WIG DF /r

Category
  mmx,logical
Operands
  Pq,Qq | Vdq,Wdq
Opcode
  0x0FDF /r | 0x660FDF /r
CPU
  PX+
Tested by
  t5734

    IiyVPANDN:: PROC
        IiEmitOpcode 0xDF
        JMP IiyVPAND.op:
      ENDP IiyVPANDN::

↑ VPANDND
  Bitwise AND NOT Int32 Vectors
Intel reference

  VPANDND xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst | EVEX.NDS.128.66.0F.W0 DF /r
  VPANDND ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst | EVEX.NDS.256.66.0F.W0 DF /r
  VPANDND zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst | EVEX.NDS.512.66.0F.W0 DF /r
  VPANDND zmm1 {k1}, zmm2, zmm3/m512/m32bcst | MVEX.NDS.512.66.0F.W0 DF /r

Opcode
  0xDF
Tested by
  t5734

    IiyVPANDND:: PROC
        IiEmitOpcode 0xDF
        JMP IiyVPANDD.op:
      ENDP IiyVPANDND::

↑ VPANDNQ
  Bitwise AND NOT Int64 Vectors
Intel reference

  VPANDNQ xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst | EVEX.NDS.128.66.0F.W1 DF /r
  VPANDNQ ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst | EVEX.NDS.256.66.0F.W1 DF /r
  VPANDNQ zmm1 {k1}{z}, zmm2, zmm3/m512/m64bcst | EVEX.NDS.512.66.0F.W1 DF /r
  VPANDNQ zmm1 {k1}, zmm2, zmm3/m512/m64bcst | MVEX.NDS.512.66.0F.W1 DF /r

Opcode
  0xDF
Tested by
  t5734

    IiyVPANDNQ:: PROC
        IiEmitOpcode 0xDF
        JMP IiyVPANDQ.op:
      ENDP IiyVPANDNQ::

↑ VPXOR
  Logical Exclusive OR
Intel reference

  VPXOR xmm1, xmm2, xmm3/m128 | VEX.NDS.128.66.0F.WIG EF /r
  VPXOR ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F.WIG EF /r

Category
  mmx,logical
Operands
  Pq,Qq | Vdq,Wdq
Opcode
  0x0FEF /r | 0x660FEF /r
CPU
  PX+
Tested by
  t5736

    IiyVPXOR:: PROC
        IiEmitOpcode 0xEF
        JMP IiyVPAND.op:
      ENDP IiyVPXOR::

↑ VPXORD
  Bitwise XOR Int32 Vectors
Intel reference

  VPXORD xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst | EVEX.NDS.128.66.0F.W0 EF /r
  VPXORD ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst | EVEX.NDS.256.66.0F.W0 EF /r
  VPXORD zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst | EVEX.NDS.512.66.0F.W0 EF /r
  VPXORD zmm1 {k1}, zmm2, zmm3/m512/m32bcst | MVEX.NDS.512.66.0F.W0 EF /r

Opcode
  0xEF
Tested by
  t5736

    IiyVPXORD:: PROC
        IiEmitOpcode 0xEF
        JMP IiyVPANDD.op:
      ENDP IiyVPXORD::

↑ VPXORQ
  Bitwise XOR Int64 Vectors
Intel reference

  VPXORQ xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst | EVEX.NDS.128.66.0F.W1 EF /r
  VPXORQ ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst | EVEX.NDS.256.66.0F.W1 EF /r
  VPXORQ zmm1 {k1}{z}, zmm2, zmm3/m512/m64bcst | EVEX.NDS.512.66.0F.W1 EF /r
  VPXORQ zmm1 {k1}, zmm2, zmm3/m512/m64bcst | MVEX.NDS.512.66.0F.W1 EF /r

Opcode
  0xEF
Tested by
  t5736

    IiyVPXORQ:: PROC
        IiEmitOpcode 0xEF
        JMP IiyVPANDQ.op:
      ENDP IiyVPXORQ::

↑ VRANGESS
  Range Restriction Calculation From a Pair of Scalar Float32 Values
Intel reference

  VRANGESS xmm1 {k1}{z}, xmm2, xmm3/m32{sae}, imm8 | EVEX.NDS.LIG.66.0F3A.W0 51 /r ib

Opcode
  0x51
Tested by
  t5716

    IiyVRANGESS:: PROC
        IiAllowModifier MASK,DATA,IMM
        IiAllowSuppressing Operand=DH, Register=xmm
        IiEmitOpcode 0x51
        IiOpEn RVM
        IiModRM /r
        IiEmitImm Operand4, BYTE, Max=15
        IiDisp8EVEX T1S32
        IiDispatchFormat  xmm.xmm.xmm.imm, xmm.xmm.mem.imm
    .xmm.xmm.xmm.imm:
    .xmm.xmm.mem.imm:
        IiEmitPrefix EVEX.NDS.LIG.66.0F3A.W0
        RET
      ENDP IiyVRANGESS::

↑ VRANGESD
  Range Restriction Calculation From a pair of Scalar Float64 Values
Intel reference

  VRANGESD xmm1 {k1}{z}, xmm2, xmm3/m64{sae}, imm8 | EVEX.NDS.LIG.66.0F3A.W1 51 /r ib

Opcode
  0x51
Tested by
  t5716

    IiyVRANGESD:: PROC
        IiAllowModifier MASK,DATA,IMM
        IiAllowSuppressing Operand=DH, Register=xmm
        IiEmitOpcode 0x51
        IiOpEn RVM
        IiModRM /r
        IiEmitImm Operand4, BYTE, Max=15
        IiDisp8EVEX T1S64
        IiDispatchFormat  xmm.xmm.xmm.imm, xmm.xmm.mem.imm
    .xmm.xmm.xmm.imm:
    .xmm.xmm.mem.imm:
        IiEmitPrefix EVEX.NDS.LIG.66.0F3A.W1
        RET
      ENDP IiyVRANGESD::

↑ VRANGEPS
  Range Restriction Calculation For Packed Pairs of Float32 Values
Intel reference

  VRANGEPS xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst, imm8 | EVEX.NDS.128.66.0F3A.W0 50 /r ib
  VRANGEPS ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst, imm8 | EVEX.NDS.256.66.0F3A.W0 50 /r ib
  VRANGEPS zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst{sae}, imm8 | EVEX.NDS.512.66.0F3A.W0 50 /r ib

Opcode
  0x50
Tested by
  t5716

    IiyVRANGEPS:: PROC
        IiAllowModifier MASK,DATA,IMM
        IiAllowSuppressing Operand=DH
        IiAllowBroadcasting DWORD, Operand=DH
        IiEmitOpcode 0x50
        IiOpEn RVM
        IiModRM /r
        IiEmitImm Operand4, BYTE, Max=15
        IiDisp8EVEX FV32
        IiDispatchFormat  xmm.xmm.xmm.imm, xmm.xmm.mem.imm, ymm.ymm.ymm.imm, ymm.ymm.mem.imm, zmm.zmm.zmm.imm, zmm.zmm.mem.imm
    .xmm.xmm.xmm.imm:
    .xmm.xmm.mem.imm:
        IiEmitPrefix EVEX.NDS.128.66.0F3A.W0
        RET
    .ymm.ymm.ymm.imm:
    .ymm.ymm.mem.imm:
        IiEmitPrefix EVEX.NDS.256.66.0F3A.W0
        RET
    .zmm.zmm.zmm.imm:
    .zmm.zmm.mem.imm:
        IiEmitPrefix EVEX.NDS.512.66.0F3A.W0
        RET
      ENDP IiyVRANGEPS::

↑ VRANGEPD
  Range Restriction Calculation For Packed Pairs of Float64 Values
Intel reference

  VRANGEPD xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst, imm8 | EVEX.NDS.128.66.0F3A.W1 50 /r ib
  VRANGEPD ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst, imm8 | EVEX.NDS.256.66.0F3A.W1 50 /r ib
  VRANGEPD zmm1 {k1}{z}, zmm2, zmm3/m512/m64bcst{sae}, imm8 | EVEX.NDS.512.66.0F3A.W1 50 /r ib

Opcode
  0x50
Tested by
  t5716

    IiyVRANGEPD:: PROC
        IiAllowModifier MASK,DATA,IMM
        IiAllowSuppressing Operand=DH
        IiAllowBroadcasting QWORD, Operand=DH
        IiEmitOpcode 0x50
        IiOpEn RVM
        IiModRM /r
        IiEmitImm Operand4, BYTE, Max=15
        IiDisp8EVEX FV64
        IiDispatchFormat  xmm.xmm.xmm.imm, xmm.xmm.mem.imm, ymm.ymm.ymm.imm, ymm.ymm.mem.imm, zmm.zmm.zmm.imm, zmm.zmm.mem.imm
    .xmm.xmm.xmm.imm:
    .xmm.xmm.mem.imm:
        IiEmitPrefix EVEX.NDS.128.66.0F3A.W1
        RET
    .ymm.ymm.ymm.imm:
    .ymm.ymm.mem.imm:
        IiEmitPrefix EVEX.NDS.256.66.0F3A.W1
        RET
    .zmm.zmm.zmm.imm:
    .zmm.zmm.mem.imm:
        IiEmitPrefix EVEX.NDS.512.66.0F3A.W1
        RET
      ENDP IiyVRANGEPD::

↑ VREDUCESS
  Perform a Reduction Transformation on a Scalar Float32 Value
Intel reference

  VREDUCESS xmm1 {k1}{z}, xmm2, xmm3/m32{sae}, imm8 | EVEX.NDS.LIG.66.0F3A.W0 57 /r /ib

Opcode
  0x57
Tested by
  t5718

    IiyVREDUCESS:: PROC
        IiAllowModifier MASK,DATA,IMM
        IiAllowSuppressing Operand=DH, Register=xmm
        IiEmitOpcode 0x57
        IiOpEn RVM
        IiModRM /r
        IiEmitImm Operand4, BYTE
        IiDisp8EVEX T1S32
        IiDispatchFormat  xmm.xmm.xmm.imm, xmm.xmm.mem.imm
    .xmm.xmm.xmm.imm:
    .xmm.xmm.mem.imm:
        IiEmitPrefix EVEX.NDS.LIG.66.0F3A.W0
        RET
      ENDP IiyVREDUCESS::

↑ VREDUCESD
  Perform a Reduction Transformation on a Scalar Float64 Value
Intel reference

  VREDUCESD xmm1 {k1}{z}, xmm2, xmm3/m64{sae}, imm8 | EVEX.NDS.LIG.66.0F3A.W1 57 /r imm

Opcode
  0x57
Tested by
  t5718

    IiyVREDUCESD:: PROC
        IiAllowModifier MASK,DATA,IMM
        IiAllowSuppressing Operand=DH, Register=xmm
        IiEmitOpcode 0x57
        IiOpEn RVM
        IiModRM /r
        IiEmitImm Operand4, BYTE
        IiDisp8EVEX FV64
        IiDispatchFormat  xmm.xmm.xmm.imm, xmm.xmm.mem.imm
    .xmm.xmm.xmm.imm:
    .xmm.xmm.mem.imm:
        IiEmitPrefix EVEX.NDS.LIG.66.0F3A.W1
        RET
      ENDP IiyVREDUCESD::

↑ VREDUCEPS
  Perform Reduction Transformation on Packed Float32 Values
Intel reference

  VREDUCEPS xmm1 {k1}{z}, xmm2/m128/m32bcst, imm8 | EVEX.128.66.0F3A.W0 56 /r ib
  VREDUCEPS ymm1 {k1}{z}, ymm2/m256/m32bcst, imm8 | EVEX.256.66.0F3A.W0 56 /r ib
  VREDUCEPS zmm1 {k1}{z}, zmm2/m512/m32bcst{sae}, imm8 | EVEX.512.66.0F3A.W0 56 /r ib

Opcode
  0x56
Tested by
  t5718

    IiyVREDUCEPS:: PROC
        IiAllowModifier MASK,DATA,IMM
        IiAllowSuppressing Operand=DH
        IiAllowBroadcasting DWORD, Operand=DH
        IiEmitOpcode 0x56
        IiOpEn RM
        IiModRM /r
        IiEmitImm Operand3, BYTE
        IiDisp8EVEX FV32
        IiDispatchFormat  xmm.xmm.imm, xmm.mem.imm, ymm.ymm.imm, ymm.mem.imm, zmm.zmm.imm, zmm.mem.imm
    .xmm.xmm.imm:
    .xmm.mem.imm:
        IiEmitPrefix EVEX.128.66.0F3A.W0
        RET
    .ymm.ymm.imm:
    .ymm.mem.imm:
        IiEmitPrefix EVEX.256.66.0F3A.W0
        RET
    .zmm.zmm.imm:
    .zmm.mem.imm:
        IiEmitPrefix EVEX.512.66.0F3A.W0
        RET
      ENDP IiyVREDUCEPS::

↑ VREDUCEPD
  Perform Reduction Transformation on Packed Float64 Values
Intel reference

  VREDUCEPD xmm1 {k1}{z}, xmm2/m128/m64bcst, imm8 | EVEX.128.66.0F3A.W1 56 /r ib
  VREDUCEPD ymm1 {k1}{z}, ymm2/m256/m64bcst, imm8 | EVEX.256.66.0F3A.W1 56 /r ib
  VREDUCEPD zmm1 {k1}{z}, zmm2/m512/m64bcst{sae}, imm8 | EVEX.512.66.0F3A.W1 56 /r ib

Opcode
  0x56
Tested by
  t5718

    IiyVREDUCEPD:: PROC
        IiAllowModifier MASK,DATA,IMM
        IiAllowSuppressing Operand=DH
        IiAllowBroadcasting QWORD, Operand=DH
        IiEmitOpcode 0x56
        IiOpEn RM
        IiModRM /r
        IiEmitImm Operand3, BYTE
        IiDisp8EVEX FV64
        IiDispatchFormat  xmm.xmm.imm, xmm.mem.imm, ymm.ymm.imm, ymm.mem.imm, zmm.zmm.imm, zmm.mem.imm
    .xmm.xmm.imm:
    .xmm.mem.imm:
        IiEmitPrefix EVEX.128.66.0F3A.W1
        RET
    .ymm.ymm.imm:
    .ymm.mem.imm:
        IiEmitPrefix EVEX.256.66.0F3A.W1
        RET
    .zmm.zmm.imm:
    .zmm.mem.imm:
        IiEmitPrefix EVEX.512.66.0F3A.W1
        RET
      ENDP IiyVREDUCEPD::

↑ VPRORVD
  Bit Rotate DWORDS Right
Intel reference

  VPRORVD xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst | EVEX.NDS.128.66.0F38.W0 14 /r
  VPRORVD ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst | EVEX.NDS.256.66.0F38.W0 14 /r
  VPRORVD zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst | EVEX.NDS.512.66.0F38.W0 14 /r

Opcode
  0x14
Tested by
  t5628

    IiyVPRORVD:: PROC
        IiEmitOpcode 0x14
    .op:IiAllowModifier MASK,DATA
        IiAllowBroadcasting DWORD
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FV32
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, zmm.zmm.zmm, zmm.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix EVEX.NDS.128.66.0F38.W0
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix EVEX.NDS.256.66.0F38.W0
        RET
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F38.W0
        RET
      ENDP IiyVPRORVD::

↑ VPROLVD
  Bit Rotate DWORDS Left
Intel reference

  VPROLVD xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst | EVEX.NDS.128.66.0F38.W0 15 /r
  VPROLVD ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst | EVEX.NDS.256.66.0F38.W0 15 /r
  VPROLVD zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst | EVEX.NDS.512.66.0F38.W0 15 /r

Opcode
  0x15
Tested by
  t5628

    IiyVPROLVD:: PROC
        IiEmitOpcode 0x15
        JMP IiyVPRORVD.op:
      ENDP IiyVPROLVD::

↑ VPRORVQ
  Bit Rotate QWORDS Right
Intel reference

  VPRORVQ xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst | EVEX.NDS.128.66.0F38.W1 14 /r
  VPRORVQ ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst | EVEX.NDS.256.66.0F38.W1 14 /r
  VPRORVQ zmm1 {k1}{z}, zmm2, zmm3/m512/m64bcst | EVEX.NDS.512.66.0F38.W1 14 /r

Opcode
  0x14
Tested by
  t5628

    IiyVPRORVQ:: PROC
        IiEmitOpcode 0x14
    .op:IiAllowModifier MASK,DATA
        IiAllowBroadcasting QWORD
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FV64
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, zmm.zmm.zmm, zmm.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix EVEX.NDS.128.66.0F38.W1
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix EVEX.NDS.256.66.0F38.W1
        RET
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F38.W1
        RET
      ENDP IiyVPRORVQ::

↑ VPROLVQ
  Bit Rotate QWORDS Left
Intel reference

  VPROLVQ xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst | EVEX.NDS.128.66.0F38.W1 15 /r
  VPROLVQ ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst | EVEX.NDS.256.66.0F38.W1 15 /r
  VPROLVQ zmm1 {k1}{z}, zmm2, zmm3/m512/m64bcst | EVEX.NDS.512.66.0F38.W1 15 /r

Opcode
  0x15
Tested by
  t5628

    IiyVPROLVQ:: PROC
        IiEmitOpcode 0x15
        JMP IiyVPRORVQ.op:
      ENDP IiyVPROLVQ::

↑ VPRORD
  Bit Rotate DWORDS Right
Intel reference

  VPRORD xmm1 {k1}{z}, xmm2/m128/m32bcst, imm8 | EVEX.NDD.128.66.0F.W0 72 /0 ib
  VPRORD ymm1 {k1}{z}, ymm2/m256/m32bcst, imm8 | EVEX.NDD.256.66.0F.W0 72 /0 ib
  VPRORD zmm1 {k1}{z}, zmm2/m512/m32bcst, imm8 | EVEX.NDD.512.66.0F.W0 72 /0 ib

Opcode
  0x72
Tested by
  t5630

    IiyVPRORD:: PROC
        IiModRM /0
    .di:IiAllowModifier MASK,DATA,IMM
        IiAllowBroadcasting DWORD, Operand=DH
        IiEmitOpcode 0x72
        IiOpEn VM
        IiEmitImm Operand3, BYTE
        IiDisp8EVEX FV32
        IiDispatchFormat  xmm.xmm.imm, xmm.mem.imm, ymm.ymm.imm, ymm.mem.imm, zmm.zmm.imm, zmm.mem.imm
    .xmm.xmm.imm:
    .xmm.mem.imm:
        IiEmitPrefix EVEX.NDD.128.66.0F.W0
        RET
    .ymm.ymm.imm:
    .ymm.mem.imm:
        IiEmitPrefix EVEX.NDD.256.66.0F.W0
        RET
    .zmm.zmm.imm:
    .zmm.mem.imm:
        IiEmitPrefix EVEX.NDD.512.66.0F.W0
        RET
      ENDP IiyVPRORD::

↑ VPROLD
  Bit Rotate DWORDS Left
Intel reference

  VPROLD xmm1 {k1}{z}, xmm2/m128/m32bcst, imm8 | EVEX.NDD.128.66.0F.W0 72 /1 ib
  VPROLD ymm1 {k1}{z}, ymm2/m256/m32bcst, imm8 | EVEX.NDD.256.66.0F.W0 72 /1 ib
  VPROLD zmm1 {k1}{z}, zmm2/m512/m32bcst, imm8 | EVEX.NDD.512.66.0F.W0 72 /1 ib

Opcode
  0x72
Tested by
  t5630

    IiyVPROLD:: PROC
        IiModRM /1
        JMP IiyVPRORD.di:
      ENDP IiyVPROLD::

↑ VPRORQ
  Bit Rotate QWORDS Right
Intel reference

  VPRORQ xmm1 {k1}{z}, xmm2/m128/m64bcst, imm8 | EVEX.NDD.128.66.0F.W1 72 /0 ib
  VPRORQ ymm1 {k1}{z}, ymm2/m256/m64bcst, imm8 | EVEX.NDD.256.66.0F.W1 72 /0 ib
  VPRORQ zmm1 {k1}{z}, zmm2/m512/m64bcst, imm8 | EVEX.NDD.512.66.0F.W1 72 /0 ib

Opcode
  0x72
Tested by
  t5630

    IiyVPRORQ:: PROC
        IiModRM /0
    .di:IiAllowModifier MASK,DATA,IMM
        IiAllowBroadcasting QWORD, Operand=DH
        IiEmitOpcode 0x72
        IiOpEn VM
        IiEmitImm Operand3, BYTE
        IiDisp8EVEX FV64
        IiDispatchFormat  xmm.xmm.imm, xmm.mem.imm, ymm.ymm.imm, ymm.mem.imm, zmm.zmm.imm, zmm.mem.imm
    .xmm.xmm.imm:
    .xmm.mem.imm:
        IiEmitPrefix EVEX.NDD.128.66.0F.W1
        RET
    .ymm.ymm.imm:
    .ymm.mem.imm:
        IiEmitPrefix EVEX.NDD.256.66.0F.W1
        RET
    .zmm.zmm.imm:
    .zmm.mem.imm:
        IiEmitPrefix EVEX.NDD.512.66.0F.W1
        RET
      ENDP IiyVPRORQ::

↑ VPROLQ
  Bit Rotate QWORDS Left
Intel reference

  VPROLQ xmm1 {k1}{z}, xmm2/m128/m64bcst, imm8 | EVEX.NDD.128.66.0F.W1 72 /1 ib
  VPROLQ ymm1 {k1}{z}, ymm2/m256/m64bcst, imm8 | EVEX.NDD.256.66.0F.W1 72 /1 ib
  VPROLQ zmm1 {k1}{z}, zmm2/m512/m64bcst, imm8 | EVEX.NDD.512.66.0F.W1 72 /1 ib

Opcode
  0x72
Tested by
  t5630

    IiyVPROLQ:: PROC
        IiModRM /1
        JMP IiyVPRORQ.di:
      ENDP IiyVPROLQ::

↑ VPERMI2B
  Full Permute of BYTEs From Two Tables Overwriting the Index
Intel reference

  VPERMI2B xmm1 {k1}{z}, xmm2, xmm3/m128 | EVEX.DDS.128.66.0F38.W0 75 /r
  VPERMI2B ymm1 {k1}{z}, ymm2, ymm3/m256 | EVEX.DDS.256.66.0F38.W0 75 /r
  VPERMI2B zmm1 {k1}{z}, zmm2, zmm3/m512 | EVEX.DDS.512.66.0F38.W0 75 /r

Opcode
  0x75
Tested by
  t5740

    IiyVPERMI2B:: PROC
        IiEmitOpcode 0x75
    .op:IiEncoding DATA=BYTE
        IiAllowModifier MASK,DATA
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FVM
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, zmm.zmm.zmm, zmm.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix EVEX.DDS.128.66.0F38.W0
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix EVEX.DDS.256.66.0F38.W0
        RET
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix EVEX.DDS.512.66.0F38.W0
        RET
      ENDP IiyVPERMI2B::

↑ VPERMI2W
  Full Permute WORDs From Two Tables Overwriting the Index
Intel reference

  VPERMI2W xmm1 {k1}{z}, xmm2, xmm3/m128 | EVEX.DDS.128.66.0F38.W1 75 /r
  VPERMI2W ymm1 {k1}{z}, ymm2, ymm3/m256 | EVEX.DDS.256.66.0F38.W1 75 /r
  VPERMI2W zmm1 {k1}{z}, zmm2, zmm3/m512 | EVEX.DDS.512.66.0F38.W1 75 /r

Opcode
  0x75
Tested by
  t5740

    IiyVPERMI2W:: PROC
        IiEmitOpcode 0x75
    .op:IiEncoding DATA=WORD
        IiAllowModifier MASK,DATA
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FVM
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, zmm.zmm.zmm, zmm.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix EVEX.DDS.128.66.0F38.W1
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix EVEX.DDS.256.66.0F38.W1
        RET
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix EVEX.DDS.512.66.0F38.W1
        RET
      ENDP IiyVPERMI2W::

↑ VPERMI2D
  Full Permute DWORDs From Two Tables Overwriting the Index
Intel reference

  VPERMI2D xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst | EVEX.DDS.128.66.0F38.W0 76 /r
  VPERMI2D ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst | EVEX.DDS.256.66.0F38.W0 76 /r
  VPERMI2D zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst | EVEX.DDS.512.66.0F38.W0 76 /r

Opcode
  0x76
Tested by
  t5740

    IiyVPERMI2D:: PROC
        IiEmitOpcode 0x76
    .op:IiAllowModifier MASK,DATA
        IiAllowBroadcasting DWORD
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FV32
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, zmm.zmm.zmm, zmm.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix EVEX.DDS.128.66.0F38.W0
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix EVEX.DDS.256.66.0F38.W0
        RET
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix EVEX.DDS.512.66.0F38.W0
        RET
      ENDP IiyVPERMI2D::

↑ VPERMI2Q
  Full Permute of QWORDS From Two Tables Overwriting the Index
Intel reference

  VPERMI2Q xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst | EVEX.DDS.128.66.0F38.W1 76 /r
  VPERMI2Q ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst | EVEX.DDS.256.66.0F38.W1 76 /r
  VPERMI2Q zmm1 {k1}{z}, zmm2, zmm3/m512/m64bcst | EVEX.DDS.512.66.0F38.W1 76 /r

Opcode
  0x76
Tested by
  t5740

    IiyVPERMI2Q:: PROC
        IiEmitOpcode 0x76
    .op:IiAllowModifier MASK,DATA
        IiAllowBroadcasting QWORD
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FV64
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, zmm.zmm.zmm, zmm.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix EVEX.DDS.128.66.0F38.W1
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix EVEX.DDS.256.66.0F38.W1
        RET
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix EVEX.DDS.512.66.0F38.W1
        RET
      ENDP IiyVPERMI2Q::

↑ VPERMI2PS
  Full Permute of single-precision FP From Two Tables Overwriting the Index
Intel reference

  VPERMI2PS xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst | EVEX.DDS.128.66.0F38.W0 77 /r
  VPERMI2PS ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst | EVEX.DDS.256.66.0F38.W0 77 /r
  VPERMI2PS zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst | EVEX.DDS.512.66.0F38.W0 77 /r

Opcode
  0x77
Tested by
  t5740

    IiyVPERMI2PS:: PROC
        IiEmitOpcode 0x77
        JMP IiyVPERMI2D.op:
      ENDP IiyVPERMI2PS::

↑ VPERMI2PD
  Full Permute of double-precission FP From Two Tables Overwriting the Index
Intel reference

  VPERMI2PD xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst | EVEX.DDS.128.66.0F38.W1 77 /r
  VPERMI2PD ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst | EVEX.DDS.256.66.0F38.W1 77 /r
  VPERMI2PD zmm1 {k1}{z}, zmm2, zmm3/m512/m64bcst | EVEX.DDS.512.66.0F38.W1 77 /r

Opcode
  0x77
Tested by
  t5740

    IiyVPERMI2PD:: PROC
        IiEmitOpcode 0x77
        JMP IiyVPERMI2Q.op:
      ENDP IiyVPERMI2PD::

↑ VPERMT2B
  Full Permute BYTEs From Two Tables Overwriting a Table
Intel reference

  VPERMT2B xmm1 {k1}{z}, xmm2, xmm3/m128 | EVEX.DDS.128.66.0F38.W0 7D /r
  VPERMT2B ymm1 {k1}{z}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F38.W0 7D /r
  VPERMT2B zmm1 {k1}{z}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F38.W0 7D /r

Opcode
  0x7D
Tested by
  t5742

    IiyVPERMT2B:: PROC
        IiEmitOpcode 0x7D
        JMP IiyVPERMI2B.op:
      ENDP IiyVPERMT2B::

↑ VPERMT2W
  Full Permute WORDs from Two Tables Overwriting one Table
Intel reference

  VPERMT2W xmm1 {k1}{z}, xmm2, xmm3/m128 | EVEX.DDS.128.66.0F38.W1 7D /r
  VPERMT2W ymm1 {k1}{z}, ymm2, ymm3/m256 | EVEX.DDS.256.66.0F38.W1 7D /r
  VPERMT2W zmm1 {k1}{z}, zmm2, zmm3/m512 | EVEX.DDS.512.66.0F38.W1 7D /r

Opcode
  0x7D
Tested by
  t5742

    IiyVPERMT2W:: PROC
        IiEmitOpcode 0x7D
        JMP IiyVPERMI2W.op:
      ENDP IiyVPERMT2W::

↑ VPERMT2D
  Full Permute DWORDs from Two Tables Overwriting one Table
Intel reference

  VPERMT2D xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst | EVEX.DDS.128.66.0F38.W0 7E /r
  VPERMT2D ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst | EVEX.DDS.256.66.0F38.W0 7E /r
  VPERMT2D zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst | EVEX.DDS.512.66.0F38.W0 7E /r

Opcode
  0x7E
Tested by
  t5742

    IiyVPERMT2D:: PROC
        IiEmitOpcode 0x7E
        JMP IiyVPERMI2D.op:
      ENDP IiyVPERMT2D::

↑ VPERMT2Q
  Full Permute QWORDs from Two Tables Overwriting one Table
Intel reference

  VPERMT2Q xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst | EVEX.DDS.128.66.0F38.W1 7E /r
  VPERMT2Q ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst | EVEX.DDS.256.66.0F38.W1 7E /r
  VPERMT2Q zmm1 {k1}{z}, zmm2, zmm3/m512/m64bcst | EVEX.DDS.512.66.0F38.W1 7E /r

Opcode
  0x7E
Tested by
  t5742

    IiyVPERMT2Q:: PROC
        IiEmitOpcode 0x7E
        JMP IiyVPERMI2Q.op:
      ENDP IiyVPERMT2Q::

↑ VPERMT2PS
  Full Permute single-precission FP from Two Tables Overwriting one Table
Intel reference

  VPERMT2PS xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst | EVEX.DDS.128.66.0F38.W0 7F /r
  VPERMT2PS ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst | EVEX.DDS.256.66.0F38.W0 7F /r
  VPERMT2PS zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst | EVEX.DDS.512.66.0F38.W0 7F /r

Opcode
  0x7F
Tested by
  t5742

    IiyVPERMT2PS:: PROC
        IiEmitOpcode 0x7F
        JMP IiyVPERMI2D.op:
      ENDP IiyVPERMT2PS::

↑ VPERMT2PD
  Full Permute double-precission FP from Two Tables Overwriting one Table
Intel reference

  VPERMT2PD xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst | EVEX.DDS.128.66.0F38.W1 7F /r
  VPERMT2PD ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst | EVEX.DDS.256.66.0F38.W1 7F /r
  VPERMT2PD zmm1 {k1}{z}, zmm2, zmm3/m512/m64bcst | EVEX.DDS.512.66.0F38.W1 7F /r

Opcode
  0x7F
Tested by
  t5742

    IiyVPERMT2PD:: PROC
        IiEmitOpcode 0x7F
        JMP IiyVPERMI2Q.op:
      ENDP IiyVPERMT2PD::

↑ VPERMB
  Permute Packed Bytes Elements
Intel reference

  VPERMB xmm1 {k1}{z}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F38.W0 8D /r
  VPERMB ymm1 {k1}{z}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F38.W0 8D /r
  VPERMB zmm1 {k1}{z}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F38.W0 8D /r

Opcode
  0x8D
Tested by
  t5744

    IiyVPERMB:: PROC
        IiAllowModifier MASK,DATA
        IiEmitOpcode 0x8D
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FVM
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, zmm.zmm.zmm, zmm.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix EVEX.NDS.128.66.0F38.W0
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix EVEX.NDS.256.66.0F38.W0
        RET
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F38.W0
        RET
      ENDP IiyVPERMB::

↑ VPERMW
  Permute Packed Words Elements
Intel reference

  VPERMW xmm1 {k1}{z}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F38.W1 8D /r
  VPERMW ymm1 {k1}{z}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F38.W1 8D /r
  VPERMW zmm1 {k1}{z}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F38.W1 8D /r

Opcode
  0x8D
Tested by
  t5744

    IiyVPERMW:: PROC
        IiAllowModifier MASK,DATA
        IiEmitOpcode 0x8D
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FVM
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, zmm.zmm.zmm, zmm.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix EVEX.NDS.128.66.0F38.W1
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix EVEX.NDS.256.66.0F38.W1
        RET
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F38.W1
        RET
      ENDP IiyVPERMW::

↑ VPERMD
  Permute Packed Doublewords Elements
Description
  VPERMD
Intel reference

  VPERMD ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F38.W0 36 /r
  VPERMD ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst | EVEX.NDS.256.66.0F38.W0 36 /r
  VPERMD zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst | EVEX.NDS.512.66.0F38.W0 36 /r
  VPERMD zmm1 {k1}, zmm2, zmm3/m512 | MVEX.NDS.512.66.0F38.W0 36 /r

Opcode
  0x36
Tested by
  t5744

    IiyVPERMD:: PROC
        IiAllowModifier MASK,DATA
        IiAllowBroadcasting DWORD
        IiEmitOpcode 0x36
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FV32
        IiDisp8MVEX Di64
        IiDispatchFormat  ymm.ymm.ymm, ymm.ymm.mem, zmm.zmm.zmm, zmm.zmm.mem
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix VEX.NDS.256.66.0F38.W0, EVEX.NDS.256.66.0F38.W0
        RET
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F38.W0, MVEX.NDS.512.66.0F38.W0
        RET
      ENDP IiyVPERMD::

↑ VPERMQ
  Qwords Element Permutation
Description
  VPERMQ
Intel reference

  VPERMQ ymm1, ymm2/m256, imm8 | VEX.256.66.0F3A.W1 00 /r ib
  VPERMQ ymm1 {k1}{z}, ymm2/m256/m64bcst, imm8 | EVEX.256.66.0F3A.W1 00 /r ib
  VPERMQ zmm1 {k1}{z}, zmm2/m512/m64bcst, imm8 | EVEX.512.66.0F3A.W1 00 /r ib
  VPERMQ ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst | EVEX.NDS.256.66.0F38.W1 36 /r
  VPERMQ zmm1 {k1}{z}, zmm2, zmm3/m512/m64bcst | EVEX.NDS.512.66.0F38.W1 36 /r

Opcode
  0x00 | 0x36
Tested by
  t5744

    IiyVPERMQ:: PROC
        MOV AL,0x00
        MOV BL,0x36
    .op:IiAllowModifier MASK,DATA,IMM
        IiAllowBroadcasting QWORD
        IiModRM /r
        IiDisp8EVEX FV64
        CMP DL,imm
        JE .I:
        IiAllowBroadcasting QWORD
        IiOpEn RVM
        IiEmitOpcode EBX
        IiDispatchFormat  ymm.ymm.ymm, ymm.ymm.mem, zmm.zmm.zmm, zmm.zmm.mem
    .ymm.ymm.ymm:
        IiEmitPrefix EVEX.NDS.256.66.0F38.W1
        RET
    .ymm.ymm.mem:
        IiEmitPrefix EVEX.NDS.256.66.0F38.W1
        RET
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F38.W1
        RET
    .I: IiAllowBroadcasting QWORD, Operand=DH
        IiOpEn RM
        IiEmitOpcode EAX
        IiEmitImm Operand3, BYTE
        IiDispatchFormat  ymm.ymm.imm, ymm.mem.imm, zmm.zmm.imm, zmm.mem.imm
    .ymm.ymm.imm:
    .ymm.mem.imm:
        IiEmitPrefix VEX.256.66.0F3A.W1, EVEX.256.66.0F3A.W1
        RET
    .zmm.zmm.imm:
    .zmm.mem.imm:
        IiEmitPrefix EVEX.512.66.0F3A.W1
        RET
      ENDP IiyVPERMQ::

↑ VPERMPS
  Permute Single-Precision Floating-Point Elements
Description
  VPERMPS
Intel reference

  VPERMPS ymm1, ymm2, ymm3/m256 | VEX.256.66.0F38.W0 16 /r
  VPERMPS ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst | EVEX.NDS.256.66.0F38.W0 16 /r
  VPERMPS zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst | EVEX.NDS.512.66.0F38.W0 16 /r

Opcode
  0X16
Tested by
  t5746

    IiyVPERMPS:: PROC
        IiAllowModifier MASK,DATA
        IiAllowBroadcasting DWORD
        IiEmitOpcode 0x16
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FV32
        IiDispatchFormat  ymm.ymm.ymm, ymm.ymm.mem, zmm.zmm.zmm, zmm.zmm.mem
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix VEX.256.66.0F38.W0, EVEX.NDS.256.66.0F38.W0
        RET
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F38.W0
        RET
      ENDP IiyVPERMPS::

↑ VPERMPD
  Permute Double-Precision Floating-Point Elements
Description
  VPERMPD
Intel reference

  VPERMPD ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst | EVEX.NDS.256.66.0F38.W1 16 /r
  VPERMPD zmm1 {k1}{z}, zmm2, zmm3/m512/m64bcst | EVEX.NDS.512.66.0F38.W1 16 /r
  VPERMPD ymm1, ymm2/m256, imm8 | VEX.256.66.0F3A.W1 01 /r ib
  VPERMPD ymm1 {k1}{z}, ymm2/m256/m64bcst, imm8 | EVEX.256.66.0F3A.W1 01 /r ib
  VPERMPD zmm1 {k1}{z}, zmm2/m512/m64bcst, imm8 | EVEX.512.66.0F3A.W1 01 /r ib

Opcode
  0X01 | 0X16
Tested by
  t5746

    IiyVPERMPD:: PROC
        MOV AL,0x01
        MOV BL,0x16
        JMP IiyVPERMQ.op:
      ENDP IiyVPERMPD::

↑ VPERMILPS
  Permute In-Lane of Quadruples of Single-Precision Floating-Point Values
Description
  VPERMILPS
Intel reference

  VPERMILPS xmm1, xmm2, xmm3/m128 | VEX.NDS.128.66.0F38.W0 0C /r
  VPERMILPS ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F38.W0 0C /r
  VPERMILPS xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst | EVEX.NDS.128.66.0F38.W0 0C /r
  VPERMILPS ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst | EVEX.NDS.256.66.0F38.W0 0C /r
  VPERMILPS zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst | EVEX.NDS.512.66.0F38.W0 0C /r
  VPERMILPS xmm1, xmm2/m128, imm8 | VEX.128.66.0F3A.W0 04 /r ib
  VPERMILPS ymm1, ymm2/m256, imm8 | VEX.256.66.0F3A.W0 04 /r ib
  VPERMILPS xmm1 {k1}{z}, xmm2/m128/m32bcst, imm8 | EVEX.128.66.0F3A.W0 04 /r ib
  VPERMILPS ymm1 {k1}{z}, ymm2/m256/m32bcst, imm8 | EVEX.256.66.0F3A.W0 04 /r ib
  VPERMILPS zmm1 {k1}{z}, zmm2/m512/m32bcst, imm8 | EVEX.512.66.0F3A.W0 04 /r ib

Opcode
  0x0C | 0x04
Tested by
  t5746

    IiyVPERMILPS:: PROC
        IiAllowModifier MASK,DATA,IMM
        IiModRM /r
        IiDisp8EVEX FV32
        CMP DL,imm
        JE .I:
        IiAllowBroadcasting DWORD
        IiOpEn RVM
        IiEmitOpcode 0x0C
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, zmm.zmm.zmm, zmm.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix VEX.NDS.128.66.0F38.W0, EVEX.NDS.128.66.0F38.W0
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix VEX.NDS.256.66.0F38.W0, EVEX.NDS.256.66.0F38.W0
        RET
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F38.W0
        RET
    .I: IiAllowBroadcasting DWORD, Operand=DH
        IiOpEn RM
        IiEmitOpcode 0x04
        IiEmitImm Operand3, BYTE
        IiDispatchFormat xmm.xmm.imm, xmm.mem.imm, ymm.ymm.imm, ymm.mem.imm, zmm.zmm.imm, zmm.mem.imm
    .xmm.xmm.imm:
    .xmm.mem.imm:
        IiEmitPrefix VEX.128.66.0F3A.W0, EVEX.128.66.0F3A.W0
        RET
    .ymm.ymm.imm:
    .ymm.mem.imm:
        IiEmitPrefix VEX.256.66.0F3A.W0, EVEX.256.66.0F3A.W0
        RET
    .zmm.zmm.imm:
    .zmm.mem.imm:
        IiEmitPrefix EVEX.512.66.0F3A.W0
        RET
      ENDP IiyVPERMILPS::

↑ VPERMILPD
  Permute In-Lane of Pairs of Double-Precision Floating-Point Values
Description
  VPERMILPD
Intel reference

  VPERMILPD xmm1, xmm2, xmm3/m128 | VEX.NDS.128.66.0F38.W0 0D /r
  VPERMILPD ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F38.W0 0D /r
  VPERMILPD xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst | EVEX.NDS.128.66.0F38.W1 0D /r
  VPERMILPD ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst | EVEX.NDS.256.66.0F38.W1 0D /r
  VPERMILPD zmm1 {k1}{z}, zmm2, zmm3/m512/m64bcst | EVEX.NDS.512.66.0F38.W1 0D /r
  VPERMILPD xmm1, xmm2/m128, imm8 | VEX.128.66.0F3A.W0 05 /r ib
  VPERMILPD ymm1, ymm2/m256, imm8 | VEX.256.66.0F3A.W0 05 /r ib
  VPERMILPD xmm1 {k1}{z}, xmm2/m128/m64bcst, imm8 | EVEX.128.66.0F3A.W1 05 /r ib
  VPERMILPD ymm1 {k1}{z}, ymm2/m256/m64bcst, imm8 | EVEX.256.66.0F3A.W1 05 /r ib
  VPERMILPD zmm1 {k1}{z}, zmm2/m512/m64bcst, imm8 | EVEX.512.66.0F3A.W1 05 /r ib

Opcode
  0x0D | 0x05
Tested by
  t5746

    IiyVPERMILPD:: PROC
        IiAllowModifier MASK,DATA,IMM
        IiModRM /r
        IiDisp8EVEX FV64
        CMP DL,imm
        JE .I:
        IiAllowBroadcasting QWORD
        IiOpEn RVM
        IiEmitOpcode 0x0D
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, zmm.zmm.zmm, zmm.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix VEX.NDS.128.66.0F38.W0, EVEX.NDS.128.66.0F38.W1
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix VEX.NDS.256.66.0F38.W0, EVEX.NDS.256.66.0F38.W1
        RET
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F38.W1
        RET
    .I: IiAllowBroadcasting QWORD, Operand=DH
        IiOpEn RM
        IiEmitOpcode 0x05
        IiEmitImm Operand3, BYTE
        IiDispatchFormat xmm.xmm.imm, xmm.mem.imm, ymm.ymm.imm, ymm.mem.imm, zmm.zmm.imm, zmm.mem.imm
    .xmm.xmm.imm:
    .xmm.mem.imm:
        IiEmitPrefix VEX.128.66.0F3A.W0, EVEX.128.66.0F3A.W1
        RET
    .ymm.ymm.imm:
    .ymm.mem.imm:
        IiEmitPrefix VEX.256.66.0F3A.W0, EVEX.256.66.0F3A.W1
        RET
    .zmm.zmm.imm:
    .zmm.mem.imm:
        IiEmitPrefix EVEX.512.66.0F3A.W1
        RET
      ENDP IiyVPERMILPD::

↑ VPERM2F128
  Permute Floating-Point Values
Description
  VPERM2F128
Intel reference

  VPERM2F128 ymm1, ymm2, ymm3/m256, imm8 | VEX.NDS.256.66.0F3A.W0 06 /r ib

Operands
  0x06
Tested by
  t5748

    IiyVPERM2F128:: PROC
        IiEmitOpcode 0x06
    .op:IiOpEn RVM
        IiAllowModifier DATA,IMM
        IiModRM /r
        IiEmitImm Operand4, BYTE
        IiDispatchFormat  ymm.ymm.ymm.imm, ymm.ymm.mem.imm
    .ymm.ymm.ymm.imm:
    .ymm.ymm.mem.imm:
        IiEmitPrefix VEX.NDS.256.66.0F3A.W0
        RET
      ENDP IiyVPERM2F128::

↑ VPERM2I128
  Permute Integer Values
Description
  VPERM2I128
Intel reference

  VPERM2I128 ymm1, ymm2, ymm3/m256, imm8 | VEX.NDS.256.66.0F3A.W0 46 /r ib

Opcode
  0x46
Tested by
  t5748

    IiyVPERM2I128:: PROC
        IiEmitOpcode 0x46
        JMP IiyVPERM2F128.op:
      ENDP IiyVPERM2I128::

↑ VPTESTMB
  Logical AND and Set Mask
Intel reference

  VPTESTMB k2 {k1}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F38.W0 26 /r F
  VPTESTMB k2 {k1}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F38.W0 26 /r F
  VPTESTMB k2 {k1}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F38.W0 26 /r F

Operands
  0x26
Tested by
  t5760

    IiyVPTESTMB:: PROC
        IiAllowModifier DATA
        IiEncoding DATA=BYTE
        IiDisp8EVEX FVM
        IiEmitOpcode 0x26
        IiAllowMaskMerging
        IiOpEn RVM
        IiModRM /r
        IiDispatchFormat  krg.xmm.xmm, krg.xmm.mem, krg.ymm.ymm, krg.ymm.mem, krg.zmm.zmm, krg.zmm.mem
    .krg.xmm.xmm:
    .krg.xmm.mem:
        IiEmitPrefix EVEX.NDS.128.66.0F38.W0
        RET
    .krg.ymm.ymm:
    .krg.ymm.mem:
        IiEmitPrefix EVEX.NDS.256.66.0F38.W0
        RET
    .krg.zmm.zmm:
    .krg.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F38.W0
        RET
      ENDP IiyVPTESTMB::

↑ VPTESTMW
  Logical AND and Set Mask
Intel reference

  VPTESTMW k2 {k1}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F38.W1 26 /r F
  VPTESTMW k2 {k1}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F38.W1 26 /r F
  VPTESTMW k2 {k1}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F38.W1 26 /r F

Opcode
  0x26
Tested by
  t5760

    IiyVPTESTMW:: PROC
        IiEncoding DATA=WORD
        IiDisp8EVEX FVM
        IiEmitOpcode 0x26
    .op:IiAllowMaskMerging
        IiAllowModifier DATA
        IiOpEn RVM
        IiModRM /r
        IiDispatchFormat  krg.xmm.xmm, krg.xmm.mem, krg.ymm.ymm, krg.ymm.mem, krg.zmm.zmm, krg.zmm.mem
    .krg.xmm.xmm:
    .krg.xmm.mem:
        IiEmitPrefix EVEX.NDS.128.66.0F38.W1
        RET
    .krg.ymm.ymm:
    .krg.ymm.mem:
        IiEmitPrefix EVEX.NDS.256.66.0F38.W1
        RET
    .krg.zmm.zmm:
    .krg.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F38.W1
        RET
      ENDP IiyVPTESTMW::

↑ VPTESTMD
  Logical AND and Set Mask
Intel reference

  VPTESTMD k2 {k1}, xmm2, xmm3/m128/m32bcst | EVEX.NDS.128.66.0F38.W0 27 /r
  VPTESTMD k2 {k1}, ymm2, ymm3/m256/m32bcst | EVEX.NDS.256.66.0F38.W0 27 /r
  VPTESTMD k2 {k1}, zmm2, zmm3/m512/m32bcst | EVEX.NDS.512.66.0F38.W0 27 /r
  VPTESTMD k2 {k1}, zmm2, zmm3/m512/m32bcst | MVEX.NDS.512.66.0F38.W0 27 /r

Opcode
  0x27
Tested by
  t5760

    IiyVPTESTMD:: PROC
        IiAllowModifier DATA
        IiAllowBroadcasting DWORD
        IiDisp8EVEX FV32
        IiDisp8MVEX Si32
        IiEmitOpcode 0x27
        IiAllowMaskMerging
        IiOpEn RVM
        IiModRM /r
        IiDispatchFormat  krg.xmm.xmm, krg.xmm.mem, krg.ymm.ymm, krg.ymm.mem, krg.zmm.zmm, krg.zmm.mem
    .krg.xmm.xmm:
    .krg.xmm.mem:
        IiEmitPrefix EVEX.NDS.128.66.0F38.W0
        RET
    .krg.ymm.ymm:
    .krg.ymm.mem:
        IiEmitPrefix EVEX.NDS.256.66.0F38.W0
        RET
    .krg.zmm.zmm:
    .krg.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F38.W0, MVEX.NDS.512.66.0F38.W0
        RET
      ENDP IiyVPTESTMD::

↑ VPTESTMQ
  Logical AND and Set Mask
Intel reference

  VPTESTMQ k2 {k1}, xmm2, xmm3/m128/m64bcst | EVEX.NDS.128.66.0F38.W1 27 /r F
  VPTESTMQ k2 {k1}, ymm2, ymm3/m256/m64bcst | EVEX.NDS.256.66.0F38.W1 27 /r F
  VPTESTMQ k2 {k1}, zmm2, zmm3/m512/m64bcst | EVEX.NDS.512.66.0F38.W1 27 /r F

Opcode
  0x27
Tested by
  t5760

    IiyVPTESTMQ:: PROC
        IiAllowBroadcasting QWORD
        IiDisp8EVEX FV64
        IiEmitOpcode 0x27
        JMP IiyVPTESTMW.op:
      ENDP IiyVPTESTMQ::

↑ VPTESTNMB
  Logical NAND and Set
Intel reference

  VPTESTNMB k2 {k1}, xmm2, xmm3/m128 | EVEX.NDS.128.F3.0F38.W0 26 /r
  VPTESTNMB k2 {k1}, ymm2, ymm3/m256 | EVEX.NDS.256.F3.0F38.W0 26 /r
  VPTESTNMB k2 {k1}, zmm2, zmm3/m512 | EVEX.NDS.512.F3.0F38.W0 26 /r

Opcode
  0x26
Tested by
  t5762

    IiyVPTESTNMB:: PROC
        IiEncoding DATA=BYTE
        IiDisp8EVEX FVM
        IiEmitOpcode 0x26
    .op:IiAllowMaskMerging
        IiAllowModifier DATA
        IiOpEn RVM
        IiModRM /r
        IiDispatchFormat  krg.xmm.xmm, krg.xmm.mem, krg.ymm.ymm, krg.ymm.mem, krg.zmm.zmm, krg.zmm.mem
    .krg.xmm.xmm:
    .krg.xmm.mem:
        IiEmitPrefix EVEX.NDS.128.F3.0F38.W0
        RET
    .krg.ymm.ymm:
    .krg.ymm.mem:
        IiEmitPrefix EVEX.NDS.256.F3.0F38.W0
        RET
    .krg.zmm.zmm:
    .krg.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.F3.0F38.W0
        RET
      ENDP IiyVPTESTNMB::

↑ VPTESTNMW
  Logical NAND and Set
Intel reference

  VPTESTNMW k2 {k1}, xmm2, xmm3/m128 | EVEX.NDS.128.F3.0F38.W1 26 /r
  VPTESTNMW k2 {k1}, ymm2, ymm3/m256 | EVEX.NDS.256.F3.0F38.W1 26 /r
  VPTESTNMW k2 {k1}, zmm2, zmm3/m512 | EVEX.NDS.512.F3.0F38.W1 26 /r

Opcode
  0x26
Tested by
  t5762

    IiyVPTESTNMW:: PROC
        IiEncoding DATA=WORD
        IiDisp8EVEX FVM
        IiEmitOpcode 0x26
    .op:IiAllowMaskMerging
        IiAllowModifier DATA
        IiOpEn RVM
        IiModRM /r
        IiDispatchFormat  krg.xmm.xmm, krg.xmm.mem, krg.ymm.ymm, krg.ymm.mem, krg.zmm.zmm, krg.zmm.mem
    .krg.xmm.xmm:
    .krg.xmm.mem:
        IiEmitPrefix EVEX.NDS.128.F3.0F38.W1
        RET
    .krg.ymm.ymm:
    .krg.ymm.mem:
        IiEmitPrefix EVEX.NDS.256.F3.0F38.W1
        RET
    .krg.zmm.zmm:
    .krg.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.F3.0F38.W1
        RET
      ENDP IiyVPTESTNMW::

↑ VPTESTNMD
  Logical NAND and Set
Intel reference

  VPTESTNMD k2 {k1}, xmm2, xmm3/m128/m32bcst | EVEX.NDS.128.F3.0F38.W0 27 /r
  VPTESTNMD k2 {k1}, ymm2, ymm3/m256/m32bcst | EVEX.NDS.256.F3.0F38.W0 27 /r
  VPTESTNMD k2 {k1}, zmm2, zmm3/m512/m32bcst | EVEX.NDS.512.F3.0F38.W0 27 /r

Opcode
  0x27
Tested by
  t5762

    IiyVPTESTNMD:: PROC
        IiAllowBroadcasting DWORD
        IiDisp8EVEX FV32
        IiEmitOpcode 0x27
        JMP IiyVPTESTNMB.op:
      ENDP IiyVPTESTNMD::

↑ VPTESTNMQ
  Logical NAND and Set
Intel reference

  VPTESTNMQ k2 {k1}, xmm2, xmm3/m128/m64bcst | EVEX.NDS.128.F3.0F38.W1 27 /r
  VPTESTNMQ k2 {k1}, ymm2, ymm3/m256/m64bcst | EVEX.NDS.256.F3.0F38.W1 27 /r
  VPTESTNMQ k2 {k1}, zmm2, zmm3/m512/m64bcst | EVEX.NDS.512.F3.0F38.W1 27 /r

Opcode
  0x27
Tested by
  t5762

    IiyVPTESTNMQ:: PROC
        IiAllowBroadcasting QWORD
        IiDisp8EVEX FV64
        IiEmitOpcode 0x27
        JMP IiyVPTESTNMW.op:
      ENDP IiyVPTESTNMQ::

↑ VPTERNLOGD
  Bitwise Ternary Logic
Intel reference

  VPTERNLOGD xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst, imm8 | EVEX.DDS.128.66.0F3A.W0 25 /r ib
  VPTERNLOGD ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst, imm8 | EVEX.DDS.256.66.0F3A.W0 25 /r ib
  VPTERNLOGD zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst, imm8 | EVEX.DDS.512.66.0F3A.W0 25 /r ib

Opcode
  0x25
Tested by
  t5780

    IiyVPTERNLOGD:: PROC
        IiAllowModifier MASK,DATA,IMM
        IiAllowBroadcasting DWORD, Operand=DH
        IiEmitOpcode 0x25
        IiOpEn RVM
        IiModRM /r
        IiEmitImm Operand4, BYTE
        IiDisp8EVEX FV32
        IiDispatchFormat  xmm.xmm.xmm.imm, xmm.xmm.mem.imm, ymm.ymm.ymm.imm, ymm.ymm.mem.imm, zmm.zmm.zmm.imm, zmm.zmm.mem.imm
    .xmm.xmm.xmm.imm:
    .xmm.xmm.mem.imm:
        IiEmitPrefix EVEX.DDS.128.66.0F3A.W0
        RET
    .ymm.ymm.ymm.imm:
    .ymm.ymm.mem.imm:
        IiEmitPrefix EVEX.DDS.256.66.0F3A.W0
        RET
    .zmm.zmm.zmm.imm:
    .zmm.zmm.mem.imm:
        IiEmitPrefix EVEX.DDS.512.66.0F3A.W0
        RET
      ENDP IiyVPTERNLOGD::

↑ VPTERNLOGQ
  Bitwise Ternary Logic
Intel reference

  VPTERNLOGQ xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst, imm8 | EVEX.DDS.128.66.0F3A.W1 25 /r ib
  VPTERNLOGQ ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst, imm8 | EVEX.DDS.256.66.0F3A.W1 25 /r ib
  VPTERNLOGQ zmm1 {k1}{z}, zmm2, zmm3/m512/m64bcst, imm8 | EVEX.DDS.512.66.0F3A.W1 25 /r ib

Opcode
  0x25
Tested by
  t5780

    IiyVPTERNLOGQ:: PROC
        IiAllowModifier MASK,DATA,IMM
        IiAllowBroadcasting QWORD, Operand=DH
        IiEmitOpcode 0x25
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FV64
        IiEmitImm Operand4, BYTE
        IiDispatchFormat  xmm.xmm.xmm.imm, xmm.xmm.mem.imm, ymm.ymm.ymm.imm, ymm.ymm.mem.imm, zmm.zmm.zmm.imm, zmm.zmm.mem.imm
    .xmm.xmm.xmm.imm:
    .xmm.xmm.mem.imm:
        IiEmitPrefix EVEX.DDS.128.66.0F3A.W1
        RET
    .ymm.ymm.ymm.imm:
    .ymm.ymm.mem.imm:
        IiEmitPrefix EVEX.DDS.256.66.0F3A.W1
        RET
    .zmm.zmm.zmm.imm:
    .zmm.zmm.mem.imm:
        IiEmitPrefix EVEX.DDS.512.66.0F3A.W1
        RET
      ENDP IiyVPTERNLOGQ::

↑ VPALIGNR
  Packed Align Right
Intel reference

  VPALIGNR xmm1, xmm2, xmm3/m128, imm8 | VEX.NDS.128.66.0F3A 0F /r ib
  VPALIGNR ymm1, ymm2, ymm3/m256, imm8 | VEX.NDS.256.66.0F3A 0F /r ib
  VPALIGNR xmm1 {k1}{z}, xmm2, xmm3/m128, imm8 | EVEX.NDS.128.66.0F3A.WIG 0F /r ib
  VPALIGNR ymm1 {k1}{z}, ymm2, ymm3/m256, imm8 | EVEX.NDS.256.66.0F3A.WIG 0F /r ib
  VPALIGNR zmm1 {k1}{z}, zmm2, zmm3/m512, imm8 | EVEX.NDS.512.66.0F3A.WIG 0F /r ib

Category
  ssse3,simdint
Operands
  Pq,Qq | Vdq,Wdq
Opcode
  0x0F3A0F /r | 0x660F3A0F /r
CPU
  C2+
Tested by
  t5780

    IiyVPALIGNR:: PROC
        IiRequire SSSE3
        IiAllowModifier MASK,DATA,IMM
        IiEmitOpcode 0x0F
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FVM
        IiEmitImm Operand4, BYTE
        IiDispatchFormat  xmm.xmm.xmm.imm, xmm.xmm.mem.imm, ymm.ymm.ymm.imm, ymm.ymm.mem.imm, zmm.zmm.zmm.imm, zmm.zmm.mem.imm
    .xmm.xmm.xmm.imm:
    .xmm.xmm.mem.imm:
        IiEmitPrefix VEX.NDS.128.66.0F3A, EVEX.NDS.128.66.0F3A.WIG
        RET
    .ymm.ymm.ymm.imm:
    .ymm.ymm.mem.imm:
        IiEmitPrefix VEX.NDS.256.66.0F3A, EVEX.NDS.256.66.0F3A.WIG
        RET
    .zmm.zmm.zmm.imm:
    .zmm.zmm.mem.imm:
        IiEmitPrefix EVEX.NDS.512.66.0F3A.WIG
        RET
      ENDP IiyVPALIGNR::

↑ VPCMPB
  Compare Packed Signed BYTE Values Into Mask
Intel reference

  VPCMPB k1 {k2}, xmm2, xmm3/m128, imm8 | EVEX.NDS.128.66.0F3A.W0 3F /r ib
  VPCMPB k1 {k2}, ymm2, ymm3/m256, imm8 | EVEX.NDS.256.66.0F3A.W0 3F /r ib
  VPCMPB k1 {k2}, zmm2, zmm3/m512, imm8 | EVEX.NDS.512.66.0F3A.W0 3F /r ib

Opcode
  0x3F
Tested by
  t5790

    IiyVPCMPB:: PROC
        MOV AL,0x3F
    .op:IiEmitOpcode EAX
        IiAllowModifier CODE,DATA,IMM
        IiAllowMaskMerging
        IiEncoding CODE=LONG,DATA=BYTE
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FVM
        IiEmitImm Operand4, BYTE, Max=7
        IiDispatchFormat  krg.xmm.xmm.imm, krg.xmm.mem.imm, krg.ymm.ymm.imm, krg.ymm.mem.imm, krg.zmm.zmm.imm, krg.zmm.mem.imm
    .cc:SHL EDX,8 ; This entry is called with format krg,regmm,regmm/mem (no immediate).
        MOV DL,imm ; Convert that format to krg,regmm,regmm/mem,imm.
        MOV [EDI+II.Operand4+EXP.Low],CL ; Create imm value from cc mnemonic (0..7).
        MOVB [EDI+II.Operand4+EXP.Status],'N'
        JMP IiyVPCMPB.op: ; Continue as if the condition were specified by imm value.
    .krg.xmm.xmm.imm:
    .krg.xmm.mem.imm:
        IiEmitPrefix EVEX.NDS.128.66.0F3A.W0
        RET
    .krg.ymm.ymm.imm:
    .krg.ymm.mem.imm:
        IiEmitPrefix EVEX.NDS.256.66.0F3A.W0
        RET
    .krg.zmm.zmm.imm:
    .krg.zmm.mem.imm:
        IiEmitPrefix EVEX.NDS.512.66.0F3A.W0
        RET
      ENDP IiyVPCMPB::

↑ VPCMPUB
  Compare Packed Unsigned BYTE Values Into Mask
Intel reference

  VPCMPUB k1 {k2}, xmm2, xmm3/m128, imm8 | EVEX.NDS.128.66.0F3A.W0 3E /r ib
  VPCMPUB k1 {k2}, ymm2, ymm3/m256, imm8 | EVEX.NDS.256.66.0F3A.W0 3E /r ib
  VPCMPUB k1 {k2}, zmm2, zmm3/m512, imm8 | EVEX.NDS.512.66.0F3A.W0 3E /r ib

Opcode
  0x3E
Tested by
  t5790

    IiyVPCMPUB:: PROC
        MOV AL,0x3E
        JMP IiyVPCMPB.op:
      ENDP IiyVPCMPUB::

↑ VPCMPW
  Compare Packed Signed WORD Values Into Mask
Intel reference

  VPCMPW k1 {k2}, xmm2, xmm3/m128, imm8 | EVEX.NDS.128.66.0F3A.W1 3F /r ib
  VPCMPW k1 {k2}, ymm2, ymm3/m256, imm8 | EVEX.NDS.256.66.0F3A.W1 3F /r ib
  VPCMPW k1 {k2}, zmm2, zmm3/m512, imm8 | EVEX.NDS.512.66.0F3A.W1 3F /r ib

Opcode
  0x3F
Tested by
  t5790

    IiyVPCMPW:: PROC
        MOV AL,0x3F
    .op:IiEmitOpcode EAX
        IiAllowModifier CODE,DATA,IMM
        IiAllowMaskMerging
        IiEncoding CODE=LONG,DATA=WORD
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FVM
        IiEmitImm Operand4, BYTE, Max=7
        IiDispatchFormat  krg.xmm.xmm.imm, krg.xmm.mem.imm, krg.ymm.ymm.imm, krg.ymm.mem.imm, krg.zmm.zmm.imm, krg.zmm.mem.imm
    .cc:SHL EDX,8 ; This entry is called with format krg,regmm,regmm/mem (no immediate).
        MOV DL,imm ; Convert that format to krg,regmm,regmm/mem,imm.
        MOV [EDI+II.Operand4+EXP.Low],CL ; Create imm value from cc mnemonic (0..7).
        MOVB [EDI+II.Operand4+EXP.Status],'N'
        JMP IiyVPCMPW.op: ; Continue as if the condition were specified by imm value.
    .krg.xmm.xmm.imm:
    .krg.xmm.mem.imm:
        IiEmitPrefix EVEX.NDS.128.66.0F3A.W1
        RET
    .krg.ymm.ymm.imm:
    .krg.ymm.mem.imm:
        IiEmitPrefix EVEX.NDS.256.66.0F3A.W1
        RET
    .krg.zmm.zmm.imm:
    .krg.zmm.mem.imm:
        IiEmitPrefix EVEX.NDS.512.66.0F3A.W1
        RET
      ENDP IiyVPCMPW::

↑ VPCMPUW
  Compare Packed Unsigned WORD Values Into Mask
Intel reference

  VPCMPUW k1 {k2}, xmm2, xmm3/m128, imm8 | EVEX.NDS.128.66.0F3A.W1 3E /r ib
  VPCMPUW k1 {k2}, ymm2, ymm3/m256, imm8 | EVEX.NDS.256.66.0F3A.W1 3E /r ib
  VPCMPUW k1 {k2}, zmm2, zmm3/m512, imm8 | EVEX.NDS.512.66.0F3A.W1 3E /r ib

Opcode
  0x3E
Tested by
  t5790

    IiyVPCMPUW:: PROC
        MOV AL,0x3E
        JMP IiyVPCMPW.op:
      ENDP IiyVPCMPUW::

↑ VPCMPD
  Compare Packed Signed Integer DWORD Values into Mask
Intel reference

  VPCMPD k1 {k2}, xmm2, xmm3/m128/m32bcst, imm8 | EVEX.NDS.128.66.0F3A.W0 1F /r ib
  VPCMPD k1 {k2}, ymm2, ymm3/m256/m32bcst, imm8 | EVEX.NDS.256.66.0F3A.W0 1F /r ib
  VPCMPD k1 {k2}, zmm2, zmm3/m512/m32bcst, imm8 | EVEX.NDS.512.66.0F3A.W0 1F /r ib
  VPCMPD k1 {k2}, zmm2, zmm3/m512/m32bcst, imm8 | MVEX.NDS.512.66.0F3A.W0 1F /r ib

Opcode
  0x1F
Tested by
  t5792

    IiyVPCMPD:: PROC
        MOV AL,0x1F
    .op:IiEmitOpcode EAX
        IiAllowModifier CODE,DATA,IMM
        IiEncoding CODE=LONG
        IiAllowMaskMerging
        IiAllowBroadcasting DWORD, Operand=DH
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FV32
        IiDisp8MVEX Si32
        IiEmitImm Operand4, BYTE, Max=7
        IiDispatchFormat  krg.xmm.xmm.imm, krg.xmm.mem.imm, krg.ymm.ymm.imm, krg.ymm.mem.imm, krg.zmm.zmm.imm, krg.zmm.mem.imm
    .cc:SHL EDX,8 ; This entry is called with format xmm/krg,xmm,xmm/mem (no immediate).
        MOV DL,imm ; Convert that format to xmm/krg,xmm,xmm/mem,imm.
        MOV [EDI+II.Operand4+EXP.Low],CL ; Create imm value from cc mnemonic (0..31).
        MOVB [EDI+II.Operand4+EXP.Status],'N'
        JMP IiyVPCMPD.op: ; Continue as if the condition were specified by imm value.
    .krg.xmm.xmm.imm:
    .krg.xmm.mem.imm:
        IiEmitPrefix EVEX.NDS.128.66.0F3A.W0
        RET
    .krg.ymm.ymm.imm:
    .krg.ymm.mem.imm:
        IiEmitPrefix EVEX.NDS.256.66.0F3A.W0
        RET
    .krg.zmm.zmm.imm:
    .krg.zmm.mem.imm:
        IiEmitPrefix EVEX.NDS.512.66.0F3A.W0, MVEX.NDS.512.66.0F3A.W0
        RET
      ENDP IiyVPCMPD::

↑ VPCMPUD
  Compare Packed Unsigned Integer DWORD Values into Mask
Intel reference

  VPCMPUD k1 {k2}, xmm2, xmm3/m128/m32bcst, imm8 | EVEX.NDS.128.66.0F3A.W0 1E /r ib
  VPCMPUD k1 {k2}, ymm2, ymm3/m256/m32bcst, imm8 | EVEX.NDS.256.66.0F3A.W0 1E /r ib
  VPCMPUD k1 {k2}, zmm2, zmm3/m512/m32bcst, imm8 | EVEX.NDS.512.66.0F3A.W0 1E /r ib
  VPCMPUD k1 {k2}, zmm2, zmm3/m512/m32bcst, imm8 | MVEX.NDS.512.66.0F3A.W0 1E /r ib

Opcode
  0x1E
Tested by
  t5792

    IiyVPCMPUD:: PROC
        MOV AL,0x1E
        JMP IiyVPCMPD.op:
      ENDP IiyVPCMPUD::

↑ VPCMPQ
  Compare Packed Unsigned Integer QWORD Values into Mask
Intel reference

  VPCMPQ k1 {k2}, xmm2, xmm3/m128/m64bcst, imm8 | EVEX.NDS.128.66.0F3A.W1 1F /r ib
  VPCMPQ k1 {k2}, ymm2, ymm3/m256/m64bcst, imm8 | EVEX.NDS.256.66.0F3A.W1 1F /r ib
  VPCMPQ k1 {k2}, zmm2, zmm3/m512/m64bcst, imm8 | EVEX.NDS.512.66.0F3A.W1 1F /r ib

Opcode
  0x1F
Tested by
  t5792

    IiyVPCMPQ:: PROC
        MOV AL,0x1F
    .op:IiEmitOpcode EAX
        IiAllowModifier CODE,DATA,IMM
        IiEncoding CODE=LONG
        IiAllowMaskMerging
        IiAllowBroadcasting QWORD, Operand=DH
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FV64
        IiEmitImm Operand4, BYTE, Max=7
        IiDispatchFormat  krg.xmm.xmm.imm, krg.xmm.mem.imm, krg.ymm.ymm.imm, krg.ymm.mem.imm, krg.zmm.zmm.imm, krg.zmm.mem.imm
    .cc:SHL EDX,8 ; This entry is called with format xmm/krg,xmm,xmm/mem (no immediate).
        MOV DL,imm ; Convert that format to xmm/krg,xmm,xmm/mem,imm.
        MOV [EDI+II.Operand4+EXP.Low],CL ; Create imm value from cc mnemonic (0..31).
        MOVB [EDI+II.Operand4+EXP.Status],'N'
        JMP IiyVPCMPQ.op: ; Continue as if the condition were specified by imm value.
    .krg.xmm.xmm.imm:
    .krg.xmm.mem.imm:
        IiEmitPrefix EVEX.NDS.128.66.0F3A.W1
        RET
    .krg.ymm.ymm.imm:
    .krg.ymm.mem.imm:
        IiEmitPrefix EVEX.NDS.256.66.0F3A.W1
        RET
    .krg.zmm.zmm.imm:
    .krg.zmm.mem.imm:
        IiEmitPrefix EVEX.NDS.512.66.0F3A.W1
        RET
      ENDP IiyVPCMPQ::

↑ VPCMPUQ
  Compare Packed Unsigned Integer QWORD Values into Mask
Intel reference

  VPCMPUQ k1 {k2}, xmm2, xmm3/m128/m64bcst, imm8 | EVEX.NDS.128.66.0F3A.W1 1E /r ib
  VPCMPUQ k1 {k2}, ymm2, ymm3/m256/m64bcst, imm8 | EVEX.NDS.256.66.0F3A.W1 1E /r ib
  VPCMPUQ k1 {k2}, zmm2, zmm3/m512/m64bcst, imm8 | EVEX.NDS.512.66.0F3A.W1 1E /r ib

Opcode
  0x1E
Tested by
  t5792

    IiyVPCMPUQ:: PROC
        MOV AL,0x1E
        JMP IiyVPCMPQ.op:
      ENDP IiyVPCMPUQ::

↑ VPCMPEQB
  Compare if Equal Packed signed BYTE values into mask
Intel reference

  VPCMPEQB xmm1, xmm2, xmm3 /m128 | VEX.NDS.128.66.0F.WIG 74 /r
  VPCMPEQB ymm1, ymm2, ymm3 /m256 | VEX.NDS.256.66.0F.WIG 74 /r
  VPCMPEQB k1 {k2}, xmm2, xmm3 /m128 | EVEX.NDS.128.66.0F.WIG 74 /r
  VPCMPEQB k1 {k2}, ymm2, ymm3 /m256 | EVEX.NDS.256.66.0F.WIG 74 /r
  VPCMPEQB k1 {k2}, zmm2, zmm3 /m512 | EVEX.NDS.512.66.0F.WIG 74 /r
  VPCMPEQB k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W0 3F /r 00
  VPCMPEQB k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W0 3F /r 00
  VPCMPEQB k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W0 3F /r 00

Opcode
  3F /r 0x00
Tested by
  t5794 t5797

    IiyVPCMPEQB:: PROC
        MOV AL,0x3F
        MOV CL,0x00
        PUSH EBX
         MOV EBX,EDX
         SHR EBX,16
         CMP BL,krg
        POP EBX
        JNE .S:
        IiDispatchCode SHORT= .S:, LONG=IiyVPCMPB.cc:
    .S: IiEncoding CODE=SHORT,DATA=BYTE
        IiAllowModifier CODE,DATA
        IiAllowMaskMerging
        IiEmitOpcode 0x74
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FVM
        IiDispatchFormat xmm.xmm.xmm,xmm.xmm.mem,ymm.ymm.ymm,ymm.ymm.mem, \
              krg.xmm.xmm,krg.xmm.mem,krg.ymm.ymm,krg.ymm.mem,krg.zmm.zmm,krg.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix VEX.NDS.128.66.0F.WIG
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix VEX.NDS.256.66.0F.WIG
        RET
    .krg.xmm.xmm:
    .krg.xmm.mem:
        IiEmitPrefix EVEX.NDS.128.66.0F.WIG
        RET
    .krg.ymm.ymm:
    .krg.ymm.mem:
        IiEmitPrefix EVEX.NDS.256.66.0F.WIG
        RET
    .krg.zmm.zmm:
    .krg.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F.WIG
        RET
       ENDP IiyVPCMPEQB::

↑ VPCMPLTB
  Compare if Less Than Packed signed BYTE values into mask
Intel reference

  VPCMPLTB k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W0 3F /r 01
  VPCMPLTB k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W0 3F /r 01
  VPCMPLTB k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W0 3F /r 01

Opcode
  3F /r 0x01
Tested by
  t5794

    IiyVPCMPLTB:: PROC
        MOV AL,0x3F
        MOV CL,0x01
        JMP IiyVPCMPB.cc:
     ENDP IiyVPCMPLTB::

↑ VPCMPLEB
  Compare if Less than or Equal Packed signed BYTE values into mask
Intel reference

  VPCMPLEB k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W0 3F /r 02
  VPCMPLEB k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W0 3F /r 02
  VPCMPLEB k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W0 3F /r 02

Opcode
  3F /r 0x02
Tested by
  t5794

    IiyVPCMPLEB:: PROC
        MOV AL,0x3F
        MOV CL,0x02
        JMP IiyVPCMPB.cc:
     ENDP IiyVPCMPLEB::

↑ VPCMPFALSEB
  Compare if False Packed signed BYTE values into mask
Intel reference

  VPCMPFALSEB k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W0 3F /r 03
  VPCMPFALSEB k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W0 3F /r 03
  VPCMPFALSEB k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W0 3F /r 03

Opcode
  3F /r 0x03
Tested by
  t5794

    IiyVPCMPFALSEB:: PROC
        MOV AL,0x3F
        MOV CL,0x03
        JMP IiyVPCMPB.cc:
     ENDP IiyVPCMPFALSEB::

↑ VPCMPNEQB
  Compare if Not Equal Packed signed BYTE values into mask
Intel reference

  VPCMPNEQB k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W0 3F /r 04
  VPCMPNEQB k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W0 3F /r 04
  VPCMPNEQB k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W0 3F /r 04

Opcode
  3F /r 0x04
Tested by
  t5794

    IiyVPCMPNEQB:: PROC
        MOV AL,0x3F
        MOV CL,0x04
        JMP IiyVPCMPB.cc:
     ENDP IiyVPCMPNEQB::

↑ VPCMPNLTB
  Compare if Not Less Than Packed signed BYTE values into mask
Intel reference

  VPCMPNLTB k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W0 3F /r 05
  VPCMPNLTB k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W0 3F /r 05
  VPCMPNLTB k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W0 3F /r 05

Opcode
  3F /r 0x05
Tested by
  t5794

    IiyVPCMPNLTB:: PROC
        MOV AL,0x3F
        MOV CL,0x05
        JMP IiyVPCMPB.cc:
     ENDP IiyVPCMPNLTB::

↑ VPCMPNLEB
  Compare if Not Less than or Equal Packed signed BYTE values into mask
Intel reference

  VPCMPNLEB k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W0 3F /r 06
  VPCMPNLEB k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W0 3F /r 06
  VPCMPNLEB k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W0 3F /r 06

Opcode
  3F /r 0x06
Tested by
  t5794

    IiyVPCMPNLEB:: PROC
        MOV AL,0x3F
        MOV CL,0x06
        JMP IiyVPCMPB.cc:
     ENDP IiyVPCMPNLEB::

↑ VPCMPTRUEB
  Compare if True Packed signed BYTE values into mask
Intel reference

  VPCMPTRUEB k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W0 3F /r 07
  VPCMPTRUEB k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W0 3F /r 07
  VPCMPTRUEB k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W0 3F /r 07

Opcode
  3F /r 0x07
Tested by
  t5794

    IiyVPCMPTRUEB:: PROC
        MOV AL,0x3F
        MOV CL,0x07
        JMP IiyVPCMPB.cc:
     ENDP IiyVPCMPTRUEB::

↑ VPCMPEQUB
  Compare if Equal Packed Unsigned BYTE values into mask
Intel reference

  VPCMPEQUB k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W0 3E /r 00
  VPCMPEQUB k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W0 3E /r 00
  VPCMPEQUB k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W0 3E /r 00

Opcode
  3E /r 0x00
Tested by
  t5794

    IiyVPCMPEQUB:: PROC
        MOV AL,0x3E
        MOV CL,0x00
        JMP IiyVPCMPB.cc
     ENDP IiyVPCMPEQUB::

↑ VPCMPLTUB
  Compare if Less Than Packed Unsigned BYTE values into mask
Intel reference

  VPCMPLTUB k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W0 3E /r 01
  VPCMPLTUB k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W0 3E /r 01
  VPCMPLTUB k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W0 3E /r 01

Opcode
  3E /r 0x01
Tested by
  t5794

    IiyVPCMPLTUB:: PROC
        MOV AL,0x3E
        MOV CL,0x01
        JMP IiyVPCMPB.cc
     ENDP IiyVPCMPLTUB::

↑ VPCMPLEUB
  Compare if Less than or Equal Packed Unsigned BYTE values into mask
Intel reference

  VPCMPLEUB k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W0 3E /r 02
  VPCMPLEUB k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W0 3E /r 02
  VPCMPLEUB k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W0 3E /r 02

Opcode
  3E /r 0x02
Tested by
  t5794

    IiyVPCMPLEUB:: PROC
        MOV AL,0x3E
        MOV CL,0x02
        JMP IiyVPCMPB.cc
     ENDP IiyVPCMPLEUB::

↑ VPCMPFALSEUB
  Compare if False Packed Unsigned BYTE values into mask
Intel reference

  VPCMPFALSEUB k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W0 3E /r 03
  VPCMPFALSEUB k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W0 3E /r 03
  VPCMPFALSEUB k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W0 3E /r 03

Opcode
  3E /r 0x03
Tested by
  t5794

    IiyVPCMPFALSEUB:: PROC
        MOV AL,0x3E
        MOV CL,0x03
        JMP IiyVPCMPB.cc
     ENDP IiyVPCMPFALSEUB::

↑ VPCMPNEQUB
  Compare if Not Equal Packed Unsigned BYTE values into mask
Intel reference

  VPCMPNEQUB k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W0 3E /r 04
  VPCMPNEQUB k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W0 3E /r 04
  VPCMPNEQUB k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W0 3E /r 04

Opcode
  3E /r 0x04
Tested by
  t5794

    IiyVPCMPNEQUB:: PROC
        MOV AL,0x3E
        MOV CL,0x04
        JMP IiyVPCMPB.cc
     ENDP IiyVPCMPNEQUB::

↑ VPCMPNLTUB
  Compare if Not Less Than Packed Unsigned BYTE values into mask
Intel reference

  VPCMPNLTUB k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W0 3E /r 05
  VPCMPNLTUB k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W0 3E /r 05
  VPCMPNLTUB k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W0 3E /r 05

Opcode
  3E /r 0x05
Tested by
  t5794

    IiyVPCMPNLTUB:: PROC
        MOV AL,0x3E
        MOV CL,0x05
        JMP IiyVPCMPB.cc
     ENDP IiyVPCMPNLTUB::

↑ VPCMPNLEUB
  Compare if Not Less than or Equal Packed Unsigned BYTE values into mask
Intel reference

  VPCMPNLEUB k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W0 3E /r 06
  VPCMPNLEUB k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W0 3E /r 06
  VPCMPNLEUB k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W0 3E /r 06

Opcode
  3E /r 0x06
Tested by
  t5794

    IiyVPCMPNLEUB:: PROC
        MOV AL,0x3E
        MOV CL,0x06
        JMP IiyVPCMPB.cc
     ENDP IiyVPCMPNLEUB::

↑ VPCMPTRUEUB
  Compare if True Packed Unsigned BYTE values into mask
Intel reference

  VPCMPTRUEUB k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W0 3E /r 07
  VPCMPTRUEUB k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W0 3E /r 07
  VPCMPTRUEUB k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W0 3E /r 07

Opcode
  3E /r 0x07
Tested by
  t5794

    IiyVPCMPTRUEUB:: PROC
        MOV AL,0x3E
        MOV CL,0x07
        JMP IiyVPCMPB.cc
     ENDP IiyVPCMPTRUEUB::

↑ VPCMPEQW
  Compare if Equal Packed signed WORD values into mask
Intel reference

  VPCMPEQW xmm1, xmm2, xmm3 /m128 | VEX.NDS.128.66.0F.WIG 75 /r
  VPCMPEQW ymm1, ymm2, ymm3 /m256 | VEX.NDS.256.66.0F.WIG 75 /r
  VPCMPEQW k1 {k2}, xmm2, xmm3 /m128 | EVEX.NDS.128.66.0F.WIG 75 /r
  VPCMPEQW k1 {k2}, ymm2, ymm3 /m256 | EVEX.NDS.256.66.0F.WIG 75 /r
  VPCMPEQW k1 {k2}, zmm2, zmm3 /m512 | EVEX.NDS.512.66.0F.WIG 75 /r
  VPCMPEQW k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W1 3F /r 00
  VPCMPEQW k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W1 3F /r 00
  VPCMPEQW k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W1 3F /r 00

Opcode
  3F /r 0x00
Tested by
  t5794 t5797

    IiyVPCMPEQW:: PROC
        MOV EBX,EDX
        MOV AL,0x3F
        MOV CL,0x00
        SHR EBX,16
        CMP BL,krg
        JNE .S:
        IiDispatchCode SHORT= .S:, LONG=IiyVPCMPW.cc:
    .S: IiEncoding CODE=SHORT,DATA=WORD
        IiAllowModifier CODE,DATA
        IiAllowMaskMerging
        IiEmitOpcode 0x75
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FVM
        IiDispatchFormat xmm.xmm.xmm,xmm.xmm.mem,ymm.ymm.ymm,ymm.ymm.mem, \
              krg.xmm.xmm,krg.xmm.mem,krg.ymm.ymm,krg.ymm.mem,krg.zmm.zmm,krg.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix VEX.NDS.128.66.0F.WIG
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix VEX.NDS.256.66.0F.WIG
        RET
    .krg.xmm.xmm:
    .krg.xmm.mem:
        IiEmitPrefix EVEX.NDS.128.66.0F.WIG
        RET
    .krg.ymm.ymm:
    .krg.ymm.mem:
        IiEmitPrefix EVEX.NDS.256.66.0F.WIG
        RET
    .krg.zmm.zmm:
    .krg.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F.WIG
        RET
      ENDP IiyVPCMPEQW::

↑ VPCMPLTW
  Compare if Less Than Packed signed WORD values into mask
Intel reference

  VPCMPLTW k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W1 3F /r 01
  VPCMPLTW k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W1 3F /r 01
  VPCMPLTW k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W1 3F /r 01

Opcode
  3F /r 0x01
Tested by
  t5794

    IiyVPCMPLTW:: PROC
        MOV AL,0x3F
        MOV CL,0x01
        JMP IiyVPCMPW.cc:
     ENDP IiyVPCMPLTW::

↑ VPCMPLEW
  Compare if Less than or Equal Packed signed WORD values into mask
Intel reference

  VPCMPLEW k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W1 3F /r 02
  VPCMPLEW k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W1 3F /r 02
  VPCMPLEW k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W1 3F /r 02

Opcode
  3F /r 0x02
Tested by
  t5794

    IiyVPCMPLEW:: PROC
        MOV AL,0x3F
        MOV CL,0x02
        JMP IiyVPCMPW.cc:
     ENDP IiyVPCMPLEW::

↑ VPCMPFALSEW
  Compare if False Packed signed WORD values into mask
Intel reference

  VPCMPFALSEW k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W1 3F /r 03
  VPCMPFALSEW k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W1 3F /r 03
  VPCMPFALSEW k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W1 3F /r 03

Opcode
  3F /r 0x03
Tested by
  t5794

    IiyVPCMPFALSEW:: PROC
        MOV AL,0x3F
        MOV CL,0x03
        JMP IiyVPCMPW.cc:
     ENDP IiyVPCMPFALSEW::

↑ VPCMPNEQW
  Compare if Not Equal Packed signed WORD values into mask
Intel reference

  VPCMPNEQW k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W1 3F /r 04
  VPCMPNEQW k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W1 3F /r 04
  VPCMPNEQW k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W1 3F /r 04

Opcode
  3F /r 0x04
Tested by
  t5794

    IiyVPCMPNEQW:: PROC
        MOV AL,0x3F
        MOV CL,0x04
        JMP IiyVPCMPW.cc:
     ENDP IiyVPCMPNEQW::

↑ VPCMPNLTW
  Compare if Not Less Than Packed signed WORD values into mask
Intel reference

  VPCMPNLTW k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W1 3F /r 05
  VPCMPNLTW k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W1 3F /r 05
  VPCMPNLTW k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W1 3F /r 05

Opcode
  3F /r 0x05
Tested by
  t5794

    IiyVPCMPNLTW:: PROC
        MOV AL,0x3F
        MOV CL,0x05
        JMP IiyVPCMPW.cc:
     ENDP IiyVPCMPNLTW::

↑ VPCMPNLEW
  Compare if Not Less than or Equal Packed signed WORD values into mask
Intel reference

  VPCMPNLEW k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W1 3F /r 06
  VPCMPNLEW k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W1 3F /r 06
  VPCMPNLEW k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W1 3F /r 06

Opcode
  3F /r 0x06
Tested by
  t5794

    IiyVPCMPNLEW:: PROC
        MOV AL,0x3F
        MOV CL,0x06
        JMP IiyVPCMPW.cc:
     ENDP IiyVPCMPNLEW::

↑ VPCMPTRUEW
  Compare if True Packed signed WORD values into mask
Intel reference

  VPCMPTRUEW k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W1 3F /r 07
  VPCMPTRUEW k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W1 3F /r 07
  VPCMPTRUEW k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W1 3F /r 07

Opcode
  3F /r 0x07
Tested by
  t5794

    IiyVPCMPTRUEW:: PROC
        MOV AL,0x3F
        MOV CL,0x07
        JMP IiyVPCMPW.cc:
     ENDP IiyVPCMPTRUEW::

↑ VPCMPEQUW
  Compare if Equal Packed Unsigned WORD values into mask
Intel reference

  VPCMPEQUW k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W1 3E /r 00
  VPCMPEQUW k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W1 3E /r 00
  VPCMPEQUW k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W1 3E /r 00

Opcode
  3E /r 0x00
Tested by
  t5794

    IiyVPCMPEQUW:: PROC
        MOV AL,0x3E
        MOV CL,0x00
        JMP IiyVPCMPW.cc
     ENDP IiyVPCMPEQUW::

↑ VPCMPLTUW
  Compare if Less Than Packed Unsigned WORD values into mask
Intel reference

  VPCMPLTUW k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W1 3E /r 01
  VPCMPLTUW k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W1 3E /r 01
  VPCMPLTUW k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W1 3E /r 01

Opcode
  3E /r 0x01
Tested by
  t5794

    IiyVPCMPLTUW:: PROC
        MOV AL,0x3E
        MOV CL,0x01
        JMP IiyVPCMPW.cc
     ENDP IiyVPCMPLTUW::

↑ VPCMPLEUW
  Compare if Less than or Equal Packed Unsigned WORD values into mask
Intel reference

  VPCMPLEUW k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W1 3E /r 02
  VPCMPLEUW k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W1 3E /r 02
  VPCMPLEUW k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W1 3E /r 02

Opcode
  3E /r 0x02
Tested by
  t5794

    IiyVPCMPLEUW:: PROC
        MOV AL,0x3E
        MOV CL,0x02
        JMP IiyVPCMPW.cc
     ENDP IiyVPCMPLEUW::

↑ VPCMPFALSEUW
  Compare if False Packed Unsigned WORD values into mask
Intel reference

  VPCMPFALSEUW k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W1 3E /r 03
  VPCMPFALSEUW k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W1 3E /r 03
  VPCMPFALSEUW k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W1 3E /r 03

Opcode
  3E /r 0x03
Tested by
  t5794

    IiyVPCMPFALSEUW:: PROC
        MOV AL,0x3E
        MOV CL,0x03
        JMP IiyVPCMPW.cc
     ENDP IiyVPCMPFALSEUW::

↑ VPCMPNEQUW
  Compare if Not Equal Packed Unsigned WORD values into mask
Intel reference

  VPCMPNEQUW k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W1 3E /r 04
  VPCMPNEQUW k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W1 3E /r 04
  VPCMPNEQUW k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W1 3E /r 04

Opcode
  3E /r 0x04
Tested by
  t5794

    IiyVPCMPNEQUW:: PROC
        MOV AL,0x3E
        MOV CL,0x04
        JMP IiyVPCMPW.cc
     ENDP IiyVPCMPNEQUW::

↑ VPCMPNLTUW
  Compare if Not Less Than Packed Unsigned WORD values into mask
Intel reference

  VPCMPNLTUW k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W1 3E /r 05
  VPCMPNLTUW k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W1 3E /r 05
  VPCMPNLTUW k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W1 3E /r 05

Opcode
  3E /r 0x05
Tested by
  t5794

    IiyVPCMPNLTUW:: PROC
        MOV AL,0x3E
        MOV CL,0x05
        JMP IiyVPCMPW.cc
     ENDP IiyVPCMPNLTUW::

↑ VPCMPNLEUW
  Compare if Not Less than or Equal Packed Unsigned WORD values into mask
Intel reference

  VPCMPNLEUW k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W1 3E /r 06
  VPCMPNLEUW k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W1 3E /r 06
  VPCMPNLEUW k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W1 3E /r 06

Opcode
  3E /r 0x06
Tested by
  t5794

    IiyVPCMPNLEUW:: PROC
        MOV AL,0x3E
        MOV CL,0x06
        JMP IiyVPCMPW.cc
     ENDP IiyVPCMPNLEUW::

↑ VPCMPTRUEUW
  Compare if True Packed Unsigned WORD values into mask
Intel reference

  VPCMPTRUEUW k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W1 3E /r 07
  VPCMPTRUEUW k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W1 3E /r 07
  VPCMPTRUEUW k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W1 3E /r 07

Opcode
  3E /r 0x07
Tested by
  t5794

    IiyVPCMPTRUEUW:: PROC
        MOV AL,0x3E
        MOV CL,0x07
        JMP IiyVPCMPW.cc
     ENDP IiyVPCMPTRUEUW::

↑ VPCMPEQD
  Compare if Equal Packed signed DWORD values into mask
Intel reference

  VPCMPEQD xmm1, xmm2, xmm3/m128 | VEX.NDS.128.66.0F.WIG 76 /r
  VPCMPEQD ymm1, ymm2, ymm3 /m256 | VEX.NDS.256.66.0F.WIG 76 /r
  VPCMPEQD k1 {k2}, xmm2, xmm3/m128/m32bcst | EVEX.NDS.128.66.0F.W0 76 /r
  VPCMPEQD k1 {k2}, ymm2, ymm3/m256/m32bcst | EVEX.NDS.256.66.0F.W0 76 /r
  VPCMPEQD k1 {k2}, zmm2, zmm3/m512/m32bcst | EVEX.NDS.512.66.0F.W0 76 /r
  VPCMPEQD k1 {k2}, zmm2, zmm3/m512/m32bcst | MVEX.NDS.512.66.0F.W0 76 /r
  VPCMPEQD k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W0 1F /r 00
  VPCMPEQD k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W0 1F /r 00
  VPCMPEQD k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W0 1F /r 00
  VPCMPEQD k1 {k2}, zmm2, zmm3/m512 | MVEX.NDS.512.66.0F3A.W0 1F /r 00

Opcode
  1F /r 0x00
Tested by
  t5796 t5797

    IiyVPCMPEQD:: PROC
        MOV EBX,EDX
        MOV AL,0x1F
        MOV CL,0x00
        SHR EBX,16
        CMP BL,krg
        JNE .S:
        IiDispatchCode SHORT= .S:, LONG=IiyVPCMPD.cc:
     .S:IiEncoding CODE=SHORT,DATA=DWORD
        IiAllowModifier CODE,DATA
        IiAllowMaskMerging
        IiAllowBroadcasting DWORD
        IiEmitOpcode 0x76
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FV32
        IiDisp8MVEX Si32
        IiDispatchFormat xmm.xmm.xmm,xmm.xmm.mem,ymm.ymm.ymm,ymm.ymm.mem, \
              krg.xmm.xmm,krg.xmm.mem,krg.ymm.ymm,krg.ymm.mem,krg.zmm.zmm,krg.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix VEX.NDS.128.66.0F.WIG
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix VEX.NDS.256.66.0F.WIG
        RET
    .krg.xmm.xmm:
    .krg.xmm.mem:
        IiEmitPrefix EVEX.NDS.128.66.0F.W0
        RET
    .krg.ymm.ymm:
    .krg.ymm.mem:
        IiEmitPrefix EVEX.NDS.256.66.0F.W0
        RET
    .krg.zmm.zmm:
    .krg.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F.W0, MVEX.NDS.512.66.0F.W0
        RET
     ENDP IiyVPCMPEQD::

↑ VPCMPLTD
  Compare if Less Than Packed signed DWORD values into mask
Intel reference

  VPCMPLTD k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W0 1F /r 01
  VPCMPLTD k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W0 1F /r 01
  VPCMPLTD k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W0 1F /r 01
  VPCMPLTD k1 {k2}, zmm2, zmm3/m512 | MVEX.NDS.512.66.0F3A.W0 1F /r 01
  VPCMPLTD k1 {k2}, zmm2, zmm3/m512 | MVEX.NDS.512.66.0F38.W0 74 /r

Opcode
  1F /r 0x01
Tested by
  t5796 t5797

    IiyVPCMPLTD:: PROC
        MOV AL,0x1F
        MOV CL,0x01
        CMP DH,zmm ; Operand2.
        JNE IiyVPCMPD.cc: ; Use long version 66.0F3A 1F ib
        JNSt [EDI+II.MfxExplicit],iiMfxPREFIX_MVEX | iiMfxEH_Mask, IiyVPCMPD.cc: ; Use long version.
        JSt [EDI+II.MfgExplicit],iiMfgCODE_LONG, IiyVPCMPD.cc: ; Use long version.
        IiEncoding CODE=SHORT
        IiAllowModifier CODE,DATA
        IiAllowMaskMerging
        IiAllowBroadcasting DWORD
        IiEmitOpcode 0x74
        IiOpEn RVM
        IiModRM /r
        IiDisp8MVEX Si32
        IiDispatchFormat krg.zmm.zmm, krg.zmm.mem
    .krg.zmm.zmm:
    .krg.zmm.mem:
        IiEmitPrefix MVEX.NDS.512.66.0F38.W0
        RET
     ENDP IiyVPCMPLTD::

↑ VPCMPLED
  Compare if Less than or Equal Packed signed DWORD values into mask
Intel reference

  VPCMPLED k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W0 1F /r 02
  VPCMPLED k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W0 1F /r 02
  VPCMPLED k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W0 1F /r 02
  VPCMPLED k1 {k2}, zmm2, zmm3/m512 | MVEX.NDS.512.66.0F3A.W0 1F /r 02

Opcode
  1F /r 0x02
Tested by
  t5796

    IiyVPCMPLED:: PROC
        MOV AL,0x1F
        MOV CL,0x02
        JMP IiyVPCMPD.cc:
     ENDP IiyVPCMPLED::

↑ VPCMPFALSED
  Compare if False Packed signed DWORD values into mask
Intel reference

  VPCMPFALSED k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W0 1F /r 03
  VPCMPFALSED k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W0 1F /r 03
  VPCMPFALSED k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W0 1F /r 03

Opcode
  1F /r 0x03
Tested by
  t5796

    IiyVPCMPFALSED:: PROC
        MOV AL,0x1F
        MOV CL,0x03
        JMP IiyVPCMPD.cc:
     ENDP IiyVPCMPFALSED::

↑ VPCMPNEQD
  Compare if Not Equal Packed signed DWORD values into mask
Intel reference

  VPCMPNEQD k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W0 1F /r 04
  VPCMPNEQD k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W0 1F /r 04
  VPCMPNEQD k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W0 1F /r 04
  VPCMPNEQD k1 {k2}, zmm2, zmm3/m512 | MVEX.NDS.512.66.0F3A.W0 1F /r 04

Opcode
  1F /r 0x04
Tested by
  t5796

    IiyVPCMPNEQD:: PROC
        MOV AL,0x1F
        MOV CL,0x04
        JMP IiyVPCMPD.cc:
     ENDP IiyVPCMPNEQD::

↑ VPCMPNLTD
  Compare if Not Less Than Packed signed DWORD values into mask
Intel reference

  VPCMPNLTD k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W0 1F /r 05
  VPCMPNLTD k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W0 1F /r 05
  VPCMPNLTD k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W0 1F /r 05
  VPCMPNLTD k1 {k2}, zmm2, zmm3/m512 | MVEX.NDS.512.66.0F3A.W0 1F /r 05

Opcode
  1F /r 0x05
Tested by
  t5796

    IiyVPCMPNLTD:: PROC
        MOV AL,0x1F
        MOV CL,0x05
        JMP IiyVPCMPD.cc:
     ENDP IiyVPCMPNLTD::

↑ VPCMPNLED
  Compare if Not Less than or Equal Packed signed DWORD values into mask
Intel reference

  VPCMPNLED k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W0 1F /r 06
  VPCMPNLED k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W0 1F /r 06
  VPCMPNLED k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W0 1F /r 06
  VPCMPNLED k1 {k2}, zmm2, zmm3/m512 | MVEX.NDS.512.66.0F3A.W0 1F /r 06

Opcode
  1F /r 0x06
Tested by
  t5796

    IiyVPCMPNLED:: PROC
        MOV AL,0x1F
        MOV CL,0x06
        JMP IiyVPCMPD.cc:
     ENDP IiyVPCMPNLED::

↑ VPCMPTRUED
  Compare if True Packed signed DWORD values into mask
Intel reference

  VPCMPTRUED k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W0 1F /r 07
  VPCMPTRUED k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W0 1F /r 07
  VPCMPTRUED k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W0 1F /r 07

Opcode
  1F /r 0x07
Tested by
  t5796

    IiyVPCMPTRUED:: PROC
        MOV AL,0x1F
        MOV CL,0x07
        JMP IiyVPCMPD.cc:
     ENDP IiyVPCMPTRUED::

↑ VPCMPEQUD
  Compare if Equal Packed Unsigned DWORD values into mask
Intel reference

  VPCMPEQUD k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W0 1E /r 00
  VPCMPEQUD k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W0 1E /r 00
  VPCMPEQUD k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W0 1E /r 00
  VPCMPEQUD k1 {k2}, zmm2, zmm3/m512 | MVEX.NDS.512.66.0F3A.W0 1E /r 00

Opcode
  1E /r 0x00
Tested by
  t5796

    IiyVPCMPEQUD:: PROC
        MOV AL,0x1E
        MOV CL,0x00
        JMP IiyVPCMPD.cc
     ENDP IiyVPCMPEQUD::

↑ VPCMPLTUD
  Compare if Less Than Packed Unsigned DWORD values into mask
Intel reference

  VPCMPLTUD k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W0 1E /r 01
  VPCMPLTUD k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W0 1E /r 01
  VPCMPLTUD k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W0 1E /r 01
  VPCMPLTUD k1 {k2}, zmm2, zmm3/m512 | MVEX.NDS.512.66.0F3A.W0 1E /r 01

Opcode
  1E /r 0x01
Tested by
  t5796

    IiyVPCMPLTUD:: PROC
        MOV AL,0x1E
        MOV CL,0x01
        JMP IiyVPCMPD.cc
     ENDP IiyVPCMPLTUD::

↑ VPCMPLEUD
  Compare if Less than or Equal Packed Unsigned DWORD values into mask
Intel reference

  VPCMPLEUD k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W0 1E /r 02
  VPCMPLEUD k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W0 1E /r 02
  VPCMPLEUD k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W0 1E /r 02
  VPCMPLEUD k1 {k2}, zmm2, zmm3/m512 | MVEX.NDS.512.66.0F3A.W0 1E /r 02

Opcode
  1E /r 0x02
Tested by
  t5796

    IiyVPCMPLEUD:: PROC
        MOV AL,0x1E
        MOV CL,0x02
        JMP IiyVPCMPD.cc
     ENDP IiyVPCMPLEUD::

↑ VPCMPFALSEUD
  Compare if False Packed Unsigned DWORD values into mask
Intel reference

  VPCMPFALSEUD k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W0 1E /r 03
  VPCMPFALSEUD k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W0 1E /r 03
  VPCMPFALSEUD k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W0 1E /r 03

Opcode
  1E /r 0x03
Tested by
  t5796

    IiyVPCMPFALSEUD:: PROC
        MOV AL,0x1E
        MOV CL,0x03
        JMP IiyVPCMPD.cc
     ENDP IiyVPCMPFALSEUD::

↑ VPCMPNEQUD
  Compare if Not Equal Packed Unsigned DWORD values into mask
Intel reference

  VPCMPNEQUD k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W0 1E /r 04
  VPCMPNEQUD k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W0 1E /r 04
  VPCMPNEQUD k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W0 1E /r 04
  VPCMPNEQUD k1 {k2}, zmm2, zmm3/m512 | MVEX.NDS.512.66.0F3A.W0 1E /r 04

Opcode
  1E /r 0x04
Tested by
  t5796

    IiyVPCMPNEQUD:: PROC
        MOV AL,0x1E
        MOV CL,0x04
        JMP IiyVPCMPD.cc
     ENDP IiyVPCMPNEQUD::

↑ VPCMPNLTUD
  Compare if Not Less Than Packed Unsigned DWORD values into mask
Intel reference

  VPCMPNLTUD k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W0 1E /r 05
  VPCMPNLTUD k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W0 1E /r 05
  VPCMPNLTUD k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W0 1E /r 05
  VPCMPNLTUD k1 {k2}, zmm2, zmm3/m512 | MVEX.NDS.512.66.0F3A.W0 1E /r 05

Opcode
  1E /r 0x05
Tested by
  t5796

    IiyVPCMPNLTUD:: PROC
        MOV AL,0x1E
        MOV CL,0x05
        JMP IiyVPCMPD.cc
     ENDP IiyVPCMPNLTUD::

↑ VPCMPNLEUD
  Compare if Not Less than or Equal Packed Unsigned DWORD values into mask
Intel reference

  VPCMPNLEUD k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W0 1E /r 06
  VPCMPNLEUD k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W0 1E /r 06
  VPCMPNLEUD k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W0 1E /r 06
  VPCMPNLEUD k1 {k2}, zmm2, zmm3/m512 | MVEX.NDS.512.66.0F3A.W0 1E /r 06

Opcode
  1E /r 0x06
Tested by
  t5796

    IiyVPCMPNLEUD:: PROC
        MOV AL,0x1E
        MOV CL,0x06
        JMP IiyVPCMPD.cc
     ENDP IiyVPCMPNLEUD::

↑ VPCMPTRUEUD
  Compare if True Packed Unsigned DWORD values into mask
Intel reference

  VPCMPTRUEUD k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W0 1E /r 07
  VPCMPTRUEUD k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W0 1E /r 07
  VPCMPTRUEUD k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W0 1E /r 07

Opcode
  1E /r 0x07
Tested by
  t5796

    IiyVPCMPTRUEUD:: PROC
        MOV AL,0x1E
        MOV CL,0x07
        JMP IiyVPCMPD.cc
     ENDP IiyVPCMPTRUEUD::

↑ VPCMPEQQ
  Compare if Equal Packed signed QWORD values into mask
Intel reference

  VPCMPEQQ xmm1, xmm2, xmm3/m128 | VEX.NDS.128.66.0F38.WIG 29 /r
  VPCMPEQQ ymm1, ymm2, ymm3 /m256 | VEX.NDS.256.66.0F38.WIG 29 /r
  VPCMPEQQ k1 {k2}, xmm2, xmm3/m128/m64bcst | EVEX.NDS.128.66.0F38.W1 29 /r
  VPCMPEQQ k1 {k2}, ymm2, ymm3/m256/m64bcst | EVEX.NDS.256.66.0F38.W1 29 /r
  VPCMPEQQ k1 {k2}, zmm2, zmm3/m512/m64bcst | EVEX.NDS.512.66.0F38.W1 29 /r
  VPCMPEQQ k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W1 1F /r 00
  VPCMPEQQ k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W1 1F /r 00
  VPCMPEQQ k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W1 1F /r 00

Opcode
  1F /r 0x00
Tested by
  t5796 t5797

    IiyVPCMPEQQ:: PROC
        MOV EBX,EDX
        MOV AL,0x1F
        MOV CL,0x00
        SHR EBX,16
        CMP BL,krg
        JNE .S:
        IiDispatchCode  SHORT=.S:, LONG=IiyVPCMPQ.cc:
     .S:IiEncoding CODE=SHORT,DATA=QWORD
        IiAllowModifier CODE,DATA
        IiAllowMaskMerging
        IiAllowBroadcasting QWORD
        IiEmitOpcode 0x29
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FV64
        IiDisp8MVEX Si64
        IiDispatchFormat xmm.xmm.xmm,xmm.xmm.mem,ymm.ymm.ymm,ymm.ymm.mem, \
              krg.xmm.xmm,krg.xmm.mem,krg.ymm.ymm,krg.ymm.mem,krg.zmm.zmm,krg.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix VEX.NDS.128.66.0F38.WIG
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix VEX.NDS.256.66.0F38.WIG
        RET
    .krg.xmm.xmm:
    .krg.xmm.mem:
        IiEmitPrefix EVEX.NDS.128.66.0F38.W1
        RET
    .krg.ymm.ymm:
    .krg.ymm.mem:
        IiEmitPrefix EVEX.NDS.256.66.0F38.W1
        RET
    .krg.zmm.zmm:
    .krg.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F38.W1
        RET
     ENDP IiyVPCMPEQQ::

↑ VPCMPLTQ
  Compare if Less Than Packed signed QWORD values into mask
Intel reference

  VPCMPLTQ k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W1 1F /r 01
  VPCMPLTQ k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W1 1F /r 01
  VPCMPLTQ k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W1 1F /r 01

Opcode
  1F /r 0x01
Tested by
  t5796

    IiyVPCMPLTQ:: PROC
        MOV AL,0x1F
        MOV CL,0x01
        JMP IiyVPCMPQ.cc:
     ENDP IiyVPCMPLTQ::

↑ VPCMPLEQ
  Compare if Less than or Equal Packed signed QWORD values into mask
Intel reference

  VPCMPLEQ k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W1 1F /r 02
  VPCMPLEQ k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W1 1F /r 02
  VPCMPLEQ k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W1 1F /r 02

Opcode
  1F /r 0x02
Tested by
  t5796

    IiyVPCMPLEQ:: PROC
        MOV AL,0x1F
        MOV CL,0x02
        JMP IiyVPCMPQ.cc:
     ENDP IiyVPCMPLEQ::

↑ VPCMPFALSEQ
  Compare if False Packed signed QWORD values into mask
Intel reference

  VPCMPFALSEQ k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W1 1F /r 03
  VPCMPFALSEQ k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W1 1F /r 03
  VPCMPFALSEQ k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W1 1F /r 03

Opcode
  1F /r 0x03
Tested by
  t5796

    IiyVPCMPFALSEQ:: PROC
        MOV AL,0x1F
        MOV CL,0x03
        JMP IiyVPCMPQ.cc:
     ENDP IiyVPCMPFALSEQ::

↑ VPCMPNEQQ
  Compare if Not Equal Packed signed QWORD values into mask
Intel reference

  VPCMPNEQQ k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W1 1F /r 04
  VPCMPNEQQ k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W1 1F /r 04
  VPCMPNEQQ k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W1 1F /r 04

Opcode
  1F /r 0x04
Tested by
  t5796

    IiyVPCMPNEQQ:: PROC
        MOV AL,0x1F
        MOV CL,0x04
        JMP IiyVPCMPQ.cc:
     ENDP IiyVPCMPNEQQ::

↑ VPCMPNLTQ
  Compare if Not Less Than Packed signed QWORD values into mask
Intel reference

  VPCMPNLTQ k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W1 1F /r 05
  VPCMPNLTQ k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W1 1F /r 05
  VPCMPNLTQ k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W1 1F /r 05

Opcode
  1F /r 0x05
Tested by
  t5796

    IiyVPCMPNLTQ:: PROC
        MOV AL,0x1F
        MOV CL,0x05
        JMP IiyVPCMPQ.cc:
     ENDP IiyVPCMPNLTQ::

↑ VPCMPNLEQ
  Compare if Not Less than or Equal Packed signed QWORD values into mask
Intel reference

  VPCMPNLEQ k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W1 1F /r 06
  VPCMPNLEQ k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W1 1F /r 06
  VPCMPNLEQ k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W1 1F /r 06

Opcode
  1F /r 0x06
Tested by
  t5796

    IiyVPCMPNLEQ:: PROC
        MOV AL,0x1F
        MOV CL,0x06
        JMP IiyVPCMPQ.cc:
     ENDP IiyVPCMPNLEQ::

↑ VPCMPTRUEQ
  Compare if True Packed signed QWORD values into mask
Intel reference

  VPCMPTRUEQ k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W1 1F /r 07
  VPCMPTRUEQ k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W1 1F /r 07
  VPCMPTRUEQ k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W1 1F /r 07

Opcode
  1F /r 0x07
Tested by
  t5796

    IiyVPCMPTRUEQ:: PROC
        MOV AL,0x1F
        MOV CL,0x07
        JMP IiyVPCMPQ.cc:
     ENDP IiyVPCMPTRUEQ::

↑ VPCMPEQUQ
  Compare if Equal Packed Unsigned QWORD values into mask
Intel reference

  VPCMPEQUQ k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W1 1E /r 00
  VPCMPEQUQ k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W1 1E /r 00
  VPCMPEQUQ k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W1 1E /r 00

Opcode
  1E /r 0x00
Tested by
  t5796

    IiyVPCMPEQUQ:: PROC
        MOV AL,0x1E
        MOV CL,0x00
        JMP IiyVPCMPQ.cc
     ENDP IiyVPCMPEQUQ::

↑ VPCMPLTUQ
  Compare if Less Than Packed Unsigned QWORD values into mask
Intel reference

  VPCMPLTUQ k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W1 1E /r 01
  VPCMPLTUQ k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W1 1E /r 01
  VPCMPLTUQ k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W1 1E /r 01

Opcode
  1E /r 0x01
Tested by
  t5796

    IiyVPCMPLTUQ:: PROC
        MOV AL,0x1E
        MOV CL,0x01
        JMP IiyVPCMPQ.cc
     ENDP IiyVPCMPLTUQ::

↑ VPCMPLEUQ
  Compare if Less than or Equal Packed Unsigned QWORD values into mask
Intel reference

  VPCMPLEUQ k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W1 1E /r 02
  VPCMPLEUQ k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W1 1E /r 02
  VPCMPLEUQ k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W1 1E /r 02

Opcode
  1E /r 0x02
Tested by
  t5796

    IiyVPCMPLEUQ:: PROC
        MOV AL,0x1E
        MOV CL,0x02
        JMP IiyVPCMPQ.cc
     ENDP IiyVPCMPLEUQ::

↑ VPCMPFALSEUQ
  Compare if False Packed Unsigned QWORD values into mask
Intel reference

  VPCMPFALSEUQ k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W1 1E /r 03
  VPCMPFALSEUQ k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W1 1E /r 03
  VPCMPFALSEUQ k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W1 1E /r 03

Opcode
  1E /r 0x03
Tested by
  t5796

    IiyVPCMPFALSEUQ:: PROC
        MOV AL,0x1E
        MOV CL,0x03
        JMP IiyVPCMPQ.cc
     ENDP IiyVPCMPFALSEUQ::

↑ VPCMPNEQUQ
  Compare if Not Equal Packed Unsigned QWORD values into mask
Intel reference

  VPCMPNEQUQ k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W1 1E /r 04
  VPCMPNEQUQ k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W1 1E /r 04
  VPCMPNEQUQ k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W1 1E /r 04

Opcode
  1E /r 0x04
Tested by
  t5796

    IiyVPCMPNEQUQ:: PROC
        MOV AL,0x1E
        MOV CL,0x04
        JMP IiyVPCMPQ.cc
     ENDP IiyVPCMPNEQUQ::

↑ VPCMPNLTUQ
  Compare if Not Less Than Packed Unsigned QWORD values into mask
Intel reference

  VPCMPNLTUQ k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W1 1E /r 05
  VPCMPNLTUQ k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W1 1E /r 05
  VPCMPNLTUQ k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W1 1E /r 05

Opcode
  1E /r 0x05
Tested by
  t5796

    IiyVPCMPNLTUQ:: PROC
        MOV AL,0x1E
        MOV CL,0x05
        JMP IiyVPCMPQ.cc
     ENDP IiyVPCMPNLTUQ::

↑ VPCMPNLEUQ
  Compare if Not Less than or Equal Packed Unsigned QWORD values into mask
Intel reference

  VPCMPNLEUQ k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W1 1E /r 06
  VPCMPNLEUQ k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W1 1E /r 06
  VPCMPNLEUQ k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W1 1E /r 06

Opcode
  1E /r 0x06
Tested by
  t5796

    IiyVPCMPNLEUQ:: PROC
        MOV AL,0x1E
        MOV CL,0x06
        JMP IiyVPCMPQ.cc
     ENDP IiyVPCMPNLEUQ::

↑ VPCMPTRUEUQ
  Compare if True Packed Unsigned QWORD values into mask
Intel reference

  VPCMPTRUEUQ k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F3A.W1 1E /r 07
  VPCMPTRUEUQ k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F3A.W1 1E /r 07
  VPCMPTRUEUQ k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F3A.W1 1E /r 07

Opcode
  1E /r 0x07
Tested by
  t5796

    IiyVPCMPTRUEUQ:: PROC
        MOV AL,0x1E
        MOV CL,0x07
        JMP IiyVPCMPQ.cc
     ENDP IiyVPCMPTRUEUQ::

↑ VPCMPGTB
  Compare Packed Signed Integers for Greater Than
Intel reference

  VPCMPGTB xmm1, xmm2, xmm3/m128 | VEX.NDS.128.66.0F.WIG 64 /r
  VPCMPGTB ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F.WIG 64 /r
  VPCMPGTB k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F.WIG 64 /r
  VPCMPGTB k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F.WIG 64 /r
  VPCMPGTB k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F.WIG 64 /r

Category
  mmx,compar
Operands
  Pq,Qd | Vdq,Wdq
Opcode
  0x0F64 /r | 0x660F64 /r
CPU
  PX+
Tested by
  t5798

    IiyVPCMPGTB:: PROC
        IiAllowModifier DATA
        IiEncoding DATA=BYTE
        IiAllowMaskMerging
        IiEmitOpcode 0x64
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FVM
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, krg.xmm.xmm, krg.xmm.mem, krg.ymm.ymm, krg.ymm.mem, krg.zmm.zmm, krg.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix VEX.NDS.128.66.0F.WIG
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix VEX.NDS.256.66.0F.WIG
        RET
    .krg.xmm.xmm:
    .krg.xmm.mem:
        IiEmitPrefix EVEX.NDS.128.66.0F.WIG
        RET
    .krg.ymm.ymm:
    .krg.ymm.mem:
        IiEmitPrefix EVEX.NDS.256.66.0F.WIG
        RET
    .krg.zmm.zmm:
    .krg.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F.WIG
        RET
      ENDP IiyVPCMPGTB::

↑ VPCMPGTW
  Compare Packed Signed Integers for Greater Than
Intel reference

  VPCMPGTW xmm1, xmm2, xmm3/m128 | VEX.NDS.128.66.0F.WIG 65 /r
  VPCMPGTW ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F.WIG 65 /r
  VPCMPGTW k1 {k2}, xmm2, xmm3/m128 | EVEX.NDS.128.66.0F.WIG 65 /r
  VPCMPGTW k1 {k2}, ymm2, ymm3/m256 | EVEX.NDS.256.66.0F.WIG 65 /r
  VPCMPGTW k1 {k2}, zmm2, zmm3/m512 | EVEX.NDS.512.66.0F.WIG 65 /r

Category
  mmx,compar
Operands
  Pq,Qd | Vdq,Wdq
Opcode
  0x0F65 /r | 0x660F65 /r
CPU
  PX+
Tested by
  t5798

    IiyVPCMPGTW:: PROC
        IiAllowModifier DATA
        IiEncoding DATA=WORD
        IiAllowMaskMerging
        IiEmitOpcode 0x65
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FVM
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, krg.xmm.xmm, krg.xmm.mem, krg.ymm.ymm, krg.ymm.mem, krg.zmm.zmm, krg.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix VEX.NDS.128.66.0F.WIG
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix VEX.NDS.256.66.0F.WIG
        RET
    .krg.xmm.xmm:
    .krg.xmm.mem:
        IiEmitPrefix EVEX.NDS.128.66.0F.WIG
        RET
    .krg.ymm.ymm:
    .krg.ymm.mem:
        IiEmitPrefix EVEX.NDS.256.66.0F.WIG
        RET
    .krg.zmm.zmm:
    .krg.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F.WIG
        RET
      ENDP IiyVPCMPGTW::

↑ VPCMPGTD
  Compare Packed Signed Integers for Greater Than
Intel reference

  VPCMPGTD xmm1, xmm2, xmm3/m128 | VEX.NDS.128.66.0F.WIG 66 /r
  VPCMPGTD ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F.WIG 66 /r
  VPCMPGTD k1 {k2}, xmm2, xmm3/m128/m32bcst | EVEX.NDS.128.66.0F.W0 66 /r
  VPCMPGTD k1 {k2}, ymm2, ymm3/m256/m32bcst | EVEX.NDS.256.66.0F.W0 66 /r
  VPCMPGTD k1 {k2}, zmm2, zmm3/m512/m32bcst | EVEX.NDS.512.66.0F.W0 66 /r
  VPCMPGTD k2 {k1}, zmm1, zmm2/m512/m32bcst | MVEX.NDS.512.66.0F.W0 66 /r

Category
  mmx,compar
Operands
  Pq,Qd | Vdq,Wdq
Opcode
  0x0F66 /r | 0x660F66 /r
CPU
  PX+
Tested by
  t5798

    IiyVPCMPGTD:: PROC
        IiAllowModifier DATA
        IiAllowMaskMerging
        IiAllowBroadcasting DWORD
        IiEmitOpcode 0x66
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FV32
        IiDisp8MVEX Si32
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, krg.xmm.xmm, krg.xmm.mem, krg.ymm.ymm, krg.ymm.mem, krg.zmm.zmm, krg.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix VEX.NDS.128.66.0F.WIG
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix VEX.NDS.256.66.0F.WIG
        RET
    .krg.xmm.xmm:
    .krg.xmm.mem:
        IiEmitPrefix EVEX.NDS.128.66.0F.W0
        RET
    .krg.ymm.ymm:
    .krg.ymm.mem:
        IiEmitPrefix EVEX.NDS.256.66.0F.W0
        RET
    .krg.zmm.zmm:
    .krg.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F.W0, MVEX.NDS.512.66.0F.W0
        RET
      ENDP IiyVPCMPGTD::

↑ VPCMPGTQ
  Compare Packed Qword Data for Greater Than
Intel reference

  VPCMPGTQ xmm1, xmm2, xmm3/m128 | VEX.NDS.128.66.0F38.WIG 37 /r
  VPCMPGTQ ymm1, ymm2, ymm3/m256 | VEX.NDS.256.66.0F38.WIG 37 /r
  VPCMPGTQ k1 {k2}, xmm2, xmm3/m128/m64bcst | EVEX.NDS.128.66.0F38.W1 37 /r
  VPCMPGTQ k1 {k2}, ymm2, ymm3/m256/m64bcst | EVEX.NDS.256.66.0F38.W1 37 /r
  VPCMPGTQ k1 {k2}, zmm2, zmm3/m512/m64bcst | EVEX.NDS.512.66.0F38.W1 37 /r

Category
  sse42,simdint,compar
Operands
  Vdq,Wdq
Opcode
  0x660F3837 /r
CPU
  C2++
Documented
  D43
Tested by
  t5798

    IiyVPCMPGTQ:: PROC
        IiAllowModifier DATA
        IiAllowMaskMerging
        IiAllowBroadcasting QWORD
        IiEmitOpcode 0x37
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FV64
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, krg.xmm.xmm, krg.xmm.mem, krg.ymm.ymm, krg.ymm.mem, krg.zmm.zmm, krg.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix VEX.NDS.128.66.0F38.WIG
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix VEX.NDS.256.66.0F38.WIG
        RET
    .krg.xmm.xmm:
    .krg.xmm.mem:
        IiEmitPrefix EVEX.NDS.128.66.0F38.W1
        RET
    .krg.ymm.ymm:
    .krg.ymm.mem:
        IiEmitPrefix EVEX.NDS.256.66.0F38.W1
        RET
    .krg.zmm.zmm:
    .krg.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F38.W1
        RET
      ENDP IiyVPCMPGTQ::

↑ VPMOVM2B
  Convert a Mask Register to a Vector Register
Intel reference

  VPMOVM2B xmm1, k1 | EVEX.128.F3.0F38.W0 28 /r
  VPMOVM2B ymm1, k1 | EVEX.256.F3.0F38.W0 28 /r
  VPMOVM2B zmm1, k1 | EVEX.512.F3.0F38.W0 28 /r

Opcode
  0x28
Tested by
  t5802

    IiyVPMOVM2B:: PROC
        IiEmitOpcode 0x28
    .op:IiOpEn RM
        IiModRM /r
        IiDispatchFormat  xmm.krg, ymm.krg, zmm.krg
    .xmm.krg:
        IiEmitPrefix EVEX.128.F3.0F38.W0
        RET
    .ymm.krg:
        IiEmitPrefix EVEX.256.F3.0F38.W0
        RET
    .zmm.krg:
        IiEmitPrefix EVEX.512.F3.0F38.W0
        RET
      ENDP IiyVPMOVM2B::

↑ VPMOVM2W
  Convert a Mask Register to a Vector Register
Intel reference

  VPMOVM2W xmm1, k1 | EVEX.128.F3.0F38.W1 28 /r
  VPMOVM2W ymm1, k1 | EVEX.256.F3.0F38.W1 28 /r
  VPMOVM2W zmm1, k1 | EVEX.512.F3.0F38.W1 28 /r

Opcode
  0x28
Tested by
  t5802

    IiyVPMOVM2W:: PROC
        IiEmitOpcode 0x28
    .op:IiOpEn RM
        IiModRM /r
        IiDispatchFormat  xmm.krg, ymm.krg, zmm.krg
    .xmm.krg:
        IiEmitPrefix EVEX.128.F3.0F38.W1
        RET
    .ymm.krg:
        IiEmitPrefix EVEX.256.F3.0F38.W1
        RET
    .zmm.krg:
        IiEmitPrefix EVEX.512.F3.0F38.W1
        RET
      ENDP IiyVPMOVM2W::

↑ VPMOVM2D
  Convert a Mask Register to a Vector Register
Intel reference

  VPMOVM2D xmm1, k1 | EVEX.128.F3.0F38.W0 38 /r
  VPMOVM2D ymm1, k1 | EVEX.256.F3.0F38.W0 38 /r
  VPMOVM2D zmm1, k1 | EVEX.512.F3.0F38.W0 38 /r

Opcode
  0x38
Tested by
  t5802

    IiyVPMOVM2D:: PROC
        IiEmitOpcode 0x38
        JMP IiyVPMOVM2B.op:
      ENDP IiyVPMOVM2D::

↑ VPMOVM2Q
  Convert a Mask Register to a Vector Register
Intel reference

  VPMOVM2Q xmm1, k1 | EVEX.128.F3.0F38.W1 38 /r
  VPMOVM2Q ymm1, k1 | EVEX.256.F3.0F38.W1 38 /r
  VPMOVM2Q zmm1, k1 | EVEX.512.F3.0F38.W1 38 /r

Opcode
  0x38
Tested by
  t5802

    IiyVPMOVM2Q:: PROC
        IiEmitOpcode 0x38
        JMP IiyVPMOVM2W.op:
      ENDP IiyVPMOVM2Q::

↑ VPMOVB2M
  Convert a Vector Register to a Mask
Intel reference

  VPMOVB2M k1, xmm1 | EVEX.128.F3.0F38.W0 29 /r
  VPMOVB2M k1, ymm1 | EVEX.256.F3.0F38.W0 29 /r
  VPMOVB2M k1, zmm1 | EVEX.512.F3.0F38.W0 29 /r

Opcode
  0x29
Tested by
  t5804

    IiyVPMOVB2M:: PROC
        IiEmitOpcode 0x29
    .op:IiOpEn RM
        IiModRM /r
        IiDispatchFormat  krg.xmm, krg.ymm, krg.zmm
    .krg.xmm:
        IiEmitPrefix EVEX.128.F3.0F38.W0
        RET
    .krg.ymm:
        IiEmitPrefix EVEX.256.F3.0F38.W0
        RET
    .krg.zmm:
        IiEmitPrefix EVEX.512.F3.0F38.W0
        RET
      ENDP IiyVPMOVB2M::

↑ VPMOVW2M
  Convert a Vector Register to a Mask
Intel reference

  VPMOVW2M k1, xmm1 | EVEX.128.F3.0F38.W1 29 /r
  VPMOVW2M k1, ymm1 | EVEX.256.F3.0F38.W1 29 /r
  VPMOVW2M k1, zmm1 | EVEX.512.F3.0F38.W1 29 /r

Opcode
  0x29
Tested by
  t5804

    IiyVPMOVW2M:: PROC
        IiEmitOpcode 0x29
    .op:IiOpEn RM
        IiModRM /r
        IiDispatchFormat  krg.xmm, krg.ymm, krg.zmm
    .krg.xmm:
        IiEmitPrefix EVEX.128.F3.0F38.W1
        RET
    .krg.ymm:
        IiEmitPrefix EVEX.256.F3.0F38.W1
        RET
    .krg.zmm:
        IiEmitPrefix EVEX.512.F3.0F38.W1
        RET
      ENDP IiyVPMOVW2M::

↑ VPMOVD2M
  Convert a Vector Register to a Mask
Intel reference

  VPMOVD2M k1, xmm1 | EVEX.128.F3.0F38.W0 39 /r
  VPMOVD2M k1, ymm1 | EVEX.256.F3.0F38.W0 39 /r
  VPMOVD2M k1, zmm1 | EVEX.512.F3.0F38.W0 39 /r

Opcode
  0x39
Tested by
  t5804

    IiyVPMOVD2M:: PROC
        IiEmitOpcode 0x39
        JMP IiyVPMOVB2M.op:
      ENDP IiyVPMOVD2M::

↑ VPMOVQ2M
  Convert a Vector Register to a Mask
Intel reference

  VPMOVQ2M k1, xmm1 | EVEX.128.F3.0F38.W1 39 /r
  VPMOVQ2M k1, ymm1 | EVEX.256.F3.0F38.W1 39 /r
  VPMOVQ2M k1, zmm1 | EVEX.512.F3.0F38.W1 39 /r

Opcode
  0x39
Tested by
  t5804

    IiyVPMOVQ2M:: PROC
        IiEmitOpcode 0x39
        JMP IiyVPMOVW2M.op:
      ENDP IiyVPMOVQ2M::

↑ VPBROADCASTMW2D
  Broadcast Mask to Vector Register
Intel reference

  VPBROADCASTMW2D xmm1, k1 | EVEX.128.F3.0F38.W0 3A /r
  VPBROADCASTMW2D ymm1, k1 | EVEX.256.F3.0F38.W0 3A /r
  VPBROADCASTMW2D zmm1, k1 | EVEX.512.F3.0F38.W0 3A /r

Opcode
  0x3A
Tested by
  t5806

    IiyVPBROADCASTMW2D:: PROC
        IiEmitOpcode 0x3A
        JMP IiyVPMOVM2B.op:
      ENDP IiyVPBROADCASTMW2D::

↑ VPBROADCASTMB2Q
  Broadcast Mask to Vector Register
Intel reference

  VPBROADCASTMB2Q xmm1, k1 | EVEX.128.F3.0F38.W1 2A /r
  VPBROADCASTMB2Q ymm1, k1 | EVEX.256.F3.0F38.W1 2A /r
  VPBROADCASTMB2Q zmm1, k1 | EVEX.512.F3.0F38.W1 2A /r

Opcode
  0x2A
Tested by
  t5806

    IiyVPBROADCASTMB2Q:: PROC
        IiEmitOpcode 0x2A
        JMP IiyVPMOVM2W.op:
      ENDP IiyVPBROADCASTMB2Q::

↑ VPCONFLICTD
  Detect Conflicts Within a Vector of Packed Dword Values into Dense Memory/ Register
Intel reference

  VPCONFLICTD xmm1 {k1}{z}, xmm2/m128/m32bcst | EVEX.128.66.0F38.W0 C4 /r
  VPCONFLICTD ymm1 {k1}{z}, ymm2/m256/m32bcst | EVEX.256.66.0F38.W0 C4 /r
  VPCONFLICTD zmm1 {k1}{z}, zmm2/m512/m32bcst | EVEX.512.66.0F38.W0 C4 /r

Opcode
  0xC4
Tested by
  t5806

    IiyVPCONFLICTD:: PROC
        IiAllowModifier MASK,DATA
        IiAllowBroadcasting DWORD
        IiEmitOpcode 0xC4
        IiOpEn RM
        IiModRM /r
        IiDisp8EVEX FV32
        IiDispatchFormat  xmm.xmm, xmm.mem, ymm.ymm, ymm.mem, zmm.zmm, zmm.mem
    .xmm.xmm:
    .xmm.mem:
        IiEmitPrefix EVEX.128.66.0F38.W0
        RET
    .ymm.ymm:
    .ymm.mem:
        IiEmitPrefix EVEX.256.66.0F38.W0
        RET
    .zmm.zmm:
    .zmm.mem:
        IiEmitPrefix EVEX.512.66.0F38.W0
        RET
      ENDP IiyVPCONFLICTD::

↑ VPCONFLICTQ
  Detect Conflicts Within a Vector of Packed Qword Values into Dense Memory/ Register
Intel reference

  VPCONFLICTQ xmm1 {k1}{z}, xmm2/m128/m64bcst | EVEX.128.66.0F38.W1 C4 /r
  VPCONFLICTQ ymm1 {k1}{z}, ymm2/m256/m64bcst | EVEX.256.66.0F38.W1 C4 /r
  VPCONFLICTQ zmm1 {k1}{z}, zmm2/m512/m64bcst | EVEX.512.66.0F38.W1 C4 /r

Opcode
  0xC4
Tested by
  t5806

    IiyVPCONFLICTQ:: PROC
        IiAllowModifier MASK,DATA
        IiAllowBroadcasting QWORD
        IiEmitOpcode 0xC4
        IiOpEn RM
        IiModRM /r
        IiDisp8EVEX FV64
        IiDispatchFormat  xmm.xmm, xmm.mem, ymm.ymm, ymm.mem, zmm.zmm, zmm.mem
    .xmm.xmm:
    .xmm.mem:
        IiEmitPrefix EVEX.128.66.0F38.W1
        RET
    .ymm.ymm:
    .ymm.mem:
        IiEmitPrefix EVEX.256.66.0F38.W1
        RET
    .zmm.zmm:
    .zmm.mem:
        IiEmitPrefix EVEX.512.66.0F38.W1
        RET
      ENDP IiyVPCONFLICTQ::

↑ VPMULTISHIFTQB
  Select Packed Unaligned Bytes from Quadword Sources
Intel reference

  VPMULTISHIFTQB xmm1 {k1}{z}, xmm2,xmm3/m128/m64bcst | EVEX.NDS.128.66.0F38.W1 83 /r
  VPMULTISHIFTQB ymm1 {k1}{z}, ymm2,ymm3/m256/m64bcst | EVEX.NDS.256.66.0F38.W1 83 /r
  VPMULTISHIFTQB zmm1 {k1}{z}, zmm2,zmm3/m512/m64bcst | EVEX.NDS.512.66.0F38.W1 83 /r

Opcode
  0x83
Tested by
  t5806

    IiyVPMULTISHIFTQB:: PROC
        IiAllowModifier MASK,DATA
        IiAllowBroadcasting QWORD
        IiEmitOpcode 0x83
        IiOpEn RVM
        IiModRM /r
        IiDisp8EVEX FV64
        IiDispatchFormat  xmm.xmm.xmm, xmm.xmm.mem, ymm.ymm.ymm, ymm.ymm.mem, zmm.zmm.zmm, zmm.zmm.mem
    .xmm.xmm.xmm:
    .xmm.xmm.mem:
        IiEmitPrefix EVEX.NDS.128.66.0F38.W1
        RET
    .ymm.ymm.ymm:
    .ymm.ymm.mem:
        IiEmitPrefix EVEX.NDS.256.66.0F38.W1
        RET
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix EVEX.NDS.512.66.0F38.W1
        RET
      ENDP IiyVPMULTISHIFTQB::

↑ VLOADUNPACKLD
  Load Unaligned Low And Unpack To Doubleword Vector
Intel reference

  VLOADUNPACKLD zmm1 {k1}, Ui32(mt) | MVEX.512.0F38.W0 D0 /r

Opcode
  0xD0
Tested by
  t6100

    IiyVLOADUNPACKLD:: PROC
        IiEmitOpcode 0xD0
    .Di:IiDisp8MVEX Di32
    .op:IiAllowMaskMerging
        IiAllowModifier DATA
        IiOpEn RM
        IiModRM /r
        IiDispatchFormat  zmm.mem
    .zmm.mem:
        IiEmitPrefix MVEX.512.0F38.W0
        RET
      ENDP IiyVLOADUNPACKLD::

↑ VLOADUNPACKLPS
  Load Unaligned Low And Unpack To Float32 Vector
Intel reference

  VLOADUNPACKLPS zmm1 {k1}, Uf32(mt) | MVEX.512.0F38.W0 D1 /r

Opcode
  0xD1
Tested by
  t6100

    IiyVLOADUNPACKLPS:: PROC
        IiEmitOpcode 0xD1
        IiDisp8MVEX Df32
        JMP IiyVLOADUNPACKLD.op:
      ENDP IiyVLOADUNPACKLPS::

↑ VLOADUNPACKHD
  Load Unaligned High And Unpack To Doubleword Vector
Intel reference

  VLOADUNPACKHD zmm1 {k1}, Ui32(mt) | MVEX.512.0F38.W0 D4 /r

Opcode
  0xD4
Tested by
  t6102

    IiyVLOADUNPACKHD:: PROC
        IiEmitOpcode 0xD4
        JMP IiyVLOADUNPACKLD.Di:
      ENDP IiyVLOADUNPACKHD::

↑ VLOADUNPACKHPS
  Load Unaligned High And Unpack To Float32 Vector
Intel reference

  VLOADUNPACKHPS zmm1 {k1}, Uf32(mt) | MVEX.512.0F38.W0 D5 /r

Opcode
  0xD5
Tested by
  t6102

    IiyVLOADUNPACKHPS:: PROC
        IiEmitOpcode 0xD5
        IiDisp8MVEX Df32
        JMP IiyVLOADUNPACKLD.op:
      ENDP IiyVLOADUNPACKHPS::

↑ VLOADUNPACKLQ
  Load Unaligned Low And Unpack To Int64 Vector
Intel reference

  VLOADUNPACKLQ zmm1 {k1}, Ui64(mt) | MVEX.512.0F38.W1 D0 /r

Opcode
  0xD0
Tested by
  t6100

    IiyVLOADUNPACKLQ:: PROC
        IiEmitOpcode 0xD0
    .op:IiDisp8MVEX Sn64
        IiAllowModifier DATA
        IiAllowMaskMerging
        IiOpEn RM
        IiModRM /r
        IiDispatchFormat  zmm.mem
    .zmm.mem:
        IiEmitPrefix MVEX.512.0F38.W1
        RET
      ENDP IiyVLOADUNPACKLQ::

↑ VLOADUNPACKLPD
  Load Unaligned Low And Unpack To Float64 Vector
Intel reference

  VLOADUNPACKLPD zmm1 {k1}, Uf64(mt) | MVEX.512.0F38.W1 D1 /r

Opcode
  0xD1
Tested by
  t6100

    IiyVLOADUNPACKLPD:: PROC
        IiEmitOpcode 0xD1
        JMP IiyVLOADUNPACKLQ.op:
      ENDP IiyVLOADUNPACKLPD::

↑ VLOADUNPACKHQ
  Load Unaligned High And Unpack To Int64 Vector
Intel reference

  VLOADUNPACKHQ zmm1 {k1}, Ui64(mt) | MVEX.512.0F38.W1 D4 /r

Opcode
  0xD4
Tested by
  t6102

    IiyVLOADUNPACKHQ:: PROC
        IiEmitOpcode 0xD4
        JMP IiyVLOADUNPACKLQ.op:
      ENDP IiyVLOADUNPACKHQ::

↑ VLOADUNPACKHPD
  Load Unaligned High And Unpack To Float64 Vector
Intel reference

  VLOADUNPACKHPD zmm1 {k1}, Uf64(mt) | MVEX.512.0F38.W1 D5 /r

Opcode
  0xD5
Tested by
  t6102

    IiyVLOADUNPACKHPD:: PROC
        IiEmitOpcode 0xD5
        JMP IiyVLOADUNPACKLQ.op:
      ENDP IiyVLOADUNPACKHPD::

↑ VPACKSTORELD
  Pack and Store Unaligned Low From Int32 Vector
Intel reference

  VPACKSTORELD mt {k1}, Di32(zmm1) | MVEX.512.66.0F38.W0 D0 /r

Opcode
  0xD0
Tested by
  t6104

    IiyVPACKSTORELD:: PROC
        IiEmitOpcode 0xD0
    .Di:IiDisp8MVEX Di32
    .op:IiAllowMaskMerging
        IiAllowModifier DATA
        IiOpEn MR
        IiModRM /r
        IiDispatchFormat  mem.zmm
    .mem.zmm:
        IiEmitPrefix MVEX.512.66.0F38.W0
        RET
      ENDP IiyVPACKSTORELD::

↑ VPACKSTORELPS
  Pack and Store Unaligned Low From Float32 Vector
Intel reference

  VPACKSTORELPS mt {k1}, Df32(zmm1) | MVEX.512.66.0F38.W0 D1 /r

Opcode
  0xD1
Tested by
  t6104

    IiyVPACKSTORELPS:: PROC
        IiEmitOpcode 0xD1
        IiDisp8MVEX Df32
        JMP IiyVPACKSTORELD.op:
      ENDP IiyVPACKSTORELPS::

↑ VPACKSTOREHD
  Pack And Store Unaligned High From Int32 Vector
Intel reference

  VPACKSTOREHD mt {k1}, Di32(zmm1) | MVEX.512.66.0F38.W0 D4 /r

Opcode
  0xD4
Tested by
  t6106

    IiyVPACKSTOREHD:: PROC
        IiEmitOpcode 0xD4
        JMP IiyVPACKSTORELD.Di:
      ENDP IiyVPACKSTOREHD::

↑ VPACKSTOREHPS
  Pack And Store Unaligned High From Float32 Vector
Intel reference

  VPACKSTOREHPS mt {k1}, Df32(zmm1) | MVEX.512.66.0F38.W0 D5 /r

Opcode
  0xD5
Tested by
  t6106

    IiyVPACKSTOREHPS:: PROC
        IiEmitOpcode 0xD5
        IiDisp8MVEX Df32
        JMP IiyVPACKSTORELD.op:
      ENDP IiyVPACKSTOREHPS::

↑ VPACKSTORELQ
  Pack and Store Unaligned Low From Int64 Vector
Intel reference

  VPACKSTORELQ mt {k1}, Di64(zmm1) | MVEX.512.66.0F38.W1 D0 /r

Opcode
  0xD0
Tested by
  t6104

    IiyVPACKSTORELQ:: PROC
        IiEmitOpcode 0xD0
    .op:IiDisp8MVEX Sn64
        IiAllowMaskMerging
        IiAllowModifier DATA
        IiOpEn MR
        IiModRM /r
        IiDispatchFormat  mem.zmm
    .mem.zmm:
        IiEmitPrefix MVEX.512.66.0F38.W1
        RET
      ENDP IiyVPACKSTORELQ::

↑ VPACKSTORELPD
  Pack and Store Unaligned Low From Float64 Vector
Intel reference

  VPACKSTORELPD mt {k1}, Df64(zmm1) | MVEX.512.66.0F38.W1 D1 /r

Opcode
  0xD1
Tested by
  t6104

    IiyVPACKSTORELPD:: PROC
        IiEmitOpcode 0xD1
        JMP IiyVPACKSTORELQ.op:
      ENDP IiyVPACKSTORELPD::

↑ VPACKSTOREHQ
  Pack And Store Unaligned High From Int64 Vector
Intel reference

  VPACKSTOREHQ mt {k1}, Di64(zmm1) | MVEX.512.66.0F38.W1 D4 /r

Operands
  0xD4
Tested by
  t6106

    IiyVPACKSTOREHQ:: PROC
        IiEmitOpcode 0xD4
        JMP IiyVPACKSTORELQ.op:
      ENDP IiyVPACKSTOREHQ::

↑ VPACKSTOREHPD
  Pack And Store Unaligned High From Float64 Vector
Intel reference

  VPACKSTOREHPD mt {k1}, Df64(zmm1) | MVEX.512.66.0F38.W1 D5 /r

Opcode
  0xD5
Tested by
  t6106

    IiyVPACKSTOREHPD:: PROC
        IiEmitOpcode 0xD5
        JMP IiyVPACKSTORELQ.op:
      ENDP IiyVPACKSTOREHPD::

↑ VCVTFXPNTUDQ2PS
  Convert Fixed Point Uint32 Vector to Float32 Vector
Intel reference

  VCVTFXPNTUDQ2PS zmm1 {k1}, i32(zmm2/mt), imm8 | MVEX.512.0F3A.W0 CA /r ib

Opcode
  0xCA
Tested by
  t6110

    IiyVCVTFXPNTUDQ2PS:: PROC
        IiEmitOpcode 0xCA
    .op:IiAllowModifier MASK,SAE,IMM,EH
        IiOpEn RM
        IiModRM /r
        IiDisp8MVEX Si32
        IiEmitImm Operand3, BYTE, Max=127
        IiDispatchFormat  zmm.zmm.imm, zmm.mem.imm
    .zmm.zmm.imm:
    .zmm.mem.imm:
        IiEmitPrefix MVEX.512.0F3A.W0
        RET
      ENDP IiyVCVTFXPNTUDQ2PS::

↑ VCVTFXPNTDQ2PS
  Convert Fixed Point Int32 Vector to Float32 Vector
Intel reference

  VCVTFXPNTDQ2PS zmm1 {k1}, S (zmm2/m ), imm8 | MVEX.512.0F3A.W0 CB /r ib

Opcode
  0xCB
Tested by
  t6110

    IiyVCVTFXPNTDQ2PS:: PROC
        IiEmitOpcode 0xCB
        JMP IiyVCVTFXPNTUDQ2PS.op:
      ENDP IiyVCVTFXPNTDQ2PS::

↑ VCVTFXPNTPS2UDQ
  Convert Float32 Vector to Fixed Point Uint32 Vector
Intel reference

  VCVTFXPNTPS2UDQ zmm1 {k1}, Sf32(zmm2/mt), imm8 | MVEX.512.66.0F3A.W0 CA /r ib

Opcode
  0xCA
Tested by
  t6110

    IiyVCVTFXPNTPS2UDQ:: PROC
        IiEmitOpcode 0xCA
    .op:IiAllowModifier MASK,SAE,EH,DATA,IMM
        IiOpEn RM
        IiModRM /r
        IiDisp8MVEX Us32
        IiEmitImm Operand3, BYTE, Max=127
        IiDispatchFormat  zmm.zmm.imm, zmm.mem.imm
    .zmm.zmm.imm:
    .zmm.mem.imm:
        IiEmitPrefix MVEX.512.66.0F3A.W0
        RET
      ENDP IiyVCVTFXPNTPS2UDQ::

↑ VCVTFXPNTPS2DQ
  Convert Float32 Vector to Fixed Point Int32 Vector
Intel reference

  VCVTFXPNTPS2DQ zmm1 {k1}, Sf32(zmm2/mt), imm8 | MVEX.512.66.0F3A.W0 CB /r ib

Opcode
  0xCB
Tested by
  t6110

    IiyVCVTFXPNTPS2DQ:: PROC
        IiEmitOpcode 0xCB
        JMP IiyVCVTFXPNTPS2UDQ.op:
      ENDP IiyVCVTFXPNTPS2DQ::

↑ VCVTFXPNTPD2UDQ
  Convert Float64 Vector to Fixed Point Uint32 Vector
Intel reference

  VCVTFXPNTPD2UDQ zmm1 {k1}, Sf64(zmm2/mt), imm8 | MVEX.512.F2.0F3A.W1 CA /r ib

Opcode
  0xCA
Tested by
  t6110

    IiyVCVTFXPNTPD2UDQ:: PROC
        IiEmitOpcode 0xCA
    .op:IiAllowModifier MASK,SAE,EH,DATA,IMM
        IiOpEn RM
        IiModRM /r
        IiEmitImm Operand3, BYTE, Max=3
        IiDisp8MVEX Ub64
        IiDispatchFormat  zmm.zmm.imm, zmm.mem.imm
    .zmm.zmm.imm:
    .zmm.mem.imm:
        IiEmitPrefix MVEX.512.F2.0F3A.W1
        RET
      ENDP IiyVCVTFXPNTPD2UDQ::

↑ VCVTFXPNTPD2DQ
  Convert Float64 Vector to Fixed Point Int32 Vector
Intel reference

  VCVTFXPNTPD2DQ zmm1 {k1}, Sf64(zmm2/mt), imm8 | MVEX.512.F2.0F3A.W1 E6 /r ib

Opcode
  0xE6
Tested by
  t6110

    IiyVCVTFXPNTPD2DQ:: PROC
        IiEmitOpcode 0xE6
        JMP IiyVCVTFXPNTPD2UDQ.op:
      ENDP IiyVCVTFXPNTPD2DQ::

↑ VRNDFXPNTPS
  Round Float32 Vector
Intel reference

  VRNDFXPNTPS zmm1 {k1}, Sf32(zmm2/mt), imm8 | MVEX.512.66.0F3A.W0 52 /r ib

Opcode
  0x52

    IiyVRNDFXPNTPS:: PROC
        IiAllowModifier DATA,IMM
        IiAllowMaskMerging
        IiEmitOpcode 0x52
        IiOpEn RM
        IiModRM /r
        IiEmitImm Operand3, BYTE
        IiDisp8MVEX Us32
        IiDispatchFormat  zmm.zmm.imm, zmm.mem.imm
    .zmm.zmm.imm:
    .zmm.mem.imm:
        IiEmitPrefix MVEX.512.66.0F3A.W0
        RET
      ENDP IiyVRNDFXPNTPS::

↑ VRNDFXPNTPD
  Round Float64 Vector
Intel reference

  VRNDFXPNTPD zmm1 {k1}, Sf64(zmm2/mt), imm8 | MVEX.512.66.0F3A.W1 52 /r ib

Opcode
  0x52

    IiyVRNDFXPNTPD:: PROC
        IiAllowMaskMerging
        IiEmitOpcode 0x52
        IiOpEn RM
        IiModRM /r
        IiEmitImm Operand3, BYTE
        IiDisp8MVEX Ub64
        IiDispatchFormat  zmm.zmm.imm, zmm.mem.imm
    .zmm.zmm.imm:
    .zmm.mem.imm:
        IiEmitPrefix MVEX.512.66.0F3A.W1
        RET
      ENDP IiyVRNDFXPNTPD::

↑ VPERMF32X4
  Shufe Vector Dqwords
Intel reference

  VPERMF32X4 zmm1 {k1}, zmm2/mt, imm8 | MVEX.512.66.0F3A.W0 07 /r ib

Opcode
  0x07

    IiyVPERMF32X4:: PROC
        IiAllowModifier DATA,IMM
        IiAllowMaskMerging
        IiEmitOpcode 0x07
        IiOpEn RM
        IiModRM /r
        IiEmitImm Operand3, BYTE
        IiDisp8MVEX Di64
        IiDispatchFormat  zmm.zmm.imm, zmm.mem.imm
    .zmm.zmm.imm:
    .zmm.mem.imm:
        IiEmitPrefix MVEX.512.66.0F3A.W0
        RET
      ENDP IiyVPERMF32X4::

↑ VPADCD
  Add Int32 Vectors with Carry
Intel reference

  VPADCD zmm1 {k1}, k2, Si32(zmm3/mt) | MVEX.NDS.512.66.0F38.W0 5C /r

Opcode
  0x5C
Tested by
  t6120

    IiyVPADCD:: PROC
        IiEmitOpcode 0x5C
    .op:IiAllowMaskMerging
        IiAllowModifier DATA
        IiOpEn RVM
        IiModRM /r
        IiDisp8MVEX Si32
        IiDispatchFormat  zmm.krg.zmm, zmm.krg.mem
    .zmm.krg.zmm:
    .zmm.krg.mem:
        IiEmitPrefix MVEX.NDS.512.66.0F38.W0
        RET
      ENDP IiyVPADCD::

↑ VPADDSETCD
  Add Int32 Vectors and Set Mask to Carry
Intel reference

  VPADDSETCD zmm1 {k1}, k2, Si32(zmm3/mt) | MVEX.NDS.512.66.0F38.W0 5D /r

Opcode
  0x5D
Tested by
  t6120

    IiyVPADDSETCD:: PROC
        IiEmitOpcode 0x5D
        JMP IiyVPADCD.op:
      ENDP IiyVPADDSETCD::

↑ VPSBBD
  Subtract Int32 Vectors with Borrow
Intel reference

  VPSBBD zmm1 {k1}, k2, Si32(zmm3/mt) | MVEX.NDS.512.66.0F38.W0 5E /r

Opcode
  0x5E
Tested by
  t6120

    IiyVPSBBD:: PROC
        IiEmitOpcode 0x5E
        JMP IiyVPADCD.op:
      ENDP IiyVPSBBD::

↑ VPSUBRSETBD
  Reverse Subtract Int32 Vectors and Set Borrow
Intel reference

  VPSUBRSETBD zmm1 {k1}, k2, Si32(zmm3/mt) | MVEX.NDS.512.66.0F38.W0 6F /r

Opcode
  0x6F
Tested by
  t6120

    IiyVPSUBRSETBD:: PROC
        IiEmitOpcode 0x6F
        JMP IiyVPADCD.op:
      ENDP IiyVPSUBRSETBD::

↑ VPSUBSETBD
  Subtract Int32 Vectors and Set Borrow
Intel reference

  VPSUBSETBD zmm1 {k1}, k2, Si32(zmm3/mt) | MVEX.NDS.512.66.0F38.W0 5F /r

Opcode
  0x5F
Tested by
  t6120

    IiyVPSUBSETBD:: PROC
        IiEmitOpcode 0x5F
        JMP IiyVPADCD.op:
      ENDP IiyVPSUBSETBD::

↑ VPSUBRD
  Reverse Subtract Int32 Vectors
Intel reference

  VPSUBRD zmm1 {k1}, zmm2, Si32(zmm3/mt) | MVEX.NDS.512.66.0F38.W0 6C /r

Opcode
  0x6C
Tested by
  t6122

    IiyVPSUBRD:: PROC
        IiEmitOpcode 0x6C
    .op:IiAllowMaskMerging
        IiAllowModifier DATA
        IiOpEn RVM
        IiModRM /r
        IiDisp8MVEX Si32
        IiDispatchFormat  zmm.zmm.zmm, zmm.zmm.mem
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix MVEX.NDS.512.66.0F38.W0
        RET
      ENDP IiyVPSUBRD::

↑ VPSBBRD
  Reverse Subtract Int32 Vectors with Borrow
Intel reference

  VPSBBRD zmm1 {k1}, k2, Si32(zmm3/mt) | MVEX.NDS.512.66.0F38.W0 6E /r

Opcode
  0x6E
Tested by
  t6122

    IiyVPSBBRD:: PROC
        IiEmitOpcode 0x6E
       ; JMP IiyVPSUBRD.op:
        IiAllowMaskMerging
        IiAllowModifier DATA
        IiOpEn RVM
        IiModRM /r
        IiDisp8MVEX Si32
        IiDispatchFormat  zmm.krg.zmm, zmm.krg.mem
    .zmm.krg.zmm:
    .zmm.krg.mem:
        IiEmitPrefix MVEX.NDS.512.66.0F38.W0
        RET
      ENDP IiyVPSBBRD::

↑ VPMULHUD
  Multiply Uint32 Vectors And Store High Result
Intel reference

  VPMULHUD zmm1 {k1}, zmm2, Si32(zmm3/mt) | MVEX.NDS.512.66.0F38.W0 86 /r

Opcode
  0x86
Tested by
  t6122

    IiyVPMULHUD:: PROC
        IiEmitOpcode 0x86
        JMP IiyVPSUBRD.op:
      ENDP IiyVPMULHUD::

↑ VPMULHD
  Multiply Int32 Vectors And Store High Result
Intel reference

  VPMULHD zmm1 {k1}, zmm2, Si32(zmm3/mt) | MVEX.NDS.512.66.0F38.W0 87 /r

Opcode
  0x87
Tested by
  t6122

    IiyVPMULHD:: PROC
        IiEmitOpcode 0x87
        JMP IiyVPSUBRD.op:
      ENDP IiyVPMULHD::

↑ VFIXUPNANPS
  FixUp Special Float32 VectorNumbersWithNaNPassthrough
Intel reference

  VFIXUPNANPS zmm1 {k1}, zmm2, Si32(zmm3/mt) | MVEX.NDS.512.66.0F38.W0 55 /r

Opcode
  0x55
Tested by
  t6122

    IiyVFIXUPNANPS:: PROC
        IiAllowSuppressing
        IiEmitOpcode 0x55
        JMP IiyVPSUBRD.op:
      ENDP IiyVFIXUPNANPS::

↑ VPMADD231D
  Multiply First Source By Second Source and Add To Destination Int32 Vectors
Intel reference

  VPMADD231D zmm1 {k1}, zmm2, Si32(zmm3/mt) | MVEX.NDS.512.66.0F38.W0 B5 /r

Opcode
  0xB5
Tested by
  t6122

    IiyVPMADD231D:: PROC
        IiEmitOpcode 0xB5
        JMP IiyVPSUBRD.op:
      ENDP IiyVPMADD231D::

↑ VPMADD233D
  Multiply First Source By Specially Swizzled Second Source and Add To Second Source Int32 Vectors
Intel reference

  VPMADD233D zmm1 {k1}, zmm2, Si32(zmm3/mt) | MVEX.NDS.512.66.0F38.W0 B4 /r

Opcode
  0xB4
Tested by
  t6124

    IiyVPMADD233D:: PROC
        IiAllowModifier DATA
        IiAllowMaskMerging
        IiAllowNoSwizzle
        IiDisp8MVEX Sf32
        IiEmitOpcode 0xB4
        IiOpEn RVM
        IiModRM /r
        IiDispatchFormat  zmm.zmm.zmm, zmm.zmm.mem
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix MVEX.NDS.512.66.0F38.W0
        RET
      ENDP IiyVPMADD233D::

↑ VSCALEPS
  Scale Float32 Vectors
Intel reference

  VSCALEPS zmm1 {k1}, zmm2, Si32(zmm3/mt) | MVEX.NDS.512.66.0F38.W0 84 /r

Opcode
  0x84
Tested by
  t5710 t6128

    IiyVSCALEPS:: PROC
        IiEmitOpcode 0x84
        IiDisp8MVEX Si32
    .op:IiAllowModifier MASK,EH,SAE
        IiAllowModifier DATA
        IiAllowRounding
        IiOpEn RVM
        IiModRM /r
        IiDispatchFormat  zmm.zmm.zmm, zmm.zmm.mem
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix MVEX.NDS.512.66.0F38.W0
        RET
      ENDP IiyVSCALEPS::

↑ VADDNPS
  Add and Negate Float32 Vectors
Intel reference

  VADDNPS zmm1 {k1}, zmm2, Sf32(zmm3/mt) | MVEX.NDS.512.66.0F38.W0 50 /r

Opcode
  0x50
Tested by
  t6128

    IiyVADDNPS:: PROC
        IiEmitOpcode 0x50
        IiDisp8MVEX Us32
        JMP IiyVSCALEPS.op:
      ENDP IiyVADDNPS::

↑ VADDNPD
  Add and Negate Float64 Vectors
Intel reference

  VADDNPD zmm1 {k1}, zmm2, Sf64(zmm3/mt) | MVEX.NDS.512.66.0F38.W1 50 /r

Opcode
  0x50
Tested by
  t6128 t6130

    IiyVADDNPD:: PROC
        IiEmitOpcode 0x50
    .op:IiDisp8MVEX Ub64
        IiAllowModifier DATA
        IiAllowMaskMerging
        IiAllowSuppressing
        IiAllowRounding
        IiOpEn RVM
        IiModRM /r
        IiDispatchFormat  zmm.zmm.zmm, zmm.zmm.mem
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix MVEX.NDS.512.66.0F38.W1
        RET
      ENDP IiyVADDNPD::

↑ VSUBRPD
  Reverse Subtract Float64 Vectors
Intel reference

  VSUBRPD zmm1 {k1}, zmm2, Sf64(zmm3/mt) | MVEX.NDS.512.66.0F38.W1 6D /r

Opcode
  0x6D
Tested by
  t6130

    IiyVSUBRPD:: PROC
        IiEmitOpcode 0x6D
        JMP IiyVADDNPD.op:
      ENDP IiyVSUBRPD::

↑ VPADDSETSD
  Add Int32 Vectors and Set Mask to Sign
Intel reference

  VPADDSETSD zmm1 {k1}, zmm2, Si32(zmm3/mt) | MVEX.NDS.512.66.0F38.W0 CD /r

Opcode
  0xCD
Tested by
  t6122

    IiyVPADDSETSD:: PROC
        IiAllowModifier DATA
        IiAllowMaskMerging
        IiEmitOpcode 0xCD
        IiOpEn RVM
        IiModRM /r
        IiDisp8MVEX Si32
        IiDispatchFormat  zmm.zmm.zmm, zmm.zmm.mem
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix MVEX.NDS.512.66.0F38.W0
        RET
      ENDP IiyVPADDSETSD::

↑ VGMAXABSPS
  Absolute Maximum of Float32 Vectors
Intel reference

  VGMAXABSPS zmm1 {k1}, zmm2, Sf32(zmm3/mt) | MVEX.NDS.512.66.0F38.W0 51 /r

Opcode
  0x51
Tested by
  t6126

    IiyVGMAXABSPS:: PROC
        IiEmitOpcode 0x51
    .op:IiAllowMaskMerging
        IiAllowModifier DATA
        IiAllowSuppressing
        IiOpEn RVM
        IiModRM /r
        IiDisp8MVEX Us32
        IiDispatchFormat  zmm.zmm.zmm, zmm.zmm.mem
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix MVEX.NDS.512.66.0F38.W0
        RET
      ENDP IiyVGMAXABSPS::

↑ VGMINPS
  Minimum of Float32 Vectors
Intel reference

  VGMINPS zmm1 {k1}, zmm2, Sf32(zmm3/mt) | MVEX.NDS.512.66.0F38.W0 52 /r

Opcode
  0x52
Tested by
  t6126

    IiyVGMINPS:: PROC
        IiEmitOpcode 0x52
        JMP IiyVGMAXABSPS.op:
      ENDP IiyVGMINPS::

↑ VGMAXPS
  Maximum of Float32 Vectors
Intel reference

  VGMAXPS zmm1 {k1}, zmm2, Sf32(zmm3/mt) | MVEX.NDS.512.66.0F38.W0 53 /r

Opcode
  0x53
Tested by
  t6126

    IiyVGMAXPS:: PROC
        IiEmitOpcode 0x53
        JMP IiyVGMAXABSPS.op:
      ENDP IiyVGMAXPS::

↑ VSUBRPS
  Reverse Subtract Float32 Vectors
Intel reference

  VSUBRPS zmm1 {k1}, zmm2, Sf32(zmm3/mt) | MVEX.NDS.512.66.0F38.W0 6D /r

Opcode
  0x6D
Tested by
  t6124

    IiyVSUBRPS:: PROC
        IiEmitOpcode 0x6D
        IiDisp8MVEX Us32
        JMP IiyVSCALEPS.op:
      ENDP IiyVSUBRPS::

↑ VADDSETSPS
  Add Float32 Vectors and Set Mask to Sign
Intel reference

  VADDSETSPS zmm1 {k1}, zmm2, S (zmm3/mt) | MVEX.NDS.512.66.0F38.W0 CC /r

Opcode
  0xCC
Tested by
  t6124

    IiyVADDSETSPS:: PROC
        IiEmitOpcode 0xCC
        IiDisp8MVEX Us32
        JMP IiyVSCALEPS.op:
      ENDP IiyVADDSETSPS::

↑ VGMINPD
  Minimum of Float64 Vectors
Intel reference

  VGMINPD zmm1 {k1}, zmm2, Sf64(zmm3/mt) | MVEX.NDS.512.66.0F38.W1 52 /r

Opcode
  0x52
Tested by
  t6132

    IiyVGMINPD:: PROC
        IiEmitOpcode 0x52
    .op:IiAllowMaskMerging
        IiAllowModifier DATA
        IiAllowSuppressing
        IiOpEn RVM
        IiModRM /r
        IiDisp8MVEX Ub64
        IiDispatchFormat  zmm.zmm.zmm, zmm.zmm.mem
    .zmm.zmm.zmm:
    .zmm.zmm.mem:
        IiEmitPrefix MVEX.NDS.512.66.0F38.W1
        RET
      ENDP IiyVGMINPD::

↑ VGMAXPD
  Maximum of Float64 Vectors
Intel reference

  VGMAXPD zmm1 {k1}, zmm2, Sf64(zmm3/mt) | MVEX.NDS.512.66.0F38.W1 53 /r

Opcode
  0x53
Tested by
  t6132

    IiyVGMAXPD:: PROC
        IiEmitOpcode 0x53
        JMP IiyVGMINPD.op:
      ENDP IiyVGMAXPD::

↑ VFIXUPNANPD
  FixUp Special Float64 Vector Numbers With NaN Passthrough
Intel reference

  VFIXUPNANPD zmm1 {k1}, zmm2, Si64(zmm3/mt) | MVEX.NDS.512.66.0F38.W1 55 /r

Opcode
  0x55
Tested by
  t6132

    IiyVFIXUPNANPD:: PROC
        IiEmitOpcode 0x55
        JMP IiyVGMINPD.op:
      ENDP IiyVFIXUPNANPD::

↑ VLOG2PS
  Vector Logarithm Base-2 of Float32 Vector
Intel reference

  VLOG2PS zmm1 {k1}, zmm2/mt | MVEX.512.66.0F38.W0 C9 /r

Opcode
  0xC9
Tested by
  t6134

    IiyVLOG2PS:: PROC
        IiEmitOpcode 0xC9
    .op:IiAllowMaskMerging
        IiAllowModifier DATA
        IiAllowSuppressing Swizzle=No
        IiOpEn RM
        IiModRM /r
        IiDisp8MVEX Di64
        IiDispatchFormat  zmm.zmm, zmm.mem
    .zmm.zmm:
    .zmm.mem:
        IiEmitPrefix MVEX.512.66.0F38.W0
        RET
      ENDP IiyVLOG2PS::

↑ VEXP223PS
  Base-2 Exponential Calculation of Float32 Vector
Intel reference

  VEXP223PS zmm1 {k1}, zmm2/mt | MVEX.512.66.0F38.W0 C8 /r

Opcode
  0xC8
Tested by
  t6134

    IiyVEXP223PS:: PROC
        IiEmitOpcode 0xC8
        JMP IiyVLOG2PS.op:
      ENDP IiyVEXP223PS::

↑ VRCP23PS
  Reciprocal of Float32 Vector
Intel reference

  VRCP23PS zmm1 {k1}, zmm2/mt | MVEX.512.66.0F38.W0 CA /r

Opcode
  0xCA
Tested by
  t6134

    IiyVRCP23PS:: PROC
        IiEmitOpcode 0xCA
        JMP IiyVLOG2PS.op:
      ENDP IiyVRCP23PS::

↑ VRSQRT23PS
  Vector Reciprocal Square Root of Float32 Vector
Intel reference

  VRSQRT23PS zmm1 {k1}, zmm2/mt | MVEX.512.66.0F38.W0 CB /r

Opcode
  0xCB
Tested by
  t6134

    IiyVRSQRT23PS:: PROC
        IiEmitOpcode 0xCB
        JMP IiyVLOG2PS.op:
      ENDP IiyVRSQRT23PS::

↑ VPLZCNTD
  Count the Number of Leading Zero Bits for Packed Dword Values
Intel reference

  VPLZCNTD xmm1 {k1}{z}, xmm2/m128/m32bcst | EVEX.128.66.0F38.W0 44 /r
  VPLZCNTD ymm1 {k1}{z}, ymm2/m256/m32bcst | EVEX.256.66.0F38.W0 44 /r
  VPLZCNTD zmm1 {k1}{z}, zmm2/m512/m32bcst | EVEX.512.66.0F38.W0 44 /r

Opcode
  0x44
Tested by
  t5726

    IiyVPLZCNTD:: PROC
        IiAllowModifier MASK,DATA
        IiAllowBroadcasting DWORD
        IiEmitOpcode 0x44
        IiOpEn RM
        IiModRM /r
        IiDisp8EVEX FV32
        IiDispatchFormat  xmm.xmm, xmm.mem, ymm.ymm, ymm.mem, zmm.zmm, zmm.mem
    .xmm.xmm:
    .xmm.mem:
        IiEmitPrefix EVEX.128.66.0F38.W0
        RET
    .ymm.ymm:
    .ymm.mem:
        IiEmitPrefix EVEX.256.66.0F38.W0
        RET
    .zmm.zmm:
    .zmm.mem:
        IiEmitPrefix EVEX.512.66.0F38.W0
        RET
      ENDP IiyVPLZCNTD::

↑ VPLZCNTQ
  Count the Number of Leading Zero Bits for Packed Qword Values
Intel reference

  VPLZCNTQ xmm1 {k1}{z}, xmm2/m128/m64bcst | EVEX.128.66.0F38.W1 44 /r
  VPLZCNTQ ymm1 {k1}{z}, ymm2/m256/m64bcst | EVEX.256.66.0F38.W1 44 /r
  VPLZCNTQ zmm1 {k1}{z}, zmm2/m512/m64bcst | EVEX.512.66.0F38.W1 44 /r

Opcode
  0x44
Tested by
  t5726

    IiyVPLZCNTQ:: PROC
        IiAllowModifier MASK,DATA
        IiAllowBroadcasting QWORD
        IiEmitOpcode 0x44
        IiOpEn RM
        IiModRM /r
        IiDisp8EVEX FV64
        IiDispatchFormat  xmm.xmm, xmm.mem, ymm.ymm, ymm.mem, zmm.zmm, zmm.mem
    .xmm.xmm:
    .xmm.mem:
        IiEmitPrefix EVEX.128.66.0F38.W1
        RET
    .ymm.ymm:
    .ymm.mem:
        IiEmitPrefix EVEX.256.66.0F38.W1
        RET
    .zmm.zmm:
    .zmm.mem:
        IiEmitPrefix EVEX.512.66.0F38.W1
        RET
      ENDP IiyVPLZCNTQ::

↑ VPREFETCHNTA
  Prefetch memory line using NTA hint
Intel reference

  VPREFETCHNTA m8 | VEX.128.0F 18 /0
  VPREFETCHNTA m8 | MVEX.512.0F 18 /0

Category
  sse1,fetch
Operands
  Mb
Opcode
  0x0F18 /0
CPU
  P3+
Tested by
  t6242

    IiyVPREFETCHNTA:: PROC
        MOV EAX,iiPpgModRMd + 0<<28  ; >>
    .rm:IiModRM EAX
        IiRequire AVX512, MVEX
        IiAllowModifier DATA
        IiEmitOpcode 0x18
        IiOpEn M
        IiDisp8MVEX Di64
        IiDispatchFormat  mem
    .mem:
        IiEmitPrefix VEX.128.0F, MVEX.512.0F
        RET
      ENDP IiyVPREFETCHNTA::

↑ VPREFETCH0
  Prefetch memory line using T0 hint
Intel reference

  VPREFETCH0 m8 | VEX.128.0F 18 /1
  VPREFETCH0 m8 | MVEX.512.0F 18 /1

Opcode
  0x18
Tested by
  t6240

    IiyVPREFETCH0:: PROC
        MOV EAX,iiPpgModRMd + 1<<28   ; >>
        JMP IiyVPREFETCHNTA.rm:
      ENDP IiyVPREFETCH0::

↑ VPREFETCH1
  Prefetch memory line using T1 hint
Intel reference

  VPREFETCH1 m8 | VEX.128.0F 18 /2
  VPREFETCH1 m8 | MVEX.512.0F 18 /2

Opcode
  0x18
Tested by
  t6240

    IiyVPREFETCH1:: PROC
        MOV EAX,iiPpgModRMd + 2<<28  ; >>
        JMP IiyVPREFETCHNTA.rm:
      ENDP IiyVPREFETCH1::

↑ VPREFETCH2
  Prefetch memory line using T2 hint
Intel reference

  VPREFETCH2 m8 | VEX.128.0F 18 /3
  VPREFETCH2 m8 | MVEX.512.0F 18 /3

Opcode
  0x18
Tested by
  t6240

    IiyVPREFETCH2:: PROC
        MOV EAX,iiPpgModRMd + 3<<28        ; >>
        JMP IiyVPREFETCHNTA.rm:
      ENDP IiyVPREFETCH2::

↑ VPREFETCHENTA
  Prefetch memory line using NTA hint, with intent to write
Intel reference

  VPREFETCHENTA m8 | VEX.128.0F 18 /4
  VPREFETCHENTA m8 | MVEX.512.0F 18 /4

Opcode
  0x18
Tested by
  t6242

    IiyVPREFETCHENTA:: PROC
        MOV EAX,iiPpgModRMd + 4<<28  ; >>
        JMP IiyVPREFETCHNTA.rm:
      ENDP IiyVPREFETCHENTA::

↑ VPREFETCHE0
  Prefetch memory line using T0 hint, with intent to write
Intel reference

  VPREFETCHE0 m8 | VEX.128.0F 18 /5
  VPREFETCHE0 m8 | MVEX.512.0F 18 /5

Opcode
  0x18
Tested by
  t6240

    IiyVPREFETCHE0:: PROC
        MOV EAX,iiPpgModRMd + 5<<28 ; >>
        JMP IiyVPREFETCHNTA.rm:
      ENDP IiyVPREFETCHE0::

↑ VPREFETCHE1
  Prefetch memory line using T1 hint, with intent to write
Intel reference

  VPREFETCHE1 m8 | VEX.128.0F 18 /6
  VPREFETCHE1 m8 | MVEX.512.0F 18 /6

Opcode
  0x18
Tested by
  t6240

    IiyVPREFETCHE1:: PROC
        MOV EAX,iiPpgModRMd + 6<<28 ; >>
        JMP IiyVPREFETCHNTA.rm:
      ENDP IiyVPREFETCHE1::

↑ VPREFETCHE2
  Prefetch memory line using T2 hint, with intent to write
Intel reference

  VPREFETCHE2 m8 | VEX.128.0F 18 /7
  VPREFETCHE2 m8 | MVEX.512.0F 18 /7

Opcode
  0x18
Tested by
  t6240

    IiyVPREFETCHE2:: PROC
        MOV EAX,iiPpgModRMd + 7<<28   ; >>
        JMP IiyVPREFETCHNTA.rm:
      ENDP IiyVPREFETCHE2::

↑ CLEVICT0
  Evict L1 line
Intel reference

  CLEVICT0 m8 | VEX.128.F2.0F AE /7
  CLEVICT0 m8 | MVEX.512.F2.0F AE /7

Opcode
  0xAE
Tested by
  t6242

    IiyCLEVICT0:: PROC
        IiEmitPrefix VEX.128.F2.0F, MVEX.512.F2.0F
    .pf:IiOpEn M
        IiAllowModifier DATA
        IiModRM /7
        IiEmitOpcode 0xAE
        IiDisp8MVEX Di64
        IiDispatchFormat  mem
    .mem:RET
      ENDP IiyCLEVICT0::

↑ CLEVICT1
  Evict L2 line
Intel reference

  CLEVICT1 m8 | VEX.128.F3.0F AE /7
  CLEVICT1 m8 | MVEX.512.F3.0F AE /7

Opcode
  0xAE
Tested by
  t6242

    IiyCLEVICT1:: PROC
        IiEmitPrefix VEX.128.F3.0F, MVEX.512.F3.0F
        JMP IiyCLEVICT0.pf:
      ENDP IiyCLEVICT1::

↑ DELAY
  Stall Thread
Intel reference

  DELAY r32 | VEX.128.F3.0F.W0 AE /6
  DELAY r64 | VEX.128.F3.0F.W1 AE /6

Opcode
  0xAE

    IiyDELAY:: PROC
         IiRequire AVX512, MVEX
         IiOpEn M
         IiModRM /6
         IiEmitOpcode 0xAE
         IiDispatchFormat  r32, r64
    .r32:IiEmitPrefix VEX.128.F3.0F.W0
         RET
    .r64:IiEmitPrefix VEX.128.F3.0F.W1
         RET
      ENDP IiyDELAY::

↑ SPFLT
  Set performance monitor filtering mask
Intel reference

  SPFLT r32 | VEX.128.F2.0F.W0 AE /6
  SPFLT r64 | VEX.128.F2.0F.W1 AE /6

Opcode
  0xAE

    IiySPFLT:: PROC
         IiRequire AVX512, MVEX
         IiOpEn M
         IiEmitOpcode 0xAE
         IiModRM /6
         IiDispatchFormat  r32, r64
    .r32:IiEmitPrefix VEX.128.F2.0F.W0
         RET
    .r64:IiEmitPrefix VEX.128.F2.0F.W1
         RET
      ENDP IiySPFLT::

↑ TZCNTI
  Initialized Trailing Zero Count
Intel reference

  TZCNTI r32, r32 | VEX.128.F2.0F.W0 BC /r
  TZCNTI r64, r64 | VEX.128.F2.0F.W1 BC /r

Opcode
  0xBC
Tested by
  t6246

    IiyTZCNTI:: PROC
       IiRequire AVX512, MVEX
        IiOpEn RM
        IiEmitOpcode 0xBC
        IiModRM /r
        IiDispatchFormat  r32.r32, r64.r64
    .r32.r32:
        IiEmitPrefix VEX.128.F2.0F.W0
        RET
    .r64.r64:
        IiEmitPrefix VEX.128.F2.0F.W1
        RET
      ENDP IiyTZCNTI::

      ENDPROGRAM iiy

▲Back to the top▲