instrs: Fix VPERMQ and VPERMPD encoding
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user