mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-21 20:10:14 +01:00
And move them inside the compiler since they (especially asm) rely on a bunch of internal types. Acked-by: Dylan Baker <dylan@pnwbakers.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27579>
76 lines
2.2 KiB
Python
Executable file
76 lines
2.2 KiB
Python
Executable file
#!/usr/bin/env python3
|
|
|
|
import argparse
|
|
import difflib
|
|
import errno
|
|
import os
|
|
import pathlib
|
|
import subprocess
|
|
import sys
|
|
|
|
# The meson version handles windows paths better, but if it's not available
|
|
# fall back to shlex
|
|
try:
|
|
from meson.mesonlib import split_args
|
|
except ImportError:
|
|
from shlex import split as split_args
|
|
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument('--brw_asm',
|
|
help='path to brw_asm binary')
|
|
parser.add_argument('--gen_name',
|
|
help='name of the hardware generation (as understood by brw_asm)')
|
|
parser.add_argument('--gen_folder',
|
|
type=pathlib.Path,
|
|
help='name of the folder for the generation')
|
|
args = parser.parse_args()
|
|
|
|
wrapper = os.environ.get('MESON_EXE_WRAPPER')
|
|
if wrapper is not None:
|
|
brw_asm = split_args(wrapper) + [args.brw_asm]
|
|
else:
|
|
brw_asm = [args.brw_asm]
|
|
|
|
if not args.gen_folder.is_dir():
|
|
print('Test files path does not exist or is not a directory.',
|
|
file=sys.stderr)
|
|
exit(99)
|
|
|
|
success = True
|
|
|
|
for asm_file in args.gen_folder.glob('*.asm'):
|
|
expected_file = asm_file.stem + '.expected'
|
|
expected_path = args.gen_folder / expected_file
|
|
|
|
try:
|
|
command = brw_asm + [
|
|
'--type', 'hex',
|
|
'--gen', args.gen_name,
|
|
asm_file
|
|
]
|
|
with subprocess.Popen(command,
|
|
stdout=subprocess.PIPE,
|
|
stderr=subprocess.DEVNULL) as cmd:
|
|
lines_after = [line.decode('ascii') for line in cmd.stdout.readlines()]
|
|
except OSError as e:
|
|
if e.errno == errno.ENOEXEC:
|
|
print('Skipping due to inability to run host binaries.',
|
|
file=sys.stderr)
|
|
exit(77)
|
|
raise
|
|
|
|
with expected_path.open() as f:
|
|
lines_before = f.readlines()
|
|
|
|
diff = ''.join(difflib.unified_diff(lines_before, lines_after,
|
|
expected_file, asm_file.stem + '.out'))
|
|
|
|
if diff:
|
|
print('Output comparison for {}:'.format(asm_file.name))
|
|
print(diff)
|
|
success = False
|
|
else:
|
|
print('{} : PASS'.format(asm_file.name))
|
|
|
|
if not success:
|
|
exit(1)
|