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