Fix many amd64 guest/host cases required to run test/test-amd64.c.


git-svn-id: svn://svn.valgrind.org/vex/trunk@929 8f6e269a-dfd6-0310-a8e1-e2731360e62c
diff --git a/priv/guest-amd64/ghelpers.c b/priv/guest-amd64/ghelpers.c
index b05d80d..797c34f 100644
--- a/priv/guest-amd64/ghelpers.c
+++ b/priv/guest-amd64/ghelpers.c
@@ -498,6 +498,7 @@
       case AMD64G_CC_OP_ADCB:   ACTIONS_ADC( 8,  UChar  );
       case AMD64G_CC_OP_ADCW:   ACTIONS_ADC( 16, UShort );
       case AMD64G_CC_OP_ADCL:   ACTIONS_ADC( 32, UInt   );
+      case AMD64G_CC_OP_ADCQ:   ACTIONS_ADC( 64, ULong  );
 
       case AMD64G_CC_OP_SUBB:   ACTIONS_SUB(  8, UChar  );
       case AMD64G_CC_OP_SUBW:   ACTIONS_SUB( 16, UShort );
@@ -507,6 +508,7 @@
       case AMD64G_CC_OP_SBBB:   ACTIONS_SBB(  8, UChar  );
       case AMD64G_CC_OP_SBBW:   ACTIONS_SBB( 16, UShort );
       case AMD64G_CC_OP_SBBL:   ACTIONS_SBB( 32, UInt   );
+      case AMD64G_CC_OP_SBBQ:   ACTIONS_SBB( 64, ULong  );
 
       case AMD64G_CC_OP_LOGICB: ACTIONS_LOGIC(  8, UChar  );
       case AMD64G_CC_OP_LOGICW: ACTIONS_LOGIC( 16, UShort );
@@ -536,10 +538,12 @@
       case AMD64G_CC_OP_ROLB:   ACTIONS_ROL(  8, UChar  );
       case AMD64G_CC_OP_ROLW:   ACTIONS_ROL( 16, UShort );
       case AMD64G_CC_OP_ROLL:   ACTIONS_ROL( 32, UInt   );
+      case AMD64G_CC_OP_ROLQ:   ACTIONS_ROL( 64, ULong  );
 
       case AMD64G_CC_OP_RORB:   ACTIONS_ROR(  8, UChar  );
       case AMD64G_CC_OP_RORW:   ACTIONS_ROR( 16, UShort );
       case AMD64G_CC_OP_RORL:   ACTIONS_ROR( 32, UInt   );
+      case AMD64G_CC_OP_RORQ:   ACTIONS_ROR( 64, ULong  );
 
       case AMD64G_CC_OP_UMULB:  ACTIONS_UMUL(  8, UChar,  UShort );
       case AMD64G_CC_OP_UMULW:  ACTIONS_UMUL( 16, UShort, UInt   );
@@ -716,8 +720,8 @@
    vassert(dflag == 1 || dflag == -1);
    if (dflag == -1)
       rflags |= (1<<10);
-//   if (vex_state->guest_IDFLAG == 1)
-//      rflags |= (1<<21);
+   if (vex_state->guest_IDFLAG == 1)
+      rflags |= (1<<21);
    return rflags;
 }
 
@@ -1175,7 +1179,7 @@
    vex_state->guest_CC_NDEP = 0;
 
    vex_state->guest_DFLAG   = 1; /* forwards */
-   // XXX: add more here later, for D/ID flags
+   vex_state->guest_IDFLAG  = 0;
 
    // HACK
    vex_state->guest_FS_ZERO = 0;
@@ -1238,7 +1242,7 @@
 
           /* Describe any sections to be regarded by Memcheck as
              'always-defined'. */
-          .n_alwaysDefd = 5,
+          .n_alwaysDefd = 7,
 
           /* flags thunk: OP and NDEP are always defd, whereas DEP1
              and DEP2 have to be tracked.  See detailed comment in
@@ -1246,23 +1250,23 @@
           .alwaysDefd
              = { /*  0 */ ALWAYSDEFD(guest_CC_OP),
                  /*  1 */ ALWAYSDEFD(guest_CC_NDEP),
-		 // /*  2 */ ALWAYSDEFD(guest_DFLAG),
-                 // /*  3 */ ALWAYSDEFD(guest_IDFLAG),
-                 /*  3 */ ALWAYSDEFD(guest_RIP),
-                 /*  4 */ ALWAYSDEFD(guest_FS_ZERO),
-                 // /*  5 */ ALWAYSDEFD(guest_FTOP),
-                 // /*  6 */ ALWAYSDEFD(guest_FPTAG),
-                 // /*  7 */ ALWAYSDEFD(guest_FPROUND),
-                 // /*  8 */ ALWAYSDEFD(guest_FC3210),
-                 // /*  9 */ ALWAYSDEFD(guest_CS),
-                 // /* 10 */ ALWAYSDEFD(guest_DS),
-                 // /* 11 */ ALWAYSDEFD(guest_ES),
-                 // /* 12 */ ALWAYSDEFD(guest_FS),
-                 // /* 13 */ ALWAYSDEFD(guest_GS),
-                 // /* 14 */ ALWAYSDEFD(guest_SS),
-                 // /* 15 */ ALWAYSDEFD(guest_LDT),
-                 // /* 16 */ ALWAYSDEFD(guest_GDT),
-                 /* 4 */ ALWAYSDEFD(guest_EMWARN)
+		 /*  2 */ ALWAYSDEFD(guest_DFLAG),
+                 /*  3 */ ALWAYSDEFD(guest_IDFLAG),
+                 /*  4 */ ALWAYSDEFD(guest_RIP),
+                 /*  5 */ ALWAYSDEFD(guest_FS_ZERO),
+                 // /* */ ALWAYSDEFD(guest_FTOP),
+                 // /* */ ALWAYSDEFD(guest_FPTAG),
+                 // /* */ ALWAYSDEFD(guest_FPROUND),
+                 // /* */ ALWAYSDEFD(guest_FC3210),
+                 // /* */ ALWAYSDEFD(guest_CS),
+                 // /* */ ALWAYSDEFD(guest_DS),
+                 // /* */ ALWAYSDEFD(guest_ES),
+                 // /* */ ALWAYSDEFD(guest_FS),
+                 // /* */ ALWAYSDEFD(guest_GS),
+                 // /* */ ALWAYSDEFD(guest_SS),
+                 // /* */ ALWAYSDEFD(guest_LDT),
+                 // /* */ ALWAYSDEFD(guest_GDT),
+                 /*  6 */ ALWAYSDEFD(guest_EMWARN)
                }
         };