X86_64: Proper IMT fix

Unfortunately, 97184: X86_64: Pass 'hidden method index' in EAX wasn't
correct.  TargetReg(kInvokeTgt) is ALSO EAX, and so invoke-interface
blows up, since the saved index is overwritten by the generated code.

Change kInvokeTgt to EDI (the same as ARG0).

Change-Id: I4b1d260237274ee26b9283d810d1b74484ea59af
Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
diff --git a/compiler/dex/quick/x86/target_x86.cc b/compiler/dex/quick/x86/target_x86.cc
index ce7229b..ec165af 100644
--- a/compiler/dex/quick/x86/target_x86.cc
+++ b/compiler/dex/quick/x86/target_x86.cc
@@ -730,6 +730,7 @@
     rX86_FARG5 = fr5;
     rX86_FARG6 = fr6;
     rX86_FARG7 = fr7;
+    rs_rX86_INVOKE_TGT = rs_rDI;
   } else {
     rs_rX86_SP = rs_rX86_SP_32;
 
@@ -755,13 +756,13 @@
     rX86_FARG1 = rCX;
     rX86_FARG2 = rDX;
     rX86_FARG3 = rBX;
+    rs_rX86_INVOKE_TGT = rs_rAX;
     // TODO(64): Initialize with invalid reg
 //    rX86_ARG4 = RegStorage::InvalidReg();
 //    rX86_ARG5 = RegStorage::InvalidReg();
   }
   rs_rX86_RET0 = rs_rAX;
   rs_rX86_RET1 = rs_rDX;
-  rs_rX86_INVOKE_TGT = rs_rAX;
   rs_rX86_COUNT = rs_rCX;
   rX86_RET0 = rAX;
   rX86_RET1 = rDX;