Author: Armin Rigo <ar...@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) _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit