Author: Maciej Fijalkowski <[email protected]>
Branch: rewrite-unrolling
Changeset: r75291:84ee4dbb2783
Date: 2015-01-10 21:25 +0100
http://bitbucket.org/pypy/pypy/changeset/84ee4dbb2783/
Log: (arigo, fijal) progress pure opts
diff --git a/rpython/jit/metainterp/optimizeopt/__init__.py
b/rpython/jit/metainterp/optimizeopt/__init__.py
--- a/rpython/jit/metainterp/optimizeopt/__init__.py
+++ b/rpython/jit/metainterp/optimizeopt/__init__.py
@@ -48,8 +48,7 @@
return optimizations, unroll
def optimize_trace(metainterp_sd, jitdriver_sd, loop, enable_opts,
- inline_short_preamble=True, start_state=None,
- export_state=True):
+ inline_short_preamble=True, unroller=None):
"""Optimize loop.operations to remove internal overheadish operations.
"""
@@ -61,8 +60,7 @@
if unroll:
return optimize_unroll(metainterp_sd, jitdriver_sd, loop,
optimizations,
- inline_short_preamble, start_state,
- export_state)
+ inline_short_preamble, unroller)
else:
optimizer = Optimizer(metainterp_sd, jitdriver_sd, loop,
optimizations)
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_unroll.py
b/rpython/jit/metainterp/optimizeopt/test/test_unroll.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_unroll.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_unroll.py
@@ -1,19 +1,25 @@
from rpython.jit.tool.oparser import parse
from rpython.jit.metainterp.optimizeopt import optimize_trace
+from rpython.jit.metainterp.optimizeopt.optimizer import Optimizer
+from rpython.jit.metainterp.optimizeopt.unroll import Unroller
from rpython.jit.metainterp.optimizeopt.test.test_util import BaseTest,\
FakeMetaInterpStaticData
+from rpython.jit.metainterp.optimizeopt.pure import OptPure
+from rpython.jit.metainterp.resoperation import rop
+from rpython.jit.metainterp.history import ConstInt, BoxInt
from rpython.jit.backend.llgraph import runner
class TestUnrollDirect(BaseTest):
cpu = runner.LLGraphCPU(None)
enable_opts =
"intbounds:rewrite:virtualize:string:earlyforce:pure:heap:unroll"
+ metainterp_sd = FakeMetaInterpStaticData(cpu)
- def optimize(self, loop, expected=None, export_state=False,
start_state=None):
- metainterp_sd = FakeMetaInterpStaticData(self.cpu)
- loop = parse(loop)
- state = optimize_trace(metainterp_sd, None, loop, self.enable_opts,
- export_state=export_state,
start_state=start_state)
+ def optimize(self, loop, expected=None, unroller=None):
+ if isinstance(loop, str):
+ loop = parse(loop)
+ state = optimize_trace(self.metainterp_sd, None, loop,
self.enable_opts,
+ unroller=unroller)
if expected is not None:
expected = parse(expected)
self.assert_equal(loop, expected)
@@ -26,12 +32,34 @@
i1 = int_add(i0, 1)
label(i1)
"""
- exported_state = self.optimize(preamble, export_state=True)
+ unroller = self.optimize(preamble)
loop = """
[i0]
label(i0)
i1 = int_add(i0, 1)
jump(i1)
"""
- self.optimize(loop, loop, start_state=exported_state)
+ self.optimize(loop, loop, unroller=unroller)
+ def test_pure_opts(self):
+ loop = parse("""
+ [i0]
+ label(i0)
+ i1 = int_add(i0, 1)
+ escape(i1)
+ jump(i0)
+ """)
+ pure = OptPure()
+ i0 = loop.operations[1].getarg(0)
+ i1 = BoxInt()
+ unroller = Unroller()
+ unroller.optimizer = Optimizer(self.metainterp_sd, None, None, [pure])
+ pure.optimizer = unroller.optimizer
+ pure.pure(rop.INT_ADD, [i0, ConstInt(1)], i1)
+ expected = """
+ [i0, i1]
+ label(i0, i1)
+ escape(i1)
+ jump(i0, i1)
+ """
+ self.optimize(loop, expected, unroller=unroller)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit