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

Reply via email to