instrs: Fix VPSRA/VPSRL/VPSLL r/m operand size

This commit is contained in:
Alexis Engelke
2022-12-03 15:06:54 +01:00
parent 003a11ff12
commit e70118a0d7
2 changed files with 57 additions and 8 deletions

View File

@@ -633,6 +633,55 @@ main(int argc, char** argv)
TEST("\xc5\xf9\xf7\x00", "UD"); // must have memory operand
TEST("\xc5\xfd\xf7\xc1", "UD"); // VEX.L != 0
TEST("\xc5\xf1\xe1\xc2", "vpsraw xmm0, xmm1, xmm2");
TEST32("\xc5\xf1\xe1\x00", "vpsraw xmm0, xmm1, xmmword ptr [eax]");
TEST64("\xc5\xf1\xe1\x00", "vpsraw xmm0, xmm1, xmmword ptr [rax]");
TEST("\xc5\xf5\xe1\xc2", "vpsraw ymm0, ymm1, xmm2");
TEST32("\xc5\xf5\xe1\x00", "vpsraw ymm0, ymm1, xmmword ptr [eax]");
TEST64("\xc5\xf5\xe1\x00", "vpsraw ymm0, ymm1, xmmword ptr [rax]");
TEST("\xc5\xf1\xe2\xc2", "vpsrad xmm0, xmm1, xmm2");
TEST32("\xc5\xf1\xe2\x00", "vpsrad xmm0, xmm1, xmmword ptr [eax]");
TEST64("\xc5\xf1\xe2\x00", "vpsrad xmm0, xmm1, xmmword ptr [rax]");
TEST("\xc5\xf5\xe2\xc2", "vpsrad ymm0, ymm1, xmm2");
TEST32("\xc5\xf5\xe2\x00", "vpsrad ymm0, ymm1, xmmword ptr [eax]");
TEST64("\xc5\xf5\xe2\x00", "vpsrad ymm0, ymm1, xmmword ptr [rax]");
TEST("\xc5\xf1\xd1\xc2", "vpsrlw xmm0, xmm1, xmm2");
TEST32("\xc5\xf1\xd1\x00", "vpsrlw xmm0, xmm1, xmmword ptr [eax]");
TEST64("\xc5\xf1\xd1\x00", "vpsrlw xmm0, xmm1, xmmword ptr [rax]");
TEST("\xc5\xf5\xd1\xc2", "vpsrlw ymm0, ymm1, xmm2");
TEST32("\xc5\xf5\xd1\x00", "vpsrlw ymm0, ymm1, xmmword ptr [eax]");
TEST64("\xc5\xf5\xd1\x00", "vpsrlw ymm0, ymm1, xmmword ptr [rax]");
TEST("\xc5\xf1\xd2\xc2", "vpsrld xmm0, xmm1, xmm2");
TEST32("\xc5\xf1\xd2\x00", "vpsrld xmm0, xmm1, xmmword ptr [eax]");
TEST64("\xc5\xf1\xd2\x00", "vpsrld xmm0, xmm1, xmmword ptr [rax]");
TEST("\xc5\xf5\xd2\xc2", "vpsrld ymm0, ymm1, xmm2");
TEST32("\xc5\xf5\xd2\x00", "vpsrld ymm0, ymm1, xmmword ptr [eax]");
TEST64("\xc5\xf5\xd2\x00", "vpsrld ymm0, ymm1, xmmword ptr [rax]");
TEST("\xc5\xf1\xd3\xc2", "vpsrlq xmm0, xmm1, xmm2");
TEST32("\xc5\xf1\xd3\x00", "vpsrlq xmm0, xmm1, xmmword ptr [eax]");
TEST64("\xc5\xf1\xd3\x00", "vpsrlq xmm0, xmm1, xmmword ptr [rax]");
TEST("\xc5\xf5\xd3\xc2", "vpsrlq ymm0, ymm1, xmm2");
TEST32("\xc5\xf5\xd3\x00", "vpsrlq ymm0, ymm1, xmmword ptr [eax]");
TEST64("\xc5\xf5\xd3\x00", "vpsrlq ymm0, ymm1, xmmword ptr [rax]");
TEST("\xc5\xf1\xf1\xc2", "vpsllw xmm0, xmm1, xmm2");
TEST32("\xc5\xf1\xf1\x00", "vpsllw xmm0, xmm1, xmmword ptr [eax]");
TEST64("\xc5\xf1\xf1\x00", "vpsllw xmm0, xmm1, xmmword ptr [rax]");
TEST("\xc5\xf5\xf1\xc2", "vpsllw ymm0, ymm1, xmm2");
TEST32("\xc5\xf5\xf1\x00", "vpsllw ymm0, ymm1, xmmword ptr [eax]");
TEST64("\xc5\xf5\xf1\x00", "vpsllw ymm0, ymm1, xmmword ptr [rax]");
TEST("\xc5\xf1\xf2\xc2", "vpslld xmm0, xmm1, xmm2");
TEST32("\xc5\xf1\xf2\x00", "vpslld xmm0, xmm1, xmmword ptr [eax]");
TEST64("\xc5\xf1\xf2\x00", "vpslld xmm0, xmm1, xmmword ptr [rax]");
TEST("\xc5\xf5\xf2\xc2", "vpslld ymm0, ymm1, xmm2");
TEST32("\xc5\xf5\xf2\x00", "vpslld ymm0, ymm1, xmmword ptr [eax]");
TEST64("\xc5\xf5\xf2\x00", "vpslld ymm0, ymm1, xmmword ptr [rax]");
TEST("\xc5\xf1\xf3\xc2", "vpsllq xmm0, xmm1, xmm2");
TEST32("\xc5\xf1\xf3\x00", "vpsllq xmm0, xmm1, xmmword ptr [eax]");
TEST64("\xc5\xf1\xf3\x00", "vpsllq xmm0, xmm1, xmmword ptr [rax]");
TEST("\xc5\xf5\xf3\xc2", "vpsllq ymm0, ymm1, xmm2");
TEST32("\xc5\xf5\xf3\x00", "vpsllq ymm0, ymm1, xmmword ptr [eax]");
TEST64("\xc5\xf5\xf3\x00", "vpsllq ymm0, ymm1, xmmword ptr [rax]");
TEST("\xc4\xe3\x79\x14\xc0\x00", "vpextrb eax, xmm0, 0x0");
TEST("\xc4\xe3\xf9\x14\xc0\x00", "vpextrb eax, xmm0, 0x0");
TEST("\xc4\xe3\x79\x15\xc0\x00", "vpextrw eax, xmm0, 0x0");

