Fixes to x86 compilation.

- div-long and rem-long were calling the wrong helper methods.
- genCmpFP was grabbing new src and destination registers instead of
  using the ones it was passed. Also, it wasn't writing its result back.
- gave mul-long its own assembly helper method to help it marshall its
  sources properly.
- fixed assembly of shifts for longs.
- updated IntMath's testFloatCompare to exit on the first error.

Change-Id: Iacecf07d3c7135d865728c18551c7989e7e0276b
diff --git a/src/compiler/codegen/GenCommon.cc b/src/compiler/codegen/GenCommon.cc
index 9e21aea..14eaf1d 100644
--- a/src/compiler/codegen/GenCommon.cc
+++ b/src/compiler/codegen/GenCommon.cc
@@ -2193,13 +2193,13 @@
       callOut = true;
       checkZero = true;
       retReg = rRET0;
-      funcOffset = ENTRYPOINT_OFFSET(pLdivmod);
+      funcOffset = ENTRYPOINT_OFFSET(pLdiv);
       break;
     case Instruction::REM_LONG:
     case Instruction::REM_LONG_2ADDR:
       callOut = true;
       checkZero = true;
-      funcOffset = ENTRYPOINT_OFFSET(pLdiv);
+      funcOffset = ENTRYPOINT_OFFSET(pLdivmod);
 #if defined(TARGET_ARM)
       /* NOTE - result is in rARG2/rARG3 instead of rRET0/rRET1 */
       retReg = rARG2;