X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fmips%2Fmips_spec.pl;h=2cc8789b83ee840bfd7d09b819ed8b535a062983;hb=026ec52ac914eee06e7afb961fb754735fb4ad9f;hp=e93e2be7e2fcc8904392f6b4e77602af76d8fcf1;hpb=21d6dc90da67b8ef549565754b353e700e901cac;p=libfirm diff --git a/ir/be/mips/mips_spec.pl b/ir/be/mips/mips_spec.pl index e93e2be7e..2cc8789b8 100644 --- a/ir/be/mips/mips_spec.pl +++ b/ir/be/mips/mips_spec.pl @@ -21,11 +21,19 @@ $new_emit_syntax = 1; # { "type" => "type 2", "name" => "name 2" }, # ... # ], -# "comment" => "any comment for constructor", +# comment => "any comment for constructor", # reg_req => { in => [ "reg_class|register" ], out => [ "reg_class|register|in_rX" ] }, -# "cmp_attr" => "c source code for comparing node attributes", +# cmp_attr => "c source code for comparing node attributes", +# outs => { "out1", "out2" } # optional, creates pn_op_out1, ... consts +# ins => { "in1", "in2" } # optional, creates n_op_in1, ... consts +# mode => "mode_Iu" # optional, predefines the mode # emit => "emit code with templates", -# "rd_constructor" => "c source code which constructs an ir_node" +# attr => "attitional attribute arguments for constructor", +# init_attr => "emit attribute initialization template", +# rd_constructor => "c source code which constructs an ir_node", +# hash_func => "name of the hash function for this operation", +# latency => "latency of this operation (can be float)" +# attr_type => "name of the attribute struct", # }, # # ... # (all nodes you need to describe) @@ -89,7 +97,7 @@ $new_emit_syntax = 1; # NOTE: Last entry of each class is the largest Firm-Mode a register can hold\ %reg_classes = ( "gp" => [ - { name => "zero", type => 4+2 }, # always zero + { name => "zero", type => 4 }, # always zero { name => "at", type => 4 }, # reserved for assembler { name => "v0", realname => "2", type => 1 }, # first return value { name => "v1", realname => "3", type => 1 }, # second return value @@ -127,19 +135,19 @@ $new_emit_syntax = 1; ); # %reg_classes %emit_templates = ( - S0 => "${arch}_emit_source_register(env, node, 0);", - S1 => "${arch}_emit_source_register(env, node, 1);", - S2 => "${arch}_emit_source_register(env, node, 2);", - SI1 => "${arch}_emit_source_register_or_immediate(env, node, 1);", - D0 => "${arch}_emit_dest_register(env, node, 0);", - D1 => "${arch}_emit_dest_register(env, node, 1);", - D2 => "${arch}_emit_dest_register(env, node, 2);", - A0 => "${arch}_emit_load_store_address(env, node, 0);", - I => "${arch}_emit_immediate_suffix(env, node, 1);", - C => "${arch}_emit_immediate(env, node);", - JumpTarget => "${arch}_emit_jump_target(env, node);", - JumpTarget1 => "${arch}_emit_jump_target_proj(env, node, 1);", - JumpOrFallthrough => "${arch}_emit_jump_or_fallthrough(env, node, 0);", + S0 => "${arch}_emit_source_register(node, 0);", + S1 => "${arch}_emit_source_register(node, 1);", + S2 => "${arch}_emit_source_register(node, 2);", + SI1 => "${arch}_emit_source_register_or_immediate(node, 1);", + D0 => "${arch}_emit_dest_register(node, 0);", + D1 => "${arch}_emit_dest_register(node, 1);", + D2 => "${arch}_emit_dest_register(node, 2);", + A0 => "${arch}_emit_load_store_address(node, 0);", + I => "${arch}_emit_immediate_suffix(node, 1);", + C => "${arch}_emit_immediate(node);", + JumpTarget => "${arch}_emit_jump_target(node);", + JumpTarget1 => "${arch}_emit_jump_target_proj(node, 1);", + JumpOrFallthrough => "${arch}_emit_jump_or_fallthrough(node, 0);", ); $default_attr_type = "mips_attr_t"; @@ -148,12 +156,12 @@ $default_copy_attr = "mips_copy_attr"; $mode_gp = "mode_Iu"; %init_attr = ( - mips_attr_t => "\tinit_mips_attributes(res, flags, in_reqs, out_reqs, exec_units, n_res, latency);", + mips_attr_t => "\tinit_mips_attributes(res, flags, in_reqs, out_reqs, exec_units, n_res);", - mips_immediate_attr_t => "\tinit_mips_attributes(res, flags, in_reqs, out_reqs, exec_units, n_res, latency);\n". + mips_immediate_attr_t => "\tinit_mips_attributes(res, flags, in_reqs, out_reqs, exec_units, n_res);\n". "\tinit_mips_immediate_attributes(res, imm_type, entity, val);", - mips_load_store_attr_t => "\tinit_mips_attributes(res, flags, in_reqs, out_reqs, exec_units, n_res, latency);\n". + mips_load_store_attr_t => "\tinit_mips_attributes(res, flags, in_reqs, out_reqs, exec_units, n_res);\n". "\tinit_mips_load_store_attributes(res, entity, offset);", );