Author: Richard Plangger <r...@pasra.at>
Branch: vecopt
Changeset: r77174:1182166dcc4f
Date: 2015-05-07 12:20 +0200
http://bitbucket.org/pypy/pypy/changeset/1182166dcc4f/

Log:    updated tests (some of them needed adjusting after scheduling
        changed) removed tests that where redundant

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
@@ -61,10 +61,8 @@
         if opt.dependency_graph is not None:
             self._write_dot_and_convert_to_svg(opt.dependency_graph, "ee" + 
self.test_name)
             opt.schedule()
-            self.debug_print_operations(opt.loop)
         opt.unroll_loop_iterations(loop, unroll_factor)
         opt.loop.operations = opt.get_newoperations()
-        self.debug_print_operations(opt.loop)
         opt.clear_newoperations()
         opt.build_dependency_graph()
         self.last_graph = opt.dependency_graph
@@ -711,12 +709,12 @@
         loop = self.parse_loop(ops)
         vopt = self.extend_packset(loop,1)
         assert len(vopt.dependency_graph.memory_refs) == 4
-        self.assert_independent(4,10)
         self.assert_independent(5,11)
         self.assert_independent(6,12)
+        self.assert_independent(7,13)
         assert len(vopt.packset.packs) == 3
         self.assert_packset_empty(vopt.packset, len(loop.operations),
-                                  [(5,11), (4,10), (6,12)])
+                                  [(6,12), (5,11), (7,13)])
 
     @pytest.mark.parametrize("descr", ['char','float','int','singlefloat'])
     def test_packset_combine_simple(self,descr):
@@ -761,6 +759,7 @@
         self.assert_pack(vopt.packset.packs[0], (1,3,5,7,9,11,13,15))
 
     def test_packset_combine_2_loads_one_redundant(self):
+        py.test.skip("apply redundant load elimination?")
         ops = """
         [p0,i0]
         i3 = getarrayitem_raw(p0, i0, descr=floatarraydescr)
@@ -768,12 +767,12 @@
         i4 = getarrayitem_raw(p0, i1, descr=floatarraydescr)
         jump(p0,i1)
         """
-        pytest.skip("loop unrolling must apply redundant loop unrolling")
         loop = self.parse_loop(ops)
         vopt = self.combine_packset(loop,3)
-        assert len(vopt.dependency_graph.memory_refs) == 4
-        assert len(vopt.packset.packs) == 1
-        self.assert_pack(vopt.packset.packs[0], (1,3,5,7))
+        assert len(vopt.dependency_graph.memory_refs) == 8
+        assert len(vopt.packset.packs) == 2
+        self.assert_pack(vopt.packset.packs[0], (1,5,9))
+        self.assert_pack(vopt.packset.packs[1], (3,7,11))
 
     def test_packset_combine_no_candidates_packset_empty(self):
         ops = """
@@ -862,14 +861,15 @@
         """.format(op=op,descr=descr,stride=1) # stride getarray is always 1
         vops = """
         [p0,p1,p2,i0]
+        guard_early_exit() []
         i10 = int_le(i0, 128)
         guard_true(i10) []
         i1 = int_add(i0, {stride})
         i11 = int_le(i1, 128)
         guard_true(i11) []
         i12 = int_add(i1, {stride})
+        v1 = vec_getarrayitem_raw(p0, i0, 2, descr={descr}arraydescr)
         v2 = vec_getarrayitem_raw(p1, i0, 2, descr={descr}arraydescr)
-        v1 = vec_getarrayitem_raw(p0, i0, 2, descr={descr}arraydescr)
         v3 = {op}(v1,v2,2)
         vec_setarrayitem_raw(p2, i0, v3, 2, descr={descr}arraydescr)
         jump(p0,p1,p2,i12)
@@ -878,46 +878,30 @@
         vopt = self.schedule(loop,1)
         self.assert_equal(loop, self.parse_loop(vops))
 
-    @pytest.mark.parametrize('unroll', range(1,16,2))
+    @pytest.mark.parametrize('unroll', range(2,16,3))
     def test_vectorize_index_variable_combination(self, unroll):
-        pytest.skip("implement index variable combination")
         ops = """
         [p0,i0]
