From: Tom Hughes Date: Tue, 6 Jul 2021 12:46:28 +0000 (+0100) Subject: Ignore redundant REX.W for some MOVDQU variants X-Git-Tag: VALGRIND_3_18_0~111 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=43543527a293e626e601202ca4eeb2216f40815d;p=thirdparty%2Fvalgrind.git Ignore redundant REX.W for some MOVDQU variants Fixes BZ#438871 --- diff --git a/NEWS b/NEWS index c109b765dd..e291cb1e58 100644 --- a/NEWS +++ b/NEWS @@ -42,6 +42,7 @@ are not entered into bugzilla tend to get forgotten about or ignored. 434296 s390x: False-positive memcheck diagnostics from vector string instructions 435665 PPC ISA 3.0 copy, paste, cpabort instructions are not supported +438871 unhandled instruction bytes: 0xF3 0x49 0xF 0x6F 0x9C 0x24 0x60 0x2 0x0 0x0 435908 valgrind tries to fetch from deubginfod for files which already have debug information diff --git a/VEX/priv/guest_amd64_toIR.c b/VEX/priv/guest_amd64_toIR.c index 2b40f6a5aa..ad720873d4 100644 --- a/VEX/priv/guest_amd64_toIR.c +++ b/VEX/priv/guest_amd64_toIR.c @@ -13883,7 +13883,8 @@ Long dis_ESC_0F__SSE2 ( Bool* decode_OK, } goto decode_success; } - if (haveF3no66noF2(pfx) && sz == 4) { + if (haveF3no66noF2(pfx) + && (sz == 4 || /* ignore redundant REX.W */ sz == 8)) { /* F3 0F 6F = MOVDQU -- move from E (mem or xmm) to G (xmm). */ modrm = getUChar(delta); if (epartIsReg(modrm)) { @@ -14144,7 +14145,8 @@ Long dis_ESC_0F__SSE2 ( Bool* decode_OK, case 0x7F: /* F3 0F 7F = MOVDQU -- move from G (xmm) to E (mem or xmm). */ - if (haveF3no66noF2(pfx) && sz == 4) { + if (haveF3no66noF2(pfx) + && (sz == 4 || /* ignore redundant REX.W */ sz == 8)) { modrm = getUChar(delta); if (epartIsReg(modrm)) { goto decode_failure; /* awaiting test case */