def main(): global c global h parser = argparse.ArgumentParser() parser.add_argument("--header", help="Header file to write") parser.add_argument("--code", help="C file to write") parser.add_argument("xml_files", nargs='+', help="List of xml metrics files to process") args = parser.parse_args() # Note: either arg may == None h = codegen.Codegen(args.header) c = codegen.Codegen(args.code) gens = [] for xml_file in args.xml_files: gens.append(codegen.Gen(xml_file, c)) copyright = textwrap.dedent("""\ /* Autogenerated file, DO NOT EDIT manually! generated by {} * * Copyright (c) 2018 Intel Corporation * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice (including the next * paragraph) shall be included in all copies or substantial portions of the * Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ """).format(os.path.basename(__file__)) h(copyright) c(copyright) generate_equations(args, gens)
nt.transitions[t] = lhs + [t] + rhs if nt.get_nullable() != None: nt.transitions[None] = nt.get_nullable() for nt in g.non_terminals: figure_state(nt) g.do_work() visited = set() progress = True while progress: progress = False worklist = list(g.splits.itervalues()) + list(g.loops.itervalues()) for node in worklist: if node not in visited: visited.add(node) figure_state(node) progress = True g.do_work() import codegen with open(outputFile, "w") as file: stream = codegen.Stream(file) code = codegen.Codegen(g) code.codegen(stream) if show_graph: g.graph.view()
#just takes in the whole program and turns it into a string and sends it down #probably not the most memory effecient way to do it. import sys, lexer, parser, codegen in_file = open(sys.argv[1], "r") in_str = in_file.read() in_file.close() lex = lexer.Lex(in_str) tokens = lex.lex() par = parser.Parser(tokens) ast = par.parse() print(ast) try: cdg = codegen.Codegen(sys.argv[2], ast) except IndexError: cdg = codegen.Codegen("out.ll", ast) cdg.codegen() cdg.e.close()
def main(): global c global h parser = argparse.ArgumentParser() parser.add_argument("--header", help="Header file to write") parser.add_argument("--code", help="C file to write") parser.add_argument("--equations-include", help="Equations header file") parser.add_argument("--registers-include", help="Registers header file") parser.add_argument("--xml-file", help="Xml file to generate metric sets from") args = parser.parse_args() # Note: either arg may == None h = codegen.Codegen(args.header) c = codegen.Codegen(args.code) gen = codegen.Gen(args.xml_file, c) copyright = textwrap.dedent("""\ /* Autogenerated file, DO NOT EDIT manually! generated by {} * * Copyright (c) 2018 Intel Corporation * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice (including the next * paragraph) shall be included in all copies or substantial portions of the * Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ """).format(os.path.basename(__file__)) header_file = os.path.basename(args.header) header_define = header_file.replace('.', '_').upper() h(copyright) h( textwrap.dedent("""\ #ifndef %s #define %s #include "i915/perf.h" """ % (header_define, header_define))) # Print out all set registration functions for each generation. h("void intel_perf_load_metrics_" + gen.chipset + "(struct intel_perf *perf);\n\n") h(textwrap.dedent("""\ #endif /* %s */ """ % header_define)) c(copyright) generate_metric_sets(args, gen)