+        guard_early_exit() []
         i1 = raw_load(p0, i0, descr=floatarraydescr)
-        i2 = int_add(i0,1)
+        i2 = int_add(i0,8)
         jump(p0,i2)
         """
         vops = """
         [p0,i0]
-        v1 = vec_raw_load(p0, i0, {count}, descr=floatarraydescr)
-        i1 = int_add(i0,{count})
+        guard_early_exit() []
+        """ + '\n        '.join(["i{x} = 
int_add(i0,{i})".format(i=8*(i+1),x=i+100) for i in range(unroll) ]) + \
+        """
+        i1 = int_add(i0, {count})
+        v1 = vec_raw_load(p0, i0, {elems}, descr=floatarraydescr)
         jump(p0,i1)
-        """.format(count=unroll+1)
+        """.format(count=(unroll+1)*8,elems=unroll+1)
+        print vops
         loop = self.parse_loop(ops)
-        vopt = self.schedule(loop,unroll)
+        vopt = self.vectorize(loop,unroll)
         self.assert_equal(loop, self.parse_loop(vops))
 
 
-    def test_vectorize_raw_load_mul_index(self):
-        pytest.skip("")
-        ops = """
-        [i0, i1, i2, i3, i4, i5, i6, i7]
-        guard_early_exit() []
-        i9 = int_mul(i0, 8)
-        i10 = raw_load(i3, i9, descr=intarraydescr)
-        i11 = int_mul(i0, 8)
-        i12 = raw_load(i3, i11, descr=intarraydescr)
-        i13 = int_add(i10, i12)
-        i14 = int_mul(i0, 8)
-        raw_store(i5, i14, i13, descr=intarraydescr)
-        i16 = int_add(i0, 1)
-        i17 = int_lt(i16, i7)
-        guard_true(i17) [i7, i13, i5, i4, i3, i12, i10, i16]
-        guard_future_condition() []
-        jump(i16, i10, i12, i3, i4, i5, i13, i7)
-        """
-        vopt = self.schedule(self.parse_loop(ops),1)
-
     def test_vschedule_trace_1(self):
         ops = """
         [i0, i1, i2, i3, i4]
@@ -934,16 +918,17 @@
         """
         opt="""
         [i0, i1, i2, i3, i4]
+        guard_early_exit() []
+        i11 = int_add(i0, 1) 
         i6 = int_mul(i0, 8) 
-        i11 = int_add(i0, 1) 
         i12 = int_lt(i11, i1) 
         guard_true(i12) []
+        i13 = int_add(i11, 1) 
         i14 = int_mul(i11, 8) 
-        i13 = int_add(i11, 1) 
         i18 = int_lt(i13, i1) 
         guard_true(i18) []
+        v19 = vec_raw_load(i2, i6, 2, descr=intarraydescr) 
         v20 = vec_raw_load(i3, i6, 2, descr=intarraydescr) 
-        v19 = vec_raw_load(i2, i6, 2, descr=intarraydescr) 
         v21 = vec_int_add(v19, v20, 2) 
         vec_raw_store(i4, i6, v21, 2, descr=intarraydescr) 
         jump(i13, i1, i2, i3, i4)
@@ -951,43 +936,6 @@
         vopt = self.schedule(self.parse_loop(ops),1)
         self.assert_equal(vopt.loop, self.parse_loop(opt))
 
-    def test_vschedule_trace_2(self):
-        pytest.skip()
-        ops = """
-        [i0, i1, i2, i3, i4, i5, i6, i7]
-        guard_early_exit() []
-        i8 = raw_load(i3, i0, descr=intarraydescr)
-        i9 = raw_load(i4, i0, descr=intarraydescr)
-        i10 = int_add(i8, i9)
-        raw_store(i5, i0, i10, descr=intarraydescr)
-        i12 = int_add(i0, 8)
-        i14 = int_mul(i7, 8)
-        i15 = int_lt(i12, i14)
-        guard_true(i15) [i7, i10, i5, i4, i3, i9, i8, i12]
-        guard_future_condition() []
-        jump(i12, i8, i9, i3, i4, i5, i10, i7)
-        """
-        opt = """
-        [i0, i1, i2, i3, i4, i5, i6, i7]
-        i12 = int_add(i0, 8) 
-        i14 = int_mul(i7, 8) 
-        i20 = int_mul(i7, 8) 
-        i15 = int_lt(i12, i14) 
-        guard_true(i15) []
-        i16 = int_add(i12, 8) 
-        i21 = int_lt(i16, i20) 
-        guard_true(i21) []
-        v22 = vec_raw_load(i3, i0, 2, descr=intarraydescr) 
-        v23 = vec_raw_load(i4, i0, 2, descr=intarraydescr) 
-        v24 = vec_int_add(v22, v23) 
-        vec_raw_store(i5, i0, v24, 2, descr=intarraydescr) 
-        i17 = vec_unpack(v22, 0)
-        i18 = vec_unpack(v22, 1)
-        jump(i16, i17, i18, i3, i4, i5, i19, i7)
-        """
-        vopt = self.schedule(self.parse_loop(ops),1)
-        self.assert_equal(vopt.loop, self.parse_loop(opt))
-
     def test_collapse_index_guard_1(self):
         ops = """
         [p0,i0]