View File

@@ -1047,9 +1047,9 @@ VEX.NP.0fc6 RVMI Vx Hx Wx Ib VSHUFPS F=AVX
VEX.66.0fc6 RVMI Vx Hx Wx Ib VSHUFPD F=AVX
VEX.NP.0fd0 RVM Vx Hx Wx - VADDSUBPS F=AVX
VEX.66.0fd0 RVM Vx Hx Wx - VADDSUBPD F=AVX
VEX.66.0fd1 RVM Vx Hx Wx - VPSRLW F=AVX
VEX.66.0fd2 RVM Vx Hx Wx - VPSRLD F=AVX
VEX.66.0fd3 RVM Vx Hx Wx - VPSRLQ F=AVX
VEX.66.0fd1 RVM Vx Hx Wdq - VPSRLW F=AVX
VEX.66.0fd2 RVM Vx Hx Wdq - VPSRLD F=AVX
VEX.66.0fd3 RVM Vx Hx Wdq - VPSRLQ F=AVX
VEX.66.0fd4 RVM Vx Hx Wx - VPADDQ F=AVX
VEX.66.0fd5 RVM Vx Hx Wx - VPMULLW F=AVX
VEX.66.L0.0fd6 MR Wq Vq - - VMOVQ F=AVX
@@ -1063,8 +1063,8 @@ VEX.66.0fdd RVM Vx Hx Wx - VPADDUSW F=AVX
VEX.66.0fde RVM Vx Hx Wx - VPMAXUB F=AVX
VEX.66.0fdf RVM Vx Hx Wx - VPANDN F=AVX
VEX.66.0fe0 RVM Vx Hx Wx - VPAVGB F=AVX
VEX.66.0fe1 RVM Vx Hx Wx - VPSRAW F=AVX
VEX.66.0fe2 RVM Vx Hx Wx - VPSRAD F=AVX
VEX.66.0fe1 RVM Vx Hx Wdq - VPSRAW F=AVX
VEX.66.0fe2 RVM Vx Hx Wdq - VPSRAD F=AVX
VEX.66.0fe3 RVM Vx Hx Wx - VPAVGW F=AVX
VEX.66.0fe4 RVM Vx Hx Wx - VPMULHUW F=AVX
VEX.66.0fe5 RVM Vx Hx Wx - VPMULHW F=AVX
@@ -1081,9 +1081,9 @@ VEX.66.0fed RVM Vx Hx Wx - VPADDSW F=AVX
VEX.66.0fee RVM Vx Hx Wx - VPMAXSW F=AVX
VEX.66.0fef RVM Vx Hx Wx - VPXOR F=AVX
VEX.F2.0ff0 RM Vx Wx - - VLDDQU F=AVX
VEX.66.0ff1 RVM Vx Hx Wx - VPSLLW F=AVX
VEX.66.0ff2 RVM Vx Hx Wx - VPSLLD F=AVX
VEX.66.0ff3 RVM Vx Hx Wx - VPSLLQ F=AVX
VEX.66.0ff1 RVM Vx Hx Wdq - VPSLLW F=AVX
VEX.66.0ff2 RVM Vx Hx Wdq - VPSLLD F=AVX
VEX.66.0ff3 RVM Vx Hx Wdq - VPSLLQ F=AVX
VEX.66.0ff4 RVM Vx Hx Wx - VPMULUDQ F=AVX
VEX.66.0ff5 RVM Vx Hx Wx - VPMADDWD F=AVX
VEX.66.0ff6 RVM Vx Hx Wx - VPSADBW F=AVX