diff --git a/decode-test.c b/decode-test.c index f1f5638..32b5df9 100644 --- a/decode-test.c +++ b/decode-test.c @@ -527,6 +527,10 @@ main(int argc, char** argv) 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"); + TEST32("\xc4\xc3\xfd\x00\xc9\x12", "vpermq ymm1, ymm1, 0x12"); // VEX.B ignored + TEST64("\xc4\xc3\xfd\x00\xc9\x12", "vpermq ymm1, ymm9, 0x12"); + TEST("\xc4\xc3\x7d\x00\xc9\x12", "UD"); // VEX.W = 0 is UD + TEST("\xc4\xe3\xfd\x01\xcf\x12", "vpermpd ymm1, ymm7, 0x12"); TEST("\xc4\xe2\x79\xdb\xc1", "vaesimc xmm0, xmm1"); TEST("\xc4\xe2\x7d\xdb\xc1", "UD"); // VEX.L != 0 diff --git a/encode-test.inc b/encode-test.inc index c402b88..e014a63 100644 --- a/encode-test.inc +++ b/encode-test.inc @@ -213,6 +213,8 @@ TEST("\xc4\xe2\x71\x2e\x17", VMASKMOVPS128mrr, 0, FE_MEM(FE_DI, 0, FE_NOREG, 0), TEST("\xc4\xe2\x75\x2e\x17", VMASKMOVPS256mrr, 0, FE_MEM(FE_DI, 0, FE_NOREG, 0), FE_XMM1, FE_XMM2); TEST("\xc5\xf1\x71\xd7\x02", VPSRLW128rri, 0, FE_XMM1, FE_XMM7, 0x2); TEST("\xc5\xf5\x71\xd7\x02", VPSRLW256rri, 0, FE_XMM1, FE_XMM7, 0x2); +TEST("\xc4\xc3\xfd\x00\xc9\x12", VPERMQ256rri, 0, FE_XMM1, FE_XMM9, 0x12); +TEST("\xc4\xe3\xfd\x01\xcf\x12", VPERMPD256rri, 0, FE_XMM1, FE_XMM7, 0x12); // Test RVMR encoding TEST("\xc4\xe3\x71\x4a\xc2\x30", VBLENDVPS128rrrr, 0, FE_XMM0, FE_XMM1, FE_XMM2, FE_XMM3); diff --git a/instrs.txt b/instrs.txt index a474044..da23bc9 100644 --- a/instrs.txt +++ b/instrs.txt @@ -1240,8 +1240,8 @@ VEX.66.W0.0f38be RVM Vx Hx Wx - VFNMSUB231PS F=FMA VEX.66.W1.0f38be RVM Vx Hx Wx - VFNMSUB231PD F=FMA VEX.66.W0.LIG.0f38bf RVM Vdq Hdq Wss - VFNMSUB231SS F=FMA VEX.66.W1.LIG.0f38bf RVM Vdq Hdq Wsd - VFNMSUB231SD F=FMA -VEX.66.W1.L1.0f3a00 VMI Hx Wx Ib - VPERMQ F=AVX2 -VEX.66.W1.L1.0f3a01 VMI Hx Wx Ib - VPERMPD F=AVX2 +VEX.66.W1.L1.0f3a00 RMI Vx Wx Ib - VPERMQ F=AVX2 +VEX.66.W1.L1.0f3a01 RMI Vx Wx Ib - VPERMPD F=AVX2 VEX.66.W0.0f3a02 RVMI Vx Hx Wx Ib VPBLENDD F=AVX2 VEX.66.W0.0f3a04 RMI Vx Wx Ib - VPERMILPS F=AVX VEX.66.W0.0f3a05 RMI Vx Wx Ib - VPERMILPD F=AVX