[pypy-commit] pypy fix-longevity: (plan_rich, remi) add test for call distance calculation
Raemi
pypy.commits at gmail.com
Tue Feb 23 10:51:54 EST 2016
Author: Remi Meier <remi.meier at gmail.com>
Branch: fix-longevity
Changeset: r82448:fa5e185b9757
Date: 2016-02-23 16:50 +0100
http://bitbucket.org/pypy/pypy/changeset/fa5e185b9757/
Log: (plan_rich,remi) add test for call distance calculation
diff --git a/rpython/jit/backend/llsupport/test/test_regalloc_integration.py b/rpython/jit/backend/llsupport/test/test_regalloc_integration.py
--- a/rpython/jit/backend/llsupport/test/test_regalloc_integration.py
+++ b/rpython/jit/backend/llsupport/test/test_regalloc_integration.py
@@ -7,7 +7,8 @@
TargetToken
from rpython.jit.metainterp.resoperation import rop
from rpython.jit.backend.detect_cpu import getcpuclass
-from rpython.jit.backend.llsupport.regalloc import is_comparison_or_ovf_op
+from rpython.jit.backend.llsupport.regalloc import is_comparison_or_ovf_op,\
+ compute_var_live_ranges
from rpython.jit.tool.oparser import parse
from rpython.rtyper.lltypesystem import lltype, llmemory
from rpython.rtyper.annlowlevel import llhelper
@@ -155,6 +156,40 @@
return self.cpu.get_latest_descr(self.deadframe)
class TestRegallocSimple(BaseTestRegalloc):
+ def test_compute_live_ranges(self):
+ ops = '''
+ [i0]
+ label(i0, descr=targettoken)
+ i1 = int_add(i0, 1)
+ i2 = int_lt(i1, 20)
+ guard_true(i2) [i1]
+ jump(i1, descr=targettoken)
+ '''
+ loop = self.parse(ops)
+ lrs = compute_var_live_ranges(loop.inputargs, loop.operations)
+ assert lrs.longevity[loop.operations[1]] == (1, 4)
+ assert lrs.longevity[loop.operations[2]] == (2, 3)
+ assert lrs.last_real_usage[loop.operations[1]] == 2
+ assert lrs.last_real_usage[loop.operations[2]] == 3
+ assert all([i < 0 for i in lrs.dist_to_next_call])
+
+ def test_compute_call_distances(self):
+ ops = '''
+ [i0]
+ label(i0, descr=targettoken)
+ i1 = int_add(i0, 1)
+ i2 = int_lt(i1, 20)
+ call_n(ConstClass(raising_fptr), i0, descr=raising_calldescr)
+ guard_true(i2) [i1]
+ call_n(ConstClass(raising_fptr), i0, descr=raising_calldescr)
+ guard_true(i2) [i1]
+ jump(i1, descr=targettoken)
+ '''
+ loop = self.parse(ops)
+ lrs = compute_var_live_ranges(loop.inputargs, loop.operations)
+ assert lrs.dist_to_next_call == [3, 2, 1, 0, 1, 0, -7, -8]
+
+
def test_simple_loop(self):
ops = '''
[i0]
More information about the pypy-commit
mailing list