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 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/coregrind/vg_to_ucode.c b/coregrind/vg_to_ucode.c
index 1952da1..06e5dcf 100644
--- a/coregrind/vg_to_ucode.c
+++ b/coregrind/vg_to_ucode.c
@@ -6363,7 +6363,9 @@
 
       /* =-=-=-=-=-=-=-=-=- 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 @@
          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);
          }