Author: Richard Plangger <[email protected]>
Branch: vecopt
Changeset: r78680:2a58825eefba
Date: 2015-07-27 12:09 +0200
http://bitbucket.org/pypy/pypy/changeset/2a58825eefba/
Log: ironed out problems indicated by buildbot (small batch) llgraph now
checks for box is equal to zero (otherwise getaccum will fail)
renamed FloatConstant -> NumberConstant
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
@@ -579,14 +579,20 @@
class NumberConstant(Node):
def __init__(self, v):
- assert len(v) > 0
- c = v[-1]
- if c == 'f':
- self.v = float(v[:-1])
- elif c == 'i':
- self.v = int(v[:-1])
+ if isinstance(v, int):
+ self.v = v
+ elif isinstance(v, float):
+ self.v = v
else:
- self.v = float(v)
+ assert isinstance(v, str)
+ assert len(v) > 0
+ c = v[-1]
+ if c == 'f':
+ self.v = float(v[:-1])
+ elif c == 'i':
+ self.v = int(v[:-1])
+ else:
+ self.v = float(v)
def __repr__(self):
return "Const(%s)" % self.v
diff --git a/pypy/module/micronumpy/test/test_compile.py
b/pypy/module/micronumpy/test/test_compile.py
--- a/pypy/module/micronumpy/test/test_compile.py
+++ b/pypy/module/micronumpy/test/test_compile.py
@@ -1,6 +1,6 @@
import py
from pypy.module.micronumpy.compile import (numpy_compile, Assignment,
- ArrayConstant, FloatConstant, Operator, Variable, RangeConstant, Execute,
+ ArrayConstant, NumberConstant, Operator, Variable, RangeConstant, Execute,
FunctionCall, FakeSpace, W_NDimArray)
@@ -25,30 +25,30 @@
interp = self.compile(code)
assert isinstance(interp.code.statements[0].expr, ArrayConstant)
st = interp.code.statements[0]
- assert st.expr.items == [FloatConstant(1), FloatConstant(2),
- FloatConstant(3)]
+ assert st.expr.items == [NumberConstant(1), NumberConstant(2),
+ NumberConstant(3)]
def test_array_literal2(self):
code = "a = [[1],[2],[3]]"
interp = self.compile(code)
assert isinstance(interp.code.statements[0].expr, ArrayConstant)
st = interp.code.statements[0]
- assert st.expr.items == [ArrayConstant([FloatConstant(1)]),
- ArrayConstant([FloatConstant(2)]),
- ArrayConstant([FloatConstant(3)])]
+ assert st.expr.items == [ArrayConstant([NumberConstant(1)]),
+ ArrayConstant([NumberConstant(2)]),
+ ArrayConstant([NumberConstant(3)])]
def test_expr_1(self):
code = "b = a + 1"
interp = self.compile(code)
assert (interp.code.statements[0].expr ==
- Operator(Variable("a"), "+", FloatConstant(1)))
+ Operator(Variable("a"), "+", NumberConstant(1)))
def test_expr_2(self):
code = "b = a + b - 3"
interp = self.compile(code)
assert (interp.code.statements[0].expr ==
Operator(Operator(Variable("a"), "+", Variable("b")), "-",
- FloatConstant(3)))
+ NumberConstant(3)))
def test_expr_3(self):
# an equivalent of range
@@ -60,13 +60,13 @@
code = "3 + a"
interp = self.compile(code)
assert interp.code.statements[0] == Execute(
- Operator(FloatConstant(3), "+", Variable("a")))
+ Operator(NumberConstant(3), "+", Variable("a")))
def test_array_access(self):
code = "a -> 3"
interp = self.compile(code)
assert interp.code.statements[0] == Execute(
- Operator(Variable("a"), "->", FloatConstant(3)))
+ Operator(Variable("a"), "->", NumberConstant(3)))
def test_function_call(self):
code = "sum(a)"
@@ -81,7 +81,7 @@
"""
interp = self.compile(code)
assert interp.code.statements[0] == Assignment(
- 'a', Operator(Variable('b'), "+", FloatConstant(3)))
+ 'a', Operator(Variable('b'), "+", NumberConstant(3)))
class TestRunner(object):
diff --git a/rpython/jit/backend/llgraph/runner.py
b/rpython/jit/backend/llgraph/runner.py
--- a/rpython/jit/backend/llgraph/runner.py
+++ b/rpython/jit/backend/llgraph/runner.py
@@ -873,7 +873,7 @@
value = self.env[box]
else:
value = None
- if box.getaccum():
+ if box and box.getaccum():
if box.getaccum().operator == '+':
value = sum(value)
elif box.getaccum().operator == '*':
diff --git a/rpython/jit/tool/test/test_jitoutput.py
b/rpython/jit/tool/test/test_jitoutput.py
--- a/rpython/jit/tool/test/test_jitoutput.py
+++ b/rpython/jit/tool/test/test_jitoutput.py
@@ -61,6 +61,8 @@
nvirtuals: 13
nvholes: 14
nvreused: 15
+vecopt tried: 12
+vecopt success: 4
Total # of loops: 100
Total # of bridges: 300
Freed # of loops: 99
@@ -88,3 +90,5 @@
assert info.nvirtuals == 13
assert info.nvholes == 14
assert info.nvreused == 15
+ assert info.vecopt_tried == 12
+ assert info.vecopt_success == 4
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit