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