- $temp .= " attr->out_req = NULL;\n";
- $temp .= " attr->slots = NULL;\n";
- $temp .= " attr->n_res = 0;\n";
+ $out_param = "NULL, 0";
+ }
+ }
+ else {
+ $in_param = "NULL";
+ $out_param = "NULL, 0";
+ }
+ $temp .= "\n /* create node */\n";
+
+ my $latency = 1;
+ if (exists($n{"latency"})) {
+ $latency = $n{"latency"};
+ }
+
+ my $mode = "mode";
+ if ($tuple == 1) {
+ $mode = "mode_T";
+ }
+ $temp .= " res = new_ir_node(db, irg, block, op_$op, $mode, $arity, ".($arity > 0 ? "in" : "NULL").");\n";
+
+ $temp .= "\n /* init node attributes */\n";
+ $temp .= " init_$arch\_attributes(res, flags, $in_param, $out_param, $latency);\n";
+
+ # set flags for outs
+ if ($#out_flags >= 0) {
+ $temp .= "\n /* set flags for outs */\n";
+ for (my $idx = 0; $idx <= $#out_flags; $idx++) {
+ my $flags = "";
+ my $prefix = "";
+
+ foreach my $flag (split(/\|/, $out_flags[$idx])) {
+ if ($flag eq "I") {
+ $flags .= $prefix."arch_irn_flags_ignore";
+ $prefix = " | ";
+ }
+ elsif ($flag eq "S") {
+ $flags .= $prefix."arch_irn_flags_modify_sp";
+ $prefix = " | ";
+ }
+ }
+
+ $temp .= " set_$arch\_out_flags(res, $flags, $idx);\n";