[pypy-commit] pypy vecopt-merge: added test case to stress the case while scheduling

plan_rich noreply at buildbot.pypy.org
Mon Oct 12 12:22:51 CEST 2015


Author: Richard Plangger <planrichi at gmail.com>
Branch: vecopt-merge
Changeset: r80131:d1e7c2151d01
Date: 2015-10-12 12:23 +0200
http://bitbucket.org/pypy/pypy/changeset/d1e7c2151d01/

Log:	added test case to stress the case while scheduling

diff --git a/pypy/module/micronumpy/test/test_zjit.py b/pypy/module/micronumpy/test/test_zjit.py
--- a/pypy/module/micronumpy/test/test_zjit.py
+++ b/pypy/module/micronumpy/test/test_zjit.py
@@ -844,7 +844,6 @@
     def test_where(self):
         result = self.run("where")
         assert result == -40
-        self.check_vectorized(1, 0)
 
     def define_searchsorted():
         return """
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_vecopt.py b/rpython/jit/metainterp/optimizeopt/test/test_vecopt.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_vecopt.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_vecopt.py
@@ -1315,31 +1315,29 @@
         except NotAVectorizeableLoop:
             pass
 
-    def test_remove_mew(self):
+    def test_pass(self):
         trace = self.parse_loop("""
-        [p0, p1, p2, p3, i4, i5, p6, p7, i8, f9, i10, i11]
-        f12 = raw_load_f(i8, i5, descr=floatarraydescr)
-        guard_not_invalidated(descr=<rpython.jit.metainterp.compile.ResumeGuardDescr object at 0x7f0e5c61e990>) [p7, p6, p2, p1, p0, f12, i4, p3, i5]
-        f14 = float_mul(f12, 0.0)
-        i15 = float_eq(f14, f14)
-        guard_true(i15, descr=<rpython.jit.metainterp.compile.ResumeGuardCopiedDescr object at 0x7f0e5c63e610>) [p7, p6, p2, p1, p0, f12, i4, p3, i5]
-        f17 = call_f(1234, f12, f9, descr=writearraydescr)
-        i20 = call_i(1234444, 232, descr=writearraydescr)
-        f21 = float_mul(f17, 0.0)
-        i22 = float_eq(f21, f21)
-        guard_true(i22, descr=<rpython.jit.metainterp.compile.ResumeGuardDescr object at 0x7f0e5c6a47d0>) [p7, p6, p2, p1, p0, f9, f12, i20, f21, f17, i4, p3, i5]
-        i23 = int_is_true(i20)
-        guard_false(i23, descr=<rpython.jit.metainterp.compile.ResumeGuardCopiedDescr object at 0x7f0e5c60b7d0>) [p7, p6, p2, p1, p0, f9, f12, i20, f21, f17, i4, p3, i5]
-        raw_store(i10, i5, f17, descr=floatarraydescr)
-        i25 = int_add(i4, 1)
-        i27 = int_add(i5, 8)
-        i28 = int_ge(i25, i11)
-        guard_false(i28, descr=<rpython.jit.metainterp.compile.ResumeGuardDescr object at 0x7f0e5c75b690>) [i11, i25, p7, p6, p2, p1, p0, i27, None, p3, None]
-        debug_merge_point(0, 0, '(numpy_call2_inc_out_right: no get_printable_location)')
-        jump(p0, p1, p2, p3, i25, i27, p6, p7, i8, f9, i10, i11)
+        [p0,i0]
+        f0 = raw_load_f(p0, i0, descr=floatarraydescr)
+        f1 = float_mul(f0, 0.0)
+        i2 = float_eq(f1, f1)
+        guard_true(i2) [p0, i0]
+        f2 = call_f(0, f0)
+        f21 = float_mul(f2, 0.0)
+        i3 = float_eq(f21, f21)
+        guard_true(i3) [p0, i0]
+        raw_store(p0, i0, f21, descr=floatarraydescr)
+        i4 = int_add(i0, 8)
+        jump(p0, i4)
         """)
         vopt = self.schedule(trace)
-        self.debug_print_operations(trace)
+        self.ensure_operations([
+            'v10[2xf64] = vec_raw_load_f(p0,i0,descr=floatarraydescr)',
+            'v11[2xf64] = vec_float_mul(v10[2xf64], v9[2xf64])',
+            'v12[2xf64] = vec_float_eq(v11[2xf64], v11[2xf64])',
+            'i100 = vec_unpack_f(v12[4xi32], 0, 1)',
+            'guard_true(i100) [p0, i0]',
+        ], trace)
 
 
 class TestLLtype(BaseTestVectorize, LLtypeMixin):
diff --git a/rpython/jit/metainterp/resoperation.py b/rpython/jit/metainterp/resoperation.py
--- a/rpython/jit/metainterp/resoperation.py
+++ b/rpython/jit/metainterp/resoperation.py
@@ -722,6 +722,8 @@
 class VectorOp(object):
     _mixin_ = True
 
+    type = 'f'
+
     def vector_bytesize(self):
         assert self.count > 0
         return self.byte_size * self.count
diff --git a/rpython/jit/tool/oparser.py b/rpython/jit/tool/oparser.py
--- a/rpython/jit/tool/oparser.py
+++ b/rpython/jit/tool/oparser.py
@@ -136,7 +136,7 @@
             return self._cache[elem]
         except KeyError:
             pass
-        if elem[0] in 'ifrp':
+        if elem[0] in 'ifrpv':
             box = OpHelpers.inputarg_from_tp(elem[0])
             number = elem[1:]
             if elem.startswith('v'):


More information about the pypy-commit mailing list