Author: Richard Plangger <[email protected]>
Branch: vecopt
Changeset: r78030:c291ce811739
Date: 2015-06-11 17:15 +0200
http://bitbucket.org/pypy/pypy/changeset/c291ce811739/
Log: some test changes, removed an error when the output type is none
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_schedule.py
b/rpython/jit/metainterp/optimizeopt/test/test_schedule.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_schedule.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_schedule.py
@@ -53,7 +53,7 @@
if len(pack) == 1:
ops.append(pack[0].getoperation())
else:
- for op in vsd.as_vector_operation(Pack(pack), renamer):
+ for op in vsd.as_vector_operation(Pack(pack, None, None),
renamer):
ops.append(op)
loop.operations = ops
if prepend_invariant:
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_vectorize.py
b/rpython/jit/metainterp/optimizeopt/test/test_vectorize.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_vectorize.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_vectorize.py
@@ -53,7 +53,7 @@
def vectoroptimizer(self, loop):
metainterp_sd = FakeMetaInterpStaticData(self.cpu)
jitdriver_sd = FakeJitDriverStaticData()
- opt = VectorizingOptimizer(metainterp_sd, jitdriver_sd, loop, [])
+ opt = VectorizingOptimizer(metainterp_sd, jitdriver_sd, loop, 0)
return opt
def vectoroptimizer_unrolled(self, loop, unroll_factor = -1):
@@ -96,12 +96,15 @@
opt.combine_packset()
return opt
- def schedule(self, loop, unroll_factor = -1):
+ def schedule(self, loop, unroll_factor = -1, with_guard_opt=False):
opt = self.vectoroptimizer_unrolled(loop, unroll_factor)
opt.find_adjacent_memory_refs()
opt.extend_packset()
opt.combine_packset()
opt.schedule(True)
+ if with_guard_opt:
+ gso = GuardStrengthenOpt(opt.dependency_graph.index_vars)
+ gso.propagate_all_forward(opt.loop)
return opt
def vectorize(self, loop, unroll_factor = -1):
@@ -962,7 +965,7 @@
i1 = vec_getarrayitem_raw(p0, i0, 16, descr=chararraydescr)
jump(p0,i2)
""".format(dead_code=dead_code)
- vopt = self.vectorize(self.parse_loop(ops),15)
+ vopt = self.schedule(self.parse_loop(ops),15,with_guard_opt=True)
self.assert_equal(vopt.loop, self.parse_loop(opt))
def test_too_small_vector(self):
@@ -1304,8 +1307,11 @@
guard_false(i39) [i1, p9, p8, p6, p4, p3, i33, i38, None, None, i26,
i11, None, p13, None, None, p10]
jump(i1, p10, i11, p8, i26, p3, p4, p13, i33, i38, p6, p9, i16, i17,
i18, i19, i20, i21, i22, i23)
"""
- opt = self.vectorize(self.parse_loop(trace))
- self.debug_print_operations(opt.loop)
+ try:
+ self.vectorize(self.parse_loop(trace))
+ py.test.fail("axis sum is not profitable")
+ except NotAProfitableLoop:
+ pass
def test_cast_1(self):
trace = """
@@ -1364,7 +1370,7 @@
guard_false(i17) [p2, i16, f9, i14, None, None, None, p3]
jump(p3, i14, p2, i16, f9, i7, i8)
"""
- opt = self.vectorize(self.parse_loop(trace))
+ opt = self.schedule(self.parse_loop(trace), with_guard_opt=True)
self.debug_print_operations(opt.loop)
diff --git a/rpython/jit/metainterp/optimizeopt/vectorize.py
b/rpython/jit/metainterp/optimizeopt/vectorize.py
--- a/rpython/jit/metainterp/optimizeopt/vectorize.py
+++ b/rpython/jit/metainterp/optimizeopt/vectorize.py
@@ -522,6 +522,8 @@
def cb_signext(self, pack):
op0 = pack.operations[0].getoperation()
size = op0.getarg(1).getint()
+ if pack.output_type is None:
+ return 1,0
orig_size = pack.output_type.getsize()
if size == orig_size:
return 0,0
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit