diff --git a/instrs.txt b/instrs.txt index b5d8e3c..963a7bd 100644 --- a/instrs.txt +++ b/instrs.txt @@ -1101,8 +1101,6 @@ VEX.66.W0.0f380d RVM XMM XMM XMM - VPERMILPD VEX.66.W0.0f380e RM XMM XMM - - VTESTPS VEX.66.W0.0f380f RM XMM XMM - - VTESTPD VEX.66.W0.0f3813 RM XMM XMM - - VCVTPH2PS -VEX.66.W0.0f3814 RVMR XMM XMM XMM XMM VBLENDVPS -VEX.66.W0.0f3815 RVMR XMM XMM XMM XMM VBLENDVPD VEX.66.W0.L1.0f3816 RVM XMM XMM XMM - VPERMPS VEX.66.0f3817 RM XMM XMM - - VPTEST VEX.66.W0.0f3818 RM XMM XMM32 - - VBROADCASTSS @@ -1266,6 +1264,8 @@ VEX.66.0f3a41 RVMI XMM XMM XMM IMM8 VDPPD VEX.66.0f3a42 RVMI XMM XMM XMM IMM8 VMPSADBW VEX.66.0f3a44 RVMI XMM XMM XMM IMM8 VPCLMULQDQ VEX.66.W0.L1.0f3a46 RVMI XMM XMM XMM IMM8 VPERM2I128 +VEX.66.W0.0f3a4a RVMR XMM XMM XMM XMM VBLENDVPS +VEX.66.W0.0f3a4b RVMR XMM XMM XMM XMM VBLENDVPD VEX.66.L0.0f3a60 RMI XMM XMM IMM8 - VPCMPESTRM ENC_NOSZ VEX.66.L0.0f3a61 RMI XMM XMM IMM8 - VPCMPESTRI ENC_NOSZ VEX.66.L0.0f3a62 RMI XMM XMM IMM8 - VPCMPISTRM ENC_NOSZ diff --git a/tests/test_decode.c b/tests/test_decode.c index 5b7772f..39d8e6a 100644 --- a/tests/test_decode.c +++ b/tests/test_decode.c @@ -450,6 +450,13 @@ main(int argc, char** argv) TEST("\xc4\xe2\xf1\x45\xc2", "vpsrlvq xmm0, xmm1, xmm2"); TEST("\xc4\xe2\xf5\x45\xc2", "vpsrlvq ymm0, ymm1, ymm2"); + TEST("\xc4\xe3\x71\x4a\xc2\x30", "vblendvps xmm0, xmm1, xmm2, xmm3"); + TEST32("\xc4\xe3\x75\x4a\xc2\xf0", "vblendvps ymm0, ymm1, ymm2, ymm7"); // Bit 7 is ignored + TEST64("\xc4\xe3\x75\x4a\xc2\xf0", "vblendvps ymm0, ymm1, ymm2, ymm15"); + TEST("\xc4\xe3\x71\x4b\xc2\x70", "vblendvpd xmm0, xmm1, xmm2, xmm7"); + TEST32("\xc4\xe3\x75\x4b\xc2\x80", "vblendvpd ymm0, ymm1, ymm2, ymm0"); // Bit 7 is ignored + TEST64("\xc4\xe3\x75\x4b\xc2\x80", "vblendvpd ymm0, ymm1, ymm2, ymm8"); + TEST("\xc4\xe2\x71\x92\xc0", "UD"); // Must have memory operand TEST("\xc4\xe2\x71\x92\x00", "UD"); // Must have SIB byte TEST("\xc4\xe2\x71\x92\x05\x00\x00\x00\x00", "UD"); // Must have SIB byte