instrs: Fix VPERMQ and VPERMPD encoding

This commit is contained in:
Alexis Engelke
2022-11-27 12:41:21 +01:00
parent 7142478f41
commit 99bea8a81e
3 changed files with 8 additions and 2 deletions

View File

@@ -527,6 +527,10 @@ main(int argc, char** argv)
TEST("\xc4\xe3\x71\x4b\xc2\x70", "vblendvpd xmm0, xmm1, xmm2, xmm7"); 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 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"); 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\x79\xdb\xc1", "vaesimc xmm0, xmm1");
TEST("\xc4\xe2\x7d\xdb\xc1", "UD"); // VEX.L != 0 TEST("\xc4\xe2\x7d\xdb\xc1", "UD"); // VEX.L != 0

View File

@@ -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("\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\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("\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 RVMR encoding
TEST("\xc4\xe3\x71\x4a\xc2\x30", VBLENDVPS128rrrr, 0, FE_XMM0, FE_XMM1, FE_XMM2, FE_XMM3); TEST("\xc4\xe3\x71\x4a\xc2\x30", VBLENDVPS128rrrr, 0, FE_XMM0, FE_XMM1, FE_XMM2, FE_XMM3);

View File

@@ -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.W1.0f38be RVM Vx Hx Wx - VFNMSUB231PD F=FMA
VEX.66.W0.LIG.0f38bf RVM Vdq Hdq Wss - VFNMSUB231SS 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.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.0f3a00 RMI Vx Wx Ib - VPERMQ F=AVX2
VEX.66.W1.L1.0f3a01 VMI Hx Wx Ib - VPERMPD 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.0f3a02 RVMI Vx Hx Wx Ib VPBLENDD F=AVX2
VEX.66.W0.0f3a04 RMI Vx Wx Ib - VPERMILPS F=AVX VEX.66.W0.0f3a04 RMI Vx Wx Ib - VPERMILPS F=AVX
VEX.66.W0.0f3a05 RMI Vx Wx Ib - VPERMILPD F=AVX VEX.66.W0.0f3a05 RMI Vx Wx Ib - VPERMILPD F=AVX