Rationalise ucode generation for 4-byte moves into the MMX unit (movd).


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1506 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/cachegrind/cg_main.c b/cachegrind/cg_main.c
index 0b5cb70..63c3e62 100644
--- a/cachegrind/cg_main.c
+++ b/cachegrind/cg_main.c
@@ -539,7 +539,7 @@
             break;
 
          case MMX2_MemRd:
-            sk_assert(u_in->size == 8);
+            sk_assert(u_in->size == 4 || u_in->size == 8);
             /* fall through */
          case FPU_R:
             sk_assert(!is_LOAD && !is_STORE && !is_FPU_R && !is_FPU_W);
@@ -548,7 +548,7 @@
             break;
 
          case MMX2_MemWr:
-            sk_assert(u_in->size == 8);
+            sk_assert(u_in->size == 4 || u_in->size == 8);
             /* fall through */
          case FPU_W:
             sk_assert(!is_LOAD && !is_STORE && !is_FPU_R && !is_FPU_W);
@@ -752,7 +752,7 @@
             break;
 
          case MMX2_MemRd:
-            sk_assert(u_in->size == 8);
+            sk_assert(u_in->size == 4 || u_in->size == 8);
             /* fall through */
          case FPU_R:
             t_read      = u_in->val2;
@@ -770,7 +770,7 @@
           * As for the MOV, if it's a mod instruction it's redundant, but it's
           * not expensive and mod instructions are rare anyway. */
          case MMX2_MemWr:
-            sk_assert(u_in->size == 8);
+            sk_assert(u_in->size == 4 || u_in->size == 8);
             /* fall through */
          case STORE:
          case FPU_W: