spirv-tools: vendor as full-fork recipe (path=source, patches baked)
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
#!/usr/bin/env python3
|
||||
# Copyright (c) 2017 Google Inc.
|
||||
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
"""Tests correctness of opt pass tools/opt --compact-ids."""
|
||||
|
||||
import os.path
|
||||
import sys
|
||||
import tempfile
|
||||
|
||||
def test_spirv_file(path, temp_dir):
|
||||
optimized_spv_path = os.path.join(temp_dir, 'optimized.spv')
|
||||
optimized_dis_path = os.path.join(temp_dir, 'optimized.dis')
|
||||
converted_spv_path = os.path.join(temp_dir, 'converted.spv')
|
||||
converted_dis_path = os.path.join(temp_dir, 'converted.dis')
|
||||
|
||||
os.system('tools/spirv-opt ' + path + ' -o ' + optimized_spv_path +
|
||||
' --compact-ids')
|
||||
os.system('tools/spirv-dis ' + optimized_spv_path + ' -o ' +
|
||||
optimized_dis_path)
|
||||
|
||||
os.system('tools/spirv-dis ' + path + ' -o ' + converted_dis_path)
|
||||
os.system('tools/spirv-as ' + converted_dis_path + ' -o ' +
|
||||
converted_spv_path)
|
||||
os.system('tools/spirv-dis ' + converted_spv_path + ' -o ' +
|
||||
converted_dis_path)
|
||||
|
||||
with open(converted_dis_path, 'r') as f:
|
||||
converted_dis = f.readlines()[3:]
|
||||
|
||||
with open(optimized_dis_path, 'r') as f:
|
||||
optimized_dis = f.readlines()[3:]
|
||||
|
||||
return converted_dis == optimized_dis
|
||||
|
||||
def print_usage():
|
||||
template= \
|
||||
"""{script} tests correctness of opt pass tools/opt --compact-ids
|
||||
|
||||
USAGE: python3 {script} [<spirv_files>]
|
||||
|
||||
Requires tools/spirv-dis, tools/spirv-as and tools/spirv-opt to be in path
|
||||
(call the script from the SPIRV-Tools build output directory).
|
||||
|
||||
TIP: In order to test all .spv files under current dir use
|
||||
find <path> -name "*.spv" -print0 | xargs -0 -s 2000000 python {script}
|
||||
"""
|
||||
print(template.format(script=sys.argv[0]));
|
||||
|
||||
def main():
|
||||
if not os.path.isfile('tools/spirv-dis'):
|
||||
print('error: tools/spirv-dis not found')
|
||||
print_usage()
|
||||
exit(1)
|
||||
|
||||
if not os.path.isfile('tools/spirv-as'):
|
||||
print('error: tools/spirv-as not found')
|
||||
print_usage()
|
||||
exit(1)
|
||||
|
||||
if not os.path.isfile('tools/spirv-opt'):
|
||||
print('error: tools/spirv-opt not found')
|
||||
print_usage()
|
||||
exit(1)
|
||||
|
||||
paths = sys.argv[1:]
|
||||
if not paths:
|
||||
print_usage()
|
||||
|
||||
num_failed = 0
|
||||
|
||||
temp_dir = tempfile.mkdtemp()
|
||||
|
||||
for path in paths:
|
||||
success = test_spirv_file(path, temp_dir)
|
||||
if not success:
|
||||
print('Test failed for ' + path)
|
||||
num_failed += 1
|
||||
|
||||
print('Tested ' + str(len(paths)) + ' files')
|
||||
|
||||
if num_failed:
|
||||
print(str(num_failed) + ' tests failed')
|
||||
exit(1)
|
||||
else:
|
||||
print('All tests successful')
|
||||
exit(0)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in New Issue
Block a user