1cb93a386Sopenharmony_ci# Copyright 2019 The Chromium Authors. All rights reserved.
2cb93a386Sopenharmony_ci# Use of this source code is governed by a BSD-style license that can be
3cb93a386Sopenharmony_ci# found in the LICENSE file.
4cb93a386Sopenharmony_ci
5cb93a386Sopenharmony_ci
6cb93a386Sopenharmony_cifrom __future__ import print_function
7cb93a386Sopenharmony_ciimport json
8cb93a386Sopenharmony_ciimport os
9cb93a386Sopenharmony_ciimport subprocess
10cb93a386Sopenharmony_ciimport sys
11cb93a386Sopenharmony_ci
12cb93a386Sopenharmony_ci
13cb93a386Sopenharmony_ciif len(sys.argv) != 3:
14cb93a386Sopenharmony_ci    print(sys.argv[0], ' <compiler> <folder>')
15cb93a386Sopenharmony_ci    sys.exit(1)
16cb93a386Sopenharmony_ci
17cb93a386Sopenharmony_cicompiler = sys.argv[1]
18cb93a386Sopenharmony_cifolder = sys.argv[2]
19cb93a386Sopenharmony_ci
20cb93a386Sopenharmony_cistats = {}
21cb93a386Sopenharmony_ci
22cb93a386Sopenharmony_cifor filename in os.listdir(folder):
23cb93a386Sopenharmony_ci    basename, ext = os.path.splitext(filename)
24cb93a386Sopenharmony_ci    if ext not in ['.frag', '.spv']:
25cb93a386Sopenharmony_ci        continue
26cb93a386Sopenharmony_ci    cmdline = [compiler]
27cb93a386Sopenharmony_ci    if ext == '.spv':
28cb93a386Sopenharmony_ci        cmdline.extend(['-f', '-p'])
29cb93a386Sopenharmony_ci    cmdline.append(os.path.join(folder, filename))
30cb93a386Sopenharmony_ci    try:
31cb93a386Sopenharmony_ci        output = subprocess.check_output(cmdline)
32cb93a386Sopenharmony_ci    except subprocess.CalledProcessError:
33cb93a386Sopenharmony_ci        continue
34cb93a386Sopenharmony_ci    stats.setdefault(basename, {})
35cb93a386Sopenharmony_ci    for line in output.splitlines():
36cb93a386Sopenharmony_ci        if line.startswith('Instructions Emitted'):
37cb93a386Sopenharmony_ci            inst = line.split(':')[1].split()
38cb93a386Sopenharmony_ci            stats[basename][ext] = inst
39cb93a386Sopenharmony_ci
40cb93a386Sopenharmony_cifor k, v in stats.iteritems():
41cb93a386Sopenharmony_ci    gl = v.get('.frag', ['', '', ''])
42cb93a386Sopenharmony_ci    vk = v.get('.spv', ['', '', ''])
43cb93a386Sopenharmony_ci    print('{0},{1},{2},{3},{4},{5},{6}'.format(
44cb93a386Sopenharmony_ci        k, gl[0], gl[1], gl[2], vk[0], vk[1], vk[2]))
45