python testrunner/pypyjit_tests.py
in dir /Users/matti/build-worker-arm64/pypy-c-jit-macos-arm64/build (timeout 4000 secs)
watching logfiles {'pytestLog': 'pypyjit_new.log'}
argv: ['python', 'testrunner/pypyjit_tests.py']
environment:
HOME=/Users/matti
HOMEBREW_CELLAR=/opt/homebrew/Cellar
HOMEBREW_PREFIX=/opt/homebrew
HOMEBREW_REPOSITORY=/opt/homebrew
INFOPATH=/opt/homebrew/share/info:
LANG=en_US.UTF-8
LC_ADDRESS=en_AU.UTF-8
LC_IDENTIFICATION=en_AU.UTF-8
LC_MEASUREMENT=en_AU.UTF-8
LC_MONETARY=en_AU.UTF-8
LC_NAME=en_AU.UTF-8
LC_NUMERIC=en_AU.UTF-8
LC_PAPER=en_AU.UTF-8
LC_TELEPHONE=en_AU.UTF-8
LC_TIME=en_AU.UTF-8
LOGNAME=matti
OLDPWD=/Users/matti
PATH=/Users/matti/oss/pypy-arm64-buildbot/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/Library/Frameworks/Python.framework/Versions/3.11/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin
PKG_CONFIG_PATH=/opt/homebrew/Cellar/openssl@1.1/1.1.1t/lib/pkgconfig
PWD=/Users/matti/build-worker-arm64/pypy-c-jit-macos-arm64/build
PYPY_USESSION_DIR=/tmp/buildbot-arm64
SHELL=/bin/zsh
SHLVL=2
SSH_CLIENT=10.0.0.15 50492 22
SSH_CONNECTION=10.0.0.15 50492 10.0.0.16 22
SSH_TTY=/dev/ttys000
TERM=xterm-256color
TMPDIR=/tmp/buildbot-arm64/pytest
USER=matti
_=/Users/matti/oss/pypy-arm64-buildbot/bin/buildslave
using PTY: False
============================= test session starts ==============================
platform darwin -- Python 2.7.18[pypy-7.3.24-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1
pytest-2.9.2 from /Users/matti/build-worker-arm64/pypy-c-jit-macos-arm64/build/pytest.pyc
rootdir: /Users/matti/build-worker-arm64/pypy-c-jit-macos-arm64/build, inifile: pytest.ini
collected 1207 items
pypy/module/pypyjit/test_pypy_c/test_00_model.py .........................
pypy/module/pypyjit/test_pypy_c/test_alloc.py ...................................................
pypy/module/pypyjit/test_pypy_c/test_array.py ....s..
pypy/module/pypyjit/test_pypy_c/test_boolrewrite.py ......................................................................................................................................................................................................................................................................................................................................
pypy/module/pypyjit/test_pypy_c/test_buffers.py ..
pypy/module/pypyjit/test_pypy_c/test_bug.py s
pypy/module/pypyjit/test_pypy_c/test_call.py ..........................
pypy/module/pypyjit/test_pypy_c/test_containers.py ......................
pypy/module/pypyjit/test_pypy_c/test_cprofile.py .
pypy/module/pypyjit/test_pypy_c/test_exception.py .....
pypy/module/pypyjit/test_pypy_c/test_ffi.py s..s......
pypy/module/pypyjit/test_pypy_c/test_generators.py ...
pypy/module/pypyjit/test_pypy_c/test_getframe.py ..
pypy/module/pypyjit/test_pypy_c/test_globals.py .
pypy/module/pypyjit/test_pypy_c/test_import.py ..
pypy/module/pypyjit/test_pypy_c/test_instance.py ................
pypy/module/pypyjit/test_pypy_c/test_intbound.py ..........................................................................F.......................................................................................................................................................................................................
pypy/module/pypyjit/test_pypy_c/test_jitlogparser.py F
pypy/module/pypyjit/test_pypy_c/test_math.py ..s..
pypy/module/pypyjit/test_pypy_c/test_micronumpy.py ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss.F......
pypy/module/pypyjit/test_pypy_c/test_min_max.py ...
pypy/module/pypyjit/test_pypy_c/test_misc.py .......................
pypy/module/pypyjit/test_pypy_c/test_shift.py ...........................................................................................................................................................................................................................
pypy/module/pypyjit/test_pypy_c/test_string.py ................
pypy/module/pypyjit/test_pypy_c/test_struct.py ......
pypy/module/pypyjit/test_pypy_c/test_thread.py ...
pypy/module/pypyjit/test_pypy_c/test_weakref.py .
=================================== FAILURES ===================================
____________________ TestIntbound.test_intbound_simple[74] _____________________
self = <pypy.module.pypyjit.test_pypy_c.test_intbound.TestIntbound object at 0x00000001398e5a98>
src = '\n def f(i):\n a, b = 3, 3\n if i >= 7:\...x:\n res[f(i)] += 1\n return res\n\n '
args = [], jitopts = {}
def run_and_check(self, src, args=[], **jitopts):
> log1 = self.run(src, args, threshold=-1) # without the JIT
pypy/module/pypyjit/test_pypy_c/test_00_model.py:101:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pypy.module.pypyjit.test_pypy_c.test_intbound.TestIntbound object at 0x00000001398e5a98>
func_or_src = '\n def f(i):\n a, b = 3, 3\n if i >= 7:\...x:\n res[f(i)] += 1\n return res\n\n '
args = [], import_site = False, discard_stdout_before_last_line = False
jitopts = {'disable_unrolling': 9999, 'threshold': -1}
src = <py._code.source.Source object at 0x0000000118ece170>, funcname = 'main'
arglist = ''
f = <closed file '/tmp/buildbot-arm64/usession-main-309/test-pypy-jit/test_intbound_simple.py', mode 'w' at 0x0000000128695a20>
logfile = local('/tmp/buildbot-arm64/usession-main-309/test-pypy-jit/test_intbound_simple.log')
cmdline = ['/Users/matti/build-worker-arm64/pypy-c-jit-macos-arm64/build/pypy/goal/pypy-c', '-S', '--jit', 'threshold=-1,disable_unrolling=9999', '/tmp/buildbot-arm64/usession-main-309/test-pypy-jit/test_intbound_simple.py']
key = 'disable_unrolling'
def run(self, func_or_src, args=[], import_site=False,
discard_stdout_before_last_line=False, **jitopts):
jitopts.setdefault('threshold', 200)
jitopts.setdefault('disable_unrolling', 9999)
src = py.code.Source(func_or_src)
if isinstance(func_or_src, types.FunctionType):
funcname = func_or_src.func_name
else:
funcname = 'main'
# write the snippet
arglist = ', '.join(map(repr, args))
with self.filepath.open("w") as f:
# we don't want to see the small bridges created
# by the checkinterval reaching the limit
f.write("import sys\n")
f.write("sys.setcheckinterval(10000000)\n")
f.write(str(src) + "\n")
f.write("print %s(%s)\n" % (funcname, arglist))
#
# run a child pypy-c with logging enabled
logfile = self.filepath.new(ext='.log')
#
cmdline = [sys.executable]
if not import_site:
cmdline.append('-S')
if jitopts:
jitcmdline = ['%s=%s' % (key, value)
for key, value in jitopts.items()]
cmdline += ['--jit', ','.join(jitcmdline)]
cmdline.append(str(self.filepath))
#
env = os.environ.copy()
# TODO old logging system
env['PYPYLOG'] = self.log_string + ':' + str(logfile)
jitlogfile = str(logfile) + '.jlog'
env['JITLOG'] = str(jitlogfile)
pipe = subprocess.Popen(cmdline,
env=env,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
stdout, stderr = pipe.communicate()
if pipe.wait() < 0:
raise IOError("subprocess was killed by signal %d" % (
> pipe.returncode,))
E IOError: subprocess was killed by signal -10
pypy/module/pypyjit/test_pypy_c/test_00_model.py:71: IOError
______________________________ TestLogParser.test ______________________________
self = <pypy.module.pypyjit.test_pypy_c.test_jitlogparser.TestLogParser object at 0x0000000139f40aa0>
def test(self):
def fn_with_bridges(N):
def is_prime(x):
for y in xrange(2, x):
if x % y == 0:
return False
return True
result = 0
for x in xrange(N):
if x % 3 == 0:
result += 5
elif x % 5 == 0:
result += 3
elif is_prime(x):
result += x
elif x == 99:
result *= 2
return result
#
N = 10000
_log = self.run(fn_with_bridges, [N])
log, loops = import_log(_log.logfile)
parse_log_counts(extract_category(log, 'jit-backend-count'), loops)
is_prime_loops = []
fn_with_bridges_loops = []
bridges = {}
lib_re = re.compile("file '.*lib-python.*'")
for loop in loops:
if hasattr(loop, 'force_asm'):
try:
> loop.force_asm()
pypy/module/pypyjit/test_pypy_c/test_jitlogparser.py:46:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
rpython/tool/jitlogparser/parser.py:472: in <lambda>
dump_start=start_ofs))
rpython/tool/jitlogparser/parser.py:110: in postprocess
backend_tp, dump_start)
rpython/tool/jitlogparser/parser.py:151: in _asm_disassemble
return list(machine_code_dump(d, origin_addr, tp))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
data = '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\...2\xd20\x1c\xa0\xf20\x00\xc0\xf2\xb0\x13\x00\xf9\x10\x00\x80\xd20\x1c\xa0\xf20\x00\xc0\xf2\x10\x00\xe0\xf2\x00\x02?\xd6'
originaddr = 4309718384L, backend_name = 'arm', label_list = None
def machine_code_dump(data, originaddr, backend_name, label_list=None):
objdump_machine_option = {
'x86': 'i386',
'x86-without-sse2': 'i386',
'x86_32': 'i386',
'x86_64': 'i386:x86-64',
'x86-64': 'i386:x86-64',
'i386': 'i386',
'arm': 'arm',
'arm_32': 'arm',
'aarch64': 'aarch64',
'ppc' : 'powerpc:common64',
'ppc-64' : 'powerpc:common64',
'riscv64': 'riscv:rv64',
's390x': 's390:64-bit',
}
machine_endianness = {
# default value: 'little'
'ppc' : sys.byteorder, # i.e. same as the running machine...
'ppc-64' : sys.byteorder, # i.e. same as the running machine...
's390x' : sys.byteorder, # i.e. same as the running machine...
}
cmd = find_objdump()
objdump = ('%(command)s -b binary -m %(machine)s '
'--endian=%(endianness)s '
'--disassembler-options=intel-mnemonics '
'--adjust-vma=%(origin)d -D %(file)s')
#
f = open(tmpfile, 'wb')
f.write(data)
f.close()
p = subprocess.Popen(objdump % {
'command': cmd,
'file': tmpfile,
'origin': originaddr,
'machine': objdump_machine_option[backend_name],
'endianness': machine_endianness.get(backend_name, 'little'),
}, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = p.communicate()
assert not p.returncode, ('Encountered an error running objdump: %s' %
> stderr)
E AssertionError: Encountered an error running objdump: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/objdump: error: unknown argument '-b'
rpython/jit/backend/tool/viewcode.py:82: AssertionError
----------------------------- Captured stdout call -----------------------------
loading symbols from /Users/matti/build-worker-arm64/pypy-c-jit-macos-arm64/build/pypy/goal/pypy-c...
3 symbols found
----------------------------- Captured stderr call -----------------------------
0%..loaded
____________________ TestMicroNumPy.test_reduce_logical_and ____________________
self = <pypy.module.pypyjit.test_pypy_c.test_micronumpy.TestMicroNumPy object at 0x000000013ee10100>
def test_reduce_logical_and(self):
def main():
import _numpypy.multiarray as np
import _numpypy.umath as um
arr = np.array([1.0] * 1500)
return um.logical_and.reduce(arr)
log = self.run(main, [])
assert log.result is True
assert len(log.loops) == 1
loop = log._filter(log.loops[0])
if IS_RISCV:
# The order of %(align_check)s and guard_not_invalidated(descr=...)
# in the RISCV backend is different from other backends.
loop.match("""
guard_not_invalidated(descr=...)
%(align_check)s
f31 = raw_load_f(i9, i29, descr=<ArrayF 8>)
i32 = float_ne(f31, 0.000000)
guard_true(i32, descr=...)
i36 = int_add(i24, 1)
i37 = int_add(i29, 8)
i38 = int_ge(i36, i30)
guard_false(i38, descr=...)
jump(..., descr=...)
""" % {'align_check': align_check('i29')})
else:
loop.match("""
%(align_check)s
guard_not_invalidated(descr=...)
f31 = raw_load_f(i9, i29, descr=<ArrayF 8>)
i32 = float_ne(f31, 0.000000)
guard_true(i32, descr=...)
i36 = int_add(i24, 1)
i37 = int_add(i29, 8)
i38 = int_ge(i36, i30)
guard_false(i38, descr=...)
jump(..., descr=...)
> """ % {'align_check': align_check('i29')})
pypy/module/pypyjit/test_pypy_c/test_micronumpy.py:237:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pypy/module/pypyjit/test_pypy_c/model.py:186: in match
return matcher.match(expected_src, **kwds)
pypy/module/pypyjit/test_pypy_c/model.py:527: in match
self.match_loop(expected_ops, ignore_ops)
pypy/module/pypyjit/test_pypy_c/model.py:503: in match_loop
self.match_op(op, exp_op)
pypy/module/pypyjit/test_pypy_c/model.py:412: in match_op
self._assert(op.name == exp_opname, "operation mismatch")
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pypy.module.pypyjit.test_pypy_c.model.OpMatcher object at 0x000000013ee19558>
cond = False, message = 'operation mismatch'
def _assert(self, cond, message):
if not cond:
> raise InvalidMatch(message, frame=sys._getframe(1))
E InvalidMatch: operation mismatch
pypy/module/pypyjit/test_pypy_c/model.py:405: InvalidMatch
----------------------------- Captured stdout call -----------------------------
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Loops don't match
=================
loop id = None
('operation mismatch',)
<could not determine information>
Ignore ops: []
Got:
===== HERE =====
guard_not_invalidated(descr=<Guard0x1485ec0b0>)
i39 = int_and(i35, 7)
i40 = int_is_zero(i39)
guard_true(i40, descr=<Guard0x1485e6b60>)
f41 = raw_load_f(i9, i35, descr=<ArrayF 8>)
i43 = float_ne(f41, 0.000000)
guard_true(i43, descr=<Guard0x1485e6b90>)
i45 = int_add(i28, 1)
i47 = int_add(i35, 8)
i48 = int_ge(i45, i36)
guard_false(i48, descr=<Guard0x1485e6bc0>)
jump(p29, i45, p1, i47, p4, p6, i9, i36, descr=TargetToken(5509128288))
Expected:
i10096 = int_and(i29, 7)
i10097 = int_is_zero(i10096)
guard_true(i10097, descr=...)
guard_not_invalidated(descr=...)
f31 = raw_load_f(i9, i29, descr=<ArrayF 8>)
i32 = float_ne(f31, 0.000000)
guard_true(i32, descr=...)
i36 = int_add(i24, 1)
i37 = int_add(i29, 8)
i38 = int_ge(i36, i30)
guard_false(i38, descr=...)
jump(..., descr=...)
=========================== short test summary info ============================
FAIL pypy/module/pypyjit/test_pypy_c/test_intbound.py::TestIntbound::()::test_intbound_simple::[74]
FAIL pypy/module/pypyjit/test_pypy_c/test_jitlogparser.py::TestLogParser::()::test
FAIL pypy/module/pypyjit/test_pypy_c/test_micronumpy.py::TestMicroNumPy::()::test_reduce_logical_and
============= 3 failed, 1051 passed, 153 skipped in 64.93 seconds ==============
program finished with exit code 1
elapsedTime=65.198592