@@ -1004,6 +952,7 @@
           for i in range(0,15)])
         opt="""
         [p0,i0]
+        guard_early_exit() [p0,i0]
         {dead_code}
         i2 = int_add(i0, 16)
         i3 = int_lt(i2, 102)
@@ -1056,29 +1005,6 @@
         vopt = self.vectorize(self.parse_loop(ops),3)
         self.assert_equal(vopt.loop, self.parse_loop(opt))
 
-    def test_guard_invalidate(self):
-        py.test.skip()
-        ops = """
-        [p52, i51, p4, i56, p1, f15, p19, i17, p8, i23, p34, i32, i38, f30, 
p7, i14, i22, i29, i37, i45, i55, i57]
-        debug_merge_point(0, 0, '(numpy_call2: no get_printable_location)')
-        guard_early_exit() [p8, p7, p4, p1, i51, p34, f15, i56, i32, p52, i23, 
i38, p19, i17, f30]
-        f59 = raw_load(i14, i23, descr=floatarraydescr)
-        guard_not_invalidated() [p8, p7, p4, p1, f59, i51, p34, None, i56, 
i32, p52, i23, i38, p19, i17, f30]
-        i60 = int_add(i23, i22)
-        f61 = raw_load(i29, i38, descr=floatarraydescr)
-        i62 = int_add(i38, i37)
-        f63 = float_add(f59, f61)
-        raw_store(i45, i56, f63, descr=floatarraydescr)
-        i64 = int_add(i51, 1)
-        i65 = int_add(i56, i55)
-        i66 = int_ge(i64, i57)
-        guard_false(i66) [p8, p7, p4, p1, f59, i62, i60, i65, i64, f61, None, 
p34, None, None, i32, p52, None, None, p19, i17, None]
-        debug_merge_point(0, 0, '(numpy_call2: no get_printable_location)')
-        jump(p52, i64, p4, i65, p1, f59, p19, i17, p8, i60, p34, i32, i62, 
f61, p7, i14, i22, i29, i37, i45, i55, i57)
-        """
-        vopt = self.vectorize(self.parse_loop(ops))
-        self.debug_print_operations(vopt.loop)
-
     def test_element_f45_in_guard_failargs(self):
         ops = """
         [p36, i28, p9, i37, p14, f34, p12, p38, f35, p39, i40, i41, p42, i43, 
i44, i21, i4, i0, i18]
@@ -1120,7 +1046,6 @@
         jump(p36, i53, p9, i56, p14, f100, p12, p38, f101, p39, i40, i54, p42, 
i43, i55, i21, i4, i0, i18)
         """
         vopt = self.vectorize(self.parse_loop(ops))
-        self.debug_print_operations(vopt.loop)
         self.assert_equal(vopt.loop, self.parse_loop(opt))
 
 
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to