Author: Armin Rigo <[email protected]>
Branch: jit-singlefloat
Changeset: r46064:cddbdea9da49
Date: 2011-07-28 18:44 +0200
http://bitbucket.org/pypy/pypy/changeset/cddbdea9da49/
Log: In-progress for 64-bit. It's actually a mess because some arguments
may also have to be passed in the 32 lower bits of xmm registers...
diff --git a/pypy/jit/backend/x86/assembler.py
b/pypy/jit/backend/x86/assembler.py
--- a/pypy/jit/backend/x86/assembler.py
+++ b/pypy/jit/backend/x86/assembler.py
@@ -2062,7 +2062,8 @@
self.mc.FSTPS_s(0)
self.mc.POP_r(eax.value)
elif IS_X86_64:
- XXX
+ # must copy from the lower 32 bits of XMM0 into eax
+ self.mc.MOVD_rx(eax.value, xmm0.value)
elif size == WORD:
assert resloc is eax or resloc is xmm0 # a full word
elif size == 0:
diff --git a/pypy/jit/backend/x86/rx86.py b/pypy/jit/backend/x86/rx86.py
--- a/pypy/jit/backend/x86/rx86.py
+++ b/pypy/jit/backend/x86/rx86.py
@@ -600,6 +600,7 @@
CVTSS2SD_xb = xmminsn('\xF3', rex_nw, '\x0F\x5A',
register(1, 8), stack_bp(2))
+ # note that MOVD is a word-sized move (i.e. really MOVQ on 64-bit)
MOVD_rx = xmminsn('\x66', rex_w, '\x0F\x7E', register(2, 8), register(1),
'\xC0')
MOVD_xr = xmminsn('\x66', rex_w, '\x0F\x6E', register(1, 8), register(2),
'\xC0')
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit