X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=scripts%2Fgen_ir.py;h=f6438ba5d069d5fa8d0acfc7b5d46e2aacef8652;hb=d543bd3efe5deadc0a34423cb8645db7ff9ce704;hp=4f2a2d92270860d3129c4c3dffc2a77c35d1acb5;hpb=950b1afbd460465ae6c8ff2a8fe606fe61ddbf22;p=libfirm diff --git a/scripts/gen_ir.py b/scripts/gen_ir.py index 4f2a2d922..f6438ba5d 100755 --- a/scripts/gen_ir.py +++ b/scripts/gen_ir.py @@ -385,15 +385,15 @@ irnode_h_template = env.from_string( '''/* Warning: automatically generated code */ {%- for node in nodes|isnot('custom_is') %} -static inline int _is_{{node.name}}(const ir_node *node) +static inline int is_{{node.name}}_(const ir_node *node) { assert(node != NULL); - return _get_irn_op(node) == op_{{node.name}}; + return get_irn_op_(node) == op_{{node.name}}; } {%- endfor -%} {% for node in nodes %} -#define is_{{node.name}}(node) _is_{{node.name}}(node) +#define is_{{node.name}}(node) is_{{node.name}}_(node) {%- endfor %} ''') @@ -403,7 +403,7 @@ irnode_template = env.from_string( {% for node in nodes %} int (is_{{node.name}})(const ir_node *node) { - return _is_{{node.name}}(node); + return is_{{node.name}}_(node); } {% endfor %} @@ -440,6 +440,27 @@ void (set_{{node.name}}_{{input[0]}})(ir_node *node, ir_node *{{input[0]|escape_ {% endfor %} ''') +irdump_template = env.from_string( +'''/* Warning: automatically generated code */ +{% for node in nodes %} +{%- if node.outs %} +static const pns_lookup_t {{node.name}}_lut[] = { + {%- for out in node.outs %} + { pn_{{node.name}}_{{out[0]}}, "{{out[0]}}" }, + {%- endfor %} +}; +{% endif -%} +{%- endfor %} + +static const proj_lookup_t proj_lut[] = { + {%- for node in nodes -%} + {%- if node.outs %} + { iro_{{node.name}}, ARRAY_SIZE({{node.name}}_lut), {{node.name}}_lut }, + {%- endif %} + {%- endfor %} +}; +''') + irop_template = env.from_string( '''/* Warning: automatically generated code */ {% for node in nodes %} @@ -484,6 +505,8 @@ nodeops_h_template = env.from_string( #include "firm_types.h" +#include "begin.h" + /** * @addtogroup ir_node * @{ @@ -585,6 +608,8 @@ FIRM_API void set_{{node.name}}_{{attr.name}}(ir_node *node, {{attr.type}} {{att /** @} */ +#include "end.h" + #endif ''') @@ -676,6 +701,10 @@ def main(argv): file.write(irop_template.render(nodes = real_nodes)) file.close() + file = open(gendir + "/gen_irdump.c.inl", "w") + file.write(irdump_template.render(nodes = real_nodes)) + file.close() + file = open(gendir2 + "/opcodes.h", "w") file.write(opcodes_h_template.render(nodes = real_nodes)) file.close()