xref: /aosp_15_r20/external/mesa3d/src/amd/registers/mergedbs.py (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker#
2*61046927SAndroid Build Coastguard Worker# Copyright 2017-2019 Advanced Micro Devices, Inc.
3*61046927SAndroid Build Coastguard Worker#
4*61046927SAndroid Build Coastguard Worker# SPDX-License-Identifier: MIT
5*61046927SAndroid Build Coastguard Worker#
6*61046927SAndroid Build Coastguard Worker"""
7*61046927SAndroid Build Coastguard WorkerHelper script to merge register database JSON files.
8*61046927SAndroid Build Coastguard Worker
9*61046927SAndroid Build Coastguard Worker  usage: python3 mergedbs.py [FILES...]
10*61046927SAndroid Build Coastguard Worker
11*61046927SAndroid Build Coastguard WorkerWill merge the given JSON files and output the result on stdout.
12*61046927SAndroid Build Coastguard Worker"""
13*61046927SAndroid Build Coastguard Worker
14*61046927SAndroid Build Coastguard Workerfrom collections import defaultdict
15*61046927SAndroid Build Coastguard Workerimport json
16*61046927SAndroid Build Coastguard Workerimport re
17*61046927SAndroid Build Coastguard Workerimport sys
18*61046927SAndroid Build Coastguard Worker
19*61046927SAndroid Build Coastguard Workerfrom regdb import RegisterDatabase, deduplicate_enums, deduplicate_register_types
20*61046927SAndroid Build Coastguard Worker
21*61046927SAndroid Build Coastguard Workerdef main():
22*61046927SAndroid Build Coastguard Worker    regdb = RegisterDatabase()
23*61046927SAndroid Build Coastguard Worker    for filename in sys.argv[1:]:
24*61046927SAndroid Build Coastguard Worker        with open(filename, 'r') as filp:
25*61046927SAndroid Build Coastguard Worker            regdb.update(RegisterDatabase.from_json(json.load(filp)))
26*61046927SAndroid Build Coastguard Worker
27*61046927SAndroid Build Coastguard Worker    deduplicate_enums(regdb)
28*61046927SAndroid Build Coastguard Worker    deduplicate_register_types(regdb)
29*61046927SAndroid Build Coastguard Worker
30*61046927SAndroid Build Coastguard Worker    print(regdb.encode_json_pretty())
31*61046927SAndroid Build Coastguard Worker
32*61046927SAndroid Build Coastguard Worker
33*61046927SAndroid Build Coastguard Workerif __name__ == '__main__':
34*61046927SAndroid Build Coastguard Worker    main()
35*61046927SAndroid Build Coastguard Worker
36*61046927SAndroid Build Coastguard Worker# kate: space-indent on; indent-width 4; replace-tabs on;
37