From: Julian Seward Date: Fri, 7 Nov 2014 10:08:21 +0000 (+0000) Subject: Fix incorrect decoding of AVX2 insns: X-Git-Tag: svn/VALGRIND_3_11_0^2~163 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0fc63997ec90f3fb0724b1125c5c25531468cff3;p=thirdparty%2Fvalgrind.git Fix incorrect decoding of AVX2 insns: VPBROADCASTB xmm, xmm VPBROADCASTB xmm, ymm VPBROADCASTW xmm, xmm VPBROADCASTW xmm, ymm Fixes #340725. git-svn-id: svn://svn.valgrind.org/vex/trunk@2988 --- diff --git a/VEX/priv/guest_amd64_toIR.c b/VEX/priv/guest_amd64_toIR.c index 7dbd7a9176..04efa78fd5 100644 --- a/VEX/priv/guest_amd64_toIR.c +++ b/VEX/priv/guest_amd64_toIR.c @@ -28661,6 +28661,7 @@ Long dis_ESC_0F38__VEX ( IRTemp t8 = newTemp(Ity_I8); if (epartIsReg(modrm)) { UInt rE = eregOfRexRM(pfx, modrm); + delta++; DIP("vpbroadcastb %s,%s\n", nameXMMReg(rE), nameXMMReg(rG)); assign(t8, unop(Iop_32to8, getXMMRegLane32(rE, 0))); } else { @@ -28687,6 +28688,7 @@ Long dis_ESC_0F38__VEX ( IRTemp t8 = newTemp(Ity_I8); if (epartIsReg(modrm)) { UInt rE = eregOfRexRM(pfx, modrm); + delta++; DIP("vpbroadcastb %s,%s\n", nameXMMReg(rE), nameYMMReg(rG)); assign(t8, unop(Iop_32to8, getXMMRegLane32(rE, 0))); } else { @@ -28717,6 +28719,7 @@ Long dis_ESC_0F38__VEX ( IRTemp t16 = newTemp(Ity_I16); if (epartIsReg(modrm)) { UInt rE = eregOfRexRM(pfx, modrm); + delta++; DIP("vpbroadcastw %s,%s\n", nameXMMReg(rE), nameXMMReg(rG)); assign(t16, unop(Iop_32to16, getXMMRegLane32(rE, 0))); } else { @@ -28741,6 +28744,7 @@ Long dis_ESC_0F38__VEX ( IRTemp t16 = newTemp(Ity_I16); if (epartIsReg(modrm)) { UInt rE = eregOfRexRM(pfx, modrm); + delta++; DIP("vpbroadcastw %s,%s\n", nameXMMReg(rE), nameYMMReg(rG)); assign(t16, unop(Iop_32to16, getXMMRegLane32(rE, 0))); } else {