From: Dirk Mueller Date: Thu, 20 Nov 2003 20:45:51 +0000 (+0000) Subject: add prefetch(w) support - the 3dnow! version of it. doesn't hurt X-Git-Tag: svn/VALGRIND_2_1_0~43 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=23d88489ffbb9bf2b343e60e93b6386c3b0488c9;p=thirdparty%2Fvalgrind.git add prefetch(w) support - the 3dnow! version of it. doesn't hurt supporting and its very easy. MERGE TO STABLE git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2056 --- diff --git a/coregrind/vg_to_ucode.c b/coregrind/vg_to_ucode.c index 1952da1634..06e5dcfbed 100644 --- a/coregrind/vg_to_ucode.c +++ b/coregrind/vg_to_ucode.c @@ -6363,7 +6363,9 @@ static Addr disInstr ( UCodeBlock* cb, Addr eip, Bool* isEnd ) /* =-=-=-=-=-=-=-=-=- MMXery =-=-=-=-=-=-=-=-=-=-= */ + case 0x0D: /* PREFETCH / PREFETCHW - 3Dnow!ery*/ case 0x18: /* PREFETCHT0/PREFETCHT1/PREFETCHT2/PREFETCHNTA */ + vg_assert(sz == 4); modrm = getUChar(eip); if (epartIsReg(modrm)) { @@ -6375,12 +6377,21 @@ static Addr disInstr ( UCodeBlock* cb, Addr eip, Bool* isEnd ) eip += lengthAMode(eip); if (dis) { UChar* hintstr; - switch (gregOfRM(modrm)) { - case 0: hintstr = "nta"; break; - case 1: hintstr = "t0"; break; - case 2: hintstr = "t1"; break; - case 3: hintstr = "t2"; break; - default: goto decode_failure; + if(opc == 0x0D) { + switch (gregOfRM(modrm)) { + case 0: hintstr = ""; break; + case 1: hintstr = "w"; break; + default: goto decode_failure; + } + } + else { + switch (gregOfRM(modrm)) { + case 0: hintstr = "nta"; break; + case 1: hintstr = "t0"; break; + case 2: hintstr = "t1"; break; + case 3: hintstr = "t2"; break; + default: goto decode_failure; + } } VG_(printf)("prefetch%s ...\n", hintstr); }