[pypy-svn] rev 2018 - in pypy/trunk/src/pypy/translator: . test
sanxiyn at codespeak.net
sanxiyn at codespeak.net
Tue Oct 21 16:10:21 CEST 2003
Author: sanxiyn
Date: Tue Oct 21 16:10:21 2003
New Revision: 2018
Modified:
pypy/trunk/src/pypy/translator/gencl.py
pypy/trunk/src/pypy/translator/test/benchmark.py
Log:
gencl: block nil + let + tagbody = prog!
benchmark: proper CL integration
Modified: pypy/trunk/src/pypy/translator/gencl.py
==============================================================================
--- pypy/trunk/src/pypy/translator/gencl.py (original)
+++ pypy/trunk/src/pypy/translator/gencl.py Tue Oct 21 16:10:21 2003
@@ -98,26 +98,35 @@
def emit(self):
self.emit_defun(self.fun)
def emit_defun(self, fun):
- print "(defun", fun.functionname, "(",
- for arg in fun.get_args():
+ print "(defun", fun.functionname
+ arglist = fun.get_args()
+ print "(",
+ for arg in arglist:
print self.str(arg),
print ")"
- print "(block nil"
- print "(tagbody"
+ print "(prog"
startblock = fun.startblock
blocklist = []
def collect_block(node):
if isinstance(node, BasicBlock):
blocklist.append(node)
startblock.visit(collect_block)
+ varlist = []
for block in blocklist:
tag = len(self.blockref)
self.blockref[block] = tag
+ varlist.extend(block.getlocals())
+ print "(",
+ for var in varlist:
+ if var in arglist:
+ print "(", self.str(var), self.str(var), ")"
+ else:
+ print self.str(var),
+ print ")"
for block in blocklist:
self.emit_block(block)
print ")"
print ")"
- print ")"
def emit_block(self, block):
self.cur_block = block
tag = self.blockref[block]
Modified: pypy/trunk/src/pypy/translator/test/benchmark.py
==============================================================================
--- pypy/trunk/src/pypy/translator/test/benchmark.py (original)
+++ pypy/trunk/src/pypy/translator/test/benchmark.py Tue Oct 21 16:10:21 2003
@@ -2,7 +2,7 @@
from pypy.tool import test
from pypy.tool.udir import udir
from pypy.translator.test.test_pyrextrans import make_cfunc
-from pypy.translator.test.test_cltrans import make_cl_func
+from pypy.translator.test.test_cltrans import global_cl, make_cl_func
def benchmark(func):
try:
@@ -10,14 +10,17 @@
except AttributeError:
pass
c_func = make_cfunc(func)
- #cl_func = make_cl_func(func)
+ if global_cl:
+ cl_func = make_cl_func(func)
print "generated c-func for", func.func_name
t1 = timeit(100, func)
t2 = timeit(100, c_func)
- #t3 = timeit(100, cl_func)
+ if global_cl:
+ t3 = timeit(100, cl_func)
print "cpython func ", t1, "seconds"
print "pypy/pyrex/cmodule ", t2, "seconds"
- #print "cl (experimental) ", t3, "seconds"
+ if global_cl:
+ print "cl (experimental) ", t3, "seconds", global_cl
def timeit(num, func, *args):
from time import time as now
More information about the Pypy-commit
mailing list