Fix x86 long right shifting and int-to-float/double.

Right shifting a long by 32 bits or more now works correctly.

Also, uses a normal register for the src of int-to-float and
int-to-double instead of an fp reg.

Change-Id: Idaf8a398f50314eb4fc302acfbaeddfce25380b1
diff --git a/src/oat/runtime/x86/runtime_support_x86.S b/src/oat/runtime/x86/runtime_support_x86.S
index e58efd3..9164800 100644
--- a/src/oat/runtime/x86/runtime_support_x86.S
+++ b/src/oat/runtime/x86/runtime_support_x86.S
@@ -457,8 +457,8 @@
     sar  %cl,%edx
     test LITERAL(32),%cl
     jz  1f
-    mov %eax, %edx
-    sar LITERAL(31), %eax
+    mov %edx, %eax
+    sar LITERAL(31), %edx
 1:
     ret
 
@@ -469,8 +469,8 @@
     shr  %cl,%edx
     test LITERAL(32),%cl
     jz  1f
-    mov %eax, %edx
-    xor %eax, %eax
+    mov %edx, %eax
+    xor %edx, %edx
 1:
     ret