decode: Support half vector size

This is realized by two changes: first, GP and vector operand size are
completely separated using one extra bit. If the operand size of an
instruction is derived from VEX.L (or EVEX.L'L), then the "opsize" bits
indicate how to derive a smaller vector size (half/quarter/eighth).
This commit is contained in:
Alexis Engelke
2022-11-27 18:04:15 +01:00
parent f565f09f9d
commit 4abad24610
3 changed files with 79 additions and 61 deletions

View File

@@ -964,9 +964,8 @@ VEX.NP.0f59 RVM Vps Hps Wps - VMULPS F=AVX
VEX.66.0f59 RVM Vpd Hpd Wpd - VMULPD F=AVX
VEX.F3.LIG.0f59 RVM Vdq Hdq Wss - VMULSS F=AVX
VEX.F2.LIG.0f59 RVM Vdq Hdq Wsd - VMULSD F=AVX
VEX.NP.L0.0f5a RM Vpd Wq - - VCVTPS2PD F=AVX
VEX.NP.L1.0f5a RM Vpd Wdq - - VCVTPS2PD F=AVX
VEX.66.0f5a RM Vdq Wpd - - VCVTPD2PS F=AVX
VEX.NP.0f5a RM Vpd Wh - - VCVTPS2PD F=AVX
VEX.66.0f5a RM Vh Wpd - - VCVTPD2PS F=AVX
VEX.F3.LIG.0f5a RVM Vdq Hdq Wss - VCVTSS2SD F=AVX
VEX.F2.LIG.0f5a RVM Vdq Hdq Wsd - VCVTSD2SS F=AVX
VEX.NP.0f5b RM Vps Vx - - VCVTDQ2PS F=AVX
@@ -1069,10 +1068,9 @@ VEX.66.0fe2 RVM Vx Hx Wx - 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
VEX.66.0fe6 RM Vdq Wx - - VCVTTPD2DQ F=AVX
VEX.F3.L0.0fe6 RM Vx Wq - - VCVTDQ2PD F=AVX
VEX.F3.L1.0fe6 RM Vx Wdq - - VCVTDQ2PD F=AVX
VEX.F2.0fe6 RM Vdq Wx - - VCVTPD2DQ F=AVX
VEX.66.0fe6 RM Vh Wx - - VCVTTPD2DQ F=AVX
VEX.F3.0fe6 RM Vx Wh - - VCVTDQ2PD F=AVX
VEX.F2.0fe6 RM Vh Wx - - VCVTPD2DQ F=AVX
VEX.66.0fe7/m MR Mx Vx - - VMOVNTDQ F=AVX
VEX.66.0fe8 RVM Vx Hx Wx - VPSUBSB F=AVX
VEX.66.0fe9 RVM Vx Hx Wx - VPSUBSW F=AVX
@@ -1113,8 +1111,7 @@ VEX.66.W0.0f380c RVM Vx Hx Wx - VPERMILPS F=AVX
VEX.66.W0.0f380d RVM Vx Hx Wx - VPERMILPD F=AVX
VEX.66.W0.0f380e RM Vx Wx - - VTESTPS F=AVX
VEX.66.W0.0f380f RM Vx Wx - - VTESTPD F=AVX
# TODO: Wx is actually half the size
VEX.66.W0.0f3813 RM Vx Wx - - VCVTPH2PS F=F16C
VEX.66.W0.0f3813 RM Vx Wh - - VCVTPH2PS F=F16C
VEX.66.W0.L1.0f3816 RVM Vx Hx Wx - VPERMPS F=AVX2
VEX.66.0f3817 RM Vx Wx - - VPTEST F=AVX EFL=0--0m00m
VEX.66.W0.0f3818 RM Vx Wd - - VBROADCASTSS F=AVX
@@ -1172,13 +1169,11 @@ VEX.66.W0.0f388e MVR Wx Hx Vx - VPMASKMOVD F=AVX2
VEX.66.W1.0f388e MVR Wx Hx Vx - VPMASKMOVQ F=AVX2
VEX.66.W0.0f3890/m RMV Vx Md Hx - VPGATHERDD VSIB F=AVX2
VEX.66.W1.0f3890/m RMV Vx Mq Hx - VPGATHERDQ VSIB F=AVX2
VEX.66.W0.L0.0f3891/m RMV Vq Md Hq - VPGATHERQD VSIB F=AVX2
VEX.66.W0.L1.0f3891/m RMV Vdq Md Hdq - VPGATHERQD VSIB F=AVX2
VEX.66.W0.0f3891/m RMV Vh Md Hh - VPGATHERQD VSIB F=AVX2
VEX.66.W1.0f3891/m RMV Vx Mq Hx - VPGATHERQQ VSIB F=AVX2
VEX.66.W0.0f3892/m RMV Vx Md Hx - VGATHERDPS VSIB F=AVX2
VEX.66.W1.0f3892/m RMV Vx Mq Hx - VGATHERDPD VSIB F=AVX2
VEX.66.W0.L0.0f3893/m RMV Vq Md Hq - VGATHERQPS VSIB F=AVX2
VEX.66.W0.L1.0f3893/m RMV Vdq Md Hdq - VGATHERQPS VSIB F=AVX2
VEX.66.W0.0f3893/m RMV Vh Md Hh - VGATHERQPS VSIB F=AVX2
VEX.66.W1.0f3893/m RMV Vx Mq Hx - VGATHERQPD VSIB F=AVX2
VEX.66.W0.0f3896 RVM Vx Hx Wx - VFMADDSUB132PS F=FMA
VEX.66.W1.0f3896 RVM Vx Hx Wx - VFMADDSUB132PD F=FMA
@@ -1265,8 +1260,7 @@ VEX.66.W1.L0.0f3a16 MRI Eq Vx Ib - VPEXTRQ O64 F=AVX ENC_NOSZ
VEX.66.L0.0f3a17 MRI Ed Vx Ib - VEXTRACTPS F=AVX ENC_NOSZ
VEX.66.W0.L1.0f3a18 RVMI Vx Hx Wdq Ib VINSERTF128 F=AVX ENC_NOSZ
VEX.66.W0.L1.0f3a19 MRI Wdq Vx Ib - VEXTRACTF128 F=AVX ENC_NOSZ
# TODO: Wx is actually half the size
VEX.66.W0.0f3a1d MRI Wx Hx Ib - VCVTPS2PH F=F16C
VEX.66.W0.0f3a1d MRI Wh Hx Ib - VCVTPS2PH F=F16C
VEX.66.WIG.L0.0f3a20 RVMI Vx Hx Eb Ib VPINSRB F=AVX ENC_NOSZ
VEX.66.L0.0f3a21 RVMI Vx Hx Wd Ib VINSERTPS F=AVX ENC_NOSZ
VEX.66.W0.L0.0f3a22 RVMI Vdq Hdq Ey Ib VPINSRD F=AVX ENC_NOSZ
@@ -1613,8 +1607,7 @@ VEX.F3.W0.0f38b0/m RM Vx Mx - - VCVTNEEBF162PS F=AVX-NE-CONVERT
VEX.F2.W0.0f38b0/m RM Vx Mx - - VCVTNEOBF162PS F=AVX-NE-CONVERT
VEX.66.W0.0f38b1/m RM Vx Mw - - VBCSTNESH2PS F=AVX-NE-CONVERT
VEX.F3.W0.0f38b1/m RM Vx Mw - - VBCSTNEBF162PS F=AVX-NE-CONVERT
# TODO: Vdq is actually half the vector size
VEX.F3.W0.0f3872 RM Vdq Wps - - VCVTNEPS2BF16 F=AVX-NE-CONVERT
VEX.F3.W0.0f3872 RM Vh Wps - - VCVTNEPS2BF16 F=AVX-NE-CONVERT
# AVX-IFMA
VEX.66.W1.0f38b4 RVM Vx Hx Wx - VPMADD52LUQ F=AVX-IFMA