Author: Brian Kearns <bdkea...@gmail.com>
Branch: 
Changeset: r74848:dba4524de78e
Date: 2014-12-05 16:17 -0500
http://bitbucket.org/pypy/pypy/changeset/dba4524de78e/

Log:    add test_zjit for logical_xor reduce

diff --git a/pypy/module/micronumpy/compile.py 
b/pypy/module/micronumpy/compile.py
--- a/pypy/module/micronumpy/compile.py
+++ b/pypy/module/micronumpy/compile.py
@@ -33,7 +33,7 @@
     pass
 
 
-SINGLE_ARG_FUNCTIONS = ["sum", "prod", "max", "min", "all", "any",
+SINGLE_ARG_FUNCTIONS = ["sum", "prod", "max", "min", "all", "any", "xor",
                         "unegative", "flat", "tostring", "count_nonzero",
                         "argsort", "cumsum"]
 TWO_ARG_FUNCTIONS = ["dot", 'take', 'searchsorted']
@@ -561,6 +561,9 @@
                 w_res = arr.descr_all(interp.space)
             elif self.name == "cumsum":
                 w_res = arr.descr_cumsum(interp.space)
+            elif self.name == "xor":
+                xor = ufuncs.get(interp.space).logical_xor
+                w_res = xor.reduce(interp.space, arr, None)
             elif self.name == "unegative":
                 neg = ufuncs.get(interp.space).negative
                 w_res = neg.call(interp.space, [arr])
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
@@ -400,6 +400,7 @@
     def test_all(self):
         result = self.run("all")
         assert result == 1
+        self.check_trace_count(1)
         self.check_simple_loop({
             'cast_float_to_int': 1,
             'guard_false': 1,
@@ -412,6 +413,36 @@
             'raw_load': 1,
         })
 
+    def define_logical_xor_reduce():
+        return """
+        a = [1,1,1,1,1,1,1,1]
+        xor(a)
+        """
+
+    def test_logical_xor_reduce(self):
+        result = self.run("logical_xor_reduce")
+        assert result == 0
+        self.check_trace_count(2)
+        # XXX fix this
+        self.check_simple_loop({
+            'cast_float_to_int': 1,
+            'getfield_gc': 2,
+            'getfield_gc_pure': 11,
+            'guard_class': 1,
+            'guard_false': 2,
+            'guard_not_invalidated': 1,
+            'guard_true': 4,
+            'int_add': 2,
+            'int_and': 1,
+            'int_ge': 1,
+            'int_is_true': 3,
+            'int_xor': 1,
+            'jump': 1,
+            'new_with_vtable': 1,
+            'raw_load': 1,
+            'setfield_gc': 4,
+        })
+
     def define_already_forced():
         return """
         a = |30|
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to