Add 3rd argument register to X86.

Implement more instructions.

Change-Id: I3af7bbaf18eedc6537f1cfc2d57c4f6106fb5164
diff --git a/src/compiler/codegen/GenInvoke.cc b/src/compiler/codegen/GenInvoke.cc
index 037a9bb..ebc8bc2 100644
--- a/src/compiler/codegen/GenInvoke.cc
+++ b/src/compiler/codegen/GenInvoke.cc
@@ -51,13 +51,8 @@
 
     if (cUnit->numIns == 0)
         return;
-#if !defined(TARGET_X86)
     const int numArgRegs = 3;
     static int argRegs[] = {rARG1, rARG2, rARG3};
-#else
-    const int numArgRegs = 2;
-    static int argRegs[] = {rARG1, rARG2};
-#endif
     int startVReg = cUnit->numDalvikRegisters - cUnit->numIns;
     /*
      * Copy incoming arguments to their proper home locations.
@@ -425,11 +420,7 @@
                 reg = rlArg.highReg;
             } else {
                 // rARG2 & rARG3 can safely be used here
-#if defined(TARGET_X86)
-                UNIMPLEMENTED(FATAL);
-#else
                 reg = rARG3;
-#endif
                 loadWordDisp(cUnit, rSP,
                              oatSRegOffset(cUnit, rlArg.sRegLow) + 4, reg);
                 callState = nextCallInsn(cUnit, mir, callState, dexIdx,
@@ -453,12 +444,8 @@
                 highReg = rlArg.highReg;
             } else {
                 lowReg = rARG2;
-#if defined(TARGET_X86)
-                UNIMPLEMENTED(FATAL);
-#else
-                highReg = rARG3;
-#endif
                 if (rlArg.wide) {
+                    highReg = rARG3;
                     loadValueDirectWideFixed(cUnit, rlArg, lowReg, highReg);
                 } else {
                     loadValueDirectFixed(cUnit, rlArg, lowReg);