[pypy-commit] pypy default: oups. test and fix

arigo noreply at buildbot.pypy.org
Wed Dec 3 11:06:40 CET 2014


Author: Armin Rigo <arigo at tunes.org>
Branch: 
Changeset: r74793:d088178015dd
Date: 2014-12-03 11:06 +0100
http://bitbucket.org/pypy/pypy/changeset/d088178015dd/

Log:	oups. test and fix

diff --git a/rpython/jit/backend/test/runner_test.py b/rpython/jit/backend/test/runner_test.py
--- a/rpython/jit/backend/test/runner_test.py
+++ b/rpython/jit/backend/test/runner_test.py
@@ -3892,12 +3892,16 @@
 
     def test_int_signext(self):
         numbytes_cases = [1, 2] if IS_32_BIT else [1, 2, 4]
-        for numbytes in numbytes_cases:
+        for spill in ["", "force_spill(i1)"]:
+          for numbytes in numbytes_cases:
+            print (spill, numbytes)
             ops = """
             [i0]
-            i1 = int_signext(i0, %d)
-            finish(i1, descr=descr)
-            """ % numbytes
+            i1 = int_sub(i0, 0)     # force in register
+            %s
+            i2 = int_signext(i1, %d)
+            finish(i2, descr=descr)
+            """ % (spill, numbytes)
             descr = BasicFinalDescr()
             loop = parse(ops, self.cpu, namespace=locals())
             looptoken = JitCellToken()
diff --git a/rpython/jit/backend/x86/assembler.py b/rpython/jit/backend/x86/assembler.py
--- a/rpython/jit/backend/x86/assembler.py
+++ b/rpython/jit/backend/x86/assembler.py
@@ -1148,6 +1148,8 @@
         argloc, numbytesloc = arglocs
         assert isinstance(numbytesloc, ImmedLoc)
         if numbytesloc.value == 1:
+            if isinstance(argloc, RegLoc):
+                argloc = argloc.lowest8bits()
             self.mc.MOVSX8(resloc, argloc)
         elif numbytesloc.value == 2:
             self.mc.MOVSX16(resloc, argloc)


More information about the pypy-commit mailing list