From c481c330582f3cb90f5d671c98d079ddbe6bd235 Mon Sep 17 00:00:00 2001 From: Matthias Braun Date: Tue, 1 Apr 2008 12:26:42 +0000 Subject: [PATCH] Move grgen stuff to seprarate directory (will adapt firm build process in a few moments) [r19038] --- ir/be/grgen/Makefile.in | 60 - ir/be/grgen/action.c | 1552 --- ir/be/grgen/action.h | 364 - ir/be/grgen/action_t.h | 358 - ir/be/grgen/ana_vs.c | 514 - ir/be/grgen/ana_vs.h | 34 - ir/be/grgen/ana_vs_t.h | 341 - ir/be/grgen/analyze.c | 82 - ir/be/grgen/analyze.h | 49 - ir/be/grgen/analyze_t.h | 67 - ir/be/grgen/auxilary.c | 15 - ir/be/grgen/auxilary_t.h | 32 - ir/be/grgen/base.c | 300 - ir/be/grgen/base.h | 56 - ir/be/grgen/base_t.h | 167 - ir/be/grgen/common.h | 15 - ir/be/grgen/common_t.h | 33 - ir/be/grgen/grs.h | 13 - ir/be/grgen/grshooks.c | 252 - ir/be/grgen/grshooks_t.h | 8 - ir/be/grgen/match.c | 2140 --- ir/be/grgen/match.h | 142 - ir/be/grgen/match_t.h | 75 - ir/be/grgen/matchplan.c | 72 - ir/be/grgen/matchplan.h | 69 - ir/be/grgen/matchplan_t.h | 84 - ir/be/grgen/plan_vs_dmst.c | 1620 --- ir/be/grgen/plan_vs_dmst.h | 8 - ir/be/grgen/simd/C_Patterns/C_Patterns.c | 352 - ir/be/grgen/simd/C_Patterns/Firm.gm | 462 - .../grgen/simd/C_Patterns/define_operation.h | 10 - ir/be/grgen/simd/be_spec_dumper.c | 125 - ir/be/grgen/simd/be_spec_dumper.h | 23 - ir/be/grgen/simd/create_pattern.c | 894 -- ir/be/grgen/simd/create_pattern.h | 14 - ir/be/grgen/simd/create_pattern_t.h | 104 - ir/be/grgen/simd/firm_node_ext.c | 262 - ir/be/grgen/simd/firm_node_ext.h | 40 - ir/be/grgen/simd/gen_patterns.c | 3450 ----- ir/be/grgen/simd/generated/existing_rules.c | 2 - ir/be/grgen/simd/generated/gen_patterns.c | 11324 ---------------- ir/be/grgen/simd/generated/node_attributes.c | 3 - ir/be/grgen/simd/generated/pattern_importer.c | 21 - ir/be/grgen/simd/grgen_dumper.c | 1116 -- ir/be/grgen/simd/grgen_dumper.h | 27 - ir/be/grgen/simd/grgen_dumper__t.h | 64 - ir/be/grgen/simd/normalize.c | 273 - ir/be/grgen/simd/normalize.h | 17 - ir/be/grgen/simd/normalize_t.h | 24 - ir/be/grgen/simd/presets.h | 13 - ir/be/grgen/simd/rule_info_dumper.c | 97 - ir/be/grgen/simd/rule_info_dumper.h | 31 - ir/be/grgen/simd/search_tree.c | 801 -- ir/be/grgen/simd/search_tree.h | 20 - ir/be/grgen/simd/search_tree_t.h | 116 - ir/be/grgen/simd/simd_opt.c | 1183 -- ir/be/grgen/simd/simd_opt.h | 16 - ir/be/grgen/simd/simd_opt_t.h | 84 - ir/be/grgen/simd/simd_presets.h | 85 - .../testprograms/patterns/vadd_memory/Firm.gm | 441 - .../patterns/vadd_memory/vadd_host.c | 31 - .../patterns/vadd_memory/vadd_memory.c | 74 - ir/be/grgen/uf_mpq.h | 382 - 63 files changed, 30503 deletions(-) delete mode 100644 ir/be/grgen/Makefile.in delete mode 100644 ir/be/grgen/action.c delete mode 100644 ir/be/grgen/action.h delete mode 100644 ir/be/grgen/action_t.h delete mode 100644 ir/be/grgen/ana_vs.c delete mode 100644 ir/be/grgen/ana_vs.h delete mode 100644 ir/be/grgen/ana_vs_t.h delete mode 100644 ir/be/grgen/analyze.c delete mode 100644 ir/be/grgen/analyze.h delete mode 100644 ir/be/grgen/analyze_t.h delete mode 100644 ir/be/grgen/auxilary.c delete mode 100644 ir/be/grgen/auxilary_t.h delete mode 100644 ir/be/grgen/base.c delete mode 100644 ir/be/grgen/base.h delete mode 100644 ir/be/grgen/base_t.h delete mode 100644 ir/be/grgen/common.h delete mode 100644 ir/be/grgen/common_t.h delete mode 100644 ir/be/grgen/grs.h delete mode 100644 ir/be/grgen/grshooks.c delete mode 100644 ir/be/grgen/grshooks_t.h delete mode 100644 ir/be/grgen/match.c delete mode 100644 ir/be/grgen/match.h delete mode 100644 ir/be/grgen/match_t.h delete mode 100644 ir/be/grgen/matchplan.c delete mode 100644 ir/be/grgen/matchplan.h delete mode 100644 ir/be/grgen/matchplan_t.h delete mode 100644 ir/be/grgen/plan_vs_dmst.c delete mode 100644 ir/be/grgen/plan_vs_dmst.h delete mode 100644 ir/be/grgen/simd/C_Patterns/C_Patterns.c delete mode 100644 ir/be/grgen/simd/C_Patterns/Firm.gm delete mode 100644 ir/be/grgen/simd/C_Patterns/define_operation.h delete mode 100644 ir/be/grgen/simd/be_spec_dumper.c delete mode 100644 ir/be/grgen/simd/be_spec_dumper.h delete mode 100644 ir/be/grgen/simd/create_pattern.c delete mode 100644 ir/be/grgen/simd/create_pattern.h delete mode 100644 ir/be/grgen/simd/create_pattern_t.h delete mode 100644 ir/be/grgen/simd/firm_node_ext.c delete mode 100644 ir/be/grgen/simd/firm_node_ext.h delete mode 100644 ir/be/grgen/simd/gen_patterns.c delete mode 100644 ir/be/grgen/simd/generated/existing_rules.c delete mode 100644 ir/be/grgen/simd/generated/gen_patterns.c delete mode 100644 ir/be/grgen/simd/generated/node_attributes.c delete mode 100644 ir/be/grgen/simd/generated/pattern_importer.c delete mode 100644 ir/be/grgen/simd/grgen_dumper.c delete mode 100644 ir/be/grgen/simd/grgen_dumper.h delete mode 100644 ir/be/grgen/simd/grgen_dumper__t.h delete mode 100644 ir/be/grgen/simd/normalize.c delete mode 100644 ir/be/grgen/simd/normalize.h delete mode 100644 ir/be/grgen/simd/normalize_t.h delete mode 100644 ir/be/grgen/simd/presets.h delete mode 100644 ir/be/grgen/simd/rule_info_dumper.c delete mode 100644 ir/be/grgen/simd/rule_info_dumper.h delete mode 100644 ir/be/grgen/simd/search_tree.c delete mode 100644 ir/be/grgen/simd/search_tree.h delete mode 100644 ir/be/grgen/simd/search_tree_t.h delete mode 100644 ir/be/grgen/simd/simd_opt.c delete mode 100644 ir/be/grgen/simd/simd_opt.h delete mode 100644 ir/be/grgen/simd/simd_opt_t.h delete mode 100644 ir/be/grgen/simd/simd_presets.h delete mode 100644 ir/be/grgen/simd/testprograms/patterns/vadd_memory/Firm.gm delete mode 100644 ir/be/grgen/simd/testprograms/patterns/vadd_memory/vadd_host.c delete mode 100644 ir/be/grgen/simd/testprograms/patterns/vadd_memory/vadd_memory.c delete mode 100644 ir/be/grgen/uf_mpq.h diff --git a/ir/be/grgen/Makefile.in b/ir/be/grgen/Makefile.in deleted file mode 100644 index 110dc8e01..000000000 --- a/ir/be/grgen/Makefile.in +++ /dev/null @@ -1,60 +0,0 @@ -# -# Project: libFIRM -# File name: ir/arch/Makefile.in -# Purpose: -# Author: Boris Boesler, Till Riedel, Michael Beck, Gernot Veit Batz -# Modified by: -# Created: -# CVS-ID: $Id$ -# Copyright: (c) 1999-2003 Universität Karlsruhe -# Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. -# - -top_srcdir := @top_srcdir@ -srcdir = @srcdir@ -topdir = ../.. -subdir := ir/ir - -INSTALL_HEADERS = base.h \ - action.h \ - analyze.h \ - ana_vs.h \ - matchplan.h \ - match.h \ - plan_vs_dmst.h \ - grs.h \ - common.h - -SOURCES = $(INSTALL_HEADERS) - -SOURCES += Makefile.in \ - base.c \ - analyze.c \ - auxilary.c \ - plan_vs_dmst.c \ - ana_vs.c \ - matchplan.c \ - grshooks.c \ - action.c \ - match.c - -include $(topdir)/MakeRules - -CPPFLAGS += -I$(top_srcdir)/ir/adt -I$(top_srcdir)/ir/ir -I$(top_srcdir)/ir/common \ - -I$(top_srcdir)/ir/ident -I$(top_srcdir)/ir/tr -I$(top_srcdir)/ir/tv \ - -I$(top_srcdir)/ir/debug -I$(top_srcdir)/ir/ana -I$(top_srcdir)/ir/st \ - -I$(top_srcdir)/ir/arch -I$(top_srcdir)/ir/stat -I$(top_srcdir)/ir/external \ - -I$(topdir)/ir/config - -include $(top_srcdir)/MakeTargets - -# override header install -local_install_headers: $(INCLUDEDIR)/ext/grs - $(INSTALL) -m u+rw,a+r $(addprefix $(srcdir)/,$(INSTALL_HEADERS)) $(INCLUDEDIR)/ext/grs - -$(INCLUDEDIR)/ext/grs: - mkdir -p $@ - -all: subdir.o - -$(srcdir)/ext/grs/plan_vs_dmst.c: $(srcdir)/ext/grs/uf_mpq.h diff --git a/ir/be/grgen/action.c b/ir/be/grgen/action.c deleted file mode 100644 index 407aaadd4..000000000 --- a/ir/be/grgen/action.c +++ /dev/null @@ -1,1552 +0,0 @@ -/* - * Project: libFIRM/extension module/GRS-matcher - * File name: ext/action.c - * Purpose: funcytions to construct for libfirm grs actions - * Author: Veit Batz - * Modified by: Andreas Schoesser - * Created: 29. August 2005 - * CVS-ID: $Id$ - * Copyright: (c) 2005 Universität Karlsruhe - * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. - */ - -#include "common_t.h" -#include "action_t.h" - - -#define ext_grs_PSEUDO_PREFIX "_pseudo__" -#undef MAX -#define MAX(a,b) (a)>=(b) ? (a) : (b) - - -/* counter to create action ids from */ -static int action_counter = 0; - -/* obstack to store actions on */ -static struct obstack obst; -/* tells whether the obstack has already been initialized */ -static int obst_init = 0; - - - -static int not_injective = 0; -static int multiple_entry = 0; -static int already_exists = 0; - - -/* a pointer to pointer map elem */ -typedef struct { - /* kind */ - ext_grs_elem_kind_t kind; - /* the preimage */ - void *pre; - /* the image */ - void *img; -} -ext_grs_ptr_map_entry_t; - -int ptr_map_cmp_func(const void *elt, const void *key) { - - ext_grs_ptr_map_entry_t *entry1 = (ext_grs_ptr_map_entry_t *) elt; - ext_grs_ptr_map_entry_t *entry2 = (ext_grs_ptr_map_entry_t *) key; - - if (entry1->pre != entry2->pre && entry1->img == entry2->img) - not_injective = 1; - - if (entry1->pre == entry2->pre && entry1->img != entry2->img) - multiple_entry = 1; - - if (entry1->pre == entry2->pre && entry1->img == entry2->img) - already_exists = 1; - - return entry1->pre != entry2->pre; -} - - - - -static void init_graph(ext_grs_graph_t *graph, -ext_grs_action_t *act, ext_grs_graph_kind_t kind) -{ - memset(graph, 0, sizeof(*graph)); - - graph->kind = kind; - graph->action = act; - LC_INIT_LIST_HEAD(& graph->nodes); - LC_INIT_LIST_HEAD(& graph->edges); -} - - -/* - * Copy all nodes into the action and gen pseudo edges - * modeling the explicit matching of a node - * PseudoEdge == Edge modelled as a node - */ -static int import_graph_info(ext_grs_action_t *action, ext_grs_graph_t *graph) -{ - int edge_aiid = action->max_edge_aiid; - - lc_list_t *pos, *n; - - assert (action->kind != ext_grs_k_replacement && - "import_graph_info() is not meant for calling on replacement graphs"); - - - /* init the graphs root node */ - graph->root_node.kind = ext_grs_k_pseudo_node; - graph->root_node.graph = graph; - LC_INIT_LIST_HEAD(& graph->root_node.edges[ext_grs_in]); - LC_INIT_LIST_HEAD(& graph->root_node.edges[ext_grs_out]); - graph->root_node.name = ext_grs_PSEUDO_PREFIX "root_node"; - - lc_list_for_each (pos, & graph->nodes) { - - ext_grs_node_t *node = lc_list_entry(pos, ext_grs_node_t, node_list); - ext_grs_edge_t *pseudo_edge = obstack_alloc(&obst, sizeof(*pseudo_edge)); - - memset(pseudo_edge, 0, sizeof(*pseudo_edge)); - - /* store the node in the actions node array */ - if (action->nodes[node->aiid] == NULL) { - action->nodes[node->aiid] = node; - } - else { - printf("module ext/grs: ERROR in function ext_grs_act_mature()\n"); - printf(" Multiple assigned node id encountered.\n"); - printf(" You may have added nodes with the same id via ext_grs_act_add_node().\n\n"); - return 0; - } - - /* for each node setup the pseudo edge modeling the - * explicit matching of that node */ - pseudo_edge->graph = graph; - pseudo_edge->kind = ext_grs_k_pseudo_edge; - pseudo_edge->aiid = ++edge_aiid; - pseudo_edge->arg = node; - pseudo_edge->func = & graph->root_node; - pseudo_edge->genuine_elem.kind = ext_grs_k_node; - pseudo_edge->genuine_elem.val.n = node; - pseudo_edge->name = obstack_alloc( - & obst, - (1 + strlen(ext_grs_PSEUDO_PREFIX) + strlen(node->name)) * sizeof(char) - ); - strcpy(pseudo_edge->name, ext_grs_PSEUDO_PREFIX); - strcat(pseudo_edge->name, node->name); - - /* add the pseudo edge to the graphs edge list */ - lc_list_add(& pseudo_edge->edge_list, & graph->edges); - /* add the pseudo edge to the tgt- and src-nodes in- and out-lists */ - lc_list_add(& pseudo_edge->list[ext_grs_in], - & pseudo_edge->func->edges[ext_grs_in]); - lc_list_add(& pseudo_edge->list[ext_grs_out], - & pseudo_edge->arg->edges[ext_grs_out]); - /* add the pseudo edge to the action */ - action->edges[edge_aiid] = pseudo_edge; - } - - /* copy all pattern edges into the action and for every - * edge gen a pseudo edge modeling the traversal of the original edge - * against its direction */ - lc_list_for_each_safe (pos, n, & graph->edges) { - - ext_grs_edge_t *edge = lc_list_entry(pos, ext_grs_edge_t, edge_list); - ext_grs_edge_t *pseudo_edge; - - if (edge->kind == ext_grs_k_pseudo_edge) - continue; - - pseudo_edge = obstack_alloc(&obst, sizeof(*pseudo_edge)); - memset(pseudo_edge, 0, sizeof(*pseudo_edge)); - - /* store the node in the actions node array */ - action->edges[edge->aiid] = edge; - - /* for each edge setup the pseudo edge modelling the - * against-direction-traversal of that edge */ - pseudo_edge->graph = edge->graph; - pseudo_edge->kind = ext_grs_k_pseudo_edge; - pseudo_edge->aiid = ++edge_aiid; - pseudo_edge->arg = edge->func; - pseudo_edge->func = edge->arg; - pseudo_edge->genuine_elem.kind = ext_grs_k_edge; - pseudo_edge->genuine_elem.val.e = edge; - pseudo_edge->name = obstack_alloc( - & obst, - (1 + strlen(ext_grs_PSEUDO_PREFIX) + strlen(edge->name)) * sizeof(char) - ); - strcpy(pseudo_edge->name, ext_grs_PSEUDO_PREFIX); - strcat(pseudo_edge->name, edge->name); - - /* add the pseudo edge to the graphs edge list */ - lc_list_add(& pseudo_edge->edge_list, & graph->edges); - /* add the pseudo edge to the tgt- and src-nodes in- and out-lists */ - lc_list_add(& pseudo_edge->list[ext_grs_in], - & pseudo_edge->func->edges[ext_grs_in]); - lc_list_add(& pseudo_edge->list[ext_grs_out], - & pseudo_edge->arg->edges[ext_grs_out]); - /* add the pseudo edge to the action */ - action->edges[edge_aiid] = pseudo_edge; - /* each actual edge knows the respective pseudo edge */ - edge->backward_edge = pseudo_edge; - } - - action->max_edge_aiid = edge_aiid; - - return 1; -} - - - -static void set_up_condition_stuff(ext_grs_action_t *action) { - - lc_list_t *pos; - int i; - - /* alloc space for bitsets telling which (pattern or negative) nodes and edges - * are involved in which conditions and vice versa wich conditions are refered - * by which nodes or edges */ - action->conditions = - obstack_alloc(&obst, action->n_conditions * sizeof(*action->conditions)); - action->conds_involved_nodes = - obstack_alloc(&obst, action->n_conditions * sizeof(*action->conds_involved_nodes)); - action->conds_involved_edges = - obstack_alloc(&obst, action->n_conditions * sizeof(*action->conds_involved_edges)); - - action->nodes_refering_conds = - obstack_alloc(&obst, (action->max_node_aiid+1) * sizeof(*action->nodes_refering_conds)); - action->edges_refering_conds = - obstack_alloc(&obst, (action->max_edge_aiid+1) * sizeof(*action->edges_refering_conds)); - - /* alloc a bitset for every (pattern or negative) node and edge */ - for(i = 0; i <= action->max_node_aiid; i++) - action->nodes_refering_conds[i] = - lc_bitset_obstack_alloc(&obst, action->n_conditions); - for(i = 0; i <= action->max_edge_aiid; i++) - action->edges_refering_conds[i] = - lc_bitset_obstack_alloc(&obst, action->n_conditions); - - /* alloc two bitset for every condition (telling which nodes and edges are involved), - * and setup the hole condition information */ - i = 0; - lc_list_for_each(pos, & action->listed_conditions) { - - int j; - lc_bitset_t *bs; - ext_grs_cond_descr_t *cond_descr = - lc_list_entry(pos, ext_grs_cond_descr_t, condition_list); - - action->conditions[i] = cond_descr->condition; - - /* alloc the bitset, which represents the information about the - * (pattern or negative) nodes involved in the current condition */ - bs = action->conds_involved_nodes[i] = - lc_bitset_obstack_alloc(&obst, action->max_node_aiid+1); - - /* store that info in the bitset */ - for (j = 0; j < cond_descr->n_nodes; j++) { - int aiid = cond_descr->nodes[j]->aiid; - lc_bitset_set(bs, aiid); - lc_bitset_set(action->nodes_refering_conds[aiid], i); // CRASH!!! - } - - /* alloc the bitset, which represents the information about the - * (pattern or negative) edges involved in the current condition */ - bs = action->conds_involved_edges[i] = - lc_bitset_obstack_alloc(&obst, action->max_edge_aiid+1); - - /* store that info in the bitset */ - for (j = 0; j < cond_descr->n_edges; j++) { - int aiid = cond_descr->edges[j]->aiid; - lc_bitset_set(bs, aiid); - lc_bitset_set(action->edges_refering_conds[aiid], i); - } - - i++; - } - - assert(i == action->n_conditions && "inconsistent number of registered condition functions"); -} - - - - - -/** create a new graph action of the given kind */ -ext_grs_action_t *ext_grs_new_action(ext_grs_action_kind_t kind, char *name) { - - ext_grs_action_t *action; - - /* allocate a new action */ - action = (ext_grs_action_t *) obstack_alloc(&obst, sizeof(*action)); - if (action == NULL) { - printf("module ext/grs: internal ERROR in function ext_grs_act_allow_nodes_hom()\n"); - printf(" Failed to allocate a new action.\n\n"); - return NULL; - } - memset(action, 0, sizeof(*action)); - /* set the actions kind and id */ - action->kind = kind; - action->id = action_counter++; - action->name = name; - action->max_node_aiid = -1; - action->max_edge_aiid = -1; - action->max_repl_node_aiid = -1; - action->max_repl_edge_aiid = -1; - - LC_INIT_LIST_HEAD(& action->negatives); - LC_INIT_LIST_HEAD(& action->listed_conditions); - LC_INIT_LIST_HEAD(& action->listed_evals); - - - /* allocate this actions pattern graph */ - action->pattern = (ext_grs_graph_t *) - obstack_alloc(&obst, sizeof(*(action->pattern))); - if (action->pattern == NULL) { - printf("module ext/grs: internal ERROR in function ext_grs_new_action()\n"); - printf(" Failed to allocate a pattern graph for the new action.\n\n"); - obstack_free(&obst, action); - return NULL; - } - init_graph(action->pattern, action, ext_grs_k_pattern); - - /* if action is a rule, allocate a replacemant graph */ - if (kind == ext_grs_k_rule) { - action->replacement = (ext_grs_graph_t *) - obstack_alloc(&obst, sizeof(*(action->replacement))); - if (action->replacement == NULL) { - printf("module ext/grs: internal ERROR in function ext_grs_new_action()\n"); - printf(" Failed to allocate a replacement graph for the new action.\n\n"); - obstack_free(&obst, action); - return NULL; - } - init_graph(action->replacement, action, ext_grs_k_replacement); - } - - action->kept_elems = lc_pset_new(ptr_map_cmp_func, 256); - - return action; -} - -/** get the kind of an action */ -ext_grs_action_kind_t ext_grs_act_get_kind(ext_grs_action_t *act) { - return act->kind; -} - -/** impose a new negative graph pattern on the given action */ -ext_grs_graph_t *ext_grs_act_impose_negative(ext_grs_action_t *action) { - - ext_grs_graph_t *negative; - - /* if action is already mature no further changes are allowed */ - if (action->mature) return NULL; - - /* create new graph */ - negative = (ext_grs_graph_t *) obstack_alloc(&obst, sizeof(*negative)); - if (negative == NULL) { - printf("module ext/grs: ERROR in function ext_grs_act_impose_negative()\n"); - printf(" failed to allocate a new action!\n"); - return NULL; - } - init_graph(negative, action, ext_grs_k_negative); - - /* store the new graph in the given action - * as a negative pattern graph */ - lc_list_add(& negative->negative_list, & action->negatives); - - return negative; -} - - -/** get the pattern graph of an action */ -ext_grs_graph_t *ext_grs_act_get_pattern(ext_grs_action_t *action) { - return action->pattern; -} - -/** get the replacement graph of an action */ -ext_grs_graph_t *ext_grs_act_get_replacement(ext_grs_action_t *action) { - - if (action->kind == ext_grs_k_rule) { - assert (action->replacement->kind == ext_grs_k_replacement && - "replacement graph has wrong kind"); - return action->replacement; - } - - /* if action is no rule, no replacement can be returned */ - return NULL; -} - -/** add a node to a given pattern graph */ -ext_grs_node_t *ext_grs_act_add_node( - ext_grs_graph_t *graph, char *name, ir_op *op, ir_mode *mode, int id) -{ - ext_grs_node_t *new_node; - - if (!graph) { - printf("module ext/grs: ERROR in function ext_grs_add_node()\n"); - printf(" Given graph was NULL!\n"); - return NULL; - } - if (!name) { - printf("module ext/grs: ERROR in function ext_grs_add_node()\n"); - printf(" Given name was NULL!\n"); - return NULL; - } - if (!op) { - printf("module ext/grs: ERROR in function ext_grs_add_node()\n"); - printf(" Given op was NULL!\n"); - return NULL; - } - if (!mode) { - printf("module ext/grs: ERROR in function ext_grs_add_node()\n"); - printf(" Given mode was NULL!\n"); - return NULL; - } - if (id < 0) { - printf("module ext/grs: ERROR in function ext_grs_add_node()\n"); - printf(" Negative node id was given.\n"); - return NULL; - } - if (graph->action->mature) { - printf("module ext/grs: ERROR in function ext_grs_add_node()\n"); - printf(" Given graph belongs to a mature action.\n"); - return NULL; - } - - new_node = obstack_alloc(&obst, sizeof(*new_node)); - memset(new_node, 0, sizeof(*new_node)); - - new_node->kind = ext_grs_k_node; - new_node->graph = graph; - new_node->name = name; - new_node->mode = mode; - new_node->op = op; - new_node->aiid = id; - new_node->related_node = NULL; - LC_INIT_LIST_HEAD(& new_node->edges[ext_grs_in]); - LC_INIT_LIST_HEAD(& new_node->edges[ext_grs_out]); - - /* add node to the graph */ - graph->n_nodes++; - lc_list_add(& new_node->node_list, & graph->nodes); - - /* add node to the graphs action...? */ - /* ...this is done by the the mature function when - * pseudo nodes and edges are created! */ - - if (graph->kind == ext_grs_k_replacement) { - graph->action->max_repl_node_aiid = MAX(id, graph->action->max_repl_node_aiid); - } - else { - assert((graph->kind == ext_grs_k_pattern || graph->kind == ext_grs_k_negative) - && "given graph has invalid kind"); - graph->action->max_node_aiid = MAX(id, graph->action->max_node_aiid); - } - - return new_node; -} - -ext_grs_node_t *ext_grs_act_add_related_node(ext_grs_graph_t *graph, - char *name, ir_op *op, ir_mode *mode, int id, ext_grs_node_t *positive_node) -{ - ext_grs_node_t *added_node = ext_grs_act_add_node(graph, name, op, mode, id); - ext_grs_act_relate_neg_node(positive_node, added_node); - return(added_node); -} - -ext_grs_node_t *ext_grs_act_add_node_to_keep(ext_grs_graph_t *graph, - char *name, ir_op *op, ir_mode *mode, int id, ext_grs_node_t *pattern_node) -{ - ext_grs_node_t *added_node = ext_grs_act_add_node(graph, name, op, mode, id); - ext_grs_act_announce_kept_node(pattern_node, added_node); - return(added_node); -} - - -/** add an edge to a given pattern graph */ -ext_grs_edge_t *ext_grs_act_add_edge(ext_grs_graph_t *graph, - char *name, int pos, ext_grs_node_t *arg, ext_grs_node_t *func, int id) -{ - ext_grs_edge_t *new_edge; - - if (!graph) { - printf("module ext/grs: ERROR in function ext_grs_add_edge()\n"); - printf(" Given graph was NULL.\n\n"); - return NULL; - } - if (!name) { - printf("module ext/grs: ERROR in function ext_grs_add_edge()\n"); - printf(" Given name was NULL.\n\n"); - return NULL; - } - if (!arg) { - printf("module ext/grs: ERROR in function ext_grs_add_edge()\n"); - printf(" Given argument node was NULL.\n\n"); - return NULL; - } - if (!func) { - printf("module ext/grs: ERROR in function ext_grs_add_edge()\n"); - printf(" Given function node was NULL.\n\n"); - return NULL; - } - if (id < 0) { - printf("module ext/grs: ERROR in function ext_grs_add_edge()\n"); - printf(" Given edge id was negative.\n\n"); - return NULL; - } - if (graph->action->mature) { - printf("module ext/grs: ERROR in function ext_grs_add_edge()\n"); - printf(" Tried to add an edge to a graph of a mature action.\n\n"); - return NULL; - } - - if (func->op == op_Bad) { - printf("module ext/grs: WARNING in function ext_grs_add_edge()\n"); - printf(" Added an incoming edge to a Bad node, this leads\n"); - printf(" to a malformed graph.\n\n"); - } - - - new_edge = obstack_alloc(&obst, sizeof(*new_edge)); - memset(new_edge, 0, sizeof(*new_edge)); - - new_edge->kind = ext_grs_k_edge; - new_edge->graph = graph; - new_edge->name = name; - new_edge->pos = pos; - new_edge->func = func; - new_edge->arg = arg; - new_edge->aiid = id; - new_edge->related_edge = 0; - - /* add edge to the graph */ - graph->n_edges++; - lc_list_add(& new_edge->edge_list, & graph->edges); - - /* add edge to tgt- and src-nodes in and out lists */ - lc_list_add(&new_edge->list[ext_grs_in], & new_edge->func->edges[ext_grs_in]); - lc_list_add(&new_edge->list[ext_grs_out], & new_edge->arg->edges[ext_grs_out]); - - /* add edge to the graphs action...? */ - /* ...this is done by the the mature function when - * pseudo nodes and edges are created! */ - - if (graph->kind == ext_grs_k_replacement) { - graph->action->max_repl_edge_aiid = MAX(id, graph->action->max_repl_edge_aiid); - } - else { - assert((graph->kind == ext_grs_k_pattern || graph->kind == ext_grs_k_negative) - && "given graph has invalid kind"); - graph->action->max_edge_aiid = MAX(id, graph->action->max_edge_aiid); - } - - return new_edge; -} - -ext_grs_edge_t *ext_grs_act_add_related_edge(ext_grs_graph_t *graph, - char *name, int pos, ext_grs_node_t *arg, ext_grs_node_t *func, int id, ext_grs_edge_t *positive_edge) -{ - ext_grs_edge_t *added_edge = ext_grs_act_add_edge(graph, name, pos, arg, func, id); - ext_grs_act_relate_neg_edge(positive_edge, added_edge); - return(added_edge); -} - -ext_grs_edge_t *ext_grs_act_add_edge_to_keep(ext_grs_graph_t *graph, - char *name, int pos, ext_grs_node_t *arg, ext_grs_node_t *func, int id, ext_grs_edge_t *pattern_edge) -{ - ext_grs_edge_t *added_edge = ext_grs_act_add_edge(graph, name, pos, arg, func, id); - ext_grs_act_announce_kept_edge(pattern_edge, added_edge); - return(added_edge); -} - -/** mature an action, it is not possible to make any - * changes to this actions pattern afterwards */ - -int ext_grs_act_mature(ext_grs_action_t *action) { - - int i; - lc_list_t *pos, *pos1; - - int n_nodes = 0; - int n_edges = 0; - int n_neg_nodes = 0; - int n_neg_edges = 0; - int n_pseudo_nodes = 0; - int n_pseudo_edges = 0; - - - if (action->mature) { - printf("module ext/grs: ERROR in function ext_grs_act_mature()\n"); - printf(" given action is already mature!\n"); - return 0; - } - -/* ................ 1 ................................................. */ - - /* compute the overall number of real nodes and negative nodes */ - n_nodes = action->pattern->n_nodes; - lc_list_for_each(pos, &action->negatives) { - ext_grs_graph_t *neg = - lc_list_entry(pos, ext_grs_graph_t, negative_list); - n_neg_nodes += neg->n_nodes; - } - /* compute the overall number of real edges and negative edges */ - n_edges = action->pattern->n_edges; - lc_list_for_each(pos, &action->negatives) { - ext_grs_graph_t *neg = - lc_list_entry(pos, ext_grs_graph_t, negative_list); - n_neg_edges += neg->n_edges; - } - - /* alloc space for real and negative nodes */ - action->nodes = - obstack_alloc(&obst, (action->max_node_aiid+1) * sizeof(ext_grs_node_t)); - memset(action->nodes, 0 , (action->max_node_aiid+1) * sizeof(ext_grs_node_t)); - /* alloc space for real, negative and pseudo edges */ - action->edges = - obstack_alloc(&obst, - (action->max_edge_aiid+1 + n_nodes + n_neg_nodes + n_edges) * sizeof(ext_grs_edge_t)); - memset(action->edges, 0, - (action->max_edge_aiid+1 + n_nodes + n_neg_nodes + n_edges) * sizeof(ext_grs_edge_t)); - - -/* ................ 2 ................................................. */ - { - int ret = 0; - ret = import_graph_info(action, action->pattern); - if (!ret) return 0; - } - lc_list_for_each(pos, &action->negatives) { - int ret = 0; - ext_grs_graph_t *neg = - lc_list_entry(pos, ext_grs_graph_t, negative_list); - ret = import_graph_info(action, neg); - if (!ret) return 0; - } - -/* ................ 3 ................................................. */ - - /* there's a pseudo edge for each node and a backward pseudo edge - * for each real and each negative edge */ - n_pseudo_edges = n_nodes + n_edges + n_neg_edges; - n_pseudo_nodes = 0; - - /* setup space for information about homomorphic node matching and about critical - * nodes and edges. A node or edge is critical when it multiple matching may be - * harmful for parallel rule application */ - if (action->max_node_aiid >= 0) { - action->hom = - obstack_alloc(&obst, (action->max_node_aiid+1) * sizeof(*(action->hom))); - action->node_critical = obstack_alloc(&obst, - (action->max_node_aiid+1) * sizeof(*(action->node_critical))); - } - if (n_nodes > 0) - action->pattern_node_kept = - obstack_alloc(&obst, (action->max_node_aiid+1) * sizeof(*action->pattern_node_kept)); - - for (i=0; i <= action->max_node_aiid; i++) { - - action->hom[i] = obstack_alloc( - &obst, (action->max_node_aiid+1) * sizeof(**(action->hom))); - memset(action->hom[i], 0, - (action->max_node_aiid+1) * sizeof(*(action->hom[i]))); - - if (!action->nodes[i]) continue; - - /* by default every node is critical (unless it can be - * proofen that it is not) */ - action->node_critical[i] = 1; - /* by default no node is kept */ - action->pattern_node_kept[i] = -1; - } - - if (action->max_edge_aiid >= 0) { - action->edge_critical = obstack_alloc(&obst, - (action->max_edge_aiid+1) * sizeof(*(action->edge_critical))); - action->pattern_edge_kept = - obstack_alloc(&obst, (action->max_edge_aiid+1) * sizeof(*action->pattern_edge_kept)); - } - - for (i=0; i <= action->max_edge_aiid; i++) { - /* by default each node is critical (unless it can be - * proofen that it is not) */ - action->edge_critical[i] = 1; - - if (!action->edges[i]) continue; - - /* by default no edge is kept */ - action->pattern_edge_kept[i] = -1; - } - - - /* .................................... 4 .................................. */ - set_up_condition_stuff(action); - - action->n_nodes = n_nodes; - action->n_edges = n_edges; - - action->n_neg_nodes = n_neg_nodes; - action->n_neg_edges = n_neg_edges; - - action->n_pseudo_nodes = n_pseudo_nodes; - action->n_pseudo_edges = n_pseudo_edges; - - - - - /* if the action is of kind test, no replacement information has to be set up */ - if (action->kind == ext_grs_k_test) { - /* set mature flag */ - action->mature = 1; - return 1; - } - - - - - /* setup replacement information */ - - /* first: nodes */ - if (action->max_repl_node_aiid >= 0) { - action->replacement_nodes = obstack_alloc(&obst, - (action->max_repl_node_aiid+1) * sizeof(*action->replacement_nodes)); - memset(action->replacement_nodes, 0, - (action->max_repl_node_aiid+1) * sizeof(*action->replacement_nodes)); - action->replacement_node_kept = obstack_alloc(&obst, - (action->max_repl_node_aiid+1) * sizeof(*action->replacement_node_kept)); - } - for (i = 0; i <= action->max_repl_node_aiid; i++) - /* by default ALL nodea are newly inserted */ - action->replacement_node_kept[i] = -1; - - lc_list_for_each(pos1, & action->replacement->nodes) { - - ext_grs_node_t *node = lc_list_entry(pos1, ext_grs_node_t, node_list); - - if (action->replacement_nodes[node->aiid] == NULL) { - action->replacement_nodes[node->aiid] = node; - } - else { - printf("module ext/grs: ERROR in function ext_grs_act_mature()\n"); - printf(" Multiply assigned id of a replacement node encountered!\n\n"); - return 0; - } - } - action->n_replacement_nodes = action->replacement->n_nodes; - - /* second: edges */ - if (action->max_repl_edge_aiid >= 0) { - action->replacement_edges = obstack_alloc(&obst, - (action->max_repl_edge_aiid+1) * sizeof(*action->replacement_edges)); - memset(action->replacement_edges, 0, - (action->max_repl_edge_aiid+1) * sizeof(*action->replacement_edges)); - action->replacement_edge_kept = obstack_alloc(&obst, - (action->max_repl_edge_aiid+1) * sizeof(*action->replacement_edge_kept)); - } - /* iterate over all replace edges */ - for (i = 0; i <= action->max_repl_edge_aiid; i++) - /* by default ALL nodes are newly inserted */ - action->replacement_edge_kept[i] = -1; - - lc_list_for_each(pos, & action->replacement->edges) { - ext_grs_edge_t *edge = lc_list_entry(pos, ext_grs_edge_t, edge_list); - - if (action->replacement_edges[edge->aiid] == NULL) { - action->replacement_edges[edge->aiid] = edge; - } - else { - printf("module ext/grs: ERROR in function ext_grs_act_mature()\n"); - printf(" Multiply assigned id of a replacement edge encountered!\n\n"); - return 0; - } - } - action->n_replacement_edges = action->replacement->n_edges; - - - - - - /* setup information about the nodes and edges, which have to be kept by - * the rewriting step */ - { - /* for this reason iterate over all pairs of nodes/edges stored in the ptr - * to ptr map representing the association of pattern ans replacement elements */ - ext_grs_ptr_map_entry_t *entry = lc_pset_first(action->kept_elems); - for ( ; entry; entry = lc_pset_next(action->kept_elems) ) { - - if (entry->kind == ext_grs_k_node) { - - ext_grs_node_t *n1 = (ext_grs_node_t *) entry->pre; - ext_grs_node_t *n2 = (ext_grs_node_t *) entry->img; - - assert(n1->kind == ext_grs_k_node && n2->kind == ext_grs_k_node); - action->pattern_node_kept[n1->aiid] = n2->aiid; - action->replacement_node_kept[n2->aiid] = n1->aiid; - } - - else if (entry->kind == ext_grs_k_edge) { - - ext_grs_edge_t *e1 = (ext_grs_edge_t *) entry->pre; - ext_grs_edge_t *e2 = (ext_grs_edge_t *) entry->img; - - assert(e1->kind == ext_grs_k_edge && e2->kind == ext_grs_k_edge); - action->pattern_edge_kept[e1->aiid] = e2->aiid; - action->replacement_edge_kept[e2->aiid] = e1->aiid; - } - - else assert(0 && "found an invalid entry in the ptr to ptr map"); - } - } - - /* for all replacement nodes count the number of incoming edges having - * no given position and not being associated with a pattern edge and - * having no position function. This - * number is stored in each replacement nodes and represents the number - * of edges to appended to the matched host nodes in array without a - * specific order. - */ - for (i = 0; i <= action->max_repl_node_aiid; i++) { - ext_grs_node_t *node = action->replacement_nodes[i]; - - if (!node) continue; - - - node->n_append_edges = 0; - lc_list_for_each (pos, & node->edges[ext_grs_in]) { - - ext_grs_edge_t *in_edge = lc_list_entry(pos, ext_grs_edge_t, list[ext_grs_in]); - assert(in_edge->aiid >= 0 && "invalid aiid encountered"); - - if (in_edge->position_func) { - - if (in_edge->pos != ext_grs_NO_EDGE_POS) { - assert(in_edge->pos >= 0 && "bad edge position"); - printf("module ext/grs: ERROR in function ext_grs_act_mature()\n"); - printf(" There is a position function associated with an edge,\n"); - printf(" which has a given postion.\n\n"); - return 0; - } - if (action->replacement_node_kept[in_edge->aiid] >= 0) { - printf("module ext/grs: ERROR in function ext_grs_act_mature()\n"); - printf(" There is a position function associated with an edge,\n"); - printf(" which is not to be newly inserted but kept.\n\n"); - return 0; - } - - } - else { - - if - ( - in_edge->pos == ext_grs_NO_EDGE_POS && - action->replacement_edge_kept[in_edge->aiid] == -1 - ) - { - node->n_append_edges++; - } - - } - - } - } - - - - - /* ensure that there is no edge, which has to be preserved while the rewriting - * and is incident to a pattern node, which has to be removed and, if not, - * ensure that associated edges are incident to associated nodes */ - lc_list_for_each(pos, & action->pattern->edges) { - - ext_grs_edge_t *edge = lc_list_entry(pos, ext_grs_edge_t, edge_list); - - if ( - edge->kind == ext_grs_k_edge && - action->pattern_edge_kept[edge->aiid] > -1 - ) - { - if (action->pattern_node_kept[edge->func->aiid] == -1 || - action->pattern_node_kept[edge->arg->aiid] == -1) - { - printf("module ext/grs: ERROR in function ext_grs_act_mature()\n"); - printf(" Action contains a pattern edge which is announced as to\n"); - printf(" be kept in rewrite steps, but this edge is incident to\n"); - printf(" a pattern node which must be deleted.\n\n"); - - return 0; - } - else { - ext_grs_edge_t *rpl_edge; - ext_grs_node_t *rpl_arg_node, *rpl_func_node; - - assert( - action->pattern_node_kept[edge->func->aiid] > -1 && - action->pattern_node_kept[edge->arg->aiid] > -1 && - "there should be no entry less than -1"); - - rpl_edge = action->replacement_edges[action->pattern_edge_kept[edge->aiid]]; - rpl_func_node = - action->replacement_nodes[action->pattern_node_kept[edge->func->aiid]]; - rpl_arg_node = - action->replacement_nodes[action->pattern_node_kept[edge->arg->aiid]]; - - if (rpl_edge->func != rpl_func_node || rpl_edge->arg != rpl_arg_node) { - printf("module ext/grs: ERROR in function ext_grs_act_mature()\n"); - printf(" Action contains a pattern edge which is announced as to\n"); - printf(" be kept in rewrite steps, but at least one of the replacement\n"); - printf(" nodes incident to the associated replacement edge is not\n"); - printf(" associated with the respective pattern nodes.\n\n"); - - return 0; - } - } - - } - } - - -#if 0 - /* prepare relation between pattern nodes and negative nodes by - * initializing with 0 which means that there is no relation yet */ - action->neg_node_related = obstack_alloc(&obst, - (action->max_node_aiid+1) * sizeof(*action->neg_node_related)); - memset(action->neg_node_related, 0, - (action->max_node_aiid+1) * sizeof(*action->neg_node_related)); - - action->neg_edge_related = obstack_alloc(&obst, - (action->max_edge_aiid+1) * sizeof(*action->neg_edge_related)); - memset(action->neg_edge_related, 0, - (action->max_edge_aiid+1) * sizeof(*action->neg_edge_related)); -#endif - - - /* set mature flag */ - action->mature = 1; - - return 1; -} - - -/** get a pattern node by its name */ -ext_grs_node_t *ext_grs_act_get_node(ext_grs_action_t *action, char *name) { - - ext_grs_node_t *node; - int i; - - if (action->mature == 0) { - printf("module ext/grs: ERROR in function ext_grs_act_get_node()\n"); - printf(" The given action is NOT mature!\n\n"); - return NULL; - } - - // Look for the name in the pattern node array - for(i = 0; i <= action->max_node_aiid; i++) { - node = action->nodes[i]; - if(node) - if ( strcmp(name, node->name) == 0 ) - return node; - } - - // Look for the name in the replace node array - for(i = 0; i <= action->max_repl_node_aiid; i++) { - node = action->replacement_nodes[i]; - if(node) - if (strcmp(name, node->name) == 0) - return node; - } - - return NULL; -} - - -/** Same as ext_grs_act_get_node, but compares only the first n bytes of the node name */ -ext_grs_node_t *ext_grs_act_get_node_n(ext_grs_action_t *action, char *name, int n) { - - ext_grs_node_t *node; - int i; - - if (action->mature == 0) { - printf("module ext/grs: ERROR in function ext_grs_act_get_node()\n"); - printf(" The given action is NOT mature!\n\n"); - return NULL; - } - - // Look for the name in the pattern node array - for(i = 0; i <= action->max_node_aiid; i++) { - node = action->nodes[i]; - if(node) - if ( strncmp(name, node->name, n) == 0 ) - return node; - } - - // Look for the name in the replace node array - for(i = 0; i <= action->max_repl_node_aiid; i++) { - node = action->replacement_nodes[i]; - if(node) - if (strncmp(name, node->name, n) == 0) - return node; - } - - return NULL; -} - - -/** Get a pattern node aiid by its name. */ -int ext_grs_act_get_node_aiid(ext_grs_action_t *action, char *name) -{ - ext_grs_node_t *node = ext_grs_act_get_node(action, name); - if(node) - return(node->aiid); - else - return(-1); -} - -/** Same as ext_grs_act_get_nodes_aiid, but compares only the first n bytes of the nodes name */ -int ext_grs_act_get_node_aiid_n(ext_grs_action_t *action, char *name, int n) -{ - ext_grs_node_t *node = ext_grs_act_get_node_n(action, name, n); - if(node) - return(node->aiid); - else - return(-1); -} - - - -/** get a pattern edge by its name */ -ext_grs_edge_t *ext_grs_act_get_edge(ext_grs_action_t *action, char *name) { - - ext_grs_edge_t *edge; - int i; - - if (action->mature == 0) { - printf("module ext/grs: ERROR in function ext_grs_act_get_edge()\n"); - printf(" The given action is NOT mature\n\n"); - return NULL; - } - - for(i = 0; i < action->n_edges; i++) { - edge = action->edges[i]; - if ( strcmp(name, edge->name) == 0 ) - return edge; - } - return NULL; -} - - -/** allows homomorphic matching of two pattern nodes, - * note that these two nodes MUST have the same op and mode - * (including mode ANY) and belong tp the same acion - * @returns zero if fails and nonzero otherwise - * @note the action the given nodes belong to has to be mature */ -int ext_grs_act_allow_nodes_hom(ext_grs_node_t *n1, ext_grs_node_t *n2) -{ - ext_grs_action_t *act; - - if (!n1 || !n2) { - printf("module ext/grs: ERROR in function ext_grs_act_announce_kept_node()\n"); - printf(" NULL node(s) has/have been given.\n\n"); - return 0; - } - - assert(n1->graph && n2->graph && "every node should belong to a graph"); - assert(n1->graph->action && n2->graph->action && - "every graph should belong to an action"); - act = n1->graph->action; - - /* check wether the given nodes are not replacement nodes nodes */ - if ( - n1->graph->kind == ext_grs_k_replacement || - n2->graph->kind == ext_grs_k_replacement - ) - { - assert(n1->graph == act->replacement); - assert(n2->graph == act->replacement); - - printf("module ext/grs: ERROR in function ext_grs_act_allow_nodes_hom()\n"); - printf(" At least one given node belongs to a replacement graph.\n\n"); - return 0; - } - - /* check wether the given nodes belong to the given action */ - if (n1->graph->action != n2->graph->action) { - printf("module ext/grs: ERROR in function ext_grs_act_allow_nodes_hom()\n"); - printf(" Given nodes belong to different actions.\n\n"); - return 0; - } - /* action has to be mature */ - if (! act->mature) { - printf("module ext/grs: ERROR in function ext_grs_act_allow_nodes_hom()\n"); - printf(" Given action is not mature.\n\n"); - return 0; - } - /* check wether the given nodes have the same firm op and firm mode */ - if (n1->op != n2->op || n1->mode != n2->mode) { - printf("module ext/grs: ERROR in function ext_grs_act_allow_nodes_hom()\n"); - printf(" Given nodes have different Firm op and/or different Firm mode.\n\n"); - return 0; - } - /* if the given pattern nodes are BOTH associated with replacement - * nodes, check wether the ops and modes of the replacement nodes are equal */ - if (act->pattern_node_kept[n1->aiid] >= 0 && act->pattern_node_kept[n2->aiid] >= 0) { - - ext_grs_node_t *rpl_n1, *rpl_n2; - - assert(n1->graph->kind != ext_grs_k_negative && - "a negative node should not be marked as kept"); - assert(n2->graph->kind != ext_grs_k_negative && - "a negative node should not be marked as kept"); - - rpl_n1 = act->replacement_nodes[act->pattern_node_kept[n1->aiid]]; - rpl_n2 = act->replacement_nodes[act->pattern_node_kept[n2->aiid]]; - if (rpl_n1->op != rpl_n2->op || rpl_n1->mode != rpl_n2->mode) - { - printf("module ext/grs: ERROR in function ext_grs_act_allow_nodes_hom()\n"); - printf(" Given pattern nodes are assiciated with replacement nodes of\n"); - printf(" different op or mode, this may cause undefined behaviour of\n"); - printf(" the replacement when the nodes are matched homomorphic.\n\n"); - return 0; - } - } - - - /* allow homomorphic matching of the given node */ - act->hom[n1->aiid][n2->aiid] = 1; - - return 1; -} - - -int ext_grs_act_announce_kept_node(ext_grs_node_t *n1, ext_grs_node_t *n2) -{ - ext_grs_action_t *act; - ext_grs_ptr_map_entry_t *new_entry = obstack_alloc(&obst, sizeof(*new_entry)); - - if (! new_entry) { - printf("module ext/grs: Internal ERROR in function ext_grs_act_announce_kept_node()\n"); - printf(" Failed to allocate a new node pair representative.\n\n"); - return 0; - } - - if (!n1 || !n2) { - printf("module ext/grs: ERROR in function ext_grs_act_announce_kept_node()\n"); - printf(" NULL node(s) has/have been given.\n\n"); - obstack_free(&obst, new_entry); - return 0; - } - - - assert(n1->graph->action && n2->graph->action && - "every graph should belong to an action"); - act = n1->graph->action; - - /* check wether the given nodes belong to the given action */ - if (n1->graph->action != n2->graph->action) { - printf("module ext/grs: ERROR in function ext_grs_act_announce_kept_node()\n"); - printf(" Given nodes belong to different actions.\n\n"); - obstack_free(&obst, new_entry); - return 0; - } - /* action must not be mature */ - if (act->mature) { - printf("module ext/grs: ERROR in function ext_grs_act_announce_kept_node()\n"); - printf(" Given action must not be mature.\n\n"); - obstack_free(&obst, new_entry); - return 0; - } - /* check wether n1 belongs to pattern and n2 to the replacement graph */ - if (n1->graph != act->pattern || n2->graph != act->replacement) { - printf("module ext/grs: ERROR in function ext_grs_act_announce_kept_node()\n"); - printf(" A pattern node and a replacement node must be given.\n\n"); - obstack_free(&obst, new_entry); - return 0; - } - - new_entry->kind = ext_grs_k_node; - new_entry->pre = n1; - new_entry->img = n2; - - not_injective = 0; - multiple_entry = 0; - already_exists = 0; - lc_pset_insert(act->kept_elems, new_entry, LC_HASH_PTR(new_entry)); - - if (not_injective) { - printf("module ext/grs: ERROR in function ext_grs_act_announce_kept_node()\n"); - printf(" The given replacement node has already been\n"); - printf(" associated with another pattern node.\n\n"); - obstack_free(&obst, new_entry); - return 0; - } - - if (multiple_entry) { - printf("module ext/grs: ERROR in function ext_grs_act_announce_kept_node()\n"); - printf(" The given pattern node has already been\n"); - printf(" associated with another replacement node.\n\n"); - obstack_free(&obst, new_entry); - return 0; - } - - if (already_exists) { - printf("module ext/grs: WARNING in function ext_grs_act_announce_kept_node()\n"); - printf(" The given association has already been announced.\n\n"); - obstack_free(&obst, new_entry); - return 0; - } - - return 1; -} - -int ext_grs_act_announce_kept_edge(ext_grs_edge_t *e1, ext_grs_edge_t *e2) -{ - ext_grs_action_t *act; - ext_grs_ptr_map_entry_t *new_entry = obstack_alloc(&obst, sizeof(*new_entry)); - - if (! new_entry) { - printf("module ext/grs: Internal ERROR in function ext_grs_act_announce_kept_node()\n"); - printf(" Failed to allocate a new edge pair representative.\n\n"); - return 0; - } - - if (!e1 || !e2) { - printf("module ext/grs: ERROR in function ext_grs_act_announce_kept_edge()\n"); - printf(" NULL edge(s) has/have been given.\n\n"); - obstack_free(&obst, new_entry); - return 0; - } - - if (!e1->graph || !e2->graph || !e1->graph->action || !e2->graph->action) { - printf("module ext/grs: ERROR in function ext_grs_act_announce_kept_edge()\n"); - printf(" At least one of the given edges is corrupted.\n\n"); - obstack_free(&obst, new_entry); - return 0; - } - - act = e1->graph->action; - - /* check wether the given nodes belong to the given action */ - if (e1->graph->action != e2->graph->action) { - printf("module ext/grs: ERROR in function ext_grs_act_announce_kept_edge()\n"); - printf(" Given edges belong to different actions.\n\n"); - obstack_free(&obst, new_entry); - return 0; - } - /* action has to be mature */ - if (act->mature) { - printf("module ext/grs: ERROR in function ext_grs_act_announce_kept_edge()\n"); - printf(" Given action must not be mature.\n\n"); - obstack_free(&obst, new_entry); - return 0; - } - /* check wether n1 belongs to pattern and n2 to the replacement graph */ - if (e1->graph != act->pattern || e2->graph != act->replacement) { - printf("module ext/grs: ERROR in function ext_grs_act_announce_kept_edge()\n"); - printf(" A pattern edge and a replacement edge must be given.\n\n"); - obstack_free(&obst, new_entry); - return 0; - } - - if (e1->pos != e2->pos) { - printf("module ext/grs: ERROR in function ext_grs_act_announce_kept_edge()\n"); - printf(" The pattern and the replacemnt edge must have the same position OR\n"); - printf(" both no position at all.\n\n"); - obstack_free(&obst, new_entry); - return 0; - } - - new_entry->kind = ext_grs_k_edge; - new_entry->pre = e1; - new_entry->img = e2; - - not_injective = 0; - multiple_entry = 0; - already_exists = 0; - lc_pset_insert(act->kept_elems, new_entry, LC_HASH_PTR(new_entry)); - - if (not_injective) { - printf("module ext/grs: ERROR in function ext_grs_act_announce_kept_node()\n"); - printf(" The given replacement node has already been\n"); - printf(" associated with another pattern node.\n\n"); - obstack_free(&obst, new_entry); - return 0; - } - - if (multiple_entry) { - printf("module ext/grs: ERROR in function ext_grs_act_announce_kept_node()\n"); - printf(" The given pattern node has already been\n"); - printf(" associated with another replacement node.\n\n"); - obstack_free(&obst, new_entry); - return 0; - } - - if (already_exists) { - printf("module ext/grs: WARNING in function ext_grs_act_announce_kept_node()\n"); - printf(" The given association has already been announced.\n\n"); - obstack_free(&obst, new_entry); - return 0; - } - - return 1; -} - -int ext_grs_act_relate_neg_node(ext_grs_node_t *pat_node, ext_grs_node_t *neg_node) { - - if (pat_node->graph->action != neg_node->graph->action) { - printf("module ext/grs: ERROR in function ext_grs_act_relate_neg_node()\n"); - printf(" The given nodes do not belong to the same action.\n\n"); - return 0; - } - - if (pat_node->graph->kind != ext_grs_k_pattern) { - printf("module ext/grs: ERROR in function ext_grs_act_relate_neg_node()\n"); - printf(" The given pattern node does not belong to a pattern graph.\n\n"); - return 0; - } - - if (neg_node->graph->kind != ext_grs_k_negative) { - printf("module ext/grs: ERROR in function ext_grs_act_relate_neg_node()\n"); - printf(" The given negative node does not belong to a negative pattern graph.\n\n"); - return 0; - } - - neg_node->related_node = pat_node; - return(1); -} - -int ext_grs_act_relate_neg_edge(ext_grs_edge_t *pat_edge, ext_grs_edge_t *neg_edge) { - - if (pat_edge->graph->action != neg_edge->graph->action) { - printf("module ext/grs: ERROR in function ext_grs_act_relate_neg_edge()\n"); - printf(" The given edges do not belong to the same action.\n\n"); - return 0; - } - - if (pat_edge->graph->kind != ext_grs_k_pattern) { - printf("module ext/grs: ERROR in function ext_grs_act_relate_neg_edge()\n"); - printf(" The given pattern edge does not belong to a pattern graph.\n\n"); - return 0; - } - - if (neg_edge->graph->kind != ext_grs_k_negative) { - printf("module ext/grs: ERROR in function ext_grs_act_relate_neg_edge()\n"); - printf(" The given negative edge does not belong to a negative pattern graph.\n\n"); - return 0; - } - - neg_edge->related_edge = pat_edge; - return(1); -} - - - -int ext_grs_act_register_condition( - ext_grs_condition_func_t func, - ext_grs_graph_t *graph, - int n_nodes, ext_grs_node_t **nodes, - int n_edges, ext_grs_edge_t **edges) -{ - int i; - ext_grs_cond_descr_t *cond_descr; - ext_grs_node_t **nodes_copied = obstack_alloc(&obst, n_nodes * sizeof(*nodes_copied)); - ext_grs_edge_t **edges_copied = obstack_alloc(&obst, n_edges * sizeof(*edges_copied)); - - if (!func) { - printf("module ext/grs: ERROR in function ext_grs_act_register_condition()\n"); - printf(" The given condition function was NULL.\n\n"); - return 0; - } - - if (!graph) { - printf("module ext/grs: ERROR in function ext_grs_act_register_condition()\n"); - printf(" The given (pattern or negative graph) was NULL.\n\n"); - return 0; - } - - if (graph->action->mature) { - printf("module ext/grs: ERROR in function ext_grs_act_register_condition()\n"); - printf(" The given action is already mature, no condition registered.\n\n"); - return 0; - } - - /* check whether the given nodes and edges are really nodes and edges, AND check - * whether these nodes and edges all belong to the given action */ - for (i = 0; i < n_nodes; i++) { - - if (!nodes[i]) { - printf("module ext/grs: ERROR in function ext_grs_act_register_condition()\n"); - printf(" A given node was NULL.\n\n"); - return 0; - } - if (nodes[i]->kind != ext_grs_k_node) { - printf("module ext/grs: ERROR in function ext_grs_act_register_condition()\n"); - printf(" A given node was not a valid node.\n\n"); - return 0; - } - if (nodes[i]->graph->action != graph->action) { - printf("module ext/grs: ERROR in function ext_grs_act_register_condition()\n"); - printf(" A given node belongs to an action different from the one of the given\n"); - printf(" (pattern or negative) graph.\n\n"); - return 0; - } - - nodes_copied[i] = nodes[i]; - } - for (i = 0; i < n_edges; i++) { - - if (!edges[i]) { - printf("module ext/grs: ERROR in function ext_grs_act_register_condition()\n"); - printf(" A given edge was NULL.\n\n"); - return 0; - } - if (edges[i]->kind != ext_grs_k_edge) { - printf("module ext/grs: ERROR in function ext_grs_act_register_condition()\n"); - printf(" A given edge was not a valid edge.\n\n"); - return 0; - } - if (edges[i]->graph->action != graph->action) { - printf("module ext/grs: ERROR in function ext_grs_act_register_condition()\n"); - printf(" A given edge belongs to an action different from one of the given\n"); - printf(" (pattern or negative) graph.\n\n"); - return 0; - } - - edges_copied[i] = edges[i]; - } - - /* allocate space for a condition descriptor */ - cond_descr = obstack_alloc(&obst, sizeof(*cond_descr)); - memset(cond_descr, 0, sizeof(cond_descr)); - - /* init the condition descriptor */ - cond_descr->graph = graph; - cond_descr->condition = func; - - cond_descr->n_nodes = n_nodes; - cond_descr->nodes = nodes_copied; - cond_descr->n_edges = n_edges; - cond_descr->edges = edges_copied; - - /* add the condition descriptor to the list */ - lc_list_add(&cond_descr->condition_list, & graph->action->listed_conditions); - /* increment the number of conditions */ - graph->n_conditions++; - graph->action->n_conditions++; // AS - return 1; -} - - -int ext_grs_act_register_eval(ext_grs_action_t *action, - ext_grs_eval_in_func_t in_func, ext_grs_eval_out_func_t out_func) -{ - ext_grs_eval_descr_t *eval_descr; - - /*if (!in_func) { - printf("module ext/grs: ERROR in function ext_grs_act_register_eval()\n"); - printf(" The given eval-in function function was NULL.\n\n"); - return 0; - } - if (!out_func) { - printf("module ext/grs: ERROR in function ext_grs_act_register_eval()\n"); - printf(" The given eval-out function function was NULL.\n\n"); - return 0; - }*/ - if (action->mature) { - printf("module ext/grs: ERROR in function ext_grs_act_register_eval_out_func()\n"); - printf(" The given action is already mature, no eval function registered.\n\n"); - return 0; - } - - eval_descr = obstack_alloc(&obst, sizeof(*eval_descr)); - memset(eval_descr, 0, sizeof(*eval_descr)); - eval_descr->eval_in = in_func; - eval_descr->eval_out = out_func; - eval_descr->data = NULL; - lc_list_add_tail(& eval_descr->eval_list, & action->listed_evals); - return 1; -} - - - -int ext_grs_act_set_op_condition( - ext_grs_node_t *node, ext_grs_op_condition_func_t func) -{ - if (!node) { - printf("module ext/grs: ERROR in function ext_grs_act_set_op_condition()\n"); - printf(" The given node was NULL.\n\n"); - return 0; - } - if (!func) { - printf("module ext/grs: ERROR in function ext_grs_act_set_op_condition()\n"); - printf(" The given op condition function was NULL.\n\n"); - return 0; - } - - node->op_condition = func; - return 1; -} - -int ext_grs_act_set_mode_condition( - ext_grs_node_t *node, ext_grs_mode_condition_func_t func) -{ - if (!node) { - printf("module ext/grs: ERROR in function ext_grs_act_set_mode_condition()\n"); - printf(" The given node was NULL.\n\n"); - return 0; - } - if (!func) { - printf("module ext/grs: ERROR in function ext_grs_act_set_mode_condition()\n"); - printf(" The given mode condition function was NULL.\n\n"); - return 0; - } - - node->mode_condition = func; - return 1; -} - -int ext_grs_act_set_pos_func(ext_grs_edge_t *edge, ext_grs_edge_pos_func_t func) -{ - if (!edge) { - printf("module ext/grs: ERROR in function ext_grs_act_set_pos_func()\n"); - printf(" The given edge was NULL.\n\n"); - return 0; - } - if (!edge) { - printf("module ext/grs: ERROR in function ext_grs_act_set_pos_func()\n"); - printf(" The given position function was NULL.\n\n"); - return 0; - } - assert(edge->graph && "every edge should have a graph"); - if (edge->graph->kind != ext_grs_k_replacement) { - printf("module ext/grs: ERROR in function ext_grs_act_set_pos_func()\n"); - printf(" The given edge belongs to a graph, which is not a replacement graph.\n\n"); - return 0; - } - assert(edge->graph->action && "every graph should have an action"); - if (edge->graph->action->mature) { - printf("module ext/grs: ERROR in function ext_grs_act_set_pos_func()\n"); - printf(" The given edge belongs to an action, which is already mature.\n\n"); - return 0; - } - - edge->position_func = func; - return 1; -} - - -/* Initilize the action part of the exr/grs module of the libfirm. - * This is an internal function. */ -void _ext_grs_act_init() { - /* init obstack if necesarry */ - if (obst_init == 0) { - obstack_init(&obst); - } - obst_init = 1; -} - -/* Finalize the action part of the exr/grs module of the libfirm. - * This is an internal function */ -void _ext_grs_act_finalize() { - - /* finalize the action obstack */ - obstack_free(&obst, NULL); - obstack_finish(&obst); -} diff --git a/ir/be/grgen/action.h b/ir/be/grgen/action.h deleted file mode 100644 index dd114858c..000000000 --- a/ir/be/grgen/action.h +++ /dev/null @@ -1,364 +0,0 @@ -#ifndef _EXT_GRS_ACTION_H_ -#define _EXT_GRS_ACTION_H_ - -/* - * Project: libFIRM/extension module/graph rewriting system - * File name: ext/grs/action.h - * Purpose: provides an interface for the creation of actions - * (i.e. rewriting rules and patterns to be found without - * performing a rewriting step) - * Author: Veit Batz - * Modified by: Andreas Schoesser - * Created: 29. August 2005 - * CVS-ID: $Id$ - * Copyright: (c) 2005 Universität Karlsruhe - * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. - */ - - - -/** represents a node in a grs action */ -typedef struct _ext_grs_node_t ext_grs_node_t; - -/** represents an edge in a grs action */ -typedef struct _ext_grs_edge_t ext_grs_edge_t; - -/** represents a pattern, negative or replacement graph */ -typedef struct _ext_grs_graph_t ext_grs_graph_t; - -/** An action the grs can perform. Possible kinds of actions are rules - * and tests. A rule describes the replacement of pattern graphs by a - * replacement graph, a test only describes the lookup for occurences of - * the pattern graphs, where it is not intended to perform a replacement */ -typedef struct _ext_grs_action_t ext_grs_action_t; - - - - -/** the kind of a grs action */ -typedef enum -{ - ext_grs_k_test, /**< a "test" represents a lookup for a given pattern */ - ext_grs_k_rule /**< a "rule" represents a graph rewriting step */ -} -ext_grs_action_kind_t; - -/** A condition function to be invoked by the matcher. If the condition - * represented by the function does not hold, the current potential match - * will be rejected by the matcher. - * - * @param node_map the current node map during the matching process, - * maps the user defined node ids to host graph nodes - * @param edge_map the current edge map during the matching process, - * maps the user defined edge ids to host graph edges - * - * @return Return non zero if the condition holds and zero if it does not. - * @note The functions ext_grs_get_pattern_nodes_image() and - * ext_grs_get_pattern_edges_image() provide the images - * of pattern nodes and edges under the current match. */ -typedef int (* ext_grs_condition_func_t) - (ir_node **node_map, const ir_edge_t **edge_map); - -/** A function ptr to be invoked on inserting new edges during the - * rewrite step. The function pointed to is supposed to compute the - * position of the newly inserted edge. - * - * @param edge the replacement edge, the position of which is computed - * @param node_map The node map of the match, which is used in the - * current rewrite. - * @param edge_map The edge map of the match, which is used in the - * current rewrite. - * - * @return The position of a newly inserted edge, i.e., a non negative - * integer or ext_grs_NO_EDGE_POS. If the result equals - * ext_grs_NO_EDGE_POS the edge is appended to the exisiting edge - * array. - * - * @note The functions ext_grs_get_pattern_nodes_image() and - * ext_grs_get_pattern_edges_image() provide the images - * of pattern nodes and edges under the current match. */ -typedef int (* ext_grs_edge_pos_func_t) - (ext_grs_edge_t *edge, ir_node **node_map, const ir_edge_t **edge_map); - -/** - * A condition function to be invoked by the matcher. If the function - * representing the condition does not hold for the given op, the matching - * of a node with this op is prohibited - * - * @param op the op to be checked - * @return nonzero if the condition holds, zero otherwise - * */ -typedef int (* ext_grs_op_condition_func_t) (ir_op *op); - -/** - * A condition function to be invoked by the matcher. If the function - * representing the condition does not hold for the given mode, the matching - * of a node with this mode is prohibited - * - * @param mode the mode to be checked - * @return nonzero if the condition holds, zero otherwise - * */ -typedef int (* ext_grs_mode_condition_func_t) (ir_mode *mode); - -/** - * A function representing the in-part of a computation, which - * has to be evaluated BEFORE performing a graph rewrite step. Every - * such function is associated with a function of type - * ext_grs_eval_out_func_t representing the out-part of the computation. - * - * @param pat_node_map the node map of the match, the rewriting is performed with. - * @param pat_edge_map the edge map of the match, the rewriting is performed with. - * - * @returns A ptr to some user defined data. The ptr returned will - * passed as input data to the respective eval-out function. - */ -typedef void* (* ext_grs_eval_in_func_t) ( - ir_node **pat_node_map, const ir_edge_t **pat_edge_map); - -/** - * A function representing the out-part of a computation, which - * has to be evaluated AFTER performing a graph rewrite step. Every - * such function is associated with a function of type - * ext_grs_eval_in_func_t representing the in-part of the computation. - * - * @param rpl_node_map the node map of the match, the rewriting is performed with. - * @param rpl_edge_map the edge map of the match, the rewriting is performed with. - * @param pat_node_map the node map of the match, the rewriting is performed with. - * @param data the pointer of user defined data returned by the respective - * eval-in function - */ -typedef void (* ext_grs_eval_out_func_t) ( - ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, - ir_node **pat_node_map, void *data); - - - -/** an invalid node or edge index, this is needed for negative - * nodes and edges which are NOT matched */ -#define ext_grs_EDGE_NODE_INDEX_INVALID -99 -/** an invalid edge position */ -#define ext_grs_NO_EDGE_POS -99 - - - - - -/** Create a new graph action of the given kind. */ -ext_grs_action_t *ext_grs_new_action(ext_grs_action_kind_t kind, char *name); - -/** Get the kind of an action. */ -ext_grs_action_kind_t ext_grs_act_get_kind(ext_grs_action_t *act); - -/** Impose a new negative graph pattern on the given action. - * @note The action must NOT be mature. */ -ext_grs_graph_t *ext_grs_act_impose_negative(ext_grs_action_t *action); - -/** Get the pattern graph of an action. */ -ext_grs_graph_t *ext_grs_act_get_pattern(ext_grs_action_t *action); - -/** Get the replacement graph of a rule action. If the action is not - * of kind rule NULL is returned instead. - */ -ext_grs_graph_t *ext_grs_act_get_replacement(ext_grs_action_t *action); - -/** add a new node to a given pattern graph of an unmature action - * @param graph the pattern, negative or replacement graph the node is added to - * @param name the new nodes name - * @param op the new nodes op - * @param mode the new nodes mode - * @param id the id of the new node - * - * @returns the new node - * - * @note the id has to be unique over the hole set of nodes of the pattern - * and all negative graphs of an action, and unique for the set of nodes - * of the replacement graph of an action. - */ -ext_grs_node_t *ext_grs_act_add_node(ext_grs_graph_t *graph, - char *name, ir_op *op, ir_mode *mode, int id); - -/** Add a new node to a negative pattern and relate it with a positive node */ -ext_grs_node_t *ext_grs_act_add_related_node(ext_grs_graph_t *graph, - char *name, ir_op *op, ir_mode *mode, int id, ext_grs_node_t *positive_node); - -/** Add a new node to the replacement pattern and announce to keep it in the host graph */ -ext_grs_node_t *ext_grs_act_add_node_to_keep(ext_grs_graph_t *graph, - char *name, ir_op *op, ir_mode *mode, int id, ext_grs_node_t *pattern_node); - -/** Add a new edge to a given pattern graph of an UNmature action. - * @param graph the pattern, negative or replacement graph the node is added to - * @param name the new nodes name - * @param arg the new edges target node - * @param func the new edges source node - * @param id the id of the new edge - * - * @returns the new edge - * - * @note the id has to be unique over the hole set of edges of the pattern - * and all negative graphs of an action, and unique for the set of edges - * of the replacement graph of an action. - */ -ext_grs_edge_t *ext_grs_act_add_edge(ext_grs_graph_t *graph, - char *name, int pos, ext_grs_node_t *arg, ext_grs_node_t *func, int id); - -/** Add a new edge to a negative pattern and relate it with a positive edge */ -ext_grs_edge_t *ext_grs_act_add_related_edge(ext_grs_graph_t *graph, - char *name, int pos, ext_grs_node_t *arg, ext_grs_node_t *func, int id, ext_grs_edge_t *positive_edge); - -/** Add a new edge to the replacement pattern and announce to keep it in the host graph */ -ext_grs_edge_t *ext_grs_act_add_edge_to_keep(ext_grs_graph_t *graph, - char *name, int pos, ext_grs_node_t *arg, ext_grs_node_t *func, int id, ext_grs_edge_t *pattern_edge); - -/** Mature an action. It is not possible to make any - * changes to this actions pattern afterwards (except allowing - * the homomorphic matching of nodes). - * @returns nonzero if succesful */ -int ext_grs_act_mature(ext_grs_action_t *action); - -/** Get a pattern node by its name. */ -ext_grs_node_t *ext_grs_act_get_node(ext_grs_action_t *action, char *name); - -/** Get a pattern node aiid by its name. */ -int ext_grs_act_get_node_aiid(ext_grs_action_t *action, char *name); -int ext_grs_act_get_node_aiid_n(ext_grs_action_t *action, char *name, int n); - -/** Get a pattern edge by its name. */ -ext_grs_edge_t *ext_grs_act_get_edge(ext_grs_action_t *action, char *name); - -/** Allow homomorphic matching of two pattern nodes, - * note that these two nodes MUST have the same op and mode - * (including mode ANY) and belong tp the same acion - * @returns zero if fails and nonzero otherwise - * @note the action the given nodes belong to has to be mature */ -int ext_grs_act_allow_nodes_hom(ext_grs_node_t *n1, ext_grs_node_t *n2); - -/** Assocites a pattern node and a replacement node of a given rule-action - * to be a node which is kept in the rewrting step. - * - * @param e1 the pattern edge - * @param e2 the replacement edge - * - * @return zero if an error occured, nonzero otherwise - */ -int ext_grs_act_announce_kept_node(ext_grs_node_t *n1, ext_grs_node_t *n2); - -/** Assocites a pattern edge and a replacement edge of a given rule-action - * to be an edge which is kept in the rewriting step. The two edges must - * have the same position or both no position at all. Otherwise an error - * will be reported. - * - * @param e1 the pattern edge - * @param e2 the replacement edge - * - * @return zero if an error occurred, nonzero otherwise - * - * @note if the replacement contains an edge without a valid position which is - * NOT associated with a pattern edge, an error will occur while maturing the - * respective action - */ -int ext_grs_act_announce_kept_edge(ext_grs_edge_t *e1, ext_grs_edge_t *e2); - -/** relate a negative node with a pattern node - * - * @param pat_node the pattern node - * @param neg_node the negative node - * - * @return zero if an error occured, nonzero otherwise - * - * @note The pattern and the negative node must belong to the same action. - * Furthermore, the action has to be already mature. - */ -int ext_grs_act_relate_neg_node(ext_grs_node_t *pat_node, ext_grs_node_t *neg_node); - -/** relate a negative edge with a pattern edge - * - * @param pat_edge the pattern node - * @param neg_edge the negative node - * - * @return zero if an error occured, nonzero otherwise - * - * @note The pattern and the negative edge must belong to the same action. - * Furthermore, the action has to be already mature. - * - */ -int ext_grs_act_relate_neg_edge(ext_grs_edge_t *pat_edge, ext_grs_edge_t *neg_edge); - -/** Sets the position function of a replacement edge. After rewriting the - * host edge corresponding to that replace edge gets the position computed - * by the position function. - * - * @param edge the replacement edge - * @param func the function computing the edge pos - * - * @return zero if an error occured, nonzero otherwise - * - * @note Fails if the given edge is not a replace edge or the - * the action the given edge belongs to is already mature. - */ -int ext_grs_act_set_pos_func(ext_grs_edge_t *edge, ext_grs_edge_pos_func_t func); - -/** Sets the op condition function of a (pattern or negative) node. - * The function checks wether nodes of certain subops may be matched - * with the given (pattern or negative) node or not - * - * @param node a (pattern or negative) node - * @param func the op condition function - * - * @return zero if an error occured, nonzero otherwise - */ -int ext_grs_act_set_op_condition( - ext_grs_node_t *node, ext_grs_op_condition_func_t func); - -/** Registers a mode condition function of a (pattern or negative) node. - * The function checks wether nodes of certain modes may be matched - * with the given (pattern or negative) node or not - * - * @param node a (pattern or negative) node - * @param func the mode condition function - * - * @return zero if an error occured, nonzero otherwise - */ -int ext_grs_act_set_mode_condition_func( - ext_grs_node_t *node, ext_grs_mode_condition_func_t func); - -/** Registers a condition function with some pattern or - * negative nodes of an action. - * - * @param func the function representing the condition - * @param graph the (pattern or negative) graph the given condition - * function is associated with - * @param n_nodes the number of nodes involved in the condition - * @param nodes the array of involved nodes - * @param n_edges the number of edges involved in the condition - * @param nodes the array of involved edges - * - * @return zero if an error occured, nonzero otherwise - - * @note The given action must NOT be mature! - */ -int ext_grs_act_register_condition( - ext_grs_condition_func_t func, - ext_grs_graph_t *graph, - int n_nodes, ext_grs_node_t **nodes, - int n_edges, ext_grs_edge_t **edges); - -/** Registers a pair of functions representing a computation, - * which shall be evaluated on a rewrite. The in-part is - * computed BEFORE the transformation of the host graph, - * the out-part is computed AFTER that. - * - * @param action the action the eval-out function is associated with - * @param in_func the function representing the computations in-part - * @param out_func the function representing the computations out-part - * - * @return zero if an error occurred, nonzero otherwise - * - * @note The given action must NOT be mature! - */ -int ext_grs_act_register_eval(ext_grs_action_t *action, - ext_grs_eval_in_func_t in_func, ext_grs_eval_out_func_t out_func); - - - - -#endif /*_EXT_GRS_ACTION_H_*/ diff --git a/ir/be/grgen/action_t.h b/ir/be/grgen/action_t.h deleted file mode 100644 index 6ba77d072..000000000 --- a/ir/be/grgen/action_t.h +++ /dev/null @@ -1,358 +0,0 @@ -#ifndef _EXT_GRS_ACTION_T_H_ -#define _EXT_GRS_ACTION_T_H_ - -/* - * Project: libFIRM/extension module/graph rewriting system - * File name: ext/grs/action_t.h - * Purpose: provides an internal interface for the creation of actions - * (i.e. rewriting rules and patterns to be found without - * performing a rewriting step) - * Author: Veit Batz - * Created: 29. August 2005 - * CVS-ID: $Id$ - * Copyright: (c) 2005 Universität Karlsruhe - * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. - */ - - -#include - -#include "common_t.h" -#include "action.h" - - - - - - -/** the kind of a graph elem (node or edge) */ -typedef enum { - /** a graph node */ - ext_grs_k_node, - /** a graph edge */ - ext_grs_k_edge, - /** a pseudo node */ - ext_grs_k_pseudo_node, - /** a pseudo edge */ - ext_grs_k_pseudo_edge -} ext_grs_elem_kind_t; - - -typedef double ext_grs_edge_cost_t; - - - -/** represents a node in a grs rule */ -struct _ext_grs_node_t -{ - ext_grs_elem_kind_t kind; /** mus be ext_grs_k_node or ext_grs_k_pseudo_node */ - - /* this nodes graph */ - ext_grs_graph_t *graph; - - char *name; /**< the name of this node */ - /** This nodes action internal id. This id is also used - * as index for match storage. */ - int aiid; - /** this nodes ir op */ - ir_op *op; - /** this nodes ir mode */ - ir_mode *mode; - /** arrays of incoming and outgoing edges */ - lc_list_t edges[2]; - /** represents the memberships in the graphs node list */ - lc_list_t node_list; - /** a function representing a condition regarding the op of a firm - * node which shall be matched with this (pattern or negative) node */ - ext_grs_op_condition_func_t op_condition; - /** a function representing a condition regarding the mode of a firm - * node which shall be matched with this (pattern or negative) node */ - ext_grs_mode_condition_func_t mode_condition; - /** number of incoming replace edges not associated with a pattern - * edge and having no specified position, these edges will be appended - * to the exisiting in array in the rwrite step (only used in replacement - * graphs) */ - int n_append_edges; - - /** index of the matcher op by which this node is first matched */ - int first_mop_index; - - /** some auxilary data needed to maintain a list of not yet processed nodes - * (see impl of Edmonds alogrithm in vs search planing) */ - lc_list_t not_visited_list; - - ext_grs_node_t *related_node; -}; - -typedef struct { - ext_grs_elem_kind_t kind; - union { ext_grs_node_t *n; struct _ext_grs_edge_t *e;} val; -} ext_grs_elem_t; - -/** represents an edge in a grs rule */ -struct _ext_grs_edge_t -{ - ext_grs_elem_kind_t kind; /** mus be ext_grs_k_edge or ext_grs_k_pseudo_edge */ - - /* this edges graph */ - ext_grs_graph_t *graph; - - char *name; /**< the name of this edge */ - /** This edges action internal id. This id is also used - * as index for match storage. */ - int aiid; - /** this edges position as an argument of its source node */ - int pos; - /** this edges argument node, i.e. the node the result of which is - * processed by the function node */ - ext_grs_node_t *arg; - /** this edges function node, i.e. the node using the argument for - * further computations */ - ext_grs_node_t *func; - /** if edge is a pseudo edge it represents follwing an edge against - * its direction or the matching of a start node. Then this member - * is a ptr to the edge or node represented */ - ext_grs_elem_t genuine_elem; - /** for actual (non pseudo) edges: points to the pseudo edge - * representing the backward traversal of this edge */ - ext_grs_edge_t *backward_edge; - /** for replacement edges, which have to be newly inserted, this function - * computes the position the edge is inserted with at its func-node */ - ext_grs_edge_pos_func_t position_func; - /* represents the membership in the graphs edge list - * (not for pseudo edges) */ - lc_list_t edge_list; - /** represents the membership in this edge src- and tgt-nodes - * in and out lists (not for pseudo edges) */ - lc_list_t list[2]; - /** index of the matcher op by which this edge is first matched */ - int first_mop_index; - - - /** A field needed in the planing process: - * represents this edges mambership in a - * meldable priority queue of edges */ - lc_list_t mpq_list; - /** A field needed in the planing process: - * represents this edges cost in this actions cost graph during the planing process */ - ext_grs_edge_cost_t cost; - - ext_grs_edge_t *related_edge; -}; - -typedef enum { - ext_grs_k_pattern, - ext_grs_k_negative, - ext_grs_k_replacement -} ext_grs_graph_kind_t; - -/** represents a pattern graph to be matched or inserted or - * a negetive pattern graph */ -struct _ext_grs_graph_t { - ext_grs_graph_kind_t kind; - /** the action this pattern graph belongs to */ - ext_grs_action_t *action; - /** number of this graphs nodes */ - int n_nodes; - /** number of this graphs edges */ - int n_edges; - /** number of this graphs conditions */ - int n_conditions; - /**this graphs nodes */ - lc_list_t nodes; - /**this graphs edges */ - lc_list_t edges; - /** if this graph is a negative pattern this field represents the - * membership in this graphs actions list of negative patterns */ - lc_list_t negative_list; - /** A pseudo node needed for the computation of matching plans. - * all edges incident to this node are pseudo edges representing - * some kind of cost used in match planning */ - ext_grs_node_t root_node; -}; - - -/** An action the grs can perform. Possible kinds of actions are rules - * and tests. A rule describes the replacement of pattern graphs by a - * replacement graph, a test only describes the lookup for occurences of - * the pattern graphs, where it is not intended to perform a replacement */ -struct _ext_grs_action_t -{ - /** this actions kind (e.g. rule or test)*/ - ext_grs_action_kind_t kind; - /** this actions id */ - int id; - /** this actions name */ - char *name; - /** flag: tells wether this action is mature or not. No changes - * can be performed on the pattern, replacement or negative - * patterns of a mature action */ - int mature; - - - /* information concerning the matching */ - - /** the pattern graph */ - ext_grs_graph_t *pattern; - /** list of all negative patterns if this action */ - lc_list_t negatives; - /** overall number of real nodes of this action without pseudo and negative nodes */ - int n_nodes; - /** overall number of real edges of this action without pseudo and negative edges */ - int n_edges; - /** overall number of negative nodes of this action */ - int n_neg_nodes; - /** overall number of negative edges of this action */ - int n_neg_edges; - /** overall number of pseudo nodes of this action excluding the root node */ - int n_pseudo_nodes; - /** overall number of pseudo edges of this action */ - int n_pseudo_edges; - - /** overall number of conditions registered with this action - * (without op and mode conditions) */ - int n_conditions; - /** the conditions registered with this action (without op and mode conditions) */ - ext_grs_condition_func_t *conditions; - /** the aiids of the nodes involved in the condition with the given index */ - lc_bitset_t **conds_involved_nodes; - /** the aiids of the edges involved in the condition with the given index */ - lc_bitset_t **conds_involved_edges; - /** All conditions of this action stored as list of condition descriptors. - * Only needed when the action is not yet mature. */ - lc_list_t listed_conditions; - - /** maximum (pattern or negative) node aiid present */ - int max_node_aiid; - /** maximum (pattern or negative) edge aiid present */ - int max_edge_aiid; - /** all (positive or negative) nodes of - * this action (no replacement nodes) */ - ext_grs_node_t **nodes; - /** the indices of the conditions refering the node of a given aiid */ - lc_bitset_t **nodes_refering_conds; - /** all (positive or negative) edges of this action - * (no replacement edges) */ - ext_grs_edge_t **edges; - /** the indices of the conditions refering the edge of a given aiid */ - lc_bitset_t **edges_refering_conds; - - /** tells wether two nodes are allowed to be matched homomorphic.
- * Usage: act->hom[node1_id][mode2_id] */ - int **hom; - - /** tells wether a positive and a negative node are related - * Usage: act->neg_node_relate[pat_node][neg_node]d - int *neg_node_d;*/ - - /** tells wether a positive and a negative edge are related - * Usage: act->neg_edge_relate[pat_edge][neg_edge]d - int *neg_edge_related;*/ - - /** tells wether a node is allowed for multiple matching when - * parallel rule application is intended - * Usage: act->critical[node_id] */ - int *node_critical; - - /** tells wether an edge is allowed for multiple matching when - * parallel rule application is intended - * Usage: act->critical[edge_id] */ - int *edge_critical; - - - - /* information concerning the replacement */ - - /** the replacament graph (if action is a rule) */ - ext_grs_graph_t *replacement; - - /** if pattern node is to be kept - * pattern_node_kept[pattern_node_index] - * yields the replacement aiid of the corresponding - * replace node and -1 otherwise */ - int *pattern_node_kept; - /** if pattern edge is to be kept - * pattern_node_kept[pattern_edge_index] - * yields the replacement aiid of the corresponding - * replace edge and -1 otherwise */ - int *pattern_edge_kept; - - /** number of nodes of the replacement graph */ - int n_replacement_nodes; - /** The nodes of the replacement graph. The index is the nodes aiid, which is - * unique ONLY for replacement nodes */ - ext_grs_node_t **replacement_nodes; - /** number of edges of the replacement graph */ - int n_replacement_edges; - /** the edges of the rplacement graph, index is the nodes aiid, which is - * unique ONLY for replacement nodes */ - ext_grs_edge_t **replacement_edges; - /** Tells wether a replacement node is to be newly inserted or kept: - * -1 means to be inserted, >=0 means kept. If the node is kept, - * the value equals the aiid of the corresponding pattern node. - * USAGE: replacement_node_kept[replace_node_aiid] */ - int *replacement_node_kept; - /** Tells wether a replacement edge is to be newly inserted or kept: - * -1 means to be inserted, >=0 means kept. If the edge is kept, - * the value equals the aiid of the corresponding pattern edge. - * USAGE: replacement_edge_kept[replace_edge_aiid] */ - int *replacement_edge_kept; - /** maximum replacement node aiid present */ - int max_repl_node_aiid; - /** maximum replacement edge aiid present */ - int max_repl_edge_aiid; - /** the list of functions to be evaluated directly after each rewrite step, - * the evaluation is done in the order, the functions are stored - * in this list */ - lc_list_t listed_evals; - - /** Stores pairs of nodes and edges associated to be kept nodes/edge. - * Only needed when the action is not yet mature. */ - lc_pset *kept_elems; -}; - - -/** A condition descriptor. Describes which (pattern or negative) nodes - * and/or edfes are involved in the condition represented by the given - * condition function */ -typedef struct { - /** the action this condition belongs to */ - struct _ext_grs_graph_t *graph; - /** the function representing the condition */ - ext_grs_condition_func_t condition; - /** the number of involved nodes */ - int n_nodes; - /** the involved nodes */ - ext_grs_node_t **nodes; - /** the number of involved edges */ - int n_edges; - /** the involved edges */ - ext_grs_edge_t **edges; - /** represents the list of onditions of an action */ - lc_list_t condition_list; -} ext_grs_cond_descr_t; - -/** An eval descriptor. Respresents an eval function in - * an actions list of evals */ -typedef struct { - /** the eval-in function */ - ext_grs_eval_in_func_t eval_in; - /** the eval-out function */ - ext_grs_eval_out_func_t eval_out; - /** represents the list of evals of an action */ - lc_list_t eval_list; - /** some auxilary data used when finishing a match */ - void *data; -} ext_grs_eval_descr_t; - -/** Initialize the action part of the exr/grs module of the libfirm. - * This is an internal function. */ -void _ext_grs_act_init(void); - -/** Finalize the action part of the exr/grs module of the libfirm. - * This is an internal function. */ -void _ext_grs_act_finalize(void); - - - -#endif /* _EXT_GRS_ACTION_T_H_ */ diff --git a/ir/be/grgen/ana_vs.c b/ir/be/grgen/ana_vs.c deleted file mode 100644 index a88c68f5d..000000000 --- a/ir/be/grgen/ana_vs.c +++ /dev/null @@ -1,514 +0,0 @@ -/* - * Project: libFIRM/extension module/graph rewriting system - * File name: ext/grs/ana_vs.c - * Purpose: implements the interfaces in analyze.h by a - * v-structure (vs) statistic (see [D"orr95],[Batz05b]) - * Author: Veit Batz - * Created: 22. June 2005 - * CVS-ID: $Id$ - * Copyright: (c) 2005 Universität Karlsruhe - * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. - */ - -/** - * @file ext/grs/ana_vs.c - * @brief implements the interfaces in analyze.h by a - * v-structure (vs) statistic (see [D"orr95],[Batz05b]) - */ - -#include "iredges_t.h" -#include "irgwalk.h" - -#include "common_t.h" -#include "analyze.h" -#include "auxilary_t.h" -#include "base_t.h" -#include "ana_vs_t.h" - - - -/* counter for isomorphic arguments and result uses during analyses */ -static int *n_isomorphics; -static int op_dim, mode_dim; -#define N_ISOMORPHICS(opc, mc) n_isomorphics[(opc)*mode_dim + (mc)] - - -/* Counts isomorphic edeges incident at the current node - * and stores some information in vs table. - * To be called by an irg walker - * - * node the current ir node - * env the vs statistics object of the current ir graph - */ -static void ana_nodes_vs(ir_node *node, void *env) -{ - - ext_grs_vs_stat_t *vs_stat = (ext_grs_vs_stat_t *) env; - ir_graph *irg = vs_stat->irg; - ext_grs_irg_private_t *pr_g = _ext_grs_get_irg_private(irg); - ext_grs_irn_private_t *pr_n = _ext_grs_get_irn_private(node); - - const ir_edge_t *edge; - - int j, k; - int n_ins = get_irn_arity(node); - - int i = -1; /* for non Block nodes start at pos -1 */ - ir_opcode opc = get_irn_opcode(node); - modecode mc = get_irn_modecode(node); - - - - assert(vs_stat->irg == get_irn_irg(node) && "got wrong vs statistics"); - - - - - /* add the current node to the appropriate node list */ - lc_list_add(& pr_n->node_list, & _ext_grs_NODE_LIST(pr_g, opc, mc)); - /* increment the node counter counting the node in that list */ - (_ext_grs_N_INSTANCES(pr_g, opc, mc))++; - /* increment the counter counting the instances of an op for ANY mode */ - if (mc != irm_ANY) - (_ext_grs_N_INSTANCES(pr_g, opc, irm_ANY))++; - - /* count isomorphic arguments of the current node */ - if (get_irn_op(node) == op_Block) i = 0; - for ( ; i < n_ins; i++) { - - ir_node *arg = get_irn_n(node, i); - ir_opcode opc_arg = get_irn_opcode(arg); - modecode mc_arg = get_irn_modecode(arg); - ir_opcode super_opc_arg; - - - int n_super_ops = ARR_LEN(_ext_grs_all_super_ops_of_op[opc_arg]); - - /* increment counters for the apropriate op and all super ops */ - for (j = 0; j < n_super_ops; j++) { - super_opc_arg = get_op_code(_ext_grs_all_super_ops_of_op[opc_arg][j]); - N_ISOMORPHICS(super_opc_arg, mc_arg)++; - N_ISOMORPHICS(super_opc_arg, irm_ANY)++; - } - } - /* store resulting number of v structures */ - i = -1; - if (get_irn_op(node) == op_Block) i = 0; - n_ins = get_irn_arity(node); - for ( ; i < n_ins; i++) { - - ir_node *arg = get_irn_n(node, i); - ir_opcode opc_arg = get_irn_opcode(arg); - modecode mc_arg = get_irn_modecode(arg); - ir_opcode super_opc_arg; - - -#if(0) - int n_occ_add = 0; - int n_occ_any_add = 0; - int n_any_occ_add = 0; - int n_any_occ_any_add = 0; -#endif - - int n_super_ops = ARR_LEN(_ext_grs_all_super_ops_of_op[opc_arg]); - - for (j = 0; j < n_super_ops; j++) { - super_opc_arg = get_op_code(_ext_grs_all_super_ops_of_op[opc_arg][j]); - if (N_ISOMORPHICS(super_opc_arg, mc_arg) > 0) { - double x = _log2(N_ISOMORPHICS(super_opc_arg, mc_arg)); - -#if(0) - /* count the occurence of nodes with such an edge */ - n_occ_add++; - if (mc != irm_ANY) - n_occ_any_add++; -#endif - - /* accumulate multiplicity of such an edge */ - if (x > 0) { - /* and also add for all super ops of curent nodes op */ - int n_super_ops_func = ARR_LEN(_ext_grs_all_super_ops_of_op[opc]); - for (k = 0; k < n_super_ops_func; k++) { - ir_opcode super_opc_func = get_op_code(_ext_grs_all_super_ops_of_op[opc][k]); - - _add_n_v_structures( - vs_stat, super_opc_func, mc, super_opc_arg, mc_arg, ext_grs_in, x); - if (mc != irm_ANY) - _add_n_v_structures(vs_stat, - super_opc_func, irm_ANY, super_opc_arg, mc_arg, ext_grs_in, x); - - } - } - N_ISOMORPHICS(super_opc_arg, mc_arg) = 0; - } - if (N_ISOMORPHICS(super_opc_arg, irm_ANY) > 0) { - double x = _log2(N_ISOMORPHICS(super_opc_arg, irm_ANY)); - -#if(0) - /* count the occurence of nodes with such an edge */ - n_any_occ_add++; - if (mc != irm_ANY) - n_any_occ_any_add++; -#endif - - /* accumulate multiplicity of such an edge */ - if (x > 0) { - /* and also add for all super ops of curent nodes op */ - int n_super_ops_func = ARR_LEN(_ext_grs_all_super_ops_of_op[opc]); - for (k = 0; k < n_super_ops_func; k++) { - ir_opcode super_opc_func = get_op_code(_ext_grs_all_super_ops_of_op[opc][k]); - - _add_n_v_structures( - vs_stat, super_opc_func, mc, super_opc_arg, irm_ANY, ext_grs_in, x); - if (mc != irm_ANY) - _add_n_v_structures(vs_stat, - super_opc_func, irm_ANY, super_opc_arg, irm_ANY, ext_grs_in, x); - } - } - N_ISOMORPHICS(super_opc_arg, irm_ANY) = 0; - } - } -#if(0) - if (n_occ_add > 0) - _add_n_occurence(vs_stat, opc, mc, opc_arg, mc_arg, ext_grs_in, n_occ_add); - if (n_occ_any_add > 0) - _add_n_occurence(vs_stat, opc, irm_ANY, opc_arg, mc_arg, ext_grs_in, n_any_occ_add); - if (n_any_occ_add > 0) - _add_n_occurence(vs_stat, opc, mc, opc_arg, irm_ANY, ext_grs_in, n_occ_any_add); - if (n_any_occ_any_add > 0) - _add_n_occurence(vs_stat, opc, irm_ANY, opc_arg, irm_ANY, ext_grs_in, n_any_occ_any_add); -#endif - - } - - - - /* count isomorphic uses of the current nodes result */ - foreach_out_edge(node, edge) { - - ir_node *res = get_edge_src_irn(edge); - ir_opcode opc_res = get_irn_opcode(res); - modecode mc_res = get_irn_modecode(res); - - modecode super_opc_res; - - int n_super_ops = ARR_LEN( _ext_grs_all_super_ops_of_op[opc_res]); - - /* increment counters for the apropriate op and all super ops */ - for (j = 0; j < n_super_ops; j++) { - super_opc_res = get_op_code(_ext_grs_all_super_ops_of_op[opc_res][j]); - N_ISOMORPHICS(super_opc_res, mc_res)++; - N_ISOMORPHICS(super_opc_res, irm_ANY)++; - } - } - /* store resulting number of v structures */ - foreach_out_edge(node, edge) { - - ir_node *res = get_edge_src_irn(edge); - ir_opcode opc_res = get_irn_opcode(res); - modecode mc_res = get_irn_modecode(res); - modecode super_opc_res; - -#if(0) - int n_occ_add = 0; - int n_occ_any_add = 0; - int n_any_occ_add = 0; - int n_any_occ_any_add = 0; -#endif - - int n_super_ops = ARR_LEN( _ext_grs_all_super_ops_of_op[opc_res]); - - for (j = 0; j < n_super_ops; j++) { - super_opc_res = get_op_code(_ext_grs_all_super_ops_of_op[opc_res][j]); - if (N_ISOMORPHICS(super_opc_res, mc_res) > 0) { - - double x = _log2(N_ISOMORPHICS(super_opc_res, mc_res)); - -#if(0) - /* count the occurence of nodes with such an edge */ - n_occ_add++; - if (mc != irm_ANY) - n_any_occ_add++; -#endif - - /* accumulate multiplicity of such an edge */ - if (x > 0) { - /* and also add for all super ops of curent nodes op */ - int n_super_ops_func = ARR_LEN(_ext_grs_all_super_ops_of_op[opc]); - for (k = 0; k < n_super_ops_func; k++) { - ir_opcode super_opc_func = get_op_code(_ext_grs_all_super_ops_of_op[opc][k]); - - _add_n_v_structures( - vs_stat, super_opc_func, mc, super_opc_res, mc_res, ext_grs_out, x); - if (mc != irm_ANY) - _add_n_v_structures(vs_stat, - super_opc_func, irm_ANY, super_opc_res, mc_res, ext_grs_out, x); - } - } - N_ISOMORPHICS(super_opc_res, mc_res) = 0; - } - if (N_ISOMORPHICS(super_opc_res, irm_ANY) > 0) { - - double x = _log2(N_ISOMORPHICS(super_opc_res, irm_ANY)); - -#if(0) - /* count the occurence of nodes with such an edge */ - n_occ_any_add++; - if (mc != irm_ANY) - n_any_occ_any_add++; -#endif - - /* accumulate multiplicity of such an edge */ - if (x > 0) { - /* and also add for all super ops of curent nodes op */ - int n_super_ops_func = ARR_LEN(_ext_grs_all_super_ops_of_op[opc]); - for (k = 0; k < n_super_ops_func; k++) { - ir_opcode super_opc_func = get_op_code(_ext_grs_all_super_ops_of_op[opc][k]); - - _add_n_v_structures( - vs_stat, super_opc_func, mc, super_opc_res, irm_ANY, ext_grs_out, x); - if (mc != irm_ANY) - _add_n_v_structures(vs_stat, - super_opc_func, irm_ANY, super_opc_res, irm_ANY, ext_grs_out, x); - } - } - N_ISOMORPHICS(super_opc_res, irm_ANY) = 0; - } - } -#if(0) - if (n_occ_add > 0) - _add_n_occurence(vs_stat, opc, mc, opc_res, mc_res, ext_grs_out, n_occ_add); - if (n_any_occ_add > 0) - _add_n_occurence(vs_stat, opc, irm_ANY, opc_res, mc_res, ext_grs_out, n_any_occ_add); - if (n_occ_any_add > 0) - _add_n_occurence(vs_stat, opc, mc, opc_res, irm_ANY, ext_grs_out, n_occ_add); - if (n_any_occ_any_add > 0) - _add_n_occurence(vs_stat, opc, irm_ANY, opc_res, irm_ANY, ext_grs_out, n_any_occ_add); -#endif - - } - -} - -/* initialize an vs analyzer */ -static void init(ext_grs_analyzer_t *alz) { - - ext_grs_ana_vs_private_t *pr_a = malloc(sizeof(*pr_a)); - - /* init isomorphic edge counters with 0 */ - op_dim = 170; - mode_dim = 25; - n_isomorphics = malloc(170*25*sizeof(int)); - memset(n_isomorphics, 0, 170*25*sizeof(int)); - - /* init the pset mapping ir_graphs to that ir_graphs vs statistic */ - pr_a->ana_results = lc_pset_new(_stat_cmp_func, 256); - /* init the global vs statistic */ - pr_a->global_vs_stat.irg = NULL; - pr_a->global_vs_stat.stat = lc_pset_new(_vs_cmp_func, 256); - obstack_init(& pr_a->global_vs_stat.obst); - - alz->data = pr_a; -} - -/* perform string v structure analysis for a given graph */ -static void analyze(ext_grs_analyzer_t *alz, ir_graph *irg) -{ - int j,k; - ext_grs_irg_private_t *pr_g = _ext_grs_get_irg_private(irg); - ext_grs_vs_stat_t *vs_stat; - - assert(pr_g->matching_enabled && "matching not enabled for this graph"); - - edges_assure(irg); - - /* check whether the array of instance counters is great enough */ - if (_ext_grs_max_opcode >= op_dim) { - free(n_isomorphics); - op_dim = _ext_grs_max_opcode + 50; - n_isomorphics = malloc(op_dim*mode_dim*sizeof(int)); - memset(n_isomorphics, 0, op_dim*mode_dim*sizeof(int)); - } - - if (_ext_grs_max_modecode >= mode_dim) { - free(n_isomorphics); - mode_dim = _ext_grs_max_modecode + 50; - n_isomorphics = malloc(op_dim*mode_dim*sizeof(int)); - memset(n_isomorphics, 0, op_dim*mode_dim*sizeof(int)); - } - - - /* init the op list heads */ - for (j = 0; j < _ext_grs_irgpr_op_dim; j++) - for (k = 0; k < _ext_grs_irgpr_mode_dim; k++) { - LC_INIT_LIST_HEAD(& _ext_grs_NODE_LIST(pr_g, j, k)); - _ext_grs_N_INSTANCES(pr_g, j, k) = 0; - } - /* init the number of (op,mode)-instances with zero */ - memset(pr_g->n_instances, 0, - _ext_grs_irgpr_op_dim * _ext_grs_irgpr_mode_dim * - sizeof(*(pr_g->n_instances))); - - /* get the statistics object of the given irg and remove its complete contents */ - vs_stat = _get_irg_vs_stat(alz, irg); - assert(vs_stat->irg == irg); - - lc_pset_del(vs_stat->stat); - vs_stat->stat = lc_pset_new(_vs_cmp_func, 256); - obstack_free(& vs_stat->obst, NULL); - obstack_init(& vs_stat->obst); - - - - irg_walk_graph(irg, ana_nodes_vs, NULL, vs_stat); -} - -static void free_ana_result(ext_grs_analyzer_t *alz, ir_graph *irg) -{ - ext_grs_vs_stat_t *vs_stat = _get_irg_vs_stat(alz, irg); - - if (vs_stat->stat) { - lc_pset_del(vs_stat->stat); - vs_stat->stat = lc_pset_new(_vs_cmp_func, 256); - } - - obstack_free(& vs_stat->obst, NULL); - obstack_init(& vs_stat->obst); -} - -/* dump the current analysis result for a given ir graph */ -static void dump_ana_result(ext_grs_analyzer_t *alz, ir_graph *irg) -{ - int i,j,k,l,r; - double x; - ext_grs_vs_stat_t *vs_stat = _get_irg_vs_stat(alz, irg); - ext_grs_irg_private_t *pr_g = _ext_grs_get_irg_private(irg); - - printf("Dump vs-statistics for ir graph %ld...\n", get_irg_graph_nr(irg)); - - for (i=0; i <= _ext_grs_max_opcode; i++) - for (j=0; j <= _ext_grs_max_modecode; j++) - for (k=0; k <= _ext_grs_max_opcode; k++) - for (l=0; l <= _ext_grs_max_modecode; l++) { - x = _get_n_v_structures(vs_stat,i,j,k,l,ext_grs_in); - if (x > (double)0) { - - int occ = _get_n_occurence(vs_stat, i, j, k, l, ext_grs_in); - int n_inst = 0; - double acc_div_occ = 0.0; - double acc_div_inst = 0.0; - - /* compute the number of instances present for the - * func node (including all sub ops) */ - for (r = 0; r < ARR_LEN(_ext_grs_all_sub_ops_of_op[i]); r++) { - ir_opcode sub_opc = get_op_code(_ext_grs_all_sub_ops_of_op[i][r]); - n_inst += _ext_grs_N_INSTANCES(pr_g, sub_opc, j); - } - - if (occ > 0) - acc_div_occ = x / occ; - - if (n_inst > 0) - acc_div_inst = x / (double)n_inst; - - printf("# (%s, %s) -in-> (%s, %s): acc, occ, n_inst, acc/n_inst\n", - get_op_name(_ext_grs_op_map[i]), - get_mode_name(_ext_grs_mode_map[j]), - get_op_name(_ext_grs_op_map[k]), - get_mode_name(_ext_grs_mode_map[l]) - ); - printf("(%d,%d,%d,%d,in): %lf, %d, %d, %lf\n", - i,j,k,l, - x, occ, n_inst, - acc_div_inst - ); - } - x = _get_n_v_structures(vs_stat,i,j,k,l,ext_grs_out); - if (x > (double)0) { - - int occ = _get_n_occurence(vs_stat, i, j, k, l, ext_grs_out); - int n_inst = 0; - double acc_div_occ = 0.0; - double acc_div_inst = 0.0; - - /* compute the number of instnaces present for the - * func node (including all sub ops) */ - for (r = 0; r < ARR_LEN(_ext_grs_all_sub_ops_of_op[i]); r++) { - ir_opcode sub_opc = get_op_code(_ext_grs_all_sub_ops_of_op[i][r]); - n_inst += _ext_grs_N_INSTANCES(pr_g, sub_opc, j); - } - - if (occ > 0) - acc_div_occ = x / occ; - - if (n_inst > 0) - acc_div_inst = x / (double)n_inst; - - printf("# (%s, %s) <-out- (%s, %s): acc, occ, n_inst, acc/n_inst\n", - get_op_name(_ext_grs_op_map[i]), - get_mode_name(_ext_grs_mode_map[j]), - get_op_name(_ext_grs_op_map[k]), - get_mode_name(_ext_grs_mode_map[l]) - ); - printf("(%d,%d,%d,%d,out): %lf, %d, %d, %lf\n", - i,j,k,l, - x, occ, n_inst, - acc_div_inst - ); - } - } - - for (i=0; i <= _ext_grs_max_opcode; i++) - for (j=0; j <= _ext_grs_max_modecode; j++) { - int n_inst = 0; - const char *opname; - const char *modename; - - for (r = 0; r < ARR_LEN(_ext_grs_all_sub_ops_of_op[i]); r++) { - ir_opcode sub_opc = get_op_code(_ext_grs_all_sub_ops_of_op[i][r]); - n_inst += _ext_grs_N_INSTANCES(pr_g, sub_opc, j); - } - - if (_ext_grs_op_map[i] != NULL) - opname = get_op_name(_ext_grs_op_map[i]); - else opname = NULL; - - if (_ext_grs_mode_map[j] != NULL) - modename = get_mode_name(_ext_grs_mode_map[j]); - else modename = NULL; - - if (opname == NULL) opname = "dummy"; - if (modename == NULL) modename = "dummy"; - - if (n_inst != 0 || _ext_grs_N_INSTANCES(pr_g, i,j) != 0) - printf("Number of instances (%s, %s): direct = %d, with sub ops = %d\n", - opname, modename, _ext_grs_N_INSTANCES(pr_g, i,j), n_inst); - } - - - printf(" done\n"); -} - - - - - - - - - -static ext_grs_analyzer_t vs_analyzer; - - -/** yields an analyzer performing a v-structure statisitc */ -ext_grs_analyzer_t *ext_grs_get_vs_analyzer(void) -{ - memset(&vs_analyzer, 0, sizeof(vs_analyzer)); - vs_analyzer.tag = "vs_analyzer"; - vs_analyzer.dump_ana_result = dump_ana_result; - vs_analyzer.analyze = analyze; - vs_analyzer.free_ana_result = free_ana_result; - - init(&vs_analyzer); - return &vs_analyzer; -} diff --git a/ir/be/grgen/ana_vs.h b/ir/be/grgen/ana_vs.h deleted file mode 100644 index 0a7c1854d..000000000 --- a/ir/be/grgen/ana_vs.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Project: libFIRM/extension module/graph rewriting system - * File name: ext/grs/ana_vs.h - * Purpose: provides an interface for getting a v-structure based analyzer - * - * Author: Veit Batz - * Created: 22. June 2005 - * CVS-ID: $Id$ - * Copyright: (c) 2005 Universität Karlsruhe - * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. - */ - -/** - * @file ext/grs/ana_vs.h - * @brief provides an interface for getting a v-structure based analyzer - */ - -#ifndef _EXT_GRS_ANA_VS_H_ -#define _EXT_GRS_ANA_VS_H_ - - - - -#include "analyze.h" - - - -/** yields an analyzer perorming a strong v structure statistic */ -ext_grs_analyzer_t *ext_grs_get_vs_analyzer(void); - - - - -#endif /*_EXT_GRS_ANA_VS_H_*/ diff --git a/ir/be/grgen/ana_vs_t.h b/ir/be/grgen/ana_vs_t.h deleted file mode 100644 index 1b329c38f..000000000 --- a/ir/be/grgen/ana_vs_t.h +++ /dev/null @@ -1,341 +0,0 @@ -#ifndef _ANA_VS_T_H_ -#define _ANA_VS_T_H_ -/* - * Project: libFIRM/extension module/graph rewriting system - * File name: ext/grs/ana_vs_t.c - * Purpose: internal interfaces of a v-structure (vs) statistic - * based graph analyzer (see [D"orr95],[Batz05b]) - * Author: Veit Batz - * Created: 30. July 2005 - * CVS-ID: $Id$ - * Copyright: (c) 2005 Universität Karlsruhe - * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. - */ - -/** - * @file ext/grs/ana_vs_t.h - * @brief internal interfaces of a v-structure (vs) statistic - * based graph analyzer (see [D"orr95],[Batz05b]) - */ - -#include -#ifdef _WIN32 -#include -#else -#include -#endif -#include "common_t.h" -#include "analyze_t.h" -#include "ana_vs.h" - - - - - - -/* an entry of a vs statistics which is represented by as pset */ -typedef struct _ext_grs_vs_counter_t { - ir_opcode o1, o2; - modecode m1, m2; - ext_grs_direction_t dir; - double counter; /* accumulated exponent of multoplicity */ - int occurence; /* number of occurences of a node with such an edge */ -} ext_grs_vs_counter_t; - - -typedef struct _ext_grs_vs_stat_t { - ir_graph *irg; - lc_pset *stat; - struct obstack obst; -} ext_grs_vs_stat_t; - -typedef struct { - /* maps ir_graphs to vs statistics of the ir_graphs */ - lc_pset *ana_results; - /* the global vs statistics */ - ext_grs_vs_stat_t global_vs_stat; -} ext_grs_ana_vs_private_t; - - - - -#ifndef _ext_grs_VS_HASH -#define _ext_grs_VS_HASH(c) \ - HASH_PTR(\ - (void *)(\ - ((unsigned)_ext_grs_op_map[(c)->o1]) ^ \ - ((unsigned)_ext_grs_op_map[(c)->o2]) ^ \ - ((unsigned)_ext_grs_mode_map[(c)->m1]) ^ \ - ((unsigned)_ext_grs_mode_map[(c)->m2]) ^ \ - ((unsigned)(c)->dir << 5) \ - )\ - ) -#endif - -/* compare function for a pset representing a vs statistics */ -static int _vs_cmp_func(const void *x1, const void *x2) -{ - ext_grs_vs_counter_t *c1, *c2; - c1 = (ext_grs_vs_counter_t *) x1; - c2 = (ext_grs_vs_counter_t *) x2; - - /* if all entries are equal: return 0, else non-zero */ - return (c1->o1 - c2->o1) | (c1->m1 - c2->m1) | - (c1->o2 - c2->o2) | (c1->m2 - c2->m2) | - (c1->dir - c2->dir) ; -} - -static int _stat_cmp_func(const void *x1, const void *x2) -{ - ext_grs_vs_stat_t *s1, *s2; - s1 = (ext_grs_vs_stat_t *) x1; - s2 = (ext_grs_vs_stat_t *) x2; - - /* if irg entries are equal: return 0, else non-zero */ - return s1->irg - s2->irg; -} - - - - -/* get the pset representing the given irgs vs statistics */ -static ext_grs_vs_stat_t -*_get_irg_vs_stat(ext_grs_analyzer_t *alz, ir_graph *irg) -{ - unsigned hash; - ext_grs_vs_stat_t dummy_stat, *stat; - - lc_pset *res_set = ((ext_grs_ana_vs_private_t *)alz->data)->ana_results; - - hash = HASH_PTR(irg); - - dummy_stat.irg = irg; - - /* lookup for the pset representing the irgs vs statitic */ - stat = (ext_grs_vs_stat_t *) - lc_pset_find(res_set, &dummy_stat, HASH_PTR(irg)); - - /* if no such statistics present, create one */ - if (stat == NULL) { - - stat = malloc(sizeof(*stat)); - assert (stat != NULL && "could not allocate missing irg statistics"); - memset(stat, 0, sizeof(*stat)); - - /* set it up */ - stat->irg = irg; - stat->stat = lc_pset_new(_vs_cmp_func, 256); - obstack_init(& stat->obst); - - /* store stat in pset */ - lc_pset_insert(res_set, stat, HASH_PTR(irg)); - } - return stat; -} - - - - - -/* add an onount to the given vs statistic */ -void static _add_n_v_structures( - ext_grs_vs_stat_t *vs_stat, - ir_opcode o1, modecode m1, ir_opcode o2, modecode m2, - ext_grs_direction_t dir, double x) -{ - unsigned hash; - ext_grs_vs_counter_t *count, *dummy_count; -/* - printf("o1,m1,o2,m2,d: %s,%s,%s,%s,%d: %lf\n", - get_op_name(_ext_grs_op_map[o1]), - get_mode_name(_ext_grs_mode_map[m1]), - get_op_name(_ext_grs_op_map[o2]), - get_mode_name(_ext_grs_mode_map[m2]), - dir, - x - ); - */ - /* alloc a dummy stat entry on the stack */ - dummy_count = alloca(sizeof(*dummy_count)); - - dummy_count->o1 = o1; - dummy_count->o2 = o2; - dummy_count->m1 = m1; - dummy_count->m2 = m2; - dummy_count->dir = dir; - - hash = _ext_grs_VS_HASH(dummy_count); - count = lc_pset_find(vs_stat->stat, dummy_count, hash); - - /* if entry already present, add counter */ - if (count != NULL) { - count->counter += x; - return; - } - - /* there's no stat entry present, so create one */ - dummy_count = obstack_alloc(& vs_stat->obst, sizeof(*count)); - dummy_count->o1 = o1; - dummy_count->o2 = o2; - dummy_count->m1 = m1; - dummy_count->m2 = m2; - dummy_count->dir = dir; - dummy_count->counter = x; - dummy_count->occurence = 0; - lc_pset_insert(vs_stat->stat, dummy_count, hash); -} - -/* subtract an onount from the given vs statistic */ -void static _sub_n_v_structures( - ext_grs_vs_stat_t *vs_stat, - ir_opcode o1, modecode m1, ir_opcode o2, modecode m2, - ext_grs_direction_t dir, double x) -{ - unsigned hash; - ext_grs_vs_counter_t *count, *dummy_count; - - /* alloc stat entry on the stat objects obstack */ - dummy_count = (ext_grs_vs_counter_t *) - obstack_alloc(& vs_stat->obst, sizeof(*count)); - - dummy_count->o1 = o1; - dummy_count->o2 = o2; - dummy_count->m1 = m1; - dummy_count->m2 = m2; - dummy_count->dir = dir; - - hash = _ext_grs_VS_HASH(dummy_count); - count = lc_pset_find(vs_stat->stat, dummy_count, hash); - - /* if entry already present, add counter */ - if (count != NULL) { - count->counter -= x; - obstack_free(& vs_stat->obst, dummy_count); - return; - } - - /* if entry not present, store dummy_count as a new one */ - dummy_count->counter = -x; - dummy_count->occurence = 0; - lc_pset_insert(vs_stat->stat, dummy_count, hash); -} - -/* get the current multiplicity of the given vs */ -double static _get_n_v_structures( - ext_grs_vs_stat_t *vs_stat, ir_opcode o1, modecode m1, ir_opcode o2, modecode m2, - ext_grs_direction_t dir) -{ - unsigned hash; - - ext_grs_vs_counter_t *count, dummy_count; - dummy_count.o1 = o1; - dummy_count.o2 = o2; - dummy_count.m1 = m1; - dummy_count.m2 = m2; - dummy_count.dir = dir; - - hash = _ext_grs_VS_HASH(&dummy_count); - - count = lc_pset_find(vs_stat->stat, &dummy_count, hash); - - /* if entry already present return counter */ - if (count != NULL) { - return count->counter; - } - - /* otherwise return 0 */ - return (double)0; -} - -void static INLINE _inc_n_occurence(ext_grs_vs_stat_t *vs_stat, - ir_opcode o1, modecode m1, ir_opcode o2, modecode m2, ext_grs_direction_t dir) -{ - unsigned hash; - ext_grs_vs_counter_t *count, *dummy_count; - - /* alloc stat entry on the stat objects obstack */ - dummy_count = (ext_grs_vs_counter_t *) - obstack_alloc(& vs_stat->obst, sizeof(*dummy_count)); - - dummy_count->o1 = o1; - dummy_count->o2 = o2; - dummy_count->m1 = m1; - dummy_count->m2 = m2; - dummy_count->dir = dir; - - hash = _ext_grs_VS_HASH(dummy_count); - count = lc_pset_find(vs_stat->stat, dummy_count, hash); - - /* if entry already present, add counter */ - if (count != NULL) { - count->occurence++; - obstack_free(& vs_stat->obst, dummy_count); - return; - } - - /* if entry not present, store dummy_count as a new one */ - dummy_count->counter = (double)0; - dummy_count->occurence = 1; - lc_pset_insert(vs_stat->stat, dummy_count, hash); -} - -void static INLINE _add_n_occurence(ext_grs_vs_stat_t *vs_stat, - ir_opcode o1, modecode m1, ir_opcode o2, modecode m2, ext_grs_direction_t dir, int add) -{ - unsigned hash; - ext_grs_vs_counter_t *count, *dummy_count; - - /* alloc stat entry on the stat objects obstack */ - dummy_count = (ext_grs_vs_counter_t *) - obstack_alloc(& vs_stat->obst, sizeof(*count)); - - dummy_count->o1 = o1; - dummy_count->o2 = o2; - dummy_count->m1 = m1; - dummy_count->m2 = m2; - dummy_count->dir = dir; - - hash = _ext_grs_VS_HASH(dummy_count); - count = lc_pset_find(vs_stat->stat, dummy_count, hash); - - /* if entry already present, add counter */ - if (count != NULL) { - count->occurence += add; - obstack_free(& vs_stat->obst, dummy_count); - return; - } - - /* if entry not present, store dummy_count as a new one */ - dummy_count->counter = (double)0; - dummy_count->occurence = 1; - lc_pset_insert(vs_stat->stat, dummy_count, hash); -} - - -int static _get_n_occurence(ext_grs_vs_stat_t *vs_stat, - ir_opcode o1, modecode m1, ir_opcode o2, modecode m2, ext_grs_direction_t dir) -{ - unsigned hash; - - ext_grs_vs_counter_t *count, dummy_count; - dummy_count.o1 = o1; - dummy_count.o2 = o2; - dummy_count.m1 = m1; - dummy_count.m2 = m2; - dummy_count.dir = dir; - - hash = _ext_grs_VS_HASH(&dummy_count); - - count = lc_pset_find(vs_stat->stat, &dummy_count, hash); - - /* if entry already present return counter */ - if (count != NULL) { - return count->occurence; - } - - /* otherwise return 0 */ - return 0; -} - - -#endif /*_ANA_VS_T_H_*/ diff --git a/ir/be/grgen/analyze.c b/ir/be/grgen/analyze.c deleted file mode 100644 index cc18ac6a0..000000000 --- a/ir/be/grgen/analyze.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Project: libFIRM/extension module/graph rewriting system - * File name: ext/grs/analyze.c - * Purpose: provides interfaces for incremental and from scratch - * analysis collection information for a search planer - * Author: Veit Batz - * Created: 22. June 2005 - * CVS-ID: $Id$ - * Copyright: (c) 2005 Universität Karlsruhe - * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. - */ - - - /** - * @file ext/grs/analyze.c - * @brief provides an interface for incremental and from scratch - * analyses collecting information for a search planer - * */ - -#include "base_t.h" -#include "analyze_t.h" - - -/** perform a from scratch analysis of a given ir graph */ -void ext_grs_analyze(ext_grs_analyzer_t *alz, ir_graph *irg) -{ - ext_grs_irg_private_t *pr_g = _ext_grs_get_irg_private(irg); - if (pr_g->matching_enabled) alz->analyze(alz, irg); -} - -void ext_grs_free_ana_result(ext_grs_analyzer_t *alz, ir_graph *irg) -{ - alz->free_ana_result(alz, irg); -} - - -/** enable incremantal analysis for the given ir graph */ -void ext_grs_enable_incr_ana(ext_grs_analyzer_t *alz, ir_graph *irg) -{ - ext_grs_irg_private_t *pr_g = _ext_grs_get_irg_private(irg); - if (pr_g->matching_enabled) alz->enable_incr_ana(alz, irg); -} - -/** disable incremantal analysis for the given ir graph */ -void ext_grs_disable_incr_ana(ext_grs_analyzer_t *alz, ir_graph *irg) -{ - alz->disable_incr_ana(alz, irg); -} - -/** dump the current analysis result for a given ir graph */ -void ext_grs_dump_ana_result(ext_grs_analyzer_t *alz, ir_graph *irg) -{ - alz->dump_ana_result(alz, irg); -} - - - - - -/** from scratch analysis of all ir graphs building a global data set */ -void ext_grs_analyze_global(ext_grs_analyzer_t *alz) -{ - alz->analyze_global(alz); -} - -/** enable global incremantal analysis building a global data set */ -void ext_grs_enable_global_incr_ana(ext_grs_analyzer_t *alz) -{ - alz->enable_global_incr_ana(alz); -} - -/** disable global incremantal analysis building a global data set */ -void ext_grs_disable_global_incr_ana(ext_grs_analyzer_t *alz) -{ - alz->disable_global_incr_ana(alz); -} - -/** dump the current global analysis result */ -void ext_grs_dump_global_ana_result(ext_grs_analyzer_t *alz) -{ - alz->dump_global_ana_result(alz); -} diff --git a/ir/be/grgen/analyze.h b/ir/be/grgen/analyze.h deleted file mode 100644 index 4e88bf97c..000000000 --- a/ir/be/grgen/analyze.h +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef _EXT_GRS_ANALYZE_H_ -#define _EXT_GRS_ANALYZE_H_ - -#include "common.h" - -typedef struct _ext_grs_analyzer_t ext_grs_analyzer_t; - - - -/** initialize an analyzer */ -void ext_grs_init_analyzer(ext_grs_analyzer_t *alz); - -/** perform a from scratch analysis of a given ir graph */ -void ext_grs_analyze(ext_grs_analyzer_t *alz, ir_graph *irg); - -/** free the result of the last analysis done on the given - * ir graph by the given analyzer */ -void ext_grs_free_ana_result(ext_grs_analyzer_t *alz, ir_graph *irg); - - - -/** enable incremental analysis for the given ir graph */ -void ext_grs_enable_incr_ana(ext_grs_analyzer_t *alz, ir_graph *irg); - -/** disable incremental analysis for the given ir graph */ -void ext_grs_disable_incr_ana(ext_grs_analyzer_t *alz, ir_graph *irg); - -/** dump the current analysis result for a given ir graph */ -void ext_grs_dump_ana_result(ext_grs_analyzer_t *alz, ir_graph *irg); - - - - -/** from scratch analysis of all ir graphs building a global data set */ -void ext_grs_analyze_global(ext_grs_analyzer_t *alz); - -/** enable global incremental analysis building a global data set */ -void ext_grs_enable_global_incr_ana(ext_grs_analyzer_t *alz); - -/** disable global incremental analysis building a global data set */ -void ext_grs_disable_global_incr_ana(ext_grs_analyzer_t *alz); - -/** dump the current global analysis result */ -void ext_grs_dump_global_ana_result(ext_grs_analyzer_t *alz); - - - - -#endif /*_EXT_GRS_ANALYZE_H_*/ diff --git a/ir/be/grgen/analyze_t.h b/ir/be/grgen/analyze_t.h deleted file mode 100644 index 8f4276d6e..000000000 --- a/ir/be/grgen/analyze_t.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Project: libFIRM/extension module/graph rewriting system - * File name: ext/grs/analyze.h - * Purpose: provides an interface for incremental and from scratch - * analysis for the collection of information needed by - * apropriate search planers - * Author: Veit Batz - * Created: 22. June 2005 - * CVS-ID: $Id$ - * Copyright: (c) 2005 Universität Karlsruhe - * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. - */ - - -/** - * @file ext/grs/analyze.h - * @brief provides an interface for incremental and from scratch - * analysis for the collection of information needed by - * apropriate search planers - * */ - -#ifndef _EXT_GRS_ANALYZE_T_H_ -#define _EXT_GRS_ANALYZE_T_H_ - - -#include "common_t.h" -#include "analyze.h" - - - - -/** interface of an ir graph analyzer */ -struct _ext_grs_analyzer_t -{ - /** a tag identifying an analyzer, to be checked by search planers */ - const char *tag; - - /** perform a from scratch analysis of a given ir graph */ - void (*analyze) (struct _ext_grs_analyzer_t *, ir_graph *); - /** free the result of the last analysis done on the given - * ir graph by this analyzer */ - void (*free_ana_result) (ext_grs_analyzer_t *, ir_graph *); - /** enable incremantal analysis for the given ir graph */ - void (*enable_incr_ana) (struct _ext_grs_analyzer_t *, ir_graph *); - /** disable incremantal analysis for the given ir graph */ - void (*disable_incr_ana) (struct _ext_grs_analyzer_t *, ir_graph *); - /** dump the current analysis result */ - void (*dump_ana_result) (struct _ext_grs_analyzer_t *, ir_graph *); - - /** from scratch analysis of all ir graphs building a global data set */ - void (*analyze_global) (struct _ext_grs_analyzer_t *); - /** enable global incremantal analysis building a global data set */ - void (*enable_global_incr_ana) (struct _ext_grs_analyzer_t *); - /** disable global incremantal analysis building a global data set */ - void (*disable_global_incr_ana) (struct _ext_grs_analyzer_t *); - /** dump the current global analysis result */ - void (*dump_global_ana_result) (struct _ext_grs_analyzer_t *); - - /** this analyzers private data storage area */ - void *data; -}; - - - - - -#endif /*_EXT_GRS_ANALYZE_T_H_*/ diff --git a/ir/be/grgen/auxilary.c b/ir/be/grgen/auxilary.c deleted file mode 100644 index 65de085a7..000000000 --- a/ir/be/grgen/auxilary.c +++ /dev/null @@ -1,15 +0,0 @@ -#include "auxilary_t.h" - - - -double _ext_grs_ln2; -double _ext_grs_log_table[_ext_grs_MAX_LOG]; - -void _ext_grs_log_table_init(void) -{ - int i; - _ext_grs_ln2 = log(2.0); - for (i=1; i < _ext_grs_MAX_LOG; i++) { - _ext_grs_log_table[i] = log((double)i) / _ext_grs_ln2; - } -} diff --git a/ir/be/grgen/auxilary_t.h b/ir/be/grgen/auxilary_t.h deleted file mode 100644 index 95f6a5439..000000000 --- a/ir/be/grgen/auxilary_t.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef _EXT_GRS_AUXILARY_T_H_ -#define _EXT_GRS_AUXILARY_T_H_ - - -#include -#include "common_t.h" - - - -#ifndef ARR_SIZE -#define ARR_SIZE(a) (sizeof(a)/sizeof(a[0])) -#endif - - -#define _ext_grs_MAX_LOG 10000 -extern double _ext_grs_log_table[_ext_grs_MAX_LOG]; -extern double _ext_grs_ln2; - - -void _ext_grs_log_table_init(void); - -static double INLINE _log2(int x) { - - if (x >= ARR_SIZE(_ext_grs_log_table)) - return log(x) / _ext_grs_ln2; - - return _ext_grs_log_table[x]; - -} - - -#endif /* _EXT_GRS_AUXILARY_T_H_ */ diff --git a/ir/be/grgen/base.c b/ir/be/grgen/base.c deleted file mode 100644 index 802aeca6b..000000000 --- a/ir/be/grgen/base.c +++ /dev/null @@ -1,300 +0,0 @@ -/* - * Project: libFIRM/extension module/GRS-matcher - * File name: ext/base.c - * Purpose: Basic stuff for the firm graph rewriting module - * Author: Veit Batz - * Created: 9. May 2005 - * CVS-ID: $Id$ - * Copyright: (c) 2005 Universität Karlsruhe - * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. - */ -#ifdef HAVE_CONFIG_H - #include "config.h" -#endif - -#include - -#include "irnode.h" - - -#include "common_t.h" -#include "auxilary_t.h" -#include "base_t.h" -#include "match_t.h" -#include "grshooks_t.h" -#include "action_t.h" - -/* maps opcodes to ops */ -ir_op **_ext_grs_op_map; -/* maps modecodes to modes */ -ir_mode **_ext_grs_mode_map; - -/* a 2-dim flexible array telling wether an opcode belongs - * to a sub op of the op given by a second opcode. usage: - * _ext_grs_op_is_a[o1][o2] != 0 IFF o1 inherits o2 */ -//int *_ext_grs_op_is_a = NULL; -unsigned char *_ext_grs_op_is_a = NULL; -/* the width of the */ -int _ext_grs_op_is_a_width; - -/* a flexible array of flexible arrays each containing all inheriting - * firm ops of that firm op, the opcode of wich is the index entered - * in the array of arrays - * USAGE: _ext_grs_all_sub_ops_of_op[opcode] - * this yields an flexible array of ptrs to firm ops inheriting - * form the given opcodes op */ -ir_op ***_ext_grs_all_sub_ops_of_op = NULL; -/* a flexible array of flexible arrays each containing all firm ops - * a given firm op inherits from, the given opcode is the index entered - * in the array of arrays - * USAGE: _ext_grs_all_super_ops_of_op[opcode] - * this yields an flexible array of ptrs to firm ops inheriting - * form the given opcodes op */ -ir_op ***_ext_grs_all_super_ops_of_op = NULL; - -/* dimension of dynamic allocated 2-dim arrays in private data - * area of firm graphs. These two arrays are the n_instances - * and the node_list. Note that these two arrays have the same - * dimension for all ir graphs. That means if the maximal - * opcode/modecode exceeds the respsective dimension the - * arrays of ALL ir graphs have to be reallcated (this is done - * by the hooks of new ops and modes) */ -int _ext_grs_irgpr_op_dim; -int _ext_grs_irgpr_mode_dim; - -/* offset of custom data in ir nodes */ -unsigned _ext_grs_private_ofs_n; -/* offset of custom data in ir graphs */ -unsigned _ext_grs_private_ofs_g; -/* offset of custom data in ir edges */ -unsigned _ext_grs_private_ofs_e; - -/* maps ir op names (e.g. "Add") to ir ops (i.e. *ir_op) */ -lc_pset *_ext_grs_op_name_table; -/* maps mode names (e.g. "M") to modes (i.e. *ir_mode) */ -lc_pset *_ext_grs_mode_name_table; -/* remembers the maximum opcode present */ -int _ext_grs_max_opcode = 0; -/* remembers the maximum modecode present */ -int _ext_grs_max_modecode = 0; - - -/* op compare function for the hash table mapping op - * names to the appropriate firm objects */ -static int _op_cmp_func(const void *e1, const void *e2) { - const char *s1 = get_op_name((ir_op *) e1); - const char *s2 = get_op_name((ir_op *) e2); - int ret = strcmp(s1, s2); - assert ((ret != 0 || get_op_code((ir_op *) e1) == get_op_code((ir_op *) e1)) && - "found different ir ops with an equal op name"); - return ret; -} - -/* mode compare function for the hash table mapping mode - * names to the appropriate firm objects */ -static int _mode_cmp_func(const void *e1, const void *e2) { - const char *s1 = get_mode_name((ir_mode *) e1); - const char *s2 = get_mode_name((ir_mode *) e2); - int ret = strcmp(s1, s2); - assert ((ret != 0 || - get_mode_modecode((ir_mode *) e1) == get_mode_modecode((ir_mode *) e1)) && - "found different ir modes with an equal mode name"); - return ret; -} - - -#define INITAL_OP_SPACE 500 - -/* activate the libfirm grs module */ -void ext_grs_activate(void) -{ - printf("activate libFIRM grs plugin... "); - /* private data of ir graphs, ir nodes and ir edges */ - _ext_grs_private_ofs_n = - firm_register_additional_node_data(sizeof(ext_grs_irn_private_t)); - _ext_grs_private_ofs_g = - register_additional_graph_data(sizeof(ext_grs_irg_private_t)); - _ext_grs_private_ofs_e = - edges_register_private_data(sizeof(ext_grs_iredges_private_t)); - - /* init fast computation of log_2 */ - _ext_grs_log_table_init(); - - /* init the hash tables mapping op and mode names to the respective firm objects */ - _ext_grs_op_name_table = lc_pset_new(_op_cmp_func, 256); - _ext_grs_mode_name_table = lc_pset_new(_mode_cmp_func, 64); - - /* init the flexible array representing the inheritance - * relation on firm ops */ - _ext_grs_op_is_a = malloc(INITAL_OP_SPACE * INITAL_OP_SPACE*sizeof(*_ext_grs_op_is_a)); - _ext_grs_op_is_a_width = INITAL_OP_SPACE; - memset(_ext_grs_op_is_a, 0, INITAL_OP_SPACE*INITAL_OP_SPACE*sizeof(*_ext_grs_op_is_a)); - - /* init the flexible array mapping op- and modecodes to ptrs */ - _ext_grs_op_map = NEW_ARR_F(ir_op*, INITAL_OP_SPACE); - memset(_ext_grs_op_map, 0, INITAL_OP_SPACE * sizeof(*_ext_grs_op_map)); - _ext_grs_mode_map = NEW_ARR_F(ir_mode*, 100); - memset(_ext_grs_mode_map, 0, 100 * sizeof(*_ext_grs_mode_map)); - - /* init the flexible array of flexible arrays keeping arrays of - * all sub ops of the op with the respective index as opcode */ - _ext_grs_all_sub_ops_of_op = NEW_ARR_F(ir_op**, INITAL_OP_SPACE); - memset (_ext_grs_all_sub_ops_of_op, 0, INITAL_OP_SPACE * sizeof(ir_op**)); - /* init the flexible array of flexible arrays keeping arrays of - * all sub ops of the op with the respective index as opcode */ - _ext_grs_all_super_ops_of_op = NEW_ARR_F(ir_op**, INITAL_OP_SPACE); - memset (_ext_grs_all_super_ops_of_op, 0, INITAL_OP_SPACE* sizeof(ir_op**)); - - /* dimension of the dynamically 2-dim arrays n_instances and - * node_list in the private date area of ir graphs. */ - _ext_grs_irgpr_op_dim = INITAL_OP_SPACE; - _ext_grs_irgpr_mode_dim = 25; - - /* register firm some firm hooks */ - _ext_grs_register_hooks(); - - /* init the matcher */ - _ext_grs_match_init(); - /* init the action part */ - _ext_grs_act_init(); - - printf("done\n"); -} - -void ext_grs_finalize() { - _ext_grs_act_finalize(); -} - -/** - * announce that firm op o1 inherits from firm op o2 - */ -void ext_grs_appoint_heir(ir_op *o1, ir_op *o2) { - - /* check params */ - if (get_op_code(o2) > _ext_grs_max_opcode || get_op_code(o1) > _ext_grs_max_opcode) { - printf("module ext/grs: ERROR in function ext_grs_appoint_heir()\n"); - printf(" Bad paramter: Unknown firm op.\n"); - return; - } - if (o1 == o2) { - printf("module ext/grs: ERROR in function ext_grs_appoint_heir()\n"); - printf(" The parameters given are equal.\n"); - return; - } - - /* the new entry into the inheritance table */ - _ext_grs_OP_IS_A(get_op_code(o1), get_op_code(o2)) = 1; -} - -void ext_grs_inheritance_mature(void) { - - int i, j, k; - - for (i = 0; i <= _ext_grs_max_opcode; i++) { - - if(_ext_grs_all_sub_ops_of_op[i]) - DEL_ARR_F(_ext_grs_all_sub_ops_of_op[i]); - _ext_grs_all_sub_ops_of_op[i] = NEW_ARR_F(ir_op *, 1); - /* every op is subop of itself */ - _ext_grs_all_sub_ops_of_op[i][0] = _ext_grs_op_map[i]; - - if(_ext_grs_all_super_ops_of_op[i]) - DEL_ARR_F(_ext_grs_all_super_ops_of_op[i]); - _ext_grs_all_super_ops_of_op[i] = NEW_ARR_F(ir_op *, 1); - /* every op is superop of itself */ - _ext_grs_all_super_ops_of_op[i][0] = _ext_grs_op_map[i]; - } - - /* compute the transitive closure of the modified table - * using the Floyd-Warshall-Algorithm */ - for (k = 0; k <= _ext_grs_max_opcode; k++) - for (i = 0; i <= _ext_grs_max_opcode; i++) - for (j = 0; j <= _ext_grs_max_opcode; j++) - _ext_grs_OP_IS_A(i,j) = _ext_grs_OP_IS_A(i,j) || - (_ext_grs_OP_IS_A(i, k) && _ext_grs_OP_IS_A(k, j)); - - for (i = 0; i <= _ext_grs_max_opcode; i++) - for (j = 0; j <= _ext_grs_max_opcode; j++) - if (_ext_grs_OP_IS_A(i,j)) { - ARR_APP1(ir_op *, _ext_grs_all_sub_ops_of_op[j], _ext_grs_op_map[i]); - ARR_APP1(ir_op *, _ext_grs_all_super_ops_of_op[i], _ext_grs_op_map[j]); - } - -} - -ir_op *(ext_grs_lookup_op)(char *name) { - return _ext_grs_lookup_op(name); -} - -ir_mode *(ext_grs_lookup_mode)(char *name) { - return _ext_grs_lookup_mode(name); -} - - - - - - -void ext_grs_enable_irg(ir_graph *irg) -{ - int i, j; - ext_grs_irg_private_t *pr_g; - - if (!irg) { - printf("module ext/grs: ERROR in function ext_grs_enable_matching()\n"); - printf(" Given ir graph was NULL.\n\n"); - return; - } - pr_g = _ext_grs_get_irg_private(irg); - - /* if matching is already enabled for this ir graph, do nothing */ - if (pr_g->matching_enabled) return; - - /* init the dyn array of the heads of all oplists */ - pr_g->node_list = - malloc(_ext_grs_irgpr_op_dim * _ext_grs_irgpr_mode_dim * - sizeof(*(pr_g->node_list))); - - if (! pr_g->node_list) { - printf("module ext/grs: Internal ERROR in function ext_grs_enable_matching()\n"); - printf(" Failed to allocate memory for internal data strucures.\n\n"); - printf(" Aborting!\n\n"); - abort(); - } - - for (i = 0; i < _ext_grs_irgpr_op_dim; i++) - for (j = 0; j < _ext_grs_irgpr_mode_dim; j++) - LC_INIT_LIST_HEAD( &_ext_grs_NODE_LIST(pr_g, i, j) ); - - /* init the dyn array of number of instances of each pair (op,mode) */ - pr_g->n_instances = - malloc(_ext_grs_irgpr_op_dim * _ext_grs_irgpr_mode_dim * - sizeof(*(pr_g->n_instances))); - memset(pr_g->n_instances, 0, - _ext_grs_irgpr_op_dim * _ext_grs_irgpr_mode_dim * - sizeof(*(pr_g->n_instances))); - - /* matching now enabled */ - pr_g->matching_enabled = 1; -} - -void ext_grs_disable_irg(ir_graph *irg) -{ - ext_grs_irg_private_t *pr_g; - - if (!irg) { - printf("module ext/grs: ERROR in function ext_grs_enable_matching()\n"); - printf(" Given ir graph was NULL.\n\n"); - return; - } - pr_g = _ext_grs_get_irg_private(irg); - - /* if matching is already disabled for this ir graph, do nothing */ - if (! pr_g->matching_enabled) return; - - free(pr_g->node_list); - free(pr_g->n_instances); - - /* matching now disabled */ - pr_g->matching_enabled = 0; -} diff --git a/ir/be/grgen/base.h b/ir/be/grgen/base.h deleted file mode 100644 index 7356794a3..000000000 --- a/ir/be/grgen/base.h +++ /dev/null @@ -1,56 +0,0 @@ -#ifndef _EXT_GRS_BASE_H_ -#define _EXT_GRS_BASE_H_ - - - -#include "common.h" - - -/** - * Activates the /ext/grs module. - * Must be called once \b before init_firm() - * if the ext/grs module of Firm should be used. - * - * @remark Call this function \b before init_firm() - */ -void ext_grs_activate(void); - -/** Finalize the /ext/grs module. */ -void ext_grs_finalize(void); - -/** - * get an ir_op by its name - */ -ir_op *ext_grs_lookup_op(char *op_name); - -/** - * get an ir_mode by its name - * */ -ir_mode *ext_grs_lookup_mode(char *name); - -/** - * announce that firm op o1 inherits from firm op o2 - */ -void ext_grs_appoint_heir(ir_op *o1, ir_op *o2); - -/** - * Setup internal inheritance related data strucutres. - * @note must be called after one or more invocations of - * ext_grs_appoint_heir() - */ -void ext_grs_inheritance_mature(void); - -/** - * Enables subgraph matching for a given ir graph.\ - */ - -void ext_grs_enable_irg(ir_graph *irg); -/** - * Disables subgraph matching for a given irg, several internal - * data structures will be freed (needed if there is not enough - * memory to keep the data for all present ir graphs simultaneously. - */ -void ext_grs_disable_irg(ir_graph *irg); - - -#endif /* _EXT_GRS_BASE_H_ */ diff --git a/ir/be/grgen/base_t.h b/ir/be/grgen/base_t.h deleted file mode 100644 index 407c71f53..000000000 --- a/ir/be/grgen/base_t.h +++ /dev/null @@ -1,167 +0,0 @@ -#ifndef _EXT_GRS_BASE_T_H_ -#define _EXT_GRS_BASE_T_H_ - - -#ifdef _WIN32 -#include -#else -#include -#endif -#include "common_t.h" -#include "base.h" -#include "action_t.h" - - - - - -#define OFFSET_OF(type, member) ((char*) &((((type)*)0)->(member)) - (char*)0) -#define CONTAINER_OF(ptr, type, member) \ - (((type) *) ((char *) (ptr) - OFFSET_OF((type), (member)))) - - - - - - -/* maps opcodes to ops */ -extern ir_op **_ext_grs_op_map; -/* maps modecodes to modes */ -extern ir_mode **_ext_grs_mode_map; - - -/** - * a 2-dim flexible array telling wether an opcode belongs - * to a sub op of the op given by a second opcode. usage: - * _ext_grs_op_is_a[o1][o2] != 0 IFF o1 inherits o2 */ -//extern int *_ext_grs_op_is_a; -extern unsigned char *_ext_grs_op_is_a; -/** the width of the */ -extern int _ext_grs_op_is_a_width; - -/** comfortable acces to the is_a matrix (o1 and o2 are opcodes) */ -#define _ext_grs_OP_IS_A(o1, o2) \ - _ext_grs_op_is_a[((int)o1)*(_ext_grs_op_is_a_width) + ((int)o2)] - -/** - * a flexible array of flexible arrays each containing all inheriting - * firm ops of that firm op, the opcode of wich is the index entered - * in the array of arrays - * USAGE: _ext_grs_all_sub_ops_of_op[opcode] - * this yields an flexible array of ptrs to firm ops inheriting - * form the given opcodes op */ -extern ir_op ***_ext_grs_all_sub_ops_of_op; -/* a flexible array of flexible arrays each containing all firm ops - * a given firm op inherits from, the given opcode is the index entered - * in the array of arrays - * USAGE: _ext_grs_all_super_ops_of_op[opcode] - * this yields an flexible array of ptrs to firm ops inheriting - * form the given opcodes op */ -extern ir_op ***_ext_grs_all_super_ops_of_op; - -/** maps ir op names (e.g. "Add") to ir ops (i.e. *ir_op) */ -extern lc_pset *_ext_grs_op_name_table; -/** maps mode names (e.g. "M") to modes (i.e. *ir_mode) */ -extern lc_pset *_ext_grs_mode_name_table; -/** remembers the maximum opcode present */ -extern int _ext_grs_max_opcode; -/** remembers the maximum modecode present */ -extern int _ext_grs_max_modecode; - - -/** offset of private data area in ir graphs */ -extern unsigned _ext_grs_private_ofs_g; -/** the private data area in ir graphs */ -typedef struct _ext_grs_irg_private_t { - /** a flag, tells wether matching has been disabled - * for this it graph by calling ext_grs_disable_matching() */ - int matching_enabled; - /** lists of firm nodes according to their opcode and modecode */ - lc_list_t *node_list; - /** number of instances according to the opcode and modecode */ - int *n_instances; -} ext_grs_irg_private_t; - -/* dimension of dynamic allocated 2-dim arrays in private data - * area of firm graphs. These two arrays are the n_instances - * and the node_list. Note that these two arrays have the same - * dimension for all ir graphs. That means if the maximal - * opcode/modecode exceeds the respsective dimension the - * arrays of ALL ir graphs have to be reallcated (this is done - * by the hooks of new ops and modes) */ -extern int _ext_grs_irgpr_op_dim; -extern int _ext_grs_irgpr_mode_dim; - -/* easy acces two these dynamic 2-dim arrays */ -#define _ext_grs_N_INSTANCES(pr_g, opc, mc) \ - ((pr_g)->n_instances[_ext_grs_irgpr_mode_dim * (opc) + (mc)]) -#define _ext_grs_NODE_LIST(pr_g, opc, mc) \ - ((pr_g)->node_list[_ext_grs_irgpr_mode_dim * (opc) + (mc)]) - -/** offset of private data in ir nodes */ -extern unsigned _ext_grs_private_ofs_n; -/** the private data area in ir nodes */ -typedef struct _ext_grs_irn_private_t { - /** list of firm nodes according to this nodes opcode and modecode */ - lc_list_t node_list; - /** some auxilary data, needed to determine wether a ir node has - * already been matched. If so, it points to a pattern node it is - * matched from, otherwise it is NULL */ - ext_grs_node_t *preimage; - /** flag, tells wether this nodes has been deleted on a rewrite step */ - int deleted; -} ext_grs_irn_private_t; - - -/** offset of private data in ir edges */ -extern unsigned _ext_grs_private_ofs_e; -/** the private data area in ir edges */ -typedef struct _ext_grs_iredges_private_t { - ext_grs_edge_t *preimage; - unsigned long visited; -} ext_grs_iredges_private_t; - - -static INLINE ext_grs_irn_private_t *_ext_grs_get_irn_private(ir_node *irn) { - return get_irn_data(irn, ext_grs_irn_private_t, _ext_grs_private_ofs_n); -} - -static INLINE ext_grs_irg_private_t *_ext_grs_get_irg_private(ir_graph *irg) { - return get_irg_data(irg, ext_grs_irg_private_t, _ext_grs_private_ofs_g); -} - -static INLINE ir_op *_ext_grs_lookup_op(char *op_name) { - - ir_op *op = alloca(sizeof(*op)); - - memset(op, 0, sizeof(*op)); - op->name = new_id_from_str(op_name); - - op = lc_pset_find( - _ext_grs_op_name_table, op, HASH_STR(op_name, strlen(op_name))); - return op; -} - -static INLINE ir_mode *_ext_grs_lookup_mode(char *name) { - - ir_mode *mode = alloca(sizeof(*mode)); - - memset(mode, 0, sizeof(*mode)); - mode->name = new_id_from_str(name); - - mode = lc_pset_find( - _ext_grs_mode_name_table, mode, HASH_STR(name, strlen(name))); - return mode; -} - -/** get an op by its name */ -#define ext_grs_lookup_op(name) _ext_grs_lookup_op((name)) -/** get a mode by its name */ -#define ext_grs_lookup_mode(name) _ext_grs_lookup_mode((name)) - - - - - - -#endif /* _EXT_GRS_BASE_T_H_ */ diff --git a/ir/be/grgen/common.h b/ir/be/grgen/common.h deleted file mode 100644 index 9cfd8e11b..000000000 --- a/ir/be/grgen/common.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef _EXT_GRS_COMMON_H_ -#define _EXT_GRS_COMMON_H_ - - - -#include -#include -#include -#include - -#define DUMP_WHILE_MATCHING 0 - -//#define EXT_GRS_DEBUG - -#endif /* _EXT_GRS_COMMON_H_ */ diff --git a/ir/be/grgen/common_t.h b/ir/be/grgen/common_t.h deleted file mode 100644 index 62ea5bd8d..000000000 --- a/ir/be/grgen/common_t.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef _EXT_GRS_COMMON_T_H_ -#define _EXT_GRS_COMMON_T_H_ - - - -#include -#include - -#ifdef HAVE_CONFIG_H - #include "config.h" -#endif - -#include "irgraph_t.h" -#include "irop_t.h" -#include "irmode_t.h" -#include "irnode_t.h" -#include "iredges_t.h" - - - - -typedef enum { - ext_grs_in = 0, - ext_grs_out = 1 -} ext_grs_direction_t; - - - - - - - -#endif /* _EXT_GRS_COMMON_T_H_ */ diff --git a/ir/be/grgen/grs.h b/ir/be/grgen/grs.h deleted file mode 100644 index 6f9ba6ec0..000000000 --- a/ir/be/grgen/grs.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef _EXT_GRS_GRS_H_ -#define _GRS_H_ - -#include "common.h" -#include "base.h" -#include "action.h" -#include "analyze.h" -#include "ana_vs.h" -#include "match.h" -#include "matchplan.h" -#include "plan_vs_dmst.h" - -#endif /*_EXT_GRS_GRS_H_*/ diff --git a/ir/be/grgen/grshooks.c b/ir/be/grgen/grshooks.c deleted file mode 100644 index c3a940145..000000000 --- a/ir/be/grgen/grshooks.c +++ /dev/null @@ -1,252 +0,0 @@ -/* - * Project: libFIRM/extension module/GRS-matcher - * File name: ext/base.c - * Purpose: hook register stuff - * Author: Veit Batz - * Modified by: Andreas Schoesser - * Created: 9. May 2005 - * CVS-ID: $Id$ - * Copyright: (c) 2005 Universität Karlsruhe - * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. - */ - -#include - -#include "irhooks.h" -#include "common_t.h" -#include "base_t.h" -#include "irtools.h" - -#include "grshooks_t.h" - - - -// #define MAX(a, b) (((a)>=(b)) ? (a) : (b)) - - - -/* array of all hooks used by the matcher */ -hook_entry_t _ext_grs_hooks[hook_last]; - - -/* auxilary function reallocating the 2-dim dynamic arrays - * n_instances and node_list in the private data area of - * ir graphs */ -static void realloc_all_irgpr(void) -{ - ir_graph *irg; - int n_irgs = get_irp_n_allirgs(); - int i,j,k,opc,mc; - ext_grs_irg_private_t *pr_g; - - int old_mode_dim = _ext_grs_irgpr_mode_dim; - int old_op_dim = _ext_grs_irgpr_op_dim; - - _ext_grs_irgpr_op_dim = MAX(_ext_grs_max_opcode + 50, old_op_dim); - _ext_grs_irgpr_mode_dim = MAX(_ext_grs_max_modecode + 50, old_mode_dim); - - - for (i=0 ; imatching_enabled) continue; - - /* alloc a new node list array */ - old_node_list = pr_g->node_list; - pr_g->node_list = malloc( - _ext_grs_irgpr_op_dim * _ext_grs_irgpr_mode_dim * sizeof(*(pr_g->node_list))); - /* init the list heads */ - for (j = 0; j < _ext_grs_irgpr_op_dim; j++) - for (k = 0; k < _ext_grs_irgpr_mode_dim; k++) - LC_INIT_LIST_HEAD(& _ext_grs_NODE_LIST(pr_g, j, k)); - - /* alloc a new array of instance counters */ - old_n_ins = pr_g->n_instances; - pr_g->n_instances = malloc( - _ext_grs_irgpr_op_dim * _ext_grs_irgpr_mode_dim * sizeof(*(pr_g->n_instances))); - memset(pr_g->n_instances, 0, - _ext_grs_irgpr_op_dim * _ext_grs_irgpr_mode_dim * sizeof(*(pr_g->n_instances))); - - /* copy everything from the old to the new one */ - for (opc = 0; opc < old_op_dim; opc++) - for (mc = 0; mc < old_mode_dim; mc++) { - _ext_grs_NODE_LIST(pr_g, opc, mc) = - old_node_list[old_mode_dim * opc + mc]; - _ext_grs_N_INSTANCES(pr_g, opc, mc) = - old_n_ins[old_mode_dim * opc + mc]; - } - free(old_node_list); - free(old_n_ins); - } -} - - - - -static void _hook_new_mode(void *context, const ir_mode *tmpl, ir_mode *mode) -{ - int old_len, new_len; - modecode new_modecode = get_mode_modecode(mode); - - /* add pair (name, *ir_mode) to hash table */ - const char *name = get_mode_name(mode); - int len = strlen(name); - lc_pset_insert(_ext_grs_mode_name_table, mode, HASH_STR(name, len)); - - if(new_modecode < 0) - return; - - - /* if new modecode is greater than any other modecode present */ - if (new_modecode > _ext_grs_max_modecode) { - /* ensure that the flexible array is great enough */ - old_len = ARR_LEN(_ext_grs_mode_map); - ARR_EXTO(*_ext_grs_mode_map, _ext_grs_mode_map, new_modecode + 1); - new_len = ARR_LEN(_ext_grs_mode_map); - if (new_len > old_len) - memset(& _ext_grs_mode_map[old_len], 0, - sizeof(*_ext_grs_mode_map) * (new_len - old_len) ); - /* remember the maximum opcode present */ - _ext_grs_max_modecode = new_modecode; - } - - /* map modecodes to modes */ - if (_ext_grs_mode_map[new_modecode]) - printf("WARNING in module ext/grs: multiple modecode encountered: %s, %d\n", - name, new_modecode); -/* else printf("new modecode: %s, %d\n", name, new_modecode);*/ - - _ext_grs_mode_map[new_modecode] = mode; - - /* if the new maximal opcode exceeds the dimension of the dynamic - * n_instance and the node_list array in they have to be allocated - * for ALL ir graphs present */ - if (_ext_grs_max_modecode >= _ext_grs_irgpr_mode_dim) - realloc_all_irgpr(); -} - - -static void _hook_new_ir_op(void *context, ir_op *op) -{ - ir_opcode new_opcode = get_op_code(op); - - /* add pair (name, *ir_op) to hash table */ - const char *name = get_op_name(op); - int len = strlen(name); - - - ir_op** op_array; - - lc_pset_insert(_ext_grs_op_name_table, op, HASH_STR(name, len)); - - /* if array is to small... */ - if (new_opcode >= _ext_grs_op_is_a_width) { - unsigned char *old_array = _ext_grs_op_is_a; - int old_width = _ext_grs_op_is_a_width; - int new_len; - int i,j; - - /* resize array >>>> BUGGY!!!! <<<<< */ - _ext_grs_op_is_a_width += 20; - new_len = _ext_grs_op_is_a_width * _ext_grs_op_is_a_width; //(new_opcode+20) * (new_opcode+20); - _ext_grs_op_is_a = malloc(new_len*sizeof(unsigned char)); - memset(_ext_grs_op_is_a, 0, new_len*sizeof(unsigned char)); - - /* because of being 2-dim we have to copy the content ourselves */ - for (i = 0; i < old_width/*_ext_grs_op_is_a_width*/; i++) - for (j = 0; j < old_width/*_ext_grs_op_is_a_width*/; j++) - _ext_grs_OP_IS_A(i,j) = - old_array[i * (old_width) + j]; - - /* delete the old array */ - free(old_array); - } - - /* assure that the arrays representing the op map and - * the sets of sub ops of a given op are great enough */ - /* if new opcode is greater than any other opcode present */ - if (new_opcode > _ext_grs_max_opcode) { - /* ensure that the op map array is graet enough */ - int old_len, new_len; - - old_len = ARR_LEN(_ext_grs_op_map); - ARR_EXTO(ir_op*, _ext_grs_op_map, new_opcode + 1); - new_len = ARR_LEN(_ext_grs_op_map); - if (new_len > old_len) - memset( & _ext_grs_op_map[old_len], 0, - sizeof(*_ext_grs_op_map) * (new_len - old_len) ); - - /* ensure that the sub op array is great enough */ - old_len = ARR_LEN(_ext_grs_all_sub_ops_of_op); - ARR_EXTO(ir_op**, _ext_grs_all_sub_ops_of_op, new_opcode + 1); - new_len = ARR_LEN(_ext_grs_all_sub_ops_of_op); - if (new_len > old_len) - memset( & _ext_grs_all_sub_ops_of_op[old_len], 0, - sizeof(*_ext_grs_all_sub_ops_of_op) * (new_len - old_len) ); - - /* ensure that the super op array is great enough */ - old_len = ARR_LEN(_ext_grs_all_super_ops_of_op); - ARR_EXTO(ir_op**, _ext_grs_all_super_ops_of_op, new_opcode + 1); - new_len = ARR_LEN(_ext_grs_all_super_ops_of_op); - if (new_len > old_len) - memset( & _ext_grs_all_super_ops_of_op[old_len], 0, - sizeof(*_ext_grs_all_super_ops_of_op) * (new_len - old_len) ); - - /* remember the maximum opcode present */ - _ext_grs_max_opcode = new_opcode; - } - - /* map opcodes to ops */ - if (_ext_grs_op_map[new_opcode] != NULL) - printf("WARNING in module ext/grs: multiple opcode of op %s encountered: %d\n", - name, new_opcode); -/* else printf("new opcode of op %s encountered: %d\n", name, new_opcode);*/ - - _ext_grs_op_map[new_opcode] = op; - - /* if the new maximal opcode exceeds the dimension of the dynamic - * n_instance and the node_list array in they have to be allocated - * for ALL ir graphs present */ - if (_ext_grs_max_opcode >= _ext_grs_irgpr_op_dim) - realloc_all_irgpr(); - - /* every op is a subop of itself */ - op_array = _ext_grs_all_sub_ops_of_op[new_opcode]; - if (op_array == NULL) /* this is because of multiple opcodes */ { - op_array = NEW_ARR_F(ir_op*, 1); - op_array[0] = op; - /* if ptr has changed... */ - _ext_grs_all_sub_ops_of_op[new_opcode] = op_array; - } - - /* every op is a superop of itself */ - op_array = _ext_grs_all_super_ops_of_op[new_opcode]; - if (op_array == NULL) /* this is because of multiple opcodes */ { - op_array = NEW_ARR_F(ir_op*, 1); - op_array[0] = op; - /* if ptr has changed... */ - _ext_grs_all_super_ops_of_op[new_opcode] = op_array; - } -} - - -void _ext_grs_register_hooks(void) { - /* simplify hook registrtation */ - #define HOOK(h, fkt) \ - _ext_grs_hooks[h].hook._##h = fkt; register_hook(h, &_ext_grs_hooks[h]) - - /* register op creation hook */ - HOOK(hook_new_ir_op, _hook_new_ir_op); - /* register mode creation hooks */ - HOOK(hook_new_mode, _hook_new_mode); - /* HOOK(hook_new_vector_mode, _hook_new_vector_mode);*/ - - #undef HOOK -} diff --git a/ir/be/grgen/grshooks_t.h b/ir/be/grgen/grshooks_t.h deleted file mode 100644 index c121d7ac6..000000000 --- a/ir/be/grgen/grshooks_t.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef _EXT_GRS_GRSHOOKS_T_H_ -#define _EXT_GRS_GRSHOOKS_T_H_ - - -void _ext_grs_register_hooks(void); - - -#endif /*_EXT_GRS_GRSHOOKS_T_H_*/ diff --git a/ir/be/grgen/match.c b/ir/be/grgen/match.c deleted file mode 100644 index c47c3fa7f..000000000 --- a/ir/be/grgen/match.c +++ /dev/null @@ -1,2140 +0,0 @@ -/* - * Project: libFIRM/extension module/graph rewriting system - * File name: ext/grs/match.c - * Purpose: provides functions for subgraph matching - * Author: Veit Batz - * Modified by: Andreas Schoesser - * Created: 7. Junly 2005 - * CVS-ID: $Id$ - * Copyright: (c) 2005 Universität Karlsruhe - * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. - */ - -#include -#include -#include "firm.h" -#ifdef _WIN32 -#include -#else -#include -#endif -#include "firm_types.h" -#include "array.h" -#include "ircons_t.h" -#include "irdump_t.h" -#include "irnode_t.h" -#include "iredges.h" -#include "base_t.h" -#include "match_t.h" - - -/* just a prototype */ -static void match_rec(void); - - -#undef MAX -#define MAX(a,b) ((a) >= (b) ? (a) : (b)) - - - -/* the match dumper stores ir nodes and edges of a given match in hash tables - * such that it can determine whether a ir node or edge has to be highlighted or not */ -typedef struct _ext_grs_matched_graph_elem_t { - /* tells whether a node or an edge is matched */ - ext_grs_elem_kind_t kind; - /* the matched graph elem (a node or an edge) */ - union {ir_node *irn; const ir_edge_t *ire;} elem; - /* tells whether this elem is matched for a given match id */ - int *matched; - /* an array of index lists, tells the indeces in the - * espective match (if matched at all) */ - lc_list_t *aiids; -} -ext_grs_matched_graph_elem_t; - -typedef struct { - int aiid; - lc_list_t list; -} ext_grs_matched_aiids_t; - - -/* elem of the list of found matches */ -struct ext_grs_match_list_head { - lc_list_t list; - ir_node **nodes; - ir_edge_t **edges; -}; - - - -/* Some global variables needed by the recursive matching algorithm. - * This helps saving parameters */ - -/* the current matcher prog */ -static ext_grs_match_op_t *prog = NULL; -/* the length of the current matcher prog */ -static int length = 0; -/* the current position in the match program */ -static int mpos = 0; -/* the maximum number of matches that shall be found (-1 means ALL) */ -static int max_n_matches; -/* tells whether the matching shall guaranty the parallel - * applicability of the given action for ALL found matches: - * zero means no, nonzero mens yes */ -static int match_compliant; -/* the current visit phase of the current irg. This info is necessary - * to mark all nodes and edges which have already been matched by a - * pattern node which does not guaranty parallel applicability in - * multiple matches */ -static unsigned long irg_visit_phase; -/* tells to which op index the backtracking has to brunch back, when a match - * is found */ -static int return_to_mop_index; - -/* flag, tells whether a invocation of match_rec is for the pattern or a NAC */ -static int match_negative_pattern = 0; -static int found_negative; - -/** the node map of the current graph homomorphism */ -static ir_node **node_map; -/** the edge map of the current graph homomorphism */ -static ir_edge_t **edge_map; - -static ir_node **positive_node_map; -static ir_edge_t **positive_edge_map; - -/* the current match object */ -static ext_grs_match_t *match = NULL; -/* private data of the current irg */ -static ext_grs_irg_private_t *pr_g = NULL; -/* the list of already found matches (to be copied into the - * match object at the end of the matching process) */ -static struct ext_grs_match_list_head match_list_head; - - -/* an obstack needed by the match dumper */ -static struct obstack dump_obst; -/* the hash table needed in the dump process mentioned above */ -static lc_pset *dump_node_map, *dump_edge_map; -/* the number of matches in the match which is currently dumped */ -static int dump_n_matches; - - - - - - - -int matched_graph_elem_cmp_func(const void *o1, const void *o2) { - ext_grs_matched_graph_elem_t *e1, *e2; - e1 = (ext_grs_matched_graph_elem_t *) o1; - e2 = (ext_grs_matched_graph_elem_t *) o2; - - assert (e1->kind == e2->kind); - - return (((unsigned) e1->elem.irn) - ((unsigned) e2->elem.irn)); -} - -int dump_matched_node_vcgattr(FILE *F, ir_node *node, ir_node *local) { - - ext_grs_matched_graph_elem_t *elem = alloca(sizeof(*elem)); - - /* check wether the given node is matched or not */ - elem->kind = ext_grs_k_node; - elem->elem.irn = node; - elem = lc_pset_find(dump_node_map, elem, HASH_PTR(node)); - /* if it is matched... */ - if (elem) { - fprintf (F, "color: magenta"); - return 1; - } - return 0; -} - -int dump_matched_edge_vcgattr(FILE *F, ir_node *node, int to) { - - ext_grs_matched_graph_elem_t *elem = alloca(sizeof(*elem)); - - const ir_edge_t *edge = get_irn_edge(get_irn_irg(node), node, to); - - /* check whether the given node is matched or not */ - elem->kind = ext_grs_k_edge; - elem->elem.ire = edge; - elem = lc_pset_find(dump_edge_map, elem, HASH_PTR(edge)); - /* if it is matched... */ - if (elem) { - fprintf (F, "color:magenta"); - return 1; - } - return 0; -} - -int dump_graph_match_nodes(FILE *F, ir_graph *irg) { - - int which; - for (which = 0; which < dump_n_matches; which++) { - fprintf(F, "node: {title: \"match%d\" label: \"Match %d\" ", which, which); - fprintf(F, "color: cyan}\n"); - } - - return 0; -} - -int dump_match_edges(FILE *F, ir_node *node) { - - ext_grs_matched_graph_elem_t *elem = alloca(sizeof(*elem)); - int which; - lc_list_t *pos; - - /* check wether the given node is matched or not */ - elem->kind = ext_grs_k_node; - elem->elem.irn = node; - elem = lc_pset_find(dump_node_map, elem, HASH_PTR(node)); - /* if it is matched... */ - if (elem) - for (which = 0; which < dump_n_matches; which++) - if (elem->matched[which]) - lc_list_for_each (pos, & elem->aiids[which]) { - /* get the index in the node map */ - ext_grs_matched_aiids_t *aiid_wrapper = - lc_list_entry(pos, ext_grs_matched_aiids_t, list); - /* gen an edge from match node to matched node */ - fprintf(F, "edge: {sourcename: \"match%d\" targetname: \"", which); - PRINT_NODEID(node); - fprintf(F, "\" "); - fprintf(F, "label: \"%d\" color:cyan}\n", aiid_wrapper->aiid); - } - - return 0; -} - -void ext_grs_dump_match(ext_grs_match_t *match, const char *suffix) { - - int i; - int which, aiid; - ext_grs_matched_graph_elem_t *elem; - ext_grs_matched_aiids_t *aiid_wrapper; - DUMP_NODE_EDGE_FUNC remember; - - obstack_init(& dump_obst); - - /* establish hash tables to determine, whether a nodes - * or edges have been matched or not */ - dump_node_map = - lc_pset_new(matched_graph_elem_cmp_func, match->n_nodes * match->n_matches); - dump_edge_map = - lc_pset_new(matched_graph_elem_cmp_func, match->n_edges * match->n_matches); - - for (which = 0; which < match->n_matches; which++) { - for (aiid = 0; aiid < match->n_nodes; aiid ++) { - - ir_node *irn = match->nodes[which][aiid]; - - elem = alloca(sizeof(*elem)); - elem->kind = ext_grs_k_node; - elem->elem.irn = irn; - elem = lc_pset_find(dump_node_map, elem, HASH_PTR(irn)); - - if (!elem) { - - elem = obstack_alloc(& dump_obst, sizeof(*elem)); - elem->matched = obstack_alloc( - & dump_obst, match->n_matches * sizeof(*elem->matched)); - elem->aiids = obstack_alloc( - & dump_obst, match->n_matches * sizeof(*elem->aiids)); - /* init to 'not matched' for each match */ - memset(elem->matched, 0, match->n_matches * sizeof(*elem->matched)); - /* init the list heads in the aiid array */ - for (i = 0; i < match->n_matches; i++) - LC_INIT_LIST_HEAD( &(elem->aiids[i]) ); - - elem->kind = ext_grs_k_node; - elem->elem.irn = irn; - lc_pset_insert(dump_node_map, elem, HASH_PTR(irn)); - } - elem->matched[which] = 1; - aiid_wrapper = obstack_alloc(& dump_obst, sizeof(*aiid_wrapper)); - aiid_wrapper->aiid = aiid; - lc_list_add(& aiid_wrapper->list, & (elem->aiids[which])); - } - for (aiid = 0; aiid < match->n_edges; aiid ++) { - - const ir_edge_t *ire = match->edges[which][aiid]; - - elem = alloca(sizeof(*elem)); - elem->kind = ext_grs_k_edge; - elem->elem.ire = ire; - elem = lc_pset_find(dump_edge_map, elem, HASH_PTR(ire)); - - if (!elem) { - elem = obstack_alloc(& dump_obst, sizeof(*elem)); - elem->matched = obstack_alloc( - & dump_obst, match->n_matches * sizeof(*elem->matched)); - elem->aiids = obstack_alloc( - & dump_obst, match->n_matches * sizeof(*elem->aiids)); - /* init to 'not matched' for each match */ - memset(elem->matched, 0, match->n_matches * sizeof(*elem->matched)); - /* init the list heads in the indices array */ - for (i = 0; i < match->n_matches; i++) - LC_INIT_LIST_HEAD( &(elem->aiids[i]) ); - - elem->kind = ext_grs_k_edge; - elem->elem.ire = ire; - lc_pset_insert(dump_edge_map, elem, HASH_PTR(ire)); - } - elem->matched[which] = 1; - aiid_wrapper = obstack_alloc(& dump_obst, sizeof(*aiid_wrapper)); - aiid_wrapper->aiid = aiid; - lc_list_add(& aiid_wrapper->list, & (elem->aiids[which])); - } - } - - /* set some hooks to produce the needed output in the generated vcg file */ - set_dump_node_vcgattr_hook(dump_matched_node_vcgattr); - set_dump_edge_vcgattr_hook(dump_matched_edge_vcgattr); - set_dump_ir_graph_hook(dump_graph_match_nodes); - - remember = get_dump_node_edge_hook(); - set_dump_node_edge_hook(dump_match_edges); - - /* dump the ir graph */ - dump_n_matches = match->n_matches; - dump_ir_graph(match->irg, suffix); - - /* reset the hooks */ - set_dump_node_vcgattr_hook(NULL); - set_dump_edge_vcgattr_hook(NULL); - set_dump_ir_graph_hook(NULL); - set_dump_node_edge_hook(remember); - - /* delete auxillary data structures */ - lc_pset_del(dump_node_map); - lc_pset_del(dump_edge_map); - obstack_free(& dump_obst, NULL); - obstack_finish(& dump_obst); -} - - - - - -/* initialize the matching mechanism */ -void _ext_grs_match_init(void) { - /* init the node map */ - node_map = NEW_ARR_F(ir_node*, 100); - memset(node_map, 0, sizeof(*node_map) * 100); - /* init the edge map */ - edge_map = (ir_edge_t **) NEW_ARR_F(ir_edge_t*, 100); - memset(edge_map, 0, sizeof(*edge_map) * 100); -} - - - -static INLINE void store_match(void) { - - int aiid; - ir_node *node; - ir_edge_t *edge; - struct ext_grs_match_list_head *match_list_elem; - ext_grs_iredges_private_t *pr_e; - - int n_all_pattern_nodes = match->action->max_node_aiid + 1; - int n_all_pattern_edges = match->action->max_edge_aiid + 1; - - /* allocate new list elem on the match internal obstack */ - match_list_elem = obstack_alloc(& match->obst, sizeof(*match_list_elem)); - memset(match_list_elem, 0, sizeof(match_list_elem)); - - /* add this new wrapper for the found match to the list */ - lc_list_add(& match_list_elem->list, & match_list_head.list); - - /* allocate space for the arrays representing the node and edge map */ - match_list_elem->nodes = - obstack_alloc(& match->obst, n_all_pattern_nodes * sizeof(ir_node *)); - match_list_elem->edges = - obstack_alloc(& match->obst, n_all_pattern_edges * sizeof(ir_edge_t *)); - - memset(match_list_elem->nodes, 0, n_all_pattern_nodes * sizeof(*match_list_elem->nodes)); - memset(match_list_elem->edges, 0, n_all_pattern_edges * sizeof(*match_list_elem->edges)); - - /* copy node map into match object */ - for (aiid = 0; aiid < n_all_pattern_nodes; aiid++) { - - ext_grs_node_t *pat_node = match->action->nodes[aiid]; - - if (pat_node->graph->kind != ext_grs_k_pattern) continue; - node = node_map[aiid]; - - assert(node && "a pattern node should have been matched"); - assert(pat_node->kind == ext_grs_k_node && - "a pseudo node should not have been matched"); - - match_list_elem->nodes[aiid] = node; - - if (match_compliant && match->action->node_critical[aiid]) - if (node) { - set_irn_visited(node, irg_visit_phase); - return_to_mop_index = - return_to_mop_index < match->action->nodes[aiid]->first_mop_index ? - return_to_mop_index : match->action->nodes[aiid]->first_mop_index; - } - } - - /* copy edge map into match object */ - for (aiid = 0; aiid < n_all_pattern_edges; aiid++) { - - ext_grs_edge_t *pat_edge = match->action->edges[aiid]; - - /* check wether the current edge is a not pseudo-edge */ - if (pat_edge->kind != ext_grs_k_edge) continue; - /* check wether the current edge belongs to the pattern graph - * (and not to e.g. a negative graph) */ - if (pat_edge->graph->kind != ext_grs_k_pattern) continue; - - edge = edge_map[aiid]; - - assert(edge && "a pattern edge should have been matched"); - assert(pat_edge->kind == ext_grs_k_edge && - "a pseudo edge should not have been matched"); - - match_list_elem->edges[aiid] = edge; - - if (match_compliant && match->action->edge_critical[aiid]) { - - pr_e = get_edge_private_data(edge, _ext_grs_private_ofs_e); - pr_e->visited = irg_visit_phase; - return_to_mop_index = - return_to_mop_index < match->action->edges[aiid]->first_mop_index ? - return_to_mop_index : match->action->edges[aiid]->first_mop_index; - } - } - - /* increment counter for the found matches */ - match->n_matches++; -} - -static void fill_match_result(ext_grs_match_plan_t *plan) { - - int match_counter = 0; - struct ext_grs_match_list_head *list_elem; - - ext_grs_match_t *restore_match; - ext_grs_match_t *neg_match; - - lc_list_t *pos; - - /* allocate space for the two arrays containing the node and edge maps */ - match->nodes = obstack_alloc(& match->obst, match->n_matches * sizeof(*match->nodes)); - match->edges = obstack_alloc(& match->obst, match->n_matches * sizeof(*match->edges)); - match->repl_nodes = obstack_alloc(& match->obst, match->n_matches * sizeof(*match->repl_nodes)); - - restore_match = match; - neg_match = alloca(sizeof(*neg_match)); - - /* init that match object */ - - - /* store the node and edge maps */ - match_counter = 0; - /* Walk through the list of matches */ - lc_list_for_each(pos, & match_list_head.list) { - int i; - lc_list_t *neg_pattern_list; - - list_elem = lc_list_entry(pos, struct ext_grs_match_list_head, list); - - /* for the current positive match ensure that no NAC occurs in the host graph */ - match = neg_match; - neg_pattern_list = &plan->action->negatives; - neg_pattern_list = neg_pattern_list->next; - /* act->negatives is the list head, call next node to find the first object in list */ - for(i = 1; i < plan -> num_progs; i++) - { - ext_grs_graph_t *pat = lc_list_entry(neg_pattern_list, ext_grs_graph_t, negative_list); - - memset(match, 0, sizeof(*neg_match)); - match->n_nodes = pat->n_nodes; - match->n_edges = pat->n_edges; - match->action = plan->action; - match->irg = restore_match->irg; - match->max_node_id = plan->action->max_node_aiid; - match->max_edge_id = plan->action->max_edge_aiid; - match->compliant = ext_grs_REGARDLESS; - - - return_to_mop_index = plan->length[i] - 1; - length = plan->length[i]; - prog = plan->progs[i]; - mpos = 0; - match_negative_pattern = 1; - found_negative = 0; - match_compliant = 0; - max_n_matches = 1; - positive_node_map = list_elem->nodes; - positive_edge_map = list_elem->edges; - - /* if program has length 0 ... do nothing */ - if(plan->length[i] <= 0) - break; - - match_rec(); - if(found_negative == 1) - break; - neg_pattern_list = neg_pattern_list->next; - } - match_negative_pattern = 0; - match = restore_match; - - if(found_negative == 1) - continue; - - - match->nodes[match_counter] = list_elem->nodes; /* node_map */ - match->edges[match_counter] = list_elem->edges; /* edge_map */ - - match_counter++; - } - /* Some positive matches could have been eliminated due to NAC's, - so adapt number of matches */ - match->n_matches = match_counter; - assert(match_counter <= match->n_matches && "wrong number of matches stored"); -} - - - -/* --------------- - What does this? - --------------- */ -static INLINE int match_preset_rec( - ext_grs_node_t *pattern_node, ext_grs_match_op_t *current_mop, ir_node *host_node) -{ - ext_grs_irn_private_t *pr_n; - ext_grs_node_t *alredy_matched_pattern_node; - - /* Get the private ir data of the host node */ - pr_n = get_irn_data(host_node, ext_grs_irn_private_t, _ext_grs_private_ofs_n); - - assert(pattern_node->mode == mode_ANY || get_irn_mode(host_node) == pattern_node->mode); - - assert(get_irn_opcode(host_node) == get_op_code(pattern_node->op) || - _ext_grs_OP_IS_A(get_irn_opcode(host_node), get_op_code(pattern_node->op)) - ); - - assert( - match->action->node_critical[pattern_node->aiid] == 0 || - match->action->node_critical[pattern_node->aiid] == 1 - ); - - assert(!pr_n->deleted && - "a node deleted by a rewrite step should not be a member of a node list"); - - /* if pattern is negative, compliant matching makes no sense */ - assert(! (match_compliant && match_negative_pattern)); - - if (match_compliant && match->action->node_critical[pattern_node->aiid]) { - assert(get_irn_visited(host_node) <= irg_visit_phase && - "visited in a future phase?"); - if (get_irn_visited(host_node) == irg_visit_phase) return; // TODO! Return a value here! - } - - /* check whether the current host graph node has not already - * been matched. But if it has, the according host nodes have - * to be allowed to be matched homomorphic with the current - * host node */ - alredy_matched_pattern_node = pr_n->preimage; - if (alredy_matched_pattern_node == NULL || - match->action->hom[pattern_node->aiid][alredy_matched_pattern_node->aiid]) - { - - /* if the host node has NOT already been matched before - * remember the pattern node as already matched to the host node */ - int matched_first = 0; - if (alredy_matched_pattern_node == NULL) { - matched_first = 1; - } - - pr_n->preimage = pattern_node; - - /* add the pair (pattern_node, host_node) to the node map */ - node_map[pattern_node->aiid] = host_node; - - - - /* check the condition if present */ - if (!current_mop->condition || current_mop->condition(node_map, edge_map)) { - /* call recursively to process the next matcher op */ - mpos++; - match_rec(); - mpos--; - } - - - /* remove the pair (pattern_node, host_node) from the node map */ - node_map[pattern_node->aiid] = NULL; - /* remember whether this matching is no more */ - - - /* if the pattern node was the first node to be matched with - * the host node, */ - if (matched_first) - pr_n->preimage = NULL; - - /* check whether matching is already complete */ - if (match->n_matches == max_n_matches) return 1; - assert(match->n_matches < max_n_matches || max_n_matches == -1); - /* check whether backjumping is needed - * (this only happens for compliant matching) */ - if (return_to_mop_index < mpos) return 1; - return_to_mop_index = length - 1; - } - - - /* matching not yet complete (or no backjumping needed), - * do more matching if possible */ - return 0; -} - - -static INLINE int match_node_rec( - ext_grs_node_t *pattern_node, ext_grs_match_op_t *current_mop, ir_opcode opc, modecode mc) -{ - lc_list_t *node_list_head = & _ext_grs_NODE_LIST(pr_g, opc, mc); - lc_list_t *pos; - ir_node *host_node; - - /* FOR all ir nodes in the node list of the current op - * and the pattern nodes mode DO... */ - /* In other words: Start a new match for each host-node with the current op. (Backtracking) */ - - lc_list_for_each (pos, node_list_head) { - - ext_grs_irn_private_t *pr_n; - ext_grs_node_t *alredy_matched_pattern_node; - -#if DUMP_WHILE_MATCHING - printf("Next node...\n"); -#endif - - pr_n = lc_list_entry(pos, ext_grs_irn_private_t, node_list); - host_node = get_irn_data_base(pr_n, _ext_grs_private_ofs_n); - - assert(pattern_node->mode == mode_ANY || get_irn_mode(host_node) == pattern_node->mode); - - assert(get_irn_opcode(host_node) == get_op_code(pattern_node->op) || - _ext_grs_OP_IS_A( - get_irn_opcode(host_node), - get_op_code(pattern_node->op) - ) - ); - - assert( - match->action->node_critical[pattern_node->aiid] == 0 || - match->action->node_critical[pattern_node->aiid] == 1); - - assert(!pr_n->deleted && - "a node deleted by a rewrite step should not be a member of a node list"); - - if (match_compliant && match->action->node_critical[pattern_node->aiid]) { - assert(get_irn_visited(host_node) <= irg_visit_phase && - "visited in a future phase?"); - if (get_irn_visited(host_node) == irg_visit_phase) continue; - } - - /* check whether the current host graph node has not already - * been matched. But if it has, the according host nodes have - * to be allowed to be matched homomorphic with the current - * host node */ - alredy_matched_pattern_node = pr_n->preimage; - if (alredy_matched_pattern_node == NULL || - match->action->hom[pattern_node->aiid][alredy_matched_pattern_node->aiid]) - { - - /* if the host node has NOT already been matched before - * remember the pattern node as already matched to the host node */ - int matched_first = 0; - if (alredy_matched_pattern_node == NULL) { - matched_first = 1; - } - - pr_n->preimage = pattern_node; - - /* add the pair (pattern_node, host_node) to the node map */ - node_map[pattern_node->aiid] = host_node; - - /* check the condition if present */ - if (!current_mop->condition || current_mop->condition(node_map, edge_map)) { - /* call recursively to process the next matcher op */ - mpos++; - match_rec(); - mpos--; - } - - - - /* remove the pair (pattern_node, host_node) from the node map */ - node_map[pattern_node->aiid] = NULL; - /* remember whether this matching is no more */ - - - /* if the pattern node was the first node to be matched with - * the host node, */ - if (matched_first) - pr_n->preimage = NULL; - - /* check whether matching is already complete */ - if (match->n_matches == max_n_matches) return 1; - assert(match->n_matches < max_n_matches || max_n_matches == -1); - /* check whether backjumping is needed - * (this only happens for compliant matching) */ - if (return_to_mop_index < mpos) return 1; - return_to_mop_index = length - 1; - } - } - /* matching not yet complete (or no backjumping needed), - * do more matching if possible */ - return 0; -} - - - -static void match_edge_rec( - ext_grs_node_t *pattern_node, - ext_grs_edge_t *pattern_edge, - ext_grs_node_t *other_pattern_node, - ir_node *host_node, ir_edge_t *host_edge, ir_node *other_host_node) -{ - - ext_grs_irn_private_t *pr_n; - ext_grs_iredges_private_t *pr_e = - get_edge_private_data(host_edge, _ext_grs_private_ofs_e); - - int matched_first = 0; - int both_nodes_matched = 0; - ext_grs_edge_t *already_matched_pattern_edge; - ext_grs_node_t *already_matched_other_pattern_node; - -#if DUMP_WHILE_MATCHING - printf("%d: Checking %s%d -> %s%d (%s->%s) (%s->%s)\n", mpos, get_op_name(get_irn_op(host_node)), host_node->node_nr, get_op_name(get_irn_op(other_host_node)), other_host_node->node_nr, get_op_name(pattern_node->op), get_op_name(other_pattern_node->op), pattern_node->name, other_pattern_node->name); -#endif - - assert( - match->action->edge_critical[pattern_edge->aiid] == 0 || - match->action->edge_critical[pattern_edge->aiid] == 1); - - /* if node has already been delted on a rewrite step and it still reached - * (maybe by a matching comming from the igrs Bad node) it is nevertheless - * NOT matched! */ - pr_n = _ext_grs_get_irn_private(other_host_node); - if (pr_n->deleted) { - assert(host_node == get_irg_bad(match->irg) && - "this node has been deleted by a rewrite step, the only chance" && - "to meet it should have been coming from the irgs bad node"); - return; - } - - if (match_compliant) { - if (match->action->edge_critical[pattern_edge->aiid]) { - assert(pr_e->visited <= irg_visit_phase && "visited in a future phase?"); - if (pr_e->visited == irg_visit_phase) return; - } - if (match->action->node_critical[other_pattern_node->aiid]) { - assert(get_irn_visited(other_host_node) <= irg_visit_phase && - "visited in a future phase?"); - if (get_irn_visited(other_host_node) == irg_visit_phase) return; - } - } - /* check whether the op of the host edge matches - * the op of the current pattern edge */ - if (get_irn_op(other_host_node) != other_pattern_node->op && - ! _ext_grs_OP_IS_A(get_irn_opcode(other_host_node), get_op_code(other_pattern_node->op))) - return; - - /* check whether the mode of the node at the other end of the host edge - * matches the mode of the pattern node at the other end of the pattern edge */ - if ( - /* if the other pattern node allows any mode, dont check the mode - * of the other host node at all */ - other_pattern_node->mode != mode_ANY && - /* otherwise check whether the modecode of the other - * pattern and the other host node are equal */ - other_pattern_node->mode != get_irn_mode(other_host_node) - ) return; - - /* check whether the current host edge has not already been matched */ - already_matched_pattern_edge = pr_e->preimage; - if ( already_matched_pattern_edge != NULL ) return; - - - /* if both pattern nodes have already been matched, check whether the other - * host nodes preimage equals the other pattern node */ - if (node_map[other_pattern_node->aiid] != NULL) { - /* in the case that both nodes are already matched check whether the - * current host edge connects these nodes */ - if (node_map[other_pattern_node->aiid] != other_host_node) return; - both_nodes_matched = 1; - } - else { - /* if the current host edge is NOT loop... */ - if (other_host_node != host_node) { - - /* check whether the host node at the other end of the current - * host edge has not already been matched OR, if it HAS, whether the already - * matched pattern node is permitted to be matched homomorphic with the - * pattern node at the other end of the current pattern edge */ - already_matched_other_pattern_node = pr_n->preimage; - if (already_matched_other_pattern_node != NULL) { - if (! match->action->hom - [other_pattern_node->aiid][already_matched_other_pattern_node->aiid] - ) return; - } - else { - /* if the other host node has not already been matched, this - * is matching is for the first time */ - pr_n->preimage = other_pattern_node; - matched_first = 1; - } - - /* add the pair (other_pattern_node, other_host_node) to the node map */ - node_map[other_pattern_node->aiid] = other_host_node; - } - } - - - /* add the pair (pattern_edge, host_edge) to the node map */ - edge_map[pattern_edge->aiid] = host_edge; - pr_e->preimage = pattern_edge; - - /* check the condition if present */ - if (!prog[mpos].condition || prog[mpos].condition(node_map, edge_map)) { - /* call recursively to process the next matcher op */ - mpos++; -#if DUMP_WHILE_MATCHING - printf("found it.\n"); -#endif - match_rec(); - mpos--; - } -#if DUMP_WHILE_MATCHING - else if(prog[mpos].condition) - printf("Condition failed\n"); -#endif - - /* if the current host edge is NOT loop... */ - if (! both_nodes_matched) - if (other_host_node != host_node) { - /* remove the pair (pattern_node, host_node) from the node map */ - node_map[other_pattern_node->aiid] = NULL; - } - edge_map[pattern_edge->aiid] = NULL; - pr_e->preimage = NULL; - - /* if the pattern node was the first node to be matched with - * the host node... */ - if (matched_first) - pr_n->preimage = NULL; -} - - - - - - - - - - -static void match_preset_edge_rec( - ext_grs_node_t *pattern_node, - ext_grs_edge_t *pattern_edge, - ext_grs_node_t *other_pattern_node, - - ir_node *host_node, ir_edge_t *host_edge, ir_node *other_host_node) -{ - - ext_grs_irn_private_t *pr_n; - ext_grs_iredges_private_t *pr_e = - get_edge_private_data(host_edge, _ext_grs_private_ofs_e); - - int matched_first = 0; - int both_nodes_matched = 0; - ext_grs_edge_t *already_matched_pattern_edge; - ext_grs_node_t *already_matched_other_pattern_node; - - assert( - match->action->edge_critical[pattern_edge->aiid] == 0 || - match->action->edge_critical[pattern_edge->aiid] == 1); - - /* if node has already been deleted on a rewrite step and it still reached - * (maybe by a matching coming from the irgs Bad node) it is nevertheless - * NOT matched! */ - - pr_n = _ext_grs_get_irn_private(other_host_node); - if (pr_n->deleted) { - assert(host_node == get_irg_bad(match->irg) && - "this node has been deleted by a rewrite step, the only chance" && - "to meet it should have been coming from the irgs bad node"); - return; - } - - if (match_compliant) { - if (match->action->edge_critical[pattern_edge->aiid]) { - assert(pr_e->visited <= irg_visit_phase && "visited in a future phase?"); - if (pr_e->visited == irg_visit_phase) return; - } - if (match->action->node_critical[other_pattern_node->aiid]) { - assert(get_irn_visited(other_host_node) <= irg_visit_phase && - "visited in a future phase?"); - if (get_irn_visited(other_host_node) == irg_visit_phase) return; - } - } - /* check wether the op of the host edge matches - * the op of the current pattern edge */ - if ( - get_irn_op(other_host_node) != other_pattern_node->op && - ! _ext_grs_OP_IS_A(get_irn_opcode(other_host_node), get_op_code(other_pattern_node->op)) - ) return; - - /* check wether the mode of the node at the other end of the host edge - * matches the mode of the pattern node at the other end of the pattern edge */ - if ( - /* if the other pattern node allows any mode, dont check the mode - * of the other host node at all */ - other_pattern_node->mode != mode_ANY && - /* otherwise check wether the modecode of the other - * pattern and the other host node are equal */ - other_pattern_node->mode != get_irn_mode(other_host_node) - ) return; - - /* check wether the current host edge has not already been matched */ - already_matched_pattern_edge = pr_e->preimage; - if ( already_matched_pattern_edge != NULL ) return; - - - /* if both pattern nodes have already been matched, check wether the other - * host nodes preimage equals the other pattern node */ - if (node_map[other_pattern_node->aiid] != NULL) { - /* in the case that both nodes are already matched check wether the - * current host edge connects these nodes */ - if (node_map[other_pattern_node->aiid] != other_host_node) return; - both_nodes_matched = 1; - } - else { - /* if the current host edge is NOT loop... */ - if (other_host_node != host_node) { - - /* check wether the host node at the other end of the current - * host edge has not alredy been matched OR, if it HAS, wether the already - * matched pattern node is permitted to be matched homomorphic with the - * pattern node at the other end of the current pattern edge */ - already_matched_other_pattern_node = pr_n->preimage; - if (already_matched_other_pattern_node != NULL) { - if (! match->action->hom - [other_pattern_node->aiid][already_matched_other_pattern_node->aiid] - ) return; - } - else { - /* if the other host node has not already been matched, this - * is matching is for the first time */ - pr_n->preimage = other_pattern_node; - matched_first = 1; - } - - /* add the pair (other_pattern_node, other_host_node) to the node map */ - node_map[other_pattern_node->aiid] = other_host_node; - } - } - - - /* add the pair (pattern_edge, host_edge) to the node map */ - edge_map[pattern_edge->aiid] = host_edge; - pr_e->preimage = pattern_edge; - - /* check the condition if present */ - if (!prog[mpos].condition || prog[mpos].condition(node_map, edge_map)) { - /* call recursively to process the next matcher op */ - mpos++; - match_rec(); - mpos--; - } - - /* if the current host edge is NOT loop... */ - if (! both_nodes_matched) - if (other_host_node != host_node) { - /* remove the pair (pattern_node, host_node) from the node map */ - node_map[other_pattern_node->aiid] = NULL; - } - edge_map[pattern_edge->aiid] = NULL; - pr_e->preimage = NULL; - - /* if the pattern node was the first node to be matched with - * the host node... */ - if (matched_first) - pr_n->preimage = NULL; -} - - - - - - - - - - - - - - - - -/* The matching loop, actually recursive but implemented as - * while loop by using a (only conceptually existing) stack. - * The stack is not implicitly materialized by appropriate - * fields present in the match op structs. - * */ -static void match_rec(void) { - - ext_grs_match_op_t *current_mop = NULL; - - ext_grs_edge_t *pattern_edge = NULL; - ext_grs_node_t *pattern_node = NULL; - ext_grs_node_t *other_pattern_node = NULL; - - ir_node *host_node = NULL; - ir_node *other_host_node = NULL; - ir_edge_t *host_edge = NULL; - - - assert(prog != NULL && "global ptr to matcher program is NULL"); - - /* if the hole match prog has been processed... */ - if (mpos >= length) { - /* ...a complete match has been found */ - /* so add this complete match to the match object */ - - if(match_negative_pattern == 0) - store_match(); - else - { - found_negative = 1; - match->n_matches = 1; - } - return; - } - - current_mop = & prog[mpos]; - /* execute the current match op */ - /* if the current match op is a node-op... */ - - if(current_mop->kind == ext_grs_k_mop_preset) - { - /* loop counters */ - ir_op *current_op; - ir_mode *current_mode; - ir_opcode opc; - modecode mc; - - int matching_complete_or_backjump; - - pattern_node = current_mop->node; - current_mode = pattern_node->mode; - - host_node = positive_node_map[pattern_node->related_node->aiid]; - current_op = host_node->op; - - /* Pattern_node == NAC node */ - assert(pattern_node->related_node != NULL && "preset node is not related!!"); - - opc = get_op_code(current_op); - mc = get_mode_modecode(current_mode); - - - /* if there is an op condition, check whether it holds */ - if (current_mop->op_condition && !current_mop->op_condition(current_op)) return; - - /* if there is an mode condition, check whether it holds */ - if (current_mop->mode_condition && !current_mop->mode_condition(current_mode)) return; - - matching_complete_or_backjump = - match_preset_rec(pattern_node, current_mop, host_node); - - if (matching_complete_or_backjump) return; - - return; - } - else if(current_mop->kind == ext_grs_k_mop_preset_edge) - { - ir_edge_t *host_edge; - ir_graph *irg = match->irg; - - pattern_edge = current_mop->edge; - pattern_node = current_mop->node; - - /* check whether the given pattern node is incident to the given pattern edge */ - assert(pattern_node == pattern_edge->func || pattern_node == pattern_edge->arg); - - host_edge = positive_edge_map[pattern_edge->related_edge->aiid]; - edge_map[pattern_edge->aiid] = host_edge; - if(current_mop->condition && !current_mop->condition(node_map, edge_map)) - { - mpos++; - match_rec(); - mpos--; - } - - } - else if (current_mop->kind == ext_grs_k_mop_node) { - - /* loop counters */ - int i,j; - int n_sub_ops; - /* inheritance related stuff */ - ir_op **sub_op_array; - pattern_node = current_mop->node; - - - sub_op_array = _ext_grs_all_sub_ops_of_op[ get_op_code(pattern_node->op) ]; - n_sub_ops = ARR_LEN(sub_op_array); - - /* FOR all sub ops of the pattern nodes op DO... */ - /* Find all nodes in the host graph that have the same op or a sub_op as the pattern node: */ - for (i = 0; i < n_sub_ops; i++) { - - ir_op *current_op = sub_op_array[i]; - ir_mode *current_mode = pattern_node->mode; - ir_opcode opc = get_op_code(current_op); - modecode mc = get_mode_modecode(current_mode); - - int matching_complete_or_backjump; - - /* if there is an op condition, check whether it holds */ - if (current_mop->op_condition && !current_mop->op_condition(current_op)) continue; - - /* if pattern nodes mode is ANY match for ALL modes */ - if (current_mode == mode_ANY) { - for (j = 0; j <= _ext_grs_max_modecode; j++) { - /* if no mode condition present, simply perform matching */ - if ( - current_mop->mode_condition && - !current_mop->mode_condition(_ext_grs_mode_map[j]) - ) continue; /* ??? */ - - /* Start backtracking for all nodes in the host graph that have the current mop */ - matching_complete_or_backjump = - match_node_rec(pattern_node, current_mop, opc, j); - - if (matching_complete_or_backjump) return; - } - } - else { - /* Even theres only ONE possible mode, the mode condition has to - * be checked all the same! E.g. the user may have registered a - * mode condition function which depends on a global state... */ - if ( - current_mop->mode_condition && - ! current_mop->mode_condition(current_mode) /* <<< NOT may be WRONG!!!! */ - ) continue; - - matching_complete_or_backjump = - match_node_rec(pattern_node, current_mop, opc, mc); - - if (matching_complete_or_backjump) return; - } - - } - return; - } - else if (current_mop->kind == ext_grs_k_mop_edge) { - - ir_graph *irg = match->irg; - - pattern_edge = current_mop->edge; - pattern_node = current_mop->node; - - /* check whether the given pattern node is incident to the given pattern edge */ - assert(pattern_node == pattern_edge->func || pattern_node == pattern_edge->arg); - - - - /* if the pattern edge is an outgoing (i.e. in-flow) edge... */ - if (pattern_node == pattern_edge->func) { - - int i = -1; /* -1 for the block edge */ - int upper_pos_bound; - - assert(node_map[pattern_node->aiid] != NULL && - "this node should have been matched already"); - - other_pattern_node = pattern_edge->arg; - host_node = node_map[pattern_node->aiid]; - - /* only Block nodes have NO block edge (i.e. an edge at pos = -1) */ - if (get_irn_op(host_node) == op_Block) i = 0; - - /* if the current pattern edge gives a fixed edge pos... */ - upper_pos_bound = get_irn_arity(host_node); - if (pattern_edge->pos != ext_grs_NO_EDGE_POS) { - /* ...then we do NOT have to iterate over the edges. - * Instead of that we can access and check the host edge directly: */ - i = pattern_edge->pos; - upper_pos_bound = i + 1; - } - - /* FOR all outgoing (i.e. in-flow) edges of the pattern - * nodes current image DO */ - for ( ; i < upper_pos_bound; i++) { - - other_host_node = get_irn_n(host_node, i); - host_edge = get_irn_edge(irg, host_node, i); - - /* if theres no such edge this is no valid match */ - if (! host_edge) continue; - - match_edge_rec( - pattern_node, pattern_edge, other_pattern_node, - host_node, host_edge, other_host_node); - - if (match->n_matches == max_n_matches) return; - assert(match->n_matches < max_n_matches || max_n_matches == -1); - - if (return_to_mop_index < mpos) return; - return_to_mop_index = length - 1; - - } - return; - } - - /* or an incoming (i.e. out-flow) edge otherwise */ - else { - - assert(pattern_node == pattern_edge->arg && - "pattern node not incident to pattern edge"); - - assert(node_map[pattern_node->aiid] != NULL && - "this node should have been matched already"); - - other_pattern_node = pattern_edge->func; - host_node = node_map[pattern_node->aiid]; - - foreach_out_edge(host_node, host_edge) { - int edg_src_pos; - - /* if the pattern edge determines a fixed pos as outgoing - * (i.e. in-flow) edge of its func node, check wether the - * pos of the current edge does equal this determined pos */ - if (pattern_edge->pos != ext_grs_NO_EDGE_POS && - (edg_src_pos = get_edge_src_pos(host_edge)) != pattern_edge->pos) - continue; - - other_host_node = get_edge_src_irn(host_edge); - - match_edge_rec( - pattern_node, pattern_edge, other_pattern_node, - host_node, host_edge, other_host_node); - - if (match->n_matches == max_n_matches) return; - assert(match->n_matches < max_n_matches || max_n_matches == -1); - - if (return_to_mop_index < mpos) return; - return_to_mop_index = length - 1; - - } - return; - - - } - - - } - else { - assert(current_mop->kind == ext_grs_k_mop_condition); - assert(current_mop->condition && "a conditon mop should have a condition function"); - - /* check the condition */ - if ( ! current_mop->condition(node_map, edge_map) ) return ; - - /* call recursively to process the next matcher op */ - mpos++; - match_rec(); - mpos--; - - return; - } - -} - -ext_grs_match_t *ext_grs_match( - ir_graph *irg, ext_grs_match_plan_t *plan, int n, int compliant) -{ - ext_grs_graph_t *pattern = plan->action->pattern; - - if (!irg) { - printf("module ext/grs: WARNING in function ext_grs_match()\n"); - printf(" Given ir graph was NULL.\n\n"); - return NULL; - } - - if (!plan) { - printf("module ext/grs: WARNING in function ext_grs_match()\n"); - printf(" Given match plan was NULL.\n\n"); - return NULL; - } - - /* get the private_data of the current irg */ - pr_g = _ext_grs_get_irg_private(irg); - - if (!pr_g->matching_enabled) { - printf("module ext/grs: ERROR in function ext_grs_match()\n"); - printf(" Matching is disabeled for the given irg.\n\n"); - return NULL; - } - - /* allocate a new match object */ - match = (ext_grs_match_t *) malloc(sizeof(*match)); - if (match == NULL) - return NULL; - memset(match, 0, sizeof(*match)); - /* init that match object */ - match->action = plan->action; - match->irg = irg; - match->n_nodes = pattern->n_nodes; - match->n_edges = pattern->n_edges; - match->max_node_id = plan->action->max_node_aiid; - match->max_edge_id = plan->action->max_edge_aiid; - match->compliant = compliant; - - /* initialize this match's internal obstack */ - obstack_init(& match->obst); - - /* if program has length 0 just return an empty match */ - if(plan->length[0] <= 0 || n == 0) { - match->n_matches = 0; - return match; - } - - /* ..................... WHAT DOES THE FOLLOWING???? ............................. */ - - - max_n_matches = n; - match_compliant = compliant; - - irg_visit_phase = get_irg_visited(irg) + 1; - set_irg_visited(irg, irg_visit_phase); - - /* if node map is not great enough extend it */ -#if 0 - old_size = ARR_LEN(node_map); - ARR_EXTO(ir_node*, node_map, match->action->max_node_aiid + 1); - /* if array resized reset it to '0' */ - if (old_size < ARR_LEN(node_map)) - memset(node_map, 0, sizeof(*node_map) * ARR_LEN(node_map)); - /* if edge map is not great enough extend it */ - old_size = ARR_LEN(edge_map); - ARR_EXTO(ir_edge_t*, edge_map, match->action->max_edge_aiid + 1); - /* if array resized reset it to '0' */ - if (old_size < ARR_LEN(edge_map)) - memset(edge_map, 0, sizeof(*edge_map) * ARR_LEN(edge_map)); -#endif - - node_map = (ir_node **) alloca((match->action->max_node_aiid + 1) * sizeof(*node_map)); - memset(node_map, 0, sizeof(*node_map) * (match->action->max_node_aiid + 1)); - edge_map = (ir_edge_t **) alloca((match->action->max_edge_aiid + 1) * sizeof(*edge_map)); - memset(edge_map, 0, sizeof(*edge_map) * (match->action->max_edge_aiid + 1)); - - - /* init the list of found matches */ - LC_INIT_LIST_HEAD(& match_list_head.list); - - /* .................................................................................... */ - - /* execute the search plan */ - return_to_mop_index = plan->length[0] - 1; - length = plan->length[0]; - prog = plan->progs[0]; - mpos = 0; - match_negative_pattern = 0; - match_rec(); - - /* transfer the found matches to the match result object */ - fill_match_result(plan); - - pr_g = NULL; - - return match; -} - -static int _get_op_n_args(ir_op *op) { - - switch (op->opar) - { - case oparity_zero: return 0; - case oparity_unary: return 1; - case oparity_binary: return 2; - case oparity_trinary: return 3; - default: return 0; - } - - return 0; -} - -int compute_new_arity(ir_node **node_map, ir_node **repl_node_map, ext_grs_node_t *pat_node, ext_grs_node_t *replace_node, int repl_node_greatest_edge_pos) -{ - int n_free_edges = 0; - int old_arity =0, new_arity = 0; - int k; - ir_node *host_node; - - - /* get the ir node matched by the the pattern node associated with the - * current replacement node */ - host_node = node_map[pat_node->aiid]; - assert(host_node && "replacement node associated with NULL pattern node"); - old_arity = get_irn_arity(host_node); - -/* if(host_node->node_nr == 675) - printf("found\n"); */ - - /* compute the number of free slots in the current - * in array (free means NULL or pointing to a Bad node) */ - for (k = 0; /*(get_irn_opcode(host_node) == iro_Block) ? 0 : -1;*/ k < old_arity; k++) { - ir_node *arg = get_irn_n(host_node, k); - if (!arg || get_irn_op(arg) == op_Bad) - n_free_edges++; - } - - - if (repl_node_greatest_edge_pos == ext_grs_NO_EDGE_POS) { - new_arity = old_arity + replace_node->n_append_edges - n_free_edges; // New arity may also be shorter! - //old_arity + MAX(0, (replace_node->n_append_edges - n_free_edges)); - } - else { - assert(repl_node_greatest_edge_pos >= -1 && "invalid edge pos encountered"); - new_arity = MAX(repl_node_greatest_edge_pos + 1, old_arity + replace_node->n_append_edges - n_free_edges); - //MAX(repl_node_greatest_edge_pos + 1, old_arity) + MAX(0, (replace_node->n_append_edges - n_free_edges)); - } - // new_arity = MAX(new_arity, _get_op_n_args(replace_node->op)); - return(new_arity); -} - - -void ext_grs_finish_match(ext_grs_match_t *match, int n, int *which) { - - ext_grs_action_t *action; - ir_node **node_map; - const ir_edge_t **edge_map; - - ir_node **repl_node_map; - ir_edge_t **repl_edge_map; - ir_node *host_node; - - int n_matches; - int i, j, k; - lc_list_t *pos; - - ir_node *bad; - ext_grs_irg_private_t *pr_g; - ir_graph *remeber_current_irg = current_ir_graph; - - /* array of positions where the next edge without given pos can be appended, the - * index is the replacement aiid of the replacement node the edge is incoming on */ - int *next_append_pos; - - int *repl_edge_positions; - int *repl_node_greatest_edge_pos; - - - if (!match) { - printf("module ext/grs: ERROR in function ext_grs_finish_match()\n"); - printf(" Given match object was NULL.\n"); - printf(" No rewrite has been performed.\n\n"); - return; - } - - - action = match->action; - pr_g = _ext_grs_get_irg_private(match->irg); - - if (!pr_g->matching_enabled && action->kind != ext_grs_k_test) { - printf("module ext/grs: ERROR in function ext_grs_finish_match()\n"); - printf(" Tried to finish an action which is not of kind test, while\n"); - printf(" matching has been disabled for the respective ir graph.\n"); - printf(" This means that some internal data needed in this is no more"); - printf(" there. So no transformation of the ir graph has been done.\n\n"); - - obstack_free(& match->obst, NULL); - free(match); - - return; - } - - bad = get_irg_bad(match->irg); - - //repl_node_map = alloca(sizeof(*repl_node_map) * (action->max_repl_node_aiid + 1)); Allocated on the obst now to be available after rewrite - repl_edge_map = alloca(sizeof(*repl_edge_map) * (action->max_repl_edge_aiid + 1)); - next_append_pos = alloca(sizeof(*next_append_pos) * (action->max_repl_node_aiid + 1)); - repl_edge_positions = alloca(sizeof(*repl_edge_positions) * (action->max_repl_edge_aiid + 1)); - repl_node_greatest_edge_pos = - alloca(sizeof(*repl_node_greatest_edge_pos) * (action->max_repl_node_aiid + 1)); - - /* if action is a test no replacement will be done */ - if (action->kind == ext_grs_k_test) n = 0; - - current_ir_graph = match->irg; - - if (n == ext_grs_ALL) { - n_matches = match->n_matches; - } - else if (n >= 0) { - if (n > match->n_matches) { - printf("module ext/grs: WARNING in function ext_grs_finish_match()\n"); - printf(" Given number of matches (%d) to be replaced exceeds the", n); - printf(" number of matches found (%d).\n\n", match->n_matches); - n_matches = match->n_matches; - } - else { - n_matches = n; - } - } - else { - printf("module ext/grs: ERROR in function ext_grs_finish_match()\n"); - printf(" Given number of matches to be replaced is invalid: %d.\n", n); - printf(" No rewrite has been performed.\n\n"); - - obstack_free(& match->obst, NULL); - free(match); - - return; - } - - /* parallel rewrites are forbidden for match objects, - * which are not prepared for such things */ - if ( !match->compliant && n_matches > 1 ) { - n_matches = 1; - printf("module ext/grs: WARNING in function ext_grs_finish_match()\n"); - printf(" Parallel rewriting was demanded but the given match object\n"); - printf(" is not compliant. So only ONE match is replaced.\n\n"); - } - - /* check for empty which array */ - if (n != ext_grs_ALL && n != 0 && !which) { - printf("module ext/grs: ERROR in function ext_grs_finish_match()\n"); - printf(" The set of match numbers to be replaced was NULL.\n"); - printf(" No rewrite has been performed.\n\n"); - - obstack_free(& match->obst, NULL); - free(match); - - return; - } - - - - /* perform replacement of several matches */ - //i = 0; - for(i = 0; i < n_matches; i++) - { - // while (i < n_matches) { - - repl_node_map = obstack_alloc(&(match->obst), sizeof(*repl_node_map) * (action->max_repl_node_aiid + 1)); //)alloca(sizeof(*repl_node_map) * (action->max_repl_node_aiid + 1)); - memset(repl_node_map, 0, sizeof(*repl_node_map) * (action->max_repl_node_aiid + 1)); - memset(repl_edge_map, 0, sizeof(*repl_edge_map) * (action->max_repl_edge_aiid + 1)); - - /* get the node and edge map of the current match */ - if (n == ext_grs_ALL) { - match->repl_nodes[i] = repl_node_map; - node_map = match->nodes[i]; - edge_map = match->edges[i]; - } - else { - if (which[i] > match->n_matches) { - printf("module ext/grs: ERROR in function ext_grs_finish_match()\n"); - printf(" A given match number exceeds the number of found matches.\n"); - printf(" No rewrite is performed for this number.\n\n"); - -// obstack_free(& match->obst, NULL); -// free(match); - - continue; - } - match->repl_nodes[which[i]] = repl_node_map; - node_map = match->nodes[which[i]]; - edge_map = match->edges[which[i]]; - } - - - - /* Before any graph transformations are done... - * ...the eval-in functions of the current action are evaluated for - * the current node and edge map */ - lc_list_for_each(pos, &action->listed_evals) { - /* get the current eval descriptor... */ - ext_grs_eval_descr_t *descr = - lc_list_entry(pos, ext_grs_eval_descr_t, eval_list); - /* get the current eval-in function... */ - if(descr->eval_in != NULL) // AS - { - ext_grs_eval_in_func_t in_func = descr->eval_in; - /* ...and call it */ - descr->data = in_func(node_map, edge_map); - } - - } - - - - - - /* First: remove all remove edges of the pattern */ - lc_list_for_each(pos, & action->pattern->edges) { - - ir_node *n, *in; - int edge_pos; - const ir_edge_t *remove_edge; - ext_grs_edge_t *pattern_edge = - lc_list_entry(pos, ext_grs_edge_t, edge_list); - - assert( - ( - pattern_edge->kind == ext_grs_k_edge || - pattern_edge->kind == ext_grs_k_pseudo_edge - ) && "wrong kind encountered in edge list" - ); - - /* pseudo edges can't be removed (because they are not mapped) */ - if (pattern_edge->kind != ext_grs_k_edge) continue; - /* check whether the pattern edge is to be kept */ - if (action->pattern_edge_kept[pattern_edge->aiid] >= 0) continue; - remove_edge = edge_map[pattern_edge->aiid]; - - n = get_edge_src_irn(remove_edge); - in = get_irn_n(n, 0); - edge_pos = get_edge_src_pos(remove_edge); - - if(n->node_nr == 675) - printf("found"); - - /* let the remove_edges src node point to a Bad node, for - * a complete removal is not permitted by the FIRM syntax */ - set_irn_n( - get_edge_src_irn(remove_edge), - get_edge_src_pos(remove_edge), - bad); - } - - - - - - /* Second: Go through all replacement node, insert the new ones and - * retype the kept ones if necessary. Furthermore establish a map - * which maps replacement node aiids to ir node pointers. */ - for (j = 0; j <= action->max_repl_node_aiid; j++) { - - ext_grs_node_t *replace_node = action->replacement_nodes[j]; - ir_node *block = NULL; - - ir_node **new_in; - int old_arity = 0; - int new_arity; - - /* private area of a host node */ - ext_grs_irn_private_t *pr_n; - - repl_node_greatest_edge_pos[j] = ext_grs_NO_EDGE_POS; - - /* check for gaps in the set of aiids */ - if (!replace_node) continue; - - assert (action->replacement_node_kept[j] >= -1 && "invalid entry found"); - - - /* for the current replacement node determine the positions of the - * outgoing (i.e. inflowing) edges to be newly inserted and the - * greatest pos among the outgoing (i.e. in-flowing) edges of each - * node */ - lc_list_for_each (pos, & replace_node->edges[ext_grs_in]) { - ext_grs_edge_t *in_edge = lc_list_entry(pos, ext_grs_edge_t, list[ext_grs_in]); - - if (in_edge->position_func) { - int h; - assert(in_edge->pos == ext_grs_NO_EDGE_POS && - "a replacement edge with pos function should not have a fixed position"); - assert(action->replacement_edge_kept[in_edge->aiid] == -1 && - "a replacement edge with pos function is supposed to be newly inserted"); - h = in_edge->position_func(in_edge, node_map, edge_map); - repl_edge_positions[in_edge->aiid] = h; - repl_node_greatest_edge_pos[j] = MAX(h, repl_node_greatest_edge_pos[j]); - } - else if (in_edge->pos != ext_grs_NO_EDGE_POS) { - - /* Was soll diese Assertion? - Kept-Edges duerfen keine feste Position haben oder wie? - Besser: Pruefe die neue Position auf Gleichheit mit der alten! - - Warum trat diese Assertion frueher nicht auf? */ - - /*assert(action->replacement_edge_kept[in_edge->aiid] == -1 && - "a replacement edge with fixed position supposed to be newly inserted"); */ - repl_edge_positions[in_edge->aiid] = in_edge->pos; - repl_node_greatest_edge_pos[j] = - MAX(in_edge->pos, repl_node_greatest_edge_pos[j]); - } - } - - - /* if node is to be newly inserted */ - if (action->replacement_node_kept[j] == -1) { - - ir_opcode opc; - modecode mc; - - if (repl_node_greatest_edge_pos[j] == ext_grs_NO_EDGE_POS) { - new_arity = replace_node->n_append_edges; - } - else { - assert(repl_node_greatest_edge_pos[j] >= -1 && "invalid edge pos encountered"); - new_arity = repl_node_greatest_edge_pos[j] + 1 + replace_node->n_append_edges; - } - new_arity = MAX(new_arity, _get_op_n_args(replace_node->op)); - - /* non Block nodes initially get a Bad block, block nodes a NULL block */ - if (replace_node->op != op_Block) - block = bad; - else - block = NULL; - - if (new_arity > 0) { - new_in = alloca( sizeof(*new_in) * new_arity ); - for (k = 0; k < new_arity; k++) - new_in[k] = bad; - /* create a new node */ - host_node = new_ir_node( - NULL, match->irg, block, - replace_node->op, replace_node->mode, - new_arity, new_in); - } - else { - host_node = new_ir_node( - NULL, match->irg, block, - replace_node->op, replace_node->mode, - 0, NULL); - } - - /* insert the new node in the respective node list */ - opc = get_irn_opcode(host_node); - mc = get_irn_modecode(host_node); - - pr_n = _ext_grs_get_irn_private(host_node); - lc_list_add(&pr_n->node_list, & _ext_grs_NODE_LIST(pr_g, opc, mc)); - } - /* otherwise give the already existing node a new op or mode (if necessary) */ - else { - - /* the pattern node associated with the kept replace node */ - ext_grs_node_t *pat_node = action->nodes[action->replacement_node_kept[j]]; - /* tells whether a preserved node is changed somehow (op or mode) */ - int op_or_mode_changed = 0; - int old_arity, new_arity; - ir_node *old_node = NULL; - - host_node = node_map[pat_node->aiid]; - old_arity = get_irn_arity(host_node); - new_arity = compute_new_arity(node_map, repl_node_map, pat_node, replace_node, repl_node_greatest_edge_pos[j]); - -#if 0 - int n_free_edges = 0; - - - /* get the ir node matched by the the pattern node associated with the - * current replacement node */ - host_node = node_map[pat_node->aiid]; - assert(host_node && "replacement node associated with NULL pattern node"); - old_arity = get_irn_arity(host_node); - - /* compute the number of free slots in the current - * in array (free means NULL or pointing to a Bad node) */ - for (k = -1; k < old_arity; k++) { - ir_node *arg = get_irn_n(host_node, k); - if (!arg || get_irn_op(arg) == op_Bad) - n_free_edges++; - } - - - - if (repl_node_greatest_edge_pos[j] == ext_grs_NO_EDGE_POS) { - new_arity = - old_arity + MAX(0, (replace_node->n_append_edges - n_free_edges)); - } - else { - assert(repl_node_greatest_edge_pos[j] >= -1 && "invalid edge pos encountered"); - new_arity = MAX(repl_node_greatest_edge_pos[j] + 1, old_arity) + - MAX(0, (replace_node->n_append_edges - n_free_edges)); - } - new_arity = MAX(new_arity, _get_op_n_args(replace_node->op)); -#endif - - - - /* change op if necessary */ - if ( pat_node->op != replace_node->op || pat_node->mode != replace_node->mode) { - - /* if op changes from Block to something else - * a bad block will be inserted */ - if (get_irn_op(host_node) == op_Block && replace_node->op != op_Block) { - assert(0 && "Not possible right now"); - set_irn_op(host_node, replace_node->op); - set_nodes_block(host_node, bad); - } - /* if op changes to Block from something else - * the Block edge will be deleted */ - else if (get_irn_op(host_node) != op_Block && replace_node->op == op_Block) { - assert(0 && "Not possible right now"); - assert(get_irn_op(host_node) != op_Bad && "nodes op should change"); - set_irn_n(host_node, -1, NULL); - set_irn_op(host_node, replace_node->op); - } - /* simply change the op otherwise */ - else { - - ir_node *exchange_node; - //new_arity = compute_new_arity(node_map, repl_node_map, pat_node, replace_node, repl_node_greatest_edge_pos[j]); - - /* if the edges to be inserted require a greater in-array, create one */ - //if (old_arity != new_arity) { - new_in = alloca( sizeof(*new_in) * new_arity ); - for (k = 0; k < new_arity; k++) { - if (k < old_arity) - new_in[k] = get_irn_n(host_node, k); - else - new_in[k] = bad; - } - //} - exchange_node = new_ir_node(NULL, current_ir_graph, get_nodes_block(host_node), replace_node->op, replace_node->mode/*get_irn_mode(host_node)*/, new_arity, new_in); - old_node = host_node; - exchange(host_node, exchange_node); - repl_node_map[j] = exchange_node; - host_node = exchange_node; - - //set_irn_op(host_node, replace_node->op); - } - /* remember op or mode was changed */ - op_or_mode_changed = 1; - } - else if(old_arity < new_arity) - { - /* if the edges to be inserted require a greater in-array, create one */ - // op or mode are not changed, we do not need to insert a new node and exchange it - // This is the case e.g. for Phi, Sync or Block nodes. - if (old_arity < new_arity) { - new_in = alloca( sizeof(*new_in) * new_arity ); - for (k = 0; k < new_arity; k++) { - if (k < old_arity) - new_in[k] = get_irn_n(host_node, k); - else - new_in[k] = bad; - } - /* note: a nodes block is preserved by set_irn_in() */ - set_irn_in(host_node, new_arity, new_in); - } - } -#if 0 - // This is done by inserting a new node and exchanging now. - /* or change mode if necessary */ - if ( pat_node->mode != replace_node->mode ) { - set_irn_mode(host_node, replace_node->mode); - /* remember node was changed */ - op_or_mode_changed = 1; - } -#endif - - /* if mode or op was changed this node must be - * moved to another node list */ - - /* Lists: each node contains in its private data the list head of the - list he resides in. */ - - if (op_or_mode_changed) { - - ir_opcode opc = get_irn_opcode(host_node); - modecode mc = get_irn_modecode(host_node); - - pr_n = _ext_grs_get_irn_private(host_node); - - if(old_node == NULL) - { - lc_list_move(&pr_n->node_list, & _ext_grs_NODE_LIST(pr_g, opc, mc)); - } - else - { - // exchange was used - ext_grs_irn_private_t *pr_n_old; - - pr_n_old = _ext_grs_get_irn_private(old_node); - lc_list_add(&pr_n->node_list, & _ext_grs_NODE_LIST(pr_g, opc, mc)); - lc_list_del(&pr_n_old->node_list/*, & _ext_grs_NODE_LIST(pr_g, opc, mc)*/); - } - - } - } - - /* store the pos where the first edge with unspecified pos can be inserted */ - for(k = (get_irn_opcode(host_node) == iro_Block) ? 0 : -1; k < get_irn_arity(host_node); k++) { - ir_node *arg = get_irn_n(host_node, k); - if (!arg || get_irn_op(arg) == op_Bad) - { - next_append_pos[j] = k; - break; // AS - } - } - - /* set up the map of replace nodes to host graph nodes */ - repl_node_map[replace_node->aiid] = host_node; - - assert( - ( - get_op_code(get_irn_op(host_node)) == get_op_code(replace_node->op) || - _ext_grs_OP_IS_A( - get_op_code(get_irn_op(host_node)), get_op_code(replace_node->op) - ) - ) - && "replace map should map nodes with compatible op"); - } - - - - - - - /* Third: insert all edges not associated with an pattern edge */ - for (j = 0; j <= action->max_repl_edge_aiid; /* AS n_replacement_edges;*/ j++) { - - ext_grs_edge_t *replace_edge = action->replacement_edges[j]; - ext_grs_node_t *rpl_src_node, *rpl_tgt_node; - - ir_node *host_src_node, *host_tgt_node; - -/* if(j == 12) - printf("found!"); */ - - /* there might be gaps in the array, if an potential aiid - * is not assigned to an edge */ - if (!replace_edge) continue; - - /* if edge not to be newly inserted, skip this edge */ - if (action->replacement_edge_kept[replace_edge->aiid] >= 0) continue; - - rpl_src_node = replace_edge->func; - rpl_tgt_node = replace_edge->arg; - host_src_node = repl_node_map[rpl_src_node->aiid]; - host_tgt_node = repl_node_map[rpl_tgt_node->aiid]; - - assert( - ( - get_op_code(get_irn_op(host_src_node)) == get_op_code(rpl_src_node->op) || - _ext_grs_OP_IS_A( - get_op_code(get_irn_op(host_src_node)), get_op_code(rpl_src_node->op) - ) - ) - && "replace map should map nodes with compatible op"); - - assert( - ( - get_op_code(get_irn_op(host_tgt_node)) == get_op_code(rpl_tgt_node->op) || - _ext_grs_OP_IS_A( - get_op_code(get_irn_op(host_tgt_node)), get_op_code(rpl_tgt_node->op) - ) - ) - && "replace map should map nodes with compatible op"); - - /* if the host src (i.e. func) node is a Bad node */ - if (get_irn_op(host_src_node) == op_Bad) { - printf("module ext/grs: ERROR in function ext_grs_finish_match()\n"); - printf(" malformed replacement graph: Bad node cannot have an incoming\n"); - printf(" edge, edge was not inserted!\n"); - continue; - } - - /* insert and edge with specified position */ - if (replace_edge->pos != ext_grs_NO_EDGE_POS) { - if (replace_edge->pos == -1 && get_irn_op(host_tgt_node) != op_Block) { - printf("module ext/grs: ERROR in function ext_grs_finish_match()\n"); - printf(" malformed replacement graph: incomming edge has pos -1, but\n"); - printf(" the argument is NOT a Block node! No edge inserted.\n"); - continue; - } - if (replace_edge->pos == -1 && get_irn_op(host_src_node) == op_Block) { - printf("module ext/grs: ERROR in function ext_grs_finish_match()\n"); - printf(" malformed replacement graph: incomming edge has pos -1, but!\n"); - printf(" the src node is a Block node! No edge inserted.\n"); - continue; - } - set_irn_n(host_src_node, replace_edge->pos, host_tgt_node); - } - /* if no position is specified the edge is inserted to - * free places of the in-array */ - else { - - ir_node *arg; - for (k = next_append_pos[rpl_src_node->aiid]; ; k++) { - arg = get_irn_n(host_src_node, k); - if (!arg || get_irn_op(arg) == op_Bad) break; - } - - assert(k < get_irn_arity(host_src_node) && "append pos exceeds in-array"); - set_irn_n(host_src_node, k, host_tgt_node); - next_append_pos[rpl_src_node->aiid] = - MAX(k, next_append_pos[rpl_src_node->aiid] + 1); - } - } - - - /* Fourth: remove all nodes to be removed and all incident edges */ - lc_list_for_each(pos, & action->pattern->nodes) { - - ext_grs_node_t *pat_node = - lc_list_entry(pos, ext_grs_node_t, node_list); - - /* private area of a host node */ - ext_grs_irn_private_t *pr_n; - - if (pat_node->kind == ext_grs_k_node) { - - const ir_edge_t *edge; - const ir_edge_t *ne; - ir_node *remove_host_node; - - /* if node is to be kept it is skiped */ - if (action->pattern_node_kept[pat_node->aiid] >= 0) continue; - assert(pat_node->kind == ext_grs_k_node && "no pseudo node expected"); - - /* get the host the pat node is maped to, then remove it */ - remove_host_node = node_map[pat_node->aiid]; - assert(remove_host_node && "a pattern node should have been matched"); - /* all out edges of that node have to be changed that they - * point to the graphs bad node */ - foreach_out_edge_safe(remove_host_node, edge, ne) { - set_irn_n(get_edge_src_irn(edge), get_edge_src_pos(edge), bad); - } - /* all in edges of the remove node have also altered that they point to bad */ - for (j = 0; j < get_irn_arity(remove_host_node); j++) { - set_irn_n(remove_host_node, j, bad); - } - /* remove the node from the node list */ - pr_n = _ext_grs_get_irn_private(remove_host_node); - if ( ! pr_n->deleted ) { - lc_list_del(&pr_n->node_list); - pr_n->deleted = 1; - } - } - } - - - /* After each graph transformations ... - * ...the eval-out functions of the current action are evaluated for - * the current node and edge map of the replacement graph biuld during - * the graph transforamtion */ - lc_list_for_each(pos, &action->listed_evals) { - /* get the current eval descriptor... */ - ext_grs_eval_descr_t *descr = - lc_list_entry(pos, ext_grs_eval_descr_t, eval_list); - /* get the current eval-in function... */ - if(descr->eval_out != NULL) // AS - { - ext_grs_eval_out_func_t in_func = descr->eval_out; - /* ...and call it */ - in_func(repl_node_map, repl_edge_map, node_map, descr->data); - } - } - - //i++; - - } - current_ir_graph = remeber_current_irg; -} - -/* AS: Added to keep the match node map etc after a match - When this information is not needed any more, ext_grs_free_match has to be called. */ - -void ext_grs_free_match(ext_grs_match_t *match) -{ - /* clear the match object */ - /* first: free the match objects obstack */ - obstack_free(&(match->obst), NULL); - /* second: free the match object itself */ - free(match); -} - - - -int ext_grs_get_n_matches(ext_grs_match_t *match) { - if (! match) { - printf("module ext/grs: ERROR in function ext_grs_get_n_matches()\n"); - printf(" the match id given was to large\n"); - assert(0); - return 0; - } - - return match->n_matches; -} - - -ir_graph *ext_grs_get_match_irg(ext_grs_match_t *match) { - if (! match) { - printf("module ext/grs: ERROR in function ext_grs_get_match_irg()\n"); - printf(" the match id given was to large\n"); - assert(0); - return NULL; - } - - return match->irg; -} - - -ir_node **ext_grs_get_match_node_map(ext_grs_match_t *match, int which) { - - if (which >= match->n_matches) { - printf("module ext/grs: ERROR in function ext_grs_get_match_node_map()\n"); - printf(" the match id given was to large\n"); - assert(0); - return NULL; - } - - return match->nodes[which]; -} - -ir_node **ext_grs_get_replace_node_map(ext_grs_match_t *match, int which) { - - if (which >= match->n_matches) { - printf("module ext/grs: ERROR in function ext_grs_get_match_node_map()\n"); - printf(" the match id given was to large\n"); - assert(0); - return NULL; - } - - return match->repl_nodes[which]; -} - - - -const ir_edge_t **ext_grs_get_match_edge_map(ext_grs_match_t *match, int which) { - - if (which >= match->n_matches) { - printf("module ext/grs: ERROR in function ext_grs_get_match_node_map()\n"); - printf(" the match id given was to large\n"); - assert(0); - return NULL; - } - - return match->edges[which]; -} - - -int ext_grs_get_match_max_node_aiid(ext_grs_match_t *match) -{ - return(match->max_node_id); -} - -int ext_grs_get_match_max_edge_aiid(ext_grs_match_t *match) -{ - return(match->max_edge_id); -} diff --git a/ir/be/grgen/match.h b/ir/be/grgen/match.h deleted file mode 100644 index 7e2440253..000000000 --- a/ir/be/grgen/match.h +++ /dev/null @@ -1,142 +0,0 @@ -#ifndef _EXT_GRS_MATCH_H_ -#define _EXT_GRS_MATCH_H_ - -/* - * Project: libFIRM/extension module/graph rewriting system - * File name: ext/grs/match.h - * Purpose: provides an interface for subgraph matching - * Author: Veit Batz - * Modified by: Andreas Schoesser - * Created: 6. August 2005 - * CVS-ID: $Id$ - * Copyright: (c) 2005 Universität Karlsruhe - * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. - */ - - -/** Do the matching \b compliant, i.e. the matching allows - * parallel independent rule application. */ -#define ext_grs_COMPLIANT 1 -/** Do the matching \b not compliant, i.e. the - * matching does \b not regard parallel independent rule application. */ -#define ext_grs_REGARDLESS 0 -/** Find \b all occurences of the pattern graph in a given host graph, - * or in case of compliant matching, as much as possible occurences, - * which can be replaced parallel independent. - * @note It is \b not guarantied that the maximal possible number - * of matches is found. */ -#define ext_grs_ALL -1 - - -#include "matchplan.h" - - - -/** graph matching result */ -typedef struct _ext_grs_match_t ext_grs_match_t; - -/** wraps initial bindings for pivoted graph matching */ -typedef struct _ext_grs_binding_t ext_grs_binding_t; - - - - - - - -/** find at most n matches - * - * @param irg the host graph to be matched in - * @param plan the matching plan parametrizing the search - * @param n the maximum number of matches (-1 means all, if compliant - * matching is activated not all, but as many as feasible - * \b compliant matches are found) - * @param compliant match compliant if nonzero, i.e. find only matches - * that can be rewritten concurrently - */ -ext_grs_match_t *ext_grs_match( - ir_graph *irg, ext_grs_match_plan_t *plan, int n, int compliant); - -/** find at most n matches - * - * @param irg the host graph to be matched in - * @param plan the matching plan parametrizing the search - * @param n the maximum number of matches (-1 means all, if compliant - * matching is activated not all, but as many as feasible - * \b compliant matches are found) - * @param compliant match compliant if non zero, i.e. find only matches - * that can be rewritten concurrently - * @param binding initial binding of pattern nodes/edges to host graph - * nodes/edges, in the binding struct the appropriate - * pattern and host graph nodes/edges have the same index - * - * @returns a matching result - */ -ext_grs_match_t *ext_grs_match_pivot(ir_graph *irg, - ext_grs_match_plan_t *plan, int n, int compliant, ext_grs_binding_t *binding); - -/** perform rewriting step - * - * @param match a matching result - * @param n The number of matches to be replaced, if n=0 no - * replacement is performed, if n=-1 \b all matches - * will be replaced. If n=-1 or n>1 the matching result - * has to be compliant. - * @param which An array containing the indices of the n matches to - * be replaced. If \b all matches shall be replaced this - * parameter will be ignored. - * @note The match object is freed afterwards. */ -void ext_grs_finish_match(ext_grs_match_t *match, int n, int *which); -void ext_grs_free_match(ext_grs_match_t *match); - -/** get the number of matches in the given matching result - * @param match a matching result - * @returns the number of matches - */ -int ext_grs_get_n_matches(ext_grs_match_t *match); - -/** get the ir graph of a given matching result - * @param match a matching result - * @returns the ir graph the matching result belongs to - */ -ir_graph *ext_grs_get_match_irg(ext_grs_match_t *match); - -/** get the node map of a match in a given matching result - * - * @param match a matching result - * @param which the number of the match in the matching result - * - * @returns the node map of the match - */ -ir_node **ext_grs_get_match_node_map(ext_grs_match_t *match, int which); - -/** get the node map of a match in a given matching result - * - * @param match a matching result - * @param which the id of the match in the matching result - * - * @returns the edge map of the match - */ -const ir_edge_t **ext_grs_get_match_edge_map(ext_grs_match_t *match, int which); - -ir_node **ext_grs_get_replace_node_map(ext_grs_match_t *match, int which); - -/** dump the given ir graph the matching result belongs to where all matches - * of the given matching result are represented by a virtual "Match" node and - * some edges pointing from the Match node to the regarding nodes. All nodes - * and edges which belong to am match are drawed in red color. - - * @param match a matching result - * @param - * - * @returns the number of matches - */ -void ext_grs_dump_match(ext_grs_match_t *match, const char *suffix); - -int ext_grs_get_match_max_node_aiid(ext_grs_match_t *match); - -int ext_grs_get_match_max_edge_aiid(ext_grs_match_t *match); - - - -#endif /*_EXT_GRS_MATCH_H_*/ diff --git a/ir/be/grgen/match_t.h b/ir/be/grgen/match_t.h deleted file mode 100644 index a73587f96..000000000 --- a/ir/be/grgen/match_t.h +++ /dev/null @@ -1,75 +0,0 @@ -#ifndef _EXT_GRS_MATCH_T_H_ -#define _EXT_GRS_MATCH_T_H_ - -/* - * Project: libFIRM/extension module/graph rewriting system - * File name: ext/grs/match_t.h - * Purpose: provides the libfirm internal version of the interface - * for subgraph matching - * Author: Veit Batz - * Created: 7. Junly 2005 - * CVS-ID: $Id$ - * Copyright: (c) 2005 Universität Karlsruhe - * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. - */ - -#include "common_t.h" -#include "matchplan_t.h" - -#include "match.h" - - -/** graph matching result */ -struct _ext_grs_match_t { - /** the action this match belongs to */ - ext_grs_action_t *action; - /** the host graph matched in */ - ir_graph *irg; - /** flag: match valid */ - int compliant; - /** the number of matches found */ - int n_matches; - /** the number of nodes in each match */ - int n_nodes; - /** the number of edges in each match */ - int n_edges; - /** maximum node id in this match */ - int max_node_id; - /** maximum edge id in this match */ - int max_edge_id; - /** array of arrays, each mapping node/edge ids to (ir_node*), - * the length is max_node_id + 1 */ - ir_node ***nodes; - /** array of arrays, each mapping edge ids to (ir_node*), - * the length is max_edge_id + 1 */ - const ir_edge_t ***edges; - /** array of arrays, each mapping replace_node/edge ids to (ir_node*) */ - ir_node ***repl_nodes; - /** internal obstack of the match object */ - struct obstack obst; -}; - -/** wraps initial bindings for pivoted graph matching */ -struct _ext_grs_binding_t { - /** number of bound host graph fragments */ - int size; - /** number of involved pattern nodes */ - int n_nodes; - /** number of involved pattern edges */ - int n_edges; - /** the bound pattern nodes */ - ext_grs_node_t *pat_nodes; - /** the bound pattern edges */ - ext_grs_edge_t *pat_edges; - /** the ir nodes bound to the pattern nodes given by their index (node map) */ - ir_node ***nodes; - /** the ir edges bound to the pattern edges given by their index (edge map) */ - ir_edge_t ***edges; -}; - - -void _ext_grs_match_init(void); - - - -#endif /*_EXT_GRS_MATCH_T_H_*/ diff --git a/ir/be/grgen/matchplan.c b/ir/be/grgen/matchplan.c deleted file mode 100644 index ac47ffe75..000000000 --- a/ir/be/grgen/matchplan.c +++ /dev/null @@ -1,72 +0,0 @@ - -/* - * Project: libFIRM/extension module/GRS-matcher - * File name: ext/grs/plan.h - * Purpose: provides an interface for search planers planing - * the matching process with respect to information - * provided by appropriate analyzers - * Author: Veit Batz - * Modified by: Andreas Schoesser - * Created: 16. August 2005 - * CVS-ID: $Id$ - * Copyright: (c) 2005 Universität Karlsruhe - * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. - */ - - - -#include "matchplan_t.h" - - -/**dump a search plans to stdout */ -void ext_grs_dump_match_plan(ext_grs_match_plan_t *plan) { - int i, j; - - printf("\nA plan for action %s: \n", plan->action->name); - - for(j = 0; j < plan->num_progs; j++) - { - if(j == 0) - printf("Positive plan:\n"); - else - printf("NAC plan %d:\n", j - 1); - - for (i = 0; i < plan->length[j]; i++) { - ext_grs_match_op_t *mop; - mop = & plan->progs[j][i]; - switch(mop->kind) - { - case ext_grs_k_mop_node: - printf(" node(%s)\n", mop->node->name); - break; - case ext_grs_k_mop_edge: - printf(" edge(%s, %s)\n", mop->node->name, mop->edge->name); - break; - case ext_grs_k_mop_condition: - printf(" condition\n"); - break; - case ext_grs_k_mop_preset: - printf(" preset_node(%s)\n", mop->node->name); - break; - case ext_grs_k_mop_preset_edge: - printf(" preset_edge(%s, %s)\n", mop->node->name, mop->edge->name); - break; - default: - printf(" invalid matcher op\n"); - break; - } - } - } -} - -/** initialize a planer */ -void ext_grs_init_planer(ext_grs_planer_t *planer, ext_grs_analyzer_t *alz) { - planer->init(planer, alz); -} - -/** compute a match plan */ -ext_grs_match_plan_t *ext_grs_compute_plan( - ext_grs_planer_t *planer, ir_graph *irg, ext_grs_action_t *act) -{ - return planer->compute_plan(planer, irg, act); -} diff --git a/ir/be/grgen/matchplan.h b/ir/be/grgen/matchplan.h deleted file mode 100644 index 1f70ad9d8..000000000 --- a/ir/be/grgen/matchplan.h +++ /dev/null @@ -1,69 +0,0 @@ -#ifndef _EXT_GRS_MATCHPLAN_H_ -#define _EXT_GRS_MATCHPLAN_H_ - -/* - * Project: libFIRM/extension module/GRS-matcher - * File name: ext/grs/plan.h - * Purpose: provides an interface for search planers planing - * the matching process with respect to information - * provided by appropriate analyzers - * Author: Veit Batz - * Modified by: Andreas Schoesser - * Created: 6. August 2005 - * CVS-ID: $Id$ - * Copyright: (c) 2005 Universität Karlsruhe - * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. - */ - - -#include "action.h" -#include "analyze.h" - - - -/** a plan the matching process will follow */ -typedef struct _ext_grs_match_plan_t ext_grs_match_plan_t; - -/** a planer for the creation of matching plans */ -typedef struct _ext_grs_planer_t ext_grs_planer_t; - -typedef struct { - int n_nodes; - ext_grs_node_t **pat_nodes; - ir_node **host_nodes; - int n_edges; - ext_grs_edge_t **pat_edges; - ir_edge_t **host_edges; -} ext_grs_graph_fragment_t; - - - - - - -/** initialize a planer */ -void ext_grs_init_planer(ext_grs_planer_t *planer, ext_grs_analyzer_t *alz); - -/** compute a match plan */ -ext_grs_match_plan_t *ext_grs_compute_plan( - ext_grs_planer_t *planer, ir_graph *irg, ext_grs_action_t *act); - -/** compute a match plan according to analysis data of all ir graphs */ -ext_grs_match_plan_t *ext_grs_compute_plan_global( - ext_grs_planer_t *planer, ext_grs_action_t *act); - -/**dump a search plans to stdout */ -void ext_grs_dump_match_plan(ext_grs_match_plan_t *); - - - -ext_grs_match_plan_t *ext_grs_compute_plan_pivot(ext_grs_planer_t *planer, - ir_graph *irg, ext_grs_action_t *act, ext_grs_graph_fragment_t *bound); -ext_grs_match_plan_t *ext_grs_compute_plan_global_pivot(ext_grs_planer_t *planer, - ext_grs_action_t *act, ext_grs_graph_fragment_t *bound); - - - - - -#endif /*_EXT_GRS_MATCHPLAN_H_*/ diff --git a/ir/be/grgen/matchplan_t.h b/ir/be/grgen/matchplan_t.h deleted file mode 100644 index 5df8449da..000000000 --- a/ir/be/grgen/matchplan_t.h +++ /dev/null @@ -1,84 +0,0 @@ -#ifndef _EXT_GRS_MATCHPLAN_T_H_ -#define _EXT_GRS_MATCHPLAN_T_H_ - -/* - * Project: libFIRM/extension module/GRS-matcher - * File name: ext/grs/plan_t.h - * Purpose: provides an interface for search planers planing - * the matching process with respect to information - * provided by appropriate analyzers - * Author: Veit Batz - * Created: 7. July 2005 - * CVS-ID: $Id$ - * Copyright: (c) 2005 Universität Karlsruhe - * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. - */ - -#include "action_t.h" -#include "analyze_t.h" -#include "matchplan.h" - -typedef enum { - ext_grs_k_mop_node, - ext_grs_k_mop_edge, - ext_grs_k_mop_condition, - ext_grs_k_mop_preset, - ext_grs_k_mop_preset_edge -} ext_grs_mop_kind_t; - -typedef struct { - /** tells wether this op matches a node or an edge */ - ext_grs_mop_kind_t kind; - /** if this match op matches an edge, then this is the respective pattern edge */ - ext_grs_edge_t *edge; - /** if this match op matches a node, then this is the respective pattern node, - * if this op matches an edge, then this node is the pattern node where the - * edge is retrieved from */ - ext_grs_node_t *node; - /** a condition to be checked by this matching op */ - ext_grs_condition_func_t condition; - /** an op condition to be checked by this matching op (for node-ops only) */ - ext_grs_op_condition_func_t op_condition; - /** a mode condition to be checked by this matching op (for node-ops only) */ - ext_grs_mode_condition_func_t mode_condition; -} ext_grs_match_op_t; - -/** a plan the matching process will follow */ -struct _ext_grs_match_plan_t { - /** the action this matching plan belongs to */ - ext_grs_action_t *action; - /** the number of matching ops of this search plan */ - /*int length;*/ - int num_progs; - int *length; - /** a sequence (array) of match ops (i.e. the matching 'program') */ - /* Contains pointers to all search plans (positive and negative) */ - ext_grs_match_op_t **progs; - /* Just for "backward compatibility: - Contains pointer to the positive search plan */ - ext_grs_match_op_t *prog; -}; - -/** a planer fir the creation of matching plans */ -struct _ext_grs_planer_t { - /** a tag identifying a planer */ - const char *tag; - /** this planers analyzer */ - ext_grs_analyzer_t *analyzer; - - /** initialize this planer */ - void (*init) (struct _ext_grs_planer_t *, ext_grs_analyzer_t *); - /** compute a match plan according to analysis data of a given ir graph */ - ext_grs_match_plan_t * (*compute_plan) - (struct _ext_grs_planer_t *, ir_graph *, ext_grs_action_t *); - /** compute a match plan according to analysis data of all ir graphs */ - ext_grs_match_plan_t * (*ext_grs_compute_plan_global) - (struct _ext_grs_planer_t *, ext_grs_action_t *); - - /** this planers private data area */ - void *data; -}; - - - -#endif /*_EXT_GRS_MATCHPLAN_T_H_*/ diff --git a/ir/be/grgen/plan_vs_dmst.c b/ir/be/grgen/plan_vs_dmst.c deleted file mode 100644 index 020145924..000000000 --- a/ir/be/grgen/plan_vs_dmst.c +++ /dev/null @@ -1,1620 +0,0 @@ -/* - * Project: libFIRM/extension module/graph rewriting system - * File name: ext/grs/plan_vs.c - * Purpose: provides a planar wich performs a bypassing of - * v-structures by real valued costs - * Author: Veit Batz - * Created: 11. Junly 2005 - * CVS-ID: $Id$ - * Copyright: (c) 2005 Universität Karlsruhe - * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. - */ - -#ifdef _WIN32 -#include -#else -#include -#endif - -#include "common_t.h" - -#include "auxilary_t.h" -#include "base_t.h" -#include "action_t.h" -#include "analyze_t.h" -#include "ana_vs_t.h" -#include "matchplan_t.h" - -#include "uf_mpq.h" - -#include "plan_vs_dmst.h" -#include "action_t.h" - - - - -typedef struct _ext_grs_vs_dmst_planer_private_t { - /* tells wether an edge has been chosen */ - int *chosen; - /* tells wether a node has been already reached by the MDST */ - int *mdst_reached; - /* An array of edge ptrs. Each ptr - * denotes the edge visited during the MDST computation before the edge, - * with a given aiid, i.e. the path successor of this edge in forward direction. - * If the edge belongs to a circle found during the MDST computation, this ptr - * points to the next circle edge. If the edges tgt node is a super node, - * the ptr points to the next edge on the same level, i.e. if the edge belongs - * not to a super node itself, the ptr points to the path successor in - * forward direction, if the edge belongs to a super node itself, the - * ptr points to the next circle edge. */ - ext_grs_edge_t **edge_path_succ; - /* An array of edge ptrs. - * If an edge with a given aiid is an outgoing edge of a super node build - * during the MDST computation the respective ptr points to the last edge - * of the circle on forward direction */ - ext_grs_edge_t **super_node_last_edge; - /* needed in the actual plan generation, to remember which condition - * functions have already been placed in a matching op */ - lc_bitset_t *already_placed_conditions; - /* needed in the actual plan generation, to remember which nodes have - * alredy been matvhed by a generated mop */ - lc_bitset_t *already_matched_nodes; - /* needed in the actual plan generation, to remember which edges have - * alredy been matvhed by a generated mop */ - lc_bitset_t *already_matched_edges; - /* tells wether a node with a given node id has been visited yet, - * if not the value in the array is '0', if yes the value is the - * number of the */ - int *visited; - /* an array of edge ptr, each pointing to a root of an edge path builded - * during the MDST computation */ - ext_grs_edge_t **edge_path_roots; - /* number of edge path roots stored in that array */ - int n_edge_path_roots; - -} ext_grs_vs_dmst_planer_private_t; - - - -#define UF_FIND(e) (ext_grs_uf_find((e)+1) - 1) -#define UF_FIND_VALUE(e) (ext_grs_uf_find_value((e)+1)) -#define UF_UNITE(r1,r2) (ext_grs_uf_unite((r1)+1,(r2)+1) - 1) -#define UF_CHANGE_VALUE(r,a) (ext_grs_uf_change_value((r)+1,(a))) - - -/* auxilary function for debugging purposes */ -static void dump_edge_path(ext_grs_vs_dmst_planer_private_t *p, ext_grs_edge_t *edge) { - - ext_grs_edge_t *current_edge = edge; - assert(edge); - - printf("An edge path:\n"); - do - { - printf(" edge %s\n", current_edge->name); - current_edge = p->edge_path_succ[current_edge->aiid]; - } - while (current_edge != NULL && current_edge != edge); - printf("\n\n"); -} - - - - - - - - - - - - - - -/* auxiliary function needed in the expansion step of the MDST algorithm, - * checks whether there is a reached node in a super node */ -static int examine_super_node( - ext_grs_vs_dmst_planer_private_t *p, - ext_grs_edge_t *start_edge) -{ - ext_grs_edge_t *current_edge = NULL; - int already_reached_node_found = 0; - - /* walk the circle forming the current super node */ - assert(start_edge && "NULL edge given"); - current_edge = start_edge; - do { - - /* if the current edges real target node is already reached by an MDST edge, - * report, that a reached node is found in the current super node */ - if ( p->mdst_reached[current_edge->arg->aiid] ) return 1; - - /* if the current edges target node is a super node, - * recursively examine that super node too */ - if (p->super_node_last_edge[current_edge->aiid]) { - already_reached_node_found = - examine_super_node(p, - p->edge_path_succ[ - p->super_node_last_edge[current_edge->aiid]->aiid - ] - ); - } - if (already_reached_node_found) return 1; - - /* process the next edge of the circle */ - current_edge = p->edge_path_succ[current_edge->aiid]; - assert(current_edge && "in a circle the edge path should form a circle too"); - } - while (current_edge != start_edge); - - /* report that no reached node has been found in the current super node */ - return 0; -} - - - - - - - - - - - -/* auxiliary function needed in the expansion step of the MDST algorithm, - * walks a super node and kills one specific edge */ -static void expand_super_node( - ext_grs_vs_dmst_planer_private_t *p, - ext_grs_edge_t *start_edge) -{ - ext_grs_edge_t *current_edge; - - assert(start_edge); - - /* Walk the circle and choose every edge marking its target node as reached, except... - * ...the edge already has an already reached real target node OR - * ...the edges target node is a super node containing an already reached real node. - * If an edge has a super node as target node recursively expand that super node too. */ - current_edge = start_edge; - do { - - /* tells whether the current edges target node is a super node - * containing an already reached real node */ - int super_node_contains_reached_node = 0; - /* represents the start edge of a super node circle */ - ext_grs_edge_t *super_node_start_edge = NULL; - /* represents the last edge of a super node circle */ - ext_grs_edge_t *super_node_end_edge = NULL; - - - super_node_end_edge = p->super_node_last_edge[current_edge->aiid]; - if (super_node_end_edge) - super_node_start_edge = p->edge_path_succ[ super_node_end_edge->aiid ]; - - /* if the current edges target is a super node, check whether - * this super node contains an already reached real node */ - super_node_contains_reached_node = 0; - if (super_node_start_edge) { - super_node_contains_reached_node = examine_super_node(p, super_node_start_edge); - } - - /* mark the current edge as chosen and its real target node as reached, except... (see above) */ - if ( - ! p->mdst_reached[current_edge->arg->aiid] && - ! super_node_contains_reached_node - ) - { - p->chosen[current_edge->aiid] = 1; - p->mdst_reached[current_edge->arg->aiid] = 1; - } - - /* if the current edges target node is a super node, then recursively expand it */ - if (super_node_start_edge) { - expand_super_node(p, super_node_start_edge); - } - - /* process the next edge of the super node circle */ - current_edge = p->edge_path_succ[current_edge->aiid]; - assert(current_edge); - } - while (current_edge != start_edge); -} - - - - - - - - - - - - - - - -#if 0 - - - -/* auxiliary function needed in the expansion step of the MDST algorithm, - * walks a super node where the edge to be killed is initially not known */ -static void expand_super_node_examine( - ext_grs_vs_dmst_planer_private_t *p, - ext_grs_edge_t *start_edge) -{ - - ext_grs_edge_t *current_edge = NULL; - int edge_killed = 0; - - #ifdef EXT_GRS_DEBUG - printf("Expanding a super node (examine). Start edge is %s\n", start_edge->name); - printf("The circle of edges forming the super node: "); - #endif - - - /* walk the circle forming the current super node */ - assert(start_edge && "NULL edge given"); - edge_killed = 0; - - current_edge = start_edge; - #ifdef EXT_GRS_DEBUG - printf("%s ", current_edge->name); - #endif - do { - - /* if the current edges target node is a super node, expand that super node */ - if (p->super_node_last_edge[current_edge->aiid] != NULL) { - - #ifdef EXT_GRS_DEBUG - printf(" Recursively stepping into super node:\n{\n"); - #endif - - expand_super_node_examine(p, - p->edge_path_succ[ - p->super_node_last_edge[current_edge->aiid]->aiid - ] - ); - - #ifdef EXT_GRS_DEBUG - printf("}\n"); - #endif - } - /* if the current edges real target node is already reached by an MDST edge, - * do NOT choose the current edge for the MDST but remember that there's already - * an edge in the current circle, which has not been chosen for the MDST */ - if ( p->mdst_reached[current_edge->arg->aiid] ) { - /* all but exactly one edge of a circle have to be chosen for the MDST */ - assert( !edge_killed && "more than one circle edge not chosen for the MDST"); - /* remember that theres already is an edge not chosen */ - edge_killed = 1; - } - else { - /* otherwise the current edge is chosen, except - * ... OR - * ...it is the last edge of the current circle and no edge edge has been not killed yet */ - if ( p->edge_path_succ[current_edge->aiid] != start_edge || edge_killed ) - { - p->chosen[current_edge->aiid] = 1; - p->mdst_reached[current_edge->arg->aiid] = 1; - } - - } - /* process the next edge of the circle */ - current_edge = p->edge_path_succ[current_edge->aiid]; - assert(current_edge && "in a circle the edge path should form a circle too"); - #ifdef EXT_GRS_DEBUG - printf("%s ", current_edge->name); - #endif - } - while (current_edge != start_edge); - - #ifdef EXT_GRS_DEBUG - printf("\n"); - #endif -} - - - - - -/* auxilary function needed in the expansion step of the MDST algorithm, - * walks a super node where the given edge is the edge to be killed from - * the MDST and the other edges are to be chosen for the MDST */ -static void expand_super_node_killing( - ext_grs_vs_dmst_planer_private_t *p, - ext_grs_edge_t *kill_edge) -{ - ext_grs_edge_t *current_edge; - - #ifdef EXT_GRS_DEBUG - printf("\nExpanding a super node (kill). "); - #endif - - assert(kill_edge); - - #ifdef EXT_GRS_DEBUG - printf("Kill-edge is %s\n", kill_edge->name); - printf("The circle of edges forming the super node: "); - #endif - - /* walk the circle for the first time: - * every edge except the edge to be killed is marked as chosen, the real - * target node of such an edge is to be marked es reached by the MDST */ - current_edge = p->edge_path_succ[kill_edge->aiid]; - assert(current_edge); - #ifdef EXT_GRS_DEBUG - printf("%s ", current_edge->name); - #endif - assert(current_edge != kill_edge); /* no loops allowed! */ - - do { - p->mdst_reached[current_edge->arg->aiid] = 1; - p->chosen[current_edge->aiid] = 1; - current_edge = p->edge_path_succ[current_edge->aiid]; - assert(current_edge); - #ifdef EXT_GRS_DEBUG - printf("%s ", current_edge->name); - #endif - } - while (current_edge != kill_edge); - - #ifdef EXT_GRS_DEBUG - printf("\n"); - #endif - - /* walk the circle for the second time... - * while every super node is expanded. Note that there is a different - * treatment of supernodes pointed to by the edge to be killed and by - * the other edges: two different functions are called */ - current_edge = p->edge_path_succ[kill_edge->aiid]; - assert(current_edge); - assert(current_edge != kill_edge); /* no loops allowed! */ - - do { - if (p->super_node_last_edge[current_edge->aiid]) - expand_super_node_killing(p, p->super_node_last_edge[current_edge->aiid]); - current_edge = p->edge_path_succ[current_edge->aiid]; - } - while (current_edge != kill_edge); - /* now the super node pointed to by the edge to be killed is expanded - * (if there is one) */ - if (p->super_node_last_edge[kill_edge->aiid]) - expand_super_node_examine(p, - p->edge_path_succ[ - p->super_node_last_edge[kill_edge->aiid]->aiid - ] - ); -} - -#endif - - - -/* Place all conditions in the mop, which can now be computed -* and have not been computed yet. If there are more than one -* such conditions generate additional condition mops. */ -static INLINE void emit_nodes_conditions( - ext_grs_action_t *act, ext_grs_node_t *node, - ext_grs_vs_dmst_planer_private_t *p, ext_grs_match_op_t *prog, int *prog_pos) -{ - /* flag, tells whether there has already been placed a condition - * in the current edges mop (so additional condition mops have - * to be created) */ - int already_placed = 0; - - /* a condition index from a set of involved conditions */ - lc_bitset_pos_t cond = (act->nodes_refering_conds[node->aiid])->size; - - /* a matcher op */ - ext_grs_match_op_t *mop; - - if (act->n_conditions > 0) { - lc_bitset_foreach(act->nodes_refering_conds[node->aiid], cond) { - - /* if current condition has already been placed in the plan - * currently generated, then skip */ - if (lc_bitset_is_set(p->already_placed_conditions, cond)) continue; - - /* otherwise check, whether all involved nodes - * and edges have already been matched */ - if ( - ! lc_bitset_contains( - act->conds_involved_nodes[(int)cond], - p->already_matched_nodes) - ) continue; - - /* otherwise place the condition in the mop or (if there has already - * been placed one) create a condition mop. */ - if (already_placed) { - int j = ++(*prog_pos); // Create a condition mop; - mop = & prog[j]; - mop->kind = ext_grs_k_mop_condition; - mop->condition = act->conditions[(int)cond]; - lc_bitset_set(p->already_placed_conditions, cond); // AS - } - else { - mop = &prog[*prog_pos]; // AS - mop->condition = act->conditions[(int)cond]; - already_placed = 1; - lc_bitset_set(p->already_placed_conditions, cond); // AS - } - } - } -} - - - -/* Place all conditions in the mop, which can now be computed - * and have not been computed yet. If there are more than one - * such conditions generate additional condition mops. */ -static INLINE void emit_edges_conditions( - ext_grs_action_t *act, ext_grs_edge_t *edge, - ext_grs_vs_dmst_planer_private_t *p, ext_grs_match_op_t *prog, int *prog_pos) -{ - /* flag, tells whether there has already been placed a condition - * in the current edges mop (so additional condition mops have - * to be created) */ - int already_placed = 0; - - /* a condition index from a set of involved conditions */ - lc_bitset_pos_t cond; - - /* a matcher op */ - ext_grs_match_op_t *mop; - - if (act->n_conditions > 0) { - - // Place conditions for source and target of the edge, if they have not been - // placed yet while emitting the "node operation". - if(edge->func != NULL) // AS - emit_nodes_conditions(act, edge->func, p, prog, prog_pos); // AS - if(edge->arg != NULL) // AS - emit_nodes_conditions(act, edge->arg, p, prog, prog_pos); // AS - - lc_bitset_foreach(act->edges_refering_conds[edge->aiid], cond) { - /* if current condition has already been placed in the plan - * currently generated, then skip */ - if (lc_bitset_is_set(p->already_placed_conditions, cond)) continue; - /* otherwise check, whether all involved nodes - * and edges have already been matched */ - if ( - ! lc_bitset_contains( - act->conds_involved_nodes[(int)cond], - p->already_matched_nodes) - ) continue; - /* otherwise check, whether all involved edges - * and edges have already been matched */ - if ( - ! lc_bitset_contains( - act->conds_involved_edges[(int)cond], - p->already_matched_edges) - ) continue; - /* otherwise place the condition in the mop or (if there has already - * been placed one) create a condition mop. */ - if (already_placed) { - int j = ++(*prog_pos); - mop = & prog[j]; - mop->kind = ext_grs_k_mop_condition; - mop->condition = act->conditions[(int)cond]; - lc_bitset_set(p->already_placed_conditions, cond); // AS - } - else { - mop = &prog[*prog_pos]; // AS - mop->condition = act->conditions[(int)cond]; - already_placed = 1; - lc_bitset_set(p->already_placed_conditions, cond); // AS - } - } - } -} - - - -static void emit_mop( - ext_grs_vs_dmst_planer_private_t *p, - ext_grs_action_t *act, ext_grs_match_op_t *prog, - ext_grs_edge_t *edge, int *prog_pos) -{ - - /* a matcher op */ - ext_grs_match_op_t *mop; - int j = *prog_pos; - - mop = &prog[j]; - - /* write the respective node or edge into the mop */ - if (edge->kind == ext_grs_k_edge) { - ext_grs_edge_t *back_edge; - - mop->kind = ext_grs_k_mop_edge; - mop->edge = edge; - mop->node = edge->func; - - mop->edge->first_mop_index = j; - - /* mark the pseudo edge representing the backward - * traversal of the edge also as chosen such that - * it can not be used for the generation of matcher - * ops anymore, or if already chosen, remove it - * from the priority queue of allowed edges */ - back_edge = edge->backward_edge; - if (p->chosen[back_edge->aiid] == 2) { - ext_grs_mpq_delete(back_edge); - } - else { - p->chosen[edge->backward_edge->aiid] = 2; - } - - /* mark the genuine node as already been matched */ - lc_bitset_set(p->already_matched_edges, edge->aiid); - /* mark the genuine node as already been matched */ - lc_bitset_set(p->already_matched_nodes, edge->arg->aiid); - - emit_edges_conditions(act, edge, p, prog, prog_pos); - } - else { - ext_grs_elem_t *genuine_elem; - - assert(edge->kind == ext_grs_k_pseudo_edge && "invalid kind"); - /* get the genuine elem */ - genuine_elem = & edge->genuine_elem; - if (genuine_elem->kind == ext_grs_k_edge) { - /* pseudo edge represents a reverse edge matching */ - ext_grs_edge_t *genuine_edge = genuine_elem->val.e; - - if(genuine_edge->related_edge != NULL) - mop->kind = ext_grs_k_mop_preset_edge; - else - mop->kind = ext_grs_k_mop_edge; - mop->edge = genuine_edge; - mop->node = genuine_edge->arg; - - mop->edge->first_mop_index = j; - - /* mark the actual edge belonging to the - * pseudo edge representing the backward - * traversal of the that actual edge also as chosen - * such that it can not be used for the generation - * of matcher ops anymore, or if already chosen, - * remove it from the priority queue of allowed edges */ - if (p->chosen[genuine_edge->aiid] == 2) { - ext_grs_mpq_delete(genuine_edge); - } - else { - p->chosen[genuine_edge->aiid] = 2; - } - - /* mark the genuine node as already been matched */ - lc_bitset_set(p->already_matched_edges, genuine_edge->aiid); - /* mark the genuine node as already been matched */ - lc_bitset_set(p->already_matched_nodes, genuine_edge->func->aiid); - - emit_edges_conditions(act, genuine_edge, p, prog, prog_pos); - - } - else { - /* pseudo edge represents a node matching */ - ext_grs_node_t *genuine_node = genuine_elem->val.n; - - assert(genuine_elem->kind == ext_grs_k_node && "invalid kind"); - assert(genuine_node == edge->arg); - - if(genuine_node->related_node != NULL) - mop->kind = ext_grs_k_mop_preset; - else - mop->kind = ext_grs_k_mop_node; - mop->edge = NULL; - mop->node = genuine_node; - - if (genuine_node->op_condition) - mop->op_condition = genuine_node->op_condition; - if (genuine_node->mode_condition) - mop->mode_condition = genuine_node->mode_condition; - - /* mark the genuine node as already been matched */ - lc_bitset_set(p->already_matched_nodes, genuine_node->aiid); - - emit_nodes_conditions(act, genuine_node, p, prog, prog_pos); - } - } -} - -#if 0 -static ext_grs_match_op_t **emit_negative_plans(ext_grs_action_t *act) -{ - lc_list_t *pos; - /* Compute a search plan for all negative patterns */ - /* Count number of negative patterns */ - int num_negatives = 0, i; - ext_grs_match_op_t **result; - - - - lc_list_for_each(pos, (&act->negatives)) - num_negatives++; - - result = (ext_grs_match_op_t **) malloc(num_negatives * sizeof(ext_grs_match_op_t *)); - - i = 0; - /* Handle all negative patterns, there can be several */ - lc_list_for_each(pos, (&act->negatives)) - { - struct ext_grs_graph_t *neg_pattern; - - result[i] = (ext_grs_match_op_t *) malloc((act->n_nodes + act->n_edges + act->n_conditions) * sizeof(ext_grs_match_op_t)); - neg_pattern = lc_list_entry(pos, ext_grs_graph_t, negative_list); - - /* TODO: Now walk through that graph and create search plan */ - - - i++; - } - return(result); -} -#endif - - -/* --------------------------------------------------------- - Allocate the memory for the plan object and for the array - representing the match program all at once - --------------------------------------------------------- */ -static ext_grs_match_plan_t *alloc_plan(ext_grs_action_t *act) -{ - ext_grs_match_plan_t *plan; - lc_list_t *neg_patterns; - lc_list_t *list_pos; - int num_negatives = 0, num_all_plans; - int i; - - plan = malloc(sizeof(*plan)); - memset(plan, 0, sizeof(*plan)); - plan->action = act; - - - /* Compute a search plan for all negative patterns */ - - /* Count number of negative patterns */ - lc_list_for_each(list_pos, (&act->negatives)) - num_negatives++; - num_all_plans = num_negatives + 1; - - plan->progs = (ext_grs_match_op_t **) malloc(num_all_plans * sizeof(ext_grs_match_op_t *)); - - /* Alloc mem for all search plans, 1 positive and n negative */ - plan->progs[0] = (ext_grs_match_op_t *) malloc((act->n_nodes + act->n_edges + act->n_neg_nodes + act->n_neg_edges + act->n_conditions) * sizeof(ext_grs_match_op_t)); - memset(plan->progs[0], 0, (act->n_nodes + act->n_edges + act->n_neg_nodes + act->n_neg_edges + act->n_conditions) * sizeof(ext_grs_match_op_t)); - - - neg_patterns = &act->negatives; - neg_patterns = neg_patterns->next; - for(i = 1; i < num_all_plans; i++) - { - ext_grs_graph_t *pat = (ext_grs_graph_t *) lc_list_entry(neg_patterns, ext_grs_graph_t, negative_list); - plan->progs[i] = (ext_grs_match_op_t *) malloc((act->n_nodes + act->n_edges + act->n_neg_nodes + act->n_neg_edges + act->n_conditions) * sizeof(ext_grs_match_op_t)); - memset(plan->progs[i], 0, (act->n_nodes + act->n_edges + act->n_neg_nodes + act->n_neg_edges + act->n_conditions) * sizeof(ext_grs_match_op_t)); - neg_patterns = neg_patterns->next; - } - - - plan -> prog = plan -> progs[0]; - - plan -> length = (int *) malloc(num_all_plans * sizeof(int)); - memset(plan -> length, 0, num_all_plans * sizeof(int)); - - plan->num_progs = num_all_plans; - - return(plan); -} - - - -/* - * Generation of the matching plan usind the precoomputed MDST. - * HERE WE GO: comming from the root chose one edge after another as the - * next search plan edge by a modified Best-First manner: - * An edge can only be chosen iff - * - if it is an pseudo or benuine OUT edge AND - * - at least one of its incident nodes has already - * been visited by the final plan generation AND - * - it is part of the computed MDSR or BOTH of - * its incident nodes have already been chosen - * This is done by one big Priority queue were all edges - * are put in the moment they become allowed to be chosen */ -static int -emit_plan( ext_grs_match_op_t *prog /*ext_grs_match_plan_t *plan*/, ext_grs_graph_t *pattern /*ext_grs_action_t *act*/, ext_grs_vs_dmst_planer_private_t *p, int phase) -{ - ext_grs_action_t *act = pattern->action; - ext_grs_node_t *current_node; - int j = 0; - - /* create the pq containing the allowed edges */ - /* a priority queue for edges used after MDST computation in - * the final plan generation step */ - ext_grs_mpq_t *edge_queue = ext_grs_mpq_create(); - /* initialize the uf structure. This is because after the init - * a zero cost modification of incoming edges is associated to - * every pattern node. This MUST be done, because the cost - * modification stored on the if structure are used by the priority - * queue by to compute the actual cost of an edge. So if these - * modifications are NOT zero the order in the queue will be WRONG!!! */ - ext_grs_uf_init(act->max_node_aiid + 1); - - - /* the current pos in the generated match program */ - - - /* START from the patterns root */ - current_node = &pattern->root_node; - while (1) { - lc_list_t *pos; - ext_grs_edge_t *cheapest_edge; - ext_grs_match_op_t *mop; - - /* put all out (that is in-flowing) edges in pq that are allowed - * to be matched by the fact, that they belong to the MDST */ - lc_list_for_each(pos, & current_node->edges[ext_grs_in]) { - - /* ATTENTION: if ported to GrGen these 'in' indeces have - * to be changed to 'out' !!!! */ - ext_grs_edge_t *some_edge = - lc_list_entry(pos, ext_grs_edge_t, list[ext_grs_in]); - - if ( - /* some edge belongs to the MDST, but no match opereation - * has been generated yet */ - p->chosen[some_edge->aiid] == 1 - ) - { - ext_grs_mpq_insert(edge_queue, some_edge); - /* mark edge as processed - * (so it will not be inserted in the queue again) */ - p->chosen[some_edge->aiid] = 2; - } - } - /* put all out (that is in-flowing) AND in (that is out-flowing) - * edges in pq that are allowed to be matched by the fact, - * that both of their incident nodes have already been matched. - * The in edges are added too, because the matching of the REAL - * edge coming from the (already matched) node at the other end - * of the plan graph edge may be cheaper */ - lc_list_for_each(pos, & current_node->edges[ext_grs_in]) { - - /* ATTENTION: if ported to GrGen these 'in' indeces have - * to be changed to 'out' !!!! */ - ext_grs_edge_t *some_edge = - lc_list_entry(pos, ext_grs_edge_t, list[ext_grs_in]); - - if ( - /* both incident nodes of some edge have arealready been - * processed by the final plan genration phase, but no match - * operation has been generated yet */ - (p->chosen[some_edge->aiid] == 0 && p->visited[some_edge->arg->aiid] > phase) - ) - { - ext_grs_mpq_insert(edge_queue, some_edge); - /* mark edge as processed - * (so it will not be inserted in the queue again) */ - p->chosen[some_edge->aiid] = 2; - - - /* also insert the backward edge */ - /* ...in case of a real edge its in fact the backward edge */ - if (some_edge->kind == ext_grs_k_edge) { - ext_grs_mpq_insert(edge_queue, some_edge->backward_edge); - p->chosen[some_edge->backward_edge->aiid] = 2; - } - /* ...otherwise its the genuine edge */ - else { - assert (some_edge->kind == ext_grs_k_pseudo_edge && "invalid kind"); - if (some_edge->genuine_elem.kind == ext_grs_k_edge) { - ext_grs_edge_t *genuine_edge = some_edge->genuine_elem.val.e; - ext_grs_mpq_insert(edge_queue, genuine_edge); - p->chosen[genuine_edge->aiid] = 2; - } - else { - /* just check for wrong kind and do nothing */ - assert (some_edge->genuine_elem.kind == ext_grs_k_node && "invalid kind"); - } - } - } - } - - /* get the cheapest edge */ - cheapest_edge = ext_grs_mpq_delete_min(edge_queue); - if (cheapest_edge == NULL) break;/* if all edges processed... */ - - assert(j < (act->n_nodes + act->n_edges + act->n_neg_edges + act->n_neg_nodes + act->n_conditions) && "prog position out of bounds"); - - /* add new match op to the plan */ - mop = & prog[j]; - - if (p->visited[cheapest_edge->arg->aiid] <= phase) - cheapest_edge->arg->first_mop_index = j; - - /* mark the target node of the edge as visited */ - p->visited[cheapest_edge->arg->aiid] = phase + 1; - - - emit_mop(p, act, prog, cheapest_edge, &j); - - /* increment the pos in the match program */ - j++; - /* increment the length of the search plan */ - /*plan->length++; */ - /* the next node to insert allowed incident out edges in the queue */ - current_node = cheapest_edge->arg; - } - return (j); -} - -/* annotate the edges of the plan graph with edge costs due to the - * result of a previous v-structure analysis */ -static void annotate_edge_costs( - ext_grs_graph_t *pattern /*ext_grs_action_t *act*/, ext_grs_irg_private_t *pr_g, ext_grs_vs_stat_t *vs_stat, int is_negative) -{ - - /*int i; */ - - /* annotate all real, negative and pseudo edges with edge costs - * additionally do some init stuff with each edge */ - lc_list_t *pos; - - /* Go through all edges of this pattern */ - lc_list_for_each(pos, &pattern->edges) - { - /*for (i = 0; i <= act->max_edge_aiid; i++) { */ - - ext_grs_edge_t *edge = lc_list_entry(pos, ext_grs_edge_t, edge_list); /*act->edges[i]; */ - - ir_opcode opc_arg; - modecode mc_arg; - ir_opcode opc_func; - modecode mc_func; - ir_opcode opc; - modecode mc; - - int l; - - /* there might be gaps in the array of edges */ - /*if (!edge) continue; */ - assert(edge != NULL && "Edge was NULL!"); - - /* for regular and pseudo edges annotate the v-structure costs */ - if (edge->kind == ext_grs_k_edge) { - double n_vs; - int n_inst = 0; - - - opc_arg = get_op_code(edge->arg->op); - mc_arg = get_mode_modecode(edge->arg->mode); - opc_func = get_op_code(edge->func->op); - mc_func = get_mode_modecode(edge->func->mode); - - - - /* get v-structures of the function node */ - - /* compute the number of instnaces present for the - * func node (including all sub ops) */ - for (l = 0; l < ARR_LEN(_ext_grs_all_sub_ops_of_op[opc_func]); l++) { - ir_opcode super_opc_func = get_op_code(_ext_grs_all_sub_ops_of_op[opc_func][l]); - n_inst += _ext_grs_N_INSTANCES(pr_g, super_opc_func, mc_func); - } - - edge->cost = 0.0; - if (edge->pos == ext_grs_NO_EDGE_POS) - if (n_inst != 0) { - n_vs = _get_n_v_structures( - vs_stat, opc_func, mc_func, opc_arg, mc_arg, ext_grs_in); - edge->cost = (n_vs / (double)n_inst) + (double)is_negative; - } - } - - /* for pseudo edges... */ - else { - ext_grs_elem_t *elem; - assert(edge->kind == ext_grs_k_pseudo_edge && "invalid kind found"); - - /* ...find out, whether they represent a node matching or the - * following of an edge in reverse direction */ - elem = & edge->genuine_elem; - /* to do that, check the kind tag, which is stored first */ - if ( elem->kind == ext_grs_k_node) { - double log_n_instances; - int n_inst = 0; - - opc = get_op_code(edge->arg->op); - mc = get_mode_modecode(edge->arg->mode); - /* the genuine elem the pseudo edge belongs to is a node... */ - /* thus the the costs are the log2 of the number of instances */ - - /* compute the number of instances present for the - * node (including all sub ops) */ - for (l = 0; l < ARR_LEN(_ext_grs_all_sub_ops_of_op[opc]); l++) { - ir_opcode super_opc = get_op_code(_ext_grs_all_sub_ops_of_op[opc][l]); - n_inst += _ext_grs_N_INSTANCES(pr_g, super_opc, mc); - } - - if (n_inst > 0) - log_n_instances = _log2(n_inst); - else log_n_instances = 0.0; - edge->cost = log_n_instances + (double)is_negative; - - /* check (for negative graphs) whether the node is related to - a positive node; if so, set the costs of the pseudo edge to zero. */ - if (is_negative) - if (edge->arg->related_node) - edge->cost = 0.0; - } - else { - double n_vs; - int n_inst = 0; - opc_arg = get_op_code(edge->arg->op); - mc_arg = get_mode_modecode(edge->arg->mode); - opc_func = get_op_code(edge->func->op); - mc_func = get_mode_modecode(edge->func->mode); - - /* the genuine elem the pseudo edge belongs to is an edge... */ - assert(elem->kind == ext_grs_k_edge && "pattern elem of a wrong kind"); - - /* get v-structures of the argument node */ - n_vs = _get_n_v_structures( - vs_stat, opc_func, mc_func, opc_arg, mc_arg, ext_grs_out); - - /* compute the number of instances present for the - * func node (including all sub ops) */ - for (l = 0; l < ARR_LEN(_ext_grs_all_sub_ops_of_op[opc_func]); l++) { - ir_opcode super_opc_func = get_op_code(_ext_grs_all_sub_ops_of_op[opc_func][l]); - n_inst += _ext_grs_N_INSTANCES(pr_g, super_opc_func, mc_func/* MAYBE WRONG!!! */ ); - } - - if (n_inst != 0) - edge->cost = n_vs / (double)n_inst; - else - edge->cost = 0.0; - - edge->cost += (double)is_negative; - } - } - } -} - -static void prepare_mdst_contraction_phase( - /*ext_grs_action_t *act*/ext_grs_graph_t *pattern, lc_list_t *not_visited_nodes, ext_grs_mpq_t **pq) -{ - lc_list_t *pattern_pos; - int i; - - /* for all pattern nodes v do: - * - create a pq(v), put all the nodes edges in pq(v) - * - add v to the list of not yet processed nodes */ - LC_INIT_LIST_HEAD(not_visited_nodes); - - lc_list_for_each(pattern_pos, &pattern->nodes) - { - /*for (i = 0; i <= act->max_node_aiid; i++) {*/ - - lc_list_t *pos; - - - ext_grs_node_t *current_node = lc_list_entry(pattern_pos, ext_grs_node_t, node_list); /*act->nodes[i];*/ - i = current_node->aiid; - - /* there might be gaps in the array of nodes */ - /*if (!current_node) - continue;*/ - - assert(current_node != 0 && "NULL Node in node List!!"); - - /*assert(current_node->aiid == i && "found node with an inconsistent action internal id"); */ - /* create a new pq for each pattern node */ - pq[i] = ext_grs_mpq_create(); - /* fill the new pq with all graph theoretical incoming - * edges of the node, i.e. with all out-flowing edges */ - lc_list_for_each(pos, & current_node->edges[ext_grs_out]) { - ext_grs_edge_t *current_edge = - lc_list_entry(pos, ext_grs_edge_t, list[ext_grs_out]); - ext_grs_mpq_insert(pq[i], current_edge); - } - - /* add the current node to a list of nodes not yet - * processed by Edmonds Algor. */ - lc_list_add(& current_node->not_visited_list, not_visited_nodes); - } -} - -static ext_grs_edge_t * -process_found_circle( - ext_grs_graph_t *pattern, ext_grs_vs_dmst_planer_private_t *p, ext_grs_mpq_t **pq, - ext_grs_node_t *start_node, int phase) -{ - ext_grs_action_t *act = pattern->action; - ext_grs_node_t *current_node = start_node; - - /* the current circle node */ - ext_grs_node_t *circle_node; - - ext_grs_edge_t *cheapest_edge; - ext_grs_edge_t *current_edge; - int node_id; - - - /* an auxilary pq item */ - ext_grs_mpq_t *meld_pq; - - /* the first edge of the edges forming the circle, the last edge forming the - * circle (both seen in edge direction) and the edge processed before processing - * the last edge */ - ext_grs_edge_t *first_circle_edge, *last_circle_edge, *from_edge; - - /* cheapest edge of the new made super node, it is incident - * to the same node as kill edge */ - ext_grs_edge_t *continue_edge; - /* the repsective incident incomming circle edge */ - ext_grs_edge_t *current_end_edge; - - /* check for a consistent uf state */ - assert(p->visited[current_node->aiid] == phase && "visited by a future phase?!"); - - - - /* walk the circle and unite all (super)nodes uf sets. By uniting - * the uf structure a second walk through the circle can find out - * the cheapest edge entering the super node formed by the - * current circle, such that this cheapest edge is not a loop edge. */ -/* -#ifdef EXT_GRS_DEBUG - printf("Walk circle the 1st time. The processed edges are:\n"); -#endif - */ - cheapest_edge = ext_grs_mpq_delete_min(pq[current_node->aiid]); - assert(cheapest_edge && "there should have been a circle edge"); - -/* - #ifdef EXT_GRS_DEBUG - printf(" %s\n", cheapest_edge->name); - #endif - */ - - /* the first of the processed cheapest edges is the last circle edge - * followinf the edge direction (as the last of these edge is the - * first circle edge in edge direction) */ - last_circle_edge = cheapest_edge; - /* the edge processed before processing the last circle edge for - * the first time */ - from_edge = p->edge_path_succ[last_circle_edge->aiid]; - - /* store the pq of the cheapest edges target (super)node temporarily - * in the real target node of the cheapest edge */ - pq[cheapest_edge->arg->aiid] = pq[current_node->aiid]; - - /* get the minimal cost edges source (super) node */ - node_id = UF_FIND(cheapest_edge->func->aiid); - assert(node_id <= act->max_node_aiid && "node id found in uf structure to large"); - circle_node = act->nodes[node_id]; - - /* check wether all circle nodes have been visited in the current phase */ - assert(p->visited[circle_node->aiid] == phase && - "all nodes of a circle should have been visited in the same phase"); - - /* store modification of incoming edge costs in node */ - UF_CHANGE_VALUE( - current_node->aiid, - cheapest_edge->cost - UF_FIND_VALUE(cheapest_edge->arg->aiid) - ); - - while (circle_node != current_node) { /* walk the hole circle */ - - /* get a minimum cost edge of some_node, this edge must be the - * first edge of the circle because the priviously chosen one - * remains to be the first elem of the double linked lists */ - cheapest_edge = ext_grs_mpq_delete_min(pq[circle_node->aiid]); -/* - #ifdef EXT_GRS_DEBUG - printf(" %s\n", cheapest_edge->name); - #endif - */ - /* check: there is a cheapest edge and as a circle edge it - * has to be a chosen one */ - assert(cheapest_edge && "there should have been a circle edge"); - - /* store the pq of the cheapest edges target (super)node temporarily - * in the real target node of the cheapest edge */ - pq[cheapest_edge->arg->aiid] = pq[circle_node->aiid]; - - /* store the change of the costs of the incoming edges of - * the current circle node as value in the nodes uf structure */ - UF_CHANGE_VALUE( - circle_node->aiid, - cheapest_edge->cost - UF_FIND_VALUE(cheapest_edge->arg->aiid) - ); - - /* unite circle nodes to a super node */ - node_id = UF_UNITE(circle_node->aiid, current_node->aiid); - /* ensure that the next node is united super node */ - current_node = act->nodes[node_id]; - - /* get ready for the next iteration step... */ - /* ...and the current one to the tgt node of the cheapest edge */ - node_id = UF_FIND(cheapest_edge->func->aiid); - assert(node_id < act->n_nodes + act->n_neg_nodes + act->n_pseudo_nodes && "node id found in uf structure to large"); - circle_node = act->nodes[node_id]; - - /* check wether all circle nodes have been visited in the current phase */ - assert(p->visited[circle_node->aiid] == phase && - "all nodes of a circle should have been visited in the same phase"); - - } - - - /* the last of the processed cheapest edges is the first circle edge - * following the edge direction (as the first of these edge is the - * last circle edge in edge direction) */ - first_circle_edge = cheapest_edge; - - p->edge_path_succ[last_circle_edge->aiid] = first_circle_edge; - - - - - /* walk the circle again, this time using the stored edge path. - * while walking the circle look for the cheapest incomming edge - * which is not a loop. The loop property can be checked using - * the already united uf sets representing the (super)nodes */ -/* - #ifdef EXT_GRS_DEBUG - printf("Walk circle the 2nd time. The processed edges are:\n"); - #endif - */ - - meld_pq = pq[last_circle_edge->arg->aiid]; - current_edge = first_circle_edge; - - continue_edge = ext_grs_mpq_find_min( meld_pq ); - assert (continue_edge && "there's always an edge from the root node"); - while ( - UF_FIND(continue_edge->func->aiid) == current_node->aiid && - continue_edge->func != &pattern->root_node - ) - { - /* a loop edge has to be deleted... */ - ext_grs_mpq_delete_min( meld_pq ); - /* ...and a new minimal one has to be chosen */ - continue_edge = ext_grs_mpq_find_min( meld_pq ); - assert (continue_edge != NULL && "there's always an edge from the root node"); - } - current_end_edge = last_circle_edge; - - - while (current_edge != last_circle_edge) { - - ext_grs_edge_t *some_edge = continue_edge; - - meld_pq = ext_grs_mpq_meld(pq[current_edge->arg->aiid], meld_pq); - - continue_edge = ext_grs_mpq_find_min( meld_pq ); - assert (continue_edge && "there's always an edge from the root node"); - while ( - UF_FIND(continue_edge->func->aiid) == current_node->aiid && - continue_edge->func != &pattern->root_node - ) - { - /* a loop edge has to be deleted... */ - ext_grs_mpq_delete_min( meld_pq ); - /* ...and a new minimal one has to be chosen */ - continue_edge = ext_grs_mpq_find_min( meld_pq ); - assert (continue_edge != NULL && "there's always an edge from the root node"); - } - /* if continue_edge has changed... */ - if (some_edge != continue_edge) { - some_edge = continue_edge; - current_end_edge = current_edge; - } - - current_edge = p->edge_path_succ[current_edge->aiid]; -/* - #ifdef EXT_GRS_DEBUG - printf(" %s\n", current_edge->name); - #endif - */ - - } - - /* store the melded pq as new pq of the super node in the representative - * node of the super node. */ - pq[current_node->aiid] = meld_pq; - - - - - - p->edge_path_succ[continue_edge->aiid] = from_edge; - p->super_node_last_edge[continue_edge->aiid] = current_end_edge; - - - /* continue with cheapest edge leaving the circle */ - return continue_edge; -} - - -/* First phase of the MDST computation: contract all circles in - * the plangraph to super nodes */ -static int mdst_contraction_phase(ext_grs_graph_t *pattern, ext_grs_vs_dmst_planer_private_t *p) -{ - - ext_grs_action_t *act = pattern->action; - /* a list of nodes not yet processed by Edmonds Algo */ - lc_list_t not_visited_nodes; - /* needed for walking the list of unprocessed nodes */ - lc_list_t *pos; - - /* an array of meldable priority queues. Each mpq - * will contain the edges of the node the id of which equals the - * index in the mpq array. The edge costs will serve as key. */ - ext_grs_mpq_t **pq = alloca((act->max_node_aiid + 1) * sizeof(*pq)); - /* the current pattern node */ - ext_grs_node_t *current_node; - /* visit phases of the contraction phase */ - int phase = 1; - - - memset(pq, 0, (act->max_node_aiid + 1) * sizeof(*pq)); - - - prepare_mdst_contraction_phase(pattern, & not_visited_nodes, pq); - - - #ifdef EXT_GRS_DEBUG - printf(">>>> The MDST contraction phase: <<<<\n"); - #endif - - - - while (! lc_list_empty(& not_visited_nodes)) - { - - /* a minimum cost edge */ - ext_grs_edge_t *cheapest_edge; - /* be minimum cost edge processed in the last step */ - ext_grs_edge_t *previous_edge = NULL; - - pos = not_visited_nodes.next; - - - current_node = lc_list_entry(pos, ext_grs_node_t, not_visited_list); - #ifdef EXT_GRS_DEBUG - printf("\nTaking a not yet visited node: %s\nChoosing edges: ", current_node->name); - #endif - - /* mark the current node as visited (with the number of the - * corresponding visit phase)... */ - p->visited[current_node->aiid] = phase; - /* del the current node from the list of unvisited nodes */ - lc_list_del( & current_node->not_visited_list); - - cheapest_edge = ext_grs_mpq_find_min(pq[current_node->aiid]); - p->edge_path_succ[cheapest_edge->aiid] = NULL; - - #ifdef EXT_GRS_DEBUG - printf("\n%s ", cheapest_edge->name); - #endif - - - /* Edmonds Algo unites nodes to super nodes, thus the number - * of nodes decreases, further more the root node has no incomming - * (that is out-flow) edges, thus in that case one has to start with - * another not yet visited node */ - /* note that root node has no in-edges (that is out-flow edges) */ - while (1) { - - /* an auxilary id */ - int node_id; - - assert (cheapest_edge != NULL && "every node except the root has an incomming edge"); - - /* if tgt node of the cheapest edge is the root, - * try another not yet visited node */ - if (cheapest_edge->func == & pattern->root_node) { - p->edge_path_roots[p->n_edge_path_roots++] = cheapest_edge; - break; - } - - /* find the next current node to choose a cheapest incoming edge from */ - node_id = UF_FIND(cheapest_edge->func->aiid); - assert (node_id < act->n_nodes + act->n_neg_nodes + act->n_pseudo_nodes && "node id found in uf structure to large"); - current_node = act->nodes[node_id]; - - /* check wether the src node of the minimal cost edge has already been - * visited, and if so wether this has happend in a previous or in current - * visit phase */ - if (p->visited[current_node->aiid] == 0) {/* not visited yet... */ - - previous_edge = cheapest_edge; - - cheapest_edge = /* ...so get the next cheapest edge... */ - ext_grs_mpq_find_min(pq[current_node->aiid]); - - #ifdef EXT_GRS_DEBUG - printf("%s ", cheapest_edge->name); - #endif - - p->edge_path_succ[cheapest_edge->aiid] = previous_edge; - - /* mark current node as visited by the current visit phase */ - p->visited[current_node->aiid] = phase; - /* remove the node from the list of unvisited nodes */ - lc_list_del( & current_node->not_visited_list); - continue; /* ...and go on further */ - } - else if (current_node->aiid == UF_FIND(cheapest_edge->arg->aiid)) { /* a loop edge found */ - /* remove every found loop from the (super)nodes pq */ - ext_grs_mpq_delete_min(pq[current_node->aiid]); - - #ifdef EXT_GRS_DEBUG - printf("Loop!"); - #endif - - cheapest_edge = ext_grs_mpq_find_min(pq[current_node->aiid]); - - #ifdef EXT_GRS_DEBUG - printf("%s ", cheapest_edge->name); - #endif - - p->edge_path_succ[cheapest_edge->aiid] = previous_edge; - continue; - } - else if (p->visited[current_node->aiid] < phase) { /* visited in a previous phase... */ - p->edge_path_roots[p->n_edge_path_roots++] = cheapest_edge; - break; /* ...so start from a nother not yet visited node */ - } - else { - - #ifdef EXT_GRS_DEBUG - printf("Circle! "); - #endif - - /* a circle has been formed */ - cheapest_edge = process_found_circle(pattern, p, pq, current_node, phase); - - #ifdef EXT_GRS_DEBUG - printf("Cheapest outgoing edge: %s\n", cheapest_edge->name); - #endif - - previous_edge = p->edge_path_succ[cheapest_edge->aiid]; - - } - } - /* next visit phase has a greater marking number, that means that - * we can decide in O(1) wether this node belongs to a circle - * or has reverse a path to the root node of the current action */ - phase++; - } - - return phase; -} - - -/* Second phase of the MDST computation: expand the condensed super nodes - * and choose an appropriate entering edge of each super node expanded */ -static void mdst_expansion_phase(ext_grs_vs_dmst_planer_private_t *p) { - - int i; - ext_grs_edge_t *current_edge; - - #ifdef EXT_GRS_DEBUG - printf("\n>>>> The MDST expansion phase: <<<<\n"); - printf("Top level: "); - #endif - - - /* for all edge paths found, do... */ - for (i = 0; i < p->n_edge_path_roots; i++) { - - ext_grs_edge_t *end_edge; - ext_grs_edge_t *start_edge; - - /* walk the hole edge path till it ends */ - current_edge = p->edge_path_roots[i]; - while (current_edge != NULL) { - - assert(p->mdst_reached[current_edge->arg->aiid] == 0 && - "there should be no circles on top level"); - - #ifdef EXT_GRS_DEBUG - printf("%s ", current_edge->name); - #endif - - - /* follow the edge path until the target node of the current - * edge is a super node and mark the real target nodes of the - * edge path as already reached by an MDST edge (this is because - * on the top level the edge do NOT belong to a super node, thus - * all super nodes on the current edge path have exactly ONE ocomming - * edge, and this edge must be chosen for the MDST!) */ - p->chosen[current_edge->aiid] = 1; - p->mdst_reached[current_edge->arg->aiid] = 1; - - /* if the current edges target node is a super node, expand this super node! */ - end_edge = p->super_node_last_edge[current_edge->aiid]; - if (end_edge) { - start_edge = p->edge_path_succ[end_edge->aiid]; - expand_super_node(p, start_edge); - } - - /* process the next edge on the current edge path */ - current_edge = p->edge_path_succ[current_edge->aiid]; - } - - } -} - - - - -static void init(ext_grs_planer_t *planer, ext_grs_analyzer_t *alz) { - planer->analyzer = alz; -} - - - - -static ext_grs_match_plan_t *compute_plan( - ext_grs_planer_t *planer, ir_graph *irg, ext_grs_action_t *act) -{ - - lc_list_t *neg_pattern; - /* the private data area of the planer */ - ext_grs_vs_dmst_planer_private_t *p = (ext_grs_vs_dmst_planer_private_t *) planer->data; - /* the plan to be returned */ - ext_grs_match_plan_t *plan; - int i; - - /* keeps the number of the visit phase of the Edmonds MDST impl */ - int phase; - - - /* Alloc memory for plan object and positive and negative search plan progs */ - plan = alloc_plan(act); - - - - /* init bitsets needed to store information needed in emitting condition */ - p->already_placed_conditions = lc_bitset_alloca(act->n_conditions); - p->already_matched_nodes = lc_bitset_alloca(act->max_node_aiid+1); - p->already_matched_edges = lc_bitset_alloca(act->max_edge_aiid+1); - - p->edge_path_succ = alloca((act->max_edge_aiid + 1) * sizeof(* p->edge_path_succ)); - p->super_node_last_edge = alloca((act->max_edge_aiid + 1) * sizeof(* p->super_node_last_edge)); - - p->visited = alloca((act->max_node_aiid + 1) * sizeof(*p->visited)); - /* tells wether an edge has been chosen */ - p->chosen = alloca((act->max_edge_aiid + 1) * sizeof(* p->chosen)); - /* tells wether a node has been already reached by the MDST */ - p->mdst_reached = alloca((act->max_node_aiid + 1) * sizeof(* p->mdst_reached)); - - p->edge_path_roots = alloca((act->max_edge_aiid + 1) * sizeof(*p->edge_path_roots)); - - - - - if (act->mature == 0) { - printf("ERROR in module ext/grs: invoked planing for a nonmature action\n"); - return NULL; - } - - /* for an empty pattern return an empty plan */ - if (act->n_nodes + act->n_neg_nodes <= 0) { - plan = (ext_grs_match_plan_t *) malloc(sizeof(*plan)); - memset(plan, 0, sizeof(*plan)); - plan->action = act; - plan->length[0] = 0; - plan->prog = NULL; - plan->progs = 0; - plan->num_progs = 0; - return plan; - } - - - /* Compute Progs for all patterns (positive and negative) */ - - /* act->negatives is the list head, call next node to find the first object in list */ - neg_pattern = &act->negatives; - neg_pattern = neg_pattern->next; - for(i = 0; i < plan->num_progs; i++) - { - /* the current positive or negayive pattern graph */ - ext_grs_graph_t *pat; - - /* do some init */ - memset(p->visited, 0, (act->max_node_aiid + 1) * sizeof(* p->visited)); - memset(p->chosen, 0, (act->max_edge_aiid + 1) * sizeof(* p->chosen)); - memset(p->mdst_reached, 0, (act->max_node_aiid + 1) * sizeof(* p->mdst_reached)); - memset(p->edge_path_succ, 0, (act->max_edge_aiid + 1) * sizeof(* p->edge_path_succ)); - memset(p->super_node_last_edge, 0, (act->max_edge_aiid + 1) * sizeof(* p->super_node_last_edge)); - memset(p->edge_path_roots, 0, (act->max_edge_aiid + 1) * sizeof(*p->edge_path_roots)); - p->n_edge_path_roots = 0; - - /* init the mpq structure */ - ext_grs_mpq_init(); - - /* Init the union find structure used to represent the united nodes - * used by an implementation of Edmond's MDST-Algorithm used in this - * planning procedure. Nodes and united nodes are represented by - * node ids which are the elements of the union find structure */ - ext_grs_uf_init(act->max_node_aiid + 1); - - /* annotate the plan graph with edge costs due to the analysis - * results stored by the analyzer registered with the given - * planer */ - - - /* first phase of the MDST computation: contract the all circles in the - * plan graph to super nodes */ - - if(i == 0) - { - pat = act->pattern; - annotate_edge_costs(pat, _ext_grs_get_irg_private(irg), _get_irg_vs_stat(planer->analyzer, irg), 0); - phase = mdst_contraction_phase(pat, p); - } - else - { - pat = (ext_grs_graph_t *) lc_list_entry(neg_pattern, ext_grs_graph_t, negative_list); - annotate_edge_costs(pat, _ext_grs_get_irg_private(irg), _get_irg_vs_stat(planer->analyzer, irg), 1); - phase = mdst_contraction_phase(pat, p); - neg_pattern = neg_pattern->next; - } - - /* second phase of the MDST computation: expand the condensed super nodes - * and choose an appropriate entering edge of each super node expanded */ - mdst_expansion_phase(p); - - #ifdef EXT_GRS_DEBUG - { - /* dump the MDST */ - double c = 0; - int i; - printf("dump the MDST: name, aiid, acc_cost\n"); - for (i = 0; i <= act->max_edge_aiid; i++) - if (act->edges[i]) - if ( - (act->edges[i]->kind == ext_grs_k_edge && act->edges[i]->graph == pat) || - (act->edges[i]->kind == ext_grs_k_pseudo_edge && act->edges[i]->genuine_elem.val.e->graph == pat) - ) - if (p->chosen[ act->edges[i]->aiid ]) { - c += act->edges[i]->cost; - printf("edge %s, %d, %lf\n", act->edges[i]->name, act->edges[i]->aiid, c); - } - printf("\n"); - } - #endif - - /* The MDST is now computed (all edges with chosen[edge->id] != 0 belong - * to the MDST). Now the final plan generation can be done */ - - /* Compute search plans for positive and negative pattern */ - plan->length[i] = emit_plan(plan->progs[i], pat, p, phase); - } - return(plan); -} - - - - - - - - -/** yields an analyzer performing a v-structure statisitc */ -ext_grs_planer_t *ext_grs_get_vs_dmst_planer(void) -{ - ext_grs_planer_t *planer = malloc(sizeof(*planer)); - planer->data = malloc( sizeof(ext_grs_vs_dmst_planer_private_t) ); - planer->tag = "vs_dmst_planer"; - planer->init = init; - planer->compute_plan = compute_plan; - - return planer; -} diff --git a/ir/be/grgen/plan_vs_dmst.h b/ir/be/grgen/plan_vs_dmst.h deleted file mode 100644 index 5412533c8..000000000 --- a/ir/be/grgen/plan_vs_dmst.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef _EXT_GRS_PLAN_VS_DMST_H_ -#define _EXT_GRS_PLAN_VS_DMST_H_ - -/** yields an analyzer performing a v-structure statisitc */ -ext_grs_planer_t *ext_grs_get_vs_dmst_planer(void); - - -#endif /*_EXT_GRS_PLAN_VS_DMST_H_*/ diff --git a/ir/be/grgen/simd/C_Patterns/C_Patterns.c b/ir/be/grgen/simd/C_Patterns/C_Patterns.c deleted file mode 100644 index cb76c5aff..000000000 --- a/ir/be/grgen/simd/C_Patterns/C_Patterns.c +++ /dev/null @@ -1,352 +0,0 @@ -/***************************************************************************** - * Program: C_Patterns.c - * Function: C specification of complex operations for the simd optimization. - * The order in this file of the functions is IMPORTANT since an - * earlier defined function has a higher scheduling priority! - * Author: Andreas Schoesser - * Date: 2007-02-13 - *****************************************************************************/ - - -#include -#include "define_operation.h" - -typedef int sse_32_2; - -/* Vektor Load, 4 Komponents, single precision float */ -void vload_4f_32(void) -{ - float *param = Arg_0("vector", "memory", "gp"); - float *result = Res("vector", "register", "xmm"); - Emit(". movaps (%S0), %D0"); - Priority(0); - - result[0] = param[0]; - result[1] = param[1]; - result[2] = param[2]; - result[3] = param[3]; -} - - - -void vload_16b(void) -{ - unsigned char *param = Arg_0("vector", "memory", "gp"); - unsigned char *result = Res("vector", "register", "xmm"); - Emit(". lddqu (%S0), %D0"); - Priority(0); - CostSavings(10); - - result[0] = param[0]; - result[1] = param[1]; - result[2] = param[2]; - result[3] = param[3]; - result[4] = param[4]; - result[5] = param[5]; - result[6] = param[6]; - result[7] = param[7]; - result[8] = param[8]; - result[9] = param[9]; - result[10] = param[10]; - result[11] = param[11]; - result[12] = param[12]; - result[13] = param[13]; - result[14] = param[14]; - result[15] = param[15]; -} - - - -#if 0 -/* Vektor Load, 4 Komponents, 32 Bit integer */ -void vload_4_32(void) -{ - sse_32_2 *param = Arg_0("vector", "memory", "gp"); - sse_32_2 *result = Res("vector", "register", "xmm"); - Emit(". movdqu (%S0), %D0"); - Priority(0); - - result[0] = param[0]; - result[1] = param[1]; - result[2] = param[2]; - result[3] = param[3]; -} - - -void vload_2_32(void) -{ - sse_32_2 *param = Arg_0("vector", "memory", "gp"); - sse_32_2 *result = Res("vector", "register", "xmm"); - Emit(". movq (%S0), %D0"); - Priority(1); - - result[0] = param[0]; - result[1] = param[1]; -} - - -void vadd_2_32(void) -{ - sse_32_2 *param0 = Arg_0("vector", "register", "xmm"); - sse_32_2 *param1 = Arg_1("vector", "register", "xmm"); - sse_32_2 *result = Res("vector", "register", "in_r0"); - Emit(". paddd %S1, %S0"); - Priority(2); - - - result[0] = param0[0] + param1[0]; - result[1] = param0[1] + param1[1]; -} -#endif - -/** Register mode **/ -void mulps_4_32(void) -{ - float *param0 = Arg_0("vector", "register", "xmm"); - float *param1 = Arg_1("vector", "register", "xmm"); - float *result = Res("vector", "register", "in_r1"); - Emit(". mulps %S1, %S0"); - Priority(2); - - result[0] = param0[0] * param1[0]; - result[1] = param0[1] * param1[1]; - result[2] = param0[2] * param1[2]; - result[3] = param0[3] * param1[3]; -} - -/** Mem mode right **/ -void mulps_4_32_am(void) -{ - float *param0 = Arg_0("vector", "register", "xmm"); - float *param1 = Arg_1("vector", "memory", "gp"); - float *result = Res("vector", "register", "in_r1"); - Emit(". mulps %S1, %S0"); - Priority(0); - CostSavings(5); - - result[0] = param0[0] * param1[0]; - result[1] = param0[1] * param1[1]; - result[2] = param0[2] * param1[2]; - result[3] = param0[3] * param1[3]; -} - - - -void add_horz_4_32(void) -{ - float *param = Arg_0("vector", "register", "xmm"); - float *result = Res("vector", "register", "in_r1"); - Emit(". haddps %S0, %S0\\n. haddps %S0, %S0"); - Priority(2); - - result[0] = param[0] + param[1] + param[2] + param[3]; -} - - - /************************************************************************/ - /* */ - /************************************************************************/ - -void maxps(void) -{ - float *a = Arg_0("vector", "register", "xmm"); - float *b = Arg_1("vector", "register", "xmm"); - float *r = Res("vector", "register", "in_r1"); - Emit(". maxps %S1, %S0"); - Priority(2); - - if(a[0] < b[0]) - r[0] = b[0]; - else - r[0] = a[0]; - - if(a[1] < b[1]) - r[1] = b[1]; - else - r[1] = a[1]; - - if(a[2] < b[2]) - r[2] = b[2]; - else - r[2] = a[2]; - - if(a[3] < b[3]) - r[3] = b[3]; - else - r[3] = a[3]; -} - -void psadbw() -{ - unsigned char *a = Arg_0("vector", "register", "xmm"); - unsigned char *b = Arg_1("vector", "register", "xmm"); - unsigned int *r = Res("vector", "register", "in_r1"); - Emit(". psadbw %S1, %S0\\n. phaddd %S0, %S0\\n. phaddd %S0, %S0"); - Priority(2); - - r[0] = ((a[0] > b[0]) ? (a[0] - b[0]) : (b[0] - a[0])) + - ((a[1] > b[1]) ? (a[1] - b[1]) : (b[1] - a[1])) + - ((a[2] > b[2]) ? (a[2] - b[2]) : (b[2] - a[2])) + - ((a[3] > b[3]) ? (a[3] - b[3]) : (b[3] - a[3])) + - ((a[4] > b[4]) ? (a[4] - b[4]) : (b[4] - a[4])) + - ((a[5] > b[5]) ? (a[5] - b[5]) : (b[5] - a[5])) + - ((a[6] > b[6]) ? (a[6] - b[6]) : (b[6] - a[6])) + - ((a[7] > b[7]) ? (a[7] - b[7]) : (b[7] - a[7])) + - ((a[8] > b[8]) ? (a[8] - b[8]) : (b[8] - a[8])) + - ((a[9] > b[9]) ? (a[9] - b[9]) : (b[9] - a[9])) + - ((a[10] > b[10]) ? (a[10] - b[10]) : (b[10] - a[10])) + - ((a[11] > b[11]) ? (a[11] - b[11]) : (b[11] - a[11])) + - ((a[12] > b[12]) ? (a[12] - b[12]) : (b[12] - a[12])) + - ((a[13] > b[13]) ? (a[13] - b[13]) : (b[13] - a[13])) + - ((a[14] > b[14]) ? (a[14] - b[14]) : (b[14] - a[14])) + - ((a[15] > b[15]) ? (a[15] - b[15]) : (b[15] - a[15])); -} - -/*void sadps(void) -{ - float *a = Arg_0("vector", "register", "xmm"); - float *b = Arg_1("vector", "register", "xmm"); - float *r = Res("vector", "register", "in_r1"); - - r[0] = (a[0] - b[0]) + (a[1] - b[1]) + (a[2] - b[2]) + (a[3] - b[3]); - - -} */ - - -void vstore_4f(void) -{ - float *param = Arg_0("vector", "register", "xmm"); - float *result = Arg_1("vector", "memory", "gp"); - Emit(". movaps %S0, (%S1)"); - Priority(4); - - result[0] = param[0]; - result[1] = param[1]; - result[2] = param[2]; - result[3] = param[3]; -} - - - -#if 0 -/************************************************************************/ -/* vstore */ -/* Input: Vector register 1 v1, memory pointer p1 */ -/* Output: None. */ -/* Operation: Store the components of v1 at memory location p1. */ -/************************************************************************/ - -void vstore_4_32(void) -{ - sse_32_2 *param = Arg_0("vector", "register", "xmm"); - sse_32_2 *result = Arg_1("vector", "memory", "gp"); - Emit(". movq %S0, (%S1)"); - Priority(4); - - result[0] = param[0]; - result[1] = param[1]; - result[2] = param[2]; - result[3] = param[3]; -} - - -void vstore_2_32(void) -{ - sse_32_2 *param = Arg_0("vector", "register", "xmm"); - sse_32_2 *result = Arg_1("vector", "memory", "gp"); - Emit(". movq %S0, (%S1)"); - Priority(5); - - result[0] = param[0]; - result[1] = param[1]; -} - -#endif - -void component_0f(void) -{ - float *b = Arg_0("vector", "register", "xmm"); - float *r = Res("scalar", "register", "xmm"); - Priority(PRIORITY_CLEANUP); - Emit("");//. movd %S0, %D0"); - - *r = b[0]; -} - - - - -void component_0Iu(void) -{ - int *b = Arg_0("vector", "register", "xmm"); - int *r = Res("scalar", "register", "gp"); - Priority(PRIORITY_CLEANUP); - Emit(". movd %S0, %D0"); - - *r = b[0]; -} -#if 0 -void component_0(void) -{ - sse_32_2 *b = Arg_0("vector", "register", "xmm"); - sse_32_2 *r = Res("scalar", "register", "gp"); - Priority(PRIORITY_CLEANUP); - Emit(". movd %S0, %D0"); - - *r = b[0]; -} - -void component_1(void) -{ - sse_32_2 *b = Arg_0("vector", "register", "xmm"); - sse_32_2 *r = Res("scalar", "register", "gp"); - Destroys("in_r0"); - Priority(PRIORITY_CLEANUP); - Emit(". psrldq \\$4, %S0 \\n. movd %S0, %D0"); - - *r = b[1]; -} - -void component_2(void) -{ - sse_32_2 *b = Arg_0("vector", "register", "xmm"); - sse_32_2 *r = Res("scalar", "register", "gp"); - Destroys("in_r0"); - Priority(PRIORITY_CLEANUP); - Emit(". psrldq \\$8, %S0 \\n. movd %S0, %D0"); - - *r = b[2]; -} - -void component_3(void) -{ - sse_32_2 *b = Arg_0("vector", "register", "xmm"); - sse_32_2 *r = Res("scalar", "register", "gp"); - Destroys("in_r0"); - Priority(PRIORITY_CLEANUP); - Emit(". psrldq \\$12, %S0 \\n. movd %S0, %D0"); - - *r = b[3]; -} - - -/******************************** - * THIS IS SSE3! - ********************************/ - - -void packed_add_8_32(void) -{ - sse_32_2 *a = Arg_0("vector", "register", "xmm"); - sse_32_2 *b = Arg_1("vector", "register", "xmm"); - sse_32_2 *r = Res("vector", "register", "in_r0"); - Priority(3); - Emit(". haddps %S1, %S0"); - - r[0] = a[0] + a[1]; - r[1] = a[2] + b[3]; - r[2] = b[0] + b[1]; - r[3] = b[2] + b[3]; -} -#endif diff --git a/ir/be/grgen/simd/C_Patterns/Firm.gm b/ir/be/grgen/simd/C_Patterns/Firm.gm deleted file mode 100644 index 860501482..000000000 --- a/ir/be/grgen/simd/C_Patterns/Firm.gm +++ /dev/null @@ -1,462 +0,0 @@ -/* - * Project: GRS - * File name: Firm.gm - * Purpose: A specification of Firm for use with GrGen - * Author: Rubino Geiss - * Mowified by: - * Created: 10.9.2003 - * Copyright: (c) 2004 Universitaet Karlsruhe - * Licence: GPL - */ - -model Firm; - -node class FIRM_node extends Node { - generation: int; -} - -edge class FIRM_edge extends Edge { - generation: int; - pos: int; -} - -/********************************************** - * Modes * - **********************************************/ - -enum ENUM_sort { - auxiliary, control_flow, memory, internal_boolean, - int_number, float_number, reference, character -} -enum ENUM_arithmetic_kind { - uninitialized, none, twos_complement, ones_complement, - int_BCD, ieee754, float_BCD, max, unknown -} -enum ENUM_modecode { - irm_BB, irm_X, irm_F, irm_D, irm_E, irm_Bs, - irm_Bu, irm_Hs, irm_Hu, irm_Is, irm_Iu, irm_Ls, - irm_Lu, irm_C, irm_P, irm_b, irm_M, irm_T, - irm_U, irm_ANY, irm_BAD, irm_max -} - -node class Mode extends FIRM_node { - name : string; - size : int; - sort : ENUM_sort; -/* code : ENUM_modecode; */ - sign : boolean; - arithmetic : ENUM_arithmetic_kind; - shift : int; -} - - -node class Mode_BB extends Mode; -node class Mode_X extends Mode; -node class Mode_F extends Mode; -node class Mode_D extends Mode; -node class Mode_E extends Mode; -node class Mode_Bs extends Mode; -node class Mode_Bu extends Mode; -node class Mode_Hs extends Mode; -node class Mode_Hu extends Mode; -node class Mode_Is extends Mode; -node class Mode_Iu extends Mode; -node class Mode_Ls extends Mode; -node class Mode_Lu extends Mode; -node class Mode_C extends Mode; -node class Mode_P extends Mode; -node class Mode_b extends Mode; -node class Mode_M extends Mode; -node class Mode_T extends Mode; -node class Mode_U extends Mode; -node class Mode_ANY extends Mode; -node class Mode_BAD extends Mode; -node class Mode_max extends Mode; -node class Mode_DLu extends Mode; -node class Mode_LLu extends Mode; - - - -/********************************************** - * Types * - **********************************************/ - -enum ENUM_state { layout_undefined, layout_fixed } - -/************* Type Nodes *************/ - -node class Type extends FIRM_node { - id : int; - name : string; - state : ENUM_state; - size : int; - align : int; -} - -node class Compound extends Type; -node class Class extends Compound; -node class Struct extends Compound; -node class Union extends Compound; -node class Method extends Type { - n_params : int; // number of calling paramters - n_ress : int; // number of results - variadic : boolean; // true: additional variadic parameters allowed -} -node class Array extends Type { - n_dimensions : int; -} -node class Enum extends Type; -node class Pointer extends Type; -node class Primitive extends Type; - -/************* Type Edges *************/ - -// Class (Sub) -> Class (Super) -edge class is_subtype_of extends FIRM_edge - connect Class [*] -> Class [*]; // Subclass -> Superclass -edge class member extends FIRM_edge - // Entities may or may not be an Compound member: [0:1] - connect Compound [*] -> Entity [0:1]; -edge class parameter extends FIRM_edge - connect Method [*] -> Type [*] { - position : int; -} -edge class result extends FIRM_edge - connect Method [*] -> Type [*] { - position : int; -} -edge class element_type extends FIRM_edge - connect Array [1] -> Type [*]; -edge class element_ent extends FIRM_edge - connect Array [1] -> Entity [*]; - - -/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - TODO XXX const_code_irg is not walked by wif.do_block - TODO: Implement upper / lower in firm2grs.c - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - */ -edge class lower extends FIRM_edge // TODO: multidim arrays??? - connect Array [*] -> IR_node [*] { - position : int; -} -edge class upper extends FIRM_edge - connect Array [*] -> IR_node [*] { - position : int; -} - -edge class named_value extends FIRM_edge // Enum -> Tarval - connect Enum [*] -> Tarval [*] { // TODO: empty Enums [+]??? - name : string; -} -edge class has_type extends FIRM_edge - connect Call [1] -> Type [*], - SymConst [0:1] -> Type [*], - Pointer [1] -> Type [*]; - - -/********************************************** - * Tarval * - **********************************************/ - -node class Tarval extends FIRM_node { - value : string; // is this aprobate -} - -edge class has_mode extends FIRM_edge - connect Tarval [1] -> Mode [*], - Pointer [1] -> Mode [*], - Primitive [1] -> Mode [*], - Method [1] -> Mode [*], - IR_node [1] -> Mode [*], - Struct [0:1]->Mode [*], - Enum [1] -> Mode [*]; -edge class has_entity extends FIRM_edge - connect SymConst[0:1] -> Entity [*]; - - -/********************************************** - * Entities * - **********************************************/ - -enum ENUM_allocation { automatic, parameter, dynamic, static } -enum ENUM_visibility { local, global, extern } -enum ENUM_variability { uninitialized, initialized, partly_constant, constant } -enum ENUM_peculiarity { description, inherited, existent } - -/************* Entity Nodes *************/ - -node class Entity extends FIRM_node { - name : string; // the (source) name of the entity - ld_name : string; // the linker name of the entity - offset : int; - allocation : ENUM_allocation; - visibility : ENUM_visibility; - variability : ENUM_variability; - peculiarity : ENUM_peculiarity; - volatility : boolean; -} - -/************* Entity Edges *************/ - -edge class overwrites extends FIRM_edge - connect Entity -> Entity; // TODO arity ??? - -edge class init_node extends FIRM_edge; -// connect Entity -> Node (of Init); // TODO arity ??? - -edge class init_entity extends FIRM_edge; -// connect Entity -> Entity (of Init); // TODO arity ??? - -edge class graph extends FIRM_edge - connect Entity [0:1] -> Method_IRG [*]; - -edge class type extends FIRM_edge - connect Entity [1] -> Type [*]; - - -/********************************************** - * Method IRG * - **********************************************/ - -/* - * Firm IRG the IR graph of a method. - * Pointing to Start and End nodes as well as its Entity - */ -node class Method_IRG extends FIRM_node { - main_method : boolean; // set, if this method is the main entry point -} - -edge class meth_start extends FIRM_edge - connect Method_IRG -> Start; - -edge class meth_end extends FIRM_edge - connect Method_IRG -> End; - -edge class frame_type extends FIRM_edge - connect Method_IRG -> Type; - -edge class belong_to extends FIRM_edge - connect Block -> Method_IRG; - -node class IR_node extends FIRM_node { - index : int; //quickfix for using vprojs -} - - -node class Ordinary; -node class Special; -node class Arithmetic extends Ordinary; -node class Controlflow; -node class Memory; - -node class Unary; -node class Binary; -node class Trinary; -node class Nary; - -node class Commutative; -node class Associative; - - -/********************************************** - * IR Nodes * - **********************************************/ - -node class Complex extends IR_node; -node class Block extends IR_node, Special; -node class Start extends IR_node, Special; -node class End extends IR_node, Special; - -node class Jmp extends IR_node, Controlflow; -node class Cond extends IR_node, Controlflow, Ordinary; -node class Return extends IR_node, Controlflow; -node class Raise extends IR_node, Controlflow; - -node class Const extends IR_node, Ordinary { - value : string; // tarval coded as string -} -node class IntConst extends Const { - // ATTENTION: - // value inherited from Const is set to "" and may not be used - intval : int; // tarval coded as string -} - -node class SymConst extends IR_node, Ordinary { - kind : int; - ptrinfo : string; -} - -node class Sel extends IR_node, VectorBase; -node class InstOf extends IR_node; -node class Call extends IR_node; -node class Add extends IR_node, Arithmetic, Binary, Commutative; -node class Sub extends IR_node, Arithmetic, Binary; -node class Minus extends IR_node, Arithmetic, Unary; -node class Mul extends IR_node, Arithmetic, Binary, Commutative; -node class Mulh extends IR_node, Arithmetic, Binary, Commutative; -node class Quot extends IR_node, Arithmetic, Binary; -node class DivMod extends IR_node, Arithmetic, Binary; -node class Div extends IR_node, Arithmetic, Binary; -node class Mod extends IR_node, Arithmetic, Binary; -node class Abs extends IR_node, Arithmetic, Unary; -node class And extends IR_node, Arithmetic, Binary, Commutative; -node class Or extends IR_node, Arithmetic, Binary, Commutative; -node class Eor extends IR_node, Arithmetic, Binary, Commutative; -node class Not extends IR_node, Arithmetic, Unary; -node class Cmp extends IR_node, Ordinary; -node class Shl extends IR_node, Arithmetic, Binary; -node class Shr extends IR_node, Arithmetic, Binary; -node class Shrs extends IR_node, Arithmetic, Binary; -node class Rot extends IR_node, Arithmetic, Binary; -node class Conv extends IR_node, Ordinary; -node class Cast extends IR_node; // TODO classify -node class Phi extends IR_node, Ordinary; -node class Mux extends IR_node, Trinary; // TODO classify - -node class MemNode extends IR_node, Memory { - volatility : boolean; -} - -node class Load extends MemNode; -node class Store extends MemNode; - -enum ENUM_alloc_where { stack_alloc, heap_alloc } - -node class Alloc extends IR_node, Memory { - where : ENUM_alloc_where; -} -node class Free extends IR_node, Memory; -node class Sync extends IR_node, Memory { - arity : int; -} - -node class SyncArity2 extends Sync;// A sync with arity 2, that has a wrong arity attribute -node class IgnoreCF; // it is not important to which block this node is connected - -node class Proj extends IR_node, Ordinary, VectorBase { - proj : int; -} - -// TODO classify the following IR_nodes -node class Tuple extends IR_node; -node class Id extends IR_node; -node class Bad extends IR_node; -node class NoMem extends IR_node; -node class Confirm extends IR_node; -node class Unknown extends IR_node; -node class Filter extends IR_node; -node class Break extends IR_node, Controlflow; -node class CallBegin extends IR_node; -node class EndReg extends IR_node; -node class EndExcept extends IR_node, Controlflow; - -/********************************************** - * IR Intrinsic Nodes * - **********************************************/ -node class Intrinsic extends IR_node, Ordinary -{ - type : string; -} - -node class IntrinsicGP extends Intrinsic; // a intrinsic with gp registers -node class IntrinsicGP3 extends Intrinsic; // a intrinsic with 3 gp registers -node class IntrinsicFP extends Intrinsic; // a intrinsic with fp registers -node class IntrinsicMMX extends Intrinsic; // a intrinsic with mmx registers -node class IntrinsicSSE extends Intrinsic; // a intrinsic with sse registers - -node class Intrinsic_sse_sse_sse extends Intrinsic; // a intrinsic -node class Intrinsic_sse_sse extends Intrinsic; // a intrinsic -node class Intrinsic_sse_addr_sse extends Intrinsic; // a intrinsic -node class Intrinsic_addr_sse_store extends Intrinsic; // a intrinsic -node class Intrinsic_reg_sse_sse extends Intrinsic; // a intrinsic -node class Intrinsic_sse_reg_sse extends Intrinsic; // a intrinsic -node class Intrinsic_sse_addr_store extends Intrinsic; // a intrinsic -node class Intrinsic_addr_addr_store extends Intrinsic; // a intrinsic -node class Intrinsic_addr_sse extends Intrinsic; // a intrinsic -node class Intrinsic_addr_addr_sse extends Intrinsic; // a intrinsic - -node class max extends IntrinsicGP; // a max instruction -node class min extends IntrinsicGP; // a min instruction - -node class CMOV extends IntrinsicGP; // a conditional move instruction - -node class CCopy extends IntrinsicGP; // a conditional copy instruction - // CCopy(val0:df, val1:df, cond:bool):df - - -node class Match; -node class IntrinsicMatch extends Match{ - name : string; -} - - -/************* IR Edges *************/ - -edge class flow extends FIRM_edge - connect IR_node [*] -> IR_node [*] { - position : int; -} - -edge class df extends flow; // IR_node -> IR_node, data flow -edge class mem extends df; // IR_node -> IR_node, memory -edge class tuple extends df; // Edges of Mode Tuple -edge class cf extends flow // control flow - connect IR_node [1] -> Block [*], - // We cannot distinguish ProjI etc from ProjXi: therefor 0 - // ProjX form Start has 2 successors - Block [*] -> Proj [0:2]; - - -/********************************************** - * Extensions * - **********************************************/ - -node class Vector extends IR_node; - -node class V2 extends Vector; -node class V4 extends Vector; - -node class pi; - -node class V2pi_1 extends V2, pi; -node class V2pi_2 extends V2, pi; - -node class V4pi_1 extends V4, pi; -node class V4pi_2 extends V4, pi; -node class V4pi_3 extends V4, pi; -node class V4pi_4 extends V4, pi; - -node class V2Load extends V2; -node class V2Store extends V2; - -node class V2Sub extends V2; - -edge class match { - nr : int; -} - -node class StartBlock; - - -/****************** - * SIMD Extension * - ******************/ - -//select parts of a register (e.g. 32 bit of a 128 bit register) -node class VProj extends IR_node, Ordinary -{ - proj : int; -} - -// Add wich can have several operands -node class MultipleAdd extends IR_node -{ - arity: int; -} - -// A node which represents the base pointer of a vector -node class VectorBase extends IR_node; - -// A backend node we need to copy simd -> gp register on ia32 -node class IR_Keep extends IR_node; diff --git a/ir/be/grgen/simd/C_Patterns/define_operation.h b/ir/be/grgen/simd/C_Patterns/define_operation.h deleted file mode 100644 index a4d46fafd..000000000 --- a/ir/be/grgen/simd/C_Patterns/define_operation.h +++ /dev/null @@ -1,10 +0,0 @@ -void *Arg_0(char *vec_or_scalar, char *memory_or_register, char *register_class); -void *Arg_1(char *vec_or_scalar, char *memory_or_register, char *register_class); -void *Arg_2(char *vec_or_scalar, char *memory_or_register, char *register_class); -void *Res(char *vec_or_scalar, char *memory_or_register, char *register_class); -void Emit(char *emit_statement); -void Destroys(char *destroyd_register); -void Priority(int prio1, ...); -void CostSavings(int prio1, ...); - -#define PRIORITY_CLEANUP 10000 diff --git a/ir/be/grgen/simd/be_spec_dumper.c b/ir/be/grgen/simd/be_spec_dumper.c deleted file mode 100644 index 2e52e709e..000000000 --- a/ir/be/grgen/simd/be_spec_dumper.c +++ /dev/null @@ -1,125 +0,0 @@ -/*************************************************************************** -* Program: be_spec_dumper.c -* Function: Generates and dumps the specification for the ia32 backend -* for each generated pattern. -* Depends on: Needs the analysis info generated by the pattern creator -* Author: Andreas Schoesser -* Date: 2007-03-02 -***************************************************************************/ - - -// ---------------------------- INCLUDES -------------------------------- - -#include -#include -#include -#include - -#include "simd_presets.h" - -#include "irgraph.h" -#include "pmap.h" - -#include "create_pattern_t.h" -#include "be_spec_dumper.h" - - - - -/************************************************************************ - * Inits the backend specification dumper - * Generates a new file and with a header - * Returns: a be_spec_env_t structure which has to be passed to all - * spec_dumper functions - ************************************************************************/ - -be_spec_env_t *init_be_spec() -{ - be_spec_env_t *be_spec_env = malloc(sizeof(be_spec_env_t)); - FILE *fp = fopen(BE_SPEC_FILE, "wt"); - - fprintf(fp, "# This file is generated! Do not edit, your changes will be lost!\n"); - fprintf(fp, "# ___ _____ _____ _ _\n"); - fprintf(fp, "# / ___/ ___|| ____| __ _____ ___| |_ ___ _ __ _ __ ___ __| | ___ ___\n"); - fprintf(fp, "# \\___ \\___ \\| _| \\ \\ / / _ \\/ __| __/ _ \\| '__| | '_ \\ / _ \\ / _` |/ _ \\/ __|\n"); - fprintf(fp, "# ___) |__) | |___ \\ V / __/ (__| || (_) | | | | | | (_) | (_| | __/\\__ \\\n"); - fprintf(fp, "# |____/____/|_____| \\_/ \\___|\\___|\\__\\___/|_| |_| |_|\\___/ \\__,_|\\___||___/\n\n"); - - be_spec_env -> output_file = fp; - return(be_spec_env); -} - - - - -/************************************************************************ - * Dumps the backend specification of a rich instruction depending - * on the analysis information of the pattern creator - ************************************************************************/ - -void dump_be_spec(be_spec_env_t *be_spec_env, graph_ana_info_t *graph_ana_info, int uses_memory) -{ - argument_descr_t *arguments[MAX_SIMD_ARGUMENTS + 2]; - pmap_entry *entry, *entry2; - int max_argument = -1000, i; - char irg_name[255]; - int mem_slot = (uses_memory) ? 1 : 0; - FILE *fp = be_spec_env->output_file; - - // Order the arguments according to their arg_nr - memset(arguments, 0, sizeof(arguments)); - pmap_foreach(graph_ana_info->argument_nodes, entry) - { - argument_descr_t *argument = entry->value; - - if(argument->arg_nr > -2) - { - assert(argument->arg_nr + 1 < MAX_SIMD_ARGUMENTS + 1); - arguments[argument->arg_nr + 1] = argument; - if(argument->arg_nr + 1 > max_argument) - max_argument = argument->arg_nr + 1; - } - - } - - get_rule_name(graph_ana_info, irg_name); - fprintf(fp, "$nodes{\"%s\"} = {\n", irg_name); - - // Dump the in-register requirements - fprintf(fp, " \"reg_req\" => { \"in\" => [ "); - for(i = 1; i <= max_argument; i++) - fprintf(fp, "\"%s\", ", arguments[i]->register_class); - if(uses_memory) - fprintf(fp, "\"none\", "); - - // Dump the out-register requirements - fprintf(fp, "], \"out\" => [ "); - if(arguments[0] != NULL) // The result data - fprintf(fp, "\"%s\", ", arguments[0]->register_class); - if(uses_memory) // The memory out - fprintf(fp, "\"none\", "); - pmap_foreach(graph_ana_info->destroyed_regs, entry2) - { - char *destroyed_reg = (char *) entry2->value; - fprintf(fp, "\"%s\", ", destroyed_reg); - } - fprintf(fp, "] }, \n"); - - // Dump the emittment - fprintf(fp, " \"emit\" => \"%s\",\n", graph_ana_info->emit_statement); - - fprintf(fp, "};\n\n"); -} - - - - -/************************************************************************ - * Frees information allocated by the backend specification dumper - ************************************************************************/ - -void deinit_be_spec(be_spec_env_t *be_spec_env) -{ - fclose(be_spec_env->output_file); - free(be_spec_env); -} diff --git a/ir/be/grgen/simd/be_spec_dumper.h b/ir/be/grgen/simd/be_spec_dumper.h deleted file mode 100644 index 810ca0681..000000000 --- a/ir/be/grgen/simd/be_spec_dumper.h +++ /dev/null @@ -1,23 +0,0 @@ -/************************************************************************* -* Program: be_spec_dumper.c -* Function: Generates and dumps the specification for the ia32 backend -* for each generated pattern. -* Author: Andreas Schoesser -* Date: 2007-03-02 -*************************************************************************/ - -#ifndef __BE_SPEC_DUMPER__ -#define __BE_SPEC_DUMPER__ - - -typedef struct // Holds the environment used by the backend specification dumper -{ - FILE *output_file; // The file the backend specification is written to -} be_spec_env_t; - - -be_spec_env_t *init_be_spec(); -void dump_be_spec(be_spec_env_t *be_spec_env, graph_ana_info_t *graph_ana_info, int uses_memorys); -void deinit_be_spec(be_spec_env_t *be_spec_env); - -#endif diff --git a/ir/be/grgen/simd/create_pattern.c b/ir/be/grgen/simd/create_pattern.c deleted file mode 100644 index c08a3c741..000000000 --- a/ir/be/grgen/simd/create_pattern.c +++ /dev/null @@ -1,894 +0,0 @@ -/*************************************************************************** - * Program: create_pattern.c - * Function: Transforms the given ir_graph into the pattern (search) graph. - * Extracts nodes to be dumped by the grgen_dumper and other - * information into a graph_ana structure. - * Author: Andreas Schoesser - * Date: 2006-12-07 - ***************************************************************************/ - -#include -#include -#include -#include -#include - -#include "simd_presets.h" - -#include "obstack.h" -#include "pmap.h" -#include "irgmod.h" -#include "irprog_t.h" -#include "irdump.h" -#include "iredges.h" -#include "irgopt.h" -#include "irgwalk.h" -#include "iroptimize.h" -#include "tv.h" -#include "irtools.h" - -#include "simd_presets.h" -#include "firm_node_ext.h" -#include "create_pattern_t.h" -#include "grgen_dumper.h" -#include "be_spec_dumper.h" -#include "normalize.h" -#include "rule_info_dumper.h" - - - -/************************************************************************ - * Generates pattern for one given function - * representing the C-specification of a complex instruction - ************************************************************************/ - -void ext_grs_create_pattern() { - graph_ana_info_t graph_ana_info; - char c, grgen_commandline[1000] = ""; - int i, variants, rule_nr = 0; - struct obstack obst; // General obst for objects generated during analysis - int last_priority = 0; - - // Environments of the used modules - be_spec_env_t *be_spec_env; - grgen_dumper_env_t *grgen_dumper_env; - rule_info_env_t *rule_info_env; - - clock_t start_time, end_time; - - #ifdef DUMP_EVERYTHING - for(i = 0; i < get_irp_n_irgs(); i++) - { - char filename[1000]; - sprintf(filename, "%s.grg", get_entity_name(get_irg_entity(irg))); - dump_irgraph_complete_grgen(get_irp_irg(i), filename, 0); - } - return; - #endif - - // Generate Header of rule pointers file - rule_info_env = init_rule_info_dumper(get_irp_n_irgs() * MAX_ADDRESS_VARIANTS); - be_spec_env = init_be_spec(); - grgen_dumper_env = init_grgen_dumper(GRGEN_GRAPH_FILE, 0); - - // Create VProj FIRM nodes etc. - ext_firm_nodes(); - - start_time = clock(); - for(i = 0; i < get_irp_n_irgs(); i++) - { - struct pmap *nodes_to_dump = pmap_create(); // Saves all nodes that have to be dumped after analysis - struct pmap *register_access = pmap_create(); // Saves LOAD and STORE nodes that access registers instead of memory, - // along with their array index. - struct pmap *memory_access = pmap_create(); // Saves LOAD and STORE nodes that access memory along - struct pmap *argument_nodes = pmap_create(); // Saves nodes that deliver pointers for memory access - - obstack_init(&obst); - - // Init the walker_info structure, which contains data needed or filled during - // the analysis of the graph - graph_ana_info.irg = get_irp_irg(i); - graph_ana_info.nodes_to_dump = nodes_to_dump; - graph_ana_info.register_access = register_access; - graph_ana_info.memory_access = memory_access; - graph_ana_info.argument_nodes = argument_nodes; - graph_ana_info.destroyed_regs = pmap_create(); - graph_ana_info.obst = &obst; - graph_ana_info.num_simd_arguments = 0; - graph_ana_info.complex_operation_block = NULL; - graph_ana_info.node_to_match_block = NULL; - graph_ana_info.emit_statement = NULL; - graph_ana_info.has_result = 0; - graph_ana_info.variant_nr = 0; - graph_ana_info.priority = last_priority; // Maybe the user did not specify a priority in this pattern. Use the last priority then. - graph_ana_info.cost_savings = 3; - graph_ana_info.dump_everything = 0; - - printf("*** %s ***:\n", get_entity_name(get_irg_entity(graph_ana_info.irg))); - - // Dump the graph before we change anything - dump_ir_block_graph(graph_ana_info.irg, "-pre-create-pattern"); - - // Normalize the Address calculation for LOADs and STOREs - set_irg_memory_disambiguator_options(graph_ana_info.irg, aa_opt_no_alias); - optimize_load_store(graph_ana_info.irg); - remove_critical_cf_edges(graph_ana_info.irg); - normalize_address_calculation(graph_ana_info.irg, 0); - - - // Dump the graph before we change anything - dump_ir_block_graph(graph_ana_info.irg, "-post-norm-pattern"); - - - // Analyze graph - irg_walk_graph(graph_ana_info.irg, walk_pre, walk_post, &graph_ana_info); - if(graph_ana_info.emit_statement == NULL) - assert(0 && "No emit statement given!"); - - edges_activate(graph_ana_info.irg); - for(variants = 0; variants < MAX_ADDRESS_VARIANTS; variants++) - { - int uses_memory; // TODO: Maybe find the out during analysis. - - // Dump rule information - dump_rule_info(rule_info_env, &graph_ana_info, graph_ana_info.num_simd_arguments); - rule_nr++; - - // Dump graph (that is pattern) in grGen format - uses_memory = dump_irgraph_grgen(grgen_dumper_env, &graph_ana_info); - - // Dump the backend specification - dump_be_spec(be_spec_env, &graph_ana_info, uses_memory); - - // Add an address variant - if(variants < MAX_ADDRESS_VARIANTS - 1) - { - if(!add_address_variant(&graph_ana_info)) - break; - graph_ana_info.variant_nr++; - } - } - - // New code placement - // set_opt_global_cse(1); - // optimize_graph_df(walker_info.irg); - // place_code(walker_info.irg); - // set_opt_global_cse(0); - - // Dump graph in .vcg format - dump_ir_block_graph(graph_ana_info.irg, "-post-create-pattern"); - - //dump_type_graph (walker_info.irg, "-TYPES"); - - // Clean up - pmap_destroy(nodes_to_dump); - pmap_destroy(register_access); - pmap_destroy(argument_nodes); - pmap_destroy(memory_access); - pmap_destroy(graph_ana_info.destroyed_regs); - - obstack_free(&obst, NULL); - obstack_finish(&obst); - printf("\n"); - - last_priority = graph_ana_info.priority; - } - - deinit_rule_info_dumper(rule_info_env); - deinit_grgen_dumper(grgen_dumper_env); - deinit_be_spec(be_spec_env); - end_time = clock(); - - printf("*******************************\n* Pattern Creation Statistics *\n*******************************\n\n"); - - printf("Time elapsed: %g s\n", ((double) (end_time - start_time)) / CLOCKS_PER_SEC); - printf("Rules created: %d\n", rule_nr); - - printf("\n\n ** Finished pattern creation **\n\n"); - - printf("Run grGen now? (Y/N) "); - c = getchar(); - if(c == 'y' || c == 'Y') - run_grgen(); -} - - - -/************************************************************************ - * Build a command line in order to run grgen - * Parameters for the GrGen call are globally set in simd_presets.h - ************************************************************************/ - -static void run_grgen() -{ - char grgen_commandline[1000]; - - strcpy(grgen_commandline, "java -classpath \""); - strcat(grgen_commandline, GRGEN_LOCATION); - strcat(grgen_commandline, "grgen.jar;"); - strcat(grgen_commandline, GRGEN_LOCATION); - strcat(grgen_commandline, "jars/jargs.jar;"); - strcat(grgen_commandline, GRGEN_LOCATION); - strcat(grgen_commandline, "jars/antlr.jar\" de.unika.ipd.grgen.Main -n -j -i -b de.unika.ipd.grgen.be.C.SearchPlanBackend -o \""); - strcat(grgen_commandline, GENERATION_DEST); - strcat(grgen_commandline, "\" \""); - strcat(grgen_commandline, GRGEN_GRAPH_FILE); - strcat(grgen_commandline, "\""); - - printf("%s\n", grgen_commandline); - - // Call grGen to create C source for searching the pattern - system(grgen_commandline); -} - - - -/* _ _ _ - __ _ _ __ __ _ _ __ | |__ __ _ _ __ __ _| |_ _ ___(_)___ - / _` | '__/ _` | '_ \| '_ \ / _` | '_ \ / _` | | | | / __| / __| -| (_| | | | (_| | |_) | | | | | (_| | | | | (_| | | |_| \__ \ \__ \ - \__, |_| \__,_| .__/|_| |_| \__,_|_| |_|\__,_|_|\__, |___/_|___/ - |___/ |_| |___/ */ - - - -/************************************************************************ - * Analyze LOAD and STORE nodes, mark nodes for dumping - ************************************************************************/ - -static void walk_pre(ir_node *n, void * env) -{ - graph_ana_info_t *graph_ana_info = (graph_ana_info_t *) env; - struct pmap *nodes_to_dump = graph_ana_info->nodes_to_dump; - struct pmap *register_access = graph_ana_info->register_access; - struct pmap *memory_access = graph_ana_info->memory_access; - struct pmap *argument_nodes = graph_ana_info->argument_nodes; - - ir_graph *host_irg = graph_ana_info->irg; - //nodes_list_t *node_to_dump; - - // **** Special case: We have a Store Node - if(get_irn_opcode(n) == iro_Store) - { - ir_node *call_node = NULL, *add_node = NULL, *pointer_root = NULL; - unsigned int array_index = 0; - - call_node = search_call(n, &array_index, &add_node, &pointer_root); - if(is_memory_access(call_node)) - { - memory_access_descr_t *memory_access_descr = obstack_alloc(graph_ana_info->obst, sizeof(memory_access_descr_t)); - - // Operations on memory vectors HAVE to access the vector index 0! - if(array_index == 0) - mark_argument_node(graph_ana_info, call_node, pointer_root, add_node); - - // Memory STORE, nothing has to be done - memory_access_descr->load_store = MEMORY_STORE; - memory_access_descr->array_index = array_index; - pmap_insert(memory_access, n, (void *) memory_access_descr); - } - else - { - register_access_descr_t *register_access_descr = obstack_alloc(graph_ana_info->obst, sizeof(register_access_descr_t)); - - // Store information about the argument node - mark_argument_node(graph_ana_info, call_node, pointer_root, add_node); - - // Fill the register access descriptor - register_access_descr -> array_index = array_index; - register_access_descr -> load_store = REGISTER_STORE; - register_access_descr -> replace_node_name = NULL; - register_access_descr -> pointer_base = pointer_root; - - // Mark the predecessor of the store node as the result to be stored in a register - if(get_irn_opcode(get_irn_n(n, 2)) == iro_Conv) - { - /* Hack */ - ir_node *conv = get_irn_n(n, 2); - exchange(conv, get_irn_n(conv, 0)); - } - - pmap_insert(register_access, get_irn_n(n, 2), (void *) register_access_descr); - - // Prevent the Address of the STORE node to be dumped. - set_irn_visited(get_irn_n(n, 1), get_irg_visited(get_irn_irg(n))); - - // Don't dump the STORE NODE - return; - } - } - - - // **** Special case: We have a Load node - if(get_irn_opcode(n) == iro_Load) - { - ir_node *call_node = NULL, *add_node = NULL, *pointer_root = NULL; - unsigned int array_index = 0; - - // kill_mem_pred(n); - call_node = search_call(n, &array_index, &add_node, &pointer_root); - - if(is_memory_access(call_node)) - { - memory_access_descr_t *memory_access_descr = obstack_alloc(graph_ana_info->obst, sizeof(memory_access_descr_t)); - - // Operations on memory vectors HAVE to access the vector index 0! - if(array_index == 0) - mark_argument_node(graph_ana_info, call_node, pointer_root, add_node); - - // Memory access, nothing has to be done - - memory_access_descr->load_store = MEMORY_LOAD; - memory_access_descr->array_index = array_index; - pmap_insert(memory_access, n, (void *) memory_access_descr); - } - else - { - // Register access, save information about this load - register_access_descr_t *register_access_descr = obstack_alloc(graph_ana_info->obst, sizeof(register_access_descr_t)); - - mark_argument_node(graph_ana_info, call_node, pointer_root, add_node); - - // Fill the register access descriptor - register_access_descr->load_store = REGISTER_LOAD; - register_access_descr->array_index = array_index; - register_access_descr -> replace_node_name = NULL; - register_access_descr -> pointer_base = pointer_root; - - // Mark this LOAD node, which has to be exchanged by a VProj node - pmap_insert(register_access, n, (void *) (register_access_descr)); - - if(add_node != NULL) - set_irn_visited(add_node, get_irg_visited(get_irn_irg(add_node))); - - pmap_insert(nodes_to_dump, pointer_root, NULL); // TODO: If the value is already there, will it be overwritten? - - // Don't dump this LOAD node. - return; - } - } - - // Mark the current node for Dumping - switch(get_irn_opcode(n)) - { - - case iro_Call: - search_emit_statement(n, graph_ana_info); - break; - case iro_End: //We match also the end node. - case iro_Start: - case iro_Return: - case iro_Block: - case iro_SymConst: - //case iro_Jmp: - case iro_Sync: - case iro_Bad: - break; - - case iro_Phi: - if(get_irn_modecode(n) != irm_M) - mark_node_for_dumping(n, graph_ana_info); - break; - - case iro_Proj: - // Proj's beyond LOADs and STOREs will be dumped in walk-post method - // to be sure that all information about the LOAD and STORE has been already computed. - if(get_irn_opcode(get_irn_n(n, 0)) == iro_Load || get_irn_opcode(get_irn_n(n, 0)) == iro_Store) - break; - if(get_irn_opcode(get_irn_n(n, 0)) == iro_Call || get_irn_opcode(get_irn_n(n, 0)) == iro_Start) - break; - if(get_irn_modecode(n) == irm_X && get_irg_start_block(graph_ana_info->irg) == get_nodes_block(n)) // We don't need the initial ProjX - break; // TODO: This is only valid of only one block is there!!! - - // Else Fall through - - default: - mark_node_for_dumping(n, graph_ana_info); - break; - } -} - - - -/************************************************************************ - * Take special care of Proj nodes beyond LOAD and STORE - * Here we can be sure that the LOAD or STORE node has already been - * analyzed. - ************************************************************************/ - -static void walk_post(ir_node *n, void * env) -{ - graph_ana_info_t *graph_ana_info = (graph_ana_info_t *) env; - struct pmap *nodes_to_dump = graph_ana_info->nodes_to_dump; - struct pmap *register_access = graph_ana_info->register_access; - struct pmap *memory_access = graph_ana_info->memory_access; - ir_graph *host_irg = graph_ana_info->irg; - - if(get_irn_opcode(n) == iro_Proj) - { - ir_node *proj_pred = get_irn_n(n, 0); - - - if(get_irn_opcode(proj_pred) == iro_Store) - { - ir_mode *store_mode = get_irn_mode(get_Store_value(proj_pred)); - - if(pmap_contains(memory_access, proj_pred)) - { - memory_access_descr_t *memory_access_descr = pmap_get(memory_access, proj_pred); - memory_access_descr->projm = n; - memory_access_descr->array_index /= get_mode_size_bytes(store_mode); - - printf("MEMORY STORE at array index %d\n", memory_access_descr->array_index); - - // Mark the current proj for dumping. - mark_node_for_dumping(n, graph_ana_info); - //pmap_insert(memory_access, n, memory_access_descr); - } - else - { - // Adapt array index - register_access_descr_t *register_access_descr = pmap_get(register_access, get_Store_value(proj_pred)); - register_access_descr->array_index /= get_mode_size_bytes(store_mode); - printf("REGISTER STORE at array index %d\n", register_access_descr->array_index); - // Register STORE, don't dump it's ProjM - return; - } - } - - if(get_irn_opcode(proj_pred) == iro_Load) - { - ir_mode *load_mode = get_irn_mode(n); - - if(pmap_contains(register_access, proj_pred)) - { - // Register LOAD: Take special care of proj's - - - if(get_irn_modecode(n) != irm_M) - { - ir_node *vproj_node; - register_access_descr_t *register_access_descr = pmap_get(register_access, proj_pred); - register_access_descr -> array_index /= get_mode_size_bytes(load_mode); - printf("REGISTER LOAD at array index %d\n", register_access_descr->array_index); - - // We cannot use 'exchange' here, because the node n could already be in - // the register_access or memory_access list. Exchanging would result in a wrong pointer - // in those lists. Luckily Proj an VProj use the same node data, so we can just - // retype the proh to vproj without danger. - - set_irn_n(n, 0, register_access_descr->pointer_base); - set_irn_op(n, op_VProj); - vproj_node = n; - set_VProj_proj(n, register_access_descr->array_index); - } - else - { - // It's the memory proj. Just don't dump it - return; - } - } - else - { - if(get_irn_modecode(n) != irm_M) - { - memory_access_descr_t *memory_access_descr = pmap_get(memory_access, proj_pred); - memory_access_descr -> array_index /= get_mode_size_bytes(load_mode); - printf("MEMORY LOAD at array index %d\n", memory_access_descr->array_index); - } - } - - // Mark the current proj for dumping. - mark_node_for_dumping(n, graph_ana_info); - } - } -} - -void mark_node_for_dumping(ir_node *n, graph_ana_info_t *graph_ana_info) -{ - analyze_complex_operation_block(n, graph_ana_info); - pmap_insert(graph_ana_info->nodes_to_dump, n, NULL); - if(get_irn_opcode(n) != iro_Block && get_irn_opcode(n) != iro_Const) - { - ir_node *block = get_nodes_block(n); - pmap_insert(graph_ana_info->nodes_to_dump, block, NULL); - } -} - - - -/************************************************************************ - * Analyzes the behavior of a LOAD or STORE node - * Also detects ConvP node and prevents further dumping - * start_node: LOAD or STORE node to analyze - * array_index: Returns the array index of the LOAD or STORE - * result: CALL node defining the behavior of the LOAD OR STORE - ************************************************************************/ - -static ir_node *search_call(ir_node *start_node, unsigned int *array_index, ir_node **add, ir_node **pointer_root) -{ - ir_node *add_node; - //ir_node *convP_node; // If there's convP involved, replace proj_node by conP_node - ir_node *proj_node; - ir_node *call_node; - ir_node *proj_pred_node; - int aindex = 0; - - assert(get_irn_opcode(start_node) == iro_Load || get_irn_opcode(start_node) == iro_Store); - - add_node = get_irn_n(start_node, 1); - - if(get_irn_opcode(add_node) != /*iro_Add*/ iro_MultipleAdd) - { - // Add node is not there if array Index is 0 - proj_node = add_node; - add_node = NULL; - assert(0); // Must not happen when multiple Adds are there - } - else - { - // Analyze MultipleAdd predecessors - if(get_irn_opcode(get_irn_n(add_node, 0)) == iro_Proj) - { - proj_node = get_irn_n(add_node, 0); - aindex = get_tarval_long(get_Const_tarval(get_irn_n(add_node, 1))); // get_mode_size_bytes(get_irn_mode()) /*4*/; // TODO: varibale TARVALS - } - else - { - proj_node = get_irn_n(add_node, 1); - aindex = get_tarval_long(get_Const_tarval(get_irn_n(add_node, 0)));// / 4; // TODO: varibale TARVALS - } - } - - assert(get_irn_opcode(proj_node) == iro_Proj); - //call_node = get_irn_n(get_irn_n(get_irn_n(convP_node, 0), 0), 0); // ConvP -> ProjIs -> ProjT -> Call - call_node = get_irn_n(get_irn_n(proj_node, 0), 0); // ProjIs -> ProjT -> Call - assert(get_irn_opcode(call_node) == iro_Call && "Call node not found! Pattern not valid."); - - *array_index = aindex; - *add = add_node; - *pointer_root = proj_node; - - // Prevent further dumping of nodes starting from that convP Node - proj_pred_node = get_irn_n(proj_node, 0); - set_irn_visited(proj_pred_node, get_irg_visited(get_irn_irg(proj_pred_node))); - - return(call_node); -} - - - -/************************************************************************ - * Marks a vector base pointer to be used as an argument for the - * complex operation afterwards - ************************************************************************/ - -static void mark_argument_node(graph_ana_info_t *graph_ana_info, ir_node *call_node, ir_node *argument_node, ir_node *add_node) -{ - const char *arg_name; - int arg_nr = -1, i; - - // Look if we marked that node already - if(!pmap_contains(graph_ana_info->argument_nodes, argument_node)) - { - // No. Find out which argument number this node will be - // for complex operation - arg_name = get_entity_name(get_SymConst_entity(get_irn_n(call_node, 1))); - - // Is it the result pointer? - if(strcmp(arg_name, RESULT_NAME) == 0) - { - // Arg nr is -1 since we don't know how much - char *register_class; - argument_descr_t *argument_descr = obstack_alloc(graph_ana_info->obst, sizeof(argument_descr_t)); - - register_class = obstack_alloc(graph_ana_info->obst, get_SymConst_strlen(get_irn_n(call_node, 4))); - get_SymConst_string(get_irn_n(call_node, 4), register_class); - - argument_descr -> arg_nr = -1; - argument_descr -> argument_location = ARGUMENT_RESULT; // TODO: This is wrong, Memory or Register here - argument_descr -> argument_type = (is_vector(call_node) ? ARGUMENT_VECTOR : ARGUMENT_SCALAR); - argument_descr -> register_class = register_class; - argument_descr -> vec_op_input = add_node; // Only important for memory access nodes - - pmap_insert(graph_ana_info->argument_nodes, argument_node, (void *) argument_descr); - graph_ana_info->has_result = 1; - return; - } - - for(i = 0; i < MAX_SIMD_ARGUMENTS; i++) - if(strcmp(arg_name, SIMD_ARGUMENTS[i]) == 0) - { - char *register_class; - argument_descr_t *argument_descr = obstack_alloc(graph_ana_info->obst, sizeof(argument_descr_t)); - - register_class = obstack_alloc(graph_ana_info->obst, get_SymConst_strlen(get_irn_n(call_node, 4))); - get_SymConst_string(get_irn_n(call_node, 4), register_class); - - argument_descr -> arg_nr = i; - argument_descr -> argument_location = (!is_memory_access(call_node) ? ARGUMENT_SIMD_REGISTER : ARGUMENT_MEMORY); - argument_descr -> argument_type = (is_vector(call_node) ? ARGUMENT_VECTOR : ARGUMENT_SCALAR); - argument_descr -> register_class = register_class; - argument_descr -> vec_op_input = add_node; - - pmap_insert(graph_ana_info->argument_nodes, argument_node, (void *) argument_descr); - graph_ana_info->num_simd_arguments = MAX(i, graph_ana_info->num_simd_arguments); - break; - } - } -} - - - -/************************************************************************ - * Tests, if the given call_node is the emit-statement - * If so, saves the emit-statement for dumping later in the process. - ************************************************************************/ - -void search_emit_statement(ir_node *call_node, graph_ana_info_t *graph_ana_info) -{ - ir_node *symC_name; - ir_node *symC_arg; - const char *function_name; - int i; - - assert(get_irn_opcode(call_node) == iro_Call); - - // Prevent walker to consider arguments of the call node. - for(i = 1; i < get_irn_arity(call_node); i++) - set_irn_visited(get_irn_n(call_node, i), get_irg_visited(get_irn_irg(call_node))); - - // Check the function name - symC_name = get_irn_n(call_node, 1); - function_name = get_entity_name(get_SymConst_entity(symC_name)); - - // Save the emit statement - if(strcmp(function_name, EMIT) == 0) - { - // Allocate space for the emit statement and save it. - char *emit_statement; - symC_arg = get_irn_n(call_node, 2); - emit_statement = obstack_alloc(graph_ana_info->obst, get_SymConst_strlen(symC_arg)); - get_SymConst_string(symC_arg, emit_statement); - graph_ana_info->emit_statement = emit_statement; - return; - } - - // Save the extra registers, the complex operation destroys - if(strcmp(function_name, DESTROYS) == 0) - { - char *destroy_statement; - symC_arg = get_irn_n(call_node, 2); - destroy_statement = obstack_alloc(graph_ana_info->obst, get_SymConst_strlen(symC_arg)); - - get_SymConst_string(symC_arg, destroy_statement); - pmap_insert(graph_ana_info->destroyed_regs, call_node, destroy_statement); - } - - if(strcmp(function_name, PRIORITY) == 0) - { - ir_node *c = get_irn_n(call_node, 2); // Get the constant argument - assert(get_irn_opcode(c) == iro_Const && "Something is wrong with the priority node"); - graph_ana_info->priority = get_tarval_long(get_Const_tarval(c)); - } - - if(strcmp(function_name, COST_SAVINGS) == 0) - { - ir_node *c = get_irn_n(call_node, 2); // Get the constant argument - assert(get_irn_opcode(c) == iro_Const && "Something is wrong with the CostSavings node"); - - graph_ana_info->cost_savings = get_tarval_long(get_Const_tarval(c)); - } -} - - -#if 0 - -Not needed any more - -/************************************************************************/ -/* Cut's of the Memory predecessor of a LOAD node */ -/* We don't need that node in the final pattern. */ -/************************************************************************/ - -static void kill_mem_pred(ir_node *load) -{ - assert(get_irn_opcode(load) == iro_Load); - - // TODO: Think about this. Is this really enough? - if(get_irn_opcode(get_irn_n(get_irn_n(load, 0), 0)) == iro_Call) - set_irn_visited(get_irn_n(load, 0), get_irg_visited(get_irn_irg(load))); -} - -#endif - - - -/************************************************************************ - * Returns for a given call node if the underlying LOAD or STORE access - * memory (1) or not (0) - ************************************************************************/ -static int is_memory_access(ir_node *call) -{ - char symC_string[255]; - ir_node *symC; - - assert(get_irn_opcode(call) == iro_Call); - symC = get_irn_n(call, 3); - assert(get_irn_opcode(symC) == iro_SymConst); - - get_SymConst_string(symC, symC_string); - if(strstr(symC_string, MEMORY_ARRAY) != 0) - return(1); - return(0); -} - - -/************************************************************************/ -/* Returns 1 if the given argument represents a vector */ -/************************************************************************/ - -static int is_vector(ir_node *call) -{ - char symC_string[255]; - ir_node *symC; - - assert(get_irn_opcode(call) == iro_Call); - symC = get_irn_n(call, 2); - assert(get_irn_opcode(symC) == iro_SymConst); - get_SymConst_string(symC, symC_string); - if(strstr(symC_string, "vector") != 0) - return(1); - return(0); -} - - - -/************************************************************************ - * Analyze, if the current pattern node is in the immediate post - * dominator block of the start block - ************************************************************************/ - -/* - Der Block jedes aufgenommenen Knotens wird ueberprueft. - Falls dieser der direkte Nachdominator des Startblocks ist, ist das der Block, in den der komplexe Befehl soll. - - Problem: - Wird der Block dann auch wirklich mit einem Knoten des Musters verbunden? - Beim Component-Fall anscheinend nicht. - */ - -void analyze_complex_operation_block(ir_node *n, graph_ana_info_t *graph_ana_info) -{ - if(graph_ana_info->complex_operation_block == NULL && get_irn_opcode(n) != iro_Block) - { - ir_node *block = get_nodes_block(n); - if(block != get_irg_start_block(graph_ana_info->irg)) - { - ir_node *block_pred = get_irn_n(block, 0); - if(get_irn_opcode(block_pred) != iro_Block) - block_pred = get_nodes_block(block_pred); - if(block_pred == get_irg_start_block(graph_ana_info->irg)) - { - if(!pmap_contains(graph_ana_info->argument_nodes, n)) - { - graph_ana_info->complex_operation_block = block; - graph_ana_info->node_to_match_block = n; - //pmap_insert(walker_info->nodes_to_dump, block, NULL); - } - } - } - } -} - - - -/* _ _ -__ ____ _ _ __(_) __ _ _ __ | |_ ___ -\ \ / / _` | '__| |/ _` | '_ \| __/ __| - \ V / (_| | | | | (_| | | | | |_\__ \ - \_/ \__,_|_| |_|\__,_|_| |_|\__|___/ */ - -/************************************************************************ - * Generates an address mode variant - * Returns 0 if no variant was generated because no address calculation - * is made. - ************************************************************************/ - -int add_address_variant(graph_ana_info_t *graph_ana_info) -{ - int i; - struct pmap *argument_nodes = graph_ana_info->argument_nodes; - int found = 0; - - pmap_entry *entry; - - pmap_foreach(argument_nodes, entry) - { - ir_node *arg = (ir_node *) entry->key; - argument_descr_t *arg_descr = entry->value; - const ir_edge_t *edge; - ir_node *generic_node; - - if(arg_descr -> argument_type == ARGUMENT_VECTOR && arg_descr -> argument_location == ARGUMENT_MEMORY) - { - generic_node = new_ir_node(NULL, graph_ana_info->irg, get_nodes_block(arg), op_IrNode, mode_ANY, 0, NULL); - set_irn_mode(generic_node, mode_ANY); - pmap_insert(graph_ana_info->nodes_to_dump, generic_node, NULL); - foreach_out_edge_kind(arg, edge, EDGE_KIND_NORMAL) - { - ir_node *mult_add = get_edge_src_irn(edge); - int new_arity = get_irn_arity(mult_add) + 1; - ir_node **new_ins = alloca(new_arity * sizeof(ir_node *)); - - found = 1; - assert(get_irn_opcode(mult_add) == iro_MultipleAdd); - - for(i = 0; i < get_irn_arity(mult_add); i++) - new_ins[i] = get_irn_n(mult_add, i); - new_ins[i] = generic_node; - set_irn_in(mult_add, new_arity, new_ins); - } - - } - } - return(found); -} - - - -/* _ - _ __ ___ (_)___ ___ - | '_ ` _ \| / __|/ __| - | | | | | | \__ \ (__ - |_| |_| |_|_|___/\___| */ - - -/************************************************************************ - * Concatenates the rule name out of the irg name and the variant - * number - ************************************************************************/ - -void get_rule_name(graph_ana_info_t *graph_ana_info, char *rule_name) -{ - ir_graph *irg = graph_ana_info->irg; - sprintf(rule_name, "%s_variant%d", get_entity_name(get_irg_entity(irg)), graph_ana_info->variant_nr); -} - - - -/************************************************************************ - * Gets the number of characters contained in a string SymConst - * including the trailing 0-Character - ************************************************************************/ - -int get_SymConst_strlen(ir_node *symC) -{ - ir_entity *ent = get_SymConst_entity(symC); - return(get_compound_ent_n_values(ent) + 1); -} - - - -/************************************************************************ - * Reads the string assiciated with a sym_const and stores it in - * 'string' - ************************************************************************/ - -void get_SymConst_string(ir_node *symC, char *string) -{ - ir_entity *ent = get_SymConst_entity(symC); - int i, n; - - n = get_compound_ent_n_values(ent); - - for (i = 0; i < n-1; i++) { - ir_node *irn; - int c; - - irn = get_compound_ent_value(ent, i); - c = (int) get_tarval_long(get_Const_tarval(irn)); - string[i] = c; - } - string[i] = 0; -} diff --git a/ir/be/grgen/simd/create_pattern.h b/ir/be/grgen/simd/create_pattern.h deleted file mode 100644 index 1b96f2a72..000000000 --- a/ir/be/grgen/simd/create_pattern.h +++ /dev/null @@ -1,14 +0,0 @@ -/************************************************************************* -* Program: create_pattern.c -* Function: Extracts nodes to be dumped as search pattern out of the -* the initial pattern -* Author: Andreas Schoesser -* Date: 2006-12-07 -*************************************************************************/ - -#ifndef CREATE_PATTERN_H -#define CREATE_PATTERN_H - -void ext_grs_create_pattern(); - -#endif diff --git a/ir/be/grgen/simd/create_pattern_t.h b/ir/be/grgen/simd/create_pattern_t.h deleted file mode 100644 index 43d439942..000000000 --- a/ir/be/grgen/simd/create_pattern_t.h +++ /dev/null @@ -1,104 +0,0 @@ -/************************************************************************* -* Program: create_pattern_t.h -* Function: Extracts nodes to be dumped as search pattern out of the -* the initial pattern -* Author: Andreas Schoesser -* Date: 2006-12-07 -*************************************************************************/ - -#ifndef CREATE_PATTERN_T_H -#define CREATE_PATTERN_T_H - -#include "irgraph.h" - -// * This struct contains information that was collected during the pattern -// * analysis. -typedef struct -{ - ir_graph *irg; // The irg that was analysed - struct pmap *nodes_to_dump; // Contains all nodes which have to be dumped to create the pattern - struct pmap *register_access; // Contains additional information for nodes which represent a register access - struct pmap *memory_access; // Contains additional information for nodes which represent a memory access - struct pmap *argument_nodes; // Contains additional information for nodes which represent an arument for the complex operatione - struct pmap *destroyed_regs; // Contains an entry for each extra register a complex operation destroys (except the target register which is clear to be destroyed) - struct obstack *obst; // Memory allocated during analysis, will be killed after analysis is finished - int num_simd_arguments; // Number of arguments the complex operation will have - ir_node *complex_operation_block, // Used to match the block the complex operation will be placed in - *node_to_match_block; // Currently, only one pattern node's block is matched - char *emit_statement; // String that describes the assembly emit statement - int has_result; // Is set to 1 if the complex operation has a result - int variant_nr; - int priority; - int cost_savings; - int dump_everything; -} graph_ana_info_t; - - -// * Additional information for nodes which represent a register access -typedef struct -{ - int load_store; // REGISTER_STORE or REGISTER_LOAD - int array_index; // The vector component of that access - char *replace_node_name; // The node name of the VProj that replaces the node that generates the result (Register STORE) - ir_node *pointer_base; // Represents the complex operation in case of a register LOAD -} register_access_descr_t; - - -// * Additional information for nodes which represent a memory access -typedef struct -{ - int load_store; // MEMORY_STORE or MEMORY_LOAD - int array_index; // The vector component of that access - ir_node *projm; // Represents the projm node in case of a memory store -} memory_access_descr_t; - - -typedef enum -{ - ARGUMENT_SIMD_REGISTER = 0, - ARGUMENT_GP_REGISTER, - ARGUMENT_MEMORY, - ARGUMENT_RESULT -} argument_location_t; - -typedef enum -{ - ARGUMENT_SCALAR = 0, - ARGUMENT_VECTOR -} argument_type_t; - - - -// * Additional information for nodes which represent an argument for the complex operation -typedef struct -{ - argument_location_t argument_location; // ARGUMENT_SIMD_REGISTER or MEMORY - argument_type_t argument_type; // VECTOR or SCALAR - int arg_nr; // The argument number, this node will be for the complex operation - char *register_class; // The register class used for the backend specification - ir_node *vec_op_input; // This is important for variants: - // Points to the node that computes the vector address inside a - // (multi dim) array. -} argument_descr_t; - - -// Internal prototypes - -static ir_node *search_call(ir_node *start_node, unsigned int *array_index, ir_node **add, ir_node **pointer_root); -static int is_memory_access(ir_node *call); -void search_emit_statement(ir_node *call_node, graph_ana_info_t *walker_info); -static void mark_argument_node(graph_ana_info_t *walker_info, ir_node *call_node, ir_node *argument_node, ir_node *add_node); -void get_operation_name(const char *irg_name, char *operation_name); -void get_firmnode_name(const char *irg_name, char *firmnode_name); -void analyze_complex_operation_block(ir_node *n, graph_ana_info_t *walker_info); -int get_SymConst_strlen(ir_node *symC); -void get_SymConst_string(ir_node *symC, char *string); -static void walk_pre(ir_node *n, void * env); -static void walk_post(ir_node *n, void * env); -static int is_vector(ir_node *call); -int add_address_variant(graph_ana_info_t *walker_info); -void get_rule_name(graph_ana_info_t *walker_info, char *rule_name); -void mark_node_for_dumping(ir_node *n, graph_ana_info_t *walker_info); -static void run_grgen(); - -#endif diff --git a/ir/be/grgen/simd/firm_node_ext.c b/ir/be/grgen/simd/firm_node_ext.c deleted file mode 100644 index 042a79e7f..000000000 --- a/ir/be/grgen/simd/firm_node_ext.c +++ /dev/null @@ -1,262 +0,0 @@ -/************************************************************************* -* Program: firm_node_ext.c -* Function: Provides functions to extend firm by nodes needed by the -* SIMD optimizer -* Author: Andreas Schoesser -* Date: 2007-02-01 -*************************************************************************/ - -#include -#include -#include - -#include "simd_presets.h" - -#include "irnode.h" -#include "irtools.h" -#include "irmemory.h" - -#include "ia32/gen_ia32_regalloc_if.h" -#include "grs/base_t.h" - -ir_opcode iro_VProj; -ir_op *op_VProj; - -ir_opcode iro_MultipleAdd; -ir_op *op_MultipleAdd; - -ir_opcode iro_IrNode; -ir_op *op_IrNode; - -ir_opcode iro_Complex; -ir_op *op_Complex; - -ir_opcode iro_FakeComplex; -ir_op *op_FakeComplex; - - -ir_opcode iro_be_Keep; -extern ir_op *op_be_Keep; - - - -/************************************************************************ - * Initialize the pattern creation. - * - Creates new Firm opcodes needed by the transformation - ************************************************************************/ - -void ext_firm_nodes() -{ - // The SIMD optimization inserts ia32 specific nodes - // Create the opcodes for those nodes here - // Reason: We need those opcodes when inserting ia32_nodes anyway. - ia32_register_init(NULL); - ia32_create_opcodes(); - be_node_init(); - - iro_VProj = get_next_ir_opcode(); - op_VProj = new_ir_op(iro_VProj, "VProj", op_pin_state_pinned, 0, oparity_unary, 0, sizeof(long), NULL); - - iro_MultipleAdd = get_next_ir_opcode(); - op_MultipleAdd = new_ir_op(iro_MultipleAdd, "MultipleAdd", op_pin_state_pinned, 0, oparity_dynamic, 0, 0, NULL); - - iro_IrNode = get_next_ir_opcode(); - op_IrNode = new_ir_op(iro_IrNode, "IR_node", op_pin_state_pinned, 0, oparity_dynamic, 0, 0, NULL); - - iro_Complex = get_next_ir_opcode(); - op_Complex = new_ir_op(iro_Complex, "Complex", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - - iro_FakeComplex = get_next_ir_opcode(); - op_FakeComplex = new_ir_op(iro_FakeComplex, "FakeComplex", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - - iro_be_Keep = get_op_code(op_be_Keep); - - // Mode LLu now exists: - // mode_DLu = new_ir_vector_mode("DLu", irms_int_number, 128, 4, 0, irma_none, 128); -} - - - -/************************************************************************ - * Inserts a new ir_node an also updates the opcode lists of the GRS - ************************************************************************/ - -ir_node *new_ir_node_with_update(dbg_info *db, ir_graph *irg, ir_node *block, ir_op *op, ir_mode *mode, int arity, ir_node *in[]) -{ - ir_node *new_node = new_ir_node(db, irg, block, op, mode, arity, in); - - // Update the GRS' node list - ext_grs_irn_private_t *pr_n = _ext_grs_get_irn_private(new_node); - ext_grs_irg_private_t *pr_g = _ext_grs_get_irg_private(irg); - - memset(pr_n, 0, sizeof(*pr_n)); - - // Do we have to initialize pr_n? - - lc_list_add(&pr_n->node_list, &_ext_grs_NODE_LIST(pr_g, get_op_code(op), get_mode_modecode(mode))); - - // Do we have to call this? - // (_ext_grs_N_INSTANCES(pr_g, get_op_code(op), get_mode_modecode(mode)))++; - - return(new_node); -} - - - - -/* __ __ _ _ _ _ _ - | \/ |_ _| | |_ / \ __| | __| | - | |\/| | | | | | __| / _ \ / _` |/ _` | - | | | | |_| | | |_ / ___ \ (_| | (_| | - |_| |_|\__,_|_|\__/_/ \_\__,_|\__,_| */ - -/************************************************************************ - * Returns 1 if the given node is a MultipleAdd operation - ************************************************************************/ - -int is_MultipleAdd(ir_node *n) -{ - return(get_irn_opcode(n) == iro_MultipleAdd); -} - - - -/************************************************************************ - * Returns 1 if the 2 MultipeAdd nodes have the same base addresses - * but different offsets > size -> no alias - * 0 otherwise -> may alias - ************************************************************************/ - -ir_alias_relation get_multadd_alias_relation(ir_node *n1, ir_node *n2) -{ -#if 1 - int i, offset_diff, same_base = 1, pos1, pos2, summands_not_equal = 0, size; - ir_node *const1 = NULL, *const2 = NULL, *base1 = NULL, *base2 = NULL, *ma1, *ma2; - ir_mode *mode1, *mode2; - - - switch(get_irn_opcode(n1)) - { - case iro_Store: ma1 = get_Store_ptr(n1); mode1 = get_irn_mode(get_Store_value(n1)); break; - case iro_Load: ma1 = get_Load_ptr(n1); mode1 = get_Load_mode(n1); /*mode_F;*/ /* Hack */ break; // TODO: Get Load mode - default: return(no_alias); - } - - switch(get_irn_opcode(n2)) - { - case iro_Store: ma2 = get_Store_ptr(n2); mode2 = get_irn_mode(get_Store_value(n1)); break; - case iro_Load: ma2 = get_Load_ptr(n2); mode2 = get_Load_mode(n1); /*mode_F;*/ /* Hack */ break; // TODO: Get LOAD mode - default: return(no_alias); - } - - assert(is_MultipleAdd(ma1) && is_MultipleAdd(ma2)); - - size = MAX(get_mode_size_bytes(mode1), get_mode_size_bytes(mode2)); - - // Different number of summands. Return "may alias" - // Rethink. If they contain different Sel's or restrict pointers - if(get_irn_arity(ma1) != get_irn_arity(ma2)) - return(may_alias); - - // Since MultipleAdd ins are ordered, the constant value has to be in_0 in both cases - const1 = get_irn_n(ma1, 0); - const2 = get_irn_n(ma2, 0); - if(!is_Const(const1) && !is_Const(const2)) - return(may_alias); - - offset_diff = abs(get_tarval_long(get_Const_tarval(const1)) - get_tarval_long(get_Const_tarval(const2))); - - // Go through both in-arrays simultaneously and search for the base pointers - // Also check the rest of the ins for equalness - - for(pos1 = 1, pos2 = 1; pos1 < get_irn_arity(ma1) && pos2 < get_irn_arity(ma1); ) - { - ir_node *n1, *n2; - - if((n1 = get_irn_n(ma1, pos1)) == (n2 = get_irn_n(ma2, pos2))) - { - pos1++; - pos2++; - continue; - } - - summands_not_equal = 1; - - n1 = get_irn_n(ma1, pos1); - n2 = get_irn_n(ma2, pos2); - - // Look if we have the base pointer - if((get_irn_opcode(n1) == iro_Proj || get_irn_opcode(n1) == iro_Sel)) - { - assert(base1 == NULL); - base1 = n1; - pos1++; - } - - if((get_irn_opcode(n2) == iro_Proj || get_irn_opcode(n2) == iro_Sel)) - { - assert(base2 == NULL); - base2 = n2; - pos2++; - } - } - - /*if(summands_not_equal) - return(may_alias); */ - - if(base1 == NULL || base2 == NULL) - { - if(!summands_not_equal) - { - // Summands are exaclty the same (including the base) so check the constant - if(offset_diff < size) - return(sure_alias); // Offsets are overlapping - return(no_alias); // Offsets are not overlapping - } - else - { - // Summands not the same and no (or just 1) base found. Bad luck, bail out - return(may_alias); - } - } - else - { - // Summands are different, but 2 bases were found. check them: - // Alias relation depends on the alias relation of the base addresses - assert(base1 != NULL && base2 != NULL && "We should have found 2 bases!"); - return(get_alias_relation(get_irn_irg(base1), base1, mode_F, base2, mode_F)); - } -#else - return(may_alias); -#endif -} - - - -/*__ ______ _ - \ \ / / _ \ _ __ ___ (_) - \ \ / /| |_) | '__/ _ \| | - \ V / | __/| | | (_) | | - \_/ |_| |_| \___// | - |__/ */ - -/************************************************************************ - * Gets and sets the vproj number - ************************************************************************/ - -int get_VProj_proj(ir_node *node) -{ - int *pa = (int *) get_irn_generic_attr(node); - return *pa; -} - -void set_VProj_proj(ir_node *node, int proj) -{ - int *pa = get_irn_generic_attr(node); - *pa = proj; -} - -ir_opcode get_VProj_op() -{ - return(iro_VProj); -} diff --git a/ir/be/grgen/simd/firm_node_ext.h b/ir/be/grgen/simd/firm_node_ext.h deleted file mode 100644 index 91f7fc736..000000000 --- a/ir/be/grgen/simd/firm_node_ext.h +++ /dev/null @@ -1,40 +0,0 @@ -/************************************************************************* -* Program: firm_node_ext.h -* Function: Provides functions to extend firm by nodes needed by the -* SIMD optimizer -* Author: Andreas Schoesser -* Date: 2007-02-01 -*************************************************************************/ - -#ifndef __FIRM_NODE_EXT__ -#define __FIRM_NODE_EXT__ - -#include "irnode.h" -#include "irmemory.h" - -extern ir_opcode iro_VProj; -extern ir_op *op_VProj; - -extern ir_opcode iro_MultipleAdd; -extern ir_op *op_MultipleAdd; - -extern ir_opcode iro_IrNode; -extern ir_op *op_IrNode; - -extern ir_opcode iro_Complex; -extern ir_op *op_Complex; - -extern ir_opcode iro_FakeComplex; -extern ir_op *op_FakeComplex; - - -//extern ir_mode *mode_DLu; - -ir_node *new_ir_node_with_update(dbg_info *db, ir_graph *irg, ir_node *block, ir_op *op, ir_mode *mode, int arity, ir_node *in[]); -int get_VProj_proj(ir_node *n); -void set_VProj_proj(ir_node *n, int proj); -void ext_firm_nodes(); -int is_MultipleAdd(ir_node *n); -ir_alias_relation get_multadd_alias_relation(ir_node *n1, ir_node *n2); - -#endif diff --git a/ir/be/grgen/simd/gen_patterns.c b/ir/be/grgen/simd/gen_patterns.c deleted file mode 100644 index e0be85481..000000000 --- a/ir/be/grgen/simd/gen_patterns.c +++ /dev/null @@ -1,3450 +0,0 @@ -/* generated by grgen, don't edit */ - -#include -#include -#include - -/* nodeTypeMap */ -static ir_op* grs_op_ASM_CAST; -static ir_op* grs_op_VProj; -static ir_op* grs_op_Abs; -static ir_op* grs_op_Nary; -static ir_op* grs_op_Entity; -static ir_op* grs_op_Intrinsic_sse_addr_sse; -static ir_op* grs_op_Ordinary; -static ir_op* grs_op_First_right_load; -static ir_op* grs_op_Const; -static ir_op* grs_op_Tarval; -static ir_op* grs_op_Primitive; -static ir_op* grs_op_IntrinsicFP; -static ir_op* grs_op_InstOf; -static ir_op* grs_op_IntrinsicMMX; -static ir_op* grs_op_Left_blocked; -static ir_op* grs_op_Compound; -static ir_op* grs_op_IR_node; -static ir_op* grs_op_Non_pattern_block; -static ir_op* grs_op_IntrinsicGP; -static ir_op* grs_op_Trinary; -static ir_op* grs_op_Non_output_add; -static ir_op* grs_op_SyncArity2; -static ir_op* grs_op_min; -static ir_op* grs_op_End; -static ir_op* grs_op_Binary; -static ir_op* grs_op_CCopy; -static ir_op* grs_op_Mulh; -static ir_op* grs_op_ASM_node; -static ir_op* grs_op_Free; -static ir_op* grs_op_Intrinsic_sse_sse_sse; -static ir_op* grs_op_Break; -static ir_op* grs_op_G2s_complex; -static ir_op* grs_op_Union; -static ir_op* grs_op_Start_non_pattern; -static ir_op* grs_op_Unary; -static ir_op* grs_op_Mul; -static ir_op* grs_op_IntConst; -static ir_op* grs_op_Non_output; -static ir_op* grs_op_Start; -static ir_op* grs_op_IntrinsicSSE; -static ir_op* grs_op_Create_helper; -static ir_op* grs_op_MemNode; -static ir_op* grs_op_Right_loads; -static ir_op* grs_op_Left_load_helper; -static ir_op* grs_op_Match; -static ir_op* grs_op_EndReg; -static ir_op* grs_op_Tuple; -static ir_op* grs_op_New_vop; -static ir_op* grs_op_Controlflow; -static ir_op* grs_op_Pointer; -static ir_op* grs_op_FIRM_node; -static ir_op* grs_op_Marker; -static ir_op* grs_op_Non_output_Block; -static ir_op* grs_op_V2pi_1; -static ir_op* grs_op_V2; -static ir_op* grs_op_IntrinsicGP3; -static ir_op* grs_op_Eor; -static ir_op* grs_op_V2Load; -static ir_op* grs_op_Special; -static ir_op* grs_op_IntrinsicMatch; -static ir_op* grs_op_Method; -static ir_op* grs_op_Block; -static ir_op* grs_op_G2s_marker; -static ir_op* grs_op_IgnoreCF; -static ir_op* grs_op_Id; -static ir_op* grs_op_V2Sub; -static ir_op* grs_op_Bad; -static ir_op* grs_op_Call; -static ir_op* grs_op_AnyProj; -static ir_op* grs_op_V4pi_2; -static ir_op* grs_op_Conv; -static ir_op* grs_op_Sync; -static ir_op* grs_op_Phi; -static ir_op* grs_op_Vector; -static ir_op* grs_op_IgnoreAttrs; -static ir_op* grs_op_V4pi_3; -static ir_op* grs_op_Confirm; -static ir_op* grs_op_Shrs; -static ir_op* grs_op_Array; -static ir_op* grs_op_Intrinsic_sse_addr_store; -static ir_op* grs_op_Proj; -static ir_op* grs_op_Shr; -static ir_op* grs_op_Intrinsic_addr_addr_sse; -static ir_op* grs_op_Return_non_pattern; -static ir_op* grs_op_Commutative; -static ir_op* grs_op_IgnoreCF_Vop; -static ir_op* grs_op_And; -static ir_op* grs_op_Left_loads; -static ir_op* grs_op_Or; -static ir_op* grs_op_Type; -static ir_op* grs_op_Alloc; -static ir_op* grs_op_Intrinsic; -static ir_op* grs_op_pi; -static ir_op* grs_op_Filter; -static ir_op* grs_op_Cmp; -static ir_op* grs_op_Memory; -static ir_op* grs_op_Minus; -static ir_op* grs_op_G2s; -static ir_op* grs_op_Node; -static ir_op* grs_op_Not; -static ir_op* grs_op_Add; -static ir_op* grs_op_Enum; -static ir_op* grs_op_Intrinsic_sse_sse; -static ir_op* grs_op_CallBegin; -static ir_op* grs_op_Right_load_helper; -static ir_op* grs_op_G2s_allowed; -static ir_op* grs_op_IgnoreCF_IR_node; -static ir_op* grs_op_Vop; -static ir_op* grs_op_Sub; -static ir_op* grs_op_V4; -static ir_op* grs_op_Intrinsic_sse_reg_sse; -static ir_op* grs_op_Raise; -static ir_op* grs_op_Blocked; -static ir_op* grs_op_Jmp; -static ir_op* grs_op_Arithmetic; -static ir_op* grs_op_Mux; -static ir_op* grs_op_max; -static ir_op* grs_op_G2s_param; -static ir_op* grs_op_DivMod; -static ir_op* grs_op_LoadStore; -static ir_op* grs_op_Non_replace; -static ir_op* grs_op_Non_output_Ir_node; -static ir_op* grs_op_Meth_entity; -static ir_op* grs_op_Non_pattern; -static ir_op* grs_op_Sel; -static ir_op* grs_op_Mode_marker; -static ir_op* grs_op_VMode; -static ir_op* grs_op_Last_left_load; -static ir_op* grs_op_Struct; -static ir_op* grs_op_V4pi_1; -static ir_op* grs_op_EndExcept; -static ir_op* grs_op_Store; -static ir_op* grs_op_IgnoreCF_Conv; -static ir_op* grs_op_V4pi_4; -static ir_op* grs_op_Load; -static ir_op* grs_op_Right_blocked; -static ir_op* grs_op_G2s_r128_int_4; -static ir_op* grs_op_CMOV; -static ir_op* grs_op_Negative; -static ir_op* grs_op_Intrinsic_addr_sse_store; -static ir_op* grs_op_SymConst; -static ir_op* grs_op_Intrinsic_addr_sse; -static ir_op* grs_op_Associative; -static ir_op* grs_op_V2Store; -static ir_op* grs_op_Cast; -static ir_op* grs_op_Mod; -static ir_op* grs_op_Unknown; -static ir_op* grs_op_Visual_helper; -static ir_op* grs_op_Rot; -static ir_op* grs_op_Div; -static ir_op* grs_op_ASM_Block; -static ir_op* grs_op_Shl; -static ir_op* grs_op_Cond; -static ir_op* grs_op_V2pi_2; -static ir_op* grs_op_Intrinsic_reg_sse_sse; -static ir_op* grs_op_Method_IRG; -static ir_op* grs_op_Class; -static ir_op* grs_op_Quot; -static ir_op* grs_op_Mode; -static ir_op* grs_op_StartBlock; -static ir_op* grs_op_Return; -static ir_op* grs_op_Intrinsic_addr_addr_store; -static ir_op* grs_op_NoMem; -/* nodeTypeMap END */ - -/* init node ops and modes */ -static void init() { - grs_op_ASM_CAST = ext_grs_lookup_op("ASM_CAST"); - grs_op_ASM_CAST = grs_op_ASM_CAST ? grs_op_ASM_CAST : new_ir_op(get_next_ir_opcode(), "ASM_CAST", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_VProj = ext_grs_lookup_op("VProj"); - grs_op_VProj = grs_op_VProj ? grs_op_VProj : new_ir_op(get_next_ir_opcode(), "VProj", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Abs = ext_grs_lookup_op("Abs"); - grs_op_Abs = grs_op_Abs ? grs_op_Abs : new_ir_op(get_next_ir_opcode(), "Abs", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Nary = ext_grs_lookup_op("Nary"); - grs_op_Nary = grs_op_Nary ? grs_op_Nary : new_ir_op(get_next_ir_opcode(), "Nary", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Entity = ext_grs_lookup_op("Entity"); - grs_op_Entity = grs_op_Entity ? grs_op_Entity : new_ir_op(get_next_ir_opcode(), "Entity", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Intrinsic_sse_addr_sse = ext_grs_lookup_op("Intrinsic_sse_addr_sse"); - grs_op_Intrinsic_sse_addr_sse = grs_op_Intrinsic_sse_addr_sse ? grs_op_Intrinsic_sse_addr_sse : new_ir_op(get_next_ir_opcode(), "Intrinsic_sse_addr_sse", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Ordinary = ext_grs_lookup_op("Ordinary"); - grs_op_Ordinary = grs_op_Ordinary ? grs_op_Ordinary : new_ir_op(get_next_ir_opcode(), "Ordinary", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_First_right_load = ext_grs_lookup_op("First_right_load"); - grs_op_First_right_load = grs_op_First_right_load ? grs_op_First_right_load : new_ir_op(get_next_ir_opcode(), "First_right_load", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Const = ext_grs_lookup_op("Const"); - grs_op_Const = grs_op_Const ? grs_op_Const : new_ir_op(get_next_ir_opcode(), "Const", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Tarval = ext_grs_lookup_op("Tarval"); - grs_op_Tarval = grs_op_Tarval ? grs_op_Tarval : new_ir_op(get_next_ir_opcode(), "Tarval", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Primitive = ext_grs_lookup_op("Primitive"); - grs_op_Primitive = grs_op_Primitive ? grs_op_Primitive : new_ir_op(get_next_ir_opcode(), "Primitive", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_IntrinsicFP = ext_grs_lookup_op("IntrinsicFP"); - grs_op_IntrinsicFP = grs_op_IntrinsicFP ? grs_op_IntrinsicFP : new_ir_op(get_next_ir_opcode(), "IntrinsicFP", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_InstOf = ext_grs_lookup_op("InstOf"); - grs_op_InstOf = grs_op_InstOf ? grs_op_InstOf : new_ir_op(get_next_ir_opcode(), "InstOf", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_IntrinsicMMX = ext_grs_lookup_op("IntrinsicMMX"); - grs_op_IntrinsicMMX = grs_op_IntrinsicMMX ? grs_op_IntrinsicMMX : new_ir_op(get_next_ir_opcode(), "IntrinsicMMX", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Left_blocked = ext_grs_lookup_op("Left_blocked"); - grs_op_Left_blocked = grs_op_Left_blocked ? grs_op_Left_blocked : new_ir_op(get_next_ir_opcode(), "Left_blocked", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Compound = ext_grs_lookup_op("Compound"); - grs_op_Compound = grs_op_Compound ? grs_op_Compound : new_ir_op(get_next_ir_opcode(), "Compound", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_IR_node = ext_grs_lookup_op("IR_node"); - grs_op_IR_node = grs_op_IR_node ? grs_op_IR_node : new_ir_op(get_next_ir_opcode(), "IR_node", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Non_pattern_block = ext_grs_lookup_op("Non_pattern_block"); - grs_op_Non_pattern_block = grs_op_Non_pattern_block ? grs_op_Non_pattern_block : new_ir_op(get_next_ir_opcode(), "Non_pattern_block", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_IntrinsicGP = ext_grs_lookup_op("IntrinsicGP"); - grs_op_IntrinsicGP = grs_op_IntrinsicGP ? grs_op_IntrinsicGP : new_ir_op(get_next_ir_opcode(), "IntrinsicGP", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Trinary = ext_grs_lookup_op("Trinary"); - grs_op_Trinary = grs_op_Trinary ? grs_op_Trinary : new_ir_op(get_next_ir_opcode(), "Trinary", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Non_output_add = ext_grs_lookup_op("Non_output_add"); - grs_op_Non_output_add = grs_op_Non_output_add ? grs_op_Non_output_add : new_ir_op(get_next_ir_opcode(), "Non_output_add", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_SyncArity2 = ext_grs_lookup_op("SyncArity2"); - grs_op_SyncArity2 = grs_op_SyncArity2 ? grs_op_SyncArity2 : new_ir_op(get_next_ir_opcode(), "SyncArity2", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_min = ext_grs_lookup_op("min"); - grs_op_min = grs_op_min ? grs_op_min : new_ir_op(get_next_ir_opcode(), "min", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_End = ext_grs_lookup_op("End"); - grs_op_End = grs_op_End ? grs_op_End : new_ir_op(get_next_ir_opcode(), "End", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Binary = ext_grs_lookup_op("Binary"); - grs_op_Binary = grs_op_Binary ? grs_op_Binary : new_ir_op(get_next_ir_opcode(), "Binary", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_CCopy = ext_grs_lookup_op("CCopy"); - grs_op_CCopy = grs_op_CCopy ? grs_op_CCopy : new_ir_op(get_next_ir_opcode(), "CCopy", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Mulh = ext_grs_lookup_op("Mulh"); - grs_op_Mulh = grs_op_Mulh ? grs_op_Mulh : new_ir_op(get_next_ir_opcode(), "Mulh", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_ASM_node = ext_grs_lookup_op("ASM_node"); - grs_op_ASM_node = grs_op_ASM_node ? grs_op_ASM_node : new_ir_op(get_next_ir_opcode(), "ASM_node", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Free = ext_grs_lookup_op("Free"); - grs_op_Free = grs_op_Free ? grs_op_Free : new_ir_op(get_next_ir_opcode(), "Free", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Intrinsic_sse_sse_sse = ext_grs_lookup_op("Intrinsic_sse_sse_sse"); - grs_op_Intrinsic_sse_sse_sse = grs_op_Intrinsic_sse_sse_sse ? grs_op_Intrinsic_sse_sse_sse : new_ir_op(get_next_ir_opcode(), "Intrinsic_sse_sse_sse", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Break = ext_grs_lookup_op("Break"); - grs_op_Break = grs_op_Break ? grs_op_Break : new_ir_op(get_next_ir_opcode(), "Break", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_G2s_complex = ext_grs_lookup_op("G2s_complex"); - grs_op_G2s_complex = grs_op_G2s_complex ? grs_op_G2s_complex : new_ir_op(get_next_ir_opcode(), "G2s_complex", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Union = ext_grs_lookup_op("Union"); - grs_op_Union = grs_op_Union ? grs_op_Union : new_ir_op(get_next_ir_opcode(), "Union", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Start_non_pattern = ext_grs_lookup_op("Start_non_pattern"); - grs_op_Start_non_pattern = grs_op_Start_non_pattern ? grs_op_Start_non_pattern : new_ir_op(get_next_ir_opcode(), "Start_non_pattern", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Unary = ext_grs_lookup_op("Unary"); - grs_op_Unary = grs_op_Unary ? grs_op_Unary : new_ir_op(get_next_ir_opcode(), "Unary", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Mul = ext_grs_lookup_op("Mul"); - grs_op_Mul = grs_op_Mul ? grs_op_Mul : new_ir_op(get_next_ir_opcode(), "Mul", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_IntConst = ext_grs_lookup_op("IntConst"); - grs_op_IntConst = grs_op_IntConst ? grs_op_IntConst : new_ir_op(get_next_ir_opcode(), "IntConst", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Non_output = ext_grs_lookup_op("Non_output"); - grs_op_Non_output = grs_op_Non_output ? grs_op_Non_output : new_ir_op(get_next_ir_opcode(), "Non_output", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Start = ext_grs_lookup_op("Start"); - grs_op_Start = grs_op_Start ? grs_op_Start : new_ir_op(get_next_ir_opcode(), "Start", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_IntrinsicSSE = ext_grs_lookup_op("IntrinsicSSE"); - grs_op_IntrinsicSSE = grs_op_IntrinsicSSE ? grs_op_IntrinsicSSE : new_ir_op(get_next_ir_opcode(), "IntrinsicSSE", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Create_helper = ext_grs_lookup_op("Create_helper"); - grs_op_Create_helper = grs_op_Create_helper ? grs_op_Create_helper : new_ir_op(get_next_ir_opcode(), "Create_helper", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_MemNode = ext_grs_lookup_op("MemNode"); - grs_op_MemNode = grs_op_MemNode ? grs_op_MemNode : new_ir_op(get_next_ir_opcode(), "MemNode", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Right_loads = ext_grs_lookup_op("Right_loads"); - grs_op_Right_loads = grs_op_Right_loads ? grs_op_Right_loads : new_ir_op(get_next_ir_opcode(), "Right_loads", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Left_load_helper = ext_grs_lookup_op("Left_load_helper"); - grs_op_Left_load_helper = grs_op_Left_load_helper ? grs_op_Left_load_helper : new_ir_op(get_next_ir_opcode(), "Left_load_helper", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Match = ext_grs_lookup_op("Match"); - grs_op_Match = grs_op_Match ? grs_op_Match : new_ir_op(get_next_ir_opcode(), "Match", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_EndReg = ext_grs_lookup_op("EndReg"); - grs_op_EndReg = grs_op_EndReg ? grs_op_EndReg : new_ir_op(get_next_ir_opcode(), "EndReg", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Tuple = ext_grs_lookup_op("Tuple"); - grs_op_Tuple = grs_op_Tuple ? grs_op_Tuple : new_ir_op(get_next_ir_opcode(), "Tuple", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_New_vop = ext_grs_lookup_op("New_vop"); - grs_op_New_vop = grs_op_New_vop ? grs_op_New_vop : new_ir_op(get_next_ir_opcode(), "New_vop", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Controlflow = ext_grs_lookup_op("Controlflow"); - grs_op_Controlflow = grs_op_Controlflow ? grs_op_Controlflow : new_ir_op(get_next_ir_opcode(), "Controlflow", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Pointer = ext_grs_lookup_op("Pointer"); - grs_op_Pointer = grs_op_Pointer ? grs_op_Pointer : new_ir_op(get_next_ir_opcode(), "Pointer", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_FIRM_node = ext_grs_lookup_op("FIRM_node"); - grs_op_FIRM_node = grs_op_FIRM_node ? grs_op_FIRM_node : new_ir_op(get_next_ir_opcode(), "FIRM_node", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Marker = ext_grs_lookup_op("Marker"); - grs_op_Marker = grs_op_Marker ? grs_op_Marker : new_ir_op(get_next_ir_opcode(), "Marker", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Non_output_Block = ext_grs_lookup_op("Non_output_Block"); - grs_op_Non_output_Block = grs_op_Non_output_Block ? grs_op_Non_output_Block : new_ir_op(get_next_ir_opcode(), "Non_output_Block", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_V2pi_1 = ext_grs_lookup_op("V2pi_1"); - grs_op_V2pi_1 = grs_op_V2pi_1 ? grs_op_V2pi_1 : new_ir_op(get_next_ir_opcode(), "V2pi_1", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_V2 = ext_grs_lookup_op("V2"); - grs_op_V2 = grs_op_V2 ? grs_op_V2 : new_ir_op(get_next_ir_opcode(), "V2", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_IntrinsicGP3 = ext_grs_lookup_op("IntrinsicGP3"); - grs_op_IntrinsicGP3 = grs_op_IntrinsicGP3 ? grs_op_IntrinsicGP3 : new_ir_op(get_next_ir_opcode(), "IntrinsicGP3", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Eor = ext_grs_lookup_op("Eor"); - grs_op_Eor = grs_op_Eor ? grs_op_Eor : new_ir_op(get_next_ir_opcode(), "Eor", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_V2Load = ext_grs_lookup_op("V2Load"); - grs_op_V2Load = grs_op_V2Load ? grs_op_V2Load : new_ir_op(get_next_ir_opcode(), "V2Load", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Special = ext_grs_lookup_op("Special"); - grs_op_Special = grs_op_Special ? grs_op_Special : new_ir_op(get_next_ir_opcode(), "Special", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_IntrinsicMatch = ext_grs_lookup_op("IntrinsicMatch"); - grs_op_IntrinsicMatch = grs_op_IntrinsicMatch ? grs_op_IntrinsicMatch : new_ir_op(get_next_ir_opcode(), "IntrinsicMatch", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Method = ext_grs_lookup_op("Method"); - grs_op_Method = grs_op_Method ? grs_op_Method : new_ir_op(get_next_ir_opcode(), "Method", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Block = ext_grs_lookup_op("Block"); - grs_op_Block = grs_op_Block ? grs_op_Block : new_ir_op(get_next_ir_opcode(), "Block", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_G2s_marker = ext_grs_lookup_op("G2s_marker"); - grs_op_G2s_marker = grs_op_G2s_marker ? grs_op_G2s_marker : new_ir_op(get_next_ir_opcode(), "G2s_marker", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_IgnoreCF = ext_grs_lookup_op("IgnoreCF"); - grs_op_IgnoreCF = grs_op_IgnoreCF ? grs_op_IgnoreCF : new_ir_op(get_next_ir_opcode(), "IgnoreCF", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Id = ext_grs_lookup_op("Id"); - grs_op_Id = grs_op_Id ? grs_op_Id : new_ir_op(get_next_ir_opcode(), "Id", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_V2Sub = ext_grs_lookup_op("V2Sub"); - grs_op_V2Sub = grs_op_V2Sub ? grs_op_V2Sub : new_ir_op(get_next_ir_opcode(), "V2Sub", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Bad = ext_grs_lookup_op("Bad"); - grs_op_Bad = grs_op_Bad ? grs_op_Bad : new_ir_op(get_next_ir_opcode(), "Bad", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Call = ext_grs_lookup_op("Call"); - grs_op_Call = grs_op_Call ? grs_op_Call : new_ir_op(get_next_ir_opcode(), "Call", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_AnyProj = ext_grs_lookup_op("AnyProj"); - grs_op_AnyProj = grs_op_AnyProj ? grs_op_AnyProj : new_ir_op(get_next_ir_opcode(), "AnyProj", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_V4pi_2 = ext_grs_lookup_op("V4pi_2"); - grs_op_V4pi_2 = grs_op_V4pi_2 ? grs_op_V4pi_2 : new_ir_op(get_next_ir_opcode(), "V4pi_2", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Conv = ext_grs_lookup_op("Conv"); - grs_op_Conv = grs_op_Conv ? grs_op_Conv : new_ir_op(get_next_ir_opcode(), "Conv", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Sync = ext_grs_lookup_op("Sync"); - grs_op_Sync = grs_op_Sync ? grs_op_Sync : new_ir_op(get_next_ir_opcode(), "Sync", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Phi = ext_grs_lookup_op("Phi"); - grs_op_Phi = grs_op_Phi ? grs_op_Phi : new_ir_op(get_next_ir_opcode(), "Phi", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Vector = ext_grs_lookup_op("Vector"); - grs_op_Vector = grs_op_Vector ? grs_op_Vector : new_ir_op(get_next_ir_opcode(), "Vector", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_IgnoreAttrs = ext_grs_lookup_op("IgnoreAttrs"); - grs_op_IgnoreAttrs = grs_op_IgnoreAttrs ? grs_op_IgnoreAttrs : new_ir_op(get_next_ir_opcode(), "IgnoreAttrs", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_V4pi_3 = ext_grs_lookup_op("V4pi_3"); - grs_op_V4pi_3 = grs_op_V4pi_3 ? grs_op_V4pi_3 : new_ir_op(get_next_ir_opcode(), "V4pi_3", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Confirm = ext_grs_lookup_op("Confirm"); - grs_op_Confirm = grs_op_Confirm ? grs_op_Confirm : new_ir_op(get_next_ir_opcode(), "Confirm", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Shrs = ext_grs_lookup_op("Shrs"); - grs_op_Shrs = grs_op_Shrs ? grs_op_Shrs : new_ir_op(get_next_ir_opcode(), "Shrs", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Array = ext_grs_lookup_op("Array"); - grs_op_Array = grs_op_Array ? grs_op_Array : new_ir_op(get_next_ir_opcode(), "Array", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Intrinsic_sse_addr_store = ext_grs_lookup_op("Intrinsic_sse_addr_store"); - grs_op_Intrinsic_sse_addr_store = grs_op_Intrinsic_sse_addr_store ? grs_op_Intrinsic_sse_addr_store : new_ir_op(get_next_ir_opcode(), "Intrinsic_sse_addr_store", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Proj = ext_grs_lookup_op("Proj"); - grs_op_Proj = grs_op_Proj ? grs_op_Proj : new_ir_op(get_next_ir_opcode(), "Proj", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Shr = ext_grs_lookup_op("Shr"); - grs_op_Shr = grs_op_Shr ? grs_op_Shr : new_ir_op(get_next_ir_opcode(), "Shr", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Intrinsic_addr_addr_sse = ext_grs_lookup_op("Intrinsic_addr_addr_sse"); - grs_op_Intrinsic_addr_addr_sse = grs_op_Intrinsic_addr_addr_sse ? grs_op_Intrinsic_addr_addr_sse : new_ir_op(get_next_ir_opcode(), "Intrinsic_addr_addr_sse", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Return_non_pattern = ext_grs_lookup_op("Return_non_pattern"); - grs_op_Return_non_pattern = grs_op_Return_non_pattern ? grs_op_Return_non_pattern : new_ir_op(get_next_ir_opcode(), "Return_non_pattern", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Commutative = ext_grs_lookup_op("Commutative"); - grs_op_Commutative = grs_op_Commutative ? grs_op_Commutative : new_ir_op(get_next_ir_opcode(), "Commutative", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_IgnoreCF_Vop = ext_grs_lookup_op("IgnoreCF_Vop"); - grs_op_IgnoreCF_Vop = grs_op_IgnoreCF_Vop ? grs_op_IgnoreCF_Vop : new_ir_op(get_next_ir_opcode(), "IgnoreCF_Vop", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_And = ext_grs_lookup_op("And"); - grs_op_And = grs_op_And ? grs_op_And : new_ir_op(get_next_ir_opcode(), "And", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Left_loads = ext_grs_lookup_op("Left_loads"); - grs_op_Left_loads = grs_op_Left_loads ? grs_op_Left_loads : new_ir_op(get_next_ir_opcode(), "Left_loads", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Or = ext_grs_lookup_op("Or"); - grs_op_Or = grs_op_Or ? grs_op_Or : new_ir_op(get_next_ir_opcode(), "Or", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Type = ext_grs_lookup_op("Type"); - grs_op_Type = grs_op_Type ? grs_op_Type : new_ir_op(get_next_ir_opcode(), "Type", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Alloc = ext_grs_lookup_op("Alloc"); - grs_op_Alloc = grs_op_Alloc ? grs_op_Alloc : new_ir_op(get_next_ir_opcode(), "Alloc", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Intrinsic = ext_grs_lookup_op("Intrinsic"); - grs_op_Intrinsic = grs_op_Intrinsic ? grs_op_Intrinsic : new_ir_op(get_next_ir_opcode(), "Intrinsic", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_pi = ext_grs_lookup_op("pi"); - grs_op_pi = grs_op_pi ? grs_op_pi : new_ir_op(get_next_ir_opcode(), "pi", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Filter = ext_grs_lookup_op("Filter"); - grs_op_Filter = grs_op_Filter ? grs_op_Filter : new_ir_op(get_next_ir_opcode(), "Filter", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Cmp = ext_grs_lookup_op("Cmp"); - grs_op_Cmp = grs_op_Cmp ? grs_op_Cmp : new_ir_op(get_next_ir_opcode(), "Cmp", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Memory = ext_grs_lookup_op("Memory"); - grs_op_Memory = grs_op_Memory ? grs_op_Memory : new_ir_op(get_next_ir_opcode(), "Memory", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Minus = ext_grs_lookup_op("Minus"); - grs_op_Minus = grs_op_Minus ? grs_op_Minus : new_ir_op(get_next_ir_opcode(), "Minus", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_G2s = ext_grs_lookup_op("G2s"); - grs_op_G2s = grs_op_G2s ? grs_op_G2s : new_ir_op(get_next_ir_opcode(), "G2s", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Node = ext_grs_lookup_op("Node"); - grs_op_Node = grs_op_Node ? grs_op_Node : new_ir_op(get_next_ir_opcode(), "Node", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Not = ext_grs_lookup_op("Not"); - grs_op_Not = grs_op_Not ? grs_op_Not : new_ir_op(get_next_ir_opcode(), "Not", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Add = ext_grs_lookup_op("Add"); - grs_op_Add = grs_op_Add ? grs_op_Add : new_ir_op(get_next_ir_opcode(), "Add", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Enum = ext_grs_lookup_op("Enum"); - grs_op_Enum = grs_op_Enum ? grs_op_Enum : new_ir_op(get_next_ir_opcode(), "Enum", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Intrinsic_sse_sse = ext_grs_lookup_op("Intrinsic_sse_sse"); - grs_op_Intrinsic_sse_sse = grs_op_Intrinsic_sse_sse ? grs_op_Intrinsic_sse_sse : new_ir_op(get_next_ir_opcode(), "Intrinsic_sse_sse", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_CallBegin = ext_grs_lookup_op("CallBegin"); - grs_op_CallBegin = grs_op_CallBegin ? grs_op_CallBegin : new_ir_op(get_next_ir_opcode(), "CallBegin", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Right_load_helper = ext_grs_lookup_op("Right_load_helper"); - grs_op_Right_load_helper = grs_op_Right_load_helper ? grs_op_Right_load_helper : new_ir_op(get_next_ir_opcode(), "Right_load_helper", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_G2s_allowed = ext_grs_lookup_op("G2s_allowed"); - grs_op_G2s_allowed = grs_op_G2s_allowed ? grs_op_G2s_allowed : new_ir_op(get_next_ir_opcode(), "G2s_allowed", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_IgnoreCF_IR_node = ext_grs_lookup_op("IgnoreCF_IR_node"); - grs_op_IgnoreCF_IR_node = grs_op_IgnoreCF_IR_node ? grs_op_IgnoreCF_IR_node : new_ir_op(get_next_ir_opcode(), "IgnoreCF_IR_node", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Vop = ext_grs_lookup_op("Vop"); - grs_op_Vop = grs_op_Vop ? grs_op_Vop : new_ir_op(get_next_ir_opcode(), "Vop", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Sub = ext_grs_lookup_op("Sub"); - grs_op_Sub = grs_op_Sub ? grs_op_Sub : new_ir_op(get_next_ir_opcode(), "Sub", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_V4 = ext_grs_lookup_op("V4"); - grs_op_V4 = grs_op_V4 ? grs_op_V4 : new_ir_op(get_next_ir_opcode(), "V4", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Intrinsic_sse_reg_sse = ext_grs_lookup_op("Intrinsic_sse_reg_sse"); - grs_op_Intrinsic_sse_reg_sse = grs_op_Intrinsic_sse_reg_sse ? grs_op_Intrinsic_sse_reg_sse : new_ir_op(get_next_ir_opcode(), "Intrinsic_sse_reg_sse", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Raise = ext_grs_lookup_op("Raise"); - grs_op_Raise = grs_op_Raise ? grs_op_Raise : new_ir_op(get_next_ir_opcode(), "Raise", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Blocked = ext_grs_lookup_op("Blocked"); - grs_op_Blocked = grs_op_Blocked ? grs_op_Blocked : new_ir_op(get_next_ir_opcode(), "Blocked", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Jmp = ext_grs_lookup_op("Jmp"); - grs_op_Jmp = grs_op_Jmp ? grs_op_Jmp : new_ir_op(get_next_ir_opcode(), "Jmp", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Arithmetic = ext_grs_lookup_op("Arithmetic"); - grs_op_Arithmetic = grs_op_Arithmetic ? grs_op_Arithmetic : new_ir_op(get_next_ir_opcode(), "Arithmetic", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Mux = ext_grs_lookup_op("Mux"); - grs_op_Mux = grs_op_Mux ? grs_op_Mux : new_ir_op(get_next_ir_opcode(), "Mux", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_max = ext_grs_lookup_op("max"); - grs_op_max = grs_op_max ? grs_op_max : new_ir_op(get_next_ir_opcode(), "max", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_G2s_param = ext_grs_lookup_op("G2s_param"); - grs_op_G2s_param = grs_op_G2s_param ? grs_op_G2s_param : new_ir_op(get_next_ir_opcode(), "G2s_param", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_DivMod = ext_grs_lookup_op("DivMod"); - grs_op_DivMod = grs_op_DivMod ? grs_op_DivMod : new_ir_op(get_next_ir_opcode(), "DivMod", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_LoadStore = ext_grs_lookup_op("LoadStore"); - grs_op_LoadStore = grs_op_LoadStore ? grs_op_LoadStore : new_ir_op(get_next_ir_opcode(), "LoadStore", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Non_replace = ext_grs_lookup_op("Non_replace"); - grs_op_Non_replace = grs_op_Non_replace ? grs_op_Non_replace : new_ir_op(get_next_ir_opcode(), "Non_replace", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Non_output_Ir_node = ext_grs_lookup_op("Non_output_Ir_node"); - grs_op_Non_output_Ir_node = grs_op_Non_output_Ir_node ? grs_op_Non_output_Ir_node : new_ir_op(get_next_ir_opcode(), "Non_output_Ir_node", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Meth_entity = ext_grs_lookup_op("Meth_entity"); - grs_op_Meth_entity = grs_op_Meth_entity ? grs_op_Meth_entity : new_ir_op(get_next_ir_opcode(), "Meth_entity", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Non_pattern = ext_grs_lookup_op("Non_pattern"); - grs_op_Non_pattern = grs_op_Non_pattern ? grs_op_Non_pattern : new_ir_op(get_next_ir_opcode(), "Non_pattern", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Sel = ext_grs_lookup_op("Sel"); - grs_op_Sel = grs_op_Sel ? grs_op_Sel : new_ir_op(get_next_ir_opcode(), "Sel", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Mode_marker = ext_grs_lookup_op("Mode_marker"); - grs_op_Mode_marker = grs_op_Mode_marker ? grs_op_Mode_marker : new_ir_op(get_next_ir_opcode(), "Mode_marker", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_VMode = ext_grs_lookup_op("VMode"); - grs_op_VMode = grs_op_VMode ? grs_op_VMode : new_ir_op(get_next_ir_opcode(), "VMode", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Last_left_load = ext_grs_lookup_op("Last_left_load"); - grs_op_Last_left_load = grs_op_Last_left_load ? grs_op_Last_left_load : new_ir_op(get_next_ir_opcode(), "Last_left_load", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Struct = ext_grs_lookup_op("Struct"); - grs_op_Struct = grs_op_Struct ? grs_op_Struct : new_ir_op(get_next_ir_opcode(), "Struct", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_V4pi_1 = ext_grs_lookup_op("V4pi_1"); - grs_op_V4pi_1 = grs_op_V4pi_1 ? grs_op_V4pi_1 : new_ir_op(get_next_ir_opcode(), "V4pi_1", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_EndExcept = ext_grs_lookup_op("EndExcept"); - grs_op_EndExcept = grs_op_EndExcept ? grs_op_EndExcept : new_ir_op(get_next_ir_opcode(), "EndExcept", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Store = ext_grs_lookup_op("Store"); - grs_op_Store = grs_op_Store ? grs_op_Store : new_ir_op(get_next_ir_opcode(), "Store", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_IgnoreCF_Conv = ext_grs_lookup_op("IgnoreCF_Conv"); - grs_op_IgnoreCF_Conv = grs_op_IgnoreCF_Conv ? grs_op_IgnoreCF_Conv : new_ir_op(get_next_ir_opcode(), "IgnoreCF_Conv", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_V4pi_4 = ext_grs_lookup_op("V4pi_4"); - grs_op_V4pi_4 = grs_op_V4pi_4 ? grs_op_V4pi_4 : new_ir_op(get_next_ir_opcode(), "V4pi_4", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Load = ext_grs_lookup_op("Load"); - grs_op_Load = grs_op_Load ? grs_op_Load : new_ir_op(get_next_ir_opcode(), "Load", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Right_blocked = ext_grs_lookup_op("Right_blocked"); - grs_op_Right_blocked = grs_op_Right_blocked ? grs_op_Right_blocked : new_ir_op(get_next_ir_opcode(), "Right_blocked", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_G2s_r128_int_4 = ext_grs_lookup_op("G2s_r128_int_4"); - grs_op_G2s_r128_int_4 = grs_op_G2s_r128_int_4 ? grs_op_G2s_r128_int_4 : new_ir_op(get_next_ir_opcode(), "G2s_r128_int_4", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_CMOV = ext_grs_lookup_op("CMOV"); - grs_op_CMOV = grs_op_CMOV ? grs_op_CMOV : new_ir_op(get_next_ir_opcode(), "CMOV", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Negative = ext_grs_lookup_op("Negative"); - grs_op_Negative = grs_op_Negative ? grs_op_Negative : new_ir_op(get_next_ir_opcode(), "Negative", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Intrinsic_addr_sse_store = ext_grs_lookup_op("Intrinsic_addr_sse_store"); - grs_op_Intrinsic_addr_sse_store = grs_op_Intrinsic_addr_sse_store ? grs_op_Intrinsic_addr_sse_store : new_ir_op(get_next_ir_opcode(), "Intrinsic_addr_sse_store", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_SymConst = ext_grs_lookup_op("SymConst"); - grs_op_SymConst = grs_op_SymConst ? grs_op_SymConst : new_ir_op(get_next_ir_opcode(), "SymConst", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Intrinsic_addr_sse = ext_grs_lookup_op("Intrinsic_addr_sse"); - grs_op_Intrinsic_addr_sse = grs_op_Intrinsic_addr_sse ? grs_op_Intrinsic_addr_sse : new_ir_op(get_next_ir_opcode(), "Intrinsic_addr_sse", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Associative = ext_grs_lookup_op("Associative"); - grs_op_Associative = grs_op_Associative ? grs_op_Associative : new_ir_op(get_next_ir_opcode(), "Associative", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_V2Store = ext_grs_lookup_op("V2Store"); - grs_op_V2Store = grs_op_V2Store ? grs_op_V2Store : new_ir_op(get_next_ir_opcode(), "V2Store", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Cast = ext_grs_lookup_op("Cast"); - grs_op_Cast = grs_op_Cast ? grs_op_Cast : new_ir_op(get_next_ir_opcode(), "Cast", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Mod = ext_grs_lookup_op("Mod"); - grs_op_Mod = grs_op_Mod ? grs_op_Mod : new_ir_op(get_next_ir_opcode(), "Mod", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Unknown = ext_grs_lookup_op("Unknown"); - grs_op_Unknown = grs_op_Unknown ? grs_op_Unknown : new_ir_op(get_next_ir_opcode(), "Unknown", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Visual_helper = ext_grs_lookup_op("Visual_helper"); - grs_op_Visual_helper = grs_op_Visual_helper ? grs_op_Visual_helper : new_ir_op(get_next_ir_opcode(), "Visual_helper", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Rot = ext_grs_lookup_op("Rot"); - grs_op_Rot = grs_op_Rot ? grs_op_Rot : new_ir_op(get_next_ir_opcode(), "Rot", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Div = ext_grs_lookup_op("Div"); - grs_op_Div = grs_op_Div ? grs_op_Div : new_ir_op(get_next_ir_opcode(), "Div", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_ASM_Block = ext_grs_lookup_op("ASM_Block"); - grs_op_ASM_Block = grs_op_ASM_Block ? grs_op_ASM_Block : new_ir_op(get_next_ir_opcode(), "ASM_Block", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Shl = ext_grs_lookup_op("Shl"); - grs_op_Shl = grs_op_Shl ? grs_op_Shl : new_ir_op(get_next_ir_opcode(), "Shl", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Cond = ext_grs_lookup_op("Cond"); - grs_op_Cond = grs_op_Cond ? grs_op_Cond : new_ir_op(get_next_ir_opcode(), "Cond", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_V2pi_2 = ext_grs_lookup_op("V2pi_2"); - grs_op_V2pi_2 = grs_op_V2pi_2 ? grs_op_V2pi_2 : new_ir_op(get_next_ir_opcode(), "V2pi_2", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Intrinsic_reg_sse_sse = ext_grs_lookup_op("Intrinsic_reg_sse_sse"); - grs_op_Intrinsic_reg_sse_sse = grs_op_Intrinsic_reg_sse_sse ? grs_op_Intrinsic_reg_sse_sse : new_ir_op(get_next_ir_opcode(), "Intrinsic_reg_sse_sse", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Method_IRG = ext_grs_lookup_op("Method_IRG"); - grs_op_Method_IRG = grs_op_Method_IRG ? grs_op_Method_IRG : new_ir_op(get_next_ir_opcode(), "Method_IRG", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Class = ext_grs_lookup_op("Class"); - grs_op_Class = grs_op_Class ? grs_op_Class : new_ir_op(get_next_ir_opcode(), "Class", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Quot = ext_grs_lookup_op("Quot"); - grs_op_Quot = grs_op_Quot ? grs_op_Quot : new_ir_op(get_next_ir_opcode(), "Quot", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Mode = ext_grs_lookup_op("Mode"); - grs_op_Mode = grs_op_Mode ? grs_op_Mode : new_ir_op(get_next_ir_opcode(), "Mode", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_StartBlock = ext_grs_lookup_op("StartBlock"); - grs_op_StartBlock = grs_op_StartBlock ? grs_op_StartBlock : new_ir_op(get_next_ir_opcode(), "StartBlock", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Return = ext_grs_lookup_op("Return"); - grs_op_Return = grs_op_Return ? grs_op_Return : new_ir_op(get_next_ir_opcode(), "Return", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Intrinsic_addr_addr_store = ext_grs_lookup_op("Intrinsic_addr_addr_store"); - grs_op_Intrinsic_addr_addr_store = grs_op_Intrinsic_addr_addr_store ? grs_op_Intrinsic_addr_addr_store : new_ir_op(get_next_ir_opcode(), "Intrinsic_addr_addr_store", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_NoMem = ext_grs_lookup_op("NoMem"); - grs_op_NoMem = grs_op_NoMem ? grs_op_NoMem : new_ir_op(get_next_ir_opcode(), "NoMem", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); -} /* init node ops and modes */ - -/* functions for evaluation of conditions of action KillAllButEnd */ - -/* functions for building the pattern of action KillAllButEnd */ -static _inline ext_grs_action_t *grs_action_KillAllButEnd_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "KillAllButEnd"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(x) = IR_node \ [node type End]*/ - ext_grs_node_t *n_x = ext_grs_act_add_node(pattern, "x", grs_op_IR_node, mode_ANY, 0); - - /* The edges of the pattern */ - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* KillAllButEnd */ - - -/* functions for evaluation of conditions of action KillBlock */ - -/* functions for building the pattern of action KillBlock */ -static _inline ext_grs_action_t *grs_action_KillBlock_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "KillBlock"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(b) = Block \ []*/ - ext_grs_node_t *n_b = ext_grs_act_add_node(pattern, "b", grs_op_Block, mode_ANY, 0); - - /* The edges of the pattern */ - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* KillBlock */ - - -/* functions for evaluation of conditions of action KillCall */ - -/* functions for building the pattern of action KillCall */ -static _inline ext_grs_action_t *grs_action_KillCall_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "KillCall"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(x) = Call \ []*/ - ext_grs_node_t *n_x = ext_grs_act_add_node(pattern, "x", grs_op_Call, mode_ANY, 0); - - /* The edges of the pattern */ - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* KillCall */ - - -/* functions for evaluation of conditions of action KillConst */ - -/* functions for building the pattern of action KillConst */ -static _inline ext_grs_action_t *grs_action_KillConst_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "KillConst"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(b) = Const \ []*/ - ext_grs_node_t *n_b = ext_grs_act_add_node(pattern, "b", grs_op_Const, mode_ANY, 0); - - /* The edges of the pattern */ - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* KillConst */ - - -/* functions for evaluation of conditions of action KillEntity */ - -/* functions for building the pattern of action KillEntity */ -static _inline ext_grs_action_t *grs_action_KillEntity_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "KillEntity"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(e) = Entity \ []*/ - ext_grs_node_t *n_e = ext_grs_act_add_node(pattern, "e", grs_op_Entity, mode_ANY, 0); - - /* The edges of the pattern */ - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* KillEntity */ - - -/* functions for evaluation of conditions of action KillMemoryEdges */ - -/* functions for building the pattern of action KillMemoryEdges */ -static _inline ext_grs_action_t *grs_action_KillMemoryEdges_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "KillMemoryEdges"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(y) = Node \ []*/ - ext_grs_node_t *n_y = ext_grs_act_add_node(pattern, "y", grs_op_Node, mode_ANY, 0); - /* TODO typeof(x) = Node \ []*/ - ext_grs_node_t *n_x = ext_grs_act_add_node(pattern, "x", grs_op_Node, mode_ANY, 1); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge0 = ext_grs_act_add_edge(pattern, "_edge0", ext_grs_NO_EDGE_POS, n_y, n_x, 0); - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* KillMemoryEdges */ - - -/* functions for evaluation of conditions of action KillMethod_IRG */ - -/* functions for building the pattern of action KillMethod_IRG */ -static _inline ext_grs_action_t *grs_action_KillMethod_IRG_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "KillMethod_IRG"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(b) = Method_IRG \ []*/ - ext_grs_node_t *n_b = ext_grs_act_add_node(pattern, "b", grs_op_Method_IRG, mode_ANY, 0); - - /* The edges of the pattern */ - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* KillMethod_IRG */ - - -/* functions for evaluation of conditions of action KillMode */ - -/* functions for building the pattern of action KillMode */ -static _inline ext_grs_action_t *grs_action_KillMode_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "KillMode"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(m) = Mode \ []*/ - ext_grs_node_t *n_m = ext_grs_act_add_node(pattern, "m", grs_op_Mode, mode_ANY, 0); - - /* The edges of the pattern */ - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* KillMode */ - - -/* functions for evaluation of conditions of action KillType */ - -/* functions for building the pattern of action KillType */ -static _inline ext_grs_action_t *grs_action_KillType_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "KillType"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(t) = Type \ []*/ - ext_grs_node_t *n_t = ext_grs_act_add_node(pattern, "t", grs_op_Type, mode_ANY, 0); - - /* The edges of the pattern */ - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* KillType */ - - -/* functions for evaluation of conditions of action KillUselessConv */ -static int grs_cond_func_9202(ir_node **node_map, const ir_edge_t **edge_map) { - return 0 /* TODO attr access */ <= 0 /* TODO attr access */; -} - -/* functions for building the pattern of action KillUselessConv */ -static _inline ext_grs_action_t *grs_action_KillUselessConv_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "KillUselessConv"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(m) = Mode \ []*/ - ext_grs_node_t *n_m = ext_grs_act_add_node(pattern, "m", grs_op_Mode, mode_ANY, 0); -/* mode edge: edge $edge5*/ - /* TODO typeof(c2) = Conv \ []*/ - ext_grs_node_t *n_c2 = ext_grs_act_add_node(pattern, "c2", grs_op_Conv, mode_ANY, 1); - /* TODO typeof(m1) = Mode \ []*/ - ext_grs_node_t *n_m1 = ext_grs_act_add_node(pattern, "m1", grs_op_Mode, mode_ANY, 2); -/* mode edge: edge $edge6*/ - /* TODO typeof(b) = IR_node \ []*/ - ext_grs_node_t *n_b = ext_grs_act_add_node(pattern, "b", grs_op_IR_node, mode_ANY, 3); -/* mode edge: edge $edge4*/ - /* TODO typeof(c1) = Conv \ []*/ - ext_grs_node_t *n_c1 = ext_grs_act_add_node(pattern, "c1", grs_op_Conv, mode_ANY, 4); -/* mode edge: edge $edge3*/ - /* TODO typeof(a) = IR_node \ []*/ - ext_grs_node_t *n_a = ext_grs_act_add_node(pattern, "a", grs_op_IR_node, mode_ANY, 5); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge3 = ext_grs_act_add_edge(pattern, "_edge3", ext_grs_NO_EDGE_POS, n_m, n_a, 0); - ext_grs_edge_t *e__edge5 = ext_grs_act_add_edge(pattern, "_edge5", ext_grs_NO_EDGE_POS, n_m, n_c2, 1); - ext_grs_edge_t *e__edge1 = ext_grs_act_add_edge(pattern, "_edge1", ext_grs_NO_EDGE_POS, n_c2, n_c1, 2); - ext_grs_edge_t *e__edge0 = ext_grs_act_add_edge(pattern, "_edge0", ext_grs_NO_EDGE_POS, n_c1, n_a, 3); - ext_grs_edge_t *e__edge6 = ext_grs_act_add_edge(pattern, "_edge6", ext_grs_NO_EDGE_POS, n_m, n_b, 4); - ext_grs_edge_t *e__edge2 = ext_grs_act_add_edge(pattern, "_edge2", ext_grs_NO_EDGE_POS, n_b, n_c2, 5); - ext_grs_edge_t *e__edge4 = ext_grs_act_add_edge(pattern, "_edge4", ext_grs_NO_EDGE_POS, n_m1, n_c1, 6); - - /* The conditions of the pattern */ - { /* if */ - ext_grs_node_t *nodes[2] = {n_m, n_m1}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_9202, pattern, 2, nodes, 0, edges); - } /* if */ - - /* The negative parts of the pattern */ - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* KillUselessConv */ - - -/* functions for evaluation of conditions of action MAX */ - -/* functions for building the pattern of action MAX */ -static _inline ext_grs_action_t *grs_action_MAX_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "MAX"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(y) = IR_node \ []*/ - ext_grs_node_t *n_y = ext_grs_act_add_node(pattern, "y", grs_op_IR_node, mode_ANY, 0); - /* TODO typeof(bb1) = Block \ []*/ - ext_grs_node_t *n_bb1 = ext_grs_act_add_node(pattern, "bb1", grs_op_Block, mode_ANY, 1); - /* TODO typeof(irg) = Method_IRG \ []*/ - ext_grs_node_t *n_irg = ext_grs_act_add_node(pattern, "irg", grs_op_Method_IRG, mode_ANY, 2); - /* TODO typeof(cmp) = Cmp \ []*/ - ext_grs_node_t *n_cmp = ext_grs_act_add_node(pattern, "cmp", grs_op_Cmp, mode_ANY, 3); - /* TODO typeof(Pb) = Proj \ []*/ - ext_grs_node_t *n_Pb = ext_grs_act_add_node(pattern, "Pb", grs_op_Proj, mode_ANY, 4); - /* TODO typeof(cnd) = Cond \ []*/ - ext_grs_node_t *n_cnd = ext_grs_act_add_node(pattern, "cnd", grs_op_Cond, mode_ANY, 5); - /* TODO typeof(Px1) = Proj \ []*/ - ext_grs_node_t *n_Px1 = ext_grs_act_add_node(pattern, "Px1", grs_op_Proj, mode_ANY, 6); - /* TODO typeof(phi) = Phi \ []*/ - ext_grs_node_t *n_phi = ext_grs_act_add_node(pattern, "phi", grs_op_Phi, mode_ANY, 7); - /* TODO typeof(Px0) = Proj \ []*/ - ext_grs_node_t *n_Px0 = ext_grs_act_add_node(pattern, "Px0", grs_op_Proj, mode_ANY, 8); - /* TODO typeof(bb0) = Block \ []*/ - ext_grs_node_t *n_bb0 = ext_grs_act_add_node(pattern, "bb0", grs_op_Block, mode_ANY, 9); - /* TODO typeof(x) = IR_node \ []*/ - ext_grs_node_t *n_x = ext_grs_act_add_node(pattern, "x", grs_op_IR_node, mode_ANY, 10); - /* TODO typeof(jmp) = Jmp \ []*/ - ext_grs_node_t *n_jmp = ext_grs_act_add_node(pattern, "jmp", grs_op_Jmp, mode_ANY, 11); - /* TODO typeof(bb) = Block \ []*/ - ext_grs_node_t *n_bb = ext_grs_act_add_node(pattern, "bb", grs_op_Block, mode_ANY, 12); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge3 = ext_grs_act_add_edge(pattern, "_edge3", ext_grs_NO_EDGE_POS, n_Pb, n_cnd, 0); - ext_grs_edge_t *e__edge15 = ext_grs_act_add_edge(pattern, "_edge15", ext_grs_NO_EDGE_POS, n_irg, n_bb, 1); - ext_grs_edge_t *e__edge0 = ext_grs_act_add_edge(pattern, "_edge0", ext_grs_NO_EDGE_POS, n_x, n_cmp, 2); - ext_grs_edge_t *e__edge6 = ext_grs_act_add_edge(pattern, "_edge6", ext_grs_NO_EDGE_POS, n_cnd, n_Px1, 3); - ext_grs_edge_t *e__edge11 = ext_grs_act_add_edge(pattern, "_edge11", ext_grs_NO_EDGE_POS, n_bb, n_Px0, 4); - ext_grs_edge_t *e__edge12 = ext_grs_act_add_edge(pattern, "_edge12", ext_grs_NO_EDGE_POS, n_bb, n_Px1, 5); - ext_grs_edge_t *e__edge4 = ext_grs_act_add_edge(pattern, "_edge4", ext_grs_NO_EDGE_POS, n_Px0, n_bb0, 6); - ext_grs_edge_t *e__edge16 = ext_grs_act_add_edge(pattern, "_edge16", ext_grs_NO_EDGE_POS, n_irg, n_bb0, 7); - ext_grs_edge_t *e__edge5 = ext_grs_act_add_edge(pattern, "_edge5", ext_grs_NO_EDGE_POS, n_cnd, n_Px0, 8); - ext_grs_edge_t *e__edge1 = ext_grs_act_add_edge(pattern, "_edge1", ext_grs_NO_EDGE_POS, n_y, n_cmp, 9); - ext_grs_edge_t *e__edge7 = ext_grs_act_add_edge(pattern, "_edge7", ext_grs_NO_EDGE_POS, n_Px1, n_bb1, 10); - ext_grs_edge_t *e__edge13 = ext_grs_act_add_edge(pattern, "_edge13", ext_grs_NO_EDGE_POS, n_bb0, n_jmp, 11); - ext_grs_edge_t *e__edge17 = ext_grs_act_add_edge(pattern, "_edge17", ext_grs_NO_EDGE_POS, n_irg, n_bb1, 12); - ext_grs_edge_t *e__edge14 = ext_grs_act_add_edge(pattern, "_edge14", ext_grs_NO_EDGE_POS, n_bb1, n_phi, 13); - ext_grs_edge_t *e__edge8 = ext_grs_act_add_edge(pattern, "_edge8", ext_grs_NO_EDGE_POS, n_jmp, n_bb1, 14); - ext_grs_edge_t *e__edge10 = ext_grs_act_add_edge(pattern, "_edge10", ext_grs_NO_EDGE_POS, n_y, n_phi, 15); - ext_grs_edge_t *e__edge2 = ext_grs_act_add_edge(pattern, "_edge2", ext_grs_NO_EDGE_POS, n_cmp, n_Pb, 16); - ext_grs_edge_t *e__edge9 = ext_grs_act_add_edge(pattern, "_edge9", ext_grs_NO_EDGE_POS, n_x, n_phi, 17); - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* MAX */ - - -/* functions for evaluation of conditions of action MAX2 */ - -/* functions for building the pattern of action MAX2 */ -static _inline ext_grs_action_t *grs_action_MAX2_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "MAX2"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(y) = IR_node \ []*/ - ext_grs_node_t *n_y = ext_grs_act_add_node(pattern, "y", grs_op_IR_node, mode_ANY, 0); - /* TODO typeof(bb1) = Block \ []*/ - ext_grs_node_t *n_bb1 = ext_grs_act_add_node(pattern, "bb1", grs_op_Block, mode_ANY, 1); - /* TODO typeof(irg) = Method_IRG \ []*/ - ext_grs_node_t *n_irg = ext_grs_act_add_node(pattern, "irg", grs_op_Method_IRG, mode_ANY, 2); - /* TODO typeof(cmp) = Cmp \ []*/ - ext_grs_node_t *n_cmp = ext_grs_act_add_node(pattern, "cmp", grs_op_Cmp, mode_ANY, 3); - /* TODO typeof(Pb) = Proj \ []*/ - ext_grs_node_t *n_Pb = ext_grs_act_add_node(pattern, "Pb", grs_op_Proj, mode_ANY, 4); - /* TODO typeof(cnd) = Cond \ []*/ - ext_grs_node_t *n_cnd = ext_grs_act_add_node(pattern, "cnd", grs_op_Cond, mode_ANY, 5); - /* TODO typeof(Px1) = Proj \ []*/ - ext_grs_node_t *n_Px1 = ext_grs_act_add_node(pattern, "Px1", grs_op_Proj, mode_ANY, 6); - /* TODO typeof(phi) = Phi \ []*/ - ext_grs_node_t *n_phi = ext_grs_act_add_node(pattern, "phi", grs_op_Phi, mode_ANY, 7); - /* TODO typeof(Px0) = Proj \ []*/ - ext_grs_node_t *n_Px0 = ext_grs_act_add_node(pattern, "Px0", grs_op_Proj, mode_ANY, 8); - /* TODO typeof(bb0) = Block \ []*/ - ext_grs_node_t *n_bb0 = ext_grs_act_add_node(pattern, "bb0", grs_op_Block, mode_ANY, 9); - /* TODO typeof(x) = IR_node \ []*/ - ext_grs_node_t *n_x = ext_grs_act_add_node(pattern, "x", grs_op_IR_node, mode_ANY, 10); - /* TODO typeof(jmp) = Jmp \ []*/ - ext_grs_node_t *n_jmp = ext_grs_act_add_node(pattern, "jmp", grs_op_Jmp, mode_ANY, 11); - /* TODO typeof(bb) = Block \ []*/ - ext_grs_node_t *n_bb = ext_grs_act_add_node(pattern, "bb", grs_op_Block, mode_ANY, 12); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge3 = ext_grs_act_add_edge(pattern, "_edge3", ext_grs_NO_EDGE_POS, n_Pb, n_cnd, 0); - ext_grs_edge_t *e__edge15 = ext_grs_act_add_edge(pattern, "_edge15", ext_grs_NO_EDGE_POS, n_irg, n_bb, 1); - ext_grs_edge_t *e__edge0 = ext_grs_act_add_edge(pattern, "_edge0", ext_grs_NO_EDGE_POS, n_x, n_cmp, 2); - ext_grs_edge_t *e__edge6 = ext_grs_act_add_edge(pattern, "_edge6", ext_grs_NO_EDGE_POS, n_cnd, n_Px1, 3); - ext_grs_edge_t *e__edge11 = ext_grs_act_add_edge(pattern, "_edge11", ext_grs_NO_EDGE_POS, n_bb, n_Px0, 4); - ext_grs_edge_t *e__edge12 = ext_grs_act_add_edge(pattern, "_edge12", ext_grs_NO_EDGE_POS, n_bb, n_Px1, 5); - ext_grs_edge_t *e__edge4 = ext_grs_act_add_edge(pattern, "_edge4", ext_grs_NO_EDGE_POS, n_Px0, n_bb0, 6); - ext_grs_edge_t *e__edge16 = ext_grs_act_add_edge(pattern, "_edge16", ext_grs_NO_EDGE_POS, n_irg, n_bb0, 7); - ext_grs_edge_t *e__edge5 = ext_grs_act_add_edge(pattern, "_edge5", ext_grs_NO_EDGE_POS, n_cnd, n_Px0, 8); - ext_grs_edge_t *e__edge1 = ext_grs_act_add_edge(pattern, "_edge1", ext_grs_NO_EDGE_POS, n_y, n_cmp, 9); - ext_grs_edge_t *e__edge7 = ext_grs_act_add_edge(pattern, "_edge7", ext_grs_NO_EDGE_POS, n_Px1, n_bb1, 10); - ext_grs_edge_t *e__edge13 = ext_grs_act_add_edge(pattern, "_edge13", ext_grs_NO_EDGE_POS, n_bb0, n_jmp, 11); - ext_grs_edge_t *e__edge17 = ext_grs_act_add_edge(pattern, "_edge17", ext_grs_NO_EDGE_POS, n_irg, n_bb1, 12); - ext_grs_edge_t *e__edge14 = ext_grs_act_add_edge(pattern, "_edge14", ext_grs_NO_EDGE_POS, n_bb1, n_phi, 13); - ext_grs_edge_t *e__edge8 = ext_grs_act_add_edge(pattern, "_edge8", ext_grs_NO_EDGE_POS, n_jmp, n_bb1, 14); - ext_grs_edge_t *e__edge10 = ext_grs_act_add_edge(pattern, "_edge10", ext_grs_NO_EDGE_POS, n_y, n_phi, 15); - ext_grs_edge_t *e__edge2 = ext_grs_act_add_edge(pattern, "_edge2", ext_grs_NO_EDGE_POS, n_cmp, n_Pb, 16); - ext_grs_edge_t *e__edge9 = ext_grs_act_add_edge(pattern, "_edge9", ext_grs_NO_EDGE_POS, n_x, n_phi, 17); - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* MAX2 */ - - -/* functions for evaluation of conditions of action PBQP_0a */ - -/* functions for building the pattern of action PBQP_0a */ -static _inline ext_grs_action_t *grs_action_PBQP_0a_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "PBQP_0a"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(x) = IR_node \ []*/ - ext_grs_node_t *n_x = ext_grs_act_add_node(pattern, "x", grs_op_IR_node, mode_ANY, 0); - - /* The edges of the pattern */ - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - { /* NAC 0 */ - ext_grs_graph_t *pattern = ext_grs_act_impose_negative(act); - - /* The nodes of the pattern */ - /* TODO typeof(x_0) = IR_node \ []*/ - ext_grs_node_t *n_x_0 = ext_grs_act_add_related_node(pattern, "x_0", grs_op_IR_node, mode_ANY, 0, n_x); - /* TODO typeof(c) = IR_node \ []*/ - ext_grs_node_t *n_c = ext_grs_act_add_node(pattern, "c", grs_op_IR_node, mode_ANY, 1); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge0_1 = ext_grs_act_add_edge(pattern, "_edge0_1", ext_grs_NO_EDGE_POS, n_c, n_x_0, 0); - - /* The conditions of the pattern */ - } /* NAC 0 */ - - { /* NAC 1 */ - ext_grs_graph_t *pattern = ext_grs_act_impose_negative(act); - - /* The nodes of the pattern */ - /* TODO typeof(d) = IR_node \ []*/ - ext_grs_node_t *n_d = ext_grs_act_add_node(pattern, "d", grs_op_IR_node, mode_ANY, 2); - /* TODO typeof(x_2) = IR_node \ []*/ - ext_grs_node_t *n_x_2 = ext_grs_act_add_related_node(pattern, "x_2", grs_op_IR_node, mode_ANY, 0, n_x); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge0_3 = ext_grs_act_add_edge(pattern, "_edge0_3", ext_grs_NO_EDGE_POS, n_x_2, n_d, 1); - - /* The conditions of the pattern */ - } /* NAC 1 */ - - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* PBQP_0a */ - - -/* functions for evaluation of conditions of action PBQP_1a */ - -/* functions for building the pattern of action PBQP_1a */ -static _inline ext_grs_action_t *grs_action_PBQP_1a_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "PBQP_1a"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(x) = IR_node \ []*/ - ext_grs_node_t *n_x = ext_grs_act_add_node(pattern, "x", grs_op_IR_node, mode_ANY, 0); - /* TODO typeof(a) = IR_node \ []*/ - ext_grs_node_t *n_a = ext_grs_act_add_node(pattern, "a", grs_op_IR_node, mode_ANY, 1); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge0 = ext_grs_act_add_edge(pattern, "_edge0", ext_grs_NO_EDGE_POS, n_x, n_a, 0); - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - { /* NAC 0 */ - ext_grs_graph_t *pattern = ext_grs_act_impose_negative(act); - - /* The nodes of the pattern */ - /* TODO typeof(x_4) = IR_node \ []*/ - ext_grs_node_t *n_x_4 = ext_grs_act_add_related_node(pattern, "x_4", grs_op_IR_node, mode_ANY, 0, n_x); - /* TODO typeof(c) = IR_node \ []*/ - ext_grs_node_t *n_c = ext_grs_act_add_node(pattern, "c", grs_op_IR_node, mode_ANY, 2); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge0_5 = ext_grs_act_add_edge(pattern, "_edge0_5", ext_grs_NO_EDGE_POS, n_c, n_x_4, 1); - - /* The conditions of the pattern */ - } /* NAC 0 */ - - { /* NAC 1 */ - ext_grs_graph_t *pattern = ext_grs_act_impose_negative(act); - - /* The nodes of the pattern */ - /* TODO typeof(d) = IR_node \ []*/ - ext_grs_node_t *n_d = ext_grs_act_add_node(pattern, "d", grs_op_IR_node, mode_ANY, 3); - /* TODO typeof(x_6) = IR_node \ []*/ - ext_grs_node_t *n_x_6 = ext_grs_act_add_related_node(pattern, "x_6", grs_op_IR_node, mode_ANY, 0, n_x); - /* TODO typeof(a_7) = IR_node \ []*/ - ext_grs_node_t *n_a_7 = ext_grs_act_add_related_node(pattern, "a_7", grs_op_IR_node, mode_ANY, 1, n_a); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge0_8 = ext_grs_act_add_related_edge(pattern, "_edge0_8", ext_grs_NO_EDGE_POS, n_x_6, n_a_7, 0, e__edge0); - ext_grs_edge_t *e__edge0_9 = ext_grs_act_add_edge(pattern, "_edge0_9", ext_grs_NO_EDGE_POS, n_x_6, n_d, 2); - - /* The conditions of the pattern */ - } /* NAC 1 */ - - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* PBQP_1a */ - - -/* functions for evaluation of conditions of action PBQP_1b */ - -/* functions for building the pattern of action PBQP_1b */ -static _inline ext_grs_action_t *grs_action_PBQP_1b_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "PBQP_1b"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(x) = IR_node \ []*/ - ext_grs_node_t *n_x = ext_grs_act_add_node(pattern, "x", grs_op_IR_node, mode_ANY, 0); - /* TODO typeof(a) = IR_node \ []*/ - ext_grs_node_t *n_a = ext_grs_act_add_node(pattern, "a", grs_op_IR_node, mode_ANY, 1); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge0 = ext_grs_act_add_edge(pattern, "_edge0", ext_grs_NO_EDGE_POS, n_a, n_x, 0); - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - { /* NAC 0 */ - ext_grs_graph_t *pattern = ext_grs_act_impose_negative(act); - - /* The nodes of the pattern */ - /* TODO typeof(x_10) = IR_node \ []*/ - ext_grs_node_t *n_x_10 = ext_grs_act_add_related_node(pattern, "x_10", grs_op_IR_node, mode_ANY, 0, n_x); - /* TODO typeof(c) = IR_node \ []*/ - ext_grs_node_t *n_c = ext_grs_act_add_node(pattern, "c", grs_op_IR_node, mode_ANY, 2); - /* TODO typeof(a_11) = IR_node \ []*/ - ext_grs_node_t *n_a_11 = ext_grs_act_add_related_node(pattern, "a_11", grs_op_IR_node, mode_ANY, 1, n_a); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge0_12 = ext_grs_act_add_related_edge(pattern, "_edge0_12", ext_grs_NO_EDGE_POS, n_a_11, n_x_10, 0, e__edge0); - ext_grs_edge_t *e__edge0_13 = ext_grs_act_add_edge(pattern, "_edge0_13", ext_grs_NO_EDGE_POS, n_c, n_x_10, 1); - - /* The conditions of the pattern */ - } /* NAC 0 */ - - { /* NAC 1 */ - ext_grs_graph_t *pattern = ext_grs_act_impose_negative(act); - - /* The nodes of the pattern */ - /* TODO typeof(d) = IR_node \ []*/ - ext_grs_node_t *n_d = ext_grs_act_add_node(pattern, "d", grs_op_IR_node, mode_ANY, 3); - /* TODO typeof(x_14) = IR_node \ []*/ - ext_grs_node_t *n_x_14 = ext_grs_act_add_related_node(pattern, "x_14", grs_op_IR_node, mode_ANY, 0, n_x); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge0_15 = ext_grs_act_add_edge(pattern, "_edge0_15", ext_grs_NO_EDGE_POS, n_x_14, n_d, 2); - - /* The conditions of the pattern */ - } /* NAC 1 */ - - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* PBQP_1b */ - - -/* functions for evaluation of conditions of action PBQP_1c */ - -/* functions for building the pattern of action PBQP_1c */ -static _inline ext_grs_action_t *grs_action_PBQP_1c_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "PBQP_1c"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(x) = IR_node \ []*/ - ext_grs_node_t *n_x = ext_grs_act_add_node(pattern, "x", grs_op_IR_node, mode_ANY, 0); - /* TODO typeof(a) = IR_node \ []*/ - ext_grs_node_t *n_a = ext_grs_act_add_node(pattern, "a", grs_op_IR_node, mode_ANY, 1); - - /* The edges of the pattern */ - ext_grs_edge_t *e_e2 = ext_grs_act_add_edge(pattern, "e2", ext_grs_NO_EDGE_POS, n_a, n_x, 0); - ext_grs_edge_t *e_e1 = ext_grs_act_add_edge(pattern, "e1", ext_grs_NO_EDGE_POS, n_a, n_x, 1); - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* PBQP_1c */ - - -/* functions for evaluation of conditions of action PBQP_1d */ - -/* functions for building the pattern of action PBQP_1d */ -static _inline ext_grs_action_t *grs_action_PBQP_1d_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "PBQP_1d"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(x) = IR_node \ []*/ - ext_grs_node_t *n_x = ext_grs_act_add_node(pattern, "x", grs_op_IR_node, mode_ANY, 0); - /* TODO typeof(a) = IR_node \ []*/ - ext_grs_node_t *n_a = ext_grs_act_add_node(pattern, "a", grs_op_IR_node, mode_ANY, 1); - - /* The edges of the pattern */ - ext_grs_edge_t *e_e2 = ext_grs_act_add_edge(pattern, "e2", ext_grs_NO_EDGE_POS, n_x, n_a, 0); - ext_grs_edge_t *e_e1 = ext_grs_act_add_edge(pattern, "e1", ext_grs_NO_EDGE_POS, n_a, n_x, 1); - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* PBQP_1d */ - - -/* functions for evaluation of conditions of action PBQP_2a */ - -/* functions for building the pattern of action PBQP_2a */ -static _inline ext_grs_action_t *grs_action_PBQP_2a_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "PBQP_2a"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(b) = IR_node \ []*/ - ext_grs_node_t *n_b = ext_grs_act_add_node(pattern, "b", grs_op_IR_node, mode_ANY, 0); - /* TODO typeof(x) = IR_node \ []*/ - ext_grs_node_t *n_x = ext_grs_act_add_node(pattern, "x", grs_op_IR_node, mode_ANY, 1); - /* TODO typeof(a) = IR_node \ []*/ - ext_grs_node_t *n_a = ext_grs_act_add_node(pattern, "a", grs_op_IR_node, mode_ANY, 2); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge1 = ext_grs_act_add_edge(pattern, "_edge1", ext_grs_NO_EDGE_POS, n_x, n_b, 0); - ext_grs_edge_t *e__edge0 = ext_grs_act_add_edge(pattern, "_edge0", ext_grs_NO_EDGE_POS, n_a, n_x, 1); - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - { /* NAC 0 */ - ext_grs_graph_t *pattern = ext_grs_act_impose_negative(act); - - /* The nodes of the pattern */ - /* TODO typeof(x_16) = IR_node \ []*/ - ext_grs_node_t *n_x_16 = ext_grs_act_add_related_node(pattern, "x_16", grs_op_IR_node, mode_ANY, 1, n_x); - /* TODO typeof(c) = IR_node \ []*/ - ext_grs_node_t *n_c = ext_grs_act_add_node(pattern, "c", grs_op_IR_node, mode_ANY, 3); - /* TODO typeof(a_17) = IR_node \ []*/ - ext_grs_node_t *n_a_17 = ext_grs_act_add_related_node(pattern, "a_17", grs_op_IR_node, mode_ANY, 2, n_a); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge0_18 = ext_grs_act_add_related_edge(pattern, "_edge0_18", ext_grs_NO_EDGE_POS, n_a_17, n_x_16, 1, e__edge0); - ext_grs_edge_t *e__edge0_19 = ext_grs_act_add_edge(pattern, "_edge0_19", ext_grs_NO_EDGE_POS, n_c, n_x_16, 2); - - /* The conditions of the pattern */ - } /* NAC 0 */ - - { /* NAC 1 */ - ext_grs_graph_t *pattern = ext_grs_act_impose_negative(act); - - /* The nodes of the pattern */ - /* TODO typeof(d) = IR_node \ []*/ - ext_grs_node_t *n_d = ext_grs_act_add_node(pattern, "d", grs_op_IR_node, mode_ANY, 4); - /* TODO typeof(b_20) = IR_node \ []*/ - ext_grs_node_t *n_b_20 = ext_grs_act_add_related_node(pattern, "b_20", grs_op_IR_node, mode_ANY, 0, n_b); - /* TODO typeof(x_21) = IR_node \ []*/ - ext_grs_node_t *n_x_21 = ext_grs_act_add_related_node(pattern, "x_21", grs_op_IR_node, mode_ANY, 1, n_x); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge1_22 = ext_grs_act_add_related_edge(pattern, "_edge1_22", ext_grs_NO_EDGE_POS, n_x_21, n_b_20, 0, e__edge1); - ext_grs_edge_t *e__edge0_23 = ext_grs_act_add_edge(pattern, "_edge0_23", ext_grs_NO_EDGE_POS, n_x_21, n_d, 3); - - /* The conditions of the pattern */ - } /* NAC 1 */ - - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* PBQP_2a */ - - -/* functions for evaluation of conditions of action PBQP_2b */ - -/* functions for building the pattern of action PBQP_2b */ -static _inline ext_grs_action_t *grs_action_PBQP_2b_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "PBQP_2b"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(b) = IR_node \ []*/ - ext_grs_node_t *n_b = ext_grs_act_add_node(pattern, "b", grs_op_IR_node, mode_ANY, 0); - /* TODO typeof(x) = IR_node \ []*/ - ext_grs_node_t *n_x = ext_grs_act_add_node(pattern, "x", grs_op_IR_node, mode_ANY, 1); - /* TODO typeof(a) = IR_node \ []*/ - ext_grs_node_t *n_a = ext_grs_act_add_node(pattern, "a", grs_op_IR_node, mode_ANY, 2); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge1 = ext_grs_act_add_edge(pattern, "_edge1", ext_grs_NO_EDGE_POS, n_b, n_x, 0); - ext_grs_edge_t *e__edge0 = ext_grs_act_add_edge(pattern, "_edge0", ext_grs_NO_EDGE_POS, n_x, n_a, 1); - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - { /* NAC 0 */ - ext_grs_graph_t *pattern = ext_grs_act_impose_negative(act); - - /* The nodes of the pattern */ - /* TODO typeof(b_24) = IR_node \ []*/ - ext_grs_node_t *n_b_24 = ext_grs_act_add_related_node(pattern, "b_24", grs_op_IR_node, mode_ANY, 0, n_b); - /* TODO typeof(x_25) = IR_node \ []*/ - ext_grs_node_t *n_x_25 = ext_grs_act_add_related_node(pattern, "x_25", grs_op_IR_node, mode_ANY, 1, n_x); - /* TODO typeof(c) = IR_node \ []*/ - ext_grs_node_t *n_c = ext_grs_act_add_node(pattern, "c", grs_op_IR_node, mode_ANY, 3); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge1_26 = ext_grs_act_add_related_edge(pattern, "_edge1_26", ext_grs_NO_EDGE_POS, n_b_24, n_x_25, 0, e__edge1); - ext_grs_edge_t *e__edge0_27 = ext_grs_act_add_edge(pattern, "_edge0_27", ext_grs_NO_EDGE_POS, n_c, n_x_25, 2); - - /* The conditions of the pattern */ - } /* NAC 0 */ - - { /* NAC 1 */ - ext_grs_graph_t *pattern = ext_grs_act_impose_negative(act); - - /* The nodes of the pattern */ - /* TODO typeof(d) = IR_node \ []*/ - ext_grs_node_t *n_d = ext_grs_act_add_node(pattern, "d", grs_op_IR_node, mode_ANY, 4); - /* TODO typeof(x_28) = IR_node \ []*/ - ext_grs_node_t *n_x_28 = ext_grs_act_add_related_node(pattern, "x_28", grs_op_IR_node, mode_ANY, 1, n_x); - /* TODO typeof(a_29) = IR_node \ []*/ - ext_grs_node_t *n_a_29 = ext_grs_act_add_related_node(pattern, "a_29", grs_op_IR_node, mode_ANY, 2, n_a); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge0_30 = ext_grs_act_add_related_edge(pattern, "_edge0_30", ext_grs_NO_EDGE_POS, n_x_28, n_a_29, 1, e__edge0); - ext_grs_edge_t *e__edge0_31 = ext_grs_act_add_edge(pattern, "_edge0_31", ext_grs_NO_EDGE_POS, n_x_28, n_d, 3); - - /* The conditions of the pattern */ - } /* NAC 1 */ - - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* PBQP_2b */ - - -/* functions for evaluation of conditions of action PBQP_2c */ - -/* functions for building the pattern of action PBQP_2c */ -static _inline ext_grs_action_t *grs_action_PBQP_2c_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "PBQP_2c"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(b) = IR_node \ []*/ - ext_grs_node_t *n_b = ext_grs_act_add_node(pattern, "b", grs_op_IR_node, mode_ANY, 0); - /* TODO typeof(x) = IR_node \ []*/ - ext_grs_node_t *n_x = ext_grs_act_add_node(pattern, "x", grs_op_IR_node, mode_ANY, 1); - /* TODO typeof(a) = IR_node \ []*/ - ext_grs_node_t *n_a = ext_grs_act_add_node(pattern, "a", grs_op_IR_node, mode_ANY, 2); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge1 = ext_grs_act_add_edge(pattern, "_edge1", ext_grs_NO_EDGE_POS, n_x, n_b, 0); - ext_grs_edge_t *e__edge0 = ext_grs_act_add_edge(pattern, "_edge0", ext_grs_NO_EDGE_POS, n_x, n_a, 1); - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - { /* NAC 0 */ - ext_grs_graph_t *pattern = ext_grs_act_impose_negative(act); - - /* The nodes of the pattern */ - /* TODO typeof(x_32) = IR_node \ []*/ - ext_grs_node_t *n_x_32 = ext_grs_act_add_related_node(pattern, "x_32", grs_op_IR_node, mode_ANY, 1, n_x); - /* TODO typeof(c) = IR_node \ []*/ - ext_grs_node_t *n_c = ext_grs_act_add_node(pattern, "c", grs_op_IR_node, mode_ANY, 3); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge0_33 = ext_grs_act_add_edge(pattern, "_edge0_33", ext_grs_NO_EDGE_POS, n_c, n_x_32, 2); - - /* The conditions of the pattern */ - } /* NAC 0 */ - - { /* NAC 1 */ - ext_grs_graph_t *pattern = ext_grs_act_impose_negative(act); - - /* The nodes of the pattern */ - /* TODO typeof(d) = IR_node \ []*/ - ext_grs_node_t *n_d = ext_grs_act_add_node(pattern, "d", grs_op_IR_node, mode_ANY, 4); - /* TODO typeof(b_34) = IR_node \ []*/ - ext_grs_node_t *n_b_34 = ext_grs_act_add_related_node(pattern, "b_34", grs_op_IR_node, mode_ANY, 0, n_b); - /* TODO typeof(x_35) = IR_node \ []*/ - ext_grs_node_t *n_x_35 = ext_grs_act_add_related_node(pattern, "x_35", grs_op_IR_node, mode_ANY, 1, n_x); - /* TODO typeof(a_36) = IR_node \ []*/ - ext_grs_node_t *n_a_36 = ext_grs_act_add_related_node(pattern, "a_36", grs_op_IR_node, mode_ANY, 2, n_a); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge1_37 = ext_grs_act_add_related_edge(pattern, "_edge1_37", ext_grs_NO_EDGE_POS, n_x_35, n_b_34, 0, e__edge1); - ext_grs_edge_t *e__edge0_38 = ext_grs_act_add_related_edge(pattern, "_edge0_38", ext_grs_NO_EDGE_POS, n_x_35, n_a_36, 1, e__edge0); - ext_grs_edge_t *e__edge0_39 = ext_grs_act_add_edge(pattern, "_edge0_39", ext_grs_NO_EDGE_POS, n_x_35, n_d, 3); - - /* The conditions of the pattern */ - } /* NAC 1 */ - - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* PBQP_2c */ - - -/* functions for evaluation of conditions of action PBQP_2d */ - -/* functions for building the pattern of action PBQP_2d */ -static _inline ext_grs_action_t *grs_action_PBQP_2d_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "PBQP_2d"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(b) = IR_node \ []*/ - ext_grs_node_t *n_b = ext_grs_act_add_node(pattern, "b", grs_op_IR_node, mode_ANY, 0); - /* TODO typeof(x) = IR_node \ []*/ - ext_grs_node_t *n_x = ext_grs_act_add_node(pattern, "x", grs_op_IR_node, mode_ANY, 1); - /* TODO typeof(a) = IR_node \ []*/ - ext_grs_node_t *n_a = ext_grs_act_add_node(pattern, "a", grs_op_IR_node, mode_ANY, 2); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge1 = ext_grs_act_add_edge(pattern, "_edge1", ext_grs_NO_EDGE_POS, n_b, n_x, 0); - ext_grs_edge_t *e__edge0 = ext_grs_act_add_edge(pattern, "_edge0", ext_grs_NO_EDGE_POS, n_a, n_x, 1); - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - { /* NAC 0 */ - ext_grs_graph_t *pattern = ext_grs_act_impose_negative(act); - - /* The nodes of the pattern */ - /* TODO typeof(b_40) = IR_node \ []*/ - ext_grs_node_t *n_b_40 = ext_grs_act_add_related_node(pattern, "b_40", grs_op_IR_node, mode_ANY, 0, n_b); - /* TODO typeof(x_41) = IR_node \ []*/ - ext_grs_node_t *n_x_41 = ext_grs_act_add_related_node(pattern, "x_41", grs_op_IR_node, mode_ANY, 1, n_x); - /* TODO typeof(c) = IR_node \ []*/ - ext_grs_node_t *n_c = ext_grs_act_add_node(pattern, "c", grs_op_IR_node, mode_ANY, 3); - /* TODO typeof(a_42) = IR_node \ []*/ - ext_grs_node_t *n_a_42 = ext_grs_act_add_related_node(pattern, "a_42", grs_op_IR_node, mode_ANY, 2, n_a); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge1_43 = ext_grs_act_add_related_edge(pattern, "_edge1_43", ext_grs_NO_EDGE_POS, n_b_40, n_x_41, 0, e__edge1); - ext_grs_edge_t *e__edge0_44 = ext_grs_act_add_related_edge(pattern, "_edge0_44", ext_grs_NO_EDGE_POS, n_a_42, n_x_41, 1, e__edge0); - ext_grs_edge_t *e__edge0_45 = ext_grs_act_add_edge(pattern, "_edge0_45", ext_grs_NO_EDGE_POS, n_c, n_x_41, 2); - - /* The conditions of the pattern */ - } /* NAC 0 */ - - { /* NAC 1 */ - ext_grs_graph_t *pattern = ext_grs_act_impose_negative(act); - - /* The nodes of the pattern */ - /* TODO typeof(d) = IR_node \ []*/ - ext_grs_node_t *n_d = ext_grs_act_add_node(pattern, "d", grs_op_IR_node, mode_ANY, 4); - /* TODO typeof(x_46) = IR_node \ []*/ - ext_grs_node_t *n_x_46 = ext_grs_act_add_related_node(pattern, "x_46", grs_op_IR_node, mode_ANY, 1, n_x); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge0_47 = ext_grs_act_add_edge(pattern, "_edge0_47", ext_grs_NO_EDGE_POS, n_x_46, n_d, 3); - - /* The conditions of the pattern */ - } /* NAC 1 */ - - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* PBQP_2d */ - - -/* functions for evaluation of conditions of action V2LD_a */ - -/* functions for building the pattern of action V2LD_a */ -static _inline ext_grs_action_t *grs_action_V2LD_a_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "V2LD_a"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(index) = IR_node \ []*/ - ext_grs_node_t *n_index = ext_grs_act_add_node(pattern, "index", grs_op_IR_node, mode_ANY, 0); - /* TODO typeof(m_2) = Mul \ []*/ - ext_grs_node_t *n_m_2 = ext_grs_act_add_node(pattern, "m_2", grs_op_Mul, mode_ANY, 1); - /* TODO typeof(ld_2) = Load \ []*/ - ext_grs_node_t *n_ld_2 = ext_grs_act_add_node(pattern, "ld_2", grs_op_Load, mode_ANY, 2); - /* TODO typeof(a1_2) = Add \ []*/ - ext_grs_node_t *n_a1_2 = ext_grs_act_add_node(pattern, "a1_2", grs_op_Add, mode_ANY, 3); - /* TODO typeof(ld_1) = Load \ []*/ - ext_grs_node_t *n_ld_1 = ext_grs_act_add_node(pattern, "ld_1", grs_op_Load, mode_ANY, 4); - /* TODO typeof(a2_2) = Add \ []*/ - ext_grs_node_t *n_a2_2 = ext_grs_act_add_node(pattern, "a2_2", grs_op_Add, mode_ANY, 5); - /* TODO typeof(m_1) = Mul \ []*/ - ext_grs_node_t *n_m_1 = ext_grs_act_add_node(pattern, "m_1", grs_op_Mul, mode_ANY, 6); - /* TODO typeof(a_1) = Add \ []*/ - ext_grs_node_t *n_a_1 = ext_grs_act_add_node(pattern, "a_1", grs_op_Add, mode_ANY, 7); - /* TODO typeof(size) = Const \ []*/ - ext_grs_node_t *n_size = ext_grs_act_add_node(pattern, "size", grs_op_Const, mode_ANY, 8); - /* TODO typeof(one) = Const \ []*/ - ext_grs_node_t *n_one = ext_grs_act_add_node(pattern, "one", grs_op_Const, mode_ANY, 9); - /* TODO typeof(addr) = IR_node \ []*/ - ext_grs_node_t *n_addr = ext_grs_act_add_node(pattern, "addr", grs_op_IR_node, mode_ANY, 10); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge3 = ext_grs_act_add_edge(pattern, "_edge3", ext_grs_NO_EDGE_POS, n_size, n_m_1, 0); - ext_grs_edge_t *e__edge5 = ext_grs_act_add_edge(pattern, "_edge5", ext_grs_NO_EDGE_POS, n_a1_2, n_ld_2, 1); - ext_grs_edge_t *e__edge7 = ext_grs_act_add_edge(pattern, "_edge7", ext_grs_NO_EDGE_POS, n_m_2, n_a1_2, 2); - ext_grs_edge_t *e__edge1 = ext_grs_act_add_edge(pattern, "_edge1", ext_grs_NO_EDGE_POS, n_addr, n_a_1, 3); - ext_grs_edge_t *e__edge0 = ext_grs_act_add_edge(pattern, "_edge0", ext_grs_NO_EDGE_POS, n_a_1, n_ld_1, 4); - ext_grs_edge_t *e__edge6 = ext_grs_act_add_edge(pattern, "_edge6", ext_grs_NO_EDGE_POS, n_addr, n_a1_2, 5); - ext_grs_edge_t *e__edge8 = ext_grs_act_add_edge(pattern, "_edge8", ext_grs_NO_EDGE_POS, n_size, n_m_2, 6); - ext_grs_edge_t *e__edge10 = ext_grs_act_add_edge(pattern, "_edge10", ext_grs_NO_EDGE_POS, n_one, n_a2_2, 7); - ext_grs_edge_t *e__edge11 = ext_grs_act_add_edge(pattern, "_edge11", ext_grs_NO_EDGE_POS, n_index, n_a2_2, 8); - ext_grs_edge_t *e__edge2 = ext_grs_act_add_edge(pattern, "_edge2", ext_grs_NO_EDGE_POS, n_m_1, n_a_1, 9); - ext_grs_edge_t *e__edge9 = ext_grs_act_add_edge(pattern, "_edge9", ext_grs_NO_EDGE_POS, n_a2_2, n_m_2, 10); - ext_grs_edge_t *e__edge4 = ext_grs_act_add_edge(pattern, "_edge4", ext_grs_NO_EDGE_POS, n_index, n_m_1, 11); - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* V2LD_a */ - - -/* functions for evaluation of conditions of action V2LD_b */ - -/* functions for building the pattern of action V2LD_b */ -static _inline ext_grs_action_t *grs_action_V2LD_b_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "V2LD_b"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(index) = IR_node \ []*/ - ext_grs_node_t *n_index = ext_grs_act_add_node(pattern, "index", grs_op_IR_node, mode_ANY, 0); - /* TODO typeof(m_2) = Mul \ []*/ - ext_grs_node_t *n_m_2 = ext_grs_act_add_node(pattern, "m_2", grs_op_Mul, mode_ANY, 1); - /* TODO typeof(ld_1) = Load \ []*/ - ext_grs_node_t *n_ld_1 = ext_grs_act_add_node(pattern, "ld_1", grs_op_Load, mode_ANY, 2); - /* TODO typeof(size) = Const \ []*/ - ext_grs_node_t *n_size = ext_grs_act_add_node(pattern, "size", grs_op_Const, mode_ANY, 3); - /* TODO typeof(c2) = Const \ []*/ - ext_grs_node_t *n_c2 = ext_grs_act_add_node(pattern, "c2", grs_op_Const, mode_ANY, 4); - /* TODO typeof(a1_1) = Add \ []*/ - ext_grs_node_t *n_a1_1 = ext_grs_act_add_node(pattern, "a1_1", grs_op_Add, mode_ANY, 5); - /* TODO typeof(ld_2) = Load \ []*/ - ext_grs_node_t *n_ld_2 = ext_grs_act_add_node(pattern, "ld_2", grs_op_Load, mode_ANY, 6); - /* TODO typeof(a1_2) = Add \ []*/ - ext_grs_node_t *n_a1_2 = ext_grs_act_add_node(pattern, "a1_2", grs_op_Add, mode_ANY, 7); - /* TODO typeof(a2_2) = Add \ []*/ - ext_grs_node_t *n_a2_2 = ext_grs_act_add_node(pattern, "a2_2", grs_op_Add, mode_ANY, 8); - /* TODO typeof(m_1) = Mul \ []*/ - ext_grs_node_t *n_m_1 = ext_grs_act_add_node(pattern, "m_1", grs_op_Mul, mode_ANY, 9); - /* TODO typeof(a2_1) = Add \ []*/ - ext_grs_node_t *n_a2_1 = ext_grs_act_add_node(pattern, "a2_1", grs_op_Add, mode_ANY, 10); - /* TODO typeof(c1) = Const \ []*/ - ext_grs_node_t *n_c1 = ext_grs_act_add_node(pattern, "c1", grs_op_Const, mode_ANY, 11); - /* TODO typeof(addr) = IR_node \ []*/ - ext_grs_node_t *n_addr = ext_grs_act_add_node(pattern, "addr", grs_op_IR_node, mode_ANY, 12); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge3 = ext_grs_act_add_edge(pattern, "_edge3", ext_grs_NO_EDGE_POS, n_size, n_m_1, 0); - ext_grs_edge_t *e__edge0 = ext_grs_act_add_edge(pattern, "_edge0", ext_grs_NO_EDGE_POS, n_a1_1, n_ld_1, 1); - ext_grs_edge_t *e__edge6 = ext_grs_act_add_edge(pattern, "_edge6", ext_grs_NO_EDGE_POS, n_index, n_a2_1, 2); - ext_grs_edge_t *e__edge11 = ext_grs_act_add_edge(pattern, "_edge11", ext_grs_NO_EDGE_POS, n_a2_2, n_m_2, 3); - ext_grs_edge_t *e__edge12 = ext_grs_act_add_edge(pattern, "_edge12", ext_grs_NO_EDGE_POS, n_c2, n_a2_2, 4); - ext_grs_edge_t *e__edge4 = ext_grs_act_add_edge(pattern, "_edge4", ext_grs_NO_EDGE_POS, n_a2_1, n_m_1, 5); - ext_grs_edge_t *e__edge5 = ext_grs_act_add_edge(pattern, "_edge5", ext_grs_NO_EDGE_POS, n_c1, n_a2_1, 6); - ext_grs_edge_t *e__edge1 = ext_grs_act_add_edge(pattern, "_edge1", ext_grs_NO_EDGE_POS, n_addr, n_a1_1, 7); - ext_grs_edge_t *e__edge7 = ext_grs_act_add_edge(pattern, "_edge7", ext_grs_NO_EDGE_POS, n_a1_2, n_ld_2, 8); - ext_grs_edge_t *e__edge13 = ext_grs_act_add_edge(pattern, "_edge13", ext_grs_NO_EDGE_POS, n_index, n_a2_2, 9); - ext_grs_edge_t *e__edge8 = ext_grs_act_add_edge(pattern, "_edge8", ext_grs_NO_EDGE_POS, n_addr, n_a1_2, 10); - ext_grs_edge_t *e__edge10 = ext_grs_act_add_edge(pattern, "_edge10", ext_grs_NO_EDGE_POS, n_size, n_m_2, 11); - ext_grs_edge_t *e__edge2 = ext_grs_act_add_edge(pattern, "_edge2", ext_grs_NO_EDGE_POS, n_m_1, n_a1_1, 12); - ext_grs_edge_t *e__edge9 = ext_grs_act_add_edge(pattern, "_edge9", ext_grs_NO_EDGE_POS, n_m_2, n_a1_2, 13); - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* V2LD_b */ - - -/* functions for evaluation of conditions of action V2LD_c */ - -/* functions for building the pattern of action V2LD_c */ -static _inline ext_grs_action_t *grs_action_V2LD_c_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "V2LD_c"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(ld_2) = Load \ []*/ - ext_grs_node_t *n_ld_2 = ext_grs_act_add_node(pattern, "ld_2", grs_op_Load, mode_ANY, 0); - /* TODO typeof(ld_1) = Load \ []*/ - ext_grs_node_t *n_ld_1 = ext_grs_act_add_node(pattern, "ld_1", grs_op_Load, mode_ANY, 1); - /* TODO typeof(displ) = Const \ []*/ - ext_grs_node_t *n_displ = ext_grs_act_add_node(pattern, "displ", grs_op_Const, mode_ANY, 2); - /* TODO typeof(addr) = Phi \ []*/ - ext_grs_node_t *n_addr = ext_grs_act_add_node(pattern, "addr", grs_op_Phi, mode_ANY, 3); - /* TODO typeof(a) = Add \ []*/ - ext_grs_node_t *n_a = ext_grs_act_add_node(pattern, "a", grs_op_Add, mode_ANY, 4); - /* TODO typeof(bb) = Block \ []*/ - ext_grs_node_t *n_bb = ext_grs_act_add_node(pattern, "bb", grs_op_Block, mode_ANY, 5); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge3 = ext_grs_act_add_edge(pattern, "_edge3", ext_grs_NO_EDGE_POS, n_addr, n_a, 0); - ext_grs_edge_t *e__edge5 = ext_grs_act_add_edge(pattern, "_edge5", ext_grs_NO_EDGE_POS, n_bb, n_ld_2, 1); - ext_grs_edge_t *e__edge1 = ext_grs_act_add_edge(pattern, "_edge1", ext_grs_NO_EDGE_POS, n_a, n_ld_2, 2); - ext_grs_edge_t *e__edge0 = ext_grs_act_add_edge(pattern, "_edge0", ext_grs_NO_EDGE_POS, n_addr, n_ld_1, 3); - ext_grs_edge_t *e__edge2 = ext_grs_act_add_edge(pattern, "_edge2", ext_grs_NO_EDGE_POS, n_displ, n_a, 4); - ext_grs_edge_t *e__edge4 = ext_grs_act_add_edge(pattern, "_edge4", ext_grs_NO_EDGE_POS, n_bb, n_ld_1, 5); - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* V2LD_c */ - - -/* functions for evaluation of conditions of action V2LD_d */ - -/* functions for building the pattern of action V2LD_d */ -static _inline ext_grs_action_t *grs_action_V2LD_d_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "V2LD_d"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(ld_2) = Load \ []*/ - ext_grs_node_t *n_ld_2 = ext_grs_act_add_node(pattern, "ld_2", grs_op_Load, mode_ANY, 0); - /* TODO typeof(dis_1) = Const \ []*/ - ext_grs_node_t *n_dis_1 = ext_grs_act_add_node(pattern, "dis_1", grs_op_Const, mode_ANY, 1); - /* TODO typeof(ld_1) = Load \ []*/ - ext_grs_node_t *n_ld_1 = ext_grs_act_add_node(pattern, "ld_1", grs_op_Load, mode_ANY, 2); - /* TODO typeof(a_1) = Add \ []*/ - ext_grs_node_t *n_a_1 = ext_grs_act_add_node(pattern, "a_1", grs_op_Add, mode_ANY, 3); - /* TODO typeof(a_2) = Add \ []*/ - ext_grs_node_t *n_a_2 = ext_grs_act_add_node(pattern, "a_2", grs_op_Add, mode_ANY, 4); - /* TODO typeof(addr) = Phi \ []*/ - ext_grs_node_t *n_addr = ext_grs_act_add_node(pattern, "addr", grs_op_Phi, mode_ANY, 5); - /* TODO typeof(dis_2) = Const \ []*/ - ext_grs_node_t *n_dis_2 = ext_grs_act_add_node(pattern, "dis_2", grs_op_Const, mode_ANY, 6); - /* TODO typeof(bb) = Block \ []*/ - ext_grs_node_t *n_bb = ext_grs_act_add_node(pattern, "bb", grs_op_Block, mode_ANY, 7); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge3 = ext_grs_act_add_edge(pattern, "_edge3", ext_grs_NO_EDGE_POS, n_a_2, n_ld_2, 0); - ext_grs_edge_t *e__edge5 = ext_grs_act_add_edge(pattern, "_edge5", ext_grs_NO_EDGE_POS, n_addr, n_a_2, 1); - ext_grs_edge_t *e__edge7 = ext_grs_act_add_edge(pattern, "_edge7", ext_grs_NO_EDGE_POS, n_bb, n_ld_2, 2); - ext_grs_edge_t *e__edge1 = ext_grs_act_add_edge(pattern, "_edge1", ext_grs_NO_EDGE_POS, n_dis_1, n_a_1, 3); - ext_grs_edge_t *e__edge0 = ext_grs_act_add_edge(pattern, "_edge0", ext_grs_NO_EDGE_POS, n_a_1, n_ld_1, 4); - ext_grs_edge_t *e__edge6 = ext_grs_act_add_edge(pattern, "_edge6", ext_grs_NO_EDGE_POS, n_bb, n_ld_1, 5); - ext_grs_edge_t *e__edge2 = ext_grs_act_add_edge(pattern, "_edge2", ext_grs_NO_EDGE_POS, n_addr, n_a_1, 6); - ext_grs_edge_t *e__edge4 = ext_grs_act_add_edge(pattern, "_edge4", ext_grs_NO_EDGE_POS, n_dis_2, n_a_2, 7); - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* V2LD_d */ - - -/* functions for evaluation of conditions of action V2ST_a */ - -/* functions for building the pattern of action V2ST_a */ -static _inline ext_grs_action_t *grs_action_V2ST_a_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "V2ST_a"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(st_2) = Store \ []*/ - ext_grs_node_t *n_st_2 = ext_grs_act_add_node(pattern, "st_2", grs_op_Store, mode_ANY, 0); - /* TODO typeof(vpi_2) = V2pi_2 \ []*/ - ext_grs_node_t *n_vpi_2 = ext_grs_act_add_node(pattern, "vpi_2", grs_op_V2pi_2, mode_ANY, 1); - /* TODO typeof(st_1) = Store \ []*/ - ext_grs_node_t *n_st_1 = ext_grs_act_add_node(pattern, "st_1", grs_op_Store, mode_ANY, 2); - /* TODO typeof(vpi_1) = V2pi_1 \ []*/ - ext_grs_node_t *n_vpi_1 = ext_grs_act_add_node(pattern, "vpi_1", grs_op_V2pi_1, mode_ANY, 3); - /* TODO typeof(a) = Vector \ []*/ - ext_grs_node_t *n_a = ext_grs_act_add_node(pattern, "a", grs_op_Vector, mode_ANY, 4); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge3 = ext_grs_act_add_edge(pattern, "_edge3", ext_grs_NO_EDGE_POS, n_a, n_vpi_2, 0); - ext_grs_edge_t *e__edge1 = ext_grs_act_add_edge(pattern, "_edge1", ext_grs_NO_EDGE_POS, n_a, n_vpi_1, 1); - ext_grs_edge_t *e__edge0 = ext_grs_act_add_edge(pattern, "_edge0", ext_grs_NO_EDGE_POS, n_vpi_1, n_st_1, 2); - ext_grs_edge_t *e__edge2 = ext_grs_act_add_edge(pattern, "_edge2", ext_grs_NO_EDGE_POS, n_vpi_2, n_st_2, 3); - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* V2ST_a */ - - -/* functions for evaluation of conditions of action V2SUB_a */ - -/* functions for building the pattern of action V2SUB_a */ -static _inline ext_grs_action_t *grs_action_V2SUB_a_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "V2SUB_a"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(p1_1) = Proj \ []*/ - ext_grs_node_t *n_p1_1 = ext_grs_act_add_node(pattern, "p1_1", grs_op_Proj, mode_ANY, 0); - /* TODO typeof(vpi1_1) = V2pi_1 \ []*/ - ext_grs_node_t *n_vpi1_1 = ext_grs_act_add_node(pattern, "vpi1_1", grs_op_V2pi_1, mode_ANY, 1); - /* TODO typeof(p2_1) = Proj \ []*/ - ext_grs_node_t *n_p2_1 = ext_grs_act_add_node(pattern, "p2_1", grs_op_Proj, mode_ANY, 2); - /* TODO typeof(s_1) = Sub \ []*/ - ext_grs_node_t *n_s_1 = ext_grs_act_add_node(pattern, "s_1", grs_op_Sub, mode_ANY, 3); - /* TODO typeof(vpi2_2) = V2pi_2 \ []*/ - ext_grs_node_t *n_vpi2_2 = ext_grs_act_add_node(pattern, "vpi2_2", grs_op_V2pi_2, mode_ANY, 4); - /* TODO typeof(p2_2) = Proj \ []*/ - ext_grs_node_t *n_p2_2 = ext_grs_act_add_node(pattern, "p2_2", grs_op_Proj, mode_ANY, 5); - /* TODO typeof(s_2) = Sub \ []*/ - ext_grs_node_t *n_s_2 = ext_grs_act_add_node(pattern, "s_2", grs_op_Sub, mode_ANY, 6); - /* TODO typeof(vpi2_1) = V2pi_1 \ []*/ - ext_grs_node_t *n_vpi2_1 = ext_grs_act_add_node(pattern, "vpi2_1", grs_op_V2pi_1, mode_ANY, 7); - /* TODO typeof(b) = Vector \ []*/ - ext_grs_node_t *n_b = ext_grs_act_add_node(pattern, "b", grs_op_Vector, mode_ANY, 8); - /* TODO typeof(a) = Vector \ []*/ - ext_grs_node_t *n_a = ext_grs_act_add_node(pattern, "a", grs_op_Vector, mode_ANY, 9); - /* TODO typeof(vpi1_2) = V2pi_2 \ []*/ - ext_grs_node_t *n_vpi1_2 = ext_grs_act_add_node(pattern, "vpi1_2", grs_op_V2pi_2, mode_ANY, 10); - /* TODO typeof(bb) = Block \ []*/ - ext_grs_node_t *n_bb = ext_grs_act_add_node(pattern, "bb", grs_op_Block, mode_ANY, 11); - /* TODO typeof(p1_2) = Proj \ []*/ - ext_grs_node_t *n_p1_2 = ext_grs_act_add_node(pattern, "p1_2", grs_op_Proj, mode_ANY, 12); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge3 = ext_grs_act_add_edge(pattern, "_edge3", ext_grs_NO_EDGE_POS, n_p2_1, n_s_1, 0); - ext_grs_edge_t *e__edge0 = ext_grs_act_add_edge(pattern, "_edge0", ext_grs_NO_EDGE_POS, n_a, n_vpi1_1, 1); - ext_grs_edge_t *e__edge6 = ext_grs_act_add_edge(pattern, "_edge6", ext_grs_NO_EDGE_POS, n_a, n_vpi1_2, 2); - ext_grs_edge_t *e__edge11 = ext_grs_act_add_edge(pattern, "_edge11", ext_grs_NO_EDGE_POS, n_b, n_vpi2_2, 3); - ext_grs_edge_t *e__edge12 = ext_grs_act_add_edge(pattern, "_edge12", ext_grs_NO_EDGE_POS, n_bb, n_s_1, 4); - ext_grs_edge_t *e__edge4 = ext_grs_act_add_edge(pattern, "_edge4", ext_grs_NO_EDGE_POS, n_vpi2_1, n_p2_1, 5); - ext_grs_edge_t *e__edge5 = ext_grs_act_add_edge(pattern, "_edge5", ext_grs_NO_EDGE_POS, n_b, n_vpi2_1, 6); - ext_grs_edge_t *e__edge1 = ext_grs_act_add_edge(pattern, "_edge1", ext_grs_NO_EDGE_POS, n_vpi1_1, n_p1_1, 7); - ext_grs_edge_t *e__edge7 = ext_grs_act_add_edge(pattern, "_edge7", ext_grs_NO_EDGE_POS, n_vpi1_2, n_p1_2, 8); - ext_grs_edge_t *e__edge13 = ext_grs_act_add_edge(pattern, "_edge13", ext_grs_NO_EDGE_POS, n_bb, n_s_2, 9); - ext_grs_edge_t *e__edge8 = ext_grs_act_add_edge(pattern, "_edge8", ext_grs_NO_EDGE_POS, n_p1_2, n_s_2, 10); - ext_grs_edge_t *e__edge10 = ext_grs_act_add_edge(pattern, "_edge10", ext_grs_NO_EDGE_POS, n_vpi2_2, n_p2_2, 11); - ext_grs_edge_t *e__edge2 = ext_grs_act_add_edge(pattern, "_edge2", ext_grs_NO_EDGE_POS, n_p1_1, n_s_1, 12); - ext_grs_edge_t *e__edge9 = ext_grs_act_add_edge(pattern, "_edge9", ext_grs_NO_EDGE_POS, n_p2_2, n_s_2, 13); - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* V2SUB_a */ - - -/* functions for evaluation of conditions of action dead_Block */ - -/* functions for building the pattern of action dead_Block */ -static _inline ext_grs_action_t *grs_action_dead_Block_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "dead_Block"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(b1) = Block \ []*/ - ext_grs_node_t *n_b1 = ext_grs_act_add_node(pattern, "b1", grs_op_Block, mode_ANY, 0); - /* TODO typeof(ir2) = IR_node \ []*/ - ext_grs_node_t *n_ir2 = ext_grs_act_add_node(pattern, "ir2", grs_op_IR_node, mode_ANY, 1); - /* TODO typeof(b2) = Block \ []*/ - ext_grs_node_t *n_b2 = ext_grs_act_add_node(pattern, "b2", grs_op_Block, mode_ANY, 2); - /* TODO typeof(ir1) = IR_node \ []*/ - ext_grs_node_t *n_ir1 = ext_grs_act_add_node(pattern, "ir1", grs_op_IR_node, mode_ANY, 3); - /* TODO typeof(b) = Block \ []*/ - ext_grs_node_t *n_b = ext_grs_act_add_node(pattern, "b", grs_op_Block, mode_ANY, 4); - - /* The edges of the pattern */ - ext_grs_edge_t *e_cf3 = ext_grs_act_add_edge(pattern, "cf3", ext_grs_NO_EDGE_POS, n_b1, n_ir1, 0); - ext_grs_edge_t *e_cf1 = ext_grs_act_add_edge(pattern, "cf1", ext_grs_NO_EDGE_POS, n_ir1, n_b, 1); - ext_grs_edge_t *e_cf4 = ext_grs_act_add_edge(pattern, "cf4", ext_grs_NO_EDGE_POS, n_b2, n_ir2, 2); - ext_grs_edge_t *e_cf2 = ext_grs_act_add_edge(pattern, "cf2", ext_grs_NO_EDGE_POS, n_ir2, n_b, 3); - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - { /* NAC 0 */ - ext_grs_graph_t *pattern = ext_grs_act_impose_negative(act); - - /* The nodes of the pattern */ - /* TODO typeof(b1_48) = Block \ []*/ - ext_grs_node_t *n_b1_48 = ext_grs_act_add_related_node(pattern, "b1_48", grs_op_Block, mode_ANY, 0, n_b1); - /* TODO typeof(phi) = Phi \ []*/ - ext_grs_node_t *n_phi = ext_grs_act_add_node(pattern, "phi", grs_op_Phi, mode_ANY, 5); - /* TODO typeof(ir2_49) = IR_node \ []*/ - ext_grs_node_t *n_ir2_49 = ext_grs_act_add_related_node(pattern, "ir2_49", grs_op_IR_node, mode_ANY, 1, n_ir2); - /* TODO typeof(b2_50) = Block \ []*/ - ext_grs_node_t *n_b2_50 = ext_grs_act_add_related_node(pattern, "b2_50", grs_op_Block, mode_ANY, 2, n_b2); - /* TODO typeof(ir1_51) = IR_node \ []*/ - ext_grs_node_t *n_ir1_51 = ext_grs_act_add_related_node(pattern, "ir1_51", grs_op_IR_node, mode_ANY, 3, n_ir1); - /* TODO typeof(b_52) = Block \ []*/ - ext_grs_node_t *n_b_52 = ext_grs_act_add_related_node(pattern, "b_52", grs_op_Block, mode_ANY, 4, n_b); - - /* The edges of the pattern */ - ext_grs_edge_t *e_cf3_53 = ext_grs_act_add_related_edge(pattern, "cf3_53", ext_grs_NO_EDGE_POS, n_b1_48, n_ir1_51, 0, e_cf3); - ext_grs_edge_t *e_cf1_54 = ext_grs_act_add_related_edge(pattern, "cf1_54", ext_grs_NO_EDGE_POS, n_ir1_51, n_b_52, 1, e_cf1); - ext_grs_edge_t *e_cf4_55 = ext_grs_act_add_related_edge(pattern, "cf4_55", ext_grs_NO_EDGE_POS, n_b2_50, n_ir2_49, 2, e_cf4); - ext_grs_edge_t *e_cf2_56 = ext_grs_act_add_related_edge(pattern, "cf2_56", ext_grs_NO_EDGE_POS, n_ir2_49, n_b_52, 3, e_cf2); - ext_grs_edge_t *e_cf5_57 = ext_grs_act_add_edge(pattern, "cf5_57", ext_grs_NO_EDGE_POS, n_b_52, n_phi, 4); - - /* The conditions of the pattern */ - } /* NAC 0 */ - - { /* NAC 1 */ - ext_grs_graph_t *pattern = ext_grs_act_impose_negative(act); - - /* The nodes of the pattern */ - /* TODO typeof(b1_58) = Block \ []*/ - ext_grs_node_t *n_b1_58 = ext_grs_act_add_related_node(pattern, "b1_58", grs_op_Block, mode_ANY, 0, n_b1); - /* TODO typeof(ir2_59) = IR_node \ []*/ - ext_grs_node_t *n_ir2_59 = ext_grs_act_add_related_node(pattern, "ir2_59", grs_op_IR_node, mode_ANY, 1, n_ir2); - /* TODO typeof(b2_60) = Block \ []*/ - ext_grs_node_t *n_b2_60 = ext_grs_act_add_related_node(pattern, "b2_60", grs_op_Block, mode_ANY, 2, n_b2); - /* TODO typeof(ir1_61) = IR_node \ []*/ - ext_grs_node_t *n_ir1_61 = ext_grs_act_add_related_node(pattern, "ir1_61", grs_op_IR_node, mode_ANY, 3, n_ir1); - /* TODO typeof(b_62) = Block \ []*/ - ext_grs_node_t *n_b_62 = ext_grs_act_add_related_node(pattern, "b_62", grs_op_Block, mode_ANY, 4, n_b); - /* TODO typeof(b3) = Block \ []*/ - ext_grs_node_t *n_b3 = ext_grs_act_add_node(pattern, "b3", grs_op_Block, mode_ANY, 6); - - /* The edges of the pattern */ - ext_grs_edge_t *e_cf3_63 = ext_grs_act_add_related_edge(pattern, "cf3_63", ext_grs_NO_EDGE_POS, n_b1_58, n_ir1_61, 0, e_cf3); - ext_grs_edge_t *e_cf1_64 = ext_grs_act_add_related_edge(pattern, "cf1_64", ext_grs_NO_EDGE_POS, n_ir1_61, n_b_62, 1, e_cf1); - ext_grs_edge_t *e_cf6_65 = ext_grs_act_add_edge(pattern, "cf6_65", ext_grs_NO_EDGE_POS, n_b1_58, n_b3, 5); - ext_grs_edge_t *e_cf4_66 = ext_grs_act_add_related_edge(pattern, "cf4_66", ext_grs_NO_EDGE_POS, n_b2_60, n_ir2_59, 2, e_cf4); - ext_grs_edge_t *e_cf2_67 = ext_grs_act_add_related_edge(pattern, "cf2_67", ext_grs_NO_EDGE_POS, n_ir2_59, n_b_62, 3, e_cf2); - - /* The conditions of the pattern */ - } /* NAC 1 */ - - { /* NAC 2 */ - ext_grs_graph_t *pattern = ext_grs_act_impose_negative(act); - - /* The nodes of the pattern */ - /* TODO typeof(b1_68) = Block \ []*/ - ext_grs_node_t *n_b1_68 = ext_grs_act_add_related_node(pattern, "b1_68", grs_op_Block, mode_ANY, 0, n_b1); - /* TODO typeof(ir2_69) = IR_node \ []*/ - ext_grs_node_t *n_ir2_69 = ext_grs_act_add_related_node(pattern, "ir2_69", grs_op_IR_node, mode_ANY, 1, n_ir2); - /* TODO typeof(ir3) = IR_node \ []*/ - ext_grs_node_t *n_ir3 = ext_grs_act_add_node(pattern, "ir3", grs_op_IR_node, mode_ANY, 7); - /* TODO typeof(b2_70) = Block \ []*/ - ext_grs_node_t *n_b2_70 = ext_grs_act_add_related_node(pattern, "b2_70", grs_op_Block, mode_ANY, 2, n_b2); - /* TODO typeof(ir1_71) = IR_node \ []*/ - ext_grs_node_t *n_ir1_71 = ext_grs_act_add_related_node(pattern, "ir1_71", grs_op_IR_node, mode_ANY, 3, n_ir1); - /* TODO typeof(b_72) = Block \ []*/ - ext_grs_node_t *n_b_72 = ext_grs_act_add_related_node(pattern, "b_72", grs_op_Block, mode_ANY, 4, n_b); - - /* The edges of the pattern */ - ext_grs_edge_t *e_cf3_73 = ext_grs_act_add_related_edge(pattern, "cf3_73", ext_grs_NO_EDGE_POS, n_b1_68, n_ir1_71, 0, e_cf3); - ext_grs_edge_t *e_cf1_74 = ext_grs_act_add_related_edge(pattern, "cf1_74", ext_grs_NO_EDGE_POS, n_ir1_71, n_b_72, 1, e_cf1); - ext_grs_edge_t *e_cf4_75 = ext_grs_act_add_related_edge(pattern, "cf4_75", ext_grs_NO_EDGE_POS, n_b2_70, n_ir2_69, 2, e_cf4); - ext_grs_edge_t *e_cf2_76 = ext_grs_act_add_related_edge(pattern, "cf2_76", ext_grs_NO_EDGE_POS, n_ir2_69, n_b_72, 3, e_cf2); - ext_grs_edge_t *e_cf7_77 = ext_grs_act_add_edge(pattern, "cf7_77", ext_grs_NO_EDGE_POS, n_b1_68, n_ir3, 6); - - /* The conditions of the pattern */ - } /* NAC 2 */ - - { /* NAC 3 */ - ext_grs_graph_t *pattern = ext_grs_act_impose_negative(act); - - /* The nodes of the pattern */ - /* TODO typeof(b1_78) = Block \ []*/ - ext_grs_node_t *n_b1_78 = ext_grs_act_add_related_node(pattern, "b1_78", grs_op_Block, mode_ANY, 0, n_b1); - /* TODO typeof(ir2_79) = IR_node \ []*/ - ext_grs_node_t *n_ir2_79 = ext_grs_act_add_related_node(pattern, "ir2_79", grs_op_IR_node, mode_ANY, 1, n_ir2); - /* TODO typeof(start) = Start \ []*/ - ext_grs_node_t *n_start = ext_grs_act_add_node(pattern, "start", grs_op_Start, mode_ANY, 8); - /* TODO typeof(b2_80) = Block \ []*/ - ext_grs_node_t *n_b2_80 = ext_grs_act_add_related_node(pattern, "b2_80", grs_op_Block, mode_ANY, 2, n_b2); - /* TODO typeof(ir1_81) = IR_node \ []*/ - ext_grs_node_t *n_ir1_81 = ext_grs_act_add_related_node(pattern, "ir1_81", grs_op_IR_node, mode_ANY, 3, n_ir1); - /* TODO typeof(b_82) = Block \ []*/ - ext_grs_node_t *n_b_82 = ext_grs_act_add_related_node(pattern, "b_82", grs_op_Block, mode_ANY, 4, n_b); - - /* The edges of the pattern */ - ext_grs_edge_t *e_cf3_83 = ext_grs_act_add_related_edge(pattern, "cf3_83", ext_grs_NO_EDGE_POS, n_b1_78, n_ir1_81, 0, e_cf3); - ext_grs_edge_t *e_cf1_84 = ext_grs_act_add_related_edge(pattern, "cf1_84", ext_grs_NO_EDGE_POS, n_ir1_81, n_b_82, 1, e_cf1); - ext_grs_edge_t *e_cf8_85 = ext_grs_act_add_edge(pattern, "cf8_85", ext_grs_NO_EDGE_POS, n_b1_78, n_start, 7); - ext_grs_edge_t *e_cf4_86 = ext_grs_act_add_related_edge(pattern, "cf4_86", ext_grs_NO_EDGE_POS, n_b2_80, n_ir2_79, 2, e_cf4); - ext_grs_edge_t *e_cf2_87 = ext_grs_act_add_related_edge(pattern, "cf2_87", ext_grs_NO_EDGE_POS, n_ir2_79, n_b_82, 3, e_cf2); - - /* The conditions of the pattern */ - } /* NAC 3 */ - - { /* NAC 4 */ - ext_grs_graph_t *pattern = ext_grs_act_impose_negative(act); - - /* The nodes of the pattern */ - /* TODO typeof(b1_88) = Block \ []*/ - ext_grs_node_t *n_b1_88 = ext_grs_act_add_related_node(pattern, "b1_88", grs_op_Block, mode_ANY, 0, n_b1); - /* TODO typeof(ir2_89) = IR_node \ []*/ - ext_grs_node_t *n_ir2_89 = ext_grs_act_add_related_node(pattern, "ir2_89", grs_op_IR_node, mode_ANY, 1, n_ir2); - /* TODO typeof(end) = End \ []*/ - ext_grs_node_t *n_end = ext_grs_act_add_node(pattern, "end", grs_op_End, mode_ANY, 9); - /* TODO typeof(b2_90) = Block \ []*/ - ext_grs_node_t *n_b2_90 = ext_grs_act_add_related_node(pattern, "b2_90", grs_op_Block, mode_ANY, 2, n_b2); - /* TODO typeof(ir1_91) = IR_node \ []*/ - ext_grs_node_t *n_ir1_91 = ext_grs_act_add_related_node(pattern, "ir1_91", grs_op_IR_node, mode_ANY, 3, n_ir1); - /* TODO typeof(b_92) = Block \ []*/ - ext_grs_node_t *n_b_92 = ext_grs_act_add_related_node(pattern, "b_92", grs_op_Block, mode_ANY, 4, n_b); - - /* The edges of the pattern */ - ext_grs_edge_t *e_cf3_93 = ext_grs_act_add_related_edge(pattern, "cf3_93", ext_grs_NO_EDGE_POS, n_b1_88, n_ir1_91, 0, e_cf3); - ext_grs_edge_t *e_cf1_94 = ext_grs_act_add_related_edge(pattern, "cf1_94", ext_grs_NO_EDGE_POS, n_ir1_91, n_b_92, 1, e_cf1); - ext_grs_edge_t *e_cf8_95 = ext_grs_act_add_edge(pattern, "cf8_95", ext_grs_NO_EDGE_POS, n_b_92, n_end, 8); - ext_grs_edge_t *e_cf4_96 = ext_grs_act_add_related_edge(pattern, "cf4_96", ext_grs_NO_EDGE_POS, n_b2_90, n_ir2_89, 2, e_cf4); - ext_grs_edge_t *e_cf2_97 = ext_grs_act_add_related_edge(pattern, "cf2_97", ext_grs_NO_EDGE_POS, n_ir2_89, n_b_92, 3, e_cf2); - - /* The conditions of the pattern */ - } /* NAC 4 */ - - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* dead_Block */ - - -/* functions for evaluation of conditions of action dead_Block_unify */ - -/* functions for building the pattern of action dead_Block_unify */ -static _inline ext_grs_action_t *grs_action_dead_Block_unify_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "dead_Block_unify"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(b1) = Block \ []*/ - ext_grs_node_t *n_b1 = ext_grs_act_add_node(pattern, "b1", grs_op_Block, mode_ANY, 0); - /* TODO typeof(ir1) = IR_node \ []*/ - ext_grs_node_t *n_ir1 = ext_grs_act_add_node(pattern, "ir1", grs_op_IR_node, mode_ANY, 1); - /* TODO typeof(b) = Block \ []*/ - ext_grs_node_t *n_b = ext_grs_act_add_node(pattern, "b", grs_op_Block, mode_ANY, 2); - - /* The edges of the pattern */ - ext_grs_edge_t *e_cf3 = ext_grs_act_add_edge(pattern, "cf3", ext_grs_NO_EDGE_POS, n_b1, n_ir1, 0); - ext_grs_edge_t *e_cf1 = ext_grs_act_add_edge(pattern, "cf1", ext_grs_NO_EDGE_POS, n_ir1, n_b, 1); - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - { /* NAC 0 */ - ext_grs_graph_t *pattern = ext_grs_act_impose_negative(act); - - /* The nodes of the pattern */ - /* TODO typeof(b1_98) = Block \ []*/ - ext_grs_node_t *n_b1_98 = ext_grs_act_add_related_node(pattern, "b1_98", grs_op_Block, mode_ANY, 0, n_b1); - /* TODO typeof(ir2) = IR_node \ []*/ - ext_grs_node_t *n_ir2 = ext_grs_act_add_node(pattern, "ir2", grs_op_IR_node, mode_ANY, 3); - /* TODO typeof(b2) = Block \ []*/ - ext_grs_node_t *n_b2 = ext_grs_act_add_node(pattern, "b2", grs_op_Block, mode_ANY, 4); - /* TODO typeof(ir1_99) = IR_node \ []*/ - ext_grs_node_t *n_ir1_99 = ext_grs_act_add_related_node(pattern, "ir1_99", grs_op_IR_node, mode_ANY, 1, n_ir1); - /* TODO typeof(b_100) = Block \ []*/ - ext_grs_node_t *n_b_100 = ext_grs_act_add_related_node(pattern, "b_100", grs_op_Block, mode_ANY, 2, n_b); - - /* The edges of the pattern */ - ext_grs_edge_t *e_cf3_101 = ext_grs_act_add_related_edge(pattern, "cf3_101", ext_grs_NO_EDGE_POS, n_b1_98, n_ir1_99, 0, e_cf3); - ext_grs_edge_t *e_cf1_102 = ext_grs_act_add_related_edge(pattern, "cf1_102", ext_grs_NO_EDGE_POS, n_ir1_99, n_b_100, 1, e_cf1); - ext_grs_edge_t *e_cf6_103 = ext_grs_act_add_edge(pattern, "cf6_103", ext_grs_NO_EDGE_POS, n_ir2, n_b_100, 2); - ext_grs_edge_t *e_cf9_104 = ext_grs_act_add_edge(pattern, "cf9_104", ext_grs_NO_EDGE_POS, n_b2, n_ir2, 3); - - /* The conditions of the pattern */ - } /* NAC 0 */ - - { /* NAC 1 */ - ext_grs_graph_t *pattern = ext_grs_act_impose_negative(act); - - /* The nodes of the pattern */ - /* TODO typeof(b1_105) = Block \ []*/ - ext_grs_node_t *n_b1_105 = ext_grs_act_add_related_node(pattern, "b1_105", grs_op_Block, mode_ANY, 0, n_b1); - /* TODO typeof(ir3) = IR_node \ []*/ - ext_grs_node_t *n_ir3 = ext_grs_act_add_node(pattern, "ir3", grs_op_IR_node, mode_ANY, 5); - /* TODO typeof(ir1_106) = IR_node \ []*/ - ext_grs_node_t *n_ir1_106 = ext_grs_act_add_related_node(pattern, "ir1_106", grs_op_IR_node, mode_ANY, 1, n_ir1); - /* TODO typeof(b_107) = Block \ []*/ - ext_grs_node_t *n_b_107 = ext_grs_act_add_related_node(pattern, "b_107", grs_op_Block, mode_ANY, 2, n_b); - /* TODO typeof(b3) = Block \ []*/ - ext_grs_node_t *n_b3 = ext_grs_act_add_node(pattern, "b3", grs_op_Block, mode_ANY, 6); - - /* The edges of the pattern */ - ext_grs_edge_t *e_cf3_108 = ext_grs_act_add_related_edge(pattern, "cf3_108", ext_grs_NO_EDGE_POS, n_b1_105, n_ir1_106, 0, e_cf3); - ext_grs_edge_t *e_cf1_109 = ext_grs_act_add_related_edge(pattern, "cf1_109", ext_grs_NO_EDGE_POS, n_ir1_106, n_b_107, 1, e_cf1); - ext_grs_edge_t *e_cf8_110 = ext_grs_act_add_edge(pattern, "cf8_110", ext_grs_NO_EDGE_POS, n_b1_105, n_ir3, 4); - ext_grs_edge_t *e_cf7_111 = ext_grs_act_add_edge(pattern, "cf7_111", ext_grs_NO_EDGE_POS, n_ir3, n_b3, 5); - - /* The conditions of the pattern */ - } /* NAC 1 */ - - { /* NAC 2 */ - ext_grs_graph_t *pattern = ext_grs_act_impose_negative(act); - - /* The nodes of the pattern */ - /* TODO typeof(b1_112) = Block \ []*/ - ext_grs_node_t *n_b1_112 = ext_grs_act_add_related_node(pattern, "b1_112", grs_op_Block, mode_ANY, 0, n_b1); - /* TODO typeof(start) = Start \ []*/ - ext_grs_node_t *n_start = ext_grs_act_add_node(pattern, "start", grs_op_Start, mode_ANY, 7); - - /* The edges of the pattern */ - ext_grs_edge_t *e_cf8_113 = ext_grs_act_add_edge(pattern, "cf8_113", ext_grs_NO_EDGE_POS, n_b1_112, n_start, 6); - - /* The conditions of the pattern */ - } /* NAC 2 */ - - { /* NAC 3 */ - ext_grs_graph_t *pattern = ext_grs_act_impose_negative(act); - - /* The nodes of the pattern */ - /* TODO typeof(end) = End \ []*/ - ext_grs_node_t *n_end = ext_grs_act_add_node(pattern, "end", grs_op_End, mode_ANY, 8); - /* TODO typeof(b_114) = Block \ []*/ - ext_grs_node_t *n_b_114 = ext_grs_act_add_related_node(pattern, "b_114", grs_op_Block, mode_ANY, 2, n_b); - - /* The edges of the pattern */ - ext_grs_edge_t *e_cf8_115 = ext_grs_act_add_edge(pattern, "cf8_115", ext_grs_NO_EDGE_POS, n_b_114, n_end, 7); - - /* The conditions of the pattern */ - } /* NAC 3 */ - - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* dead_Block_unify */ - - -/* functions for evaluation of conditions of action dead_Block_unify2 */ - -/* functions for building the pattern of action dead_Block_unify2 */ -static _inline ext_grs_action_t *grs_action_dead_Block_unify2_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "dead_Block_unify2"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(b1) = Block \ []*/ - ext_grs_node_t *n_b1 = ext_grs_act_add_node(pattern, "b1", grs_op_Block, mode_ANY, 0); - /* TODO typeof(ir1) = IR_node \ []*/ - ext_grs_node_t *n_ir1 = ext_grs_act_add_node(pattern, "ir1", grs_op_IR_node, mode_ANY, 1); - /* TODO typeof(b) = Block \ []*/ - ext_grs_node_t *n_b = ext_grs_act_add_node(pattern, "b", grs_op_Block, mode_ANY, 2); - - /* The edges of the pattern */ - ext_grs_edge_t *e_cf3 = ext_grs_act_add_edge(pattern, "cf3", ext_grs_NO_EDGE_POS, n_b1, n_ir1, 0); - ext_grs_edge_t *e_cf1 = ext_grs_act_add_edge(pattern, "cf1", ext_grs_NO_EDGE_POS, n_ir1, n_b, 1); - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - { /* NAC 0 */ - ext_grs_graph_t *pattern = ext_grs_act_impose_negative(act); - - /* The nodes of the pattern */ - /* TODO typeof(b1_116) = Block \ []*/ - ext_grs_node_t *n_b1_116 = ext_grs_act_add_related_node(pattern, "b1_116", grs_op_Block, mode_ANY, 0, n_b1); - /* TODO typeof(start) = Start \ []*/ - ext_grs_node_t *n_start = ext_grs_act_add_node(pattern, "start", grs_op_Start, mode_ANY, 3); - - /* The edges of the pattern */ - ext_grs_edge_t *e_cf8_117 = ext_grs_act_add_edge(pattern, "cf8_117", ext_grs_NO_EDGE_POS, n_b1_116, n_start, 2); - - /* The conditions of the pattern */ - } /* NAC 0 */ - - { /* NAC 1 */ - ext_grs_graph_t *pattern = ext_grs_act_impose_negative(act); - - /* The nodes of the pattern */ - /* TODO typeof(end) = End \ []*/ - ext_grs_node_t *n_end = ext_grs_act_add_node(pattern, "end", grs_op_End, mode_ANY, 4); - /* TODO typeof(b_118) = Block \ []*/ - ext_grs_node_t *n_b_118 = ext_grs_act_add_related_node(pattern, "b_118", grs_op_Block, mode_ANY, 2, n_b); - - /* The edges of the pattern */ - ext_grs_edge_t *e_cf8_119 = ext_grs_act_add_edge(pattern, "cf8_119", ext_grs_NO_EDGE_POS, n_b_118, n_end, 3); - - /* The conditions of the pattern */ - } /* NAC 1 */ - - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* dead_Block_unify2 */ - - -/* functions for evaluation of conditions of action dead_Load */ -static int grs_cond_func_11449(ir_node **node_map, const ir_edge_t **edge_map) { - return 0 /* TODO attr access */ == 0; -} -static int grs_cond_func_11452(ir_node **node_map, const ir_edge_t **edge_map) { - return 0 /* TODO attr access */ == "M"; -} - -/* functions for building the pattern of action dead_Load */ -static _inline ext_grs_action_t *grs_action_dead_Load_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "dead_Load"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ -/* mode edge: edge hm2*/ - /* TODO typeof(proj_m) = Proj \ []*/ - ext_grs_node_t *n_proj_m = ext_grs_act_add_node(pattern, "proj_m", grs_op_Proj, mode_ANY, 0); - /* TODO typeof(pred_m) = IR_node \ []*/ - ext_grs_node_t *n_pred_m = ext_grs_act_add_node(pattern, "pred_m", grs_op_IR_node, mode_ANY, 1); - /* TODO typeof(load) = Load \ []*/ - ext_grs_node_t *n_load = ext_grs_act_add_node(pattern, "load", grs_op_Load, mode_ANY, 2); - /* TODO typeof(mode_m) = Mode \ []*/ - ext_grs_node_t *n_mode_m = ext_grs_act_add_node(pattern, "mode_m", grs_op_Mode, mode_ANY, 3); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge0 = ext_grs_act_add_edge(pattern, "_edge0", ext_grs_NO_EDGE_POS, n_pred_m, n_load, 0); - ext_grs_edge_t *e_hm2 = ext_grs_act_add_edge(pattern, "hm2", ext_grs_NO_EDGE_POS, n_mode_m, n_proj_m, 1); - ext_grs_edge_t *e_e = ext_grs_act_add_edge(pattern, "e", ext_grs_NO_EDGE_POS, n_load, n_proj_m, 2); - - /* The conditions of the pattern */ - { /* if */ - ext_grs_node_t *nodes[1] = {n_load}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_11449, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_mode_m}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_11452, pattern, 1, nodes, 0, edges); - } /* if */ - - /* The negative parts of the pattern */ - { /* NAC 0 */ - ext_grs_graph_t *pattern = ext_grs_act_impose_negative(act); - - /* The nodes of the pattern */ - /* TODO typeof(proj_m_120) = Proj \ []*/ - ext_grs_node_t *n_proj_m_120 = ext_grs_act_add_related_node(pattern, "proj_m_120", grs_op_Proj, mode_ANY, 0, n_proj_m); - /* TODO typeof(load_121) = Load \ []*/ - ext_grs_node_t *n_load_121 = ext_grs_act_add_related_node(pattern, "load_121", grs_op_Load, mode_ANY, 2, n_load); - /* TODO typeof(x) = IR_node \ []*/ - ext_grs_node_t *n_x = ext_grs_act_add_node(pattern, "x", grs_op_IR_node, mode_ANY, 4); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge0_122 = ext_grs_act_add_edge(pattern, "_edge0_122", ext_grs_NO_EDGE_POS, n_load_121, n_x, 3); - ext_grs_edge_t *e_e_123 = ext_grs_act_add_related_edge(pattern, "e_123", ext_grs_NO_EDGE_POS, n_load_121, n_proj_m_120, 2, e_e); - - /* The conditions of the pattern */ - } /* NAC 0 */ - - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* dead_Load */ - - -/* functions for evaluation of conditions of action dead_Ordinary */ - -/* functions for building the pattern of action dead_Ordinary */ -static _inline ext_grs_action_t *grs_action_dead_Ordinary_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "dead_Ordinary"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(a) = Ordinary \ []*/ - ext_grs_node_t *n_a = ext_grs_act_add_node(pattern, "a", grs_op_Ordinary, mode_ANY, 0); - - /* The edges of the pattern */ - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - { /* NAC 0 */ - ext_grs_graph_t *pattern = ext_grs_act_impose_negative(act); - - /* The nodes of the pattern */ - /* TODO typeof(x) = IR_node \ []*/ - ext_grs_node_t *n_x = ext_grs_act_add_node(pattern, "x", grs_op_IR_node, mode_ANY, 1); - /* TODO typeof(a_124) = Ordinary \ []*/ - ext_grs_node_t *n_a_124 = ext_grs_act_add_related_node(pattern, "a_124", grs_op_Ordinary, mode_ANY, 0, n_a); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge0_125 = ext_grs_act_add_edge(pattern, "_edge0_125", ext_grs_NO_EDGE_POS, n_a_124, n_x, 0); - - /* The conditions of the pattern */ - } /* NAC 0 */ - - { /* NAC 1 */ - ext_grs_graph_t *pattern = ext_grs_act_impose_negative(act); - - /* The nodes of the pattern */ - /* TODO typeof(y) = IR_node \ []*/ - ext_grs_node_t *n_y = ext_grs_act_add_node(pattern, "y", grs_op_IR_node, mode_ANY, 2); - /* TODO typeof(a_126) = Ordinary \ []*/ - ext_grs_node_t *n_a_126 = ext_grs_act_add_related_node(pattern, "a_126", grs_op_Ordinary, mode_ANY, 0, n_a); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge0_127 = ext_grs_act_add_edge(pattern, "_edge0_127", ext_grs_NO_EDGE_POS, n_y, n_a_126, 1); - - /* The conditions of the pattern */ - } /* NAC 1 */ - - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* dead_Ordinary */ - - -/* functions for evaluation of conditions of action dead_Proj_Load_Proj */ -static int grs_cond_func_11398(ir_node **node_map, const ir_edge_t **edge_map) { - return 0 /* TODO attr access */ == "M"; -} - -/* functions for building the pattern of action dead_Proj_Load_Proj */ -static _inline ext_grs_action_t *grs_action_dead_Proj_Load_Proj_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "dead_Proj_Load_Proj"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ -/* mode edge: edge hm2*/ - /* TODO typeof(after_prM) = Proj \ []*/ - ext_grs_node_t *n_after_prM = ext_grs_act_add_node(pattern, "after_prM", grs_op_Proj, mode_ANY, 0); - /* TODO typeof(m_mode) = Mode \ []*/ - ext_grs_node_t *n_m_mode = ext_grs_act_add_node(pattern, "m_mode", grs_op_Mode, mode_ANY, 1); -/* mode edge: edge hm1*/ - /* TODO typeof(before_prM) = Proj \ []*/ - ext_grs_node_t *n_before_prM = ext_grs_act_add_node(pattern, "before_prM", grs_op_Proj, mode_ANY, 2); - /* TODO typeof(load) = Load \ []*/ - ext_grs_node_t *n_load = ext_grs_act_add_node(pattern, "load", grs_op_Load, mode_ANY, 3); - /* TODO typeof(first) = IR_node \ []*/ - ext_grs_node_t *n_first = ext_grs_act_add_node(pattern, "first", grs_op_IR_node, mode_ANY, 4); - - /* The edges of the pattern */ - ext_grs_edge_t *e_m1 = ext_grs_act_add_edge(pattern, "m1", ext_grs_NO_EDGE_POS, n_before_prM, n_load, 0); - ext_grs_edge_t *e_df1 = ext_grs_act_add_edge(pattern, "df1", ext_grs_NO_EDGE_POS, n_load, n_after_prM, 1); - ext_grs_edge_t *e_hm2 = ext_grs_act_add_edge(pattern, "hm2", ext_grs_NO_EDGE_POS, n_m_mode, n_after_prM, 2); - ext_grs_edge_t *e_df2 = ext_grs_act_add_edge(pattern, "df2", ext_grs_NO_EDGE_POS, n_first, n_before_prM, 3); - ext_grs_edge_t *e_hm1 = ext_grs_act_add_edge(pattern, "hm1", ext_grs_NO_EDGE_POS, n_m_mode, n_before_prM, 4); - - /* The conditions of the pattern */ - { /* if */ - ext_grs_node_t *nodes[1] = {n_m_mode}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_11398, pattern, 1, nodes, 0, edges); - } /* if */ - - /* The negative parts of the pattern */ - { /* NAC 0 */ - ext_grs_graph_t *pattern = ext_grs_act_impose_negative(act); - - /* The nodes of the pattern */ - /* TODO typeof(after_prM_128) = Proj \ []*/ - ext_grs_node_t *n_after_prM_128 = ext_grs_act_add_related_node(pattern, "after_prM_128", grs_op_Proj, mode_ANY, 0, n_after_prM); - /* TODO typeof(load_129) = Load \ []*/ - ext_grs_node_t *n_load_129 = ext_grs_act_add_related_node(pattern, "load_129", grs_op_Load, mode_ANY, 3, n_load); - /* TODO typeof(x) = IR_node \ []*/ - ext_grs_node_t *n_x = ext_grs_act_add_node(pattern, "x", grs_op_IR_node, mode_ANY, 5); - - /* The edges of the pattern */ - ext_grs_edge_t *e_df1_130 = ext_grs_act_add_related_edge(pattern, "df1_130", ext_grs_NO_EDGE_POS, n_load_129, n_after_prM_128, 1, e_df1); - ext_grs_edge_t *e__edge0_131 = ext_grs_act_add_edge(pattern, "_edge0_131", ext_grs_NO_EDGE_POS, n_load_129, n_x, 5); - - /* The conditions of the pattern */ - } /* NAC 0 */ - - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* dead_Proj_Load_Proj */ - - -/* functions for evaluation of conditions of action dead_double_mem */ - -/* functions for building the pattern of action dead_double_mem */ -static _inline ext_grs_action_t *grs_action_dead_double_mem_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "dead_double_mem"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(ir2) = IR_node \ []*/ - ext_grs_node_t *n_ir2 = ext_grs_act_add_node(pattern, "ir2", grs_op_IR_node, mode_ANY, 0); - /* TODO typeof(ir1) = IR_node \ []*/ - ext_grs_node_t *n_ir1 = ext_grs_act_add_node(pattern, "ir1", grs_op_IR_node, mode_ANY, 1); - - /* The edges of the pattern */ - ext_grs_edge_t *e_mem2 = ext_grs_act_add_edge(pattern, "mem2", ext_grs_NO_EDGE_POS, n_ir2, n_ir1, 0); - ext_grs_edge_t *e_mem1 = ext_grs_act_add_edge(pattern, "mem1", ext_grs_NO_EDGE_POS, n_ir2, n_ir1, 1); - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* dead_double_mem */ - - -/* functions for evaluation of conditions of action elim_AddSub */ - -/* functions for building the pattern of action elim_AddSub */ -static _inline ext_grs_action_t *grs_action_elim_AddSub_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "elim_AddSub"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(y) = IR_node \ []*/ - ext_grs_node_t *n_y = ext_grs_act_add_node(pattern, "y", grs_op_IR_node, mode_ANY, 0); - /* TODO typeof(s) = Sub \ []*/ - ext_grs_node_t *n_s = ext_grs_act_add_node(pattern, "s", grs_op_Sub, mode_ANY, 1); - /* TODO typeof(x) = IR_node \ []*/ - ext_grs_node_t *n_x = ext_grs_act_add_node(pattern, "x", grs_op_IR_node, mode_ANY, 2); - /* TODO typeof(a) = Add \ []*/ - ext_grs_node_t *n_a = ext_grs_act_add_node(pattern, "a", grs_op_Add, mode_ANY, 3); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge3 = ext_grs_act_add_edge(pattern, "_edge3", ext_grs_NO_EDGE_POS, n_y, n_s, 0); - ext_grs_edge_t *e__edge1 = ext_grs_act_add_edge(pattern, "_edge1", ext_grs_NO_EDGE_POS, n_y, n_a, 1); - ext_grs_edge_t *e__edge0 = ext_grs_act_add_edge(pattern, "_edge0", ext_grs_NO_EDGE_POS, n_x, n_a, 2); - ext_grs_edge_t *e__edge2 = ext_grs_act_add_edge(pattern, "_edge2", ext_grs_NO_EDGE_POS, n_a, n_s, 3); - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* elim_AddSub */ - - -/* functions for evaluation of conditions of action elim_SubAdd */ - -/* functions for building the pattern of action elim_SubAdd */ -static _inline ext_grs_action_t *grs_action_elim_SubAdd_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "elim_SubAdd"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(y) = IR_node \ []*/ - ext_grs_node_t *n_y = ext_grs_act_add_node(pattern, "y", grs_op_IR_node, mode_ANY, 0); - /* TODO typeof(s) = Sub \ []*/ - ext_grs_node_t *n_s = ext_grs_act_add_node(pattern, "s", grs_op_Sub, mode_ANY, 1); - /* TODO typeof(x) = IR_node \ []*/ - ext_grs_node_t *n_x = ext_grs_act_add_node(pattern, "x", grs_op_IR_node, mode_ANY, 2); - /* TODO typeof(a) = Add \ []*/ - ext_grs_node_t *n_a = ext_grs_act_add_node(pattern, "a", grs_op_Add, mode_ANY, 3); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge3 = ext_grs_act_add_edge(pattern, "_edge3", ext_grs_NO_EDGE_POS, n_y, n_a, 0); - ext_grs_edge_t *e__edge1 = ext_grs_act_add_edge(pattern, "_edge1", ext_grs_NO_EDGE_POS, n_y, n_s, 1); - ext_grs_edge_t *e__edge0 = ext_grs_act_add_edge(pattern, "_edge0", ext_grs_NO_EDGE_POS, n_x, n_s, 2); - ext_grs_edge_t *e__edge2 = ext_grs_act_add_edge(pattern, "_edge2", ext_grs_NO_EDGE_POS, n_s, n_a, 3); - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* elim_SubAdd */ - - -/* functions for evaluation of conditions of action ids_copy_cf */ - -/* functions for building the pattern of action ids_copy_cf */ -static _inline ext_grs_action_t *grs_action_ids_copy_cf_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "ids_copy_cf"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(id) = Id \ []*/ - ext_grs_node_t *n_id = ext_grs_act_add_node(pattern, "id", grs_op_Id, mode_ANY, 0); - /* TODO typeof(succ) = IR_node \ []*/ - ext_grs_node_t *n_succ = ext_grs_act_add_node(pattern, "succ", grs_op_IR_node, mode_ANY, 1); - /* TODO typeof(pre) = IR_node \ []*/ - ext_grs_node_t *n_pre = ext_grs_act_add_node(pattern, "pre", grs_op_IR_node, mode_ANY, 2); - - /* The edges of the pattern */ - ext_grs_edge_t *e_succE = ext_grs_act_add_edge(pattern, "succE", ext_grs_NO_EDGE_POS, n_id, n_succ, 0); - ext_grs_edge_t *e_preE = ext_grs_act_add_edge(pattern, "preE", ext_grs_NO_EDGE_POS, n_pre, n_id, 1); - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* ids_copy_cf */ - - -/* functions for evaluation of conditions of action ids_copy_df */ - -/* functions for building the pattern of action ids_copy_df */ -static _inline ext_grs_action_t *grs_action_ids_copy_df_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "ids_copy_df"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(id) = Id \ []*/ - ext_grs_node_t *n_id = ext_grs_act_add_node(pattern, "id", grs_op_Id, mode_ANY, 0); - /* TODO typeof(succ) = IR_node \ []*/ - ext_grs_node_t *n_succ = ext_grs_act_add_node(pattern, "succ", grs_op_IR_node, mode_ANY, 1); - /* TODO typeof(pre) = IR_node \ []*/ - ext_grs_node_t *n_pre = ext_grs_act_add_node(pattern, "pre", grs_op_IR_node, mode_ANY, 2); - - /* The edges of the pattern */ - ext_grs_edge_t *e_succE = ext_grs_act_add_edge(pattern, "succE", ext_grs_NO_EDGE_POS, n_id, n_succ, 0); - ext_grs_edge_t *e_preE = ext_grs_act_add_edge(pattern, "preE", ext_grs_NO_EDGE_POS, n_pre, n_id, 1); - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* ids_copy_df */ - - -/* functions for evaluation of conditions of action ids_copy_mem */ - -/* functions for building the pattern of action ids_copy_mem */ -static _inline ext_grs_action_t *grs_action_ids_copy_mem_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "ids_copy_mem"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(id) = Id \ []*/ - ext_grs_node_t *n_id = ext_grs_act_add_node(pattern, "id", grs_op_Id, mode_ANY, 0); - /* TODO typeof(succ) = IR_node \ [node type Block]*/ - ext_grs_node_t *n_succ = ext_grs_act_add_node(pattern, "succ", grs_op_IR_node, mode_ANY, 1); - /* TODO typeof(pre) = IR_node \ [node type Block]*/ - ext_grs_node_t *n_pre = ext_grs_act_add_node(pattern, "pre", grs_op_IR_node, mode_ANY, 2); - - /* The edges of the pattern */ - ext_grs_edge_t *e_succE = ext_grs_act_add_edge(pattern, "succE", ext_grs_NO_EDGE_POS, n_id, n_succ, 0); - ext_grs_edge_t *e_preE = ext_grs_act_add_edge(pattern, "preE", ext_grs_NO_EDGE_POS, n_pre, n_id, 1); - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* ids_copy_mem */ - - -/* functions for evaluation of conditions of action ids_remove */ - -/* functions for building the pattern of action ids_remove */ -static _inline ext_grs_action_t *grs_action_ids_remove_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "ids_remove"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(id) = Id \ []*/ - ext_grs_node_t *n_id = ext_grs_act_add_node(pattern, "id", grs_op_Id, mode_ANY, 0); - - /* The edges of the pattern */ - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - { /* NAC 0 */ - ext_grs_graph_t *pattern = ext_grs_act_impose_negative(act); - - /* The nodes of the pattern */ - /* TODO typeof(id_132) = Id \ []*/ - ext_grs_node_t *n_id_132 = ext_grs_act_add_related_node(pattern, "id_132", grs_op_Id, mode_ANY, 0, n_id); - /* TODO typeof(succ) = IR_node \ []*/ - ext_grs_node_t *n_succ = ext_grs_act_add_node(pattern, "succ", grs_op_IR_node, mode_ANY, 1); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge0_133 = ext_grs_act_add_edge(pattern, "_edge0_133", ext_grs_NO_EDGE_POS, n_id_132, n_succ, 0); - - /* The conditions of the pattern */ - } /* NAC 0 */ - - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* ids_remove */ - - -/* functions for evaluation of conditions of action mux_a */ -static int grs_cond_func_11133(ir_node **node_map, const ir_edge_t **edge_map) { - return 0 /* TODO attr access */ == 0; -} -static int grs_cond_func_11136(ir_node **node_map, const ir_edge_t **edge_map) { - return 0 /* TODO attr access */ == 1; -} -static int grs_cond_func_11139(ir_node **node_map, const ir_edge_t **edge_map) { - return 0 /* TODO attr access */ == 0 /* TODO attr access */; -} -static int grs_cond_func_11142(ir_node **node_map, const ir_edge_t **edge_map) { - return 0 /* TODO attr access */ == 0 /* TODO attr access */; -} - -/* functions for building the pattern of action mux_a */ -static _inline ext_grs_action_t *grs_action_mux_a_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "mux_a"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(cond) = Cond \ []*/ - ext_grs_node_t *n_cond = ext_grs_act_add_node(pattern, "cond", grs_op_Cond, mode_ANY, 0); - /* TODO typeof(phi) = Phi \ []*/ - ext_grs_node_t *n_phi = ext_grs_act_add_node(pattern, "phi", grs_op_Phi, mode_ANY, 1); - /* TODO typeof(bb1) = Block \ []*/ - ext_grs_node_t *n_bb1 = ext_grs_act_add_node(pattern, "bb1", grs_op_Block, mode_ANY, 2); - /* TODO typeof(x2) = IR_node \ []*/ - ext_grs_node_t *n_x2 = ext_grs_act_add_node(pattern, "x2", grs_op_IR_node, mode_ANY, 3); - /* TODO typeof(bb0) = Block \ []*/ - ext_grs_node_t *n_bb0 = ext_grs_act_add_node(pattern, "bb0", grs_op_Block, mode_ANY, 4); - /* TODO typeof(mx) = Mode \ []*/ - ext_grs_node_t *n_mx = ext_grs_act_add_node(pattern, "mx", grs_op_Mode, mode_ANY, 5); -/* mode edge: edge $edge4*/ - /* TODO typeof(px0) = Proj \ []*/ - ext_grs_node_t *n_px0 = ext_grs_act_add_node(pattern, "px0", grs_op_Proj, mode_ANY, 6); - /* TODO typeof(jmp) = Jmp \ []*/ - ext_grs_node_t *n_jmp = ext_grs_act_add_node(pattern, "jmp", grs_op_Jmp, mode_ANY, 7); - /* TODO typeof(pb) = Proj \ []*/ - ext_grs_node_t *n_pb = ext_grs_act_add_node(pattern, "pb", grs_op_Proj, mode_ANY, 8); - /* TODO typeof(x1) = IR_node \ []*/ - ext_grs_node_t *n_x1 = ext_grs_act_add_node(pattern, "x1", grs_op_IR_node, mode_ANY, 9); -/* mode edge: edge $edge5*/ - /* TODO typeof(px1) = Proj \ []*/ - ext_grs_node_t *n_px1 = ext_grs_act_add_node(pattern, "px1", grs_op_Proj, mode_ANY, 10); - /* TODO typeof(bb) = Block \ []*/ - ext_grs_node_t *n_bb = ext_grs_act_add_node(pattern, "bb", grs_op_Block, mode_ANY, 11); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge3 = ext_grs_act_add_edge(pattern, "_edge3", ext_grs_NO_EDGE_POS, n_bb, n_px1, 0); - ext_grs_edge_t *e_ephi2 = ext_grs_act_add_edge(pattern, "ephi2", ext_grs_NO_EDGE_POS, n_x2, n_phi, 1); - ext_grs_edge_t *e__edge0 = ext_grs_act_add_edge(pattern, "_edge0", ext_grs_NO_EDGE_POS, n_bb, n_pb, 2); - ext_grs_edge_t *e_ephibb2 = ext_grs_act_add_edge(pattern, "ephibb2", ext_grs_NO_EDGE_POS, n_px1, n_bb1, 3); - ext_grs_edge_t *e_ephi1 = ext_grs_act_add_edge(pattern, "ephi1", ext_grs_NO_EDGE_POS, n_x1, n_phi, 4); - ext_grs_edge_t *e__edge6 = ext_grs_act_add_edge(pattern, "_edge6", ext_grs_NO_EDGE_POS, n_bb0, n_jmp, 5); - ext_grs_edge_t *e__edge11 = ext_grs_act_add_edge(pattern, "_edge11", ext_grs_NO_EDGE_POS, n_pb, n_cond, 6); - ext_grs_edge_t *e__edge4 = ext_grs_act_add_edge(pattern, "_edge4", ext_grs_NO_EDGE_POS, n_mx, n_px0, 7); - ext_grs_edge_t *e__edge5 = ext_grs_act_add_edge(pattern, "_edge5", ext_grs_NO_EDGE_POS, n_mx, n_px1, 8); - ext_grs_edge_t *e__edge1 = ext_grs_act_add_edge(pattern, "_edge1", ext_grs_NO_EDGE_POS, n_bb, n_cond, 9); - ext_grs_edge_t *e__edge7 = ext_grs_act_add_edge(pattern, "_edge7", ext_grs_NO_EDGE_POS, n_bb1, n_phi, 10); - ext_grs_edge_t *e__edge8 = ext_grs_act_add_edge(pattern, "_edge8", ext_grs_NO_EDGE_POS, n_px0, n_bb0, 11); - ext_grs_edge_t *e__edge10 = ext_grs_act_add_edge(pattern, "_edge10", ext_grs_NO_EDGE_POS, n_cond, n_px1, 12); - ext_grs_edge_t *e_ephibb1 = ext_grs_act_add_edge(pattern, "ephibb1", ext_grs_NO_EDGE_POS, n_jmp, n_bb1, 13); - ext_grs_edge_t *e__edge2 = ext_grs_act_add_edge(pattern, "_edge2", ext_grs_NO_EDGE_POS, n_bb, n_px0, 14); - ext_grs_edge_t *e__edge9 = ext_grs_act_add_edge(pattern, "_edge9", ext_grs_NO_EDGE_POS, n_cond, n_px0, 15); - - /* The conditions of the pattern */ - { /* if */ - ext_grs_node_t *nodes[1] = {n_px0}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_11133, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_px1}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_11136, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_ephi1, e_ephibb1}; - - ext_grs_act_register_condition(grs_cond_func_11139, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_ephi2, e_ephibb2}; - - ext_grs_act_register_condition(grs_cond_func_11142, pattern, 0, nodes, 2, edges); - } /* if */ - - /* The negative parts of the pattern */ - { /* NAC 0 */ - ext_grs_graph_t *pattern = ext_grs_act_impose_negative(act); - - /* The nodes of the pattern */ - /* TODO typeof(bb0_134) = Block \ []*/ - ext_grs_node_t *n_bb0_134 = ext_grs_act_add_related_node(pattern, "bb0_134", grs_op_Block, mode_ANY, 4, n_bb0); - /* TODO typeof(x) = IR_node \ []*/ - ext_grs_node_t *n_x = ext_grs_act_add_node(pattern, "x", grs_op_IR_node, mode_ANY, 12); - /* TODO typeof(jmp_135) = Jmp \ []*/ - ext_grs_node_t *n_jmp_135 = ext_grs_act_add_related_node(pattern, "jmp_135", grs_op_Jmp, mode_ANY, 7, n_jmp); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge1_136 = ext_grs_act_add_edge(pattern, "_edge1_136", ext_grs_NO_EDGE_POS, n_bb0_134, n_x, 16); - ext_grs_edge_t *e__edge6_137 = ext_grs_act_add_related_edge(pattern, "_edge6_137", ext_grs_NO_EDGE_POS, n_bb0_134, n_jmp_135, 5, e__edge6); - - /* The conditions of the pattern */ - } /* NAC 0 */ - - { /* NAC 1 */ - ext_grs_graph_t *pattern = ext_grs_act_impose_negative(act); - - /* The nodes of the pattern */ - /* TODO typeof(phi_138) = Phi \ []*/ - ext_grs_node_t *n_phi_138 = ext_grs_act_add_related_node(pattern, "phi_138", grs_op_Phi, mode_ANY, 1, n_phi); - /* TODO typeof(x2_139) = IR_node \ []*/ - ext_grs_node_t *n_x2_139 = ext_grs_act_add_related_node(pattern, "x2_139", grs_op_IR_node, mode_ANY, 3, n_x2); - /* TODO typeof(x) = IR_node \ []*/ - ext_grs_node_t *n_x = ext_grs_act_add_node(pattern, "x", grs_op_IR_node, mode_ANY, 13); - /* TODO typeof(x1_140) = IR_node \ []*/ - ext_grs_node_t *n_x1_140 = ext_grs_act_add_related_node(pattern, "x1_140", grs_op_IR_node, mode_ANY, 9, n_x1); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge1_141 = ext_grs_act_add_edge(pattern, "_edge1_141", ext_grs_NO_EDGE_POS, n_x2_139, n_phi_138, 17); - ext_grs_edge_t *e__edge0_142 = ext_grs_act_add_edge(pattern, "_edge0_142", ext_grs_NO_EDGE_POS, n_x1_140, n_phi_138, 18); - ext_grs_edge_t *e__edge2_143 = ext_grs_act_add_edge(pattern, "_edge2_143", ext_grs_NO_EDGE_POS, n_x, n_phi_138, 19); - - /* The conditions of the pattern */ - } /* NAC 1 */ - - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* mux_a */ - - -/* functions for evaluation of conditions of action sse2_pmaxsw */ - -/* functions for building the pattern of action sse2_pmaxsw */ -static _inline ext_grs_action_t *grs_action_sse2_pmaxsw_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "sse2_pmaxsw"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(y) = IR_node \ []*/ - ext_grs_node_t *n_y = ext_grs_act_add_node(pattern, "y", grs_op_IR_node, mode_ANY, 0); - /* TODO typeof(cmp) = Cmp \ []*/ - ext_grs_node_t *n_cmp = ext_grs_act_add_node(pattern, "cmp", grs_op_Cmp, mode_ANY, 1); - /* TODO typeof(mux) = Mux \ []*/ - ext_grs_node_t *n_mux = ext_grs_act_add_node(pattern, "mux", grs_op_Mux, mode_ANY, 2); - /* TODO typeof(x) = IR_node \ []*/ - ext_grs_node_t *n_x = ext_grs_act_add_node(pattern, "x", grs_op_IR_node, mode_ANY, 3); - /* TODO typeof(pb) = Proj \ []*/ - ext_grs_node_t *n_pb = ext_grs_act_add_node(pattern, "pb", grs_op_Proj, mode_ANY, 4); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge3 = ext_grs_act_add_edge(pattern, "_edge3", ext_grs_NO_EDGE_POS, n_y, n_cmp, 0); - ext_grs_edge_t *e__edge5 = ext_grs_act_add_edge(pattern, "_edge5", ext_grs_NO_EDGE_POS, n_cmp, n_pb, 1); - ext_grs_edge_t *e__edge1 = ext_grs_act_add_edge(pattern, "_edge1", ext_grs_NO_EDGE_POS, n_y, n_mux, 2); - ext_grs_edge_t *e__edge0 = ext_grs_act_add_edge(pattern, "_edge0", ext_grs_NO_EDGE_POS, n_x, n_mux, 3); - ext_grs_edge_t *e__edge2 = ext_grs_act_add_edge(pattern, "_edge2", ext_grs_NO_EDGE_POS, n_x, n_cmp, 4); - ext_grs_edge_t *e__edge4 = ext_grs_act_add_edge(pattern, "_edge4", ext_grs_NO_EDGE_POS, n_pb, n_mux, 5); - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* sse2_pmaxsw */ - - -/* functions for evaluation of conditions of action sync_load_a */ -static int grs_cond_func_10670(ir_node **node_map, const ir_edge_t **edge_map) { - return 0 /* TODO attr access */ == 0; -} -static int grs_cond_func_10673(ir_node **node_map, const ir_edge_t **edge_map) { - return 0 /* TODO attr access */ == 0; -} -static int grs_cond_func_10676(ir_node **node_map, const ir_edge_t **edge_map) { - return 0 /* TODO attr access */ == "M"; -} -static int grs_cond_func_10679(ir_node **node_map, const ir_edge_t **edge_map) { - return 0 /* TODO attr access */ == 0; -} -static int grs_cond_func_10682(ir_node **node_map, const ir_edge_t **edge_map) { - return 0 /* TODO attr access */ == 0; -} - -/* functions for building the pattern of action sync_load_a */ -static _inline ext_grs_action_t *grs_action_sync_load_a_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "sync_load_a"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(mm) = Mode \ []*/ - ext_grs_node_t *n_mm = ext_grs_act_add_node(pattern, "mm", grs_op_Mode, mode_ANY, 0); - /* TODO typeof(ld_2) = Load \ []*/ - ext_grs_node_t *n_ld_2 = ext_grs_act_add_node(pattern, "ld_2", grs_op_Load, mode_ANY, 1); - /* TODO typeof(ld_1) = Load \ []*/ - ext_grs_node_t *n_ld_1 = ext_grs_act_add_node(pattern, "ld_1", grs_op_Load, mode_ANY, 2); -/* mode edge: edge $edge4*/ - /* TODO typeof(p_2) = Proj \ []*/ - ext_grs_node_t *n_p_2 = ext_grs_act_add_node(pattern, "p_2", grs_op_Proj, mode_ANY, 3); - /* TODO typeof(x) = IR_node \ [node type SyncArity2, node type Sync]*/ - ext_grs_node_t *n_x = ext_grs_act_add_node(pattern, "x", grs_op_IR_node, mode_ANY, 4); - /* TODO typeof(bb) = Block \ []*/ - ext_grs_node_t *n_bb = ext_grs_act_add_node(pattern, "bb", grs_op_Block, mode_ANY, 5); -/* mode edge: edge $edge3*/ - /* TODO typeof(p_1) = Proj \ []*/ - ext_grs_node_t *n_p_1 = ext_grs_act_add_node(pattern, "p_1", grs_op_Proj, mode_ANY, 6); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge3 = ext_grs_act_add_edge(pattern, "_edge3", ext_grs_NO_EDGE_POS, n_mm, n_p_1, 0); - ext_grs_edge_t *e__edge1 = ext_grs_act_add_edge(pattern, "_edge1", ext_grs_NO_EDGE_POS, n_ld_1, n_p_1, 1); - ext_grs_edge_t *e__edge0 = ext_grs_act_add_edge(pattern, "_edge0", ext_grs_NO_EDGE_POS, n_x, n_ld_1, 2); - ext_grs_edge_t *e_el1 = ext_grs_act_add_edge(pattern, "el1", ext_grs_NO_EDGE_POS, n_p_1, n_ld_2, 3); - ext_grs_edge_t *e__edge2 = ext_grs_act_add_edge(pattern, "_edge2", ext_grs_NO_EDGE_POS, n_bb, n_p_2, 4); - ext_grs_edge_t *e_dfld2 = ext_grs_act_add_edge(pattern, "dfld2", ext_grs_NO_EDGE_POS, n_ld_2, n_p_2, 5); - ext_grs_edge_t *e__edge4 = ext_grs_act_add_edge(pattern, "_edge4", ext_grs_NO_EDGE_POS, n_mm, n_p_2, 6); - - /* The conditions of the pattern */ - { /* if */ - ext_grs_node_t *nodes[1] = {n_p_1}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_10670, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_p_2}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_10673, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_mm}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_10676, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_ld_1}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_10679, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_ld_2}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_10682, pattern, 1, nodes, 0, edges); - } /* if */ - - /* The negative parts of the pattern */ - { /* NAC 0 */ - ext_grs_graph_t *pattern = ext_grs_act_impose_negative(act); - - /* The nodes of the pattern */ - /* TODO typeof(l2) = Load \ []*/ - ext_grs_node_t *n_l2 = ext_grs_act_add_node(pattern, "l2", grs_op_Load, mode_ANY, 7); - /* TODO typeof(x_144) = IR_node \ [node type SyncArity2, node type Sync]*/ - ext_grs_node_t *n_x_144 = ext_grs_act_add_related_node(pattern, "x_144", grs_op_IR_node, mode_ANY, 4, n_x); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge0_145 = ext_grs_act_add_edge(pattern, "_edge0_145", ext_grs_NO_EDGE_POS, n_l2, n_x_144, 7); - - /* The conditions of the pattern */ - } /* NAC 0 */ - - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* sync_load_a */ - - -/* functions for evaluation of conditions of action sync_load_a_fake */ - -/* functions for building the pattern of action sync_load_a_fake */ -static _inline ext_grs_action_t *grs_action_sync_load_a_fake_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "sync_load_a_fake"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(ld_2) = Load \ []*/ - ext_grs_node_t *n_ld_2 = ext_grs_act_add_node(pattern, "ld_2", grs_op_Load, mode_ANY, 0); - /* TODO typeof(ld_1) = Load \ []*/ - ext_grs_node_t *n_ld_1 = ext_grs_act_add_node(pattern, "ld_1", grs_op_Load, mode_ANY, 1); - /* TODO typeof(p_2) = Proj \ []*/ - ext_grs_node_t *n_p_2 = ext_grs_act_add_node(pattern, "p_2", grs_op_Proj, mode_ANY, 2); - /* TODO typeof(x) = IR_node \ []*/ - ext_grs_node_t *n_x = ext_grs_act_add_node(pattern, "x", grs_op_IR_node, mode_ANY, 3); - /* TODO typeof(bb) = Block \ []*/ - ext_grs_node_t *n_bb = ext_grs_act_add_node(pattern, "bb", grs_op_Block, mode_ANY, 4); - /* TODO typeof(p_1) = Proj \ []*/ - ext_grs_node_t *n_p_1 = ext_grs_act_add_node(pattern, "p_1", grs_op_Proj, mode_ANY, 5); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge3 = ext_grs_act_add_edge(pattern, "_edge3", ext_grs_NO_EDGE_POS, n_ld_2, n_p_2, 0); - ext_grs_edge_t *e__edge1 = ext_grs_act_add_edge(pattern, "_edge1", ext_grs_NO_EDGE_POS, n_ld_1, n_p_1, 1); - ext_grs_edge_t *e__edge0 = ext_grs_act_add_edge(pattern, "_edge0", ext_grs_NO_EDGE_POS, n_x, n_ld_1, 2); - ext_grs_edge_t *e__edge2 = ext_grs_act_add_edge(pattern, "_edge2", ext_grs_NO_EDGE_POS, n_p_1, n_ld_2, 3); - ext_grs_edge_t *e__edge4 = ext_grs_act_add_edge(pattern, "_edge4", ext_grs_NO_EDGE_POS, n_bb, n_p_2, 4); - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* sync_load_a_fake */ - - -/* functions for evaluation of conditions of action sync_load_b */ -static int grs_cond_func_10862(ir_node **node_map, const ir_edge_t **edge_map) { - return 0 /* TODO attr access */ == 0; -} -static int grs_cond_func_10865(ir_node **node_map, const ir_edge_t **edge_map) { - return 0 /* TODO attr access */ == 0; -} -static int grs_cond_func_10868(ir_node **node_map, const ir_edge_t **edge_map) { - return 0 /* TODO attr access */ == "M"; -} - -/* functions for building the pattern of action sync_load_b */ -static _inline ext_grs_action_t *grs_action_sync_load_b_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "sync_load_b"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(mm) = Mode \ []*/ - ext_grs_node_t *n_mm = ext_grs_act_add_node(pattern, "mm", grs_op_Mode, mode_ANY, 0); - /* TODO typeof(ld_1) = Load \ []*/ - ext_grs_node_t *n_ld_1 = ext_grs_act_add_node(pattern, "ld_1", grs_op_Load, mode_ANY, 1); - /* TODO typeof(x) = IR_node \ []*/ - ext_grs_node_t *n_x = ext_grs_act_add_node(pattern, "x", grs_op_IR_node, mode_ANY, 2); -/* mode edge: edge $edge5*/ - /* TODO typeof(sync) = Sync \ []*/ - ext_grs_node_t *n_sync = ext_grs_act_add_node(pattern, "sync", grs_op_Sync, mode_ANY, 3); - /* TODO typeof(bb) = Block \ []*/ - ext_grs_node_t *n_bb = ext_grs_act_add_node(pattern, "bb", grs_op_Block, mode_ANY, 4); -/* mode edge: edge $edge4*/ - /* TODO typeof(p) = Proj \ []*/ - ext_grs_node_t *n_p = ext_grs_act_add_node(pattern, "p", grs_op_Proj, mode_ANY, 5); - /* TODO typeof(ld) = Load \ []*/ - ext_grs_node_t *n_ld = ext_grs_act_add_node(pattern, "ld", grs_op_Load, mode_ANY, 6); -/* mode edge: edge $edge3*/ - /* TODO typeof(p_1) = Proj \ []*/ - ext_grs_node_t *n_p_1 = ext_grs_act_add_node(pattern, "p_1", grs_op_Proj, mode_ANY, 7); - - /* The edges of the pattern */ - ext_grs_edge_t *e__edge3 = ext_grs_act_add_edge(pattern, "_edge3", ext_grs_NO_EDGE_POS, n_mm, n_p_1, 0); - ext_grs_edge_t *e__edge5 = ext_grs_act_add_edge(pattern, "_edge5", ext_grs_NO_EDGE_POS, n_mm, n_sync, 1); - ext_grs_edge_t *e_bb1 = ext_grs_act_add_edge(pattern, "bb1", ext_grs_NO_EDGE_POS, n_bb, n_p, 2); - ext_grs_edge_t *e__edge1 = ext_grs_act_add_edge(pattern, "_edge1", ext_grs_NO_EDGE_POS, n_ld_1, n_p_1, 3); - ext_grs_edge_t *e__edge0 = ext_grs_act_add_edge(pattern, "_edge0", ext_grs_NO_EDGE_POS, n_x, n_ld_1, 4); - ext_grs_edge_t *e_dfp = ext_grs_act_add_edge(pattern, "dfp", ext_grs_NO_EDGE_POS, n_ld, n_p, 5); - ext_grs_edge_t *e_el1 = ext_grs_act_add_edge(pattern, "el1", ext_grs_NO_EDGE_POS, n_sync, n_ld, 6); - ext_grs_edge_t *e__edge2 = ext_grs_act_add_edge(pattern, "_edge2", ext_grs_NO_EDGE_POS, n_p_1, n_sync, 7); - ext_grs_edge_t *e__edge4 = ext_grs_act_add_edge(pattern, "_edge4", ext_grs_NO_EDGE_POS, n_mm, n_p, 8); - - /* The conditions of the pattern */ - { /* if */ - ext_grs_node_t *nodes[1] = {n_p_1}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_10862, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_p}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_10865, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_mm}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_10868, pattern, 1, nodes, 0, edges); - } /* if */ - - /* The negative parts of the pattern */ - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* sync_load_b */ - - -/* functions for evaluation of conditions of action sync_set_arity2 */ - -/* functions for building the pattern of action sync_set_arity2 */ -static _inline ext_grs_action_t *grs_action_sync_set_arity2_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_test, "sync_set_arity2"); - int check; - { /* L */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - /* TODO typeof(s) = SyncArity2 \ []*/ - ext_grs_node_t *n_s = ext_grs_act_add_node(pattern, "s", grs_op_SyncArity2, mode_ANY, 0); - - /* The edges of the pattern */ - - /* The conditions of the pattern */ - /* The negative parts of the pattern */ - } /* L */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* sync_set_arity2 */ - - -/* global variables containing the actions */ -ext_grs_action_t *ext_grs_action_FirmAct_KillAllButEnd; -ext_grs_action_t *ext_grs_action_FirmAct_KillBlock; -ext_grs_action_t *ext_grs_action_FirmAct_KillCall; -ext_grs_action_t *ext_grs_action_FirmAct_KillConst; -ext_grs_action_t *ext_grs_action_FirmAct_KillEntity; -ext_grs_action_t *ext_grs_action_FirmAct_KillMemoryEdges; -ext_grs_action_t *ext_grs_action_FirmAct_KillMethod_IRG; -ext_grs_action_t *ext_grs_action_FirmAct_KillMode; -ext_grs_action_t *ext_grs_action_FirmAct_KillType; -ext_grs_action_t *ext_grs_action_FirmAct_KillUselessConv; -ext_grs_action_t *ext_grs_action_FirmAct_MAX; -ext_grs_action_t *ext_grs_action_FirmAct_MAX2; -ext_grs_action_t *ext_grs_action_FirmAct_PBQP_0a; -ext_grs_action_t *ext_grs_action_FirmAct_PBQP_1a; -ext_grs_action_t *ext_grs_action_FirmAct_PBQP_1b; -ext_grs_action_t *ext_grs_action_FirmAct_PBQP_1c; -ext_grs_action_t *ext_grs_action_FirmAct_PBQP_1d; -ext_grs_action_t *ext_grs_action_FirmAct_PBQP_2a; -ext_grs_action_t *ext_grs_action_FirmAct_PBQP_2b; -ext_grs_action_t *ext_grs_action_FirmAct_PBQP_2c; -ext_grs_action_t *ext_grs_action_FirmAct_PBQP_2d; -ext_grs_action_t *ext_grs_action_FirmAct_V2LD_a; -ext_grs_action_t *ext_grs_action_FirmAct_V2LD_b; -ext_grs_action_t *ext_grs_action_FirmAct_V2LD_c; -ext_grs_action_t *ext_grs_action_FirmAct_V2LD_d; -ext_grs_action_t *ext_grs_action_FirmAct_V2ST_a; -ext_grs_action_t *ext_grs_action_FirmAct_V2SUB_a; -ext_grs_action_t *ext_grs_action_FirmAct_dead_Block; -ext_grs_action_t *ext_grs_action_FirmAct_dead_Block_unify; -ext_grs_action_t *ext_grs_action_FirmAct_dead_Block_unify2; -ext_grs_action_t *ext_grs_action_FirmAct_dead_Load; -ext_grs_action_t *ext_grs_action_FirmAct_dead_Ordinary; -ext_grs_action_t *ext_grs_action_FirmAct_dead_Proj_Load_Proj; -ext_grs_action_t *ext_grs_action_FirmAct_dead_double_mem; -ext_grs_action_t *ext_grs_action_FirmAct_elim_AddSub; -ext_grs_action_t *ext_grs_action_FirmAct_elim_SubAdd; -ext_grs_action_t *ext_grs_action_FirmAct_ids_copy_cf; -ext_grs_action_t *ext_grs_action_FirmAct_ids_copy_df; -ext_grs_action_t *ext_grs_action_FirmAct_ids_copy_mem; -ext_grs_action_t *ext_grs_action_FirmAct_ids_remove; -ext_grs_action_t *ext_grs_action_FirmAct_mux_a; -ext_grs_action_t *ext_grs_action_FirmAct_sse2_pmaxsw; -ext_grs_action_t *ext_grs_action_FirmAct_sync_load_a; -ext_grs_action_t *ext_grs_action_FirmAct_sync_load_a_fake; -ext_grs_action_t *ext_grs_action_FirmAct_sync_load_b; -ext_grs_action_t *ext_grs_action_FirmAct_sync_set_arity2; - -/* function for initializing the actions */ -ext_grs_action_init_FirmAct() { - init(); - ext_grs_action_FirmAct_KillAllButEnd = grs_action_KillAllButEnd_init(); - ext_grs_action_FirmAct_KillBlock = grs_action_KillBlock_init(); - ext_grs_action_FirmAct_KillCall = grs_action_KillCall_init(); - ext_grs_action_FirmAct_KillConst = grs_action_KillConst_init(); - ext_grs_action_FirmAct_KillEntity = grs_action_KillEntity_init(); - ext_grs_action_FirmAct_KillMemoryEdges = grs_action_KillMemoryEdges_init(); - ext_grs_action_FirmAct_KillMethod_IRG = grs_action_KillMethod_IRG_init(); - ext_grs_action_FirmAct_KillMode = grs_action_KillMode_init(); - ext_grs_action_FirmAct_KillType = grs_action_KillType_init(); - ext_grs_action_FirmAct_KillUselessConv = grs_action_KillUselessConv_init(); - ext_grs_action_FirmAct_MAX = grs_action_MAX_init(); - ext_grs_action_FirmAct_MAX2 = grs_action_MAX2_init(); - ext_grs_action_FirmAct_PBQP_0a = grs_action_PBQP_0a_init(); - ext_grs_action_FirmAct_PBQP_1a = grs_action_PBQP_1a_init(); - ext_grs_action_FirmAct_PBQP_1b = grs_action_PBQP_1b_init(); - ext_grs_action_FirmAct_PBQP_1c = grs_action_PBQP_1c_init(); - ext_grs_action_FirmAct_PBQP_1d = grs_action_PBQP_1d_init(); - ext_grs_action_FirmAct_PBQP_2a = grs_action_PBQP_2a_init(); - ext_grs_action_FirmAct_PBQP_2b = grs_action_PBQP_2b_init(); - ext_grs_action_FirmAct_PBQP_2c = grs_action_PBQP_2c_init(); - ext_grs_action_FirmAct_PBQP_2d = grs_action_PBQP_2d_init(); - ext_grs_action_FirmAct_V2LD_a = grs_action_V2LD_a_init(); - ext_grs_action_FirmAct_V2LD_b = grs_action_V2LD_b_init(); - ext_grs_action_FirmAct_V2LD_c = grs_action_V2LD_c_init(); - ext_grs_action_FirmAct_V2LD_d = grs_action_V2LD_d_init(); - ext_grs_action_FirmAct_V2ST_a = grs_action_V2ST_a_init(); - ext_grs_action_FirmAct_V2SUB_a = grs_action_V2SUB_a_init(); - ext_grs_action_FirmAct_dead_Block = grs_action_dead_Block_init(); - ext_grs_action_FirmAct_dead_Block_unify = grs_action_dead_Block_unify_init(); - ext_grs_action_FirmAct_dead_Block_unify2 = grs_action_dead_Block_unify2_init(); - ext_grs_action_FirmAct_dead_Load = grs_action_dead_Load_init(); - ext_grs_action_FirmAct_dead_Ordinary = grs_action_dead_Ordinary_init(); - ext_grs_action_FirmAct_dead_Proj_Load_Proj = grs_action_dead_Proj_Load_Proj_init(); - ext_grs_action_FirmAct_dead_double_mem = grs_action_dead_double_mem_init(); - ext_grs_action_FirmAct_elim_AddSub = grs_action_elim_AddSub_init(); - ext_grs_action_FirmAct_elim_SubAdd = grs_action_elim_SubAdd_init(); - ext_grs_action_FirmAct_ids_copy_cf = grs_action_ids_copy_cf_init(); - ext_grs_action_FirmAct_ids_copy_df = grs_action_ids_copy_df_init(); - ext_grs_action_FirmAct_ids_copy_mem = grs_action_ids_copy_mem_init(); - ext_grs_action_FirmAct_ids_remove = grs_action_ids_remove_init(); - ext_grs_action_FirmAct_mux_a = grs_action_mux_a_init(); - ext_grs_action_FirmAct_sse2_pmaxsw = grs_action_sse2_pmaxsw_init(); - ext_grs_action_FirmAct_sync_load_a = grs_action_sync_load_a_init(); - ext_grs_action_FirmAct_sync_load_a_fake = grs_action_sync_load_a_fake_init(); - ext_grs_action_FirmAct_sync_load_b = grs_action_sync_load_b_init(); - ext_grs_action_FirmAct_sync_set_arity2 = grs_action_sync_set_arity2_init(); - - /* establish inherritance */ - ext_grs_appoint_heir(grs_op_ASM_CAST, grs_op_Node); - - ext_grs_appoint_heir(grs_op_VProj, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_VProj, grs_op_Ordinary); - - ext_grs_appoint_heir(grs_op_Abs, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Abs, grs_op_Arithmetic); - ext_grs_appoint_heir(grs_op_Abs, grs_op_Unary); - - ext_grs_appoint_heir(grs_op_Nary, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Entity, grs_op_FIRM_node); - - ext_grs_appoint_heir(grs_op_Intrinsic_sse_addr_sse, grs_op_Intrinsic); - - ext_grs_appoint_heir(grs_op_Ordinary, grs_op_Node); - - ext_grs_appoint_heir(grs_op_First_right_load, grs_op_Non_output); - - ext_grs_appoint_heir(grs_op_Const, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Const, grs_op_Ordinary); - - ext_grs_appoint_heir(grs_op_Tarval, grs_op_FIRM_node); - - ext_grs_appoint_heir(grs_op_Primitive, grs_op_Type); - - ext_grs_appoint_heir(grs_op_IntrinsicFP, grs_op_Intrinsic); - - ext_grs_appoint_heir(grs_op_InstOf, grs_op_IR_node); - - ext_grs_appoint_heir(grs_op_IntrinsicMMX, grs_op_Intrinsic); - - ext_grs_appoint_heir(grs_op_Left_blocked, grs_op_Blocked); - ext_grs_appoint_heir(grs_op_Left_blocked, grs_op_Non_output); - - ext_grs_appoint_heir(grs_op_Compound, grs_op_Type); - - ext_grs_appoint_heir(grs_op_IR_node, grs_op_FIRM_node); - - ext_grs_appoint_heir(grs_op_Non_pattern_block, grs_op_Non_pattern); - - ext_grs_appoint_heir(grs_op_IntrinsicGP, grs_op_Intrinsic); - - ext_grs_appoint_heir(grs_op_Trinary, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Non_output_add, grs_op_Non_output); - ext_grs_appoint_heir(grs_op_Non_output_add, grs_op_Add); - - ext_grs_appoint_heir(grs_op_SyncArity2, grs_op_Sync); - - ext_grs_appoint_heir(grs_op_min, grs_op_IntrinsicGP); - - ext_grs_appoint_heir(grs_op_End, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_End, grs_op_Special); - - ext_grs_appoint_heir(grs_op_Binary, grs_op_Node); - - ext_grs_appoint_heir(grs_op_CCopy, grs_op_IntrinsicGP); - - ext_grs_appoint_heir(grs_op_Mulh, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Mulh, grs_op_Arithmetic); - ext_grs_appoint_heir(grs_op_Mulh, grs_op_Binary); - ext_grs_appoint_heir(grs_op_Mulh, grs_op_Commutative); - - ext_grs_appoint_heir(grs_op_ASM_node, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Free, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Free, grs_op_Memory); - - ext_grs_appoint_heir(grs_op_Intrinsic_sse_sse_sse, grs_op_Intrinsic); - - ext_grs_appoint_heir(grs_op_Break, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Break, grs_op_Controlflow); - - ext_grs_appoint_heir(grs_op_G2s_complex, grs_op_G2s); - - ext_grs_appoint_heir(grs_op_Union, grs_op_Compound); - - ext_grs_appoint_heir(grs_op_Start_non_pattern, grs_op_Non_pattern); - - ext_grs_appoint_heir(grs_op_Unary, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Mul, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Mul, grs_op_Arithmetic); - ext_grs_appoint_heir(grs_op_Mul, grs_op_Binary); - ext_grs_appoint_heir(grs_op_Mul, grs_op_Commutative); - - ext_grs_appoint_heir(grs_op_IntConst, grs_op_Const); - - ext_grs_appoint_heir(grs_op_Non_output, grs_op_Non_pattern); - ext_grs_appoint_heir(grs_op_Non_output, grs_op_Non_replace); - - ext_grs_appoint_heir(grs_op_Start, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Start, grs_op_Special); - - ext_grs_appoint_heir(grs_op_IntrinsicSSE, grs_op_Intrinsic); - - ext_grs_appoint_heir(grs_op_Create_helper, grs_op_Non_output); - - ext_grs_appoint_heir(grs_op_MemNode, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_MemNode, grs_op_Memory); - - ext_grs_appoint_heir(grs_op_Right_loads, grs_op_Non_output); - - ext_grs_appoint_heir(grs_op_Left_load_helper, grs_op_Non_pattern); - - ext_grs_appoint_heir(grs_op_Match, grs_op_Node); - - ext_grs_appoint_heir(grs_op_EndReg, grs_op_IR_node); - - ext_grs_appoint_heir(grs_op_Tuple, grs_op_IR_node); - - ext_grs_appoint_heir(grs_op_New_vop, grs_op_Non_pattern); - - ext_grs_appoint_heir(grs_op_Controlflow, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Pointer, grs_op_Type); - - ext_grs_appoint_heir(grs_op_FIRM_node, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Marker, grs_op_Non_pattern); - - ext_grs_appoint_heir(grs_op_Non_output_Block, grs_op_Block); - ext_grs_appoint_heir(grs_op_Non_output_Block, grs_op_Non_output); - - ext_grs_appoint_heir(grs_op_V2pi_1, grs_op_V2); - ext_grs_appoint_heir(grs_op_V2pi_1, grs_op_pi); - - ext_grs_appoint_heir(grs_op_V2, grs_op_Vector); - - ext_grs_appoint_heir(grs_op_IntrinsicGP3, grs_op_Intrinsic); - - ext_grs_appoint_heir(grs_op_Eor, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Eor, grs_op_Arithmetic); - ext_grs_appoint_heir(grs_op_Eor, grs_op_Binary); - ext_grs_appoint_heir(grs_op_Eor, grs_op_Commutative); - - ext_grs_appoint_heir(grs_op_V2Load, grs_op_V2); - - ext_grs_appoint_heir(grs_op_Special, grs_op_Node); - - ext_grs_appoint_heir(grs_op_IntrinsicMatch, grs_op_Match); - - ext_grs_appoint_heir(grs_op_Method, grs_op_Type); - - ext_grs_appoint_heir(grs_op_Block, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Block, grs_op_Special); - - ext_grs_appoint_heir(grs_op_G2s_marker, grs_op_G2s); - - ext_grs_appoint_heir(grs_op_IgnoreCF, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Id, grs_op_IR_node); - - ext_grs_appoint_heir(grs_op_V2Sub, grs_op_V2); - - ext_grs_appoint_heir(grs_op_Bad, grs_op_IR_node); - - ext_grs_appoint_heir(grs_op_Call, grs_op_IR_node); - - ext_grs_appoint_heir(grs_op_AnyProj, grs_op_Proj); - ext_grs_appoint_heir(grs_op_AnyProj, grs_op_IgnoreAttrs); - - ext_grs_appoint_heir(grs_op_V4pi_2, grs_op_V4); - ext_grs_appoint_heir(grs_op_V4pi_2, grs_op_pi); - - ext_grs_appoint_heir(grs_op_Conv, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Conv, grs_op_Ordinary); - - ext_grs_appoint_heir(grs_op_Sync, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Sync, grs_op_Memory); - - ext_grs_appoint_heir(grs_op_Phi, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Phi, grs_op_Ordinary); - - ext_grs_appoint_heir(grs_op_Vector, grs_op_IR_node); - - ext_grs_appoint_heir(grs_op_IgnoreAttrs, grs_op_Node); - - ext_grs_appoint_heir(grs_op_V4pi_3, grs_op_V4); - ext_grs_appoint_heir(grs_op_V4pi_3, grs_op_pi); - - ext_grs_appoint_heir(grs_op_Confirm, grs_op_IR_node); - - ext_grs_appoint_heir(grs_op_Shrs, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Shrs, grs_op_Arithmetic); - ext_grs_appoint_heir(grs_op_Shrs, grs_op_Binary); - - ext_grs_appoint_heir(grs_op_Array, grs_op_Type); - - ext_grs_appoint_heir(grs_op_Intrinsic_sse_addr_store, grs_op_Intrinsic); - - ext_grs_appoint_heir(grs_op_Proj, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Proj, grs_op_Ordinary); - - ext_grs_appoint_heir(grs_op_Shr, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Shr, grs_op_Arithmetic); - ext_grs_appoint_heir(grs_op_Shr, grs_op_Binary); - - ext_grs_appoint_heir(grs_op_Intrinsic_addr_addr_sse, grs_op_Intrinsic); - - ext_grs_appoint_heir(grs_op_Return_non_pattern, grs_op_Non_pattern); - - ext_grs_appoint_heir(grs_op_Commutative, grs_op_Node); - - ext_grs_appoint_heir(grs_op_IgnoreCF_Vop, grs_op_IgnoreCF); - ext_grs_appoint_heir(grs_op_IgnoreCF_Vop, grs_op_Vop); - - ext_grs_appoint_heir(grs_op_And, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_And, grs_op_Arithmetic); - ext_grs_appoint_heir(grs_op_And, grs_op_Binary); - ext_grs_appoint_heir(grs_op_And, grs_op_Commutative); - - ext_grs_appoint_heir(grs_op_Left_loads, grs_op_Non_output); - - ext_grs_appoint_heir(grs_op_Or, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Or, grs_op_Arithmetic); - ext_grs_appoint_heir(grs_op_Or, grs_op_Binary); - ext_grs_appoint_heir(grs_op_Or, grs_op_Commutative); - - ext_grs_appoint_heir(grs_op_Type, grs_op_FIRM_node); - - ext_grs_appoint_heir(grs_op_Alloc, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Alloc, grs_op_Memory); - - ext_grs_appoint_heir(grs_op_Intrinsic, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Intrinsic, grs_op_Ordinary); - - ext_grs_appoint_heir(grs_op_pi, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Filter, grs_op_IR_node); - - ext_grs_appoint_heir(grs_op_Cmp, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Cmp, grs_op_Ordinary); - - ext_grs_appoint_heir(grs_op_Memory, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Minus, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Minus, grs_op_Arithmetic); - ext_grs_appoint_heir(grs_op_Minus, grs_op_Unary); - - ext_grs_appoint_heir(grs_op_G2s, grs_op_Node); - - - ext_grs_appoint_heir(grs_op_Not, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Not, grs_op_Arithmetic); - ext_grs_appoint_heir(grs_op_Not, grs_op_Unary); - - ext_grs_appoint_heir(grs_op_Add, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Add, grs_op_Arithmetic); - ext_grs_appoint_heir(grs_op_Add, grs_op_Binary); - ext_grs_appoint_heir(grs_op_Add, grs_op_Commutative); - - ext_grs_appoint_heir(grs_op_Enum, grs_op_Type); - - ext_grs_appoint_heir(grs_op_Intrinsic_sse_sse, grs_op_Intrinsic); - - ext_grs_appoint_heir(grs_op_CallBegin, grs_op_IR_node); - - ext_grs_appoint_heir(grs_op_Right_load_helper, grs_op_Non_pattern); - - ext_grs_appoint_heir(grs_op_G2s_allowed, grs_op_FIRM_node); - - ext_grs_appoint_heir(grs_op_IgnoreCF_IR_node, grs_op_IgnoreCF); - ext_grs_appoint_heir(grs_op_IgnoreCF_IR_node, grs_op_IR_node); - - ext_grs_appoint_heir(grs_op_Vop, grs_op_Ordinary); - - ext_grs_appoint_heir(grs_op_Sub, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Sub, grs_op_Arithmetic); - ext_grs_appoint_heir(grs_op_Sub, grs_op_Binary); - - ext_grs_appoint_heir(grs_op_V4, grs_op_Vector); - - ext_grs_appoint_heir(grs_op_Intrinsic_sse_reg_sse, grs_op_Intrinsic); - - ext_grs_appoint_heir(grs_op_Raise, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Raise, grs_op_Controlflow); - - ext_grs_appoint_heir(grs_op_Blocked, grs_op_Non_output); - - ext_grs_appoint_heir(grs_op_Jmp, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Jmp, grs_op_Controlflow); - - ext_grs_appoint_heir(grs_op_Arithmetic, grs_op_Ordinary); - - ext_grs_appoint_heir(grs_op_Mux, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Mux, grs_op_Trinary); - - ext_grs_appoint_heir(grs_op_max, grs_op_IntrinsicGP); - - ext_grs_appoint_heir(grs_op_G2s_param, grs_op_G2s); - - ext_grs_appoint_heir(grs_op_DivMod, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_DivMod, grs_op_Arithmetic); - ext_grs_appoint_heir(grs_op_DivMod, grs_op_Binary); - - ext_grs_appoint_heir(grs_op_LoadStore, grs_op_Load); - ext_grs_appoint_heir(grs_op_LoadStore, grs_op_Store); - - ext_grs_appoint_heir(grs_op_Non_replace, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Non_output_Ir_node, grs_op_Non_output); - ext_grs_appoint_heir(grs_op_Non_output_Ir_node, grs_op_IR_node); - - ext_grs_appoint_heir(grs_op_Meth_entity, grs_op_Entity); - - ext_grs_appoint_heir(grs_op_Non_pattern, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Sel, grs_op_IR_node); - - ext_grs_appoint_heir(grs_op_Mode_marker, grs_op_Non_pattern); - - ext_grs_appoint_heir(grs_op_VMode, grs_op_Mode); - ext_grs_appoint_heir(grs_op_VMode, grs_op_Non_pattern); - - ext_grs_appoint_heir(grs_op_Last_left_load, grs_op_Non_output); - - ext_grs_appoint_heir(grs_op_Struct, grs_op_Compound); - - ext_grs_appoint_heir(grs_op_V4pi_1, grs_op_V4); - ext_grs_appoint_heir(grs_op_V4pi_1, grs_op_pi); - - ext_grs_appoint_heir(grs_op_EndExcept, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_EndExcept, grs_op_Controlflow); - - ext_grs_appoint_heir(grs_op_Store, grs_op_MemNode); - - ext_grs_appoint_heir(grs_op_IgnoreCF_Conv, grs_op_IgnoreCF); - ext_grs_appoint_heir(grs_op_IgnoreCF_Conv, grs_op_Conv); - - ext_grs_appoint_heir(grs_op_V4pi_4, grs_op_V4); - ext_grs_appoint_heir(grs_op_V4pi_4, grs_op_pi); - - ext_grs_appoint_heir(grs_op_Load, grs_op_MemNode); - - ext_grs_appoint_heir(grs_op_Right_blocked, grs_op_Blocked); - ext_grs_appoint_heir(grs_op_Right_blocked, grs_op_Non_output); - - ext_grs_appoint_heir(grs_op_G2s_r128_int_4, grs_op_G2s); - - ext_grs_appoint_heir(grs_op_CMOV, grs_op_IntrinsicGP); - - ext_grs_appoint_heir(grs_op_Negative, grs_op_Non_output); - - ext_grs_appoint_heir(grs_op_Intrinsic_addr_sse_store, grs_op_Intrinsic); - - ext_grs_appoint_heir(grs_op_SymConst, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_SymConst, grs_op_Ordinary); - - ext_grs_appoint_heir(grs_op_Intrinsic_addr_sse, grs_op_Intrinsic); - - ext_grs_appoint_heir(grs_op_Associative, grs_op_Node); - - ext_grs_appoint_heir(grs_op_V2Store, grs_op_V2); - - ext_grs_appoint_heir(grs_op_Cast, grs_op_IR_node); - - ext_grs_appoint_heir(grs_op_Mod, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Mod, grs_op_Arithmetic); - ext_grs_appoint_heir(grs_op_Mod, grs_op_Binary); - - ext_grs_appoint_heir(grs_op_Unknown, grs_op_IR_node); - - ext_grs_appoint_heir(grs_op_Visual_helper, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Rot, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Rot, grs_op_Arithmetic); - ext_grs_appoint_heir(grs_op_Rot, grs_op_Binary); - - ext_grs_appoint_heir(grs_op_Div, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Div, grs_op_Arithmetic); - ext_grs_appoint_heir(grs_op_Div, grs_op_Binary); - - ext_grs_appoint_heir(grs_op_ASM_Block, grs_op_ASM_node); - - ext_grs_appoint_heir(grs_op_Shl, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Shl, grs_op_Arithmetic); - ext_grs_appoint_heir(grs_op_Shl, grs_op_Binary); - - ext_grs_appoint_heir(grs_op_Cond, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Cond, grs_op_Controlflow); - ext_grs_appoint_heir(grs_op_Cond, grs_op_Ordinary); - - ext_grs_appoint_heir(grs_op_V2pi_2, grs_op_V2); - ext_grs_appoint_heir(grs_op_V2pi_2, grs_op_pi); - - ext_grs_appoint_heir(grs_op_Intrinsic_reg_sse_sse, grs_op_Intrinsic); - - ext_grs_appoint_heir(grs_op_Method_IRG, grs_op_FIRM_node); - - ext_grs_appoint_heir(grs_op_Class, grs_op_Compound); - - ext_grs_appoint_heir(grs_op_Quot, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Quot, grs_op_Arithmetic); - ext_grs_appoint_heir(grs_op_Quot, grs_op_Binary); - - ext_grs_appoint_heir(grs_op_Mode, grs_op_FIRM_node); - - ext_grs_appoint_heir(grs_op_StartBlock, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Return, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Return, grs_op_Controlflow); - - ext_grs_appoint_heir(grs_op_Intrinsic_addr_addr_store, grs_op_Intrinsic); - - ext_grs_appoint_heir(grs_op_NoMem, grs_op_IR_node); - - ext_grs_inheritance_mature(); -} diff --git a/ir/be/grgen/simd/generated/existing_rules.c b/ir/be/grgen/simd/generated/existing_rules.c deleted file mode 100644 index ff1193de2..000000000 --- a/ir/be/grgen/simd/generated/existing_rules.c +++ /dev/null @@ -1,2 +0,0 @@ -/* Dump all the function pointers to the rules to be called here in an array - so that the rules can be called in a row */ diff --git a/ir/be/grgen/simd/generated/gen_patterns.c b/ir/be/grgen/simd/generated/gen_patterns.c deleted file mode 100644 index c6910ddd7..000000000 --- a/ir/be/grgen/simd/generated/gen_patterns.c +++ /dev/null @@ -1,11324 +0,0 @@ -/* generated by grgen, don't edit */ - -#include -#include "libfirm/firm.h" -#include "grs/grs.h" -#include "grs/simd/firm_node_ext.h" - -/* nodeTypeMap */ -ir_op* grs_op_Intrinsic_addr_addr_store; -ir_op* grs_op_Entity; -ir_op* grs_op_End; -ir_op* grs_op_Intrinsic_addr_sse; -ir_op* grs_op_Union; -ir_op* grs_op_Intrinsic_addr_addr_sse; -ir_op* grs_op_Special; -ir_op* grs_op_Struct; -ir_op* grs_op_Memory; -ir_op* grs_op_Complex; -ir_op* grs_op_Intrinsic_sse_addr_sse; -ir_op* grs_op_Intrinsic_sse_sse; -ir_op* grs_op_Tarval; -ir_op* grs_op_Node; -ir_op* grs_op_V2Load; -ir_op* grs_op_V2Sub; -ir_op* grs_op_IR_node; -ir_op* grs_op_CMOV; -ir_op* grs_op_Match; -ir_op* grs_op_SymConst; -ir_op* grs_op_Store; -ir_op* grs_op_Break; -ir_op* grs_op_V4pi_2; -ir_op* grs_op_V4pi_1; -ir_op* grs_op_V4pi_4; -ir_op* grs_op_V4pi_3; -ir_op* grs_op_Unary; -ir_op* grs_op_Div; -ir_op* grs_op_Free; -ir_op* grs_op_Trinary; -ir_op* grs_op_IntrinsicMatch; -ir_op* grs_op_Bad; -ir_op* grs_op_Confirm; -ir_op* grs_op_IntConst; -ir_op* grs_op_Nary; -ir_op* grs_op_Raise; -ir_op* grs_op_Id; -ir_op* grs_op_Or; -ir_op* grs_op_Eor; -ir_op* grs_op_Vector; -ir_op* grs_op_Intrinsic_sse_reg_sse; -ir_op* grs_op_Add; -ir_op* grs_op_VProj; -ir_op* grs_op_IntrinsicMMX; -ir_op* grs_op_Const; -ir_op* grs_op_Sel; -ir_op* grs_op_Sub; -ir_op* grs_op_Ordinary; -ir_op* grs_op_Tuple; -ir_op* grs_op_MultipleAdd; -ir_op* grs_op_IntrinsicFP; -ir_op* grs_op_Cmp; -ir_op* grs_op_Mulh; -ir_op* grs_op_And; -ir_op* grs_op_Method_IRG; -ir_op* grs_op_CCopy; -ir_op* grs_op_EndReg; -ir_op* grs_op_Call; -ir_op* grs_op_Cast; -ir_op* grs_op_EndExcept; -ir_op* grs_op_Sync; -ir_op* grs_op_Rot; -ir_op* grs_op_NoMem; -ir_op* grs_op_Unknown; -ir_op* grs_op_Primitive; -ir_op* grs_op_IntrinsicGP; -ir_op* grs_op_Mux; -ir_op* grs_op_pi; -ir_op* grs_op_Quot; -ir_op* grs_op_Method; -ir_op* grs_op_Jmp; -ir_op* grs_op_Mul; -ir_op* grs_op_Associative; -ir_op* grs_op_Start; -ir_op* grs_op_SyncArity2; -ir_op* grs_op_Arithmetic; -ir_op* grs_op_Intrinsic_sse_addr_store; -ir_op* grs_op_Conv; -ir_op* grs_op_Intrinsic; -ir_op* grs_op_VectorBase; -ir_op* grs_op_V2Store; -ir_op* grs_op_Cond; -ir_op* grs_op_Class; -ir_op* grs_op_Abs; -ir_op* grs_op_V2pi_1; -ir_op* grs_op_Commutative; -ir_op* grs_op_V2pi_2; -ir_op* grs_op_StartBlock; -ir_op* grs_op_Phi; -ir_op* grs_op_Block; -ir_op* grs_op_MemNode; -ir_op* grs_op_Enum; -ir_op* grs_op_Shrs; -ir_op* grs_op_Array; -ir_op* grs_op_max; -ir_op* grs_op_Proj; -ir_op* grs_op_Mod; -ir_op* grs_op_Binary; -ir_op* grs_op_V2; -ir_op* grs_op_Not; -ir_op* grs_op_V4; -ir_op* grs_op_Intrinsic_sse_sse_sse; -ir_op* grs_op_Intrinsic_reg_sse_sse; -ir_op* grs_op_DivMod; -ir_op* grs_op_FIRM_node; -ir_op* grs_op_Alloc; -ir_op* grs_op_Pointer; -ir_op* grs_op_Minus; -ir_op* grs_op_Type; -ir_op* grs_op_Return; -ir_op* grs_op_IntrinsicSSE; -ir_op* grs_op_Filter; -ir_op* grs_op_Controlflow; -ir_op* grs_op_min; -ir_op* grs_op_Intrinsic_addr_sse_store; -ir_op* grs_op_Compound; -ir_op* grs_op_Load; -ir_op* grs_op_Shl; -ir_op* grs_op_IgnoreCF; -ir_op* grs_op_Shr; -ir_op* grs_op_InstOf; -ir_op* grs_op_IntrinsicGP3; -ir_op* grs_op_IR_Keep; -ir_op* grs_op_CallBegin; -/* nodeTypeMap END */ - -/* init node ops and modes */ -static void init() { - grs_op_Intrinsic_addr_addr_store = ext_grs_lookup_op("Intrinsic_addr_addr_store"); - grs_op_Intrinsic_addr_addr_store = grs_op_Intrinsic_addr_addr_store ? grs_op_Intrinsic_addr_addr_store : new_ir_op(get_next_ir_opcode(), "Intrinsic_addr_addr_store", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Entity = ext_grs_lookup_op("Entity"); - grs_op_Entity = grs_op_Entity ? grs_op_Entity : new_ir_op(get_next_ir_opcode(), "Entity", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_End = ext_grs_lookup_op("End"); - grs_op_End = grs_op_End ? grs_op_End : new_ir_op(get_next_ir_opcode(), "End", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Intrinsic_addr_sse = ext_grs_lookup_op("Intrinsic_addr_sse"); - grs_op_Intrinsic_addr_sse = grs_op_Intrinsic_addr_sse ? grs_op_Intrinsic_addr_sse : new_ir_op(get_next_ir_opcode(), "Intrinsic_addr_sse", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Union = ext_grs_lookup_op("Union"); - grs_op_Union = grs_op_Union ? grs_op_Union : new_ir_op(get_next_ir_opcode(), "Union", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Intrinsic_addr_addr_sse = ext_grs_lookup_op("Intrinsic_addr_addr_sse"); - grs_op_Intrinsic_addr_addr_sse = grs_op_Intrinsic_addr_addr_sse ? grs_op_Intrinsic_addr_addr_sse : new_ir_op(get_next_ir_opcode(), "Intrinsic_addr_addr_sse", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Special = ext_grs_lookup_op("Special"); - grs_op_Special = grs_op_Special ? grs_op_Special : new_ir_op(get_next_ir_opcode(), "Special", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Struct = ext_grs_lookup_op("Struct"); - grs_op_Struct = grs_op_Struct ? grs_op_Struct : new_ir_op(get_next_ir_opcode(), "Struct", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Memory = ext_grs_lookup_op("Memory"); - grs_op_Memory = grs_op_Memory ? grs_op_Memory : new_ir_op(get_next_ir_opcode(), "Memory", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Complex = ext_grs_lookup_op("Complex"); - grs_op_Complex = grs_op_Complex ? grs_op_Complex : new_ir_op(get_next_ir_opcode(), "Complex", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Intrinsic_sse_addr_sse = ext_grs_lookup_op("Intrinsic_sse_addr_sse"); - grs_op_Intrinsic_sse_addr_sse = grs_op_Intrinsic_sse_addr_sse ? grs_op_Intrinsic_sse_addr_sse : new_ir_op(get_next_ir_opcode(), "Intrinsic_sse_addr_sse", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Intrinsic_sse_sse = ext_grs_lookup_op("Intrinsic_sse_sse"); - grs_op_Intrinsic_sse_sse = grs_op_Intrinsic_sse_sse ? grs_op_Intrinsic_sse_sse : new_ir_op(get_next_ir_opcode(), "Intrinsic_sse_sse", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Tarval = ext_grs_lookup_op("Tarval"); - grs_op_Tarval = grs_op_Tarval ? grs_op_Tarval : new_ir_op(get_next_ir_opcode(), "Tarval", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Node = ext_grs_lookup_op("Node"); - grs_op_Node = grs_op_Node ? grs_op_Node : new_ir_op(get_next_ir_opcode(), "Node", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_V2Load = ext_grs_lookup_op("V2Load"); - grs_op_V2Load = grs_op_V2Load ? grs_op_V2Load : new_ir_op(get_next_ir_opcode(), "V2Load", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_V2Sub = ext_grs_lookup_op("V2Sub"); - grs_op_V2Sub = grs_op_V2Sub ? grs_op_V2Sub : new_ir_op(get_next_ir_opcode(), "V2Sub", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_IR_node = ext_grs_lookup_op("IR_node"); - grs_op_IR_node = grs_op_IR_node ? grs_op_IR_node : new_ir_op(get_next_ir_opcode(), "IR_node", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_CMOV = ext_grs_lookup_op("CMOV"); - grs_op_CMOV = grs_op_CMOV ? grs_op_CMOV : new_ir_op(get_next_ir_opcode(), "CMOV", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Match = ext_grs_lookup_op("Match"); - grs_op_Match = grs_op_Match ? grs_op_Match : new_ir_op(get_next_ir_opcode(), "Match", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_SymConst = ext_grs_lookup_op("SymConst"); - grs_op_SymConst = grs_op_SymConst ? grs_op_SymConst : new_ir_op(get_next_ir_opcode(), "SymConst", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Store = ext_grs_lookup_op("Store"); - grs_op_Store = grs_op_Store ? grs_op_Store : new_ir_op(get_next_ir_opcode(), "Store", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Break = ext_grs_lookup_op("Break"); - grs_op_Break = grs_op_Break ? grs_op_Break : new_ir_op(get_next_ir_opcode(), "Break", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_V4pi_2 = ext_grs_lookup_op("V4pi_2"); - grs_op_V4pi_2 = grs_op_V4pi_2 ? grs_op_V4pi_2 : new_ir_op(get_next_ir_opcode(), "V4pi_2", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_V4pi_1 = ext_grs_lookup_op("V4pi_1"); - grs_op_V4pi_1 = grs_op_V4pi_1 ? grs_op_V4pi_1 : new_ir_op(get_next_ir_opcode(), "V4pi_1", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_V4pi_4 = ext_grs_lookup_op("V4pi_4"); - grs_op_V4pi_4 = grs_op_V4pi_4 ? grs_op_V4pi_4 : new_ir_op(get_next_ir_opcode(), "V4pi_4", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_V4pi_3 = ext_grs_lookup_op("V4pi_3"); - grs_op_V4pi_3 = grs_op_V4pi_3 ? grs_op_V4pi_3 : new_ir_op(get_next_ir_opcode(), "V4pi_3", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Unary = ext_grs_lookup_op("Unary"); - grs_op_Unary = grs_op_Unary ? grs_op_Unary : new_ir_op(get_next_ir_opcode(), "Unary", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Div = ext_grs_lookup_op("Div"); - grs_op_Div = grs_op_Div ? grs_op_Div : new_ir_op(get_next_ir_opcode(), "Div", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Free = ext_grs_lookup_op("Free"); - grs_op_Free = grs_op_Free ? grs_op_Free : new_ir_op(get_next_ir_opcode(), "Free", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Trinary = ext_grs_lookup_op("Trinary"); - grs_op_Trinary = grs_op_Trinary ? grs_op_Trinary : new_ir_op(get_next_ir_opcode(), "Trinary", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_IntrinsicMatch = ext_grs_lookup_op("IntrinsicMatch"); - grs_op_IntrinsicMatch = grs_op_IntrinsicMatch ? grs_op_IntrinsicMatch : new_ir_op(get_next_ir_opcode(), "IntrinsicMatch", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Bad = ext_grs_lookup_op("Bad"); - grs_op_Bad = grs_op_Bad ? grs_op_Bad : new_ir_op(get_next_ir_opcode(), "Bad", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Confirm = ext_grs_lookup_op("Confirm"); - grs_op_Confirm = grs_op_Confirm ? grs_op_Confirm : new_ir_op(get_next_ir_opcode(), "Confirm", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_IntConst = ext_grs_lookup_op("IntConst"); - grs_op_IntConst = grs_op_IntConst ? grs_op_IntConst : new_ir_op(get_next_ir_opcode(), "IntConst", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Nary = ext_grs_lookup_op("Nary"); - grs_op_Nary = grs_op_Nary ? grs_op_Nary : new_ir_op(get_next_ir_opcode(), "Nary", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Raise = ext_grs_lookup_op("Raise"); - grs_op_Raise = grs_op_Raise ? grs_op_Raise : new_ir_op(get_next_ir_opcode(), "Raise", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Id = ext_grs_lookup_op("Id"); - grs_op_Id = grs_op_Id ? grs_op_Id : new_ir_op(get_next_ir_opcode(), "Id", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Or = ext_grs_lookup_op("Or"); - grs_op_Or = grs_op_Or ? grs_op_Or : new_ir_op(get_next_ir_opcode(), "Or", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Eor = ext_grs_lookup_op("Eor"); - grs_op_Eor = grs_op_Eor ? grs_op_Eor : new_ir_op(get_next_ir_opcode(), "Eor", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Vector = ext_grs_lookup_op("Vector"); - grs_op_Vector = grs_op_Vector ? grs_op_Vector : new_ir_op(get_next_ir_opcode(), "Vector", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Intrinsic_sse_reg_sse = ext_grs_lookup_op("Intrinsic_sse_reg_sse"); - grs_op_Intrinsic_sse_reg_sse = grs_op_Intrinsic_sse_reg_sse ? grs_op_Intrinsic_sse_reg_sse : new_ir_op(get_next_ir_opcode(), "Intrinsic_sse_reg_sse", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Add = ext_grs_lookup_op("Add"); - grs_op_Add = grs_op_Add ? grs_op_Add : new_ir_op(get_next_ir_opcode(), "Add", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_VProj = ext_grs_lookup_op("VProj"); - grs_op_VProj = grs_op_VProj ? grs_op_VProj : new_ir_op(get_next_ir_opcode(), "VProj", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_IntrinsicMMX = ext_grs_lookup_op("IntrinsicMMX"); - grs_op_IntrinsicMMX = grs_op_IntrinsicMMX ? grs_op_IntrinsicMMX : new_ir_op(get_next_ir_opcode(), "IntrinsicMMX", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Const = ext_grs_lookup_op("Const"); - grs_op_Const = grs_op_Const ? grs_op_Const : new_ir_op(get_next_ir_opcode(), "Const", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Sel = ext_grs_lookup_op("Sel"); - grs_op_Sel = grs_op_Sel ? grs_op_Sel : new_ir_op(get_next_ir_opcode(), "Sel", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Sub = ext_grs_lookup_op("Sub"); - grs_op_Sub = grs_op_Sub ? grs_op_Sub : new_ir_op(get_next_ir_opcode(), "Sub", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Ordinary = ext_grs_lookup_op("Ordinary"); - grs_op_Ordinary = grs_op_Ordinary ? grs_op_Ordinary : new_ir_op(get_next_ir_opcode(), "Ordinary", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Tuple = ext_grs_lookup_op("Tuple"); - grs_op_Tuple = grs_op_Tuple ? grs_op_Tuple : new_ir_op(get_next_ir_opcode(), "Tuple", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_MultipleAdd = ext_grs_lookup_op("MultipleAdd"); - grs_op_MultipleAdd = grs_op_MultipleAdd ? grs_op_MultipleAdd : new_ir_op(get_next_ir_opcode(), "MultipleAdd", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_IntrinsicFP = ext_grs_lookup_op("IntrinsicFP"); - grs_op_IntrinsicFP = grs_op_IntrinsicFP ? grs_op_IntrinsicFP : new_ir_op(get_next_ir_opcode(), "IntrinsicFP", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Cmp = ext_grs_lookup_op("Cmp"); - grs_op_Cmp = grs_op_Cmp ? grs_op_Cmp : new_ir_op(get_next_ir_opcode(), "Cmp", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Mulh = ext_grs_lookup_op("Mulh"); - grs_op_Mulh = grs_op_Mulh ? grs_op_Mulh : new_ir_op(get_next_ir_opcode(), "Mulh", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_And = ext_grs_lookup_op("And"); - grs_op_And = grs_op_And ? grs_op_And : new_ir_op(get_next_ir_opcode(), "And", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Method_IRG = ext_grs_lookup_op("Method_IRG"); - grs_op_Method_IRG = grs_op_Method_IRG ? grs_op_Method_IRG : new_ir_op(get_next_ir_opcode(), "Method_IRG", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_CCopy = ext_grs_lookup_op("CCopy"); - grs_op_CCopy = grs_op_CCopy ? grs_op_CCopy : new_ir_op(get_next_ir_opcode(), "CCopy", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_EndReg = ext_grs_lookup_op("EndReg"); - grs_op_EndReg = grs_op_EndReg ? grs_op_EndReg : new_ir_op(get_next_ir_opcode(), "EndReg", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Call = ext_grs_lookup_op("Call"); - grs_op_Call = grs_op_Call ? grs_op_Call : new_ir_op(get_next_ir_opcode(), "Call", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Cast = ext_grs_lookup_op("Cast"); - grs_op_Cast = grs_op_Cast ? grs_op_Cast : new_ir_op(get_next_ir_opcode(), "Cast", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_EndExcept = ext_grs_lookup_op("EndExcept"); - grs_op_EndExcept = grs_op_EndExcept ? grs_op_EndExcept : new_ir_op(get_next_ir_opcode(), "EndExcept", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Sync = ext_grs_lookup_op("Sync"); - grs_op_Sync = grs_op_Sync ? grs_op_Sync : new_ir_op(get_next_ir_opcode(), "Sync", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Rot = ext_grs_lookup_op("Rot"); - grs_op_Rot = grs_op_Rot ? grs_op_Rot : new_ir_op(get_next_ir_opcode(), "Rot", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_NoMem = ext_grs_lookup_op("NoMem"); - grs_op_NoMem = grs_op_NoMem ? grs_op_NoMem : new_ir_op(get_next_ir_opcode(), "NoMem", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Unknown = ext_grs_lookup_op("Unknown"); - grs_op_Unknown = grs_op_Unknown ? grs_op_Unknown : new_ir_op(get_next_ir_opcode(), "Unknown", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Primitive = ext_grs_lookup_op("Primitive"); - grs_op_Primitive = grs_op_Primitive ? grs_op_Primitive : new_ir_op(get_next_ir_opcode(), "Primitive", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_IntrinsicGP = ext_grs_lookup_op("IntrinsicGP"); - grs_op_IntrinsicGP = grs_op_IntrinsicGP ? grs_op_IntrinsicGP : new_ir_op(get_next_ir_opcode(), "IntrinsicGP", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Mux = ext_grs_lookup_op("Mux"); - grs_op_Mux = grs_op_Mux ? grs_op_Mux : new_ir_op(get_next_ir_opcode(), "Mux", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_pi = ext_grs_lookup_op("pi"); - grs_op_pi = grs_op_pi ? grs_op_pi : new_ir_op(get_next_ir_opcode(), "pi", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Quot = ext_grs_lookup_op("Quot"); - grs_op_Quot = grs_op_Quot ? grs_op_Quot : new_ir_op(get_next_ir_opcode(), "Quot", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Method = ext_grs_lookup_op("Method"); - grs_op_Method = grs_op_Method ? grs_op_Method : new_ir_op(get_next_ir_opcode(), "Method", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Jmp = ext_grs_lookup_op("Jmp"); - grs_op_Jmp = grs_op_Jmp ? grs_op_Jmp : new_ir_op(get_next_ir_opcode(), "Jmp", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Mul = ext_grs_lookup_op("Mul"); - grs_op_Mul = grs_op_Mul ? grs_op_Mul : new_ir_op(get_next_ir_opcode(), "Mul", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Associative = ext_grs_lookup_op("Associative"); - grs_op_Associative = grs_op_Associative ? grs_op_Associative : new_ir_op(get_next_ir_opcode(), "Associative", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Start = ext_grs_lookup_op("Start"); - grs_op_Start = grs_op_Start ? grs_op_Start : new_ir_op(get_next_ir_opcode(), "Start", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_SyncArity2 = ext_grs_lookup_op("SyncArity2"); - grs_op_SyncArity2 = grs_op_SyncArity2 ? grs_op_SyncArity2 : new_ir_op(get_next_ir_opcode(), "SyncArity2", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Arithmetic = ext_grs_lookup_op("Arithmetic"); - grs_op_Arithmetic = grs_op_Arithmetic ? grs_op_Arithmetic : new_ir_op(get_next_ir_opcode(), "Arithmetic", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Intrinsic_sse_addr_store = ext_grs_lookup_op("Intrinsic_sse_addr_store"); - grs_op_Intrinsic_sse_addr_store = grs_op_Intrinsic_sse_addr_store ? grs_op_Intrinsic_sse_addr_store : new_ir_op(get_next_ir_opcode(), "Intrinsic_sse_addr_store", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Conv = ext_grs_lookup_op("Conv"); - grs_op_Conv = grs_op_Conv ? grs_op_Conv : new_ir_op(get_next_ir_opcode(), "Conv", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Intrinsic = ext_grs_lookup_op("Intrinsic"); - grs_op_Intrinsic = grs_op_Intrinsic ? grs_op_Intrinsic : new_ir_op(get_next_ir_opcode(), "Intrinsic", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_VectorBase = ext_grs_lookup_op("VectorBase"); - grs_op_VectorBase = grs_op_VectorBase ? grs_op_VectorBase : new_ir_op(get_next_ir_opcode(), "VectorBase", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_V2Store = ext_grs_lookup_op("V2Store"); - grs_op_V2Store = grs_op_V2Store ? grs_op_V2Store : new_ir_op(get_next_ir_opcode(), "V2Store", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Cond = ext_grs_lookup_op("Cond"); - grs_op_Cond = grs_op_Cond ? grs_op_Cond : new_ir_op(get_next_ir_opcode(), "Cond", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Class = ext_grs_lookup_op("Class"); - grs_op_Class = grs_op_Class ? grs_op_Class : new_ir_op(get_next_ir_opcode(), "Class", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Abs = ext_grs_lookup_op("Abs"); - grs_op_Abs = grs_op_Abs ? grs_op_Abs : new_ir_op(get_next_ir_opcode(), "Abs", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_V2pi_1 = ext_grs_lookup_op("V2pi_1"); - grs_op_V2pi_1 = grs_op_V2pi_1 ? grs_op_V2pi_1 : new_ir_op(get_next_ir_opcode(), "V2pi_1", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Commutative = ext_grs_lookup_op("Commutative"); - grs_op_Commutative = grs_op_Commutative ? grs_op_Commutative : new_ir_op(get_next_ir_opcode(), "Commutative", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_V2pi_2 = ext_grs_lookup_op("V2pi_2"); - grs_op_V2pi_2 = grs_op_V2pi_2 ? grs_op_V2pi_2 : new_ir_op(get_next_ir_opcode(), "V2pi_2", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_StartBlock = ext_grs_lookup_op("StartBlock"); - grs_op_StartBlock = grs_op_StartBlock ? grs_op_StartBlock : new_ir_op(get_next_ir_opcode(), "StartBlock", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Phi = ext_grs_lookup_op("Phi"); - grs_op_Phi = grs_op_Phi ? grs_op_Phi : new_ir_op(get_next_ir_opcode(), "Phi", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Block = ext_grs_lookup_op("Block"); - grs_op_Block = grs_op_Block ? grs_op_Block : new_ir_op(get_next_ir_opcode(), "Block", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_MemNode = ext_grs_lookup_op("MemNode"); - grs_op_MemNode = grs_op_MemNode ? grs_op_MemNode : new_ir_op(get_next_ir_opcode(), "MemNode", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Enum = ext_grs_lookup_op("Enum"); - grs_op_Enum = grs_op_Enum ? grs_op_Enum : new_ir_op(get_next_ir_opcode(), "Enum", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Shrs = ext_grs_lookup_op("Shrs"); - grs_op_Shrs = grs_op_Shrs ? grs_op_Shrs : new_ir_op(get_next_ir_opcode(), "Shrs", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Array = ext_grs_lookup_op("Array"); - grs_op_Array = grs_op_Array ? grs_op_Array : new_ir_op(get_next_ir_opcode(), "Array", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_max = ext_grs_lookup_op("max"); - grs_op_max = grs_op_max ? grs_op_max : new_ir_op(get_next_ir_opcode(), "max", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Proj = ext_grs_lookup_op("Proj"); - grs_op_Proj = grs_op_Proj ? grs_op_Proj : new_ir_op(get_next_ir_opcode(), "Proj", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Mod = ext_grs_lookup_op("Mod"); - grs_op_Mod = grs_op_Mod ? grs_op_Mod : new_ir_op(get_next_ir_opcode(), "Mod", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Binary = ext_grs_lookup_op("Binary"); - grs_op_Binary = grs_op_Binary ? grs_op_Binary : new_ir_op(get_next_ir_opcode(), "Binary", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_V2 = ext_grs_lookup_op("V2"); - grs_op_V2 = grs_op_V2 ? grs_op_V2 : new_ir_op(get_next_ir_opcode(), "V2", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Not = ext_grs_lookup_op("Not"); - grs_op_Not = grs_op_Not ? grs_op_Not : new_ir_op(get_next_ir_opcode(), "Not", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_V4 = ext_grs_lookup_op("V4"); - grs_op_V4 = grs_op_V4 ? grs_op_V4 : new_ir_op(get_next_ir_opcode(), "V4", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Intrinsic_sse_sse_sse = ext_grs_lookup_op("Intrinsic_sse_sse_sse"); - grs_op_Intrinsic_sse_sse_sse = grs_op_Intrinsic_sse_sse_sse ? grs_op_Intrinsic_sse_sse_sse : new_ir_op(get_next_ir_opcode(), "Intrinsic_sse_sse_sse", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Intrinsic_reg_sse_sse = ext_grs_lookup_op("Intrinsic_reg_sse_sse"); - grs_op_Intrinsic_reg_sse_sse = grs_op_Intrinsic_reg_sse_sse ? grs_op_Intrinsic_reg_sse_sse : new_ir_op(get_next_ir_opcode(), "Intrinsic_reg_sse_sse", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_DivMod = ext_grs_lookup_op("DivMod"); - grs_op_DivMod = grs_op_DivMod ? grs_op_DivMod : new_ir_op(get_next_ir_opcode(), "DivMod", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_FIRM_node = ext_grs_lookup_op("FIRM_node"); - grs_op_FIRM_node = grs_op_FIRM_node ? grs_op_FIRM_node : new_ir_op(get_next_ir_opcode(), "FIRM_node", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Alloc = ext_grs_lookup_op("Alloc"); - grs_op_Alloc = grs_op_Alloc ? grs_op_Alloc : new_ir_op(get_next_ir_opcode(), "Alloc", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Pointer = ext_grs_lookup_op("Pointer"); - grs_op_Pointer = grs_op_Pointer ? grs_op_Pointer : new_ir_op(get_next_ir_opcode(), "Pointer", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Minus = ext_grs_lookup_op("Minus"); - grs_op_Minus = grs_op_Minus ? grs_op_Minus : new_ir_op(get_next_ir_opcode(), "Minus", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Type = ext_grs_lookup_op("Type"); - grs_op_Type = grs_op_Type ? grs_op_Type : new_ir_op(get_next_ir_opcode(), "Type", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Return = ext_grs_lookup_op("Return"); - grs_op_Return = grs_op_Return ? grs_op_Return : new_ir_op(get_next_ir_opcode(), "Return", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_IntrinsicSSE = ext_grs_lookup_op("IntrinsicSSE"); - grs_op_IntrinsicSSE = grs_op_IntrinsicSSE ? grs_op_IntrinsicSSE : new_ir_op(get_next_ir_opcode(), "IntrinsicSSE", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Filter = ext_grs_lookup_op("Filter"); - grs_op_Filter = grs_op_Filter ? grs_op_Filter : new_ir_op(get_next_ir_opcode(), "Filter", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Controlflow = ext_grs_lookup_op("Controlflow"); - grs_op_Controlflow = grs_op_Controlflow ? grs_op_Controlflow : new_ir_op(get_next_ir_opcode(), "Controlflow", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_min = ext_grs_lookup_op("min"); - grs_op_min = grs_op_min ? grs_op_min : new_ir_op(get_next_ir_opcode(), "min", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Intrinsic_addr_sse_store = ext_grs_lookup_op("Intrinsic_addr_sse_store"); - grs_op_Intrinsic_addr_sse_store = grs_op_Intrinsic_addr_sse_store ? grs_op_Intrinsic_addr_sse_store : new_ir_op(get_next_ir_opcode(), "Intrinsic_addr_sse_store", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Compound = ext_grs_lookup_op("Compound"); - grs_op_Compound = grs_op_Compound ? grs_op_Compound : new_ir_op(get_next_ir_opcode(), "Compound", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Load = ext_grs_lookup_op("Load"); - grs_op_Load = grs_op_Load ? grs_op_Load : new_ir_op(get_next_ir_opcode(), "Load", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Shl = ext_grs_lookup_op("Shl"); - grs_op_Shl = grs_op_Shl ? grs_op_Shl : new_ir_op(get_next_ir_opcode(), "Shl", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_IgnoreCF = ext_grs_lookup_op("IgnoreCF"); - grs_op_IgnoreCF = grs_op_IgnoreCF ? grs_op_IgnoreCF : new_ir_op(get_next_ir_opcode(), "IgnoreCF", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_Shr = ext_grs_lookup_op("Shr"); - grs_op_Shr = grs_op_Shr ? grs_op_Shr : new_ir_op(get_next_ir_opcode(), "Shr", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_InstOf = ext_grs_lookup_op("InstOf"); - grs_op_InstOf = grs_op_InstOf ? grs_op_InstOf : new_ir_op(get_next_ir_opcode(), "InstOf", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_IntrinsicGP3 = ext_grs_lookup_op("IntrinsicGP3"); - grs_op_IntrinsicGP3 = grs_op_IntrinsicGP3 ? grs_op_IntrinsicGP3 : new_ir_op(get_next_ir_opcode(), "IntrinsicGP3", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_IR_Keep = ext_grs_lookup_op("IR_Keep"); - grs_op_IR_Keep = grs_op_IR_Keep ? grs_op_IR_Keep : new_ir_op(get_next_ir_opcode(), "IR_Keep", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); - grs_op_CallBegin = ext_grs_lookup_op("CallBegin"); - grs_op_CallBegin = grs_op_CallBegin ? grs_op_CallBegin : new_ir_op(get_next_ir_opcode(), "CallBegin", op_pin_state_pinned, irop_flag_none, oparity_dynamic, 0, 0, NULL); -} /* init node ops and modes */ - -/* functions for evaluation of conditions of action add_horz_4_32_variant0 */ -static int grs_cond_func_38675(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[6/* VProj1624 */]) == 1; -} -static int grs_cond_func_38678(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[3/* VProj1616 */]) == 0; -} -static int grs_cond_func_38681(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[5/* VProj1633 */]) == 2; -} -static int grs_cond_func_38684(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[4/* VProj1642 */]) == 3; -} - -static void *grs_eval_out_func_38759(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { - set_Proj_proj(rpl_node_map[9/* Vector_op_ProjData */], 0); - return(NULL); -} -static void *grs_eval_out_func_38762(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[10/* VProj9 */], 0); - return(NULL); -} -/* functions for building the pattern of action add_horz_4_32_variant0 */ -static _inline ext_grs_action_t *grs_action_add_horz_4_32_variant0_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_rule, "add_horz_4_32_variant0"); - int check; - { /* The action */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - ext_grs_node_t *n_Arg_0 = ext_grs_act_add_node(pattern, "Arg_0", grs_op_VectorBase, mode_ANY, 0); - ext_grs_node_t *n_Vector_op_Block = ext_grs_act_add_node(pattern, "Vector_op_Block", grs_op_Block, mode_BB, 1); - ext_grs_node_t *n_Vector_Result0_Add1643 = ext_grs_act_add_node(pattern, "Vector_Result0_Add1643", grs_op_Add, mode_F, 2); - ext_grs_node_t *n_VProj1616 = ext_grs_act_add_node(pattern, "VProj1616", grs_op_VProj, mode_F, 3); - ext_grs_node_t *n_VProj1642 = ext_grs_act_add_node(pattern, "VProj1642", grs_op_VProj, mode_F, 4); - ext_grs_node_t *n_VProj1633 = ext_grs_act_add_node(pattern, "VProj1633", grs_op_VProj, mode_F, 5); - ext_grs_node_t *n_VProj1624 = ext_grs_act_add_node(pattern, "VProj1624", grs_op_VProj, mode_F, 6); - ext_grs_node_t *n_Add1625 = ext_grs_act_add_node(pattern, "Add1625", grs_op_Add, mode_F, 7); - ext_grs_node_t *n_Add1634 = ext_grs_act_add_node(pattern, "Add1634", grs_op_Add, mode_F, 8); - - /* The edges of the pattern */ - ext_grs_edge_t *e_pos0_16 = ext_grs_act_add_edge(pattern, "pos0_16", -1, n_Vector_op_Block, n_Add1625, 0); - ext_grs_edge_t *e_e10 = ext_grs_act_add_edge(pattern, "e10", ext_grs_NO_EDGE_POS, n_VProj1642, n_Vector_Result0_Add1643, 1); - ext_grs_edge_t *e_e11 = ext_grs_act_add_edge(pattern, "e11", ext_grs_NO_EDGE_POS, n_Add1634, n_Vector_Result0_Add1643, 2); - ext_grs_edge_t *e_pos0_12 = ext_grs_act_add_edge(pattern, "pos0_12", -1, n_Vector_op_Block, n_Add1634, 3); - ext_grs_edge_t *e_e13 = ext_grs_act_add_edge(pattern, "e13", ext_grs_NO_EDGE_POS, n_VProj1633, n_Add1634, 4); - ext_grs_edge_t *e_pos1_20 = ext_grs_act_add_edge(pattern, "pos1_20", 0, n_Arg_0, n_VProj1633, 5); - ext_grs_edge_t *e_e14 = ext_grs_act_add_edge(pattern, "e14", ext_grs_NO_EDGE_POS, n_Add1625, n_Add1634, 6); - ext_grs_edge_t *e_pos1_21 = ext_grs_act_add_edge(pattern, "pos1_21", 0, n_Arg_0, n_VProj1642, 7); - ext_grs_edge_t *e_pos1_15 = ext_grs_act_add_edge(pattern, "pos1_15", 0, n_Arg_0, n_VProj1624, 8); - ext_grs_edge_t *e_pos1_19 = ext_grs_act_add_edge(pattern, "pos1_19", 0, n_Arg_0, n_VProj1616, 9); - ext_grs_edge_t *e_pos0_9 = ext_grs_act_add_edge(pattern, "pos0_9", -1, n_Vector_op_Block, n_Vector_Result0_Add1643, 10); - ext_grs_edge_t *e_e18 = ext_grs_act_add_edge(pattern, "e18", ext_grs_NO_EDGE_POS, n_VProj1616, n_Add1625, 11); - ext_grs_edge_t *e_e17 = ext_grs_act_add_edge(pattern, "e17", ext_grs_NO_EDGE_POS, n_VProj1624, n_Add1625, 12); - - /* The conditions of the pattern */ - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj1624}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_38675, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj1616}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_38678, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj1633}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_38681, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj1642}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_38684, pattern, 1, nodes, 0, edges); - } /* if */ - - /* The negative parts of the pattern */ - - - { /* The replacement */ - ext_grs_graph_t *pattern = ext_grs_act_get_replacement(act); - - /* The nodes of the pattern */ - ext_grs_node_t *n_Arg_0_0 = ext_grs_act_add_node_to_keep(pattern, "Arg_0_0", grs_op_VectorBase, mode_ANY, 0, n_Arg_0); - ext_grs_node_t *n_Vector_op_Block_1 = ext_grs_act_add_node_to_keep(pattern, "Vector_op_Block_1", grs_op_Block, mode_BB, 1, n_Vector_op_Block); - ext_grs_node_t *n_VProj1616_2 = ext_grs_act_add_node_to_keep(pattern, "VProj1616_2", grs_op_VProj, mode_F, 3, n_VProj1616); - ext_grs_node_t *n_VProj1642_3 = ext_grs_act_add_node_to_keep(pattern, "VProj1642_3", grs_op_VProj, mode_F, 4, n_VProj1642); - ext_grs_node_t *n_VProj1633_4 = ext_grs_act_add_node_to_keep(pattern, "VProj1633_4", grs_op_VProj, mode_F, 5, n_VProj1633); - ext_grs_node_t *n_Vector_op_ProjData = ext_grs_act_add_node(pattern, "Vector_op_ProjData", grs_op_Proj, mode_LLu, 9); - ext_grs_node_t *n_Add1634_5 = ext_grs_act_add_node_to_keep(pattern, "Add1634_5", grs_op_Add, mode_F, 8, n_Add1634); - ext_grs_node_t *n_VProj9_6 = ext_grs_act_add_node_to_keep(pattern, "VProj9_6", grs_op_VProj, mode_F, 10, n_Vector_Result0_Add1643); - ext_grs_node_t *n_VProj1624_7 = ext_grs_act_add_node_to_keep(pattern, "VProj1624_7", grs_op_VProj, mode_F, 6, n_VProj1624); - ext_grs_node_t *n_Add1625_8 = ext_grs_act_add_node_to_keep(pattern, "Add1625_8", grs_op_Add, mode_F, 7, n_Add1625); - ext_grs_node_t *n_Vector_op = ext_grs_act_add_node(pattern, "Vector_op", grs_op_Complex, mode_T, 11); - - /* The edges of the pattern */ - ext_grs_edge_t *e_pos0_16_9 = ext_grs_act_add_edge_to_keep(pattern, "pos0_16_9", -1, n_Vector_op_Block_1, n_Add1625_8, 0, e_pos0_16); - ext_grs_edge_t *e_pos0_12_10 = ext_grs_act_add_edge_to_keep(pattern, "pos0_12_10", -1, n_Vector_op_Block_1, n_Add1634_5, 3, e_pos0_12); - ext_grs_edge_t *e_e13_11 = ext_grs_act_add_edge_to_keep(pattern, "e13_11", ext_grs_NO_EDGE_POS, n_VProj1633_4, n_Add1634_5, 4, e_e13); - ext_grs_edge_t *e_e14_12 = ext_grs_act_add_edge_to_keep(pattern, "e14_12", ext_grs_NO_EDGE_POS, n_Add1625_8, n_Add1634_5, 6, e_e14); - ext_grs_edge_t *e_pos1_15_13 = ext_grs_act_add_edge_to_keep(pattern, "pos1_15_13", 0, n_Arg_0_0, n_VProj1624_7, 8, e_pos1_15); - ext_grs_edge_t *e_pos1_19_14 = ext_grs_act_add_edge_to_keep(pattern, "pos1_19_14", 0, n_Arg_0_0, n_VProj1616_2, 9, e_pos1_19); - ext_grs_edge_t *e_pos0_9_15 = ext_grs_act_add_edge_to_keep(pattern, "pos0_9_15", -1, n_Vector_op_Block_1, n_VProj9_6, 10, e_pos0_9); - ext_grs_edge_t *e_e18_16 = ext_grs_act_add_edge_to_keep(pattern, "e18_16", ext_grs_NO_EDGE_POS, n_VProj1616_2, n_Add1625_8, 11, e_e18); - ext_grs_edge_t *e_e17_17 = ext_grs_act_add_edge_to_keep(pattern, "e17_17", ext_grs_NO_EDGE_POS, n_VProj1624_7, n_Add1625_8, 12, e_e17); - ext_grs_edge_t *e_pos0_23_18 = ext_grs_act_add_edge(pattern, "pos0_23_18", -1, n_Vector_op_Block_1, n_Vector_op_ProjData, 13); - ext_grs_edge_t *e_pos0_22_19 = ext_grs_act_add_edge(pattern, "pos0_22_19", -1, n_Vector_op_Block_1, n_Vector_op, 14); - ext_grs_edge_t *e_pos1_20_20 = ext_grs_act_add_edge_to_keep(pattern, "pos1_20_20", 0, n_Arg_0_0, n_VProj1633_4, 5, e_pos1_20); - ext_grs_edge_t *e_pos1_21_21 = ext_grs_act_add_edge_to_keep(pattern, "pos1_21_21", 0, n_Arg_0_0, n_VProj1642_3, 7, e_pos1_21); - ext_grs_edge_t *e_pos1_24_22 = ext_grs_act_add_edge(pattern, "pos1_24_22", 0, n_Vector_op, n_Vector_op_ProjData, 15); - ext_grs_edge_t *e_pos1_25_23 = ext_grs_act_add_edge(pattern, "pos1_25_23", 0, n_Arg_0_0, n_Vector_op, 16); - ext_grs_edge_t *e_pos1_26_24 = ext_grs_act_add_edge(pattern, "pos1_26_24", 0, n_Vector_op_ProjData, n_VProj9_6, 17); - - } /* The replacement */ - - /* Eval functions */ - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_38759); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_38762); - } /* The Action */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* add_horz_4_32_variant0 */ - - -/* functions for evaluation of conditions of action component_0Iu_variant0 */ -static int grs_cond_func_45702(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[1/* Vector_Result0_VProj4276 */]) == 0; -} - -static void *grs_eval_out_func_45758(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { - set_Proj_proj(rpl_node_map[4/* Vector_op_ProjData */], 0); - return(NULL); -} -static void *grs_eval_out_func_45761(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { - set_Proj_proj(rpl_node_map[3/* Proj3 */], 0); - return(NULL); -} -/* functions for building the pattern of action component_0Iu_variant0 */ -static _inline ext_grs_action_t *grs_action_component_0Iu_variant0_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_rule, "component_0Iu_variant0"); - int check; - { /* The action */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - ext_grs_node_t *n_Arg_0 = ext_grs_act_add_node(pattern, "Arg_0", grs_op_VectorBase, mode_ANY, 0); - ext_grs_node_t *n_Vector_Result0_VProj4276 = ext_grs_act_add_node(pattern, "Vector_Result0_VProj4276", grs_op_VProj, mode_Is, 1); - ext_grs_node_t *n_Vector_op_Block = ext_grs_act_add_node(pattern, "Vector_op_Block", grs_op_Block, mode_BB, 2); - - /* The edges of the pattern */ - ext_grs_edge_t *e_pos0_3 = ext_grs_act_add_edge(pattern, "pos0_3", -1, n_Vector_op_Block, n_Vector_Result0_VProj4276, 0); - ext_grs_edge_t *e_pos1_4 = ext_grs_act_add_edge(pattern, "pos1_4", 0, n_Arg_0, n_Vector_Result0_VProj4276, 1); - - /* The conditions of the pattern */ - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result0_VProj4276}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_45702, pattern, 1, nodes, 0, edges); - } /* if */ - - /* The negative parts of the pattern */ - - - { /* The replacement */ - ext_grs_graph_t *pattern = ext_grs_act_get_replacement(act); - - /* The nodes of the pattern */ - ext_grs_node_t *n_Proj3_25 = ext_grs_act_add_node_to_keep(pattern, "Proj3_25", grs_op_Proj, mode_Is, 3, n_Vector_Result0_VProj4276); - ext_grs_node_t *n_Arg_0_26 = ext_grs_act_add_node_to_keep(pattern, "Arg_0_26", grs_op_VectorBase, mode_ANY, 0, n_Arg_0); - ext_grs_node_t *n_Vector_op_Block_27 = ext_grs_act_add_node_to_keep(pattern, "Vector_op_Block_27", grs_op_Block, mode_BB, 2, n_Vector_op_Block); - ext_grs_node_t *n_Vector_op_ProjData = ext_grs_act_add_node(pattern, "Vector_op_ProjData", grs_op_Proj, mode_LLu, 4); - ext_grs_node_t *n_Vector_op = ext_grs_act_add_node(pattern, "Vector_op", grs_op_Complex, mode_T, 5); - - /* The edges of the pattern */ - ext_grs_edge_t *e_pos0_3_28 = ext_grs_act_add_edge_to_keep(pattern, "pos0_3_28", -1, n_Vector_op_Block_27, n_Proj3_25, 0, e_pos0_3); - ext_grs_edge_t *e_pos0_5_29 = ext_grs_act_add_edge(pattern, "pos0_5_29", -1, n_Vector_op_Block_27, n_Vector_op, 2); - ext_grs_edge_t *e_pos0_6_30 = ext_grs_act_add_edge(pattern, "pos0_6_30", -1, n_Vector_op_Block_27, n_Vector_op_ProjData, 3); - ext_grs_edge_t *e_pos1_10_31 = ext_grs_act_add_edge(pattern, "pos1_10_31", 0, n_Vector_op, n_Proj3_25, 4); - ext_grs_edge_t *e_pos1_7_32 = ext_grs_act_add_edge(pattern, "pos1_7_32", 0, n_Vector_op, n_Vector_op_ProjData, 5); - ext_grs_edge_t *e_pos1_8_33 = ext_grs_act_add_edge(pattern, "pos1_8_33", 0, n_Arg_0_26, n_Vector_op, 6); - - } /* The replacement */ - - /* Eval functions */ - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_45758); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_45761); - } /* The Action */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* component_0Iu_variant0 */ - - -/* functions for evaluation of conditions of action component_0f_variant0 */ -static int grs_cond_func_45608(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[2/* Vector_Result0_VProj4149 */]) == 0; -} - -static void *grs_eval_out_func_45664(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { - set_Proj_proj(rpl_node_map[4/* Vector_op_ProjData */], 0); - return(NULL); -} -static void *grs_eval_out_func_45667(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { - set_Proj_proj(rpl_node_map[3/* Proj3 */], 0); - return(NULL); -} -/* functions for building the pattern of action component_0f_variant0 */ -static _inline ext_grs_action_t *grs_action_component_0f_variant0_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_rule, "component_0f_variant0"); - int check; - { /* The action */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - ext_grs_node_t *n_Arg_0 = ext_grs_act_add_node(pattern, "Arg_0", grs_op_VectorBase, mode_ANY, 0); - ext_grs_node_t *n_Vector_op_Block = ext_grs_act_add_node(pattern, "Vector_op_Block", grs_op_Block, mode_BB, 1); - ext_grs_node_t *n_Vector_Result0_VProj4149 = ext_grs_act_add_node(pattern, "Vector_Result0_VProj4149", grs_op_VProj, mode_F, 2); - - /* The edges of the pattern */ - ext_grs_edge_t *e_pos0_3 = ext_grs_act_add_edge(pattern, "pos0_3", -1, n_Vector_op_Block, n_Vector_Result0_VProj4149, 0); - ext_grs_edge_t *e_pos1_4 = ext_grs_act_add_edge(pattern, "pos1_4", 0, n_Arg_0, n_Vector_Result0_VProj4149, 1); - - /* The conditions of the pattern */ - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result0_VProj4149}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_45608, pattern, 1, nodes, 0, edges); - } /* if */ - - /* The negative parts of the pattern */ - - - { /* The replacement */ - ext_grs_graph_t *pattern = ext_grs_act_get_replacement(act); - - /* The nodes of the pattern */ - ext_grs_node_t *n_Arg_0_34 = ext_grs_act_add_node_to_keep(pattern, "Arg_0_34", grs_op_VectorBase, mode_ANY, 0, n_Arg_0); - ext_grs_node_t *n_Vector_op_Block_35 = ext_grs_act_add_node_to_keep(pattern, "Vector_op_Block_35", grs_op_Block, mode_BB, 1, n_Vector_op_Block); - ext_grs_node_t *n_Proj3_36 = ext_grs_act_add_node_to_keep(pattern, "Proj3_36", grs_op_Proj, mode_F, 3, n_Vector_Result0_VProj4149); - ext_grs_node_t *n_Vector_op_ProjData = ext_grs_act_add_node(pattern, "Vector_op_ProjData", grs_op_Proj, mode_LLu, 4); - ext_grs_node_t *n_Vector_op = ext_grs_act_add_node(pattern, "Vector_op", grs_op_Complex, mode_T, 5); - - /* The edges of the pattern */ - ext_grs_edge_t *e_pos0_3_37 = ext_grs_act_add_edge_to_keep(pattern, "pos0_3_37", -1, n_Vector_op_Block_35, n_Proj3_36, 0, e_pos0_3); - ext_grs_edge_t *e_pos0_5_38 = ext_grs_act_add_edge(pattern, "pos0_5_38", -1, n_Vector_op_Block_35, n_Vector_op, 2); - ext_grs_edge_t *e_pos0_6_39 = ext_grs_act_add_edge(pattern, "pos0_6_39", -1, n_Vector_op_Block_35, n_Vector_op_ProjData, 3); - ext_grs_edge_t *e_pos1_10_40 = ext_grs_act_add_edge(pattern, "pos1_10_40", 0, n_Vector_op, n_Proj3_36, 4); - ext_grs_edge_t *e_pos1_7_41 = ext_grs_act_add_edge(pattern, "pos1_7_41", 0, n_Vector_op, n_Vector_op_ProjData, 5); - ext_grs_edge_t *e_pos1_8_42 = ext_grs_act_add_edge(pattern, "pos1_8_42", 0, n_Arg_0_34, n_Vector_op, 6); - - } /* The replacement */ - - /* Eval functions */ - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_45664); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_45667); - } /* The Action */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* component_0f_variant0 */ - - -/* functions for evaluation of conditions of action maxps_variant0 */ -static int grs_cond_func_39331(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[1/* Proj1921 */]) == 1; -} -static int grs_cond_func_39334(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[30/* Proj2032 */]) == 0; -} -static int grs_cond_func_39337(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[32/* VProj2018 */]) == 2; -} -static int grs_cond_func_39340(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[36/* e68 */]) == get_edge_src_pos(edge_map[9/* e80 */]); -} -static int grs_cond_func_39343(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[35/* e69 */]) == get_edge_src_pos(edge_map[8/* e81 */]); -} -static int grs_cond_func_39346(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[54/* Proj2029 */]) == 4; -} -static int grs_cond_func_39349(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[31/* Proj2031 */]) == 1; -} -static int grs_cond_func_39352(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[21/* VProj2027 */]) == 2; -} -static int grs_cond_func_39355(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[44/* Proj2139 */]) == 4; -} -static int grs_cond_func_39358(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[2/* Proj1922 */]) == 0; -} -static int grs_cond_func_39361(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[6/* VProj2137 */]) == 3; -} -static int grs_cond_func_39364(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[40/* VProj1814 */]) == 0; -} -static int grs_cond_func_39367(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[48/* Proj1825 */]) == 4; -} -static int grs_cond_func_39370(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[51/* Proj1827 */]) == 1; -} -static int grs_cond_func_39373(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[40/* e101 */]) == get_edge_src_pos(edge_map[21/* e110 */]); -} -static int grs_cond_func_39376(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[39/* e102 */]) == get_edge_src_pos(edge_map[19/* e111 */]); -} -static int grs_cond_func_39379(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[49/* e104 */]) == get_edge_src_pos(edge_map[64/* e90 */]); -} -static int grs_cond_func_39382(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[47/* e105 */]) == get_edge_src_pos(edge_map[69/* e91 */]); -} -static int grs_cond_func_39385(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[3/* Proj2141 */]) == 1; -} -static int grs_cond_func_39388(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[20/* VProj1823 */]) == 0; -} -static int grs_cond_func_39391(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[7/* Proj1919 */]) == 4; -} -static int grs_cond_func_39394(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[52/* Proj1828 */]) == 0; -} -static int grs_cond_func_39397(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[28/* VProj1917 */]) == 1; -} -static int grs_cond_func_39400(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[19/* VProj2128 */]) == 3; -} -static int grs_cond_func_39403(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[28/* e119 */]) == get_edge_src_pos(edge_map[34/* e65 */]); -} -static int grs_cond_func_39406(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[10/* e120 */]) == get_edge_src_pos(edge_map[38/* e66 */]); -} -static int grs_cond_func_39409(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[4/* Proj2142 */]) == 0; -} -static int grs_cond_func_39412(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[47/* VProj1908 */]) == 1; -} - -static void *grs_eval_out_func_39651(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { - set_Proj_proj(rpl_node_map[59/* Vector_op_ProjData */], 0); - return(NULL); -} -static void *grs_eval_out_func_39654(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[57/* VProj55 */], 3); - return(NULL); -} -static void *grs_eval_out_func_39657(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[60/* VProj57 */], 2); - return(NULL); -} -static void *grs_eval_out_func_39660(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[56/* VProj59 */], 0); - return(NULL); -} -static void *grs_eval_out_func_39663(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[55/* VProj61 */], 1); - return(NULL); -} -/* functions for building the pattern of action maxps_variant0 */ -static _inline ext_grs_action_t *grs_action_maxps_variant0_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_rule, "maxps_variant0"); - int check; - { /* The action */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - ext_grs_node_t *n_Vector_Result1_Phi4810 = ext_grs_act_add_node(pattern, "Vector_Result1_Phi4810", grs_op_Phi, mode_F, 0); - ext_grs_node_t *n_Proj1921 = ext_grs_act_add_node(pattern, "Proj1921", grs_op_Proj, mode_X, 1); - ext_grs_node_t *n_Proj1922 = ext_grs_act_add_node(pattern, "Proj1922", grs_op_Proj, mode_X, 2); - ext_grs_node_t *n_Proj2141 = ext_grs_act_add_node(pattern, "Proj2141", grs_op_Proj, mode_X, 3); - ext_grs_node_t *n_Proj2142 = ext_grs_act_add_node(pattern, "Proj2142", grs_op_Proj, mode_X, 4); - ext_grs_node_t *n_Vector_Result0_Phi4806 = ext_grs_act_add_node(pattern, "Vector_Result0_Phi4806", grs_op_Phi, mode_F, 5); - ext_grs_node_t *n_VProj2137 = ext_grs_act_add_node(pattern, "VProj2137", grs_op_VProj, mode_F, 6); - ext_grs_node_t *n_Proj1919 = ext_grs_act_add_node(pattern, "Proj1919", grs_op_Proj, mode_b, 7); - ext_grs_node_t *n_Jmp5768 = ext_grs_act_add_node(pattern, "Jmp5768", grs_op_Jmp, mode_X, 8); - ext_grs_node_t *n_Cond2140 = ext_grs_act_add_node(pattern, "Cond2140", grs_op_Cond, mode_T, 9); - ext_grs_node_t *n_Jmp5766 = ext_grs_act_add_node(pattern, "Jmp5766", grs_op_Jmp, mode_X, 10); - ext_grs_node_t *n_Arg_0 = ext_grs_act_add_node(pattern, "Arg_0", grs_op_VectorBase, mode_ANY, 11); - ext_grs_node_t *n_Arg_1 = ext_grs_act_add_node(pattern, "Arg_1", grs_op_VectorBase, mode_ANY, 12); - ext_grs_node_t *n_Jmp5770 = ext_grs_act_add_node(pattern, "Jmp5770", grs_op_Jmp, mode_X, 13); - ext_grs_node_t *n_Jmp2160 = ext_grs_act_add_node(pattern, "Jmp2160", grs_op_Jmp, mode_X, 14); - ext_grs_node_t *n_Cond1826 = ext_grs_act_add_node(pattern, "Cond1826", grs_op_Cond, mode_T, 15); - ext_grs_node_t *n_Cond1920 = ext_grs_act_add_node(pattern, "Cond1920", grs_op_Cond, mode_T, 16); - ext_grs_node_t *n_Block2008 = ext_grs_act_add_node(pattern, "Block2008", grs_op_Block, mode_BB, 17); - ext_grs_node_t *n_Block2006 = ext_grs_act_add_node(pattern, "Block2006", grs_op_Block, mode_BB, 18); - ext_grs_node_t *n_VProj2128 = ext_grs_act_add_node(pattern, "VProj2128", grs_op_VProj, mode_F, 19); - ext_grs_node_t *n_VProj1823 = ext_grs_act_add_node(pattern, "VProj1823", grs_op_VProj, mode_F, 20); - ext_grs_node_t *n_VProj2027 = ext_grs_act_add_node(pattern, "VProj2027", grs_op_VProj, mode_F, 21); - ext_grs_node_t *n_Jmp5772 = ext_grs_act_add_node(pattern, "Jmp5772", grs_op_Jmp, mode_X, 22); - ext_grs_node_t *n_Vector_Result3_Phi4818 = ext_grs_act_add_node(pattern, "Vector_Result3_Phi4818", grs_op_Phi, mode_F, 23); - ext_grs_node_t *n_Block4800 = ext_grs_act_add_node(pattern, "Block4800", grs_op_Block, mode_BB, 24); - ext_grs_node_t *n_Jmp1974 = ext_grs_act_add_node(pattern, "Jmp1974", grs_op_Jmp, mode_X, 25); - ext_grs_node_t *n_Block5771 = ext_grs_act_add_node(pattern, "Block5771", grs_op_Block, mode_BB, 26); - ext_grs_node_t *n_Cond2030 = ext_grs_act_add_node(pattern, "Cond2030", grs_op_Cond, mode_T, 27); - ext_grs_node_t *n_VProj1917 = ext_grs_act_add_node(pattern, "VProj1917", grs_op_VProj, mode_F, 28); - ext_grs_node_t *n_Block2117 = ext_grs_act_add_node(pattern, "Block2117", grs_op_Block, mode_BB, 29); - ext_grs_node_t *n_Proj2032 = ext_grs_act_add_node(pattern, "Proj2032", grs_op_Proj, mode_X, 30); - ext_grs_node_t *n_Proj2031 = ext_grs_act_add_node(pattern, "Proj2031", grs_op_Proj, mode_X, 31); - ext_grs_node_t *n_VProj2018 = ext_grs_act_add_node(pattern, "VProj2018", grs_op_VProj, mode_F, 32); - ext_grs_node_t *n_Cmp5663 = ext_grs_act_add_node(pattern, "Cmp5663", grs_op_Cmp, mode_T, 33); - ext_grs_node_t *n_Vector_Result2_Phi4814 = ext_grs_act_add_node(pattern, "Vector_Result2_Phi4814", grs_op_Phi, mode_F, 34); - ext_grs_node_t *n_Cmp5664 = ext_grs_act_add_node(pattern, "Cmp5664", grs_op_Cmp, mode_T, 35); - ext_grs_node_t *n_Cmp5665 = ext_grs_act_add_node(pattern, "Cmp5665", grs_op_Cmp, mode_T, 36); - ext_grs_node_t *n_Block1896 = ext_grs_act_add_node(pattern, "Block1896", grs_op_Block, mode_BB, 37); - ext_grs_node_t *n_Cmp5666 = ext_grs_act_add_node(pattern, "Cmp5666", grs_op_Cmp, mode_T, 38); - ext_grs_node_t *n_Block1898 = ext_grs_act_add_node(pattern, "Block1898", grs_op_Block, mode_BB, 39); - ext_grs_node_t *n_VProj1814 = ext_grs_act_add_node(pattern, "VProj1814", grs_op_VProj, mode_F, 40); - ext_grs_node_t *n_Block5769 = ext_grs_act_add_node(pattern, "Block5769", grs_op_Block, mode_BB, 41); - ext_grs_node_t *n_Vector_op_Block = ext_grs_act_add_node(pattern, "Vector_op_Block", grs_op_Block, mode_BB, 42); - ext_grs_node_t *n_Jmp2084 = ext_grs_act_add_node(pattern, "Jmp2084", grs_op_Jmp, mode_X, 43); - ext_grs_node_t *n_Proj2139 = ext_grs_act_add_node(pattern, "Proj2139", grs_op_Proj, mode_b, 44); - ext_grs_node_t *n_Block5765 = ext_grs_act_add_node(pattern, "Block5765", grs_op_Block, mode_BB, 45); - ext_grs_node_t *n_Block5767 = ext_grs_act_add_node(pattern, "Block5767", grs_op_Block, mode_BB, 46); - ext_grs_node_t *n_VProj1908 = ext_grs_act_add_node(pattern, "VProj1908", grs_op_VProj, mode_F, 47); - ext_grs_node_t *n_Proj1825 = ext_grs_act_add_node(pattern, "Proj1825", grs_op_Proj, mode_b, 48); - ext_grs_node_t *n_Block1804 = ext_grs_act_add_node(pattern, "Block1804", grs_op_Block, mode_BB, 49); - ext_grs_node_t *n_Jmp1864 = ext_grs_act_add_node(pattern, "Jmp1864", grs_op_Jmp, mode_X, 50); - ext_grs_node_t *n_Proj1827 = ext_grs_act_add_node(pattern, "Proj1827", grs_op_Proj, mode_X, 51); - ext_grs_node_t *n_Proj1828 = ext_grs_act_add_node(pattern, "Proj1828", grs_op_Proj, mode_X, 52); - ext_grs_node_t *n_Block1802 = ext_grs_act_add_node(pattern, "Block1802", grs_op_Block, mode_BB, 53); - ext_grs_node_t *n_Proj2029 = ext_grs_act_add_node(pattern, "Proj2029", grs_op_Proj, mode_b, 54); - - /* The edges of the pattern */ - ext_grs_edge_t *e_e78 = ext_grs_act_add_edge(pattern, "e78", ext_grs_NO_EDGE_POS, n_Proj1922, n_Block1896, 0); - ext_grs_edge_t *e_e73 = ext_grs_act_add_edge(pattern, "e73", ext_grs_NO_EDGE_POS, n_Proj1921, n_Block5767, 1); - ext_grs_edge_t *e_pos1_77 = ext_grs_act_add_edge(pattern, "pos1_77", 0, n_Arg_1, n_VProj2027, 2); - ext_grs_edge_t *e_pos1_79 = ext_grs_act_add_edge(pattern, "pos1_79", 0, n_Cmp5666, n_Proj2139, 3); - ext_grs_edge_t *e_pos1_72 = ext_grs_act_add_edge(pattern, "pos1_72", 0, n_Cond2030, n_Proj2031, 4); - ext_grs_edge_t *e_pos1_75 = ext_grs_act_add_edge(pattern, "pos1_75", 0, n_Proj2139, n_Cond2140, 5); - ext_grs_edge_t *e_pos1_70 = ext_grs_act_add_edge(pattern, "pos1_70", 0, n_Cmp5665, n_Proj2029, 6); - ext_grs_edge_t *e_e83 = ext_grs_act_add_edge(pattern, "e83", ext_grs_NO_EDGE_POS, n_Proj2031, n_Block5769, 7); - ext_grs_edge_t *e_e81 = ext_grs_act_add_edge(pattern, "e81", ext_grs_NO_EDGE_POS, n_Jmp2160, n_Block4800, 8); - ext_grs_edge_t *e_e80 = ext_grs_act_add_edge(pattern, "e80", ext_grs_NO_EDGE_POS, n_Jmp5772, n_Block4800, 9); - ext_grs_edge_t *e_e120 = ext_grs_act_add_edge(pattern, "e120", ext_grs_NO_EDGE_POS, n_VProj1908, n_Vector_Result1_Phi4810, 10); - ext_grs_edge_t *e_pos1_89 = ext_grs_act_add_edge(pattern, "pos1_89", 0, n_Arg_0, n_VProj1814, 11); - ext_grs_edge_t *e_e121 = ext_grs_act_add_edge(pattern, "e121", ext_grs_NO_EDGE_POS, n_Proj2032, n_Block2006, 12); - ext_grs_edge_t *e_pos1_87 = ext_grs_act_add_edge(pattern, "pos1_87", 0, n_Proj1825, n_Cond1826, 13); - ext_grs_edge_t *e_pos0_113 = ext_grs_act_add_edge(pattern, "pos0_113", -1, n_Vector_op_Block, n_Proj1828, 14); - ext_grs_edge_t *e_pos0_112 = ext_grs_act_add_edge(pattern, "pos0_112", -1, n_Block5771, n_Jmp5772, 15); - ext_grs_edge_t *e_pos1_85 = ext_grs_act_add_edge(pattern, "pos1_85", 0, n_Arg_1, n_VProj2137, 16); - ext_grs_edge_t *e_pos1_84 = ext_grs_act_add_edge(pattern, "pos1_84", 0, n_Cond1920, n_Proj1922, 17); - ext_grs_edge_t *e_pos0_117 = ext_grs_act_add_edge(pattern, "pos0_117", -1, n_Block2006, n_Jmp2084, 18); - ext_grs_edge_t *e_e111 = ext_grs_act_add_edge(pattern, "e111", ext_grs_NO_EDGE_POS, n_Jmp2084, n_Block2008, 19); - ext_grs_edge_t *e_pos1_55 = ext_grs_act_add_edge(pattern, "pos1_55", 0, n_Cond1920, n_Proj1921, 20); - ext_grs_edge_t *e_e110 = ext_grs_act_add_edge(pattern, "e110", ext_grs_NO_EDGE_POS, n_Jmp5770, n_Block2008, 21); - ext_grs_edge_t *e_pos2_59 = ext_grs_act_add_edge(pattern, "pos2_59", 1, n_VProj2128, n_Cmp5666, 22); - ext_grs_edge_t *e_pos1_56 = ext_grs_act_add_edge(pattern, "pos1_56", 0, n_VProj1917, n_Cmp5664, 23); - ext_grs_edge_t *e_pos2_57 = ext_grs_act_add_edge(pattern, "pos2_57", 1, n_VProj1908, n_Cmp5664, 24); - ext_grs_edge_t *e_pos0_97 = ext_grs_act_add_edge(pattern, "pos0_97", -1, n_Block1804, n_Cond1920, 25); - ext_grs_edge_t *e_pos1_58 = ext_grs_act_add_edge(pattern, "pos1_58", 0, n_VProj2137, n_Cmp5666, 26); - ext_grs_edge_t *e_pos0_99 = ext_grs_act_add_edge(pattern, "pos0_99", -1, n_Block1802, n_Jmp1864, 27); - ext_grs_edge_t *e_e119 = ext_grs_act_add_edge(pattern, "e119", ext_grs_NO_EDGE_POS, n_VProj1917, n_Vector_Result1_Phi4810, 28); - ext_grs_edge_t *e_pos0_94 = ext_grs_act_add_edge(pattern, "pos0_94", -1, n_Block5769, n_Jmp5770, 29); - ext_grs_edge_t *e_e118 = ext_grs_act_add_edge(pattern, "e118", ext_grs_NO_EDGE_POS, n_Block1898, n_Vector_Result1_Phi4810, 30); - ext_grs_edge_t *e_pos2_125 = ext_grs_act_add_edge(pattern, "pos2_125", 1, n_VProj1814, n_Cmp5663, 31); - ext_grs_edge_t *e_pos2_127 = ext_grs_act_add_edge(pattern, "pos2_127", 1, n_VProj2018, n_Cmp5665, 32); - ext_grs_edge_t *e_e60 = ext_grs_act_add_edge(pattern, "e60", ext_grs_NO_EDGE_POS, n_Proj1827, n_Block5765, 33); - ext_grs_edge_t *e_e65 = ext_grs_act_add_edge(pattern, "e65", ext_grs_NO_EDGE_POS, n_Jmp5768, n_Block1898, 34); - ext_grs_edge_t *e_e69 = ext_grs_act_add_edge(pattern, "e69", ext_grs_NO_EDGE_POS, n_VProj2137, n_Vector_Result3_Phi4818, 35); - ext_grs_edge_t *e_e68 = ext_grs_act_add_edge(pattern, "e68", ext_grs_NO_EDGE_POS, n_VProj2128, n_Vector_Result3_Phi4818, 36); - ext_grs_edge_t *e_e67 = ext_grs_act_add_edge(pattern, "e67", ext_grs_NO_EDGE_POS, n_Block4800, n_Vector_Result3_Phi4818, 37); - ext_grs_edge_t *e_e66 = ext_grs_act_add_edge(pattern, "e66", ext_grs_NO_EDGE_POS, n_Jmp1974, n_Block1898, 38); - ext_grs_edge_t *e_e102 = ext_grs_act_add_edge(pattern, "e102", ext_grs_NO_EDGE_POS, n_VProj2018, n_Vector_Result2_Phi4814, 39); - ext_grs_edge_t *e_e101 = ext_grs_act_add_edge(pattern, "e101", ext_grs_NO_EDGE_POS, n_VProj2027, n_Vector_Result2_Phi4814, 40); - ext_grs_edge_t *e_e100 = ext_grs_act_add_edge(pattern, "e100", ext_grs_NO_EDGE_POS, n_Block2008, n_Vector_Result2_Phi4814, 41); - ext_grs_edge_t *e_pos0_88 = ext_grs_act_add_edge(pattern, "pos0_88", -1, n_Block2117, n_Jmp2160, 42); - ext_grs_edge_t *e_pos0_86 = ext_grs_act_add_edge(pattern, "pos0_86", -1, n_Vector_op_Block, n_Cond1826, 43); - ext_grs_edge_t *e_e109 = ext_grs_act_add_edge(pattern, "e109", ext_grs_NO_EDGE_POS, n_Proj1828, n_Block1802, 44); - ext_grs_edge_t *e_pos0_82 = ext_grs_act_add_edge(pattern, "pos0_82", -1, n_Block5767, n_Jmp5768, 45); - ext_grs_edge_t *e_pos1_64 = ext_grs_act_add_edge(pattern, "pos1_64", 0, n_Arg_0, n_VProj2018, 46); - ext_grs_edge_t *e_e105 = ext_grs_act_add_edge(pattern, "e105", ext_grs_NO_EDGE_POS, n_VProj1814, n_Vector_Result0_Phi4806, 47); - ext_grs_edge_t *e_pos1_63 = ext_grs_act_add_edge(pattern, "pos1_63", 0, n_Proj2029, n_Cond2030, 48); - ext_grs_edge_t *e_e104 = ext_grs_act_add_edge(pattern, "e104", ext_grs_NO_EDGE_POS, n_VProj1823, n_Vector_Result0_Phi4806, 49); - ext_grs_edge_t *e_e103 = ext_grs_act_add_edge(pattern, "e103", ext_grs_NO_EDGE_POS, n_Block1804, n_Vector_Result0_Phi4806, 50); - ext_grs_edge_t *e_pos1_61 = ext_grs_act_add_edge(pattern, "pos1_61", 0, n_Cond2030, n_Proj2032, 51); - ext_grs_edge_t *e_pos1_108 = ext_grs_act_add_edge(pattern, "pos1_108", 0, n_Cmp5664, n_Proj1919, 52); - ext_grs_edge_t *e_pos0_74 = ext_grs_act_add_edge(pattern, "pos0_74", -1, n_Block2008, n_Cond2140, 53); - ext_grs_edge_t *e_pos0_71 = ext_grs_act_add_edge(pattern, "pos0_71", -1, n_Block5765, n_Jmp5766, 54); - ext_grs_edge_t *e_pos0_76 = ext_grs_act_add_edge(pattern, "pos0_76", -1, n_Block1896, n_Jmp1974, 55); - ext_grs_edge_t *e_pos1_106 = ext_grs_act_add_edge(pattern, "pos1_106", 0, n_Arg_1, n_VProj1823, 56); - ext_grs_edge_t *e_pos1_107 = ext_grs_act_add_edge(pattern, "pos1_107", 0, n_Cond2140, n_Proj2141, 57); - ext_grs_edge_t *e_pos0_62 = ext_grs_act_add_edge(pattern, "pos0_62", -1, n_Block1898, n_Cond2030, 58); - ext_grs_edge_t *e_pos1_92 = ext_grs_act_add_edge(pattern, "pos1_92", 0, n_Cmp5663, n_Proj1825, 59); - ext_grs_edge_t *e_e96 = ext_grs_act_add_edge(pattern, "e96", ext_grs_NO_EDGE_POS, n_Proj2142, n_Block5771, 60); - ext_grs_edge_t *e_pos1_95 = ext_grs_act_add_edge(pattern, "pos1_95", 0, n_Cond1826, n_Proj1827, 61); - ext_grs_edge_t *e_pos1_126 = ext_grs_act_add_edge(pattern, "pos1_126", 0, n_VProj2027, n_Cmp5665, 62); - ext_grs_edge_t *e_pos1_98 = ext_grs_act_add_edge(pattern, "pos1_98", 0, n_Proj1919, n_Cond1920, 63); - ext_grs_edge_t *e_e90 = ext_grs_act_add_edge(pattern, "e90", ext_grs_NO_EDGE_POS, n_Jmp5766, n_Block1804, 64); - ext_grs_edge_t *e_pos1_122 = ext_grs_act_add_edge(pattern, "pos1_122", 0, n_Cond2140, n_Proj2142, 65); - ext_grs_edge_t *e_e93 = ext_grs_act_add_edge(pattern, "e93", ext_grs_NO_EDGE_POS, n_Proj2141, n_Block2117, 66); - ext_grs_edge_t *e_pos1_123 = ext_grs_act_add_edge(pattern, "pos1_123", 0, n_Arg_0, n_VProj1908, 67); - ext_grs_edge_t *e_pos1_124 = ext_grs_act_add_edge(pattern, "pos1_124", 0, n_VProj1823, n_Cmp5663, 68); - ext_grs_edge_t *e_e91 = ext_grs_act_add_edge(pattern, "e91", ext_grs_NO_EDGE_POS, n_Jmp1864, n_Block1804, 69); - ext_grs_edge_t *e_pos1_115 = ext_grs_act_add_edge(pattern, "pos1_115", 0, n_Arg_1, n_VProj1917, 70); - ext_grs_edge_t *e_pos1_116 = ext_grs_act_add_edge(pattern, "pos1_116", 0, n_Arg_0, n_VProj2128, 71); - ext_grs_edge_t *e_pos1_114 = ext_grs_act_add_edge(pattern, "pos1_114", 0, n_Cond1826, n_Proj1828, 72); - - /* The conditions of the pattern */ - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj1921}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_39331, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj2032}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_39334, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj2018}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_39337, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e80, e_e68}; - - ext_grs_act_register_condition(grs_cond_func_39340, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e81, e_e69}; - - ext_grs_act_register_condition(grs_cond_func_39343, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj2029}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_39346, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj2031}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_39349, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj2027}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_39352, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj2139}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_39355, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj1922}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_39358, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj2137}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_39361, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj1814}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_39364, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj1825}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_39367, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj1827}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_39370, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e110, e_e101}; - - ext_grs_act_register_condition(grs_cond_func_39373, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e111, e_e102}; - - ext_grs_act_register_condition(grs_cond_func_39376, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e90, e_e104}; - - ext_grs_act_register_condition(grs_cond_func_39379, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e105, e_e91}; - - ext_grs_act_register_condition(grs_cond_func_39382, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj2141}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_39385, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj1823}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_39388, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj1919}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_39391, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj1828}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_39394, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj1917}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_39397, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj2128}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_39400, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e65, e_e119}; - - ext_grs_act_register_condition(grs_cond_func_39403, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e120, e_e66}; - - ext_grs_act_register_condition(grs_cond_func_39406, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj2142}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_39409, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj1908}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_39412, pattern, 1, nodes, 0, edges); - } /* if */ - - /* The negative parts of the pattern */ - - - { /* The replacement */ - ext_grs_graph_t *pattern = ext_grs_act_get_replacement(act); - - /* The nodes of the pattern */ - ext_grs_node_t *n_VProj61_43 = ext_grs_act_add_node_to_keep(pattern, "VProj61_43", grs_op_VProj, mode_F, 55, n_Vector_Result1_Phi4810); - ext_grs_node_t *n_Proj1921_44 = ext_grs_act_add_node_to_keep(pattern, "Proj1921_44", grs_op_Proj, mode_X, 1, n_Proj1921); - ext_grs_node_t *n_Proj1922_45 = ext_grs_act_add_node_to_keep(pattern, "Proj1922_45", grs_op_Proj, mode_X, 2, n_Proj1922); - ext_grs_node_t *n_Proj2141_46 = ext_grs_act_add_node_to_keep(pattern, "Proj2141_46", grs_op_Proj, mode_X, 3, n_Proj2141); - ext_grs_node_t *n_Proj2142_47 = ext_grs_act_add_node_to_keep(pattern, "Proj2142_47", grs_op_Proj, mode_X, 4, n_Proj2142); - ext_grs_node_t *n_VProj59_48 = ext_grs_act_add_node_to_keep(pattern, "VProj59_48", grs_op_VProj, mode_F, 56, n_Vector_Result0_Phi4806); - ext_grs_node_t *n_Proj1919_49 = ext_grs_act_add_node_to_keep(pattern, "Proj1919_49", grs_op_Proj, mode_b, 7, n_Proj1919); - ext_grs_node_t *n_VProj2137_50 = ext_grs_act_add_node_to_keep(pattern, "VProj2137_50", grs_op_VProj, mode_F, 6, n_VProj2137); - ext_grs_node_t *n_Jmp5768_51 = ext_grs_act_add_node_to_keep(pattern, "Jmp5768_51", grs_op_Jmp, mode_X, 8, n_Jmp5768); - ext_grs_node_t *n_Cond2140_52 = ext_grs_act_add_node_to_keep(pattern, "Cond2140_52", grs_op_Cond, mode_T, 9, n_Cond2140); - ext_grs_node_t *n_Jmp5766_53 = ext_grs_act_add_node_to_keep(pattern, "Jmp5766_53", grs_op_Jmp, mode_X, 10, n_Jmp5766); - ext_grs_node_t *n_Arg_0_54 = ext_grs_act_add_node_to_keep(pattern, "Arg_0_54", grs_op_VectorBase, mode_ANY, 11, n_Arg_0); - ext_grs_node_t *n_Arg_1_55 = ext_grs_act_add_node_to_keep(pattern, "Arg_1_55", grs_op_VectorBase, mode_ANY, 12, n_Arg_1); - ext_grs_node_t *n_Jmp5770_56 = ext_grs_act_add_node_to_keep(pattern, "Jmp5770_56", grs_op_Jmp, mode_X, 13, n_Jmp5770); - ext_grs_node_t *n_Jmp2160_57 = ext_grs_act_add_node_to_keep(pattern, "Jmp2160_57", grs_op_Jmp, mode_X, 14, n_Jmp2160); - ext_grs_node_t *n_Cond1826_58 = ext_grs_act_add_node_to_keep(pattern, "Cond1826_58", grs_op_Cond, mode_T, 15, n_Cond1826); - ext_grs_node_t *n_Cond1920_59 = ext_grs_act_add_node_to_keep(pattern, "Cond1920_59", grs_op_Cond, mode_T, 16, n_Cond1920); - ext_grs_node_t *n_Block2008_60 = ext_grs_act_add_node_to_keep(pattern, "Block2008_60", grs_op_Block, mode_BB, 17, n_Block2008); - ext_grs_node_t *n_Block2006_61 = ext_grs_act_add_node_to_keep(pattern, "Block2006_61", grs_op_Block, mode_BB, 18, n_Block2006); - ext_grs_node_t *n_VProj2128_62 = ext_grs_act_add_node_to_keep(pattern, "VProj2128_62", grs_op_VProj, mode_F, 19, n_VProj2128); - ext_grs_node_t *n_VProj1823_63 = ext_grs_act_add_node_to_keep(pattern, "VProj1823_63", grs_op_VProj, mode_F, 20, n_VProj1823); - ext_grs_node_t *n_VProj2027_64 = ext_grs_act_add_node_to_keep(pattern, "VProj2027_64", grs_op_VProj, mode_F, 21, n_VProj2027); - ext_grs_node_t *n_Jmp5772_65 = ext_grs_act_add_node_to_keep(pattern, "Jmp5772_65", grs_op_Jmp, mode_X, 22, n_Jmp5772); - ext_grs_node_t *n_VProj55_66 = ext_grs_act_add_node_to_keep(pattern, "VProj55_66", grs_op_VProj, mode_F, 57, n_Vector_Result3_Phi4818); - ext_grs_node_t *n_Vector_op = ext_grs_act_add_node(pattern, "Vector_op", grs_op_Complex, mode_T, 58); - ext_grs_node_t *n_Block4800_67 = ext_grs_act_add_node_to_keep(pattern, "Block4800_67", grs_op_Block, mode_BB, 24, n_Block4800); - ext_grs_node_t *n_Vector_op_ProjData = ext_grs_act_add_node(pattern, "Vector_op_ProjData", grs_op_Proj, mode_LLu, 59); - ext_grs_node_t *n_Jmp1974_68 = ext_grs_act_add_node_to_keep(pattern, "Jmp1974_68", grs_op_Jmp, mode_X, 25, n_Jmp1974); - ext_grs_node_t *n_Block5771_69 = ext_grs_act_add_node_to_keep(pattern, "Block5771_69", grs_op_Block, mode_BB, 26, n_Block5771); - ext_grs_node_t *n_Cond2030_70 = ext_grs_act_add_node_to_keep(pattern, "Cond2030_70", grs_op_Cond, mode_T, 27, n_Cond2030); - ext_grs_node_t *n_VProj1917_71 = ext_grs_act_add_node_to_keep(pattern, "VProj1917_71", grs_op_VProj, mode_F, 28, n_VProj1917); - ext_grs_node_t *n_Block2117_72 = ext_grs_act_add_node_to_keep(pattern, "Block2117_72", grs_op_Block, mode_BB, 29, n_Block2117); - ext_grs_node_t *n_Proj2032_73 = ext_grs_act_add_node_to_keep(pattern, "Proj2032_73", grs_op_Proj, mode_X, 30, n_Proj2032); - ext_grs_node_t *n_Proj2031_74 = ext_grs_act_add_node_to_keep(pattern, "Proj2031_74", grs_op_Proj, mode_X, 31, n_Proj2031); - ext_grs_node_t *n_VProj2018_75 = ext_grs_act_add_node_to_keep(pattern, "VProj2018_75", grs_op_VProj, mode_F, 32, n_VProj2018); - ext_grs_node_t *n_VProj57_76 = ext_grs_act_add_node_to_keep(pattern, "VProj57_76", grs_op_VProj, mode_F, 60, n_Vector_Result2_Phi4814); - ext_grs_node_t *n_Cmp5663_77 = ext_grs_act_add_node_to_keep(pattern, "Cmp5663_77", grs_op_Cmp, mode_T, 33, n_Cmp5663); - ext_grs_node_t *n_Cmp5664_78 = ext_grs_act_add_node_to_keep(pattern, "Cmp5664_78", grs_op_Cmp, mode_T, 35, n_Cmp5664); - ext_grs_node_t *n_Cmp5665_79 = ext_grs_act_add_node_to_keep(pattern, "Cmp5665_79", grs_op_Cmp, mode_T, 36, n_Cmp5665); - ext_grs_node_t *n_Block1896_80 = ext_grs_act_add_node_to_keep(pattern, "Block1896_80", grs_op_Block, mode_BB, 37, n_Block1896); - ext_grs_node_t *n_Cmp5666_81 = ext_grs_act_add_node_to_keep(pattern, "Cmp5666_81", grs_op_Cmp, mode_T, 38, n_Cmp5666); - ext_grs_node_t *n_VProj1814_82 = ext_grs_act_add_node_to_keep(pattern, "VProj1814_82", grs_op_VProj, mode_F, 40, n_VProj1814); - ext_grs_node_t *n_Block1898_83 = ext_grs_act_add_node_to_keep(pattern, "Block1898_83", grs_op_Block, mode_BB, 39, n_Block1898); - ext_grs_node_t *n_Block5769_84 = ext_grs_act_add_node_to_keep(pattern, "Block5769_84", grs_op_Block, mode_BB, 41, n_Block5769); - ext_grs_node_t *n_Vector_op_Block_85 = ext_grs_act_add_node_to_keep(pattern, "Vector_op_Block_85", grs_op_Block, mode_BB, 42, n_Vector_op_Block); - ext_grs_node_t *n_Jmp2084_86 = ext_grs_act_add_node_to_keep(pattern, "Jmp2084_86", grs_op_Jmp, mode_X, 43, n_Jmp2084); - ext_grs_node_t *n_Proj2139_87 = ext_grs_act_add_node_to_keep(pattern, "Proj2139_87", grs_op_Proj, mode_b, 44, n_Proj2139); - ext_grs_node_t *n_Block5765_88 = ext_grs_act_add_node_to_keep(pattern, "Block5765_88", grs_op_Block, mode_BB, 45, n_Block5765); - ext_grs_node_t *n_Block5767_89 = ext_grs_act_add_node_to_keep(pattern, "Block5767_89", grs_op_Block, mode_BB, 46, n_Block5767); - ext_grs_node_t *n_VProj1908_90 = ext_grs_act_add_node_to_keep(pattern, "VProj1908_90", grs_op_VProj, mode_F, 47, n_VProj1908); - ext_grs_node_t *n_Proj1825_91 = ext_grs_act_add_node_to_keep(pattern, "Proj1825_91", grs_op_Proj, mode_b, 48, n_Proj1825); - ext_grs_node_t *n_Jmp1864_92 = ext_grs_act_add_node_to_keep(pattern, "Jmp1864_92", grs_op_Jmp, mode_X, 50, n_Jmp1864); - ext_grs_node_t *n_Block1804_93 = ext_grs_act_add_node_to_keep(pattern, "Block1804_93", grs_op_Block, mode_BB, 49, n_Block1804); - ext_grs_node_t *n_Proj1827_94 = ext_grs_act_add_node_to_keep(pattern, "Proj1827_94", grs_op_Proj, mode_X, 51, n_Proj1827); - ext_grs_node_t *n_Block1802_95 = ext_grs_act_add_node_to_keep(pattern, "Block1802_95", grs_op_Block, mode_BB, 53, n_Block1802); - ext_grs_node_t *n_Proj1828_96 = ext_grs_act_add_node_to_keep(pattern, "Proj1828_96", grs_op_Proj, mode_X, 52, n_Proj1828); - ext_grs_node_t *n_Proj2029_97 = ext_grs_act_add_node_to_keep(pattern, "Proj2029_97", grs_op_Proj, mode_b, 54, n_Proj2029); - - /* The edges of the pattern */ - ext_grs_edge_t *e_e78_98 = ext_grs_act_add_edge_to_keep(pattern, "e78_98", ext_grs_NO_EDGE_POS, n_Proj1922_45, n_Block1896_80, 0, e_e78); - ext_grs_edge_t *e_e73_99 = ext_grs_act_add_edge_to_keep(pattern, "e73_99", ext_grs_NO_EDGE_POS, n_Proj1921_44, n_Block5767_89, 1, e_e73); - ext_grs_edge_t *e_pos1_77_100 = ext_grs_act_add_edge_to_keep(pattern, "pos1_77_100", 0, n_Arg_1_55, n_VProj2027_64, 2, e_pos1_77); - ext_grs_edge_t *e_pos1_79_101 = ext_grs_act_add_edge_to_keep(pattern, "pos1_79_101", 0, n_Cmp5666_81, n_Proj2139_87, 3, e_pos1_79); - ext_grs_edge_t *e_pos1_72_102 = ext_grs_act_add_edge_to_keep(pattern, "pos1_72_102", 0, n_Cond2030_70, n_Proj2031_74, 4, e_pos1_72); - ext_grs_edge_t *e_pos1_75_103 = ext_grs_act_add_edge_to_keep(pattern, "pos1_75_103", 0, n_Proj2139_87, n_Cond2140_52, 5, e_pos1_75); - ext_grs_edge_t *e_pos0_129_104 = ext_grs_act_add_edge(pattern, "pos0_129_104", -1, n_Vector_op_Block_85, n_Vector_op_ProjData, 73); - ext_grs_edge_t *e_pos0_128_105 = ext_grs_act_add_edge(pattern, "pos0_128_105", -1, n_Vector_op_Block_85, n_Vector_op, 74); - ext_grs_edge_t *e_pos1_70_106 = ext_grs_act_add_edge_to_keep(pattern, "pos1_70_106", 0, n_Cmp5665_79, n_Proj2029_97, 6, e_pos1_70); - ext_grs_edge_t *e_pos1_134_107 = ext_grs_act_add_edge(pattern, "pos1_134_107", 0, n_Vector_op_ProjData, n_VProj57_76, 75); - ext_grs_edge_t *e_e83_108 = ext_grs_act_add_edge_to_keep(pattern, "e83_108", ext_grs_NO_EDGE_POS, n_Proj2031_74, n_Block5769_84, 7, e_e83); - ext_grs_edge_t *e_pos1_133_109 = ext_grs_act_add_edge(pattern, "pos1_133_109", 0, n_Vector_op_ProjData, n_VProj55_66, 76); - ext_grs_edge_t *e_pos1_136_110 = ext_grs_act_add_edge(pattern, "pos1_136_110", 0, n_Vector_op_ProjData, n_VProj61_43, 77); - ext_grs_edge_t *e_e81_111 = ext_grs_act_add_edge_to_keep(pattern, "e81_111", ext_grs_NO_EDGE_POS, n_Jmp2160_57, n_Block4800_67, 8, e_e81); - ext_grs_edge_t *e_pos1_135_112 = ext_grs_act_add_edge(pattern, "pos1_135_112", 0, n_Vector_op_ProjData, n_VProj59_48, 78); - ext_grs_edge_t *e_e80_113 = ext_grs_act_add_edge_to_keep(pattern, "e80_113", ext_grs_NO_EDGE_POS, n_Jmp5772_65, n_Block4800_67, 9, e_e80); - ext_grs_edge_t *e_pos1_130_114 = ext_grs_act_add_edge(pattern, "pos1_130_114", 0, n_Vector_op, n_Vector_op_ProjData, 79); - ext_grs_edge_t *e_pos1_132_115 = ext_grs_act_add_edge(pattern, "pos1_132_115", 0, n_Arg_0_54, n_Vector_op, 80); - ext_grs_edge_t *e_pos1_89_116 = ext_grs_act_add_edge_to_keep(pattern, "pos1_89_116", 0, n_Arg_0_54, n_VProj1814_82, 11, e_pos1_89); - ext_grs_edge_t *e_pos1_87_117 = ext_grs_act_add_edge_to_keep(pattern, "pos1_87_117", 0, n_Proj1825_91, n_Cond1826_58, 13, e_pos1_87); - ext_grs_edge_t *e_e121_118 = ext_grs_act_add_edge_to_keep(pattern, "e121_118", ext_grs_NO_EDGE_POS, n_Proj2032_73, n_Block2006_61, 12, e_e121); - ext_grs_edge_t *e_pos0_113_119 = ext_grs_act_add_edge_to_keep(pattern, "pos0_113_119", -1, n_Vector_op_Block_85, n_Proj1828_96, 14, e_pos0_113); - ext_grs_edge_t *e_pos1_85_120 = ext_grs_act_add_edge_to_keep(pattern, "pos1_85_120", 0, n_Arg_1_55, n_VProj2137_50, 16, e_pos1_85); - ext_grs_edge_t *e_pos0_112_121 = ext_grs_act_add_edge_to_keep(pattern, "pos0_112_121", -1, n_Block5771_69, n_Jmp5772_65, 15, e_pos0_112); - ext_grs_edge_t *e_pos1_84_122 = ext_grs_act_add_edge_to_keep(pattern, "pos1_84_122", 0, n_Cond1920_59, n_Proj1922_45, 17, e_pos1_84); - ext_grs_edge_t *e_pos0_117_123 = ext_grs_act_add_edge_to_keep(pattern, "pos0_117_123", -1, n_Block2006_61, n_Jmp2084_86, 18, e_pos0_117); - ext_grs_edge_t *e_pos1_55_124 = ext_grs_act_add_edge_to_keep(pattern, "pos1_55_124", 0, n_Cond1920_59, n_Proj1921_44, 20, e_pos1_55); - ext_grs_edge_t *e_e111_125 = ext_grs_act_add_edge_to_keep(pattern, "e111_125", ext_grs_NO_EDGE_POS, n_Jmp2084_86, n_Block2008_60, 19, e_e111); - ext_grs_edge_t *e_e110_126 = ext_grs_act_add_edge_to_keep(pattern, "e110_126", ext_grs_NO_EDGE_POS, n_Jmp5770_56, n_Block2008_60, 21, e_e110); - ext_grs_edge_t *e_pos2_59_127 = ext_grs_act_add_edge_to_keep(pattern, "pos2_59_127", 1, n_VProj2128_62, n_Cmp5666_81, 22, e_pos2_59); - ext_grs_edge_t *e_pos1_56_128 = ext_grs_act_add_edge_to_keep(pattern, "pos1_56_128", 0, n_VProj1917_71, n_Cmp5664_78, 23, e_pos1_56); - ext_grs_edge_t *e_pos2_57_129 = ext_grs_act_add_edge_to_keep(pattern, "pos2_57_129", 1, n_VProj1908_90, n_Cmp5664_78, 24, e_pos2_57); - ext_grs_edge_t *e_pos0_97_130 = ext_grs_act_add_edge_to_keep(pattern, "pos0_97_130", -1, n_Block1804_93, n_Cond1920_59, 25, e_pos0_97); - ext_grs_edge_t *e_pos1_58_131 = ext_grs_act_add_edge_to_keep(pattern, "pos1_58_131", 0, n_VProj2137_50, n_Cmp5666_81, 26, e_pos1_58); - ext_grs_edge_t *e_pos0_99_132 = ext_grs_act_add_edge_to_keep(pattern, "pos0_99_132", -1, n_Block1802_95, n_Jmp1864_92, 27, e_pos0_99); - ext_grs_edge_t *e_pos0_94_133 = ext_grs_act_add_edge_to_keep(pattern, "pos0_94_133", -1, n_Block5769_84, n_Jmp5770_56, 29, e_pos0_94); - ext_grs_edge_t *e_e118_134 = ext_grs_act_add_edge_to_keep(pattern, "e118_134", ext_grs_NO_EDGE_POS, n_Block1898_83, n_VProj61_43, 30, e_e118); - ext_grs_edge_t *e_pos2_125_135 = ext_grs_act_add_edge_to_keep(pattern, "pos2_125_135", 1, n_VProj1814_82, n_Cmp5663_77, 31, e_pos2_125); - ext_grs_edge_t *e_pos2_127_136 = ext_grs_act_add_edge_to_keep(pattern, "pos2_127_136", 1, n_VProj2018_75, n_Cmp5665_79, 32, e_pos2_127); - ext_grs_edge_t *e_e60_137 = ext_grs_act_add_edge_to_keep(pattern, "e60_137", ext_grs_NO_EDGE_POS, n_Proj1827_94, n_Block5765_88, 33, e_e60); - ext_grs_edge_t *e_e65_138 = ext_grs_act_add_edge_to_keep(pattern, "e65_138", ext_grs_NO_EDGE_POS, n_Jmp5768_51, n_Block1898_83, 34, e_e65); - ext_grs_edge_t *e_e67_139 = ext_grs_act_add_edge_to_keep(pattern, "e67_139", ext_grs_NO_EDGE_POS, n_Block4800_67, n_VProj55_66, 37, e_e67); - ext_grs_edge_t *e_e66_140 = ext_grs_act_add_edge_to_keep(pattern, "e66_140", ext_grs_NO_EDGE_POS, n_Jmp1974_68, n_Block1898_83, 38, e_e66); - ext_grs_edge_t *e_e100_141 = ext_grs_act_add_edge_to_keep(pattern, "e100_141", ext_grs_NO_EDGE_POS, n_Block2008_60, n_VProj57_76, 41, e_e100); - ext_grs_edge_t *e_pos0_88_142 = ext_grs_act_add_edge_to_keep(pattern, "pos0_88_142", -1, n_Block2117_72, n_Jmp2160_57, 42, e_pos0_88); - ext_grs_edge_t *e_pos0_86_143 = ext_grs_act_add_edge_to_keep(pattern, "pos0_86_143", -1, n_Vector_op_Block_85, n_Cond1826_58, 43, e_pos0_86); - ext_grs_edge_t *e_e109_144 = ext_grs_act_add_edge_to_keep(pattern, "e109_144", ext_grs_NO_EDGE_POS, n_Proj1828_96, n_Block1802_95, 44, e_e109); - ext_grs_edge_t *e_pos0_82_145 = ext_grs_act_add_edge_to_keep(pattern, "pos0_82_145", -1, n_Block5767_89, n_Jmp5768_51, 45, e_pos0_82); - ext_grs_edge_t *e_pos1_64_146 = ext_grs_act_add_edge_to_keep(pattern, "pos1_64_146", 0, n_Arg_0_54, n_VProj2018_75, 46, e_pos1_64); - ext_grs_edge_t *e_pos1_63_147 = ext_grs_act_add_edge_to_keep(pattern, "pos1_63_147", 0, n_Proj2029_97, n_Cond2030_70, 48, e_pos1_63); - ext_grs_edge_t *e_e103_148 = ext_grs_act_add_edge_to_keep(pattern, "e103_148", ext_grs_NO_EDGE_POS, n_Block1804_93, n_VProj59_48, 50, e_e103); - ext_grs_edge_t *e_pos1_61_149 = ext_grs_act_add_edge_to_keep(pattern, "pos1_61_149", 0, n_Cond2030_70, n_Proj2032_73, 51, e_pos1_61); - ext_grs_edge_t *e_pos1_108_150 = ext_grs_act_add_edge_to_keep(pattern, "pos1_108_150", 0, n_Cmp5664_78, n_Proj1919_49, 52, e_pos1_108); - ext_grs_edge_t *e_pos2_131_151 = ext_grs_act_add_edge(pattern, "pos2_131_151", 1, n_Arg_1_55, n_Vector_op, 81); - ext_grs_edge_t *e_pos0_74_152 = ext_grs_act_add_edge_to_keep(pattern, "pos0_74_152", -1, n_Block2008_60, n_Cond2140_52, 53, e_pos0_74); - ext_grs_edge_t *e_pos0_71_153 = ext_grs_act_add_edge_to_keep(pattern, "pos0_71_153", -1, n_Block5765_88, n_Jmp5766_53, 54, e_pos0_71); - ext_grs_edge_t *e_pos0_76_154 = ext_grs_act_add_edge_to_keep(pattern, "pos0_76_154", -1, n_Block1896_80, n_Jmp1974_68, 55, e_pos0_76); - ext_grs_edge_t *e_pos1_106_155 = ext_grs_act_add_edge_to_keep(pattern, "pos1_106_155", 0, n_Arg_1_55, n_VProj1823_63, 56, e_pos1_106); - ext_grs_edge_t *e_pos1_107_156 = ext_grs_act_add_edge_to_keep(pattern, "pos1_107_156", 0, n_Cond2140_52, n_Proj2141_46, 57, e_pos1_107); - ext_grs_edge_t *e_pos0_62_157 = ext_grs_act_add_edge_to_keep(pattern, "pos0_62_157", -1, n_Block1898_83, n_Cond2030_70, 58, e_pos0_62); - ext_grs_edge_t *e_pos1_92_158 = ext_grs_act_add_edge_to_keep(pattern, "pos1_92_158", 0, n_Cmp5663_77, n_Proj1825_91, 59, e_pos1_92); - ext_grs_edge_t *e_e96_159 = ext_grs_act_add_edge_to_keep(pattern, "e96_159", ext_grs_NO_EDGE_POS, n_Proj2142_47, n_Block5771_69, 60, e_e96); - ext_grs_edge_t *e_pos1_95_160 = ext_grs_act_add_edge_to_keep(pattern, "pos1_95_160", 0, n_Cond1826_58, n_Proj1827_94, 61, e_pos1_95); - ext_grs_edge_t *e_pos1_98_161 = ext_grs_act_add_edge_to_keep(pattern, "pos1_98_161", 0, n_Proj1919_49, n_Cond1920_59, 63, e_pos1_98); - ext_grs_edge_t *e_pos1_126_162 = ext_grs_act_add_edge_to_keep(pattern, "pos1_126_162", 0, n_VProj2027_64, n_Cmp5665_79, 62, e_pos1_126); - ext_grs_edge_t *e_e90_163 = ext_grs_act_add_edge_to_keep(pattern, "e90_163", ext_grs_NO_EDGE_POS, n_Jmp5766_53, n_Block1804_93, 64, e_e90); - ext_grs_edge_t *e_e93_164 = ext_grs_act_add_edge_to_keep(pattern, "e93_164", ext_grs_NO_EDGE_POS, n_Proj2141_46, n_Block2117_72, 66, e_e93); - ext_grs_edge_t *e_pos1_122_165 = ext_grs_act_add_edge_to_keep(pattern, "pos1_122_165", 0, n_Cond2140_52, n_Proj2142_47, 65, e_pos1_122); - ext_grs_edge_t *e_pos1_123_166 = ext_grs_act_add_edge_to_keep(pattern, "pos1_123_166", 0, n_Arg_0_54, n_VProj1908_90, 67, e_pos1_123); - ext_grs_edge_t *e_e91_167 = ext_grs_act_add_edge_to_keep(pattern, "e91_167", ext_grs_NO_EDGE_POS, n_Jmp1864_92, n_Block1804_93, 69, e_e91); - ext_grs_edge_t *e_pos1_124_168 = ext_grs_act_add_edge_to_keep(pattern, "pos1_124_168", 0, n_VProj1823_63, n_Cmp5663_77, 68, e_pos1_124); - ext_grs_edge_t *e_pos1_115_169 = ext_grs_act_add_edge_to_keep(pattern, "pos1_115_169", 0, n_Arg_1_55, n_VProj1917_71, 70, e_pos1_115); - ext_grs_edge_t *e_pos1_116_170 = ext_grs_act_add_edge_to_keep(pattern, "pos1_116_170", 0, n_Arg_0_54, n_VProj2128_62, 71, e_pos1_116); - ext_grs_edge_t *e_pos1_114_171 = ext_grs_act_add_edge_to_keep(pattern, "pos1_114_171", 0, n_Cond1826_58, n_Proj1828_96, 72, e_pos1_114); - - } /* The replacement */ - - /* Eval functions */ - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_39651); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_39654); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_39657); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_39660); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_39663); - } /* The Action */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* maxps_variant0 */ - - -/* functions for evaluation of conditions of action mulps_4_32_am_variant0 */ -static int grs_cond_func_37166(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[19/* Proj1411 */]) == 0; -} -static int grs_cond_func_37169(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[21/* Proj1459 */]) == 0; -} -static int grs_cond_func_37172(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[20/* Const1374 */])) == 4; -} -static int grs_cond_func_37175(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[17/* Proj1436 */]) == 3; -} -static int grs_cond_func_37178(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[8/* Proj1388 */]) == 3; -} -static int grs_cond_func_37181(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[1/* VProj1380 */]) == 0; -} -static int grs_cond_func_37184(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[12/* VProj1428 */]) == 2; -} -static int grs_cond_func_37187(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[22/* MultipleAdd5752 */]) == 2; -} -static int grs_cond_func_37190(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[5/* Const1424 */])) == 8; -} -static int grs_cond_func_37193(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[2/* Proj1387 */]) == 0; -} -static int grs_cond_func_37196(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[11/* Proj1435 */]) == 0; -} -static int grs_cond_func_37199(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[16/* MultipleAdd5753 */]) == 2; -} -static int grs_cond_func_37202(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[15/* Proj1412 */]) == 3; -} -static int grs_cond_func_37205(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[3/* Proj1460 */]) == 3; -} -static int grs_cond_func_37208(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[29/* VProj1452 */]) == 3; -} -static int grs_cond_func_37211(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[14/* MultipleAdd5754 */]) == 2; -} -static int grs_cond_func_37214(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[18/* MultipleAdd5755 */]) == 2; -} -static int grs_cond_func_37217(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[24/* VProj1404 */]) == 1; -} -static int grs_cond_func_37220(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[4/* Const1448 */])) == 12; -} - -static void *grs_eval_out_func_37390(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { - set_Proj_proj(rpl_node_map[31/* Vector_op_ProjData */], 0); - return(NULL); -} -static void *grs_eval_out_func_37393(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { - set_Proj_proj(rpl_node_map[30/* Vector_op_ProjM */], 1); - return(NULL); -} -static void *grs_eval_out_func_37396(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[32/* VProj30 */], 0); - return(NULL); -} -static void *grs_eval_out_func_37399(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[33/* VProj32 */], 3); - return(NULL); -} -static void *grs_eval_out_func_37402(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[34/* VProj34 */], 2); - return(NULL); -} -static void *grs_eval_out_func_37405(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[36/* VProj36 */], 1); - return(NULL); -} -/* functions for building the pattern of action mulps_4_32_am_variant0 */ -static _inline ext_grs_action_t *grs_action_mulps_4_32_am_variant0_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_rule, "mulps_4_32_am_variant0"); - int check; - { /* The action */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - ext_grs_node_t *n_Load1458 = ext_grs_act_add_node(pattern, "Load1458", grs_op_Load, mode_T, 0); - ext_grs_node_t *n_VProj1380 = ext_grs_act_add_node(pattern, "VProj1380", grs_op_VProj, mode_F, 1); - ext_grs_node_t *n_Proj1387 = ext_grs_act_add_node(pattern, "Proj1387", grs_op_Proj, mode_M, 2); - ext_grs_node_t *n_Proj1460 = ext_grs_act_add_node(pattern, "Proj1460", grs_op_Proj, mode_F, 3); - ext_grs_node_t *n_Const1448 = ext_grs_act_add_node(pattern, "Const1448", grs_op_Const, mode_Is, 4); - ext_grs_node_t *n_Const1424 = ext_grs_act_add_node(pattern, "Const1424", grs_op_Const, mode_Is, 5); - ext_grs_node_t *n_Load1434 = ext_grs_act_add_node(pattern, "Load1434", grs_op_Load, mode_T, 6); - ext_grs_node_t *n_Load1410 = ext_grs_act_add_node(pattern, "Load1410", grs_op_Load, mode_T, 7); - ext_grs_node_t *n_Proj1388 = ext_grs_act_add_node(pattern, "Proj1388", grs_op_Proj, mode_F, 8); - ext_grs_node_t *n_Arg_0 = ext_grs_act_add_node(pattern, "Arg_0", grs_op_VectorBase, mode_ANY, 9); - ext_grs_node_t *n_Arg_1 = ext_grs_act_add_node(pattern, "Arg_1", grs_op_VectorBase, mode_ANY, 10); - ext_grs_node_t *n_Proj1435 = ext_grs_act_add_node(pattern, "Proj1435", grs_op_Proj, mode_M, 11); - ext_grs_node_t *n_VProj1428 = ext_grs_act_add_node(pattern, "VProj1428", grs_op_VProj, mode_F, 12); - ext_grs_node_t *n_Vector_op_Block = ext_grs_act_add_node(pattern, "Vector_op_Block", grs_op_Block, mode_BB, 13); - ext_grs_node_t *n_MultipleAdd5754 = ext_grs_act_add_node(pattern, "MultipleAdd5754", grs_op_MultipleAdd, mode_P, 14); - ext_grs_node_t *n_Proj1412 = ext_grs_act_add_node(pattern, "Proj1412", grs_op_Proj, mode_F, 15); - ext_grs_node_t *n_MultipleAdd5753 = ext_grs_act_add_node(pattern, "MultipleAdd5753", grs_op_MultipleAdd, mode_P, 16); - ext_grs_node_t *n_Proj1436 = ext_grs_act_add_node(pattern, "Proj1436", grs_op_Proj, mode_F, 17); - ext_grs_node_t *n_MultipleAdd5755 = ext_grs_act_add_node(pattern, "MultipleAdd5755", grs_op_MultipleAdd, mode_P, 18); - ext_grs_node_t *n_Proj1411 = ext_grs_act_add_node(pattern, "Proj1411", grs_op_Proj, mode_M, 19); - ext_grs_node_t *n_Const1374 = ext_grs_act_add_node(pattern, "Const1374", grs_op_Const, mode_Is, 20); - ext_grs_node_t *n_Proj1459 = ext_grs_act_add_node(pattern, "Proj1459", grs_op_Proj, mode_M, 21); - ext_grs_node_t *n_MultipleAdd5752 = ext_grs_act_add_node(pattern, "MultipleAdd5752", grs_op_MultipleAdd, mode_P, 22); - ext_grs_node_t *n_Vector_Result0_Mul1389 = ext_grs_act_add_node(pattern, "Vector_Result0_Mul1389", grs_op_Mul, mode_F, 23); - ext_grs_node_t *n_VProj1404 = ext_grs_act_add_node(pattern, "VProj1404", grs_op_VProj, mode_F, 24); - ext_grs_node_t *n_Load1386 = ext_grs_act_add_node(pattern, "Load1386", grs_op_Load, mode_T, 25); - ext_grs_node_t *n_Vector_Result3_Mul1461 = ext_grs_act_add_node(pattern, "Vector_Result3_Mul1461", grs_op_Mul, mode_F, 26); - ext_grs_node_t *n_Vector_Result2_Mul1437 = ext_grs_act_add_node(pattern, "Vector_Result2_Mul1437", grs_op_Mul, mode_F, 27); - ext_grs_node_t *n_Vector_Result1_Mul1413 = ext_grs_act_add_node(pattern, "Vector_Result1_Mul1413", grs_op_Mul, mode_F, 28); - ext_grs_node_t *n_VProj1452 = ext_grs_act_add_node(pattern, "VProj1452", grs_op_VProj, mode_F, 29); - - /* The edges of the pattern */ - ext_grs_edge_t *e_pos1_30 = ext_grs_act_add_edge(pattern, "pos1_30", 0, n_Load1410, n_Proj1411, 0); - ext_grs_edge_t *e_pos1_31 = ext_grs_act_add_edge(pattern, "pos1_31", 0, n_Load1458, n_Proj1459, 1); - ext_grs_edge_t *e_e36 = ext_grs_act_add_edge(pattern, "e36", ext_grs_NO_EDGE_POS, n_Proj1388, n_Vector_Result0_Mul1389, 2); - ext_grs_edge_t *e_pos0_35 = ext_grs_act_add_edge(pattern, "pos0_35", -1, n_Vector_op_Block, n_Vector_Result0_Mul1389, 3); - ext_grs_edge_t *e_pos1_39 = ext_grs_act_add_edge(pattern, "pos1_39", 0, n_Arg_0, n_VProj1380, 4); - ext_grs_edge_t *e_pos1_32 = ext_grs_act_add_edge(pattern, "pos1_32", 0, n_Load1434, n_Proj1436, 5); - ext_grs_edge_t *e_pos1_33 = ext_grs_act_add_edge(pattern, "pos1_33", 0, n_Load1386, n_Proj1388, 6); - ext_grs_edge_t *e_pos2_34 = ext_grs_act_add_edge(pattern, "pos2_34", 1, n_MultipleAdd5752, n_Load1386, 7); - ext_grs_edge_t *e_pos2_38 = ext_grs_act_add_edge(pattern, "pos2_38", 1, n_MultipleAdd5754, n_Load1434, 8); - ext_grs_edge_t *e_e37 = ext_grs_act_add_edge(pattern, "e37", ext_grs_NO_EDGE_POS, n_VProj1380, n_Vector_Result0_Mul1389, 9); - ext_grs_edge_t *e_e46 = ext_grs_act_add_edge(pattern, "e46", ext_grs_NO_EDGE_POS, n_VProj1452, n_Vector_Result3_Mul1461, 10); - ext_grs_edge_t *e_pos1_40 = ext_grs_act_add_edge(pattern, "pos1_40", 0, n_Arg_0, n_VProj1428, 11); - ext_grs_edge_t *e_e47 = ext_grs_act_add_edge(pattern, "e47", ext_grs_NO_EDGE_POS, n_Const1374, n_MultipleAdd5753, 12); - ext_grs_edge_t *e_pos1_42 = ext_grs_act_add_edge(pattern, "pos1_42", 0, n_Load1386, n_Proj1387, 13); - ext_grs_edge_t *e_e45 = ext_grs_act_add_edge(pattern, "e45", ext_grs_NO_EDGE_POS, n_Proj1460, n_Vector_Result3_Mul1461, 14); - ext_grs_edge_t *e_pos0_61 = ext_grs_act_add_edge(pattern, "pos0_61", -1, n_Vector_op_Block, n_Vector_Result1_Mul1413, 15); - ext_grs_edge_t *e_e41 = ext_grs_act_add_edge(pattern, "e41", ext_grs_NO_EDGE_POS, n_Arg_1, n_MultipleAdd5752, 16); - ext_grs_edge_t *e_pos1_43 = ext_grs_act_add_edge(pattern, "pos1_43", 0, n_Load1434, n_Proj1435, 17); - ext_grs_edge_t *e_e48 = ext_grs_act_add_edge(pattern, "e48", ext_grs_NO_EDGE_POS, n_Arg_1, n_MultipleAdd5753, 18); - ext_grs_edge_t *e_e50 = ext_grs_act_add_edge(pattern, "e50", ext_grs_NO_EDGE_POS, n_Proj1436, n_Vector_Result2_Mul1437, 19); - ext_grs_edge_t *e_e51 = ext_grs_act_add_edge(pattern, "e51", ext_grs_NO_EDGE_POS, n_VProj1428, n_Vector_Result2_Mul1437, 20); - ext_grs_edge_t *e_e56 = ext_grs_act_add_edge(pattern, "e56", ext_grs_NO_EDGE_POS, n_Arg_1, n_MultipleAdd5754, 21); - ext_grs_edge_t *e_e55 = ext_grs_act_add_edge(pattern, "e55", ext_grs_NO_EDGE_POS, n_Const1424, n_MultipleAdd5754, 22); - ext_grs_edge_t *e_e59 = ext_grs_act_add_edge(pattern, "e59", ext_grs_NO_EDGE_POS, n_Const1448, n_MultipleAdd5755, 23); - ext_grs_edge_t *e_pos1_54 = ext_grs_act_add_edge(pattern, "pos1_54", 0, n_Arg_0, n_VProj1452, 24); - ext_grs_edge_t *e_pos2_57 = ext_grs_act_add_edge(pattern, "pos2_57", 1, n_MultipleAdd5753, n_Load1410, 25); - ext_grs_edge_t *e_pos2_58 = ext_grs_act_add_edge(pattern, "pos2_58", 1, n_MultipleAdd5755, n_Load1458, 26); - ext_grs_edge_t *e_pos1_53 = ext_grs_act_add_edge(pattern, "pos1_53", 0, n_Load1458, n_Proj1460, 27); - ext_grs_edge_t *e_pos1_52 = ext_grs_act_add_edge(pattern, "pos1_52", 0, n_Load1410, n_Proj1412, 28); - ext_grs_edge_t *e_e60 = ext_grs_act_add_edge(pattern, "e60", ext_grs_NO_EDGE_POS, n_Arg_1, n_MultipleAdd5755, 29); - ext_grs_edge_t *e_e63 = ext_grs_act_add_edge(pattern, "e63", ext_grs_NO_EDGE_POS, n_VProj1404, n_Vector_Result1_Mul1413, 30); - ext_grs_edge_t *e_e62 = ext_grs_act_add_edge(pattern, "e62", ext_grs_NO_EDGE_POS, n_Proj1412, n_Vector_Result1_Mul1413, 31); - ext_grs_edge_t *e_pos0_49 = ext_grs_act_add_edge(pattern, "pos0_49", -1, n_Vector_op_Block, n_Vector_Result2_Mul1437, 32); - ext_grs_edge_t *e_pos0_44 = ext_grs_act_add_edge(pattern, "pos0_44", -1, n_Vector_op_Block, n_Vector_Result3_Mul1461, 33); - ext_grs_edge_t *e_pos1_64 = ext_grs_act_add_edge(pattern, "pos1_64", 0, n_Arg_0, n_VProj1404, 34); - - /* The conditions of the pattern */ - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj1411}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37166, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj1459}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37169, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const1374}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37172, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj1436}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37175, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj1388}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37178, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj1380}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37181, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj1428}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37184, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5752}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37187, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const1424}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37190, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj1387}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37193, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj1435}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37196, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5753}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37199, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj1412}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37202, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj1460}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37205, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj1452}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37208, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5754}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37211, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5755}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37214, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj1404}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37217, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const1448}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37220, pattern, 1, nodes, 0, edges); - } /* if */ - - /* The negative parts of the pattern */ - - - { /* The replacement */ - ext_grs_graph_t *pattern = ext_grs_act_get_replacement(act); - - /* The nodes of the pattern */ - ext_grs_node_t *n_Load1458_172 = ext_grs_act_add_node_to_keep(pattern, "Load1458_172", grs_op_Load, mode_T, 0, n_Load1458); - ext_grs_node_t *n_VProj1380_173 = ext_grs_act_add_node_to_keep(pattern, "VProj1380_173", grs_op_VProj, mode_F, 1, n_VProj1380); - ext_grs_node_t *n_Proj1387_174 = ext_grs_act_add_node_to_keep(pattern, "Proj1387_174", grs_op_Proj, mode_M, 2, n_Proj1387); - ext_grs_node_t *n_Proj1460_175 = ext_grs_act_add_node_to_keep(pattern, "Proj1460_175", grs_op_Proj, mode_F, 3, n_Proj1460); - ext_grs_node_t *n_Const1448_176 = ext_grs_act_add_node_to_keep(pattern, "Const1448_176", grs_op_Const, mode_Is, 4, n_Const1448); - ext_grs_node_t *n_Const1424_177 = ext_grs_act_add_node_to_keep(pattern, "Const1424_177", grs_op_Const, mode_Is, 5, n_Const1424); - ext_grs_node_t *n_Vector_op_ProjM = ext_grs_act_add_node(pattern, "Vector_op_ProjM", grs_op_Proj, mode_M, 30); - ext_grs_node_t *n_Vector_op_ProjData = ext_grs_act_add_node(pattern, "Vector_op_ProjData", grs_op_Proj, mode_LLu, 31); - ext_grs_node_t *n_Load1434_178 = ext_grs_act_add_node_to_keep(pattern, "Load1434_178", grs_op_Load, mode_T, 6, n_Load1434); - ext_grs_node_t *n_Load1410_179 = ext_grs_act_add_node_to_keep(pattern, "Load1410_179", grs_op_Load, mode_T, 7, n_Load1410); - ext_grs_node_t *n_Proj1388_180 = ext_grs_act_add_node_to_keep(pattern, "Proj1388_180", grs_op_Proj, mode_F, 8, n_Proj1388); - ext_grs_node_t *n_Arg_0_181 = ext_grs_act_add_node_to_keep(pattern, "Arg_0_181", grs_op_VectorBase, mode_ANY, 9, n_Arg_0); - ext_grs_node_t *n_Proj1435_182 = ext_grs_act_add_node_to_keep(pattern, "Proj1435_182", grs_op_Proj, mode_M, 11, n_Proj1435); - ext_grs_node_t *n_Arg_1_183 = ext_grs_act_add_node_to_keep(pattern, "Arg_1_183", grs_op_VectorBase, mode_ANY, 10, n_Arg_1); - ext_grs_node_t *n_VProj1428_184 = ext_grs_act_add_node_to_keep(pattern, "VProj1428_184", grs_op_VProj, mode_F, 12, n_VProj1428); - ext_grs_node_t *n_Vector_op_Block_185 = ext_grs_act_add_node_to_keep(pattern, "Vector_op_Block_185", grs_op_Block, mode_BB, 13, n_Vector_op_Block); - ext_grs_node_t *n_Proj1412_186 = ext_grs_act_add_node_to_keep(pattern, "Proj1412_186", grs_op_Proj, mode_F, 15, n_Proj1412); - ext_grs_node_t *n_MultipleAdd5754_187 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5754_187", grs_op_MultipleAdd, mode_P, 14, n_MultipleAdd5754); - ext_grs_node_t *n_MultipleAdd5753_188 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5753_188", grs_op_MultipleAdd, mode_P, 16, n_MultipleAdd5753); - ext_grs_node_t *n_Proj1436_189 = ext_grs_act_add_node_to_keep(pattern, "Proj1436_189", grs_op_Proj, mode_F, 17, n_Proj1436); - ext_grs_node_t *n_Proj1411_190 = ext_grs_act_add_node_to_keep(pattern, "Proj1411_190", grs_op_Proj, mode_M, 19, n_Proj1411); - ext_grs_node_t *n_MultipleAdd5755_191 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5755_191", grs_op_MultipleAdd, mode_P, 18, n_MultipleAdd5755); - ext_grs_node_t *n_Const1374_192 = ext_grs_act_add_node_to_keep(pattern, "Const1374_192", grs_op_Const, mode_Is, 20, n_Const1374); - ext_grs_node_t *n_Proj1459_193 = ext_grs_act_add_node_to_keep(pattern, "Proj1459_193", grs_op_Proj, mode_M, 21, n_Proj1459); - ext_grs_node_t *n_MultipleAdd5752_194 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5752_194", grs_op_MultipleAdd, mode_P, 22, n_MultipleAdd5752); - ext_grs_node_t *n_VProj30_195 = ext_grs_act_add_node_to_keep(pattern, "VProj30_195", grs_op_VProj, mode_F, 32, n_Vector_Result0_Mul1389); - ext_grs_node_t *n_Load1386_196 = ext_grs_act_add_node_to_keep(pattern, "Load1386_196", grs_op_Load, mode_T, 25, n_Load1386); - ext_grs_node_t *n_VProj1404_197 = ext_grs_act_add_node_to_keep(pattern, "VProj1404_197", grs_op_VProj, mode_F, 24, n_VProj1404); - ext_grs_node_t *n_VProj32_198 = ext_grs_act_add_node_to_keep(pattern, "VProj32_198", grs_op_VProj, mode_F, 33, n_Vector_Result3_Mul1461); - ext_grs_node_t *n_VProj34_199 = ext_grs_act_add_node_to_keep(pattern, "VProj34_199", grs_op_VProj, mode_F, 34, n_Vector_Result2_Mul1437); - ext_grs_node_t *n_Bad30 = ext_grs_act_add_node(pattern, "Bad30", grs_op_Bad, mode_ANY, 35); - ext_grs_node_t *n_VProj36_200 = ext_grs_act_add_node_to_keep(pattern, "VProj36_200", grs_op_VProj, mode_F, 36, n_Vector_Result1_Mul1413); - ext_grs_node_t *n_VProj1452_201 = ext_grs_act_add_node_to_keep(pattern, "VProj1452_201", grs_op_VProj, mode_F, 29, n_VProj1452); - ext_grs_node_t *n_Vector_op = ext_grs_act_add_node(pattern, "Vector_op", grs_op_Complex, mode_T, 37); - - /* The edges of the pattern */ - ext_grs_edge_t *e_pos1_30_202 = ext_grs_act_add_edge_to_keep(pattern, "pos1_30_202", 0, n_Load1410_179, n_Proj1411_190, 0, e_pos1_30); - ext_grs_edge_t *e_pos1_31_203 = ext_grs_act_add_edge_to_keep(pattern, "pos1_31_203", 0, n_Load1458_172, n_Proj1459_193, 1, e_pos1_31); - ext_grs_edge_t *e_pos0_35_204 = ext_grs_act_add_edge_to_keep(pattern, "pos0_35_204", -1, n_Vector_op_Block_185, n_VProj30_195, 3, e_pos0_35); - ext_grs_edge_t *e_pos0_72_205 = ext_grs_act_add_edge(pattern, "pos0_72_205", -1, n_Vector_op_Block_185, n_Vector_op_ProjM, 35); - ext_grs_edge_t *e_pos1_39_206 = ext_grs_act_add_edge_to_keep(pattern, "pos1_39_206", 0, n_Arg_0_181, n_VProj1380_173, 4, e_pos1_39); - ext_grs_edge_t *e_pos1_32_207 = ext_grs_act_add_edge_to_keep(pattern, "pos1_32_207", 0, n_Load1434_178, n_Proj1436_189, 5, e_pos1_32); - ext_grs_edge_t *e_pos1_33_208 = ext_grs_act_add_edge_to_keep(pattern, "pos1_33_208", 0, n_Load1386_196, n_Proj1388_180, 6, e_pos1_33); - ext_grs_edge_t *e_pos2_34_209 = ext_grs_act_add_edge_to_keep(pattern, "pos2_34_209", 1, n_MultipleAdd5752_194, n_Load1386_196, 7, e_pos2_34); - ext_grs_edge_t *e_pos1_76_210 = ext_grs_act_add_edge(pattern, "pos1_76_210", 0, n_Vector_op_ProjData, n_VProj36_200, 36); - ext_grs_edge_t *e_pos2_38_211 = ext_grs_act_add_edge_to_keep(pattern, "pos2_38_211", 1, n_MultipleAdd5754_187, n_Load1434_178, 8, e_pos2_38); - ext_grs_edge_t *e_pos1_73_212 = ext_grs_act_add_edge(pattern, "pos1_73_212", 0, n_Vector_op_ProjData, n_VProj30_195, 37); - ext_grs_edge_t *e_pos1_75_213 = ext_grs_act_add_edge(pattern, "pos1_75_213", 0, n_Vector_op_ProjData, n_VProj34_199, 38); - ext_grs_edge_t *e_pos1_74_214 = ext_grs_act_add_edge(pattern, "pos1_74_214", 0, n_Vector_op_ProjData, n_VProj32_198, 39); - ext_grs_edge_t *e_pos1_71_215 = ext_grs_act_add_edge(pattern, "pos1_71_215", 0, n_Vector_op, n_Vector_op_ProjM, 40); - ext_grs_edge_t *e_pos1_40_216 = ext_grs_act_add_edge_to_keep(pattern, "pos1_40_216", 0, n_Arg_0_181, n_VProj1428_184, 11, e_pos1_40); - ext_grs_edge_t *e_e47_217 = ext_grs_act_add_edge_to_keep(pattern, "e47_217", ext_grs_NO_EDGE_POS, n_Const1374_192, n_MultipleAdd5753_188, 12, e_e47); - ext_grs_edge_t *e_pos1_42_218 = ext_grs_act_add_edge_to_keep(pattern, "pos1_42_218", 0, n_Load1386_196, n_Proj1387_174, 13, e_pos1_42); - ext_grs_edge_t *e_pos3_70_219 = ext_grs_act_add_edge(pattern, "pos3_70_219", 2, n_Bad30, n_Vector_op, 41); - ext_grs_edge_t *e_pos0_61_220 = ext_grs_act_add_edge_to_keep(pattern, "pos0_61_220", -1, n_Vector_op_Block_185, n_VProj36_200, 15, e_pos0_61); - ext_grs_edge_t *e_e41_221 = ext_grs_act_add_edge_to_keep(pattern, "e41_221", ext_grs_NO_EDGE_POS, n_Arg_1_183, n_MultipleAdd5752_194, 16, e_e41); - ext_grs_edge_t *e_pos0_65_222 = ext_grs_act_add_edge(pattern, "pos0_65_222", -1, n_Vector_op_Block_185, n_Vector_op, 42); - ext_grs_edge_t *e_pos0_66_223 = ext_grs_act_add_edge(pattern, "pos0_66_223", -1, n_Vector_op_Block_185, n_Vector_op_ProjData, 43); - ext_grs_edge_t *e_pos1_43_224 = ext_grs_act_add_edge_to_keep(pattern, "pos1_43_224", 0, n_Load1434_178, n_Proj1435_182, 17, e_pos1_43); - ext_grs_edge_t *e_pos2_68_225 = ext_grs_act_add_edge(pattern, "pos2_68_225", 1, n_MultipleAdd5752_194, n_Vector_op, 44); - ext_grs_edge_t *e_e48_226 = ext_grs_act_add_edge_to_keep(pattern, "e48_226", ext_grs_NO_EDGE_POS, n_Arg_1_183, n_MultipleAdd5753_188, 18, e_e48); - ext_grs_edge_t *e_e56_227 = ext_grs_act_add_edge_to_keep(pattern, "e56_227", ext_grs_NO_EDGE_POS, n_Arg_1_183, n_MultipleAdd5754_187, 21, e_e56); - ext_grs_edge_t *e_e55_228 = ext_grs_act_add_edge_to_keep(pattern, "e55_228", ext_grs_NO_EDGE_POS, n_Const1424_177, n_MultipleAdd5754_187, 22, e_e55); - ext_grs_edge_t *e_e59_229 = ext_grs_act_add_edge_to_keep(pattern, "e59_229", ext_grs_NO_EDGE_POS, n_Const1448_176, n_MultipleAdd5755_191, 23, e_e59); - ext_grs_edge_t *e_pos1_54_230 = ext_grs_act_add_edge_to_keep(pattern, "pos1_54_230", 0, n_Arg_0_181, n_VProj1452_201, 24, e_pos1_54); - ext_grs_edge_t *e_pos2_57_231 = ext_grs_act_add_edge_to_keep(pattern, "pos2_57_231", 1, n_MultipleAdd5753_188, n_Load1410_179, 25, e_pos2_57); - ext_grs_edge_t *e_pos2_58_232 = ext_grs_act_add_edge_to_keep(pattern, "pos2_58_232", 1, n_MultipleAdd5755_191, n_Load1458_172, 26, e_pos2_58); - ext_grs_edge_t *e_pos1_53_233 = ext_grs_act_add_edge_to_keep(pattern, "pos1_53_233", 0, n_Load1458_172, n_Proj1460_175, 27, e_pos1_53); - ext_grs_edge_t *e_pos1_52_234 = ext_grs_act_add_edge_to_keep(pattern, "pos1_52_234", 0, n_Load1410_179, n_Proj1412_186, 28, e_pos1_52); - ext_grs_edge_t *e_e60_235 = ext_grs_act_add_edge_to_keep(pattern, "e60_235", ext_grs_NO_EDGE_POS, n_Arg_1_183, n_MultipleAdd5755_191, 29, e_e60); - ext_grs_edge_t *e_pos0_49_236 = ext_grs_act_add_edge_to_keep(pattern, "pos0_49_236", -1, n_Vector_op_Block_185, n_VProj34_199, 32, e_pos0_49); - ext_grs_edge_t *e_pos0_44_237 = ext_grs_act_add_edge_to_keep(pattern, "pos0_44_237", -1, n_Vector_op_Block_185, n_VProj32_198, 33, e_pos0_44); - ext_grs_edge_t *e_pos1_67_238 = ext_grs_act_add_edge(pattern, "pos1_67_238", 0, n_Vector_op, n_Vector_op_ProjData, 45); - ext_grs_edge_t *e_pos1_69_239 = ext_grs_act_add_edge(pattern, "pos1_69_239", 0, n_Arg_0_181, n_Vector_op, 46); - ext_grs_edge_t *e_pos1_64_240 = ext_grs_act_add_edge_to_keep(pattern, "pos1_64_240", 0, n_Arg_0_181, n_VProj1404_197, 34, e_pos1_64); - - } /* The replacement */ - - /* Eval functions */ - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_37390); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_37393); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_37396); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_37399); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_37402); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_37405); - } /* The Action */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* mulps_4_32_am_variant0 */ - - -/* functions for evaluation of conditions of action mulps_4_32_am_variant1 */ -static int grs_cond_func_37731(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[19/* Proj1411 */]) == 0; -} -static int grs_cond_func_37734(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[21/* Proj1459 */]) == 0; -} -static int grs_cond_func_37737(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[20/* Const1374 */])) == 4; -} -static int grs_cond_func_37740(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[17/* Proj1436 */]) == 3; -} -static int grs_cond_func_37743(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[8/* Proj1388 */]) == 3; -} -static int grs_cond_func_37746(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[1/* VProj1380 */]) == 0; -} -static int grs_cond_func_37749(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[12/* VProj1428 */]) == 2; -} -static int grs_cond_func_37752(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[22/* MultipleAdd5752 */]) == 3; -} -static int grs_cond_func_37755(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[5/* Const1424 */])) == 8; -} -static int grs_cond_func_37758(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[2/* Proj1387 */]) == 0; -} -static int grs_cond_func_37761(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[11/* Proj1435 */]) == 0; -} -static int grs_cond_func_37764(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[16/* MultipleAdd5753 */]) == 3; -} -static int grs_cond_func_37767(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[15/* Proj1412 */]) == 3; -} -static int grs_cond_func_37770(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[3/* Proj1460 */]) == 3; -} -static int grs_cond_func_37773(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[30/* VProj1452 */]) == 3; -} -static int grs_cond_func_37776(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[14/* MultipleAdd5754 */]) == 3; -} -static int grs_cond_func_37779(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[18/* MultipleAdd5755 */]) == 3; -} -static int grs_cond_func_37782(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[24/* VProj1404 */]) == 1; -} -static int grs_cond_func_37785(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[4/* Const1448 */])) == 12; -} - -static void *grs_eval_out_func_37961(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { - set_Proj_proj(rpl_node_map[32/* Vector_op_ProjData */], 0); - return(NULL); -} -static void *grs_eval_out_func_37964(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { - set_Proj_proj(rpl_node_map[31/* Vector_op_ProjM */], 1); - return(NULL); -} -static void *grs_eval_out_func_37967(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[33/* VProj31 */], 0); - return(NULL); -} -static void *grs_eval_out_func_37970(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[34/* VProj33 */], 3); - return(NULL); -} -static void *grs_eval_out_func_37973(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[35/* VProj35 */], 2); - return(NULL); -} -static void *grs_eval_out_func_37976(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[37/* VProj37 */], 1); - return(NULL); -} -/* functions for building the pattern of action mulps_4_32_am_variant1 */ -static _inline ext_grs_action_t *grs_action_mulps_4_32_am_variant1_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_rule, "mulps_4_32_am_variant1"); - int check; - { /* The action */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - ext_grs_node_t *n_Load1458 = ext_grs_act_add_node(pattern, "Load1458", grs_op_Load, mode_T, 0); - ext_grs_node_t *n_VProj1380 = ext_grs_act_add_node(pattern, "VProj1380", grs_op_VProj, mode_F, 1); - ext_grs_node_t *n_Proj1387 = ext_grs_act_add_node(pattern, "Proj1387", grs_op_Proj, mode_M, 2); - ext_grs_node_t *n_Proj1460 = ext_grs_act_add_node(pattern, "Proj1460", grs_op_Proj, mode_F, 3); - ext_grs_node_t *n_Const1448 = ext_grs_act_add_node(pattern, "Const1448", grs_op_Const, mode_Is, 4); - ext_grs_node_t *n_Const1424 = ext_grs_act_add_node(pattern, "Const1424", grs_op_Const, mode_Is, 5); - ext_grs_node_t *n_Load1434 = ext_grs_act_add_node(pattern, "Load1434", grs_op_Load, mode_T, 6); - ext_grs_node_t *n_Load1410 = ext_grs_act_add_node(pattern, "Load1410", grs_op_Load, mode_T, 7); - ext_grs_node_t *n_Proj1388 = ext_grs_act_add_node(pattern, "Proj1388", grs_op_Proj, mode_F, 8); - ext_grs_node_t *n_Arg_0 = ext_grs_act_add_node(pattern, "Arg_0", grs_op_VectorBase, mode_ANY, 9); - ext_grs_node_t *n_Arg_1 = ext_grs_act_add_node(pattern, "Arg_1", grs_op_VectorBase, mode_ANY, 10); - ext_grs_node_t *n_Proj1435 = ext_grs_act_add_node(pattern, "Proj1435", grs_op_Proj, mode_M, 11); - ext_grs_node_t *n_VProj1428 = ext_grs_act_add_node(pattern, "VProj1428", grs_op_VProj, mode_F, 12); - ext_grs_node_t *n_Vector_op_Block = ext_grs_act_add_node(pattern, "Vector_op_Block", grs_op_Block, mode_BB, 13); - ext_grs_node_t *n_MultipleAdd5754 = ext_grs_act_add_node(pattern, "MultipleAdd5754", grs_op_MultipleAdd, mode_P, 14); - ext_grs_node_t *n_Proj1412 = ext_grs_act_add_node(pattern, "Proj1412", grs_op_Proj, mode_F, 15); - ext_grs_node_t *n_MultipleAdd5753 = ext_grs_act_add_node(pattern, "MultipleAdd5753", grs_op_MultipleAdd, mode_P, 16); - ext_grs_node_t *n_Proj1436 = ext_grs_act_add_node(pattern, "Proj1436", grs_op_Proj, mode_F, 17); - ext_grs_node_t *n_MultipleAdd5755 = ext_grs_act_add_node(pattern, "MultipleAdd5755", grs_op_MultipleAdd, mode_P, 18); - ext_grs_node_t *n_Proj1411 = ext_grs_act_add_node(pattern, "Proj1411", grs_op_Proj, mode_M, 19); - ext_grs_node_t *n_Const1374 = ext_grs_act_add_node(pattern, "Const1374", grs_op_Const, mode_Is, 20); - ext_grs_node_t *n_Proj1459 = ext_grs_act_add_node(pattern, "Proj1459", grs_op_Proj, mode_M, 21); - ext_grs_node_t *n_MultipleAdd5752 = ext_grs_act_add_node(pattern, "MultipleAdd5752", grs_op_MultipleAdd, mode_P, 22); - ext_grs_node_t *n_Vector_Result0_Mul1389 = ext_grs_act_add_node(pattern, "Vector_Result0_Mul1389", grs_op_Mul, mode_F, 23); - ext_grs_node_t *n_VProj1404 = ext_grs_act_add_node(pattern, "VProj1404", grs_op_VProj, mode_F, 24); - ext_grs_node_t *n_Load1386 = ext_grs_act_add_node(pattern, "Load1386", grs_op_Load, mode_T, 25); - ext_grs_node_t *n_Vector_Result3_Mul1461 = ext_grs_act_add_node(pattern, "Vector_Result3_Mul1461", grs_op_Mul, mode_F, 26); - ext_grs_node_t *n_IR_node5756 = ext_grs_act_add_node(pattern, "IR_node5756", grs_op_IR_node, mode_ANY, 27); - ext_grs_node_t *n_Vector_Result2_Mul1437 = ext_grs_act_add_node(pattern, "Vector_Result2_Mul1437", grs_op_Mul, mode_F, 28); - ext_grs_node_t *n_Vector_Result1_Mul1413 = ext_grs_act_add_node(pattern, "Vector_Result1_Mul1413", grs_op_Mul, mode_F, 29); - ext_grs_node_t *n_VProj1452 = ext_grs_act_add_node(pattern, "VProj1452", grs_op_VProj, mode_F, 30); - - /* The edges of the pattern */ - ext_grs_edge_t *e_pos1_31 = ext_grs_act_add_edge(pattern, "pos1_31", 0, n_Load1410, n_Proj1411, 0); - ext_grs_edge_t *e_pos0_36 = ext_grs_act_add_edge(pattern, "pos0_36", -1, n_Vector_op_Block, n_Vector_Result0_Mul1389, 1); - ext_grs_edge_t *e_pos1_34 = ext_grs_act_add_edge(pattern, "pos1_34", 0, n_Load1386, n_Proj1388, 2); - ext_grs_edge_t *e_pos1_32 = ext_grs_act_add_edge(pattern, "pos1_32", 0, n_Load1458, n_Proj1459, 3); - ext_grs_edge_t *e_pos1_33 = ext_grs_act_add_edge(pattern, "pos1_33", 0, n_Load1434, n_Proj1436, 4); - ext_grs_edge_t *e_pos2_35 = ext_grs_act_add_edge(pattern, "pos2_35", 1, n_MultipleAdd5752, n_Load1386, 5); - ext_grs_edge_t *e_pos2_39 = ext_grs_act_add_edge(pattern, "pos2_39", 1, n_MultipleAdd5754, n_Load1434, 6); - ext_grs_edge_t *e_e38 = ext_grs_act_add_edge(pattern, "e38", ext_grs_NO_EDGE_POS, n_VProj1380, n_Vector_Result0_Mul1389, 7); - ext_grs_edge_t *e_e37 = ext_grs_act_add_edge(pattern, "e37", ext_grs_NO_EDGE_POS, n_Proj1388, n_Vector_Result0_Mul1389, 8); - ext_grs_edge_t *e_pos1_40 = ext_grs_act_add_edge(pattern, "pos1_40", 0, n_Arg_0, n_VProj1380, 9); - ext_grs_edge_t *e_e47 = ext_grs_act_add_edge(pattern, "e47", ext_grs_NO_EDGE_POS, n_Proj1460, n_Vector_Result3_Mul1461, 10); - ext_grs_edge_t *e_pos1_41 = ext_grs_act_add_edge(pattern, "pos1_41", 0, n_Arg_0, n_VProj1428, 11); - ext_grs_edge_t *e_e42 = ext_grs_act_add_edge(pattern, "e42", ext_grs_NO_EDGE_POS, n_Arg_1, n_MultipleAdd5752, 12); - ext_grs_edge_t *e_e43 = ext_grs_act_add_edge(pattern, "e43", ext_grs_NO_EDGE_POS, n_IR_node5756, n_MultipleAdd5752, 13); - ext_grs_edge_t *e_pos0_66 = ext_grs_act_add_edge(pattern, "pos0_66", -1, n_Vector_op_Block, n_Vector_Result1_Mul1413, 14); - ext_grs_edge_t *e_pos1_44 = ext_grs_act_add_edge(pattern, "pos1_44", 0, n_Load1386, n_Proj1387, 15); - ext_grs_edge_t *e_pos1_45 = ext_grs_act_add_edge(pattern, "pos1_45", 0, n_Load1434, n_Proj1435, 16); - ext_grs_edge_t *e_pos2_61 = ext_grs_act_add_edge(pattern, "pos2_61", 1, n_MultipleAdd5753, n_Load1410, 17); - ext_grs_edge_t *e_pos2_62 = ext_grs_act_add_edge(pattern, "pos2_62", 1, n_MultipleAdd5755, n_Load1458, 18); - ext_grs_edge_t *e_e49 = ext_grs_act_add_edge(pattern, "e49", ext_grs_NO_EDGE_POS, n_Const1374, n_MultipleAdd5753, 19); - ext_grs_edge_t *e_e48 = ext_grs_act_add_edge(pattern, "e48", ext_grs_NO_EDGE_POS, n_VProj1452, n_Vector_Result3_Mul1461, 20); - ext_grs_edge_t *e_pos0_52 = ext_grs_act_add_edge(pattern, "pos0_52", -1, n_Vector_op_Block, n_Vector_Result2_Mul1437, 21); - ext_grs_edge_t *e_e50 = ext_grs_act_add_edge(pattern, "e50", ext_grs_NO_EDGE_POS, n_Arg_1, n_MultipleAdd5753, 22); - ext_grs_edge_t *e_e51 = ext_grs_act_add_edge(pattern, "e51", ext_grs_NO_EDGE_POS, n_IR_node5756, n_MultipleAdd5753, 23); - ext_grs_edge_t *e_e54 = ext_grs_act_add_edge(pattern, "e54", ext_grs_NO_EDGE_POS, n_VProj1428, n_Vector_Result2_Mul1437, 24); - ext_grs_edge_t *e_e53 = ext_grs_act_add_edge(pattern, "e53", ext_grs_NO_EDGE_POS, n_Proj1436, n_Vector_Result2_Mul1437, 25); - ext_grs_edge_t *e_e58 = ext_grs_act_add_edge(pattern, "e58", ext_grs_NO_EDGE_POS, n_Const1424, n_MultipleAdd5754, 26); - ext_grs_edge_t *e_e59 = ext_grs_act_add_edge(pattern, "e59", ext_grs_NO_EDGE_POS, n_Arg_1, n_MultipleAdd5754, 27); - ext_grs_edge_t *e_pos1_55 = ext_grs_act_add_edge(pattern, "pos1_55", 0, n_Load1410, n_Proj1412, 28); - ext_grs_edge_t *e_pos1_57 = ext_grs_act_add_edge(pattern, "pos1_57", 0, n_Arg_0, n_VProj1452, 29); - ext_grs_edge_t *e_pos1_56 = ext_grs_act_add_edge(pattern, "pos1_56", 0, n_Load1458, n_Proj1460, 30); - ext_grs_edge_t *e_e60 = ext_grs_act_add_edge(pattern, "e60", ext_grs_NO_EDGE_POS, n_IR_node5756, n_MultipleAdd5754, 31); - ext_grs_edge_t *e_e65 = ext_grs_act_add_edge(pattern, "e65", ext_grs_NO_EDGE_POS, n_IR_node5756, n_MultipleAdd5755, 32); - ext_grs_edge_t *e_pos0_46 = ext_grs_act_add_edge(pattern, "pos0_46", -1, n_Vector_op_Block, n_Vector_Result3_Mul1461, 33); - ext_grs_edge_t *e_e64 = ext_grs_act_add_edge(pattern, "e64", ext_grs_NO_EDGE_POS, n_Arg_1, n_MultipleAdd5755, 34); - ext_grs_edge_t *e_e63 = ext_grs_act_add_edge(pattern, "e63", ext_grs_NO_EDGE_POS, n_Const1448, n_MultipleAdd5755, 35); - ext_grs_edge_t *e_e68 = ext_grs_act_add_edge(pattern, "e68", ext_grs_NO_EDGE_POS, n_VProj1404, n_Vector_Result1_Mul1413, 36); - ext_grs_edge_t *e_e67 = ext_grs_act_add_edge(pattern, "e67", ext_grs_NO_EDGE_POS, n_Proj1412, n_Vector_Result1_Mul1413, 37); - ext_grs_edge_t *e_pos1_69 = ext_grs_act_add_edge(pattern, "pos1_69", 0, n_Arg_0, n_VProj1404, 38); - - /* The conditions of the pattern */ - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj1411}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37731, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj1459}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37734, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const1374}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37737, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj1436}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37740, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj1388}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37743, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj1380}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37746, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj1428}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37749, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5752}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37752, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const1424}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37755, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj1387}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37758, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj1435}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37761, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5753}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37764, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj1412}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37767, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj1460}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37770, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj1452}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37773, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5754}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37776, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5755}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37779, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj1404}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37782, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const1448}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_37785, pattern, 1, nodes, 0, edges); - } /* if */ - - /* The negative parts of the pattern */ - - - { /* The replacement */ - ext_grs_graph_t *pattern = ext_grs_act_get_replacement(act); - - /* The nodes of the pattern */ - ext_grs_node_t *n_Load1458_241 = ext_grs_act_add_node_to_keep(pattern, "Load1458_241", grs_op_Load, mode_T, 0, n_Load1458); - ext_grs_node_t *n_VProj1380_242 = ext_grs_act_add_node_to_keep(pattern, "VProj1380_242", grs_op_VProj, mode_F, 1, n_VProj1380); - ext_grs_node_t *n_Proj1387_243 = ext_grs_act_add_node_to_keep(pattern, "Proj1387_243", grs_op_Proj, mode_M, 2, n_Proj1387); - ext_grs_node_t *n_Proj1460_244 = ext_grs_act_add_node_to_keep(pattern, "Proj1460_244", grs_op_Proj, mode_F, 3, n_Proj1460); - ext_grs_node_t *n_Const1448_245 = ext_grs_act_add_node_to_keep(pattern, "Const1448_245", grs_op_Const, mode_Is, 4, n_Const1448); - ext_grs_node_t *n_Const1424_246 = ext_grs_act_add_node_to_keep(pattern, "Const1424_246", grs_op_Const, mode_Is, 5, n_Const1424); - ext_grs_node_t *n_Vector_op_ProjM = ext_grs_act_add_node(pattern, "Vector_op_ProjM", grs_op_Proj, mode_M, 31); - ext_grs_node_t *n_Vector_op_ProjData = ext_grs_act_add_node(pattern, "Vector_op_ProjData", grs_op_Proj, mode_LLu, 32); - ext_grs_node_t *n_Load1434_247 = ext_grs_act_add_node_to_keep(pattern, "Load1434_247", grs_op_Load, mode_T, 6, n_Load1434); - ext_grs_node_t *n_Load1410_248 = ext_grs_act_add_node_to_keep(pattern, "Load1410_248", grs_op_Load, mode_T, 7, n_Load1410); - ext_grs_node_t *n_Proj1388_249 = ext_grs_act_add_node_to_keep(pattern, "Proj1388_249", grs_op_Proj, mode_F, 8, n_Proj1388); - ext_grs_node_t *n_Arg_0_250 = ext_grs_act_add_node_to_keep(pattern, "Arg_0_250", grs_op_VectorBase, mode_ANY, 9, n_Arg_0); - ext_grs_node_t *n_Proj1435_251 = ext_grs_act_add_node_to_keep(pattern, "Proj1435_251", grs_op_Proj, mode_M, 11, n_Proj1435); - ext_grs_node_t *n_Arg_1_252 = ext_grs_act_add_node_to_keep(pattern, "Arg_1_252", grs_op_VectorBase, mode_ANY, 10, n_Arg_1); - ext_grs_node_t *n_VProj1428_253 = ext_grs_act_add_node_to_keep(pattern, "VProj1428_253", grs_op_VProj, mode_F, 12, n_VProj1428); - ext_grs_node_t *n_Vector_op_Block_254 = ext_grs_act_add_node_to_keep(pattern, "Vector_op_Block_254", grs_op_Block, mode_BB, 13, n_Vector_op_Block); - ext_grs_node_t *n_Proj1412_255 = ext_grs_act_add_node_to_keep(pattern, "Proj1412_255", grs_op_Proj, mode_F, 15, n_Proj1412); - ext_grs_node_t *n_MultipleAdd5754_256 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5754_256", grs_op_MultipleAdd, mode_P, 14, n_MultipleAdd5754); - ext_grs_node_t *n_MultipleAdd5753_257 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5753_257", grs_op_MultipleAdd, mode_P, 16, n_MultipleAdd5753); - ext_grs_node_t *n_Proj1436_258 = ext_grs_act_add_node_to_keep(pattern, "Proj1436_258", grs_op_Proj, mode_F, 17, n_Proj1436); - ext_grs_node_t *n_Proj1411_259 = ext_grs_act_add_node_to_keep(pattern, "Proj1411_259", grs_op_Proj, mode_M, 19, n_Proj1411); - ext_grs_node_t *n_MultipleAdd5755_260 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5755_260", grs_op_MultipleAdd, mode_P, 18, n_MultipleAdd5755); - ext_grs_node_t *n_Const1374_261 = ext_grs_act_add_node_to_keep(pattern, "Const1374_261", grs_op_Const, mode_Is, 20, n_Const1374); - ext_grs_node_t *n_Proj1459_262 = ext_grs_act_add_node_to_keep(pattern, "Proj1459_262", grs_op_Proj, mode_M, 21, n_Proj1459); - ext_grs_node_t *n_MultipleAdd5752_263 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5752_263", grs_op_MultipleAdd, mode_P, 22, n_MultipleAdd5752); - ext_grs_node_t *n_VProj31_264 = ext_grs_act_add_node_to_keep(pattern, "VProj31_264", grs_op_VProj, mode_F, 33, n_Vector_Result0_Mul1389); - ext_grs_node_t *n_Load1386_265 = ext_grs_act_add_node_to_keep(pattern, "Load1386_265", grs_op_Load, mode_T, 25, n_Load1386); - ext_grs_node_t *n_VProj1404_266 = ext_grs_act_add_node_to_keep(pattern, "VProj1404_266", grs_op_VProj, mode_F, 24, n_VProj1404); - ext_grs_node_t *n_VProj33_267 = ext_grs_act_add_node_to_keep(pattern, "VProj33_267", grs_op_VProj, mode_F, 34, n_Vector_Result3_Mul1461); - ext_grs_node_t *n_IR_node5756_268 = ext_grs_act_add_node_to_keep(pattern, "IR_node5756_268", grs_op_IR_node, mode_ANY, 27, n_IR_node5756); - ext_grs_node_t *n_VProj35_269 = ext_grs_act_add_node_to_keep(pattern, "VProj35_269", grs_op_VProj, mode_F, 35, n_Vector_Result2_Mul1437); - ext_grs_node_t *n_Bad31 = ext_grs_act_add_node(pattern, "Bad31", grs_op_Bad, mode_ANY, 36); - ext_grs_node_t *n_VProj37_270 = ext_grs_act_add_node_to_keep(pattern, "VProj37_270", grs_op_VProj, mode_F, 37, n_Vector_Result1_Mul1413); - ext_grs_node_t *n_VProj1452_271 = ext_grs_act_add_node_to_keep(pattern, "VProj1452_271", grs_op_VProj, mode_F, 30, n_VProj1452); - ext_grs_node_t *n_Vector_op = ext_grs_act_add_node(pattern, "Vector_op", grs_op_Complex, mode_T, 38); - - /* The edges of the pattern */ - ext_grs_edge_t *e_pos1_31_272 = ext_grs_act_add_edge_to_keep(pattern, "pos1_31_272", 0, n_Load1410_248, n_Proj1411_259, 0, e_pos1_31); - ext_grs_edge_t *e_pos0_70_273 = ext_grs_act_add_edge(pattern, "pos0_70_273", -1, n_Vector_op_Block_254, n_Vector_op, 39); - ext_grs_edge_t *e_pos0_36_274 = ext_grs_act_add_edge_to_keep(pattern, "pos0_36_274", -1, n_Vector_op_Block_254, n_VProj31_264, 1, e_pos0_36); - ext_grs_edge_t *e_pos0_71_275 = ext_grs_act_add_edge(pattern, "pos0_71_275", -1, n_Vector_op_Block_254, n_Vector_op_ProjData, 40); - ext_grs_edge_t *e_pos0_77_276 = ext_grs_act_add_edge(pattern, "pos0_77_276", -1, n_Vector_op_Block_254, n_Vector_op_ProjM, 41); - ext_grs_edge_t *e_pos1_34_277 = ext_grs_act_add_edge_to_keep(pattern, "pos1_34_277", 0, n_Load1386_265, n_Proj1388_249, 2, e_pos1_34); - ext_grs_edge_t *e_pos1_32_278 = ext_grs_act_add_edge_to_keep(pattern, "pos1_32_278", 0, n_Load1458_241, n_Proj1459_262, 3, e_pos1_32); - ext_grs_edge_t *e_pos1_33_279 = ext_grs_act_add_edge_to_keep(pattern, "pos1_33_279", 0, n_Load1434_247, n_Proj1436_258, 4, e_pos1_33); - ext_grs_edge_t *e_pos2_35_280 = ext_grs_act_add_edge_to_keep(pattern, "pos2_35_280", 1, n_MultipleAdd5752_263, n_Load1386_265, 5, e_pos2_35); - ext_grs_edge_t *e_pos2_39_281 = ext_grs_act_add_edge_to_keep(pattern, "pos2_39_281", 1, n_MultipleAdd5754_256, n_Load1434_247, 6, e_pos2_39); - ext_grs_edge_t *e_pos1_76_282 = ext_grs_act_add_edge(pattern, "pos1_76_282", 0, n_Vector_op, n_Vector_op_ProjM, 42); - ext_grs_edge_t *e_pos1_79_283 = ext_grs_act_add_edge(pattern, "pos1_79_283", 0, n_Vector_op_ProjData, n_VProj33_267, 43); - ext_grs_edge_t *e_pos2_73_284 = ext_grs_act_add_edge(pattern, "pos2_73_284", 1, n_MultipleAdd5752_263, n_Vector_op, 44); - ext_grs_edge_t *e_pos1_78_285 = ext_grs_act_add_edge(pattern, "pos1_78_285", 0, n_Vector_op_ProjData, n_VProj31_264, 45); - ext_grs_edge_t *e_pos1_72_286 = ext_grs_act_add_edge(pattern, "pos1_72_286", 0, n_Vector_op, n_Vector_op_ProjData, 46); - ext_grs_edge_t *e_pos1_74_287 = ext_grs_act_add_edge(pattern, "pos1_74_287", 0, n_Arg_0_250, n_Vector_op, 47); - ext_grs_edge_t *e_pos3_75_288 = ext_grs_act_add_edge(pattern, "pos3_75_288", 2, n_Bad31, n_Vector_op, 48); - ext_grs_edge_t *e_pos1_40_289 = ext_grs_act_add_edge_to_keep(pattern, "pos1_40_289", 0, n_Arg_0_250, n_VProj1380_242, 9, e_pos1_40); - ext_grs_edge_t *e_pos1_41_290 = ext_grs_act_add_edge_to_keep(pattern, "pos1_41_290", 0, n_Arg_0_250, n_VProj1428_253, 11, e_pos1_41); - ext_grs_edge_t *e_e42_291 = ext_grs_act_add_edge_to_keep(pattern, "e42_291", ext_grs_NO_EDGE_POS, n_Arg_1_252, n_MultipleAdd5752_263, 12, e_e42); - ext_grs_edge_t *e_e43_292 = ext_grs_act_add_edge_to_keep(pattern, "e43_292", ext_grs_NO_EDGE_POS, n_IR_node5756_268, n_MultipleAdd5752_263, 13, e_e43); - ext_grs_edge_t *e_pos0_66_293 = ext_grs_act_add_edge_to_keep(pattern, "pos0_66_293", -1, n_Vector_op_Block_254, n_VProj37_270, 14, e_pos0_66); - ext_grs_edge_t *e_pos1_44_294 = ext_grs_act_add_edge_to_keep(pattern, "pos1_44_294", 0, n_Load1386_265, n_Proj1387_243, 15, e_pos1_44); - ext_grs_edge_t *e_pos1_45_295 = ext_grs_act_add_edge_to_keep(pattern, "pos1_45_295", 0, n_Load1434_247, n_Proj1435_251, 16, e_pos1_45); - ext_grs_edge_t *e_pos2_61_296 = ext_grs_act_add_edge_to_keep(pattern, "pos2_61_296", 1, n_MultipleAdd5753_257, n_Load1410_248, 17, e_pos2_61); - ext_grs_edge_t *e_pos2_62_297 = ext_grs_act_add_edge_to_keep(pattern, "pos2_62_297", 1, n_MultipleAdd5755_260, n_Load1458_241, 18, e_pos2_62); - ext_grs_edge_t *e_pos1_81_298 = ext_grs_act_add_edge(pattern, "pos1_81_298", 0, n_Vector_op_ProjData, n_VProj37_270, 49); - ext_grs_edge_t *e_e49_299 = ext_grs_act_add_edge_to_keep(pattern, "e49_299", ext_grs_NO_EDGE_POS, n_Const1374_261, n_MultipleAdd5753_257, 19, e_e49); - ext_grs_edge_t *e_pos1_80_300 = ext_grs_act_add_edge(pattern, "pos1_80_300", 0, n_Vector_op_ProjData, n_VProj35_269, 50); - ext_grs_edge_t *e_pos0_52_301 = ext_grs_act_add_edge_to_keep(pattern, "pos0_52_301", -1, n_Vector_op_Block_254, n_VProj35_269, 21, e_pos0_52); - ext_grs_edge_t *e_e50_302 = ext_grs_act_add_edge_to_keep(pattern, "e50_302", ext_grs_NO_EDGE_POS, n_Arg_1_252, n_MultipleAdd5753_257, 22, e_e50); - ext_grs_edge_t *e_e51_303 = ext_grs_act_add_edge_to_keep(pattern, "e51_303", ext_grs_NO_EDGE_POS, n_IR_node5756_268, n_MultipleAdd5753_257, 23, e_e51); - ext_grs_edge_t *e_e58_304 = ext_grs_act_add_edge_to_keep(pattern, "e58_304", ext_grs_NO_EDGE_POS, n_Const1424_246, n_MultipleAdd5754_256, 26, e_e58); - ext_grs_edge_t *e_pos1_55_305 = ext_grs_act_add_edge_to_keep(pattern, "pos1_55_305", 0, n_Load1410_248, n_Proj1412_255, 28, e_pos1_55); - ext_grs_edge_t *e_e59_306 = ext_grs_act_add_edge_to_keep(pattern, "e59_306", ext_grs_NO_EDGE_POS, n_Arg_1_252, n_MultipleAdd5754_256, 27, e_e59); - ext_grs_edge_t *e_pos1_57_307 = ext_grs_act_add_edge_to_keep(pattern, "pos1_57_307", 0, n_Arg_0_250, n_VProj1452_271, 29, e_pos1_57); - ext_grs_edge_t *e_pos1_56_308 = ext_grs_act_add_edge_to_keep(pattern, "pos1_56_308", 0, n_Load1458_241, n_Proj1460_244, 30, e_pos1_56); - ext_grs_edge_t *e_e60_309 = ext_grs_act_add_edge_to_keep(pattern, "e60_309", ext_grs_NO_EDGE_POS, n_IR_node5756_268, n_MultipleAdd5754_256, 31, e_e60); - ext_grs_edge_t *e_pos0_46_310 = ext_grs_act_add_edge_to_keep(pattern, "pos0_46_310", -1, n_Vector_op_Block_254, n_VProj33_267, 33, e_pos0_46); - ext_grs_edge_t *e_e65_311 = ext_grs_act_add_edge_to_keep(pattern, "e65_311", ext_grs_NO_EDGE_POS, n_IR_node5756_268, n_MultipleAdd5755_260, 32, e_e65); - ext_grs_edge_t *e_e64_312 = ext_grs_act_add_edge_to_keep(pattern, "e64_312", ext_grs_NO_EDGE_POS, n_Arg_1_252, n_MultipleAdd5755_260, 34, e_e64); - ext_grs_edge_t *e_e63_313 = ext_grs_act_add_edge_to_keep(pattern, "e63_313", ext_grs_NO_EDGE_POS, n_Const1448_245, n_MultipleAdd5755_260, 35, e_e63); - ext_grs_edge_t *e_pos1_69_314 = ext_grs_act_add_edge_to_keep(pattern, "pos1_69_314", 0, n_Arg_0_250, n_VProj1404_266, 38, e_pos1_69); - - } /* The replacement */ - - /* Eval functions */ - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_37961); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_37964); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_37967); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_37970); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_37973); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_37976); - } /* The Action */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* mulps_4_32_am_variant1 */ - - -/* functions for evaluation of conditions of action mulps_4_32_am_variant2 */ -static int grs_cond_func_38320(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[19/* Proj1411 */]) == 0; -} -static int grs_cond_func_38323(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[21/* Proj1459 */]) == 0; -} -static int grs_cond_func_38326(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[20/* Const1374 */])) == 4; -} -static int grs_cond_func_38329(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[17/* Proj1436 */]) == 3; -} -static int grs_cond_func_38332(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[8/* Proj1388 */]) == 3; -} -static int grs_cond_func_38335(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[1/* VProj1380 */]) == 0; -} -static int grs_cond_func_38338(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[12/* VProj1428 */]) == 2; -} -static int grs_cond_func_38341(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[22/* MultipleAdd5752 */]) == 4; -} -static int grs_cond_func_38344(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[5/* Const1424 */])) == 8; -} -static int grs_cond_func_38347(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[2/* Proj1387 */]) == 0; -} -static int grs_cond_func_38350(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[11/* Proj1435 */]) == 0; -} -static int grs_cond_func_38353(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[16/* MultipleAdd5753 */]) == 4; -} -static int grs_cond_func_38356(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[15/* Proj1412 */]) == 3; -} -static int grs_cond_func_38359(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[3/* Proj1460 */]) == 3; -} -static int grs_cond_func_38362(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[31/* VProj1452 */]) == 3; -} -static int grs_cond_func_38365(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[14/* MultipleAdd5754 */]) == 4; -} -static int grs_cond_func_38368(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[18/* MultipleAdd5755 */]) == 4; -} -static int grs_cond_func_38371(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[24/* VProj1404 */]) == 1; -} -static int grs_cond_func_38374(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[4/* Const1448 */])) == 12; -} - -static void *grs_eval_out_func_38556(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { - set_Proj_proj(rpl_node_map[33/* Vector_op_ProjData */], 0); - return(NULL); -} -static void *grs_eval_out_func_38559(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { - set_Proj_proj(rpl_node_map[32/* Vector_op_ProjM */], 1); - return(NULL); -} -static void *grs_eval_out_func_38562(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[34/* VProj32 */], 0); - return(NULL); -} -static void *grs_eval_out_func_38565(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[35/* VProj34 */], 3); - return(NULL); -} -static void *grs_eval_out_func_38568(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[36/* VProj36 */], 2); - return(NULL); -} -static void *grs_eval_out_func_38571(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[38/* VProj38 */], 1); - return(NULL); -} -/* functions for building the pattern of action mulps_4_32_am_variant2 */ -static _inline ext_grs_action_t *grs_action_mulps_4_32_am_variant2_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_rule, "mulps_4_32_am_variant2"); - int check; - { /* The action */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - ext_grs_node_t *n_Load1458 = ext_grs_act_add_node(pattern, "Load1458", grs_op_Load, mode_T, 0); - ext_grs_node_t *n_VProj1380 = ext_grs_act_add_node(pattern, "VProj1380", grs_op_VProj, mode_F, 1); - ext_grs_node_t *n_Proj1387 = ext_grs_act_add_node(pattern, "Proj1387", grs_op_Proj, mode_M, 2); - ext_grs_node_t *n_Proj1460 = ext_grs_act_add_node(pattern, "Proj1460", grs_op_Proj, mode_F, 3); - ext_grs_node_t *n_Const1448 = ext_grs_act_add_node(pattern, "Const1448", grs_op_Const, mode_Is, 4); - ext_grs_node_t *n_Const1424 = ext_grs_act_add_node(pattern, "Const1424", grs_op_Const, mode_Is, 5); - ext_grs_node_t *n_Load1434 = ext_grs_act_add_node(pattern, "Load1434", grs_op_Load, mode_T, 6); - ext_grs_node_t *n_Load1410 = ext_grs_act_add_node(pattern, "Load1410", grs_op_Load, mode_T, 7); - ext_grs_node_t *n_Proj1388 = ext_grs_act_add_node(pattern, "Proj1388", grs_op_Proj, mode_F, 8); - ext_grs_node_t *n_Arg_0 = ext_grs_act_add_node(pattern, "Arg_0", grs_op_VectorBase, mode_ANY, 9); - ext_grs_node_t *n_Arg_1 = ext_grs_act_add_node(pattern, "Arg_1", grs_op_VectorBase, mode_ANY, 10); - ext_grs_node_t *n_Proj1435 = ext_grs_act_add_node(pattern, "Proj1435", grs_op_Proj, mode_M, 11); - ext_grs_node_t *n_VProj1428 = ext_grs_act_add_node(pattern, "VProj1428", grs_op_VProj, mode_F, 12); - ext_grs_node_t *n_Vector_op_Block = ext_grs_act_add_node(pattern, "Vector_op_Block", grs_op_Block, mode_BB, 13); - ext_grs_node_t *n_MultipleAdd5754 = ext_grs_act_add_node(pattern, "MultipleAdd5754", grs_op_MultipleAdd, mode_P, 14); - ext_grs_node_t *n_Proj1412 = ext_grs_act_add_node(pattern, "Proj1412", grs_op_Proj, mode_F, 15); - ext_grs_node_t *n_MultipleAdd5753 = ext_grs_act_add_node(pattern, "MultipleAdd5753", grs_op_MultipleAdd, mode_P, 16); - ext_grs_node_t *n_Proj1436 = ext_grs_act_add_node(pattern, "Proj1436", grs_op_Proj, mode_F, 17); - ext_grs_node_t *n_MultipleAdd5755 = ext_grs_act_add_node(pattern, "MultipleAdd5755", grs_op_MultipleAdd, mode_P, 18); - ext_grs_node_t *n_Proj1411 = ext_grs_act_add_node(pattern, "Proj1411", grs_op_Proj, mode_M, 19); - ext_grs_node_t *n_Const1374 = ext_grs_act_add_node(pattern, "Const1374", grs_op_Const, mode_Is, 20); - ext_grs_node_t *n_Proj1459 = ext_grs_act_add_node(pattern, "Proj1459", grs_op_Proj, mode_M, 21); - ext_grs_node_t *n_MultipleAdd5752 = ext_grs_act_add_node(pattern, "MultipleAdd5752", grs_op_MultipleAdd, mode_P, 22); - ext_grs_node_t *n_Vector_Result0_Mul1389 = ext_grs_act_add_node(pattern, "Vector_Result0_Mul1389", grs_op_Mul, mode_F, 23); - ext_grs_node_t *n_VProj1404 = ext_grs_act_add_node(pattern, "VProj1404", grs_op_VProj, mode_F, 24); - ext_grs_node_t *n_Load1386 = ext_grs_act_add_node(pattern, "Load1386", grs_op_Load, mode_T, 25); - ext_grs_node_t *n_Vector_Result3_Mul1461 = ext_grs_act_add_node(pattern, "Vector_Result3_Mul1461", grs_op_Mul, mode_F, 26); - ext_grs_node_t *n_IR_node5757 = ext_grs_act_add_node(pattern, "IR_node5757", grs_op_IR_node, mode_ANY, 27); - ext_grs_node_t *n_IR_node5756 = ext_grs_act_add_node(pattern, "IR_node5756", grs_op_IR_node, mode_ANY, 28); - ext_grs_node_t *n_Vector_Result2_Mul1437 = ext_grs_act_add_node(pattern, "Vector_Result2_Mul1437", grs_op_Mul, mode_F, 29); - ext_grs_node_t *n_Vector_Result1_Mul1413 = ext_grs_act_add_node(pattern, "Vector_Result1_Mul1413", grs_op_Mul, mode_F, 30); - ext_grs_node_t *n_VProj1452 = ext_grs_act_add_node(pattern, "VProj1452", grs_op_VProj, mode_F, 31); - - /* The edges of the pattern */ - ext_grs_edge_t *e_e70 = ext_grs_act_add_edge(pattern, "e70", ext_grs_NO_EDGE_POS, n_IR_node5757, n_MultipleAdd5755, 0); - ext_grs_edge_t *e_e72 = ext_grs_act_add_edge(pattern, "e72", ext_grs_NO_EDGE_POS, n_Proj1412, n_Vector_Result1_Mul1413, 1); - ext_grs_edge_t *e_pos0_37 = ext_grs_act_add_edge(pattern, "pos0_37", -1, n_Vector_op_Block, n_Vector_Result0_Mul1389, 2); - ext_grs_edge_t *e_pos0_71 = ext_grs_act_add_edge(pattern, "pos0_71", -1, n_Vector_op_Block, n_Vector_Result1_Mul1413, 3); - ext_grs_edge_t *e_pos1_34 = ext_grs_act_add_edge(pattern, "pos1_34", 0, n_Load1434, n_Proj1436, 4); - ext_grs_edge_t *e_e73 = ext_grs_act_add_edge(pattern, "e73", ext_grs_NO_EDGE_POS, n_VProj1404, n_Vector_Result1_Mul1413, 5); - ext_grs_edge_t *e_pos1_35 = ext_grs_act_add_edge(pattern, "pos1_35", 0, n_Load1386, n_Proj1388, 6); - ext_grs_edge_t *e_pos1_32 = ext_grs_act_add_edge(pattern, "pos1_32", 0, n_Load1410, n_Proj1411, 7); - ext_grs_edge_t *e_pos1_33 = ext_grs_act_add_edge(pattern, "pos1_33", 0, n_Load1458, n_Proj1459, 8); - ext_grs_edge_t *e_pos2_36 = ext_grs_act_add_edge(pattern, "pos2_36", 1, n_MultipleAdd5752, n_Load1386, 9); - ext_grs_edge_t *e_pos1_74 = ext_grs_act_add_edge(pattern, "pos1_74", 0, n_Arg_0, n_VProj1404, 10); - ext_grs_edge_t *e_e38 = ext_grs_act_add_edge(pattern, "e38", ext_grs_NO_EDGE_POS, n_Proj1388, n_Vector_Result0_Mul1389, 11); - ext_grs_edge_t *e_e39 = ext_grs_act_add_edge(pattern, "e39", ext_grs_NO_EDGE_POS, n_VProj1380, n_Vector_Result0_Mul1389, 12); - ext_grs_edge_t *e_pos1_41 = ext_grs_act_add_edge(pattern, "pos1_41", 0, n_Arg_0, n_VProj1380, 13); - ext_grs_edge_t *e_e44 = ext_grs_act_add_edge(pattern, "e44", ext_grs_NO_EDGE_POS, n_IR_node5756, n_MultipleAdd5752, 14); - ext_grs_edge_t *e_pos1_42 = ext_grs_act_add_edge(pattern, "pos1_42", 0, n_Arg_0, n_VProj1428, 15); - ext_grs_edge_t *e_e45 = ext_grs_act_add_edge(pattern, "e45", ext_grs_NO_EDGE_POS, n_IR_node5757, n_MultipleAdd5752, 16); - ext_grs_edge_t *e_e43 = ext_grs_act_add_edge(pattern, "e43", ext_grs_NO_EDGE_POS, n_Arg_1, n_MultipleAdd5752, 17); - ext_grs_edge_t *e_pos1_47 = ext_grs_act_add_edge(pattern, "pos1_47", 0, n_Load1434, n_Proj1435, 18); - ext_grs_edge_t *e_pos1_46 = ext_grs_act_add_edge(pattern, "pos1_46", 0, n_Load1386, n_Proj1387, 19); - ext_grs_edge_t *e_pos2_65 = ext_grs_act_add_edge(pattern, "pos2_65", 1, n_MultipleAdd5753, n_Load1410, 20); - ext_grs_edge_t *e_pos2_66 = ext_grs_act_add_edge(pattern, "pos2_66", 1, n_MultipleAdd5755, n_Load1458, 21); - ext_grs_edge_t *e_e49 = ext_grs_act_add_edge(pattern, "e49", ext_grs_NO_EDGE_POS, n_Proj1460, n_Vector_Result3_Mul1461, 22); - ext_grs_edge_t *e_e50 = ext_grs_act_add_edge(pattern, "e50", ext_grs_NO_EDGE_POS, n_VProj1452, n_Vector_Result3_Mul1461, 23); - ext_grs_edge_t *e_e52 = ext_grs_act_add_edge(pattern, "e52", ext_grs_NO_EDGE_POS, n_Arg_1, n_MultipleAdd5753, 24); - ext_grs_edge_t *e_e51 = ext_grs_act_add_edge(pattern, "e51", ext_grs_NO_EDGE_POS, n_Const1374, n_MultipleAdd5753, 25); - ext_grs_edge_t *e_e54 = ext_grs_act_add_edge(pattern, "e54", ext_grs_NO_EDGE_POS, n_IR_node5757, n_MultipleAdd5753, 26); - ext_grs_edge_t *e_e53 = ext_grs_act_add_edge(pattern, "e53", ext_grs_NO_EDGE_POS, n_IR_node5756, n_MultipleAdd5753, 27); - ext_grs_edge_t *e_e56 = ext_grs_act_add_edge(pattern, "e56", ext_grs_NO_EDGE_POS, n_Proj1436, n_Vector_Result2_Mul1437, 28); - ext_grs_edge_t *e_pos0_55 = ext_grs_act_add_edge(pattern, "pos0_55", -1, n_Vector_op_Block, n_Vector_Result2_Mul1437, 29); - ext_grs_edge_t *e_e57 = ext_grs_act_add_edge(pattern, "e57", ext_grs_NO_EDGE_POS, n_VProj1428, n_Vector_Result2_Mul1437, 30); - ext_grs_edge_t *e_pos1_59 = ext_grs_act_add_edge(pattern, "pos1_59", 0, n_Load1458, n_Proj1460, 31); - ext_grs_edge_t *e_pos1_58 = ext_grs_act_add_edge(pattern, "pos1_58", 0, n_Load1410, n_Proj1412, 32); - ext_grs_edge_t *e_e61 = ext_grs_act_add_edge(pattern, "e61", ext_grs_NO_EDGE_POS, n_Const1424, n_MultipleAdd5754, 33); - ext_grs_edge_t *e_e64 = ext_grs_act_add_edge(pattern, "e64", ext_grs_NO_EDGE_POS, n_IR_node5757, n_MultipleAdd5754, 34); - ext_grs_edge_t *e_e63 = ext_grs_act_add_edge(pattern, "e63", ext_grs_NO_EDGE_POS, n_IR_node5756, n_MultipleAdd5754, 35); - ext_grs_edge_t *e_pos0_48 = ext_grs_act_add_edge(pattern, "pos0_48", -1, n_Vector_op_Block, n_Vector_Result3_Mul1461, 36); - ext_grs_edge_t *e_e62 = ext_grs_act_add_edge(pattern, "e62", ext_grs_NO_EDGE_POS, n_Arg_1, n_MultipleAdd5754, 37); - ext_grs_edge_t *e_e69 = ext_grs_act_add_edge(pattern, "e69", ext_grs_NO_EDGE_POS, n_IR_node5756, n_MultipleAdd5755, 38); - ext_grs_edge_t *e_e68 = ext_grs_act_add_edge(pattern, "e68", ext_grs_NO_EDGE_POS, n_Arg_1, n_MultipleAdd5755, 39); - ext_grs_edge_t *e_e67 = ext_grs_act_add_edge(pattern, "e67", ext_grs_NO_EDGE_POS, n_Const1448, n_MultipleAdd5755, 40); - ext_grs_edge_t *e_pos1_60 = ext_grs_act_add_edge(pattern, "pos1_60", 0, n_Arg_0, n_VProj1452, 41); - ext_grs_edge_t *e_pos2_40 = ext_grs_act_add_edge(pattern, "pos2_40", 1, n_MultipleAdd5754, n_Load1434, 42); - - /* The conditions of the pattern */ - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj1411}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_38320, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj1459}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_38323, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const1374}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_38326, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj1436}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_38329, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj1388}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_38332, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj1380}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_38335, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj1428}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_38338, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5752}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_38341, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const1424}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_38344, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj1387}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_38347, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj1435}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_38350, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5753}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_38353, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj1412}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_38356, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj1460}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_38359, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj1452}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_38362, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5754}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_38365, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5755}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_38368, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj1404}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_38371, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const1448}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_38374, pattern, 1, nodes, 0, edges); - } /* if */ - - /* The negative parts of the pattern */ - - - { /* The replacement */ - ext_grs_graph_t *pattern = ext_grs_act_get_replacement(act); - - /* The nodes of the pattern */ - ext_grs_node_t *n_Load1458_315 = ext_grs_act_add_node_to_keep(pattern, "Load1458_315", grs_op_Load, mode_T, 0, n_Load1458); - ext_grs_node_t *n_VProj1380_316 = ext_grs_act_add_node_to_keep(pattern, "VProj1380_316", grs_op_VProj, mode_F, 1, n_VProj1380); - ext_grs_node_t *n_Proj1387_317 = ext_grs_act_add_node_to_keep(pattern, "Proj1387_317", grs_op_Proj, mode_M, 2, n_Proj1387); - ext_grs_node_t *n_Proj1460_318 = ext_grs_act_add_node_to_keep(pattern, "Proj1460_318", grs_op_Proj, mode_F, 3, n_Proj1460); - ext_grs_node_t *n_Const1448_319 = ext_grs_act_add_node_to_keep(pattern, "Const1448_319", grs_op_Const, mode_Is, 4, n_Const1448); - ext_grs_node_t *n_Const1424_320 = ext_grs_act_add_node_to_keep(pattern, "Const1424_320", grs_op_Const, mode_Is, 5, n_Const1424); - ext_grs_node_t *n_Vector_op_ProjM = ext_grs_act_add_node(pattern, "Vector_op_ProjM", grs_op_Proj, mode_M, 32); - ext_grs_node_t *n_Vector_op_ProjData = ext_grs_act_add_node(pattern, "Vector_op_ProjData", grs_op_Proj, mode_LLu, 33); - ext_grs_node_t *n_Load1434_321 = ext_grs_act_add_node_to_keep(pattern, "Load1434_321", grs_op_Load, mode_T, 6, n_Load1434); - ext_grs_node_t *n_Load1410_322 = ext_grs_act_add_node_to_keep(pattern, "Load1410_322", grs_op_Load, mode_T, 7, n_Load1410); - ext_grs_node_t *n_Proj1388_323 = ext_grs_act_add_node_to_keep(pattern, "Proj1388_323", grs_op_Proj, mode_F, 8, n_Proj1388); - ext_grs_node_t *n_Arg_0_324 = ext_grs_act_add_node_to_keep(pattern, "Arg_0_324", grs_op_VectorBase, mode_ANY, 9, n_Arg_0); - ext_grs_node_t *n_Proj1435_325 = ext_grs_act_add_node_to_keep(pattern, "Proj1435_325", grs_op_Proj, mode_M, 11, n_Proj1435); - ext_grs_node_t *n_Arg_1_326 = ext_grs_act_add_node_to_keep(pattern, "Arg_1_326", grs_op_VectorBase, mode_ANY, 10, n_Arg_1); - ext_grs_node_t *n_VProj1428_327 = ext_grs_act_add_node_to_keep(pattern, "VProj1428_327", grs_op_VProj, mode_F, 12, n_VProj1428); - ext_grs_node_t *n_Vector_op_Block_328 = ext_grs_act_add_node_to_keep(pattern, "Vector_op_Block_328", grs_op_Block, mode_BB, 13, n_Vector_op_Block); - ext_grs_node_t *n_Proj1412_329 = ext_grs_act_add_node_to_keep(pattern, "Proj1412_329", grs_op_Proj, mode_F, 15, n_Proj1412); - ext_grs_node_t *n_MultipleAdd5754_330 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5754_330", grs_op_MultipleAdd, mode_P, 14, n_MultipleAdd5754); - ext_grs_node_t *n_MultipleAdd5753_331 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5753_331", grs_op_MultipleAdd, mode_P, 16, n_MultipleAdd5753); - ext_grs_node_t *n_Proj1436_332 = ext_grs_act_add_node_to_keep(pattern, "Proj1436_332", grs_op_Proj, mode_F, 17, n_Proj1436); - ext_grs_node_t *n_Proj1411_333 = ext_grs_act_add_node_to_keep(pattern, "Proj1411_333", grs_op_Proj, mode_M, 19, n_Proj1411); - ext_grs_node_t *n_MultipleAdd5755_334 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5755_334", grs_op_MultipleAdd, mode_P, 18, n_MultipleAdd5755); - ext_grs_node_t *n_Const1374_335 = ext_grs_act_add_node_to_keep(pattern, "Const1374_335", grs_op_Const, mode_Is, 20, n_Const1374); - ext_grs_node_t *n_Proj1459_336 = ext_grs_act_add_node_to_keep(pattern, "Proj1459_336", grs_op_Proj, mode_M, 21, n_Proj1459); - ext_grs_node_t *n_MultipleAdd5752_337 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5752_337", grs_op_MultipleAdd, mode_P, 22, n_MultipleAdd5752); - ext_grs_node_t *n_VProj32_338 = ext_grs_act_add_node_to_keep(pattern, "VProj32_338", grs_op_VProj, mode_F, 34, n_Vector_Result0_Mul1389); - ext_grs_node_t *n_Load1386_339 = ext_grs_act_add_node_to_keep(pattern, "Load1386_339", grs_op_Load, mode_T, 25, n_Load1386); - ext_grs_node_t *n_VProj1404_340 = ext_grs_act_add_node_to_keep(pattern, "VProj1404_340", grs_op_VProj, mode_F, 24, n_VProj1404); - ext_grs_node_t *n_VProj34_341 = ext_grs_act_add_node_to_keep(pattern, "VProj34_341", grs_op_VProj, mode_F, 35, n_Vector_Result3_Mul1461); - ext_grs_node_t *n_IR_node5757_342 = ext_grs_act_add_node_to_keep(pattern, "IR_node5757_342", grs_op_IR_node, mode_ANY, 27, n_IR_node5757); - ext_grs_node_t *n_IR_node5756_343 = ext_grs_act_add_node_to_keep(pattern, "IR_node5756_343", grs_op_IR_node, mode_ANY, 28, n_IR_node5756); - ext_grs_node_t *n_VProj36_344 = ext_grs_act_add_node_to_keep(pattern, "VProj36_344", grs_op_VProj, mode_F, 36, n_Vector_Result2_Mul1437); - ext_grs_node_t *n_Bad32 = ext_grs_act_add_node(pattern, "Bad32", grs_op_Bad, mode_ANY, 37); - ext_grs_node_t *n_VProj38_345 = ext_grs_act_add_node_to_keep(pattern, "VProj38_345", grs_op_VProj, mode_F, 38, n_Vector_Result1_Mul1413); - ext_grs_node_t *n_VProj1452_346 = ext_grs_act_add_node_to_keep(pattern, "VProj1452_346", grs_op_VProj, mode_F, 31, n_VProj1452); - ext_grs_node_t *n_Vector_op = ext_grs_act_add_node(pattern, "Vector_op", grs_op_Complex, mode_T, 39); - - /* The edges of the pattern */ - ext_grs_edge_t *e_e70_347 = ext_grs_act_add_edge_to_keep(pattern, "e70_347", ext_grs_NO_EDGE_POS, n_IR_node5757_342, n_MultipleAdd5755_334, 0, e_e70); - ext_grs_edge_t *e_pos0_37_348 = ext_grs_act_add_edge_to_keep(pattern, "pos0_37_348", -1, n_Vector_op_Block_328, n_VProj32_338, 2, e_pos0_37); - ext_grs_edge_t *e_pos0_71_349 = ext_grs_act_add_edge_to_keep(pattern, "pos0_71_349", -1, n_Vector_op_Block_328, n_VProj38_345, 3, e_pos0_71); - ext_grs_edge_t *e_pos0_75_350 = ext_grs_act_add_edge(pattern, "pos0_75_350", -1, n_Vector_op_Block_328, n_Vector_op, 43); - ext_grs_edge_t *e_pos0_76_351 = ext_grs_act_add_edge(pattern, "pos0_76_351", -1, n_Vector_op_Block_328, n_Vector_op_ProjData, 44); - ext_grs_edge_t *e_pos1_34_352 = ext_grs_act_add_edge_to_keep(pattern, "pos1_34_352", 0, n_Load1434_321, n_Proj1436_332, 4, e_pos1_34); - ext_grs_edge_t *e_pos1_35_353 = ext_grs_act_add_edge_to_keep(pattern, "pos1_35_353", 0, n_Load1386_339, n_Proj1388_323, 6, e_pos1_35); - ext_grs_edge_t *e_pos1_32_354 = ext_grs_act_add_edge_to_keep(pattern, "pos1_32_354", 0, n_Load1410_322, n_Proj1411_333, 7, e_pos1_32); - ext_grs_edge_t *e_pos1_33_355 = ext_grs_act_add_edge_to_keep(pattern, "pos1_33_355", 0, n_Load1458_315, n_Proj1459_336, 8, e_pos1_33); - ext_grs_edge_t *e_pos2_36_356 = ext_grs_act_add_edge_to_keep(pattern, "pos2_36_356", 1, n_MultipleAdd5752_337, n_Load1386_339, 9, e_pos2_36); - ext_grs_edge_t *e_pos1_77_357 = ext_grs_act_add_edge(pattern, "pos1_77_357", 0, n_Vector_op, n_Vector_op_ProjData, 45); - ext_grs_edge_t *e_pos1_79_358 = ext_grs_act_add_edge(pattern, "pos1_79_358", 0, n_Arg_0_324, n_Vector_op, 46); - ext_grs_edge_t *e_pos2_78_359 = ext_grs_act_add_edge(pattern, "pos2_78_359", 1, n_MultipleAdd5752_337, n_Vector_op, 47); - ext_grs_edge_t *e_pos1_74_360 = ext_grs_act_add_edge_to_keep(pattern, "pos1_74_360", 0, n_Arg_0_324, n_VProj1404_340, 10, e_pos1_74); - ext_grs_edge_t *e_pos1_41_361 = ext_grs_act_add_edge_to_keep(pattern, "pos1_41_361", 0, n_Arg_0_324, n_VProj1380_316, 13, e_pos1_41); - ext_grs_edge_t *e_e44_362 = ext_grs_act_add_edge_to_keep(pattern, "e44_362", ext_grs_NO_EDGE_POS, n_IR_node5756_343, n_MultipleAdd5752_337, 14, e_e44); - ext_grs_edge_t *e_pos1_42_363 = ext_grs_act_add_edge_to_keep(pattern, "pos1_42_363", 0, n_Arg_0_324, n_VProj1428_327, 15, e_pos1_42); - ext_grs_edge_t *e_e45_364 = ext_grs_act_add_edge_to_keep(pattern, "e45_364", ext_grs_NO_EDGE_POS, n_IR_node5757_342, n_MultipleAdd5752_337, 16, e_e45); - ext_grs_edge_t *e_e43_365 = ext_grs_act_add_edge_to_keep(pattern, "e43_365", ext_grs_NO_EDGE_POS, n_Arg_1_326, n_MultipleAdd5752_337, 17, e_e43); - ext_grs_edge_t *e_pos1_47_366 = ext_grs_act_add_edge_to_keep(pattern, "pos1_47_366", 0, n_Load1434_321, n_Proj1435_325, 18, e_pos1_47); - ext_grs_edge_t *e_pos1_46_367 = ext_grs_act_add_edge_to_keep(pattern, "pos1_46_367", 0, n_Load1386_339, n_Proj1387_317, 19, e_pos1_46); - ext_grs_edge_t *e_pos2_65_368 = ext_grs_act_add_edge_to_keep(pattern, "pos2_65_368", 1, n_MultipleAdd5753_331, n_Load1410_322, 20, e_pos2_65); - ext_grs_edge_t *e_pos1_86_369 = ext_grs_act_add_edge(pattern, "pos1_86_369", 0, n_Vector_op_ProjData, n_VProj38_345, 48); - ext_grs_edge_t *e_pos2_66_370 = ext_grs_act_add_edge_to_keep(pattern, "pos2_66_370", 1, n_MultipleAdd5755_334, n_Load1458_315, 21, e_pos2_66); - ext_grs_edge_t *e_pos1_85_371 = ext_grs_act_add_edge(pattern, "pos1_85_371", 0, n_Vector_op_ProjData, n_VProj36_344, 49); - ext_grs_edge_t *e_pos1_84_372 = ext_grs_act_add_edge(pattern, "pos1_84_372", 0, n_Vector_op_ProjData, n_VProj34_341, 50); - ext_grs_edge_t *e_pos3_80_373 = ext_grs_act_add_edge(pattern, "pos3_80_373", 2, n_Bad32, n_Vector_op, 51); - ext_grs_edge_t *e_pos1_83_374 = ext_grs_act_add_edge(pattern, "pos1_83_374", 0, n_Vector_op_ProjData, n_VProj32_338, 52); - ext_grs_edge_t *e_pos1_81_375 = ext_grs_act_add_edge(pattern, "pos1_81_375", 0, n_Vector_op, n_Vector_op_ProjM, 53); - ext_grs_edge_t *e_e52_376 = ext_grs_act_add_edge_to_keep(pattern, "e52_376", ext_grs_NO_EDGE_POS, n_Arg_1_326, n_MultipleAdd5753_331, 24, e_e52); - ext_grs_edge_t *e_e51_377 = ext_grs_act_add_edge_to_keep(pattern, "e51_377", ext_grs_NO_EDGE_POS, n_Const1374_335, n_MultipleAdd5753_331, 25, e_e51); - ext_grs_edge_t *e_e54_378 = ext_grs_act_add_edge_to_keep(pattern, "e54_378", ext_grs_NO_EDGE_POS, n_IR_node5757_342, n_MultipleAdd5753_331, 26, e_e54); - ext_grs_edge_t *e_e53_379 = ext_grs_act_add_edge_to_keep(pattern, "e53_379", ext_grs_NO_EDGE_POS, n_IR_node5756_343, n_MultipleAdd5753_331, 27, e_e53); - ext_grs_edge_t *e_pos0_55_380 = ext_grs_act_add_edge_to_keep(pattern, "pos0_55_380", -1, n_Vector_op_Block_328, n_VProj36_344, 29, e_pos0_55); - ext_grs_edge_t *e_pos1_59_381 = ext_grs_act_add_edge_to_keep(pattern, "pos1_59_381", 0, n_Load1458_315, n_Proj1460_318, 31, e_pos1_59); - ext_grs_edge_t *e_pos1_58_382 = ext_grs_act_add_edge_to_keep(pattern, "pos1_58_382", 0, n_Load1410_322, n_Proj1412_329, 32, e_pos1_58); - ext_grs_edge_t *e_e61_383 = ext_grs_act_add_edge_to_keep(pattern, "e61_383", ext_grs_NO_EDGE_POS, n_Const1424_320, n_MultipleAdd5754_330, 33, e_e61); - ext_grs_edge_t *e_e64_384 = ext_grs_act_add_edge_to_keep(pattern, "e64_384", ext_grs_NO_EDGE_POS, n_IR_node5757_342, n_MultipleAdd5754_330, 34, e_e64); - ext_grs_edge_t *e_pos0_48_385 = ext_grs_act_add_edge_to_keep(pattern, "pos0_48_385", -1, n_Vector_op_Block_328, n_VProj34_341, 36, e_pos0_48); - ext_grs_edge_t *e_e63_386 = ext_grs_act_add_edge_to_keep(pattern, "e63_386", ext_grs_NO_EDGE_POS, n_IR_node5756_343, n_MultipleAdd5754_330, 35, e_e63); - ext_grs_edge_t *e_e62_387 = ext_grs_act_add_edge_to_keep(pattern, "e62_387", ext_grs_NO_EDGE_POS, n_Arg_1_326, n_MultipleAdd5754_330, 37, e_e62); - ext_grs_edge_t *e_e69_388 = ext_grs_act_add_edge_to_keep(pattern, "e69_388", ext_grs_NO_EDGE_POS, n_IR_node5756_343, n_MultipleAdd5755_334, 38, e_e69); - ext_grs_edge_t *e_e68_389 = ext_grs_act_add_edge_to_keep(pattern, "e68_389", ext_grs_NO_EDGE_POS, n_Arg_1_326, n_MultipleAdd5755_334, 39, e_e68); - ext_grs_edge_t *e_e67_390 = ext_grs_act_add_edge_to_keep(pattern, "e67_390", ext_grs_NO_EDGE_POS, n_Const1448_319, n_MultipleAdd5755_334, 40, e_e67); - ext_grs_edge_t *e_pos2_40_391 = ext_grs_act_add_edge_to_keep(pattern, "pos2_40_391", 1, n_MultipleAdd5754_330, n_Load1434_321, 42, e_pos2_40); - ext_grs_edge_t *e_pos1_60_392 = ext_grs_act_add_edge_to_keep(pattern, "pos1_60_392", 0, n_Arg_0_324, n_VProj1452_346, 41, e_pos1_60); - ext_grs_edge_t *e_pos0_82_393 = ext_grs_act_add_edge(pattern, "pos0_82_393", -1, n_Vector_op_Block_328, n_Vector_op_ProjM, 54); - - } /* The replacement */ - - /* Eval functions */ - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_38556); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_38559); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_38562); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_38565); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_38568); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_38571); - } /* The Action */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* mulps_4_32_am_variant2 */ - - -/* functions for evaluation of conditions of action mulps_4_32_variant0 */ -static int grs_cond_func_36719(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[6/* VProj1209 */]) == 3; -} -static int grs_cond_func_36722(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[9/* VProj1217 */]) == 3; -} -static int grs_cond_func_36725(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[8/* VProj1169 */]) == 1; -} -static int grs_cond_func_36728(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[10/* VProj1137 */]) == 0; -} -static int grs_cond_func_36731(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[11/* VProj1185 */]) == 2; -} -static int grs_cond_func_36734(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[4/* VProj1193 */]) == 2; -} -static int grs_cond_func_36737(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[14/* VProj1145 */]) == 0; -} -static int grs_cond_func_36740(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[12/* VProj1161 */]) == 1; -} - -static void *grs_eval_out_func_36846(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { - set_Proj_proj(rpl_node_map[16/* Vector_op_ProjData */], 0); - return(NULL); -} -static void *grs_eval_out_func_36849(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[17/* VProj15 */], 3); - return(NULL); -} -static void *grs_eval_out_func_36852(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[15/* VProj17 */], 2); - return(NULL); -} -static void *grs_eval_out_func_36855(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[18/* VProj19 */], 0); - return(NULL); -} -static void *grs_eval_out_func_36858(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[20/* VProj21 */], 1); - return(NULL); -} -/* functions for building the pattern of action mulps_4_32_variant0 */ -static _inline ext_grs_action_t *grs_action_mulps_4_32_variant0_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_rule, "mulps_4_32_variant0"); - int check; - { /* The action */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - ext_grs_node_t *n_Arg_0 = ext_grs_act_add_node(pattern, "Arg_0", grs_op_VectorBase, mode_ANY, 0); - ext_grs_node_t *n_Arg_1 = ext_grs_act_add_node(pattern, "Arg_1", grs_op_VectorBase, mode_ANY, 1); - ext_grs_node_t *n_Vector_Result2_Mul1194 = ext_grs_act_add_node(pattern, "Vector_Result2_Mul1194", grs_op_Mul, mode_F, 2); - ext_grs_node_t *n_Vector_op_Block = ext_grs_act_add_node(pattern, "Vector_op_Block", grs_op_Block, mode_BB, 3); - ext_grs_node_t *n_VProj1193 = ext_grs_act_add_node(pattern, "VProj1193", grs_op_VProj, mode_F, 4); - ext_grs_node_t *n_Vector_Result3_Mul1218 = ext_grs_act_add_node(pattern, "Vector_Result3_Mul1218", grs_op_Mul, mode_F, 5); - ext_grs_node_t *n_VProj1209 = ext_grs_act_add_node(pattern, "VProj1209", grs_op_VProj, mode_F, 6); - ext_grs_node_t *n_Vector_Result0_Mul1146 = ext_grs_act_add_node(pattern, "Vector_Result0_Mul1146", grs_op_Mul, mode_F, 7); - ext_grs_node_t *n_VProj1169 = ext_grs_act_add_node(pattern, "VProj1169", grs_op_VProj, mode_F, 8); - ext_grs_node_t *n_VProj1217 = ext_grs_act_add_node(pattern, "VProj1217", grs_op_VProj, mode_F, 9); - ext_grs_node_t *n_VProj1137 = ext_grs_act_add_node(pattern, "VProj1137", grs_op_VProj, mode_F, 10); - ext_grs_node_t *n_VProj1185 = ext_grs_act_add_node(pattern, "VProj1185", grs_op_VProj, mode_F, 11); - ext_grs_node_t *n_VProj1161 = ext_grs_act_add_node(pattern, "VProj1161", grs_op_VProj, mode_F, 12); - ext_grs_node_t *n_Vector_Result1_Mul1170 = ext_grs_act_add_node(pattern, "Vector_Result1_Mul1170", grs_op_Mul, mode_F, 13); - ext_grs_node_t *n_VProj1145 = ext_grs_act_add_node(pattern, "VProj1145", grs_op_VProj, mode_F, 14); - - /* The edges of the pattern */ - ext_grs_edge_t *e_e33 = ext_grs_act_add_edge(pattern, "e33", ext_grs_NO_EDGE_POS, n_VProj1161, n_Vector_Result1_Mul1170, 0); - ext_grs_edge_t *e_pos1_30 = ext_grs_act_add_edge(pattern, "pos1_30", 0, n_Arg_1, n_VProj1145, 1); - ext_grs_edge_t *e_pos0_15 = ext_grs_act_add_edge(pattern, "pos0_15", -1, n_Vector_op_Block, n_Vector_Result3_Mul1218, 2); - ext_grs_edge_t *e_pos0_31 = ext_grs_act_add_edge(pattern, "pos0_31", -1, n_Vector_op_Block, n_Vector_Result1_Mul1170, 3); - ext_grs_edge_t *e_e32 = ext_grs_act_add_edge(pattern, "e32", ext_grs_NO_EDGE_POS, n_VProj1169, n_Vector_Result1_Mul1170, 4); - ext_grs_edge_t *e_pos1_34 = ext_grs_act_add_edge(pattern, "pos1_34", 0, n_Arg_0, n_VProj1161, 5); - ext_grs_edge_t *e_e16 = ext_grs_act_add_edge(pattern, "e16", ext_grs_NO_EDGE_POS, n_VProj1217, n_Vector_Result3_Mul1218, 6); - ext_grs_edge_t *e_e17 = ext_grs_act_add_edge(pattern, "e17", ext_grs_NO_EDGE_POS, n_VProj1209, n_Vector_Result3_Mul1218, 7); - ext_grs_edge_t *e_e19 = ext_grs_act_add_edge(pattern, "e19", ext_grs_NO_EDGE_POS, n_VProj1193, n_Vector_Result2_Mul1194, 8); - ext_grs_edge_t *e_pos0_18 = ext_grs_act_add_edge(pattern, "pos0_18", -1, n_Vector_op_Block, n_Vector_Result2_Mul1194, 9); - ext_grs_edge_t *e_e20 = ext_grs_act_add_edge(pattern, "e20", ext_grs_NO_EDGE_POS, n_VProj1185, n_Vector_Result2_Mul1194, 10); - ext_grs_edge_t *e_pos0_23 = ext_grs_act_add_edge(pattern, "pos0_23", -1, n_Vector_op_Block, n_Vector_Result0_Mul1146, 11); - ext_grs_edge_t *e_e24 = ext_grs_act_add_edge(pattern, "e24", ext_grs_NO_EDGE_POS, n_VProj1145, n_Vector_Result0_Mul1146, 12); - ext_grs_edge_t *e_e25 = ext_grs_act_add_edge(pattern, "e25", ext_grs_NO_EDGE_POS, n_VProj1137, n_Vector_Result0_Mul1146, 13); - ext_grs_edge_t *e_pos1_21 = ext_grs_act_add_edge(pattern, "pos1_21", 0, n_Arg_0, n_VProj1209, 14); - ext_grs_edge_t *e_pos1_22 = ext_grs_act_add_edge(pattern, "pos1_22", 0, n_Arg_1, n_VProj1217, 15); - ext_grs_edge_t *e_pos1_26 = ext_grs_act_add_edge(pattern, "pos1_26", 0, n_Arg_1, n_VProj1169, 16); - ext_grs_edge_t *e_pos1_27 = ext_grs_act_add_edge(pattern, "pos1_27", 0, n_Arg_0, n_VProj1137, 17); - ext_grs_edge_t *e_pos1_28 = ext_grs_act_add_edge(pattern, "pos1_28", 0, n_Arg_0, n_VProj1185, 18); - ext_grs_edge_t *e_pos1_29 = ext_grs_act_add_edge(pattern, "pos1_29", 0, n_Arg_1, n_VProj1193, 19); - - /* The conditions of the pattern */ - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj1209}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36719, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj1217}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36722, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj1169}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36725, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj1137}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36728, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj1185}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36731, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj1193}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36734, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj1145}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36737, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj1161}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36740, pattern, 1, nodes, 0, edges); - } /* if */ - - /* The negative parts of the pattern */ - - - { /* The replacement */ - ext_grs_graph_t *pattern = ext_grs_act_get_replacement(act); - - /* The nodes of the pattern */ - ext_grs_node_t *n_Arg_0_394 = ext_grs_act_add_node_to_keep(pattern, "Arg_0_394", grs_op_VectorBase, mode_ANY, 0, n_Arg_0); - ext_grs_node_t *n_Arg_1_395 = ext_grs_act_add_node_to_keep(pattern, "Arg_1_395", grs_op_VectorBase, mode_ANY, 1, n_Arg_1); - ext_grs_node_t *n_VProj17_396 = ext_grs_act_add_node_to_keep(pattern, "VProj17_396", grs_op_VProj, mode_F, 15, n_Vector_Result2_Mul1194); - ext_grs_node_t *n_Vector_op_Block_397 = ext_grs_act_add_node_to_keep(pattern, "Vector_op_Block_397", grs_op_Block, mode_BB, 3, n_Vector_op_Block); - ext_grs_node_t *n_VProj1193_398 = ext_grs_act_add_node_to_keep(pattern, "VProj1193_398", grs_op_VProj, mode_F, 4, n_VProj1193); - ext_grs_node_t *n_Vector_op_ProjData = ext_grs_act_add_node(pattern, "Vector_op_ProjData", grs_op_Proj, mode_LLu, 16); - ext_grs_node_t *n_VProj15_399 = ext_grs_act_add_node_to_keep(pattern, "VProj15_399", grs_op_VProj, mode_F, 17, n_Vector_Result3_Mul1218); - ext_grs_node_t *n_VProj1209_400 = ext_grs_act_add_node_to_keep(pattern, "VProj1209_400", grs_op_VProj, mode_F, 6, n_VProj1209); - ext_grs_node_t *n_VProj19_401 = ext_grs_act_add_node_to_keep(pattern, "VProj19_401", grs_op_VProj, mode_F, 18, n_Vector_Result0_Mul1146); - ext_grs_node_t *n_VProj1169_402 = ext_grs_act_add_node_to_keep(pattern, "VProj1169_402", grs_op_VProj, mode_F, 8, n_VProj1169); - ext_grs_node_t *n_VProj1217_403 = ext_grs_act_add_node_to_keep(pattern, "VProj1217_403", grs_op_VProj, mode_F, 9, n_VProj1217); - ext_grs_node_t *n_VProj1137_404 = ext_grs_act_add_node_to_keep(pattern, "VProj1137_404", grs_op_VProj, mode_F, 10, n_VProj1137); - ext_grs_node_t *n_VProj1185_405 = ext_grs_act_add_node_to_keep(pattern, "VProj1185_405", grs_op_VProj, mode_F, 11, n_VProj1185); - ext_grs_node_t *n_VProj1161_406 = ext_grs_act_add_node_to_keep(pattern, "VProj1161_406", grs_op_VProj, mode_F, 12, n_VProj1161); - ext_grs_node_t *n_VProj1145_407 = ext_grs_act_add_node_to_keep(pattern, "VProj1145_407", grs_op_VProj, mode_F, 14, n_VProj1145); - ext_grs_node_t *n_Vector_op = ext_grs_act_add_node(pattern, "Vector_op", grs_op_Complex, mode_T, 19); - ext_grs_node_t *n_VProj21_408 = ext_grs_act_add_node_to_keep(pattern, "VProj21_408", grs_op_VProj, mode_F, 20, n_Vector_Result1_Mul1170); - - /* The edges of the pattern */ - ext_grs_edge_t *e_pos1_30_409 = ext_grs_act_add_edge_to_keep(pattern, "pos1_30_409", 0, n_Arg_1_395, n_VProj1145_407, 1, e_pos1_30); - ext_grs_edge_t *e_pos0_15_410 = ext_grs_act_add_edge_to_keep(pattern, "pos0_15_410", -1, n_Vector_op_Block_397, n_VProj15_399, 2, e_pos0_15); - ext_grs_edge_t *e_pos0_31_411 = ext_grs_act_add_edge_to_keep(pattern, "pos0_31_411", -1, n_Vector_op_Block_397, n_VProj21_408, 3, e_pos0_31); - ext_grs_edge_t *e_pos0_36_412 = ext_grs_act_add_edge(pattern, "pos0_36_412", -1, n_Vector_op_Block_397, n_Vector_op_ProjData, 20); - ext_grs_edge_t *e_pos0_35_413 = ext_grs_act_add_edge(pattern, "pos0_35_413", -1, n_Vector_op_Block_397, n_Vector_op, 21); - ext_grs_edge_t *e_pos1_38_414 = ext_grs_act_add_edge(pattern, "pos1_38_414", 0, n_Arg_0_394, n_Vector_op, 22); - ext_grs_edge_t *e_pos1_37_415 = ext_grs_act_add_edge(pattern, "pos1_37_415", 0, n_Vector_op, n_Vector_op_ProjData, 23); - ext_grs_edge_t *e_pos1_34_416 = ext_grs_act_add_edge_to_keep(pattern, "pos1_34_416", 0, n_Arg_0_394, n_VProj1161_406, 5, e_pos1_34); - ext_grs_edge_t *e_pos2_39_417 = ext_grs_act_add_edge(pattern, "pos2_39_417", 1, n_Arg_1_395, n_Vector_op, 24); - ext_grs_edge_t *e_pos0_18_418 = ext_grs_act_add_edge_to_keep(pattern, "pos0_18_418", -1, n_Vector_op_Block_397, n_VProj17_396, 9, e_pos0_18); - ext_grs_edge_t *e_pos1_40_419 = ext_grs_act_add_edge(pattern, "pos1_40_419", 0, n_Vector_op_ProjData, n_VProj15_399, 25); - ext_grs_edge_t *e_pos1_41_420 = ext_grs_act_add_edge(pattern, "pos1_41_420", 0, n_Vector_op_ProjData, n_VProj17_396, 26); - ext_grs_edge_t *e_pos0_23_421 = ext_grs_act_add_edge_to_keep(pattern, "pos0_23_421", -1, n_Vector_op_Block_397, n_VProj19_401, 11, e_pos0_23); - ext_grs_edge_t *e_pos1_42_422 = ext_grs_act_add_edge(pattern, "pos1_42_422", 0, n_Vector_op_ProjData, n_VProj19_401, 27); - ext_grs_edge_t *e_pos1_21_423 = ext_grs_act_add_edge_to_keep(pattern, "pos1_21_423", 0, n_Arg_0_394, n_VProj1209_400, 14, e_pos1_21); - ext_grs_edge_t *e_pos1_22_424 = ext_grs_act_add_edge_to_keep(pattern, "pos1_22_424", 0, n_Arg_1_395, n_VProj1217_403, 15, e_pos1_22); - ext_grs_edge_t *e_pos1_43_425 = ext_grs_act_add_edge(pattern, "pos1_43_425", 0, n_Vector_op_ProjData, n_VProj21_408, 28); - ext_grs_edge_t *e_pos1_26_426 = ext_grs_act_add_edge_to_keep(pattern, "pos1_26_426", 0, n_Arg_1_395, n_VProj1169_402, 16, e_pos1_26); - ext_grs_edge_t *e_pos1_27_427 = ext_grs_act_add_edge_to_keep(pattern, "pos1_27_427", 0, n_Arg_0_394, n_VProj1137_404, 17, e_pos1_27); - ext_grs_edge_t *e_pos1_28_428 = ext_grs_act_add_edge_to_keep(pattern, "pos1_28_428", 0, n_Arg_0_394, n_VProj1185_405, 18, e_pos1_28); - ext_grs_edge_t *e_pos1_29_429 = ext_grs_act_add_edge_to_keep(pattern, "pos1_29_429", 0, n_Arg_1_395, n_VProj1193_398, 19, e_pos1_29); - - } /* The replacement */ - - /* Eval functions */ - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_36846); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_36849); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_36852); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_36855); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_36858); - } /* The Action */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* mulps_4_32_variant0 */ - - -/* functions for evaluation of conditions of action psadbw_variant0 */ -static int grs_cond_func_42812(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[171/* Proj2399 */]) == 0; -} -static int grs_cond_func_42815(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[66/* VProj3426 */]) == 12; -} -static int grs_cond_func_42818(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[447/* e299 */]) == get_edge_src_pos(edge_map[308/* e681 */]); -} -static int grs_cond_func_42821(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[84/* e300 */]) == get_edge_src_pos(edge_map[313/* e682 */]); -} -static int grs_cond_func_42824(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[81/* e304 */]) == get_edge_src_pos(edge_map[23/* e631 */]); -} -static int grs_cond_func_42827(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[78/* e305 */]) == get_edge_src_pos(edge_map[25/* e632 */]); -} -static int grs_cond_func_42830(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[230/* Proj2482 */]) == 4; -} -static int grs_cond_func_42833(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[30/* e321 */]) == get_edge_src_pos(edge_map[211/* e584 */]); -} -static int grs_cond_func_42836(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[32/* e322 */]) == get_edge_src_pos(edge_map[208/* e585 */]); -} -static int grs_cond_func_42839(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[213/* VProj3165 */]) == 9; -} -static int grs_cond_func_42842(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[240/* VProj2556 */]) == 2; -} -static int grs_cond_func_42845(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[225/* VProj3078 */]) == 8; -} -static int grs_cond_func_42848(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[81/* VProj3600 */]) == 14; -} -static int grs_cond_func_42851(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[212/* VProj3001 */]) == 7; -} -static int grs_cond_func_42854(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[94/* VProj2740 */]) == 4; -} -static int grs_cond_func_42857(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[59/* Proj2830 */]) == 4; -} -static int grs_cond_func_42860(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[236/* Proj2485 */]) == 1; -} -static int grs_cond_func_42863(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[107/* Proj3094 */]) == 1; -} -static int grs_cond_func_42866(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[237/* Proj3007 */]) == 1; -} -static int grs_cond_func_42869(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[270/* Proj3529 */]) == 1; -} -static int grs_cond_func_42872(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[280/* Proj2745 */]) == 0; -} -static int grs_cond_func_42875(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[35/* VProj3513 */]) == 13; -} -static int grs_cond_func_42878(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[30/* Proj3180 */]) == 0; -} -static int grs_cond_func_42881(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[262/* VProj3252 */]) == 10; -} -static int grs_cond_func_42884(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[57/* VProj2479 */]) == 1; -} -static int grs_cond_func_42887(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[252/* Proj2569 */]) == 4; -} -static int grs_cond_func_42890(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[0/* Proj3178 */]) == 4; -} -static int grs_cond_func_42893(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[28/* Proj3442 */]) == 1; -} -static int grs_cond_func_42896(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[110/* Proj3091 */]) == 4; -} -static int grs_cond_func_42899(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[259/* Proj3613 */]) == 4; -} -static int grs_cond_func_42902(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[32/* VProj2643 */]) == 3; -} -static int grs_cond_func_42905(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[254/* VProj2817 */]) == 5; -} -static int grs_cond_func_42908(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[277/* VProj2827 */]) == 5; -} -static int grs_cond_func_42911(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[31/* Proj3181 */]) == 1; -} -static int grs_cond_func_42914(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[234/* Proj2572 */]) == 1; -} -static int grs_cond_func_42917(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[265/* Proj3616 */]) == 1; -} -static int grs_cond_func_42920(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[271/* Proj3528 */]) == 0; -} -static int grs_cond_func_42923(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[49/* e453 */]) == get_edge_src_pos(edge_map[17/* e420 */]); -} -static int grs_cond_func_42926(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[50/* e454 */]) == get_edge_src_pos(edge_map[20/* e421 */]); -} -static int grs_cond_func_42929(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[123/* e460 */]) == get_edge_src_pos(edge_map[0/* e624 */]); -} -static int grs_cond_func_42932(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[122/* e461 */]) == get_edge_src_pos(edge_map[2/* e625 */]); -} -static int grs_cond_func_42935(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[119/* e464 */]) == get_edge_src_pos(edge_map[132/* e351 */]); -} -static int grs_cond_func_42938(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[118/* e465 */]) == get_edge_src_pos(edge_map[130/* e352 */]); -} -static int grs_cond_func_42941(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[98/* Proj2919 */]) == 0; -} -static int grs_cond_func_42944(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[116/* VProj3436 */]) == 12; -} -static int grs_cond_func_42947(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[276/* Proj3526 */]) == 4; -} -static int grs_cond_func_42950(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[101/* e478 */]) == get_edge_src_pos(edge_map[45/* e312 */]); -} -static int grs_cond_func_42953(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[104/* e479 */]) == get_edge_src_pos(edge_map[48/* e313 */]); -} -static int grs_cond_func_42956(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[149/* e489 */]) == get_edge_src_pos(edge_map[5/* e523 */]); -} -static int grs_cond_func_42959(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[157/* e490 */]) == get_edge_src_pos(edge_map[6/* e524 */]); -} -static int grs_cond_func_42962(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[135/* e492 */]) == get_edge_src_pos(edge_map[87/* e715 */]); -} -static int grs_cond_func_42965(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[140/* e493 */]) == get_edge_src_pos(edge_map[85/* e716 */]); -} -static int grs_cond_func_42968(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[49/* VProj3339 */]) == 11; -} -static int grs_cond_func_42971(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[50/* VProj2566 */]) == 2; -} -static int grs_cond_func_42974(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[222/* VProj3175 */]) == 9; -} -static int grs_cond_func_42977(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[214/* Proj3354 */]) == 0; -} -static int grs_cond_func_42980(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[178/* Proj3265 */]) == 4; -} -static int grs_cond_func_42983(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[191/* Proj2656 */]) == 4; -} -static int grs_cond_func_42986(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[242/* VProj3088 */]) == 8; -} -static int grs_cond_func_42989(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[42/* VProj3610 */]) == 14; -} -static int grs_cond_func_42992(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[181/* Proj3268 */]) == 1; -} -static int grs_cond_func_42995(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[43/* Proj3700 */]) == 4; -} -static int grs_cond_func_42998(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[245/* VProj3687 */]) == 15; -} -static int grs_cond_func_43001(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[153/* VProj2904 */]) == 6; -} -static int grs_cond_func_43004(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[170/* Proj2397 */]) == 4; -} -static int grs_cond_func_43007(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[192/* Proj2658 */]) == 0; -} -static int grs_cond_func_43010(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[193/* Proj2659 */]) == 1; -} -static int grs_cond_func_43013(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[347/* e556 */]) == get_edge_src_pos(edge_map[340/* e403 */]); -} -static int grs_cond_func_43016(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[345/* e557 */]) == get_edge_src_pos(edge_map[344/* e404 */]); -} -static int grs_cond_func_43019(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[60/* Proj2833 */]) == 1; -} -static int grs_cond_func_43022(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[286/* e573 */]) == get_edge_src_pos(edge_map[8/* e433 */]); -} -static int grs_cond_func_43025(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[290/* e574 */]) == get_edge_src_pos(edge_map[10/* e434 */]); -} -static int grs_cond_func_43028(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[39/* Proj3702 */]) == 0; -} -static int grs_cond_func_43031(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[51/* VProj3523 */]) == 13; -} -static int grs_cond_func_43034(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[106/* Proj3093 */]) == 0; -} -static int grs_cond_func_43037(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[215/* Proj3352 */]) == 4; -} -static int grs_cond_func_43040(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[238/* Proj2484 */]) == 0; -} -static int grs_cond_func_43043(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[287/* VProj3262 */]) == 10; -} -static int grs_cond_func_43046(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[6/* VProj2385 */]) == 0; -} -static int grs_cond_func_43049(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[17/* VProj2653 */]) == 3; -} -static int grs_cond_func_43052(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[195/* VProj3697 */]) == 15; -} -static int grs_cond_func_43055(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[209/* Proj3355 */]) == 1; -} -static int grs_cond_func_43058(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[101/* Proj2917 */]) == 4; -} -static int grs_cond_func_43061(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[21/* VProj2394 */]) == 0; -} -static int grs_cond_func_43064(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[112/* VProj2730 */]) == 4; -} -static int grs_cond_func_43067(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[27/* Proj3441 */]) == 0; -} -static int grs_cond_func_43070(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[38/* Proj3703 */]) == 1; -} -static int grs_cond_func_43073(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[105/* Proj2920 */]) == 1; -} -static int grs_cond_func_43076(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[56/* Proj2832 */]) == 0; -} -static int grs_cond_func_43079(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[33/* VProj3349 */]) == 11; -} -static int grs_cond_func_43082(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[13/* Proj3439 */]) == 4; -} -static int grs_cond_func_43085(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[179/* Proj3267 */]) == 0; -} -static int grs_cond_func_43088(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[319/* e688 */]) == get_edge_src_pos(edge_map[28/* e427 */]); -} -static int grs_cond_func_43091(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[317/* e689 */]) == get_edge_src_pos(edge_map[26/* e428 */]); -} -static int grs_cond_func_43094(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[339/* e692 */]) == get_edge_src_pos(edge_map[144/* e497 */]); -} -static int grs_cond_func_43097(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[343/* e693 */]) == get_edge_src_pos(edge_map[143/* e498 */]); -} -static int grs_cond_func_43100(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[44/* VProj2469 */]) == 1; -} -static int grs_cond_func_43103(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[69/* e700 */]) == get_edge_src_pos(edge_map[155/* e617 */]); -} -static int grs_cond_func_43106(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[66/* e701 */]) == get_edge_src_pos(edge_map[156/* e618 */]); -} -static int grs_cond_func_43109(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[10/* VProj2991 */]) == 7; -} -static int grs_cond_func_43112(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[57/* e705 */]) == get_edge_src_pos(edge_map[18/* e325 */]); -} -static int grs_cond_func_43115(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[59/* e706 */]) == get_edge_src_pos(edge_map[21/* e326 */]); -} -static int grs_cond_func_43118(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[257/* VProj2914 */]) == 6; -} -static int grs_cond_func_43121(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[90/* e711 */]) == get_edge_src_pos(edge_map[352/* e552 */]); -} -static int grs_cond_func_43124(ir_node **node_map, const ir_edge_t **edge_map) { - return get_edge_src_pos(edge_map[89/* e712 */]) == get_edge_src_pos(edge_map[350/* e553 */]); -} -static int grs_cond_func_43127(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[227/* Proj3004 */]) == 4; -} -static int grs_cond_func_43130(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[283/* Proj2743 */]) == 4; -} -static int grs_cond_func_43133(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[65/* Proj2400 */]) == 1; -} -static int grs_cond_func_43136(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[231/* Proj2571 */]) == 0; -} -static int grs_cond_func_43139(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[263/* Proj3615 */]) == 0; -} -static int grs_cond_func_43142(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[282/* Proj2746 */]) == 1; -} -static int grs_cond_func_43145(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[232/* Proj3006 */]) == 0; -} - -static void *grs_eval_out_func_44235(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { - set_Proj_proj(rpl_node_map[290/* Vector_op_ProjData */], 0); - return(NULL); -} -static void *grs_eval_out_func_44238(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[292/* VProj290 */], 0); - return(NULL); -} -/* functions for building the pattern of action psadbw_variant0 */ -static _inline ext_grs_action_t *grs_action_psadbw_variant0_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_rule, "psadbw_variant0"); - int check; - { /* The action */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - ext_grs_node_t *n_Proj3178 = ext_grs_act_add_node(pattern, "Proj3178", grs_op_Proj, mode_b, 0); - ext_grs_node_t *n_Sub3234 = ext_grs_act_add_node(pattern, "Sub3234", grs_op_Sub, mode_Is, 1); - ext_grs_node_t *n_Sub3556 = ext_grs_act_add_node(pattern, "Sub3556", grs_op_Sub, mode_Is, 2); - ext_grs_node_t *n_Phi3620 = ext_grs_act_add_node(pattern, "Phi3620", grs_op_Phi, mode_Is, 3); - ext_grs_node_t *n_Block3329 = ext_grs_act_add_node(pattern, "Block3329", grs_op_Block, mode_BB, 4); - ext_grs_node_t *n_Sub2886 = ext_grs_act_add_node(pattern, "Sub2886", grs_op_Sub, mode_Is, 5); - ext_grs_node_t *n_VProj2385 = ext_grs_act_add_node(pattern, "VProj2385", grs_op_VProj, mode_Bu, 6); - ext_grs_node_t *n_Conv2818 = ext_grs_act_add_node(pattern, "Conv2818", grs_op_Conv, mode_Is, 7); - ext_grs_node_t *n_Block3328 = ext_grs_act_add_node(pattern, "Block3328", grs_op_Block, mode_BB, 8); - ext_grs_node_t *n_Conv2915 = ext_grs_act_add_node(pattern, "Conv2915", grs_op_Conv, mode_Is, 9); - ext_grs_node_t *n_VProj2991 = ext_grs_act_add_node(pattern, "VProj2991", grs_op_VProj, mode_Bu, 10); - ext_grs_node_t *n_Cond3527 = ext_grs_act_add_node(pattern, "Cond3527", grs_op_Cond, mode_T, 11); - ext_grs_node_t *n_Jmp2948 = ext_grs_act_add_node(pattern, "Jmp2948", grs_op_Jmp, mode_X, 12); - ext_grs_node_t *n_Proj3439 = ext_grs_act_add_node(pattern, "Proj3439", grs_op_Proj, mode_b, 13); - ext_grs_node_t *n_Sub3034 = ext_grs_act_add_node(pattern, "Sub3034", grs_op_Sub, mode_Is, 14); - ext_grs_node_t *n_Sub2686 = ext_grs_act_add_node(pattern, "Sub2686", grs_op_Sub, mode_Is, 15); - ext_grs_node_t *n_Sub3756 = ext_grs_act_add_node(pattern, "Sub3756", grs_op_Sub, mode_Is, 16); - ext_grs_node_t *n_VProj2653 = ext_grs_act_add_node(pattern, "VProj2653", grs_op_VProj, mode_Bu, 17); - ext_grs_node_t *n_Jmp3061 = ext_grs_act_add_node(pattern, "Jmp3061", grs_op_Jmp, mode_X, 18); - ext_grs_node_t *n_Conv2828 = ext_grs_act_add_node(pattern, "Conv2828", grs_op_Conv, mode_Is, 19); - ext_grs_node_t *n_Jmp2539 = ext_grs_act_add_node(pattern, "Jmp2539", grs_op_Jmp, mode_X, 20); - ext_grs_node_t *n_VProj2394 = ext_grs_act_add_node(pattern, "VProj2394", grs_op_VProj, mode_Bu, 21); - ext_grs_node_t *n_Sub3321 = ext_grs_act_add_node(pattern, "Sub3321", grs_op_Sub, mode_Is, 22); - ext_grs_node_t *n_Sub3643 = ext_grs_act_add_node(pattern, "Sub3643", grs_op_Sub, mode_Is, 23); - ext_grs_node_t *n_Conv3089 = ext_grs_act_add_node(pattern, "Conv3089", grs_op_Conv, mode_Is, 24); - ext_grs_node_t *n_Sub3121 = ext_grs_act_add_node(pattern, "Sub3121", grs_op_Sub, mode_Is, 25); - ext_grs_node_t *n_Phi3707 = ext_grs_act_add_node(pattern, "Phi3707", grs_op_Phi, mode_Is, 26); - ext_grs_node_t *n_Proj3441 = ext_grs_act_add_node(pattern, "Proj3441", grs_op_Proj, mode_X, 27); - ext_grs_node_t *n_Proj3442 = ext_grs_act_add_node(pattern, "Proj3442", grs_op_Proj, mode_X, 28); - ext_grs_node_t *n_Cond3440 = ext_grs_act_add_node(pattern, "Cond3440", grs_op_Cond, mode_T, 29); - ext_grs_node_t *n_Proj3180 = ext_grs_act_add_node(pattern, "Proj3180", grs_op_Proj, mode_X, 30); - ext_grs_node_t *n_Proj3181 = ext_grs_act_add_node(pattern, "Proj3181", grs_op_Proj, mode_X, 31); - ext_grs_node_t *n_VProj2643 = ext_grs_act_add_node(pattern, "VProj2643", grs_op_VProj, mode_Bu, 32); - ext_grs_node_t *n_VProj3349 = ext_grs_act_add_node(pattern, "VProj3349", grs_op_VProj, mode_Bu, 33); - ext_grs_node_t *n_Jmp2626 = ext_grs_act_add_node(pattern, "Jmp2626", grs_op_Jmp, mode_X, 34); - ext_grs_node_t *n_VProj3513 = ext_grs_act_add_node(pattern, "VProj3513", grs_op_VProj, mode_Bu, 35); - ext_grs_node_t *n_Jmp3322 = ext_grs_act_add_node(pattern, "Jmp3322", grs_op_Jmp, mode_X, 36); - ext_grs_node_t *n_Phi2489 = ext_grs_act_add_node(pattern, "Phi2489", grs_op_Phi, mode_Is, 37); - ext_grs_node_t *n_Proj3703 = ext_grs_act_add_node(pattern, "Proj3703", grs_op_Proj, mode_X, 38); - ext_grs_node_t *n_Proj3702 = ext_grs_act_add_node(pattern, "Proj3702", grs_op_Proj, mode_X, 39); - ext_grs_node_t *n_Jmp2427 = ext_grs_act_add_node(pattern, "Jmp2427", grs_op_Jmp, mode_X, 40); - ext_grs_node_t *n_Block3099 = ext_grs_act_add_node(pattern, "Block3099", grs_op_Block, mode_BB, 41); - ext_grs_node_t *n_VProj3610 = ext_grs_act_add_node(pattern, "VProj3610", grs_op_VProj, mode_Bu, 42); - ext_grs_node_t *n_Proj3700 = ext_grs_act_add_node(pattern, "Proj3700", grs_op_Proj, mode_b, 43); - ext_grs_node_t *n_VProj2469 = ext_grs_act_add_node(pattern, "VProj2469", grs_op_VProj, mode_Bu, 44); - ext_grs_node_t *n_Conv3688 = ext_grs_act_add_node(pattern, "Conv3688", grs_op_Conv, mode_Is, 45); - ext_grs_node_t *n_Add2544 = ext_grs_act_add_node(pattern, "Add2544", grs_op_Add, mode_Is, 46); - ext_grs_node_t *n_Sub3730 = ext_grs_act_add_node(pattern, "Sub3730", grs_op_Sub, mode_Is, 47); - ext_grs_node_t *n_Jmp3035 = ext_grs_act_add_node(pattern, "Jmp3035", grs_op_Jmp, mode_X, 48); - ext_grs_node_t *n_VProj3339 = ext_grs_act_add_node(pattern, "VProj3339", grs_op_VProj, mode_Bu, 49); - ext_grs_node_t *n_VProj2566 = ext_grs_act_add_node(pattern, "VProj2566", grs_op_VProj, mode_Bu, 50); - ext_grs_node_t *n_VProj3523 = ext_grs_act_add_node(pattern, "VProj3523", grs_op_VProj, mode_Bu, 51); - ext_grs_node_t *n_Phi3870 = ext_grs_act_add_node(pattern, "Phi3870", grs_op_Phi, mode_Is, 52); - ext_grs_node_t *n_Conv3698 = ext_grs_act_add_node(pattern, "Conv3698", grs_op_Conv, mode_Is, 53); - ext_grs_node_t *n_Sub3208 = ext_grs_act_add_node(pattern, "Sub3208", grs_op_Sub, mode_Is, 54); - ext_grs_node_t *n_Sub3669 = ext_grs_act_add_node(pattern, "Sub3669", grs_op_Sub, mode_Is, 55); - ext_grs_node_t *n_Proj2832 = ext_grs_act_add_node(pattern, "Proj2832", grs_op_Proj, mode_X, 56); - ext_grs_node_t *n_VProj2479 = ext_grs_act_add_node(pattern, "VProj2479", grs_op_VProj, mode_Bu, 57); - ext_grs_node_t *n_Sub2799 = ext_grs_act_add_node(pattern, "Sub2799", grs_op_Sub, mode_Is, 58); - ext_grs_node_t *n_Proj2830 = ext_grs_act_add_node(pattern, "Proj2830", grs_op_Proj, mode_b, 59); - ext_grs_node_t *n_Proj2833 = ext_grs_act_add_node(pattern, "Proj2833", grs_op_Proj, mode_X, 60); - ext_grs_node_t *n_Block3677 = ext_grs_act_add_node(pattern, "Block3677", grs_op_Block, mode_BB, 61); - ext_grs_node_t *n_Sub3147 = ext_grs_act_add_node(pattern, "Sub3147", grs_op_Sub, mode_Is, 62); - ext_grs_node_t *n_Block3676 = ext_grs_act_add_node(pattern, "Block3676", grs_op_Block, mode_BB, 63); - ext_grs_node_t *n_Phi2750 = ext_grs_act_add_node(pattern, "Phi2750", grs_op_Phi, mode_Is, 64); - ext_grs_node_t *n_Proj2400 = ext_grs_act_add_node(pattern, "Proj2400", grs_op_Proj, mode_X, 65); - ext_grs_node_t *n_VProj3426 = ext_grs_act_add_node(pattern, "VProj3426", grs_op_VProj, mode_Bu, 66); - ext_grs_node_t *n_Phi3098 = ext_grs_act_add_node(pattern, "Phi3098", grs_op_Phi, mode_Is, 67); - ext_grs_node_t *n_Jmp2600 = ext_grs_act_add_node(pattern, "Jmp2600", grs_op_Jmp, mode_X, 68); - ext_grs_node_t *n_Jmp3409 = ext_grs_act_add_node(pattern, "Jmp3409", grs_op_Jmp, mode_X, 69); - ext_grs_node_t *n_Jmp2887 = ext_grs_act_add_node(pattern, "Jmp2887", grs_op_Jmp, mode_X, 70); - ext_grs_node_t *n_Jmp3209 = ext_grs_act_add_node(pattern, "Jmp3209", grs_op_Jmp, mode_X, 71); - ext_grs_node_t *n_Conv3514 = ext_grs_act_add_node(pattern, "Conv3514", grs_op_Conv, mode_Is, 72); - ext_grs_node_t *n_Add2979 = ext_grs_act_add_node(pattern, "Add2979", grs_op_Add, mode_Is, 73); - ext_grs_node_t *n_Block3360 = ext_grs_act_add_node(pattern, "Block3360", grs_op_Block, mode_BB, 74); - ext_grs_node_t *n_Cond2570 = ext_grs_act_add_node(pattern, "Cond2570", grs_op_Cond, mode_T, 75); - ext_grs_node_t *n_Block3067 = ext_grs_act_add_node(pattern, "Block3067", grs_op_Block, mode_BB, 76); - ext_grs_node_t *n_Arg_0 = ext_grs_act_add_node(pattern, "Arg_0", grs_op_VectorBase, mode_ANY, 77); - ext_grs_node_t *n_Arg_1 = ext_grs_act_add_node(pattern, "Arg_1", grs_op_VectorBase, mode_ANY, 78); - ext_grs_node_t *n_Block3068 = ext_grs_act_add_node(pattern, "Block3068", grs_op_Block, mode_BB, 79); - ext_grs_node_t *n_Add3588 = ext_grs_act_add_node(pattern, "Add3588", grs_op_Add, mode_Is, 80); - ext_grs_node_t *n_VProj3600 = ext_grs_act_add_node(pattern, "VProj3600", grs_op_VProj, mode_Bu, 81); - ext_grs_node_t *n_Conv2644 = ext_grs_act_add_node(pattern, "Conv2644", grs_op_Conv, mode_Is, 82); - ext_grs_node_t *n_Cond2831 = ext_grs_act_add_node(pattern, "Cond2831", grs_op_Cond, mode_T, 83); - ext_grs_node_t *n_Cond3179 = ext_grs_act_add_node(pattern, "Cond3179", grs_op_Cond, mode_T, 84); - ext_grs_node_t *n_Conv3253 = ext_grs_act_add_node(pattern, "Conv3253", grs_op_Conv, mode_Is, 85); - ext_grs_node_t *n_Block2894 = ext_grs_act_add_node(pattern, "Block2894", grs_op_Block, mode_BB, 86); - ext_grs_node_t *n_Block3273 = ext_grs_act_add_node(pattern, "Block3273", grs_op_Block, mode_BB, 87); - ext_grs_node_t *n_Block2893 = ext_grs_act_add_node(pattern, "Block2893", grs_op_Block, mode_BB, 88); - ext_grs_node_t *n_Jmp3731 = ext_grs_act_add_node(pattern, "Jmp3731", grs_op_Jmp, mode_X, 89); - ext_grs_node_t *n_Block2751 = ext_grs_act_add_node(pattern, "Block2751", grs_op_Block, mode_BB, 90); - ext_grs_node_t *n_Block2490 = ext_grs_act_add_node(pattern, "Block2490", grs_op_Block, mode_BB, 91); - ext_grs_node_t *n_Sub2773 = ext_grs_act_add_node(pattern, "Sub2773", grs_op_Sub, mode_Is, 92); - ext_grs_node_t *n_Jmp2974 = ext_grs_act_add_node(pattern, "Jmp2974", grs_op_Jmp, mode_X, 93); - ext_grs_node_t *n_VProj2740 = ext_grs_act_add_node(pattern, "VProj2740", grs_op_VProj, mode_Bu, 94); - ext_grs_node_t *n_Conv2654 = ext_grs_act_add_node(pattern, "Conv2654", grs_op_Conv, mode_Is, 95); - ext_grs_node_t *n_Phi2924 = ext_grs_act_add_node(pattern, "Phi2924", grs_op_Phi, mode_Is, 96); - ext_grs_node_t *n_Phi2837 = ext_grs_act_add_node(pattern, "Phi2837", grs_op_Phi, mode_Is, 97); - ext_grs_node_t *n_Proj2919 = ext_grs_act_add_node(pattern, "Proj2919", grs_op_Proj, mode_X, 98); - ext_grs_node_t *n_Block3241 = ext_grs_act_add_node(pattern, "Block3241", grs_op_Block, mode_BB, 99); - ext_grs_node_t *n_Block3242 = ext_grs_act_add_node(pattern, "Block3242", grs_op_Block, mode_BB, 100); - ext_grs_node_t *n_Proj2917 = ext_grs_act_add_node(pattern, "Proj2917", grs_op_Proj, mode_b, 101); - ext_grs_node_t *n_Conv3263 = ext_grs_act_add_node(pattern, "Conv3263", grs_op_Conv, mode_Is, 102); - ext_grs_node_t *n_Block3621 = ext_grs_act_add_node(pattern, "Block3621", grs_op_Block, mode_BB, 103); - ext_grs_node_t *n_Add3066 = ext_grs_act_add_node(pattern, "Add3066", grs_op_Add, mode_Is, 104); - ext_grs_node_t *n_Proj2920 = ext_grs_act_add_node(pattern, "Proj2920", grs_op_Proj, mode_X, 105); - ext_grs_node_t *n_Proj3093 = ext_grs_act_add_node(pattern, "Proj3093", grs_op_Proj, mode_X, 106); - ext_grs_node_t *n_Proj3094 = ext_grs_act_add_node(pattern, "Proj3094", grs_op_Proj, mode_X, 107); - ext_grs_node_t *n_Jmp2861 = ext_grs_act_add_node(pattern, "Jmp2861", grs_op_Jmp, mode_X, 108); - ext_grs_node_t *n_Block3447 = ext_grs_act_add_node(pattern, "Block3447", grs_op_Block, mode_BB, 109); - ext_grs_node_t *n_Proj3091 = ext_grs_act_add_node(pattern, "Proj3091", grs_op_Proj, mode_b, 110); - ext_grs_node_t *n_Block3589 = ext_grs_act_add_node(pattern, "Block3589", grs_op_Block, mode_BB, 111); - ext_grs_node_t *n_VProj2730 = ext_grs_act_add_node(pattern, "VProj2730", grs_op_VProj, mode_Bu, 112); - ext_grs_node_t *n_Cond3266 = ext_grs_act_add_node(pattern, "Cond3266", grs_op_Cond, mode_T, 113); - ext_grs_node_t *n_Jmp2713 = ext_grs_act_add_node(pattern, "Jmp2713", grs_op_Jmp, mode_X, 114); - ext_grs_node_t *n_Sub3382 = ext_grs_act_add_node(pattern, "Sub3382", grs_op_Sub, mode_Is, 115); - ext_grs_node_t *n_VProj3436 = ext_grs_act_add_node(pattern, "VProj3436", grs_op_VProj, mode_Bu, 116); - ext_grs_node_t *n_Block3590 = ext_grs_act_add_node(pattern, "Block3590", grs_op_Block, mode_BB, 117); - ext_grs_node_t *n_Conv2905 = ext_grs_act_add_node(pattern, "Conv2905", grs_op_Conv, mode_Is, 118); - ext_grs_node_t *n_Conv2395 = ext_grs_act_add_node(pattern, "Conv2395", grs_op_Conv, mode_Is, 119); - ext_grs_node_t *n_Jmp3583 = ext_grs_act_add_node(pattern, "Jmp3583", grs_op_Jmp, mode_X, 120); - ext_grs_node_t *n_Block3186 = ext_grs_act_add_node(pattern, "Block3186", grs_op_Block, mode_BB, 121); - ext_grs_node_t *n_Block2376 = ext_grs_act_add_node(pattern, "Block2376", grs_op_Block, mode_BB, 122); - ext_grs_node_t *n_Block2377 = ext_grs_act_add_node(pattern, "Block2377", grs_op_Block, mode_BB, 123); - ext_grs_node_t *n_Add2892 = ext_grs_act_add_node(pattern, "Add2892", grs_op_Add, mode_Is, 124); - ext_grs_node_t *n_Jmp2453 = ext_grs_act_add_node(pattern, "Jmp2453", grs_op_Jmp, mode_X, 125); - ext_grs_node_t *n_Add3327 = ext_grs_act_add_node(pattern, "Add3327", grs_op_Add, mode_Is, 126); - ext_grs_node_t *n_Conv3350 = ext_grs_act_add_node(pattern, "Conv3350", grs_op_Conv, mode_Is, 127); - ext_grs_node_t *n_Sub2947 = ext_grs_act_add_node(pattern, "Sub2947", grs_op_Sub, mode_Is, 128); - ext_grs_node_t *n_Block2720 = ext_grs_act_add_node(pattern, "Block2720", grs_op_Block, mode_BB, 129); - ext_grs_node_t *n_Cond2483 = ext_grs_act_add_node(pattern, "Cond2483", grs_op_Cond, mode_T, 130); - ext_grs_node_t *n_Block3534 = ext_grs_act_add_node(pattern, "Block3534", grs_op_Block, mode_BB, 131); - ext_grs_node_t *n_Jmp3383 = ext_grs_act_add_node(pattern, "Jmp3383", grs_op_Jmp, mode_X, 132); - ext_grs_node_t *n_Cmp5646 = ext_grs_act_add_node(pattern, "Cmp5646", grs_op_Cmp, mode_T, 133); - ext_grs_node_t *n_Cmp5647 = ext_grs_act_add_node(pattern, "Cmp5647", grs_op_Cmp, mode_T, 134); - ext_grs_node_t *n_Cmp5648 = ext_grs_act_add_node(pattern, "Cmp5648", grs_op_Cmp, mode_T, 135); - ext_grs_node_t *n_Sub2512 = ext_grs_act_add_node(pattern, "Sub2512", grs_op_Sub, mode_Is, 136); - ext_grs_node_t *n_Cmp5649 = ext_grs_act_add_node(pattern, "Cmp5649", grs_op_Cmp, mode_T, 137); - ext_grs_node_t *n_Block2458 = ext_grs_act_add_node(pattern, "Block2458", grs_op_Block, mode_BB, 138); - ext_grs_node_t *n_Cmp5645 = ext_grs_act_add_node(pattern, "Cmp5645", grs_op_Cmp, mode_T, 139); - ext_grs_node_t *n_Phi3185 = ext_grs_act_add_node(pattern, "Phi3185", grs_op_Phi, mode_Is, 140); - ext_grs_node_t *n_Block2925 = ext_grs_act_add_node(pattern, "Block2925", grs_op_Block, mode_BB, 141); - ext_grs_node_t *n_Block2459 = ext_grs_act_add_node(pattern, "Block2459", grs_op_Block, mode_BB, 142); - ext_grs_node_t *n_Block2719 = ext_grs_act_add_node(pattern, "Block2719", grs_op_Block, mode_BB, 143); - ext_grs_node_t *n_Add3240 = ext_grs_act_add_node(pattern, "Add3240", grs_op_Add, mode_Is, 144); - ext_grs_node_t *n_Phi2576 = ext_grs_act_add_node(pattern, "Phi2576", grs_op_Phi, mode_Is, 145); - ext_grs_node_t *n_Cond3092 = ext_grs_act_add_node(pattern, "Cond3092", grs_op_Cond, mode_T, 146); - ext_grs_node_t *n_Cond2657 = ext_grs_act_add_node(pattern, "Cond2657", grs_op_Cond, mode_T, 147); - ext_grs_node_t *n_Jmp3670 = ext_grs_act_add_node(pattern, "Jmp3670", grs_op_Jmp, mode_X, 148); - ext_grs_node_t *n_Conv2470 = ext_grs_act_add_node(pattern, "Conv2470", grs_op_Conv, mode_Is, 149); - ext_grs_node_t *n_Conv3340 = ext_grs_act_add_node(pattern, "Conv3340", grs_op_Conv, mode_Is, 150); - ext_grs_node_t *n_Block2664 = ext_grs_act_add_node(pattern, "Block2664", grs_op_Block, mode_BB, 151); - ext_grs_node_t *n_Conv3002 = ext_grs_act_add_node(pattern, "Conv3002", grs_op_Conv, mode_Is, 152); - ext_grs_node_t *n_VProj2904 = ext_grs_act_add_node(pattern, "VProj2904", grs_op_VProj, mode_Bu, 153); - ext_grs_node_t *n_Sub2426 = ext_grs_act_add_node(pattern, "Sub2426", grs_op_Sub, mode_Is, 154); - ext_grs_node_t *n_Cond2398 = ext_grs_act_add_node(pattern, "Cond2398", grs_op_Cond, mode_T, 155); - ext_grs_node_t *n_Cmp5659 = ext_grs_act_add_node(pattern, "Cmp5659", grs_op_Cmp, mode_T, 156); - ext_grs_node_t *n_Cmp5657 = ext_grs_act_add_node(pattern, "Cmp5657", grs_op_Cmp, mode_T, 157); - ext_grs_node_t *n_Cond2918 = ext_grs_act_add_node(pattern, "Cond2918", grs_op_Cond, mode_T, 158); - ext_grs_node_t *n_Cmp5658 = ext_grs_act_add_node(pattern, "Cmp5658", grs_op_Cmp, mode_T, 159); - ext_grs_node_t *n_Block3708 = ext_grs_act_add_node(pattern, "Block3708", grs_op_Block, mode_BB, 160); - ext_grs_node_t *n_Conv2480 = ext_grs_act_add_node(pattern, "Conv2480", grs_op_Conv, mode_Is, 161); - ext_grs_node_t *n_Cmp5656 = ext_grs_act_add_node(pattern, "Cmp5656", grs_op_Cmp, mode_T, 162); - ext_grs_node_t *n_Cmp5655 = ext_grs_act_add_node(pattern, "Cmp5655", grs_op_Cmp, mode_T, 163); - ext_grs_node_t *n_Cmp5654 = ext_grs_act_add_node(pattern, "Cmp5654", grs_op_Cmp, mode_T, 164); - ext_grs_node_t *n_Cmp5653 = ext_grs_act_add_node(pattern, "Cmp5653", grs_op_Cmp, mode_T, 165); - ext_grs_node_t *n_Cmp5652 = ext_grs_act_add_node(pattern, "Cmp5652", grs_op_Cmp, mode_T, 166); - ext_grs_node_t *n_Cmp5651 = ext_grs_act_add_node(pattern, "Cmp5651", grs_op_Cmp, mode_T, 167); - ext_grs_node_t *n_Cmp5650 = ext_grs_act_add_node(pattern, "Cmp5650", grs_op_Cmp, mode_T, 168); - ext_grs_node_t *n_Conv2386 = ext_grs_act_add_node(pattern, "Conv2386", grs_op_Conv, mode_Is, 169); - ext_grs_node_t *n_Proj2397 = ext_grs_act_add_node(pattern, "Proj2397", grs_op_Proj, mode_b, 170); - ext_grs_node_t *n_Proj2399 = ext_grs_act_add_node(pattern, "Proj2399", grs_op_Proj, mode_X, 171); - ext_grs_node_t *n_Phi2663 = ext_grs_act_add_node(pattern, "Phi2663", grs_op_Phi, mode_Is, 172); - ext_grs_node_t *n_Block3415 = ext_grs_act_add_node(pattern, "Block3415", grs_op_Block, mode_BB, 173); - ext_grs_node_t *n_Block3416 = ext_grs_act_add_node(pattern, "Block3416", grs_op_Block, mode_BB, 174); - ext_grs_node_t *n_Jmp3757 = ext_grs_act_add_node(pattern, "Jmp3757", grs_op_Jmp, mode_X, 175); - ext_grs_node_t *n_Block2632 = ext_grs_act_add_node(pattern, "Block2632", grs_op_Block, mode_BB, 176); - ext_grs_node_t *n_Phi3533 = ext_grs_act_add_node(pattern, "Phi3533", grs_op_Phi, mode_Is, 177); - ext_grs_node_t *n_Proj3265 = ext_grs_act_add_node(pattern, "Proj3265", grs_op_Proj, mode_b, 178); - ext_grs_node_t *n_Proj3267 = ext_grs_act_add_node(pattern, "Proj3267", grs_op_Proj, mode_X, 179); - ext_grs_node_t *n_Conv3601 = ext_grs_act_add_node(pattern, "Conv3601", grs_op_Conv, mode_Is, 180); - ext_grs_node_t *n_Proj3268 = ext_grs_act_add_node(pattern, "Proj3268", grs_op_Proj, mode_X, 181); - ext_grs_node_t *n_Cond3614 = ext_grs_act_add_node(pattern, "Cond3614", grs_op_Cond, mode_T, 182); - ext_grs_node_t *n_Jmp3122 = ext_grs_act_add_node(pattern, "Jmp3122", grs_op_Jmp, mode_X, 183); - ext_grs_node_t *n_Conv3437 = ext_grs_act_add_node(pattern, "Conv3437", grs_op_Conv, mode_Is, 184); - ext_grs_node_t *n_Sub2625 = ext_grs_act_add_node(pattern, "Sub2625", grs_op_Sub, mode_Is, 185); - ext_grs_node_t *n_Block2633 = ext_grs_act_add_node(pattern, "Block2633", grs_op_Block, mode_BB, 186); - ext_grs_node_t *n_Sub2538 = ext_grs_act_add_node(pattern, "Sub2538", grs_op_Sub, mode_Is, 187); - ext_grs_node_t *n_Block3155 = ext_grs_act_add_node(pattern, "Block3155", grs_op_Block, mode_BB, 188); - ext_grs_node_t *n_Block3154 = ext_grs_act_add_node(pattern, "Block3154", grs_op_Block, mode_BB, 189); - ext_grs_node_t *n_Sub3295 = ext_grs_act_add_node(pattern, "Sub3295", grs_op_Sub, mode_Is, 190); - ext_grs_node_t *n_Proj2656 = ext_grs_act_add_node(pattern, "Proj2656", grs_op_Proj, mode_b, 191); - ext_grs_node_t *n_Proj2658 = ext_grs_act_add_node(pattern, "Proj2658", grs_op_Proj, mode_X, 192); - ext_grs_node_t *n_Proj2659 = ext_grs_act_add_node(pattern, "Proj2659", grs_op_Proj, mode_X, 193); - ext_grs_node_t *n_Conv2557 = ext_grs_act_add_node(pattern, "Conv2557", grs_op_Conv, mode_Is, 194); - ext_grs_node_t *n_VProj3697 = ext_grs_act_add_node(pattern, "VProj3697", grs_op_VProj, mode_Bu, 195); - ext_grs_node_t *n_Jmp3557 = ext_grs_act_add_node(pattern, "Jmp3557", grs_op_Jmp, mode_X, 196); - ext_grs_node_t *n_Vector_Result0_Add3762 = ext_grs_act_add_node(pattern, "Vector_Result0_Add3762", grs_op_Add, mode_Is, 197); - ext_grs_node_t *n_Block3012 = ext_grs_act_add_node(pattern, "Block3012", grs_op_Block, mode_BB, 198); - ext_grs_node_t *n_Jmp3235 = ext_grs_act_add_node(pattern, "Jmp3235", grs_op_Jmp, mode_X, 199); - ext_grs_node_t *n_Sub2712 = ext_grs_act_add_node(pattern, "Sub2712", grs_op_Sub, mode_Is, 200); - ext_grs_node_t *n_Block2838 = ext_grs_act_add_node(pattern, "Block2838", grs_op_Block, mode_BB, 201); - ext_grs_node_t *n_Block2545 = ext_grs_act_add_node(pattern, "Block2545", grs_op_Block, mode_BB, 202); - ext_grs_node_t *n_Add3153 = ext_grs_act_add_node(pattern, "Add3153", grs_op_Add, mode_Is, 203); - ext_grs_node_t *n_Phi3359 = ext_grs_act_add_node(pattern, "Phi3359", grs_op_Phi, mode_Is, 204); - ext_grs_node_t *n_Block2546 = ext_grs_act_add_node(pattern, "Block2546", grs_op_Block, mode_BB, 205); - ext_grs_node_t *n_Conv3611 = ext_grs_act_add_node(pattern, "Conv3611", grs_op_Conv, mode_Is, 206); - ext_grs_node_t *n_Conv3524 = ext_grs_act_add_node(pattern, "Conv3524", grs_op_Conv, mode_Is, 207); - ext_grs_node_t *n_Conv3427 = ext_grs_act_add_node(pattern, "Conv3427", grs_op_Conv, mode_Is, 208); - ext_grs_node_t *n_Proj3355 = ext_grs_act_add_node(pattern, "Proj3355", grs_op_Proj, mode_X, 209); - ext_grs_node_t *n_Cond3353 = ext_grs_act_add_node(pattern, "Cond3353", grs_op_Cond, mode_T, 210); - ext_grs_node_t *n_Cond2744 = ext_grs_act_add_node(pattern, "Cond2744", grs_op_Cond, mode_T, 211); - ext_grs_node_t *n_VProj3001 = ext_grs_act_add_node(pattern, "VProj3001", grs_op_VProj, mode_Bu, 212); - ext_grs_node_t *n_VProj3165 = ext_grs_act_add_node(pattern, "VProj3165", grs_op_VProj, mode_Bu, 213); - ext_grs_node_t *n_Proj3354 = ext_grs_act_add_node(pattern, "Proj3354", grs_op_Proj, mode_X, 214); - ext_grs_node_t *n_Proj3352 = ext_grs_act_add_node(pattern, "Proj3352", grs_op_Proj, mode_b, 215); - ext_grs_node_t *n_Add3414 = ext_grs_act_add_node(pattern, "Add3414", grs_op_Add, mode_Is, 216); - ext_grs_node_t *n_Conv2567 = ext_grs_act_add_node(pattern, "Conv2567", grs_op_Conv, mode_Is, 217); - ext_grs_node_t *n_Sub3495 = ext_grs_act_add_node(pattern, "Sub3495", grs_op_Sub, mode_Is, 218); - ext_grs_node_t *n_Jmp3148 = ext_grs_act_add_node(pattern, "Jmp3148", grs_op_Jmp, mode_X, 219); - ext_grs_node_t *n_Jmp2800 = ext_grs_act_add_node(pattern, "Jmp2800", grs_op_Jmp, mode_X, 220); - ext_grs_node_t *n_Sub2599 = ext_grs_act_add_node(pattern, "Sub2599", grs_op_Sub, mode_Is, 221); - ext_grs_node_t *n_VProj3175 = ext_grs_act_add_node(pattern, "VProj3175", grs_op_VProj, mode_Bu, 222); - ext_grs_node_t *n_Sub3408 = ext_grs_act_add_node(pattern, "Sub3408", grs_op_Sub, mode_Is, 223); - ext_grs_node_t *n_Sub2452 = ext_grs_act_add_node(pattern, "Sub2452", grs_op_Sub, mode_Is, 224); - ext_grs_node_t *n_VProj3078 = ext_grs_act_add_node(pattern, "VProj3078", grs_op_VProj, mode_Bu, 225); - ext_grs_node_t *n_Conv2741 = ext_grs_act_add_node(pattern, "Conv2741", grs_op_Conv, mode_Is, 226); - ext_grs_node_t *n_Proj3004 = ext_grs_act_add_node(pattern, "Proj3004", grs_op_Proj, mode_b, 227); - ext_grs_node_t *n_Add3501 = ext_grs_act_add_node(pattern, "Add3501", grs_op_Add, mode_Is, 228); - ext_grs_node_t *n_Cond3005 = ext_grs_act_add_node(pattern, "Cond3005", grs_op_Cond, mode_T, 229); - ext_grs_node_t *n_Proj2482 = ext_grs_act_add_node(pattern, "Proj2482", grs_op_Proj, mode_b, 230); - ext_grs_node_t *n_Proj2571 = ext_grs_act_add_node(pattern, "Proj2571", grs_op_Proj, mode_X, 231); - ext_grs_node_t *n_Proj3006 = ext_grs_act_add_node(pattern, "Proj3006", grs_op_Proj, mode_X, 232); - ext_grs_node_t *n_Jmp2774 = ext_grs_act_add_node(pattern, "Jmp2774", grs_op_Jmp, mode_X, 233); - ext_grs_node_t *n_Proj2572 = ext_grs_act_add_node(pattern, "Proj2572", grs_op_Proj, mode_X, 234); - ext_grs_node_t *n_Sub3469 = ext_grs_act_add_node(pattern, "Sub3469", grs_op_Sub, mode_Is, 235); - ext_grs_node_t *n_Proj2485 = ext_grs_act_add_node(pattern, "Proj2485", grs_op_Proj, mode_X, 236); - ext_grs_node_t *n_Proj3007 = ext_grs_act_add_node(pattern, "Proj3007", grs_op_Proj, mode_X, 237); - ext_grs_node_t *n_Proj2484 = ext_grs_act_add_node(pattern, "Proj2484", grs_op_Proj, mode_X, 238); - ext_grs_node_t *n_Add3675 = ext_grs_act_add_node(pattern, "Add3675", grs_op_Add, mode_Is, 239); - ext_grs_node_t *n_VProj2556 = ext_grs_act_add_node(pattern, "VProj2556", grs_op_VProj, mode_Bu, 240); - ext_grs_node_t *n_Jmp3296 = ext_grs_act_add_node(pattern, "Jmp3296", grs_op_Jmp, mode_X, 241); - ext_grs_node_t *n_VProj3088 = ext_grs_act_add_node(pattern, "VProj3088", grs_op_VProj, mode_Bu, 242); - ext_grs_node_t *n_Add2631 = ext_grs_act_add_node(pattern, "Add2631", grs_op_Add, mode_Is, 243); - ext_grs_node_t *n_Phi3272 = ext_grs_act_add_node(pattern, "Phi3272", grs_op_Phi, mode_Is, 244); - ext_grs_node_t *n_VProj3687 = ext_grs_act_add_node(pattern, "VProj3687", grs_op_VProj, mode_Bu, 245); - ext_grs_node_t *n_Sub2973 = ext_grs_act_add_node(pattern, "Sub2973", grs_op_Sub, mode_Is, 246); - ext_grs_node_t *n_Conv2731 = ext_grs_act_add_node(pattern, "Conv2731", grs_op_Conv, mode_Is, 247); - ext_grs_node_t *n_Jmp2687 = ext_grs_act_add_node(pattern, "Jmp2687", grs_op_Jmp, mode_X, 248); - ext_grs_node_t *n_Block2806 = ext_grs_act_add_node(pattern, "Block2806", grs_op_Block, mode_BB, 249); - ext_grs_node_t *n_Block2807 = ext_grs_act_add_node(pattern, "Block2807", grs_op_Block, mode_BB, 250); - ext_grs_node_t *n_Jmp3496 = ext_grs_act_add_node(pattern, "Jmp3496", grs_op_Jmp, mode_X, 251); - ext_grs_node_t *n_Proj2569 = ext_grs_act_add_node(pattern, "Proj2569", grs_op_Proj, mode_b, 252); - ext_grs_node_t *n_Conv3176 = ext_grs_act_add_node(pattern, "Conv3176", grs_op_Conv, mode_Is, 253); - ext_grs_node_t *n_VProj2817 = ext_grs_act_add_node(pattern, "VProj2817", grs_op_VProj, mode_Bu, 254); - ext_grs_node_t *n_Block2577 = ext_grs_act_add_node(pattern, "Block2577", grs_op_Block, mode_BB, 255); - ext_grs_node_t *n_Conv3079 = ext_grs_act_add_node(pattern, "Conv3079", grs_op_Conv, mode_Is, 256); - ext_grs_node_t *n_VProj2914 = ext_grs_act_add_node(pattern, "VProj2914", grs_op_VProj, mode_Bu, 257); - ext_grs_node_t *n_Add2805 = ext_grs_act_add_node(pattern, "Add2805", grs_op_Add, mode_Is, 258); - ext_grs_node_t *n_Proj3613 = ext_grs_act_add_node(pattern, "Proj3613", grs_op_Proj, mode_b, 259); - ext_grs_node_t *n_Block2980 = ext_grs_act_add_node(pattern, "Block2980", grs_op_Block, mode_BB, 260); - ext_grs_node_t *n_Block2981 = ext_grs_act_add_node(pattern, "Block2981", grs_op_Block, mode_BB, 261); - ext_grs_node_t *n_VProj3252 = ext_grs_act_add_node(pattern, "VProj3252", grs_op_VProj, mode_Bu, 262); - ext_grs_node_t *n_Proj3615 = ext_grs_act_add_node(pattern, "Proj3615", grs_op_Proj, mode_X, 263); - ext_grs_node_t *n_Sub2860 = ext_grs_act_add_node(pattern, "Sub2860", grs_op_Sub, mode_Is, 264); - ext_grs_node_t *n_Proj3616 = ext_grs_act_add_node(pattern, "Proj3616", grs_op_Proj, mode_X, 265); - ext_grs_node_t *n_Jmp2513 = ext_grs_act_add_node(pattern, "Jmp2513", grs_op_Jmp, mode_X, 266); - ext_grs_node_t *n_Cmp5660 = ext_grs_act_add_node(pattern, "Cmp5660", grs_op_Cmp, mode_T, 267); - ext_grs_node_t *n_Sub3582 = ext_grs_act_add_node(pattern, "Sub3582", grs_op_Sub, mode_Is, 268); - ext_grs_node_t *n_Sub3060 = ext_grs_act_add_node(pattern, "Sub3060", grs_op_Sub, mode_Is, 269); - ext_grs_node_t *n_Proj3529 = ext_grs_act_add_node(pattern, "Proj3529", grs_op_Proj, mode_X, 270); - ext_grs_node_t *n_Proj3528 = ext_grs_act_add_node(pattern, "Proj3528", grs_op_Proj, mode_X, 271); - ext_grs_node_t *n_Add2718 = ext_grs_act_add_node(pattern, "Add2718", grs_op_Add, mode_Is, 272); - ext_grs_node_t *n_Phi3446 = ext_grs_act_add_node(pattern, "Phi3446", grs_op_Phi, mode_Is, 273); - ext_grs_node_t *n_Conv3166 = ext_grs_act_add_node(pattern, "Conv3166", grs_op_Conv, mode_Is, 274); - ext_grs_node_t *n_Vector_op_Block = ext_grs_act_add_node(pattern, "Vector_op_Block", grs_op_Block, mode_BB, 275); - ext_grs_node_t *n_Proj3526 = ext_grs_act_add_node(pattern, "Proj3526", grs_op_Proj, mode_b, 276); - ext_grs_node_t *n_VProj2827 = ext_grs_act_add_node(pattern, "VProj2827", grs_op_VProj, mode_Bu, 277); - ext_grs_node_t *n_Block3503 = ext_grs_act_add_node(pattern, "Block3503", grs_op_Block, mode_BB, 278); - ext_grs_node_t *n_Block3502 = ext_grs_act_add_node(pattern, "Block3502", grs_op_Block, mode_BB, 279); - ext_grs_node_t *n_Proj2745 = ext_grs_act_add_node(pattern, "Proj2745", grs_op_Proj, mode_X, 280); - ext_grs_node_t *n_Jmp3470 = ext_grs_act_add_node(pattern, "Jmp3470", grs_op_Jmp, mode_X, 281); - ext_grs_node_t *n_Proj2746 = ext_grs_act_add_node(pattern, "Proj2746", grs_op_Proj, mode_X, 282); - ext_grs_node_t *n_Proj2743 = ext_grs_act_add_node(pattern, "Proj2743", grs_op_Proj, mode_b, 283); - ext_grs_node_t *n_Cond3701 = ext_grs_act_add_node(pattern, "Cond3701", grs_op_Cond, mode_T, 284); - ext_grs_node_t *n_Jmp3644 = ext_grs_act_add_node(pattern, "Jmp3644", grs_op_Jmp, mode_X, 285); - ext_grs_node_t *n_Conv2992 = ext_grs_act_add_node(pattern, "Conv2992", grs_op_Conv, mode_Is, 286); - ext_grs_node_t *n_VProj3262 = ext_grs_act_add_node(pattern, "VProj3262", grs_op_VProj, mode_Bu, 287); - ext_grs_node_t *n_Phi3011 = ext_grs_act_add_node(pattern, "Phi3011", grs_op_Phi, mode_Is, 288); - ext_grs_node_t *n_Block2404 = ext_grs_act_add_node(pattern, "Block2404", grs_op_Block, mode_BB, 289); - - /* The edges of the pattern */ - ext_grs_edge_t *e_e624 = ext_grs_act_add_edge(pattern, "e624", ext_grs_NO_EDGE_POS, n_Jmp3035, n_Block3012, 0); - ext_grs_edge_t *e_e334 = ext_grs_act_add_edge(pattern, "e334", ext_grs_NO_EDGE_POS, n_Proj3180, n_Block3155, 1); - ext_grs_edge_t *e_e625 = ext_grs_act_add_edge(pattern, "e625", ext_grs_NO_EDGE_POS, n_Jmp3061, n_Block3012, 2); - ext_grs_edge_t *e_e430 = ext_grs_act_add_edge(pattern, "e430", ext_grs_NO_EDGE_POS, n_Phi3446, n_Add3414, 3); - ext_grs_edge_t *e_e431 = ext_grs_act_add_edge(pattern, "e431", ext_grs_NO_EDGE_POS, n_Add3327, n_Add3414, 4); - ext_grs_edge_t *e_e523 = ext_grs_act_add_edge(pattern, "e523", ext_grs_NO_EDGE_POS, n_Jmp2861, n_Block2838, 5); - ext_grs_edge_t *e_e524 = ext_grs_act_add_edge(pattern, "e524", ext_grs_NO_EDGE_POS, n_Jmp2887, n_Block2838, 6); - ext_grs_edge_t *e_pos2_621 = ext_grs_act_add_edge(pattern, "pos2_621", 1, n_Conv2470, n_Sub2538, 7); - ext_grs_edge_t *e_e433 = ext_grs_act_add_edge(pattern, "e433", ext_grs_NO_EDGE_POS, n_Jmp2513, n_Block2490, 8); - ext_grs_edge_t *e_e526 = ext_grs_act_add_edge(pattern, "e526", ext_grs_NO_EDGE_POS, n_Proj3702, n_Block3677, 9); - ext_grs_edge_t *e_e434 = ext_grs_act_add_edge(pattern, "e434", ext_grs_NO_EDGE_POS, n_Jmp2539, n_Block2490, 10); - ext_grs_edge_t *e_e331 = ext_grs_act_add_edge(pattern, "e331", ext_grs_NO_EDGE_POS, n_Phi3707, n_Add3675, 11); - ext_grs_edge_t *e_e332 = ext_grs_act_add_edge(pattern, "e332", ext_grs_NO_EDGE_POS, n_Add3588, n_Add3675, 12); - ext_grs_edge_t *e_pos0_324 = ext_grs_act_add_edge(pattern, "pos0_324", -1, n_Block3415, n_Jmp3470, 13); - ext_grs_edge_t *e_pos2_629 = ext_grs_act_add_edge(pattern, "pos2_629", 1, n_Conv3524, n_Sub3556, 14); - ext_grs_edge_t *e_pos2_385 = ext_grs_act_add_edge(pattern, "pos2_385", 1, n_Conv3437, n_Sub3469, 15); - ext_grs_edge_t *e_e637 = ext_grs_act_add_edge(pattern, "e637", ext_grs_NO_EDGE_POS, n_Phi2924, n_Add2892, 16); - ext_grs_edge_t *e_e420 = ext_grs_act_add_edge(pattern, "e420", ext_grs_NO_EDGE_POS, n_Jmp3731, n_Block3708, 17); - ext_grs_edge_t *e_e325 = ext_grs_act_add_edge(pattern, "e325", ext_grs_NO_EDGE_POS, n_Jmp2948, n_Block2925, 18); - ext_grs_edge_t *e_e638 = ext_grs_act_add_edge(pattern, "e638", ext_grs_NO_EDGE_POS, n_Add2805, n_Add2892, 19); - ext_grs_edge_t *e_e421 = ext_grs_act_add_edge(pattern, "e421", ext_grs_NO_EDGE_POS, n_Jmp3757, n_Block3708, 20); - ext_grs_edge_t *e_e326 = ext_grs_act_add_edge(pattern, "e326", ext_grs_NO_EDGE_POS, n_Jmp2974, n_Block2925, 21); - ext_grs_edge_t *e_pos2_470 = ext_grs_act_add_edge(pattern, "pos2_470", 1, n_Conv2395, n_Sub2426, 22); - ext_grs_edge_t *e_e631 = ext_grs_act_add_edge(pattern, "e631", ext_grs_NO_EDGE_POS, n_Jmp2427, n_Block2404, 23); - ext_grs_edge_t *e_pos2_576 = ext_grs_act_add_edge(pattern, "pos2_576", 1, n_Conv2395, n_Cmp5645, 24); - ext_grs_edge_t *e_e632 = ext_grs_act_add_edge(pattern, "e632", ext_grs_NO_EDGE_POS, n_Jmp2453, n_Block2404, 25); - ext_grs_edge_t *e_e428 = ext_grs_act_add_edge(pattern, "e428", ext_grs_NO_EDGE_POS, n_Jmp3148, n_Block3099, 26); - ext_grs_edge_t *e_e535 = ext_grs_act_add_edge(pattern, "e535", ext_grs_NO_EDGE_POS, n_Proj3093, n_Block3068, 27); - ext_grs_edge_t *e_e427 = ext_grs_act_add_edge(pattern, "e427", ext_grs_NO_EDGE_POS, n_Jmp3122, n_Block3099, 28); - ext_grs_edge_t *e_pos2_570 = ext_grs_act_add_edge(pattern, "pos2_570", 1, n_Conv3698, n_Cmp5660, 29); - ext_grs_edge_t *e_e321 = ext_grs_act_add_edge(pattern, "e321", ext_grs_NO_EDGE_POS, n_Sub2599, n_Phi2663, 30); - ext_grs_edge_t *e_pos0_512 = ext_grs_act_add_edge(pattern, "pos0_512", -1, n_Vector_op_Block, n_Cond2398, 31); - ext_grs_edge_t *e_e322 = ext_grs_act_add_edge(pattern, "e322", ext_grs_NO_EDGE_POS, n_Sub2625, n_Phi2663, 32); - ext_grs_edge_t *e_pos0_514 = ext_grs_act_add_edge(pattern, "pos0_514", -1, n_Block2981, n_Sub3060, 33); - ext_grs_edge_t *e_e320 = ext_grs_act_add_edge(pattern, "e320", ext_grs_NO_EDGE_POS, n_Block2577, n_Phi2663, 34); - ext_grs_edge_t *e_e733 = ext_grs_act_add_edge(pattern, "e733", ext_grs_NO_EDGE_POS, n_Phi2576, n_Add2544, 35); - ext_grs_edge_t *e_pos0_311 = ext_grs_act_add_edge(pattern, "pos0_311", -1, n_Block3155, n_Jmp3235, 36); - ext_grs_edge_t *e_pos2_614 = ext_grs_act_add_edge(pattern, "pos2_614", 1, n_Conv3350, n_Sub3382, 37); - ext_grs_edge_t *e_pos0_519 = ext_grs_act_add_edge(pattern, "pos0_519", -1, n_Block3329, n_Sub3408, 38); - ext_grs_edge_t *e_pos2_373 = ext_grs_act_add_edge(pattern, "pos2_373", 1, n_Conv3176, n_Cmp5654, 39); - ext_grs_edge_t *e_pos0_316 = ext_grs_act_add_edge(pattern, "pos0_316", -1, n_Block2751, n_Cond2831, 40); - ext_grs_edge_t *e_pos2_371 = ext_grs_act_add_edge(pattern, "pos2_371", 1, n_Conv3263, n_Sub3295, 41); - ext_grs_edge_t *e_e734 = ext_grs_act_add_edge(pattern, "e734", ext_grs_NO_EDGE_POS, n_Phi2489, n_Add2544, 42); - ext_grs_edge_t *e_pos2_376 = ext_grs_act_add_edge(pattern, "pos2_376", 1, n_Conv2386, n_Sub2452, 43); - ext_grs_edge_t *e_e645 = ext_grs_act_add_edge(pattern, "e645", ext_grs_NO_EDGE_POS, n_Proj3267, n_Block3242, 44); - ext_grs_edge_t *e_e312 = ext_grs_act_add_edge(pattern, "e312", ext_grs_NO_EDGE_POS, n_Jmp3557, n_Block3534, 45); - ext_grs_edge_t *e_pos2_741 = ext_grs_act_add_edge(pattern, "pos2_741", 1, n_Conv2905, n_Sub2973, 46); - ext_grs_edge_t *e_e452 = ext_grs_act_add_edge(pattern, "e452", ext_grs_NO_EDGE_POS, n_Block3708, n_Phi3870, 47); - ext_grs_edge_t *e_e313 = ext_grs_act_add_edge(pattern, "e313", ext_grs_NO_EDGE_POS, n_Jmp3583, n_Block3534, 48); - ext_grs_edge_t *e_e453 = ext_grs_act_add_edge(pattern, "e453", ext_grs_NO_EDGE_POS, n_Sub3730, n_Phi3870, 49); - ext_grs_edge_t *e_e454 = ext_grs_act_add_edge(pattern, "e454", ext_grs_NO_EDGE_POS, n_Sub3756, n_Phi3870, 50); - ext_grs_edge_t *e_e709 = ext_grs_act_add_edge(pattern, "e709", ext_grs_NO_EDGE_POS, n_Add2544, n_Add2631, 51); - ext_grs_edge_t *e_e504 = ext_grs_act_add_edge(pattern, "e504", ext_grs_NO_EDGE_POS, n_Proj2833, n_Block2806, 52); - ext_grs_edge_t *e_e456 = ext_grs_act_add_edge(pattern, "e456", ext_grs_NO_EDGE_POS, n_Phi3359, n_Add3327, 53); - ext_grs_edge_t *e_e457 = ext_grs_act_add_edge(pattern, "e457", ext_grs_NO_EDGE_POS, n_Add3240, n_Add3327, 54); - ext_grs_edge_t *e_e310 = ext_grs_act_add_edge(pattern, "e310", ext_grs_NO_EDGE_POS, n_Proj2745, n_Block2720, 55); - ext_grs_edge_t *e_pos2_644 = ext_grs_act_add_edge(pattern, "pos2_644", 1, n_Conv2567, n_Cmp5647, 56); - ext_grs_edge_t *e_e705 = ext_grs_act_add_edge(pattern, "e705", ext_grs_NO_EDGE_POS, n_Sub2947, n_Phi3011, 57); - ext_grs_edge_t *e_e459 = ext_grs_act_add_edge(pattern, "e459", ext_grs_NO_EDGE_POS, n_Block3012, n_Phi3098, 58); - ext_grs_edge_t *e_e706 = ext_grs_act_add_edge(pattern, "e706", ext_grs_NO_EDGE_POS, n_Sub2973, n_Phi3011, 59); - ext_grs_edge_t *e_e500 = ext_grs_act_add_edge(pattern, "e500", ext_grs_NO_EDGE_POS, n_Phi3272, n_Add3240, 60); - ext_grs_edge_t *e_pos2_467 = ext_grs_act_add_edge(pattern, "pos2_467", 1, n_Conv3437, n_Cmp5657, 61); - ext_grs_edge_t *e_pos2_641 = ext_grs_act_add_edge(pattern, "pos2_641", 1, n_Conv3176, n_Sub3208, 62); - ext_grs_edge_t *e_e501 = ext_grs_act_add_edge(pattern, "e501", ext_grs_NO_EDGE_POS, n_Add3153, n_Add3240, 63); - ext_grs_edge_t *e_e708 = ext_grs_act_add_edge(pattern, "e708", ext_grs_NO_EDGE_POS, n_Phi2663, n_Add2631, 64); - ext_grs_edge_t *e_e702 = ext_grs_act_add_edge(pattern, "e702", ext_grs_NO_EDGE_POS, n_Proj2399, n_Block2377, 65); - ext_grs_edge_t *e_e701 = ext_grs_act_add_edge(pattern, "e701", ext_grs_NO_EDGE_POS, n_Sub3669, n_Phi3707, 66); - ext_grs_edge_t *e_pos0_306 = ext_grs_act_add_edge(pattern, "pos0_306", -1, n_Block3708, n_Vector_Result0_Add3762, 67); - ext_grs_edge_t *e_e704 = ext_grs_act_add_edge(pattern, "e704", ext_grs_NO_EDGE_POS, n_Block2925, n_Phi3011, 68); - ext_grs_edge_t *e_e700 = ext_grs_act_add_edge(pattern, "e700", ext_grs_NO_EDGE_POS, n_Sub3643, n_Phi3707, 69); - ext_grs_edge_t *e_pos0_505 = ext_grs_act_add_edge(pattern, "pos0_505", -1, n_Block2459, n_Jmp2539, 70); - ext_grs_edge_t *e_pos0_506 = ext_grs_act_add_edge(pattern, "pos0_506", -1, n_Block3677, n_Sub3756, 71); - ext_grs_edge_t *e_pos2_745 = ext_grs_act_add_edge(pattern, "pos2_745", 1, n_Conv3253, n_Sub3321, 72); - ext_grs_edge_t *e_pos2_747 = ext_grs_act_add_edge(pattern, "pos2_747", 1, n_Conv2915, n_Cmp5651, 73); - ext_grs_edge_t *e_pos0_406 = ext_grs_act_add_edge(pattern, "pos0_406", -1, n_Block3708, n_Add3501, 74); - ext_grs_edge_t *e_e307 = ext_grs_act_add_edge(pattern, "e307", ext_grs_NO_EDGE_POS, n_Phi3870, n_Vector_Result0_Add3762, 75); - ext_grs_edge_t *e_e656 = ext_grs_act_add_edge(pattern, "e656", ext_grs_NO_EDGE_POS, n_Phi2837, n_Add2805, 76); - ext_grs_edge_t *e_e308 = ext_grs_act_add_edge(pattern, "e308", ext_grs_NO_EDGE_POS, n_Add3675, n_Vector_Result0_Add3762, 77); - ext_grs_edge_t *e_e305 = ext_grs_act_add_edge(pattern, "e305", ext_grs_NO_EDGE_POS, n_Sub2452, n_Phi2489, 78); - ext_grs_edge_t *e_e442 = ext_grs_act_add_edge(pattern, "e442", ext_grs_NO_EDGE_POS, n_Proj3354, n_Block3329, 79); - ext_grs_edge_t *e_e303 = ext_grs_act_add_edge(pattern, "e303", ext_grs_NO_EDGE_POS, n_Block2404, n_Phi2489, 80); - ext_grs_edge_t *e_e304 = ext_grs_act_add_edge(pattern, "e304", ext_grs_NO_EDGE_POS, n_Sub2426, n_Phi2489, 81); - ext_grs_edge_t *e_e657 = ext_grs_act_add_edge(pattern, "e657", ext_grs_NO_EDGE_POS, n_Add2718, n_Add2805, 82); - ext_grs_edge_t *e_pos2_592 = ext_grs_act_add_edge(pattern, "pos2_592", 1, n_Conv2644, n_Sub2712, 83); - ext_grs_edge_t *e_e300 = ext_grs_act_add_edge(pattern, "e300", ext_grs_NO_EDGE_POS, n_Sub2799, n_Phi2837, 84); - ext_grs_edge_t *e_e716 = ext_grs_act_add_edge(pattern, "e716", ext_grs_NO_EDGE_POS, n_Jmp3235, n_Block3186, 85); - ext_grs_edge_t *e_e448 = ext_grs_act_add_edge(pattern, "e448", ext_grs_NO_EDGE_POS, n_Proj3268, n_Block3241, 86); - ext_grs_edge_t *e_e715 = ext_grs_act_add_edge(pattern, "e715", ext_grs_NO_EDGE_POS, n_Jmp3209, n_Block3186, 87); - ext_grs_edge_t *e_pos2_393 = ext_grs_act_add_edge(pattern, "pos2_393", 1, n_Conv2741, n_Sub2773, 88); - ext_grs_edge_t *e_e712 = ext_grs_act_add_edge(pattern, "e712", ext_grs_NO_EDGE_POS, n_Sub3321, n_Phi3359, 89); - ext_grs_edge_t *e_e711 = ext_grs_act_add_edge(pattern, "e711", ext_grs_NO_EDGE_POS, n_Sub3295, n_Phi3359, 90); - ext_grs_edge_t *e_e710 = ext_grs_act_add_edge(pattern, "e710", ext_grs_NO_EDGE_POS, n_Block3273, n_Phi3359, 91); - ext_grs_edge_t *e_pos2_635 = ext_grs_act_add_edge(pattern, "pos2_635", 1, n_Conv2828, n_Sub2860, 92); - ext_grs_edge_t *e_pos2_737 = ext_grs_act_add_edge(pattern, "pos2_737", 1, n_Conv3601, n_Sub3669, 93); - ext_grs_edge_t *e_pos1_291 = ext_grs_act_add_edge(pattern, "pos1_291", 0, n_VProj3165, n_Conv3166, 94); - ext_grs_edge_t *e_pos1_293 = ext_grs_act_add_edge(pattern, "pos1_293", 0, n_Cond2398, n_Proj2399, 95); - ext_grs_edge_t *e_pos1_294 = ext_grs_act_add_edge(pattern, "pos1_294", 0, n_Arg_0, n_VProj3426, 96); - ext_grs_edge_t *e_pos2_398 = ext_grs_act_add_edge(pattern, "pos2_398", 1, n_Conv3089, n_Sub3121, 97); - ext_grs_edge_t *e_pos1_297 = ext_grs_act_add_edge(pattern, "pos1_297", 0, n_VProj2556, n_Conv2557, 98); - ext_grs_edge_t *e_pos2_661 = ext_grs_act_add_edge(pattern, "pos2_661", 1, n_Conv2654, n_Cmp5648, 99); - ext_grs_edge_t *e_pos0_564 = ext_grs_act_add_edge(pattern, "pos0_564", -1, n_Block3708, n_Add3066, 100); - ext_grs_edge_t *e_e478 = ext_grs_act_add_edge(pattern, "e478", ext_grs_NO_EDGE_POS, n_Sub3556, n_Phi3620, 101); - ext_grs_edge_t *e_e477 = ext_grs_act_add_edge(pattern, "e477", ext_grs_NO_EDGE_POS, n_Block3534, n_Phi3620, 102); - ext_grs_edge_t *e_pos0_568 = ext_grs_act_add_edge(pattern, "pos0_568", -1, n_Block3676, n_Jmp3731, 103); - ext_grs_edge_t *e_e479 = ext_grs_act_add_edge(pattern, "e479", ext_grs_NO_EDGE_POS, n_Sub3582, n_Phi3620, 104); - ext_grs_edge_t *e_pos0_426 = ext_grs_act_add_edge(pattern, "pos0_426", -1, n_Block3241, n_Jmp3296, 105); - ext_grs_edge_t *e_pos0_694 = ext_grs_act_add_edge(pattern, "pos0_694", -1, n_Block2458, n_Sub2512, 106); - ext_grs_edge_t *e_pos0_424 = ext_grs_act_add_edge(pattern, "pos0_424", -1, n_Block3502, n_Jmp3557, 107); - ext_grs_edge_t *e_pos0_562 = ext_grs_act_add_edge(pattern, "pos0_562", -1, n_Block3416, n_Jmp3496, 108); - ext_grs_edge_t *e_pos0_560 = ext_grs_act_add_edge(pattern, "pos0_560", -1, n_Block3273, n_Cond3353, 109); - ext_grs_edge_t *e_pos1_389 = ext_grs_act_add_edge(pattern, "pos1_389", 0, n_Proj3091, n_Cond3092, 110); - ext_grs_edge_t *e_pos1_387 = ext_grs_act_add_edge(pattern, "pos1_387", 0, n_Proj3613, n_Cond3614, 111); - ext_grs_edge_t *e_pos0_429 = ext_grs_act_add_edge(pattern, "pos0_429", -1, n_Block3708, n_Add3414, 112); - ext_grs_edge_t *e_pos1_381 = ext_grs_act_add_edge(pattern, "pos1_381", 0, n_VProj2479, n_Conv2480, 113); - ext_grs_edge_t *e_pos1_380 = ext_grs_act_add_edge(pattern, "pos1_380", 0, n_Proj2569, n_Cond2570, 114); - ext_grs_edge_t *e_pos1_384 = ext_grs_act_add_edge(pattern, "pos1_384", 0, n_Conv3427, n_Sub3469, 115); - ext_grs_edge_t *e_e364 = ext_grs_act_add_edge(pattern, "e364", ext_grs_NO_EDGE_POS, n_Add3501, n_Add3588, 116); - ext_grs_edge_t *e_e363 = ext_grs_act_add_edge(pattern, "e363", ext_grs_NO_EDGE_POS, n_Phi3620, n_Add3588, 117); - ext_grs_edge_t *e_e465 = ext_grs_act_add_edge(pattern, "e465", ext_grs_NO_EDGE_POS, n_Sub3408, n_Phi3446, 118); - ext_grs_edge_t *e_e464 = ext_grs_act_add_edge(pattern, "e464", ext_grs_NO_EDGE_POS, n_Sub3382, n_Phi3446, 119); - ext_grs_edge_t *e_e463 = ext_grs_act_add_edge(pattern, "e463", ext_grs_NO_EDGE_POS, n_Block3360, n_Phi3446, 120); - ext_grs_edge_t *e_pos2_339 = ext_grs_act_add_edge(pattern, "pos2_339", 1, n_Conv3089, n_Cmp5653, 121); - ext_grs_edge_t *e_e461 = ext_grs_act_add_edge(pattern, "e461", ext_grs_NO_EDGE_POS, n_Sub3060, n_Phi3098, 122); - ext_grs_edge_t *e_e460 = ext_grs_act_add_edge(pattern, "e460", ext_grs_NO_EDGE_POS, n_Sub3034, n_Phi3098, 123); - ext_grs_edge_t *e_pos1_375 = ext_grs_act_add_edge(pattern, "pos1_375", 0, n_Conv2395, n_Sub2452, 124); - ext_grs_edge_t *e_pos1_378 = ext_grs_act_add_edge(pattern, "pos1_378", 0, n_Proj3178, n_Cond3179, 125); - ext_grs_edge_t *e_pos2_337 = ext_grs_act_add_edge(pattern, "pos2_337", 1, n_Conv2731, n_Sub2799, 126); - ext_grs_edge_t *e_pos0_419 = ext_grs_act_add_edge(pattern, "pos0_419", -1, n_Block3329, n_Jmp3409, 127); - ext_grs_edge_t *e_pos1_370 = ext_grs_act_add_edge(pattern, "pos1_370", 0, n_Conv3253, n_Sub3295, 128); - ext_grs_edge_t *e_pos1_372 = ext_grs_act_add_edge(pattern, "pos1_372", 0, n_Conv3166, n_Cmp5654, 129); - ext_grs_edge_t *e_e352 = ext_grs_act_add_edge(pattern, "e352", ext_grs_NO_EDGE_POS, n_Jmp3409, n_Block3360, 130); - ext_grs_edge_t *e_pos0_543 = ext_grs_act_add_edge(pattern, "pos0_543", -1, n_Block3155, n_Sub3234, 131); - ext_grs_edge_t *e_e351 = ext_grs_act_add_edge(pattern, "e351", ext_grs_NO_EDGE_POS, n_Jmp3383, n_Block3360, 132); - ext_grs_edge_t *e_pos2_685 = ext_grs_act_add_edge(pattern, "pos2_685", 1, n_Conv2741, n_Cmp5649, 133); - ext_grs_edge_t *e_pos0_542 = ext_grs_act_add_edge(pattern, "pos0_542", -1, n_Block3328, n_Jmp3383, 134); - ext_grs_edge_t *e_e492 = ext_grs_act_add_edge(pattern, "e492", ext_grs_NO_EDGE_POS, n_Sub3208, n_Phi3272, 135); - ext_grs_edge_t *e_pos0_444 = ext_grs_act_add_edge(pattern, "pos0_444", -1, n_Block2545, n_Sub2599, 136); - ext_grs_edge_t *e_e491 = ext_grs_act_add_edge(pattern, "e491", ext_grs_NO_EDGE_POS, n_Block3186, n_Phi3272, 137); - ext_grs_edge_t *e_e494 = ext_grs_act_add_edge(pattern, "e494", ext_grs_NO_EDGE_POS, n_Proj2659, n_Block2632, 138); - ext_grs_edge_t *e_e600 = ext_grs_act_add_edge(pattern, "e600", ext_grs_NO_EDGE_POS, n_Proj2920, n_Block2893, 139); - ext_grs_edge_t *e_e493 = ext_grs_act_add_edge(pattern, "e493", ext_grs_NO_EDGE_POS, n_Sub3234, n_Phi3272, 140); - ext_grs_edge_t *e_e495 = ext_grs_act_add_edge(pattern, "e495", ext_grs_NO_EDGE_POS, n_Proj2658, n_Block2633, 141); - ext_grs_edge_t *e_pos0_449 = ext_grs_act_add_edge(pattern, "pos0_449", -1, n_Block2632, n_Jmp2687, 142); - ext_grs_edge_t *e_e498 = ext_grs_act_add_edge(pattern, "e498", ext_grs_NO_EDGE_POS, n_Jmp3496, n_Block3447, 143); - ext_grs_edge_t *e_e497 = ext_grs_act_add_edge(pattern, "e497", ext_grs_NO_EDGE_POS, n_Jmp3470, n_Block3447, 144); - ext_grs_edge_t *e_e606 = ext_grs_act_add_edge(pattern, "e606", ext_grs_NO_EDGE_POS, n_Proj2832, n_Block2807, 145); - ext_grs_edge_t *e_pos2_368 = ext_grs_act_add_edge(pattern, "pos2_368", 1, n_Conv2915, n_Sub2947, 146); - ext_grs_edge_t *e_pos2_361 = ext_grs_act_add_edge(pattern, "pos2_361", 1, n_Conv3611, n_Sub3643, 147); - ext_grs_edge_t *e_pos0_536 = ext_grs_act_add_edge(pattern, "pos0_536", -1, n_Block2807, n_Sub2886, 148); - ext_grs_edge_t *e_e489 = ext_grs_act_add_edge(pattern, "e489", ext_grs_NO_EDGE_POS, n_Sub2860, n_Phi2924, 149); - ext_grs_edge_t *e_e488 = ext_grs_act_add_edge(pattern, "e488", ext_grs_NO_EDGE_POS, n_Block2838, n_Phi2924, 150); - ext_grs_edge_t *e_pos2_674 = ext_grs_act_add_edge(pattern, "pos2_674", 1, n_Conv2654, n_Sub2686, 151); - ext_grs_edge_t *e_pos0_532 = ext_grs_act_add_edge(pattern, "pos0_532", -1, n_Block3503, n_Sub3582, 152); - ext_grs_edge_t *e_e346 = ext_grs_act_add_edge(pattern, "e346", ext_grs_NO_EDGE_POS, n_Proj3442, n_Block3415, 153); - ext_grs_edge_t *e_pos0_439 = ext_grs_act_add_edge(pattern, "pos0_439", -1, n_Block3447, n_Cond3527, 154); - ext_grs_edge_t *e_e617 = ext_grs_act_add_edge(pattern, "e617", ext_grs_NO_EDGE_POS, n_Jmp3644, n_Block3621, 155); - ext_grs_edge_t *e_e618 = ext_grs_act_add_edge(pattern, "e618", ext_grs_NO_EDGE_POS, n_Jmp3670, n_Block3621, 156); - ext_grs_edge_t *e_e490 = ext_grs_act_add_edge(pattern, "e490", ext_grs_NO_EDGE_POS, n_Sub2886, n_Phi2924, 157); - ext_grs_edge_t *e_pos1_397 = ext_grs_act_add_edge(pattern, "pos1_397", 0, n_Conv3079, n_Sub3121, 158); - ext_grs_edge_t *e_pos1_394 = ext_grs_act_add_edge(pattern, "pos1_394", 0, n_Arg_0, n_VProj3513, 159); - ext_grs_edge_t *e_pos2_350 = ext_grs_act_add_edge(pattern, "pos2_350", 1, n_Conv2557, n_Sub2625, 160); - ext_grs_edge_t *e_pos0_539 = ext_grs_act_add_edge(pattern, "pos0_539", -1, n_Block3708, n_Add3153, 161); - ext_grs_edge_t *e_pos1_392 = ext_grs_act_add_edge(pattern, "pos1_392", 0, n_Conv2731, n_Sub2773, 162); - ext_grs_edge_t *e_pos1_340 = ext_grs_act_add_edge(pattern, "pos1_340", 0, n_Arg_1, n_VProj2740, 163); - ext_grs_edge_t *e_pos1_341 = ext_grs_act_add_edge(pattern, "pos1_341", 0, n_Cmp5650, n_Proj2830, 164); - ext_grs_edge_t *e_pos1_342 = ext_grs_act_add_edge(pattern, "pos1_342", 0, n_Cond3092, n_Proj3094, 165); - ext_grs_edge_t *e_pos1_343 = ext_grs_act_add_edge(pattern, "pos1_343", 0, n_Cond2483, n_Proj2485, 166); - ext_grs_edge_t *e_pos1_345 = ext_grs_act_add_edge(pattern, "pos1_345", 0, n_Cond3527, n_Proj3529, 167); - ext_grs_edge_t *e_pos1_626 = ext_grs_act_add_edge(pattern, "pos1_626", 0, n_Arg_1, n_VProj3697, 168); - ext_grs_edge_t *e_pos1_347 = ext_grs_act_add_edge(pattern, "pos1_347", 0, n_Cond3005, n_Proj3007, 169); - ext_grs_edge_t *e_pos1_628 = ext_grs_act_add_edge(pattern, "pos1_628", 0, n_Conv3514, n_Sub3556, 170); - ext_grs_edge_t *e_pos1_349 = ext_grs_act_add_edge(pattern, "pos1_349", 0, n_Conv2567, n_Sub2625, 171); - ext_grs_edge_t *e_pos1_622 = ext_grs_act_add_edge(pattern, "pos1_622", 0, n_Arg_0, n_VProj2385, 172); - ext_grs_edge_t *e_pos0_468 = ext_grs_act_add_edge(pattern, "pos0_468", -1, n_Block2376, n_Sub2426, 173); - ext_grs_edge_t *e_pos1_623 = ext_grs_act_add_edge(pattern, "pos1_623", 0, n_Arg_1, n_VProj2653, 174); - ext_grs_edge_t *e_pos1_620 = ext_grs_act_add_edge(pattern, "pos1_620", 0, n_Conv2480, n_Sub2538, 175); - ext_grs_edge_t *e_pos0_655 = ext_grs_act_add_edge(pattern, "pos0_655", -1, n_Block3708, n_Add2805, 176); - ext_grs_edge_t *e_pos0_462 = ext_grs_act_add_edge(pattern, "pos0_462", -1, n_Block2806, n_Jmp2861, 177); - ext_grs_edge_t *e_pos0_651 = ext_grs_act_add_edge(pattern, "pos0_651", -1, n_Block3360, n_Cond3440, 178); - ext_grs_edge_t *e_pos1_333 = ext_grs_act_add_edge(pattern, "pos1_333", 0, n_Arg_1, n_VProj3001, 179); - ext_grs_edge_t *e_pos0_390 = ext_grs_act_add_edge(pattern, "pos0_390", -1, n_Block2894, n_Jmp2974, 180); - ext_grs_edge_t *e_pos0_391 = ext_grs_act_add_edge(pattern, "pos0_391", -1, n_Block2719, n_Sub2773, 181); - ext_grs_edge_t *e_pos1_616 = ext_grs_act_add_edge(pattern, "pos1_616", 0, n_VProj2730, n_Conv2731, 182); - ext_grs_edge_t *e_pos0_396 = ext_grs_act_add_edge(pattern, "pos0_396", -1, n_Block3067, n_Sub3121, 183); - ext_grs_edge_t *e_pos1_338 = ext_grs_act_add_edge(pattern, "pos1_338", 0, n_Conv3079, n_Cmp5653, 184); - ext_grs_edge_t *e_pos1_615 = ext_grs_act_add_edge(pattern, "pos1_615", 0, n_Arg_1, n_VProj3262, 185); - ext_grs_edge_t *e_pos1_336 = ext_grs_act_add_edge(pattern, "pos1_336", 0, n_Conv2741, n_Sub2799, 186); - ext_grs_edge_t *e_pos1_613 = ext_grs_act_add_edge(pattern, "pos1_613", 0, n_Conv3340, n_Sub3382, 187); - ext_grs_edge_t *e_pos0_590 = ext_grs_act_add_edge(pattern, "pos0_590", -1, n_Block2633, n_Sub2712, 188); - ext_grs_edge_t *e_pos1_610 = ext_grs_act_add_edge(pattern, "pos1_610", 0, n_VProj2394, n_Conv2395, 189); - ext_grs_edge_t *e_pos0_594 = ext_grs_act_add_edge(pattern, "pos0_594", -1, n_Block3708, n_Add2979, 190); - ext_grs_edge_t *e_pos0_455 = ext_grs_act_add_edge(pattern, "pos0_455", -1, n_Block3708, n_Add3327, 191); - ext_grs_edge_t *e_pos1_751 = ext_grs_act_add_edge(pattern, "pos1_751", 0, n_Cond3005, n_Proj3006, 192); - ext_grs_edge_t *e_pos1_750 = ext_grs_act_add_edge(pattern, "pos1_750", 0, n_Proj2482, n_Cond2483, 193); - ext_grs_edge_t *e_pos0_667 = ext_grs_act_add_edge(pattern, "pos0_667", -1, n_Block2981, n_Jmp3061, 194); - ext_grs_edge_t *e_pos0_597 = ext_grs_act_add_edge(pattern, "pos0_597", -1, n_Block2838, n_Cond2918, 195); - ext_grs_edge_t *e_pos0_450 = ext_grs_act_add_edge(pattern, "pos0_450", -1, n_Block2633, n_Jmp2713, 196); - ext_grs_edge_t *e_pos0_663 = ext_grs_act_add_edge(pattern, "pos0_663", -1, n_Block2719, n_Jmp2774, 197); - ext_grs_edge_t *e_pos0_662 = ext_grs_act_add_edge(pattern, "pos0_662", -1, n_Block3590, n_Jmp3670, 198); - ext_grs_edge_t *e_pos1_360 = ext_grs_act_add_edge(pattern, "pos1_360", 0, n_Conv3601, n_Sub3643, 199); - ext_grs_edge_t *e_pos1_746 = ext_grs_act_add_edge(pattern, "pos1_746", 0, n_Conv2905, n_Cmp5651, 200); - ext_grs_edge_t *e_pos0_388 = ext_grs_act_add_edge(pattern, "pos0_388", -1, n_Block3012, n_Cond3092, 201); - ext_grs_edge_t *e_pos1_748 = ext_grs_act_add_edge(pattern, "pos1_748", 0, n_Cond2744, n_Proj2746, 202); - ext_grs_edge_t *e_pos1_647 = ext_grs_act_add_edge(pattern, "pos1_647", 0, n_Arg_0, n_VProj2730, 203); - ext_grs_edge_t *e_pos0_383 = ext_grs_act_add_edge(pattern, "pos0_383", -1, n_Block3415, n_Sub3469, 204); - ext_grs_edge_t *e_pos0_386 = ext_grs_act_add_edge(pattern, "pos0_386", -1, n_Block3534, n_Cond3614, 205); - ext_grs_edge_t *e_pos1_367 = ext_grs_act_add_edge(pattern, "pos1_367", 0, n_Conv2905, n_Sub2947, 206); - ext_grs_edge_t *e_pos1_640 = ext_grs_act_add_edge(pattern, "pos1_640", 0, n_Conv3166, n_Sub3208, 207); - ext_grs_edge_t *e_e585 = ext_grs_act_add_edge(pattern, "e585", ext_grs_NO_EDGE_POS, n_Jmp2626, n_Block2577, 208); - ext_grs_edge_t *e_pos0_581 = ext_grs_act_add_edge(pattern, "pos0_581", -1, n_Block2664, n_Cond2744, 209); - ext_grs_edge_t *e_pos1_642 = ext_grs_act_add_edge(pattern, "pos1_642", 0, n_Cmp5651, n_Proj2917, 210); - ext_grs_edge_t *e_e584 = ext_grs_act_add_edge(pattern, "e584", ext_grs_NO_EDGE_POS, n_Jmp2600, n_Block2577, 211); - ext_grs_edge_t *e_pos1_643 = ext_grs_act_add_edge(pattern, "pos1_643", 0, n_Conv2557, n_Cmp5647, 212); - ext_grs_edge_t *e_pos0_672 = ext_grs_act_add_edge(pattern, "pos0_672", -1, n_Block2632, n_Sub2686, 213); - ext_grs_edge_t *e_pos1_646 = ext_grs_act_add_edge(pattern, "pos1_646", 0, n_Arg_1, n_VProj2394, 214); - ext_grs_edge_t *e_pos0_671 = ext_grs_act_add_edge(pattern, "pos0_671", -1, n_Block2377, n_Jmp2453, 215); - ext_grs_edge_t *e_pos1_742 = ext_grs_act_add_edge(pattern, "pos1_742", 0, n_Cond3614, n_Proj3615, 216); - ext_grs_edge_t *e_pos0_481 = ext_grs_act_add_edge(pattern, "pos0_481", -1, n_Block2577, n_Cond2657, 217); - ext_grs_edge_t *e_pos1_744 = ext_grs_act_add_edge(pattern, "pos1_744", 0, n_Conv3263, n_Sub3321, 218); - ext_grs_edge_t *e_pos0_675 = ext_grs_act_add_edge(pattern, "pos0_675", -1, n_Block3708, n_Add2718, 219); - ext_grs_edge_t *e_pos0_678 = ext_grs_act_add_edge(pattern, "pos0_678", -1, n_Block2925, n_Cond3005, 220); - ext_grs_edge_t *e_e589 = ext_grs_act_add_edge(pattern, "e589", ext_grs_NO_EDGE_POS, n_Proj3441, n_Block3416, 221); - ext_grs_edge_t *e_pos0_483 = ext_grs_act_add_edge(pattern, "pos0_483", -1, n_Block3677, n_Jmp3757, 222); - ext_grs_edge_t *e_pos1_740 = ext_grs_act_add_edge(pattern, "pos1_740", 0, n_Conv2915, n_Sub2973, 223); - ext_grs_edge_t *e_pos0_484 = ext_grs_act_add_edge(pattern, "pos0_484", -1, n_Block3621, n_Cond3701, 224); - ext_grs_edge_t *e_pos0_379 = ext_grs_act_add_edge(pattern, "pos0_379", -1, n_Block2490, n_Cond2570, 225); - ext_grs_edge_t *e_pos1_736 = ext_grs_act_add_edge(pattern, "pos1_736", 0, n_Conv3611, n_Sub3669, 226); - ext_grs_edge_t *e_pos0_377 = ext_grs_act_add_edge(pattern, "pos0_377", -1, n_Block3099, n_Cond3179, 227); - ext_grs_edge_t *e_pos0_374 = ext_grs_act_add_edge(pattern, "pos0_374", -1, n_Block2377, n_Sub2452, 228); - ext_grs_edge_t *e_pos1_357 = ext_grs_act_add_edge(pattern, "pos1_357", 0, n_VProj3252, n_Conv3253, 229); - ext_grs_edge_t *e_pos1_358 = ext_grs_act_add_edge(pattern, "pos1_358", 0, n_Cond2744, n_Proj2745, 230); - ext_grs_edge_t *e_pos1_353 = ext_grs_act_add_edge(pattern, "pos1_353", 0, n_VProj3513, n_Conv3514, 231); - ext_grs_edge_t *e_pos1_630 = ext_grs_act_add_edge(pattern, "pos1_630", 0, n_Cond3353, n_Proj3355, 232); - ext_grs_edge_t *e_e595 = ext_grs_act_add_edge(pattern, "e595", ext_grs_NO_EDGE_POS, n_Phi3011, n_Add2979, 233); - ext_grs_edge_t *e_e596 = ext_grs_act_add_edge(pattern, "e596", ext_grs_NO_EDGE_POS, n_Add2892, n_Add2979, 234); - ext_grs_edge_t *e_pos0_571 = ext_grs_act_add_edge(pattern, "pos0_571", -1, n_Block2893, n_Jmp2948, 235); - ext_grs_edge_t *e_pos1_634 = ext_grs_act_add_edge(pattern, "pos1_634", 0, n_Conv2818, n_Sub2860, 236); - ext_grs_edge_t *e_pos1_730 = ext_grs_act_add_edge(pattern, "pos1_730", 0, n_VProj3436, n_Conv3437, 237); - ext_grs_edge_t *e_pos0_577 = ext_grs_act_add_edge(pattern, "pos0_577", -1, n_Block2807, n_Jmp2887, 238); - ext_grs_edge_t *e_e599 = ext_grs_act_add_edge(pattern, "e599", ext_grs_NO_EDGE_POS, n_Proj3703, n_Block3676, 239); - ext_grs_edge_t *e_pos0_471 = ext_grs_act_add_edge(pattern, "pos0_471", -1, n_Block3186, n_Cond3266, 240); - ext_grs_edge_t *e_pos2_728 = ext_grs_act_add_edge(pattern, "pos2_728", 1, n_Conv3427, n_Sub3495, 241); - ext_grs_edge_t *e_pos1_301 = ext_grs_act_add_edge(pattern, "pos1_301", 0, n_VProj3600, n_Conv3601, 242); - ext_grs_edge_t *e_pos0_362 = ext_grs_act_add_edge(pattern, "pos0_362", -1, n_Block3708, n_Add3588, 243); - ext_grs_edge_t *e_pos2_725 = ext_grs_act_add_edge(pattern, "pos2_725", 1, n_Conv3079, n_Sub3147, 244); - ext_grs_edge_t *e_pos1_302 = ext_grs_act_add_edge(pattern, "pos1_302", 0, n_VProj3078, n_Conv3079, 245); - ext_grs_edge_t *e_pos0_366 = ext_grs_act_add_edge(pattern, "pos0_366", -1, n_Block2893, n_Sub2947, 246); - ext_grs_edge_t *e_pos1_724 = ext_grs_act_add_edge(pattern, "pos1_724", 0, n_Conv3089, n_Sub3147, 247); - ext_grs_edge_t *e_pos0_619 = ext_grs_act_add_edge(pattern, "pos0_619", -1, n_Block2459, n_Sub2538, 248); - ext_grs_edge_t *e_pos0_365 = ext_grs_act_add_edge(pattern, "pos0_365", -1, n_Block3503, n_Jmp3583, 249); - ext_grs_edge_t *e_pos1_727 = ext_grs_act_add_edge(pattern, "pos1_727", 0, n_Conv3437, n_Sub3495, 250); - ext_grs_edge_t *e_pos1_520 = ext_grs_act_add_edge(pattern, "pos1_520", 0, n_Conv3350, n_Sub3408, 251); - ext_grs_edge_t *e_pos1_729 = ext_grs_act_add_edge(pattern, "pos1_729", 0, n_VProj3426, n_Conv3427, 252); - ext_grs_edge_t *e_pos1_522 = ext_grs_act_add_edge(pattern, "pos1_522", 0, n_Cmp5655, n_Proj3265, 253); - ext_grs_edge_t *e_pos0_369 = ext_grs_act_add_edge(pattern, "pos0_369", -1, n_Block3241, n_Sub3295, 254); - ext_grs_edge_t *e_pos1_525 = ext_grs_act_add_edge(pattern, "pos1_525", 0, n_Cond3353, n_Proj3354, 255); - ext_grs_edge_t *e_pos0_611 = ext_grs_act_add_edge(pattern, "pos0_611", -1, n_Block3242, n_Jmp3322, 256); - ext_grs_edge_t *e_pos0_612 = ext_grs_act_add_edge(pattern, "pos0_612", -1, n_Block3328, n_Sub3382, 257); - ext_grs_edge_t *e_pos1_527 = ext_grs_act_add_edge(pattern, "pos1_527", 0, n_Arg_1, n_VProj3610, 258); - ext_grs_edge_t *e_e566 = ext_grs_act_add_edge(pattern, "e566", ext_grs_NO_EDGE_POS, n_Add2979, n_Add3066, 259); - ext_grs_edge_t *e_pos1_528 = ext_grs_act_add_edge(pattern, "pos1_528", 0, n_Arg_1, n_VProj3088, 260); - ext_grs_edge_t *e_e565 = ext_grs_act_add_edge(pattern, "e565", ext_grs_NO_EDGE_POS, n_Phi3098, n_Add3066, 261); - ext_grs_edge_t *e_pos1_529 = ext_grs_act_add_edge(pattern, "pos1_529", 0, n_Cmp5648, n_Proj2656, 262); - ext_grs_edge_t *e_pos1_720 = ext_grs_act_add_edge(pattern, "pos1_720", 0, n_Cond2398, n_Proj2400, 263); - ext_grs_edge_t *e_pos1_721 = ext_grs_act_add_edge(pattern, "pos1_721", 0, n_Cond2570, n_Proj2571, 264); - ext_grs_edge_t *e_pos1_309 = ext_grs_act_add_edge(pattern, "pos1_309", 0, n_VProj3001, n_Conv3002, 265); - ext_grs_edge_t *e_e666 = ext_grs_act_add_edge(pattern, "e666", ext_grs_NO_EDGE_POS, n_Proj2571, n_Block2546, 266); - ext_grs_edge_t *e_e563 = ext_grs_act_add_edge(pattern, "e563", ext_grs_NO_EDGE_POS, n_Proj3355, n_Block3328, 267); - ext_grs_edge_t *e_e664 = ext_grs_act_add_edge(pattern, "e664", ext_grs_NO_EDGE_POS, n_Proj2400, n_Block2376, 268); - ext_grs_edge_t *e_pos2_718 = ext_grs_act_add_edge(pattern, "pos2_718", 1, n_Conv2828, n_Cmp5650, 269); - ext_grs_edge_t *e_pos0_356 = ext_grs_act_add_edge(pattern, "pos0_356", -1, n_Block3067, n_Jmp3122, 270); - ext_grs_edge_t *e_pos1_714 = ext_grs_act_add_edge(pattern, "pos1_714", 0, n_Cmp5652, n_Proj3004, 271); - ext_grs_edge_t *e_pos0_355 = ext_grs_act_add_edge(pattern, "pos0_355", -1, n_Block3589, n_Jmp3644, 272); - ext_grs_edge_t *e_pos1_713 = ext_grs_act_add_edge(pattern, "pos1_713", 0, n_Arg_1, n_VProj2914, 273); - ext_grs_edge_t *e_pos0_354 = ext_grs_act_add_edge(pattern, "pos0_354", -1, n_Block2545, n_Jmp2600, 274); - ext_grs_edge_t *e_pos1_719 = ext_grs_act_add_edge(pattern, "pos1_719", 0, n_Cmp5649, n_Proj2743, 275); - ext_grs_edge_t *e_pos1_513 = ext_grs_act_add_edge(pattern, "pos1_513", 0, n_Proj2397, n_Cond2398, 276); - ext_grs_edge_t *e_pos0_627 = ext_grs_act_add_edge(pattern, "pos0_627", -1, n_Block3502, n_Sub3556, 277); - ext_grs_edge_t *e_pos0_359 = ext_grs_act_add_edge(pattern, "pos0_359", -1, n_Block3589, n_Sub3643, 278); - ext_grs_edge_t *e_pos1_717 = ext_grs_act_add_edge(pattern, "pos1_717", 0, n_Conv2818, n_Cmp5650, 279); - ext_grs_edge_t *e_pos1_511 = ext_grs_act_add_edge(pattern, "pos1_511", 0, n_VProj2904, n_Conv2905, 280); - ext_grs_edge_t *e_pos1_517 = ext_grs_act_add_edge(pattern, "pos1_517", 0, n_Arg_1, n_VProj3175, 281); - ext_grs_edge_t *e_pos1_518 = ext_grs_act_add_edge(pattern, "pos1_518", 0, n_Arg_1, n_VProj2566, 282); - ext_grs_edge_t *e_pos0_496 = ext_grs_act_add_edge(pattern, "pos0_496", -1, n_Block3068, n_Jmp3148, 283); - ext_grs_edge_t *e_pos1_515 = ext_grs_act_add_edge(pattern, "pos1_515", 0, n_Conv3002, n_Sub3060, 284); - ext_grs_edge_t *e_e676 = ext_grs_act_add_edge(pattern, "e676", ext_grs_NO_EDGE_POS, n_Phi2750, n_Add2718, 285); - ext_grs_edge_t *e_e573 = ext_grs_act_add_edge(pattern, "e573", ext_grs_NO_EDGE_POS, n_Sub2512, n_Phi2576, 286); - ext_grs_edge_t *e_pos0_499 = ext_grs_act_add_edge(pattern, "pos0_499", -1, n_Block3708, n_Add3240, 287); - ext_grs_edge_t *e_e572 = ext_grs_act_add_edge(pattern, "e572", ext_grs_NO_EDGE_POS, n_Block2490, n_Phi2576, 288); - ext_grs_edge_t *e_e677 = ext_grs_act_add_edge(pattern, "e677", ext_grs_NO_EDGE_POS, n_Add2631, n_Add2718, 289); - ext_grs_edge_t *e_e574 = ext_grs_act_add_edge(pattern, "e574", ext_grs_NO_EDGE_POS, n_Sub2538, n_Phi2576, 290); - ext_grs_edge_t *e_pos1_604 = ext_grs_act_add_edge(pattern, "pos1_604", 0, n_Conv2470, n_Cmp5646, 291); - ext_grs_edge_t *e_pos1_327 = ext_grs_act_add_edge(pattern, "pos1_327", 0, n_Arg_0, n_VProj2556, 292); - ext_grs_edge_t *e_pos1_608 = ext_grs_act_add_edge(pattern, "pos1_608", 0, n_Conv2992, n_Sub3034, 293); - ext_grs_edge_t *e_pos1_402 = ext_grs_act_add_edge(pattern, "pos1_402", 0, n_Arg_0, n_VProj3252, 294); - ext_grs_edge_t *e_pos1_401 = ext_grs_act_add_edge(pattern, "pos1_401", 0, n_VProj2643, n_Conv2644, 295); - ext_grs_edge_t *e_pos0_739 = ext_grs_act_add_edge(pattern, "pos0_739", -1, n_Block2894, n_Sub2973, 296); - ext_grs_edge_t *e_pos1_323 = ext_grs_act_add_edge(pattern, "pos1_323", 0, n_Arg_0, n_VProj3165, 297); - ext_grs_edge_t *e_pos0_738 = ext_grs_act_add_edge(pattern, "pos0_738", -1, n_Block2720, n_Jmp2800, 298); - ext_grs_edge_t *e_pos2_609 = ext_grs_act_add_edge(pattern, "pos2_609", 1, n_Conv3002, n_Sub3034, 299); - ext_grs_edge_t *e_pos0_348 = ext_grs_act_add_edge(pattern, "pos0_348", -1, n_Block2546, n_Sub2625, 300); - ext_grs_edge_t *e_pos1_503 = ext_grs_act_add_edge(pattern, "pos1_503", 0, n_VProj3687, n_Conv3688, 301); - ext_grs_edge_t *e_pos0_639 = ext_grs_act_add_edge(pattern, "pos0_639", -1, n_Block3154, n_Sub3208, 302); - ext_grs_edge_t *e_pos1_502 = ext_grs_act_add_edge(pattern, "pos1_502", 0, n_Arg_0, n_VProj3339, 303); - ext_grs_edge_t *e_pos1_703 = ext_grs_act_add_edge(pattern, "pos1_703", 0, n_Arg_0, n_VProj2991, 304); - ext_grs_edge_t *e_pos2_605 = ext_grs_act_add_edge(pattern, "pos2_605", 1, n_Conv2480, n_Cmp5646, 305); - ext_grs_edge_t *e_pos0_344 = ext_grs_act_add_edge(pattern, "pos0_344", -1, n_Block3154, n_Jmp3209, 306); - ext_grs_edge_t *e_pos2_603 = ext_grs_act_add_edge(pattern, "pos2_603", 1, n_Conv3698, n_Sub3730, 307); - ext_grs_edge_t *e_e681 = ext_grs_act_add_edge(pattern, "e681", ext_grs_NO_EDGE_POS, n_Jmp2774, n_Block2751, 308); - ext_grs_edge_t *e_pos1_509 = ext_grs_act_add_edge(pattern, "pos1_509", 0, n_Conv3514, n_Cmp5658, 309); - ext_grs_edge_t *e_pos0_633 = ext_grs_act_add_edge(pattern, "pos0_633", -1, n_Block2806, n_Sub2860, 310); - ext_grs_edge_t *e_e546 = ext_grs_act_add_edge(pattern, "e546", ext_grs_NO_EDGE_POS, n_Proj2484, n_Block2459, 311); - ext_grs_edge_t *e_e418 = ext_grs_act_add_edge(pattern, "e418", ext_grs_NO_EDGE_POS, n_Proj2919, n_Block2894, 312); - ext_grs_edge_t *e_e682 = ext_grs_act_add_edge(pattern, "e682", ext_grs_NO_EDGE_POS, n_Jmp2800, n_Block2751, 313); - ext_grs_edge_t *e_pos0_636 = ext_grs_act_add_edge(pattern, "pos0_636", -1, n_Block3708, n_Add2892, 314); - ext_grs_edge_t *e_pos1_507 = ext_grs_act_add_edge(pattern, "pos1_507", 0, n_Conv3698, n_Sub3756, 315); - ext_grs_edge_t *e_pos0_732 = ext_grs_act_add_edge(pattern, "pos0_732", -1, n_Block3708, n_Add2544, 316); - ext_grs_edge_t *e_e689 = ext_grs_act_add_edge(pattern, "e689", ext_grs_NO_EDGE_POS, n_Sub3147, n_Phi3185, 317); - ext_grs_edge_t *e_pos1_405 = ext_grs_act_add_edge(pattern, "pos1_405", 0, n_Cond3179, n_Proj3180, 318); - ext_grs_edge_t *e_e688 = ext_grs_act_add_edge(pattern, "e688", ext_grs_NO_EDGE_POS, n_Sub3121, n_Phi3185, 319); - ext_grs_edge_t *e_e541 = ext_grs_act_add_edge(pattern, "e541", ext_grs_NO_EDGE_POS, n_Add3066, n_Add3153, 320); - ext_grs_edge_t *e_e687 = ext_grs_act_add_edge(pattern, "e687", ext_grs_NO_EDGE_POS, n_Block3099, n_Phi3185, 321); - ext_grs_edge_t *e_e540 = ext_grs_act_add_edge(pattern, "e540", ext_grs_NO_EDGE_POS, n_Phi3185, n_Add3153, 322); - ext_grs_edge_t *e_pos0_735 = ext_grs_act_add_edge(pattern, "pos0_735", -1, n_Block3590, n_Sub3669, 323); - ext_grs_edge_t *e_e686 = ext_grs_act_add_edge(pattern, "e686", ext_grs_NO_EDGE_POS, n_Proj3615, n_Block3590, 324); - ext_grs_edge_t *e_pos1_328 = ext_grs_act_add_edge(pattern, "pos1_328", 0, n_Arg_0, n_VProj3600, 325); - ext_grs_edge_t *e_pos1_329 = ext_grs_act_add_edge(pattern, "pos1_329", 0, n_Arg_0, n_VProj3078, 326); - ext_grs_edge_t *e_pos0_731 = ext_grs_act_add_edge(pattern, "pos0_731", -1, n_Block2980, n_Jmp3035, 327); - ext_grs_edge_t *e_pos1_602 = ext_grs_act_add_edge(pattern, "pos1_602", 0, n_Conv3688, n_Sub3730, 328); - ext_grs_edge_t *e_pos0_330 = ext_grs_act_add_edge(pattern, "pos0_330", -1, n_Block3708, n_Add3675, 329); - ext_grs_edge_t *e_pos1_314 = ext_grs_act_add_edge(pattern, "pos1_314", 0, n_Conv2992, n_Cmp5652, 330); - ext_grs_edge_t *e_pos0_749 = ext_grs_act_add_edge(pattern, "pos0_749", -1, n_Block2404, n_Cond2483, 331); - ext_grs_edge_t *e_e408 = ext_grs_act_add_edge(pattern, "e408", ext_grs_NO_EDGE_POS, n_Add3414, n_Add3501, 332); - ext_grs_edge_t *e_e409 = ext_grs_act_add_edge(pattern, "e409", ext_grs_NO_EDGE_POS, n_Proj3528, n_Block3503, 333); - ext_grs_edge_t *e_pos0_649 = ext_grs_act_add_edge(pattern, "pos0_649", -1, n_Block2546, n_Jmp2626, 334); - ext_grs_edge_t *e_pos0_648 = ext_grs_act_add_edge(pattern, "pos0_648", -1, n_Block2376, n_Jmp2427, 335); - ext_grs_edge_t *e_pos0_335 = ext_grs_act_add_edge(pattern, "pos0_335", -1, n_Block2720, n_Sub2799, 336); - ext_grs_edge_t *e_e690 = ext_grs_act_add_edge(pattern, "e690", ext_grs_NO_EDGE_POS, n_Proj2746, n_Block2719, 337); - ext_grs_edge_t *e_e400 = ext_grs_act_add_edge(pattern, "e400", ext_grs_NO_EDGE_POS, n_Proj3094, n_Block3067, 338); - ext_grs_edge_t *e_e692 = ext_grs_act_add_edge(pattern, "e692", ext_grs_NO_EDGE_POS, n_Sub3469, n_Phi3533, 339); - ext_grs_edge_t *e_e403 = ext_grs_act_add_edge(pattern, "e403", ext_grs_NO_EDGE_POS, n_Jmp2687, n_Block2664, 340); - ext_grs_edge_t *e_e691 = ext_grs_act_add_edge(pattern, "e691", ext_grs_NO_EDGE_POS, n_Block3447, n_Phi3533, 341); - ext_grs_edge_t *e_e555 = ext_grs_act_add_edge(pattern, "e555", ext_grs_NO_EDGE_POS, n_Block2664, n_Phi2750, 342); - ext_grs_edge_t *e_e693 = ext_grs_act_add_edge(pattern, "e693", ext_grs_NO_EDGE_POS, n_Sub3495, n_Phi3533, 343); - ext_grs_edge_t *e_e404 = ext_grs_act_add_edge(pattern, "e404", ext_grs_NO_EDGE_POS, n_Jmp2713, n_Block2664, 344); - ext_grs_edge_t *e_e557 = ext_grs_act_add_edge(pattern, "e557", ext_grs_NO_EDGE_POS, n_Sub2712, n_Phi2750, 345); - ext_grs_edge_t *e_e407 = ext_grs_act_add_edge(pattern, "e407", ext_grs_NO_EDGE_POS, n_Phi3533, n_Add3501, 346); - ext_grs_edge_t *e_e556 = ext_grs_act_add_edge(pattern, "e556", ext_grs_NO_EDGE_POS, n_Sub2686, n_Phi2750, 347); - ext_grs_edge_t *e_e698 = ext_grs_act_add_edge(pattern, "e698", ext_grs_NO_EDGE_POS, n_Proj3006, n_Block2981, 348); - ext_grs_edge_t *e_pos0_743 = ext_grs_act_add_edge(pattern, "pos0_743", -1, n_Block3242, n_Sub3321, 349); - ext_grs_edge_t *e_e553 = ext_grs_act_add_edge(pattern, "e553", ext_grs_NO_EDGE_POS, n_Jmp3322, n_Block3273, 350); - ext_grs_edge_t *e_e699 = ext_grs_act_add_edge(pattern, "e699", ext_grs_NO_EDGE_POS, n_Block3621, n_Phi3707, 351); - ext_grs_edge_t *e_e552 = ext_grs_act_add_edge(pattern, "e552", ext_grs_NO_EDGE_POS, n_Jmp3296, n_Block3273, 352); - ext_grs_edge_t *e_pos1_319 = ext_grs_act_add_edge(pattern, "pos1_319", 0, n_Cmp5646, n_Proj2482, 353); - ext_grs_edge_t *e_pos1_317 = ext_grs_act_add_edge(pattern, "pos1_317", 0, n_Proj2830, n_Cond2831, 354); - ext_grs_edge_t *e_pos1_318 = ext_grs_act_add_edge(pattern, "pos1_318", 0, n_VProj2740, n_Conv2741, 355); - ext_grs_edge_t *e_pos0_722 = ext_grs_act_add_edge(pattern, "pos0_722", -1, n_Block2458, n_Jmp2513, 356); - ext_grs_edge_t *e_pos1_695 = ext_grs_act_add_edge(pattern, "pos1_695", 0, n_Conv2470, n_Sub2512, 357); - ext_grs_edge_t *e_pos1_417 = ext_grs_act_add_edge(pattern, "pos1_417", 0, n_Cond3440, n_Proj3442, 358); - ext_grs_edge_t *e_pos1_416 = ext_grs_act_add_edge(pattern, "pos1_416", 0, n_Cmp5647, n_Proj2569, 359); - ext_grs_edge_t *e_pos1_697 = ext_grs_act_add_edge(pattern, "pos1_697", 0, n_Arg_0, n_VProj2469, 360); - ext_grs_edge_t *e_pos0_723 = ext_grs_act_add_edge(pattern, "pos0_723", -1, n_Block3068, n_Sub3147, 361); - ext_grs_edge_t *e_pos1_559 = ext_grs_act_add_edge(pattern, "pos1_559", 0, n_Cond2657, n_Proj2658, 362); - ext_grs_edge_t *e_pos1_558 = ext_grs_act_add_edge(pattern, "pos1_558", 0, n_Cond2657, n_Proj2659, 363); - ext_grs_edge_t *e_pos1_551 = ext_grs_act_add_edge(pattern, "pos1_551", 0, n_Cmp5645, n_Proj2397, 364); - ext_grs_edge_t *e_pos1_554 = ext_grs_act_add_edge(pattern, "pos1_554", 0, n_VProj3523, n_Conv3524, 365); - ext_grs_edge_t *e_pos1_410 = ext_grs_act_add_edge(pattern, "pos1_410", 0, n_VProj2817, n_Conv2818, 366); - ext_grs_edge_t *e_pos1_550 = ext_grs_act_add_edge(pattern, "pos1_550", 0, n_Arg_0, n_VProj2904, 367); - ext_grs_edge_t *e_pos1_411 = ext_grs_act_add_edge(pattern, "pos1_411", 0, n_Conv3253, n_Cmp5655, 368); - ext_grs_edge_t *e_pos0_726 = ext_grs_act_add_edge(pattern, "pos0_726", -1, n_Block3416, n_Sub3495, 369); - ext_grs_edge_t *e_pos1_413 = ext_grs_act_add_edge(pattern, "pos1_413", 0, n_VProj2827, n_Conv2828, 370); - ext_grs_edge_t *e_pos1_414 = ext_grs_act_add_edge(pattern, "pos1_414", 0, n_Arg_1, n_VProj2479, 371); - ext_grs_edge_t *e_pos1_415 = ext_grs_act_add_edge(pattern, "pos1_415", 0, n_Cmp5654, n_Proj3178, 372); - ext_grs_edge_t *e_pos1_569 = ext_grs_act_add_edge(pattern, "pos1_569", 0, n_Conv3688, n_Cmp5660, 373); - ext_grs_edge_t *e_pos1_567 = ext_grs_act_add_edge(pattern, "pos1_567", 0, n_Cond2831, n_Proj2833, 374); - ext_grs_edge_t *e_pos1_561 = ext_grs_act_add_edge(pattern, "pos1_561", 0, n_Proj3352, n_Cond3353, 375); - ext_grs_edge_t *e_pos1_422 = ext_grs_act_add_edge(pattern, "pos1_422", 0, n_Cmp5659, n_Proj3613, 376); - ext_grs_edge_t *e_pos1_425 = ext_grs_act_add_edge(pattern, "pos1_425", 0, n_Arg_0, n_VProj2643, 377); - ext_grs_edge_t *e_pos1_423 = ext_grs_act_add_edge(pattern, "pos1_423", 0, n_Cmp5653, n_Proj3091, 378); - ext_grs_edge_t *e_pos1_438 = ext_grs_act_add_edge(pattern, "pos1_438", 0, n_Cond3179, n_Proj3181, 379); - ext_grs_edge_t *e_pos0_601 = ext_grs_act_add_edge(pattern, "pos0_601", -1, n_Block3676, n_Sub3730, 380); - ext_grs_edge_t *e_pos1_537 = ext_grs_act_add_edge(pattern, "pos1_537", 0, n_Conv2828, n_Sub2886, 381); - ext_grs_edge_t *e_pos1_530 = ext_grs_act_add_edge(pattern, "pos1_530", 0, n_Cmp5660, n_Proj3700, 382); - ext_grs_edge_t *e_pos1_531 = ext_grs_act_add_edge(pattern, "pos1_531", 0, n_Cond3266, n_Proj3268, 383); - ext_grs_edge_t *e_pos1_533 = ext_grs_act_add_edge(pattern, "pos1_533", 0, n_Conv3524, n_Sub3582, 384); - ext_grs_edge_t *e_pos0_607 = ext_grs_act_add_edge(pattern, "pos0_607", -1, n_Block2980, n_Sub3034, 385); - ext_grs_edge_t *e_pos1_435 = ext_grs_act_add_edge(pattern, "pos1_435", 0, n_Conv3340, n_Cmp5656, 386); - ext_grs_edge_t *e_pos1_437 = ext_grs_act_add_edge(pattern, "pos1_437", 0, n_Arg_1, n_VProj2827, 387); - ext_grs_edge_t *e_pos0_707 = ext_grs_act_add_edge(pattern, "pos0_707", -1, n_Block3708, n_Add2631, 388); - ext_grs_edge_t *e_pos1_432 = ext_grs_act_add_edge(pattern, "pos1_432", 0, n_Arg_0, n_VProj2817, 389); - ext_grs_edge_t *e_pos1_548 = ext_grs_act_add_edge(pattern, "pos1_548", 0, n_Conv3601, n_Cmp5659, 390); - ext_grs_edge_t *e_pos1_440 = ext_grs_act_add_edge(pattern, "pos1_440", 0, n_Proj3526, n_Cond3527, 391); - ext_grs_edge_t *e_pos1_547 = ext_grs_act_add_edge(pattern, "pos1_547", 0, n_Arg_0, n_VProj3687, 392); - ext_grs_edge_t *e_pos1_544 = ext_grs_act_add_edge(pattern, "pos1_544", 0, n_Conv3176, n_Sub3234, 393); - ext_grs_edge_t *e_pos1_447 = ext_grs_act_add_edge(pattern, "pos1_447", 0, n_Cond3614, n_Proj3616, 394); - ext_grs_edge_t *e_pos1_445 = ext_grs_act_add_edge(pattern, "pos1_445", 0, n_Conv2557, n_Sub2599, 395); - ext_grs_edge_t *e_pos1_443 = ext_grs_act_add_edge(pattern, "pos1_443", 0, n_Cond2570, n_Proj2572, 396); - ext_grs_edge_t *e_pos1_441 = ext_grs_act_add_edge(pattern, "pos1_441", 0, n_VProj2385, n_Conv2386, 397); - ext_grs_edge_t *e_pos1_650 = ext_grs_act_add_edge(pattern, "pos1_650", 0, n_Cond3440, n_Proj3441, 398); - ext_grs_edge_t *e_pos1_652 = ext_grs_act_add_edge(pattern, "pos1_652", 0, n_Proj3439, n_Cond3440, 399); - ext_grs_edge_t *e_pos1_653 = ext_grs_act_add_edge(pattern, "pos1_653", 0, n_VProj3349, n_Conv3350, 400); - ext_grs_edge_t *e_pos1_654 = ext_grs_act_add_edge(pattern, "pos1_654", 0, n_Cond3701, n_Proj3703, 401); - ext_grs_edge_t *e_pos1_659 = ext_grs_act_add_edge(pattern, "pos1_659", 0, n_Cond2831, n_Proj2832, 402); - ext_grs_edge_t *e_pos1_658 = ext_grs_act_add_edge(pattern, "pos1_658", 0, n_Cond2918, n_Proj2920, 403); - ext_grs_edge_t *e_pos1_591 = ext_grs_act_add_edge(pattern, "pos1_591", 0, n_Conv2654, n_Sub2712, 404); - ext_grs_edge_t *e_pos1_593 = ext_grs_act_add_edge(pattern, "pos1_593", 0, n_Cond2483, n_Proj2484, 405); - ext_grs_edge_t *e_pos1_458 = ext_grs_act_add_edge(pattern, "pos1_458", 0, n_VProj3339, n_Conv3340, 406); - ext_grs_edge_t *e_pos1_598 = ext_grs_act_add_edge(pattern, "pos1_598", 0, n_Proj2917, n_Cond2918, 407); - ext_grs_edge_t *e_pos1_451 = ext_grs_act_add_edge(pattern, "pos1_451", 0, n_Cond3527, n_Proj3528, 408); - ext_grs_edge_t *e_pos1_660 = ext_grs_act_add_edge(pattern, "pos1_660", 0, n_Conv2644, n_Cmp5648, 409); - ext_grs_edge_t *e_pos1_668 = ext_grs_act_add_edge(pattern, "pos1_668", 0, n_Arg_1, n_VProj3349, 410); - ext_grs_edge_t *e_pos1_665 = ext_grs_act_add_edge(pattern, "pos1_665", 0, n_VProj2469, n_Conv2470, 411); - ext_grs_edge_t *e_pos1_466 = ext_grs_act_add_edge(pattern, "pos1_466", 0, n_Conv3427, n_Cmp5657, 412); - ext_grs_edge_t *e_pos1_669 = ext_grs_act_add_edge(pattern, "pos1_669", 0, n_Cmp5657, n_Proj3439, 413); - ext_grs_edge_t *e_pos1_469 = ext_grs_act_add_edge(pattern, "pos1_469", 0, n_Conv2386, n_Sub2426, 414); - ext_grs_edge_t *e_pos1_670 = ext_grs_act_add_edge(pattern, "pos1_670", 0, n_VProj2991, n_Conv2992, 415); - ext_grs_edge_t *e_pos1_679 = ext_grs_act_add_edge(pattern, "pos1_679", 0, n_Proj3004, n_Cond3005, 416); - ext_grs_edge_t *e_pos1_673 = ext_grs_act_add_edge(pattern, "pos1_673", 0, n_Conv2644, n_Sub2686, 417); - ext_grs_edge_t *e_pos0_292 = ext_grs_act_add_edge(pattern, "pos0_292", -1, n_Vector_op_Block, n_Proj2399, 418); - ext_grs_edge_t *e_pos1_475 = ext_grs_act_add_edge(pattern, "pos1_475", 0, n_Cond2918, n_Proj2919, 419); - ext_grs_edge_t *e_pos1_474 = ext_grs_act_add_edge(pattern, "pos1_474", 0, n_VProj2566, n_Conv2567, 420); - ext_grs_edge_t *e_pos1_476 = ext_grs_act_add_edge(pattern, "pos1_476", 0, n_Arg_1, n_VProj3436, 421); - ext_grs_edge_t *e_pos1_473 = ext_grs_act_add_edge(pattern, "pos1_473", 0, n_VProj3175, n_Conv3176, 422); - ext_grs_edge_t *e_pos1_575 = ext_grs_act_add_edge(pattern, "pos1_575", 0, n_Conv2386, n_Cmp5645, 423); - ext_grs_edge_t *e_pos1_472 = ext_grs_act_add_edge(pattern, "pos1_472", 0, n_Proj3265, n_Cond3266, 424); - ext_grs_edge_t *e_pos1_578 = ext_grs_act_add_edge(pattern, "pos1_578", 0, n_VProj3262, n_Conv3263, 425); - ext_grs_edge_t *e_pos1_579 = ext_grs_act_add_edge(pattern, "pos1_579", 0, n_Cond3701, n_Proj3702, 426); - ext_grs_edge_t *e_pos1_680 = ext_grs_act_add_edge(pattern, "pos1_680", 0, n_VProj2914, n_Conv2915, 427); - ext_grs_edge_t *e_pos1_683 = ext_grs_act_add_edge(pattern, "pos1_683", 0, n_Cond3266, n_Proj3267, 428); - ext_grs_edge_t *e_pos1_684 = ext_grs_act_add_edge(pattern, "pos1_684", 0, n_Conv2731, n_Cmp5649, 429); - ext_grs_edge_t *e_pos1_583 = ext_grs_act_add_edge(pattern, "pos1_583", 0, n_VProj2653, n_Conv2654, 430); - ext_grs_edge_t *e_pos1_582 = ext_grs_act_add_edge(pattern, "pos1_582", 0, n_Proj2743, n_Cond2744, 431); - ext_grs_edge_t *e_pos1_487 = ext_grs_act_add_edge(pattern, "pos1_487", 0, n_VProj3088, n_Conv3089, 432); - ext_grs_edge_t *e_pos1_486 = ext_grs_act_add_edge(pattern, "pos1_486", 0, n_VProj3610, n_Conv3611, 433); - ext_grs_edge_t *e_pos1_580 = ext_grs_act_add_edge(pattern, "pos1_580", 0, n_Arg_1, n_VProj3523, 434); - ext_grs_edge_t *e_pos1_485 = ext_grs_act_add_edge(pattern, "pos1_485", 0, n_Proj3700, n_Cond3701, 435); - ext_grs_edge_t *e_pos1_587 = ext_grs_act_add_edge(pattern, "pos1_587", 0, n_VProj3697, n_Conv3698, 436); - ext_grs_edge_t *e_pos1_586 = ext_grs_act_add_edge(pattern, "pos1_586", 0, n_Cond3092, n_Proj3093, 437); - ext_grs_edge_t *e_pos1_482 = ext_grs_act_add_edge(pattern, "pos1_482", 0, n_Proj2656, n_Cond2657, 438); - ext_grs_edge_t *e_pos1_480 = ext_grs_act_add_edge(pattern, "pos1_480", 0, n_Cmp5658, n_Proj3526, 439); - ext_grs_edge_t *e_pos1_588 = ext_grs_act_add_edge(pattern, "pos1_588", 0, n_Cmp5656, n_Proj3352, 440); - ext_grs_edge_t *e_e290 = ext_grs_act_add_edge(pattern, "e290", ext_grs_NO_EDGE_POS, n_Proj2485, n_Block2458, 441); - ext_grs_edge_t *e_e382 = ext_grs_act_add_edge(pattern, "e382", ext_grs_NO_EDGE_POS, n_Proj3181, n_Block3154, 442); - ext_grs_edge_t *e_pos2_696 = ext_grs_act_add_edge(pattern, "pos2_696", 1, n_Conv2480, n_Sub2512, 443); - ext_grs_edge_t *e_pos2_508 = ext_grs_act_add_edge(pattern, "pos2_508", 1, n_Conv3688, n_Sub3756, 444); - ext_grs_edge_t *e_e395 = ext_grs_act_add_edge(pattern, "e395", ext_grs_NO_EDGE_POS, n_Proj2572, n_Block2545, 445); - ext_grs_edge_t *e_e399 = ext_grs_act_add_edge(pattern, "e399", ext_grs_NO_EDGE_POS, n_Proj3616, n_Block3589, 446); - ext_grs_edge_t *e_e299 = ext_grs_act_add_edge(pattern, "e299", ext_grs_NO_EDGE_POS, n_Sub2773, n_Phi2837, 447); - ext_grs_edge_t *e_e298 = ext_grs_act_add_edge(pattern, "e298", ext_grs_NO_EDGE_POS, n_Block2751, n_Phi2837, 448); - ext_grs_edge_t *e_e295 = ext_grs_act_add_edge(pattern, "e295", ext_grs_NO_EDGE_POS, n_Proj3529, n_Block3502, 449); - ext_grs_edge_t *e_e296 = ext_grs_act_add_edge(pattern, "e296", ext_grs_NO_EDGE_POS, n_Proj3007, n_Block2980, 450); - ext_grs_edge_t *e_pos2_516 = ext_grs_act_add_edge(pattern, "pos2_516", 1, n_Conv2992, n_Sub3060, 451); - ext_grs_edge_t *e_pos2_315 = ext_grs_act_add_edge(pattern, "pos2_315", 1, n_Conv3002, n_Cmp5652, 452); - ext_grs_edge_t *e_pos2_510 = ext_grs_act_add_edge(pattern, "pos2_510", 1, n_Conv3524, n_Cmp5658, 453); - ext_grs_edge_t *e_pos2_521 = ext_grs_act_add_edge(pattern, "pos2_521", 1, n_Conv3340, n_Sub3408, 454); - ext_grs_edge_t *e_pos2_538 = ext_grs_act_add_edge(pattern, "pos2_538", 1, n_Conv2818, n_Sub2886, 455); - ext_grs_edge_t *e_pos2_436 = ext_grs_act_add_edge(pattern, "pos2_436", 1, n_Conv3350, n_Cmp5656, 456); - ext_grs_edge_t *e_pos2_534 = ext_grs_act_add_edge(pattern, "pos2_534", 1, n_Conv3514, n_Sub3582, 457); - ext_grs_edge_t *e_pos2_549 = ext_grs_act_add_edge(pattern, "pos2_549", 1, n_Conv3611, n_Cmp5659, 458); - ext_grs_edge_t *e_pos2_446 = ext_grs_act_add_edge(pattern, "pos2_446", 1, n_Conv2567, n_Sub2599, 459); - ext_grs_edge_t *e_pos2_545 = ext_grs_act_add_edge(pattern, "pos2_545", 1, n_Conv3166, n_Sub3234, 460); - ext_grs_edge_t *e_pos2_412 = ext_grs_act_add_edge(pattern, "pos2_412", 1, n_Conv3263, n_Cmp5655, 461); - - /* The conditions of the pattern */ - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj2399}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42812, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj3426}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42815, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e681, e_e299}; - - ext_grs_act_register_condition(grs_cond_func_42818, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e682, e_e300}; - - ext_grs_act_register_condition(grs_cond_func_42821, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e304, e_e631}; - - ext_grs_act_register_condition(grs_cond_func_42824, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e305, e_e632}; - - ext_grs_act_register_condition(grs_cond_func_42827, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj2482}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42830, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e584, e_e321}; - - ext_grs_act_register_condition(grs_cond_func_42833, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e585, e_e322}; - - ext_grs_act_register_condition(grs_cond_func_42836, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj3165}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42839, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj2556}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42842, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj3078}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42845, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj3600}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42848, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj3001}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42851, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj2740}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42854, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj2830}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42857, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj2485}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42860, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj3094}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42863, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj3007}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42866, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj3529}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42869, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj2745}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42872, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj3513}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42875, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj3180}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42878, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj3252}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42881, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj2479}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42884, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj2569}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42887, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj3178}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42890, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj3442}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42893, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj3091}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42896, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj3613}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42899, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj2643}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42902, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj2817}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42905, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj2827}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42908, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj3181}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42911, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj2572}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42914, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj3616}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42917, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj3528}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42920, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e420, e_e453}; - - ext_grs_act_register_condition(grs_cond_func_42923, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e421, e_e454}; - - ext_grs_act_register_condition(grs_cond_func_42926, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e624, e_e460}; - - ext_grs_act_register_condition(grs_cond_func_42929, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e625, e_e461}; - - ext_grs_act_register_condition(grs_cond_func_42932, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e351, e_e464}; - - ext_grs_act_register_condition(grs_cond_func_42935, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e352, e_e465}; - - ext_grs_act_register_condition(grs_cond_func_42938, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj2919}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42941, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj3436}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42944, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj3526}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42947, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e312, e_e478}; - - ext_grs_act_register_condition(grs_cond_func_42950, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e313, e_e479}; - - ext_grs_act_register_condition(grs_cond_func_42953, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e489, e_e523}; - - ext_grs_act_register_condition(grs_cond_func_42956, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e490, e_e524}; - - ext_grs_act_register_condition(grs_cond_func_42959, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e715, e_e492}; - - ext_grs_act_register_condition(grs_cond_func_42962, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e493, e_e716}; - - ext_grs_act_register_condition(grs_cond_func_42965, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj3339}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42968, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj2566}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42971, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj3175}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42974, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj3354}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42977, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj3265}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42980, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj2656}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42983, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj3088}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42986, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj3610}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42989, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj3268}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42992, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj3700}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42995, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj3687}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_42998, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj2904}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_43001, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj2397}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_43004, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj2658}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_43007, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj2659}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_43010, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e403, e_e556}; - - ext_grs_act_register_condition(grs_cond_func_43013, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e404, e_e557}; - - ext_grs_act_register_condition(grs_cond_func_43016, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj2833}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_43019, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e433, e_e573}; - - ext_grs_act_register_condition(grs_cond_func_43022, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e434, e_e574}; - - ext_grs_act_register_condition(grs_cond_func_43025, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj3702}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_43028, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj3523}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_43031, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj3093}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_43034, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj3352}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_43037, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj2484}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_43040, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj3262}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_43043, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj2385}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_43046, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj2653}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_43049, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj3697}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_43052, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj3355}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_43055, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj2917}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_43058, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj2394}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_43061, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj2730}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_43064, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj3441}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_43067, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj3703}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_43070, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj2920}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_43073, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj2832}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_43076, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj3349}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_43079, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj3439}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_43082, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj3267}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_43085, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e688, e_e427}; - - ext_grs_act_register_condition(grs_cond_func_43088, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e428, e_e689}; - - ext_grs_act_register_condition(grs_cond_func_43091, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e692, e_e497}; - - ext_grs_act_register_condition(grs_cond_func_43094, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e693, e_e498}; - - ext_grs_act_register_condition(grs_cond_func_43097, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj2469}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_43100, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e617, e_e700}; - - ext_grs_act_register_condition(grs_cond_func_43103, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e701, e_e618}; - - ext_grs_act_register_condition(grs_cond_func_43106, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj2991}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_43109, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e325, e_e705}; - - ext_grs_act_register_condition(grs_cond_func_43112, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e326, e_e706}; - - ext_grs_act_register_condition(grs_cond_func_43115, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj2914}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_43118, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e711, e_e552}; - - ext_grs_act_register_condition(grs_cond_func_43121, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t **nodes = NULL; - ext_grs_edge_t *edges[2] = {e_e712, e_e553}; - - ext_grs_act_register_condition(grs_cond_func_43124, pattern, 0, nodes, 2, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj3004}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_43127, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj2743}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_43130, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj2400}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_43133, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj2571}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_43136, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj3615}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_43139, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj2746}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_43142, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj3006}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_43145, pattern, 1, nodes, 0, edges); - } /* if */ - - /* The negative parts of the pattern */ - - - { /* The replacement */ - ext_grs_graph_t *pattern = ext_grs_act_get_replacement(act); - - /* The nodes of the pattern */ - ext_grs_node_t *n_Proj3178_430 = ext_grs_act_add_node_to_keep(pattern, "Proj3178_430", grs_op_Proj, mode_b, 0, n_Proj3178); - ext_grs_node_t *n_Sub3234_431 = ext_grs_act_add_node_to_keep(pattern, "Sub3234_431", grs_op_Sub, mode_Is, 1, n_Sub3234); - ext_grs_node_t *n_Sub3556_432 = ext_grs_act_add_node_to_keep(pattern, "Sub3556_432", grs_op_Sub, mode_Is, 2, n_Sub3556); - ext_grs_node_t *n_Phi3620_433 = ext_grs_act_add_node_to_keep(pattern, "Phi3620_433", grs_op_Phi, mode_Is, 3, n_Phi3620); - ext_grs_node_t *n_Sub2886_434 = ext_grs_act_add_node_to_keep(pattern, "Sub2886_434", grs_op_Sub, mode_Is, 5, n_Sub2886); - ext_grs_node_t *n_Block3329_435 = ext_grs_act_add_node_to_keep(pattern, "Block3329_435", grs_op_Block, mode_BB, 4, n_Block3329); - ext_grs_node_t *n_Block3328_436 = ext_grs_act_add_node_to_keep(pattern, "Block3328_436", grs_op_Block, mode_BB, 8, n_Block3328); - ext_grs_node_t *n_Conv2818_437 = ext_grs_act_add_node_to_keep(pattern, "Conv2818_437", grs_op_Conv, mode_Is, 7, n_Conv2818); - ext_grs_node_t *n_VProj2385_438 = ext_grs_act_add_node_to_keep(pattern, "VProj2385_438", grs_op_VProj, mode_Bu, 6, n_VProj2385); - ext_grs_node_t *n_Conv2915_439 = ext_grs_act_add_node_to_keep(pattern, "Conv2915_439", grs_op_Conv, mode_Is, 9, n_Conv2915); - ext_grs_node_t *n_VProj2991_440 = ext_grs_act_add_node_to_keep(pattern, "VProj2991_440", grs_op_VProj, mode_Bu, 10, n_VProj2991); - ext_grs_node_t *n_Cond3527_441 = ext_grs_act_add_node_to_keep(pattern, "Cond3527_441", grs_op_Cond, mode_T, 11, n_Cond3527); - ext_grs_node_t *n_Jmp2948_442 = ext_grs_act_add_node_to_keep(pattern, "Jmp2948_442", grs_op_Jmp, mode_X, 12, n_Jmp2948); - ext_grs_node_t *n_Proj3439_443 = ext_grs_act_add_node_to_keep(pattern, "Proj3439_443", grs_op_Proj, mode_b, 13, n_Proj3439); - ext_grs_node_t *n_Sub3034_444 = ext_grs_act_add_node_to_keep(pattern, "Sub3034_444", grs_op_Sub, mode_Is, 14, n_Sub3034); - ext_grs_node_t *n_Sub3756_445 = ext_grs_act_add_node_to_keep(pattern, "Sub3756_445", grs_op_Sub, mode_Is, 16, n_Sub3756); - ext_grs_node_t *n_Sub2686_446 = ext_grs_act_add_node_to_keep(pattern, "Sub2686_446", grs_op_Sub, mode_Is, 15, n_Sub2686); - ext_grs_node_t *n_VProj2653_447 = ext_grs_act_add_node_to_keep(pattern, "VProj2653_447", grs_op_VProj, mode_Bu, 17, n_VProj2653); - ext_grs_node_t *n_Jmp3061_448 = ext_grs_act_add_node_to_keep(pattern, "Jmp3061_448", grs_op_Jmp, mode_X, 18, n_Jmp3061); - ext_grs_node_t *n_Conv2828_449 = ext_grs_act_add_node_to_keep(pattern, "Conv2828_449", grs_op_Conv, mode_Is, 19, n_Conv2828); - ext_grs_node_t *n_Jmp2539_450 = ext_grs_act_add_node_to_keep(pattern, "Jmp2539_450", grs_op_Jmp, mode_X, 20, n_Jmp2539); - ext_grs_node_t *n_VProj2394_451 = ext_grs_act_add_node_to_keep(pattern, "VProj2394_451", grs_op_VProj, mode_Bu, 21, n_VProj2394); - ext_grs_node_t *n_Sub3321_452 = ext_grs_act_add_node_to_keep(pattern, "Sub3321_452", grs_op_Sub, mode_Is, 22, n_Sub3321); - ext_grs_node_t *n_Sub3643_453 = ext_grs_act_add_node_to_keep(pattern, "Sub3643_453", grs_op_Sub, mode_Is, 23, n_Sub3643); - ext_grs_node_t *n_Conv3089_454 = ext_grs_act_add_node_to_keep(pattern, "Conv3089_454", grs_op_Conv, mode_Is, 24, n_Conv3089); - ext_grs_node_t *n_Sub3121_455 = ext_grs_act_add_node_to_keep(pattern, "Sub3121_455", grs_op_Sub, mode_Is, 25, n_Sub3121); - ext_grs_node_t *n_Phi3707_456 = ext_grs_act_add_node_to_keep(pattern, "Phi3707_456", grs_op_Phi, mode_Is, 26, n_Phi3707); - ext_grs_node_t *n_Proj3441_457 = ext_grs_act_add_node_to_keep(pattern, "Proj3441_457", grs_op_Proj, mode_X, 27, n_Proj3441); - ext_grs_node_t *n_Proj3442_458 = ext_grs_act_add_node_to_keep(pattern, "Proj3442_458", grs_op_Proj, mode_X, 28, n_Proj3442); - ext_grs_node_t *n_Cond3440_459 = ext_grs_act_add_node_to_keep(pattern, "Cond3440_459", grs_op_Cond, mode_T, 29, n_Cond3440); - ext_grs_node_t *n_Proj3180_460 = ext_grs_act_add_node_to_keep(pattern, "Proj3180_460", grs_op_Proj, mode_X, 30, n_Proj3180); - ext_grs_node_t *n_Proj3181_461 = ext_grs_act_add_node_to_keep(pattern, "Proj3181_461", grs_op_Proj, mode_X, 31, n_Proj3181); - ext_grs_node_t *n_VProj2643_462 = ext_grs_act_add_node_to_keep(pattern, "VProj2643_462", grs_op_VProj, mode_Bu, 32, n_VProj2643); - ext_grs_node_t *n_VProj3349_463 = ext_grs_act_add_node_to_keep(pattern, "VProj3349_463", grs_op_VProj, mode_Bu, 33, n_VProj3349); - ext_grs_node_t *n_Jmp2626_464 = ext_grs_act_add_node_to_keep(pattern, "Jmp2626_464", grs_op_Jmp, mode_X, 34, n_Jmp2626); - ext_grs_node_t *n_VProj3513_465 = ext_grs_act_add_node_to_keep(pattern, "VProj3513_465", grs_op_VProj, mode_Bu, 35, n_VProj3513); - ext_grs_node_t *n_Jmp3322_466 = ext_grs_act_add_node_to_keep(pattern, "Jmp3322_466", grs_op_Jmp, mode_X, 36, n_Jmp3322); - ext_grs_node_t *n_Phi2489_467 = ext_grs_act_add_node_to_keep(pattern, "Phi2489_467", grs_op_Phi, mode_Is, 37, n_Phi2489); - ext_grs_node_t *n_Proj3703_468 = ext_grs_act_add_node_to_keep(pattern, "Proj3703_468", grs_op_Proj, mode_X, 38, n_Proj3703); - ext_grs_node_t *n_Proj3702_469 = ext_grs_act_add_node_to_keep(pattern, "Proj3702_469", grs_op_Proj, mode_X, 39, n_Proj3702); - ext_grs_node_t *n_Jmp2427_470 = ext_grs_act_add_node_to_keep(pattern, "Jmp2427_470", grs_op_Jmp, mode_X, 40, n_Jmp2427); - ext_grs_node_t *n_VProj3610_471 = ext_grs_act_add_node_to_keep(pattern, "VProj3610_471", grs_op_VProj, mode_Bu, 42, n_VProj3610); - ext_grs_node_t *n_Block3099_472 = ext_grs_act_add_node_to_keep(pattern, "Block3099_472", grs_op_Block, mode_BB, 41, n_Block3099); - ext_grs_node_t *n_Proj3700_473 = ext_grs_act_add_node_to_keep(pattern, "Proj3700_473", grs_op_Proj, mode_b, 43, n_Proj3700); - ext_grs_node_t *n_VProj2469_474 = ext_grs_act_add_node_to_keep(pattern, "VProj2469_474", grs_op_VProj, mode_Bu, 44, n_VProj2469); - ext_grs_node_t *n_Conv3688_475 = ext_grs_act_add_node_to_keep(pattern, "Conv3688_475", grs_op_Conv, mode_Is, 45, n_Conv3688); - ext_grs_node_t *n_Add2544_476 = ext_grs_act_add_node_to_keep(pattern, "Add2544_476", grs_op_Add, mode_Is, 46, n_Add2544); - ext_grs_node_t *n_Sub3730_477 = ext_grs_act_add_node_to_keep(pattern, "Sub3730_477", grs_op_Sub, mode_Is, 47, n_Sub3730); - ext_grs_node_t *n_VProj3339_478 = ext_grs_act_add_node_to_keep(pattern, "VProj3339_478", grs_op_VProj, mode_Bu, 49, n_VProj3339); - ext_grs_node_t *n_Jmp3035_479 = ext_grs_act_add_node_to_keep(pattern, "Jmp3035_479", grs_op_Jmp, mode_X, 48, n_Jmp3035); - ext_grs_node_t *n_VProj2566_480 = ext_grs_act_add_node_to_keep(pattern, "VProj2566_480", grs_op_VProj, mode_Bu, 50, n_VProj2566); - ext_grs_node_t *n_VProj3523_481 = ext_grs_act_add_node_to_keep(pattern, "VProj3523_481", grs_op_VProj, mode_Bu, 51, n_VProj3523); - ext_grs_node_t *n_Phi3870_482 = ext_grs_act_add_node_to_keep(pattern, "Phi3870_482", grs_op_Phi, mode_Is, 52, n_Phi3870); - ext_grs_node_t *n_Conv3698_483 = ext_grs_act_add_node_to_keep(pattern, "Conv3698_483", grs_op_Conv, mode_Is, 53, n_Conv3698); - ext_grs_node_t *n_Sub3208_484 = ext_grs_act_add_node_to_keep(pattern, "Sub3208_484", grs_op_Sub, mode_Is, 54, n_Sub3208); - ext_grs_node_t *n_Sub3669_485 = ext_grs_act_add_node_to_keep(pattern, "Sub3669_485", grs_op_Sub, mode_Is, 55, n_Sub3669); - ext_grs_node_t *n_Proj2832_486 = ext_grs_act_add_node_to_keep(pattern, "Proj2832_486", grs_op_Proj, mode_X, 56, n_Proj2832); - ext_grs_node_t *n_Proj2830_487 = ext_grs_act_add_node_to_keep(pattern, "Proj2830_487", grs_op_Proj, mode_b, 59, n_Proj2830); - ext_grs_node_t *n_Sub2799_488 = ext_grs_act_add_node_to_keep(pattern, "Sub2799_488", grs_op_Sub, mode_Is, 58, n_Sub2799); - ext_grs_node_t *n_VProj2479_489 = ext_grs_act_add_node_to_keep(pattern, "VProj2479_489", grs_op_VProj, mode_Bu, 57, n_VProj2479); - ext_grs_node_t *n_Proj2833_490 = ext_grs_act_add_node_to_keep(pattern, "Proj2833_490", grs_op_Proj, mode_X, 60, n_Proj2833); - ext_grs_node_t *n_Block3677_491 = ext_grs_act_add_node_to_keep(pattern, "Block3677_491", grs_op_Block, mode_BB, 61, n_Block3677); - ext_grs_node_t *n_Block3676_492 = ext_grs_act_add_node_to_keep(pattern, "Block3676_492", grs_op_Block, mode_BB, 63, n_Block3676); - ext_grs_node_t *n_Sub3147_493 = ext_grs_act_add_node_to_keep(pattern, "Sub3147_493", grs_op_Sub, mode_Is, 62, n_Sub3147); - ext_grs_node_t *n_Phi2750_494 = ext_grs_act_add_node_to_keep(pattern, "Phi2750_494", grs_op_Phi, mode_Is, 64, n_Phi2750); - ext_grs_node_t *n_VProj3426_495 = ext_grs_act_add_node_to_keep(pattern, "VProj3426_495", grs_op_VProj, mode_Bu, 66, n_VProj3426); - ext_grs_node_t *n_Proj2400_496 = ext_grs_act_add_node_to_keep(pattern, "Proj2400_496", grs_op_Proj, mode_X, 65, n_Proj2400); - ext_grs_node_t *n_Phi3098_497 = ext_grs_act_add_node_to_keep(pattern, "Phi3098_497", grs_op_Phi, mode_Is, 67, n_Phi3098); - ext_grs_node_t *n_Jmp2600_498 = ext_grs_act_add_node_to_keep(pattern, "Jmp2600_498", grs_op_Jmp, mode_X, 68, n_Jmp2600); - ext_grs_node_t *n_Jmp3409_499 = ext_grs_act_add_node_to_keep(pattern, "Jmp3409_499", grs_op_Jmp, mode_X, 69, n_Jmp3409); - ext_grs_node_t *n_Jmp2887_500 = ext_grs_act_add_node_to_keep(pattern, "Jmp2887_500", grs_op_Jmp, mode_X, 70, n_Jmp2887); - ext_grs_node_t *n_Jmp3209_501 = ext_grs_act_add_node_to_keep(pattern, "Jmp3209_501", grs_op_Jmp, mode_X, 71, n_Jmp3209); - ext_grs_node_t *n_Conv3514_502 = ext_grs_act_add_node_to_keep(pattern, "Conv3514_502", grs_op_Conv, mode_Is, 72, n_Conv3514); - ext_grs_node_t *n_Block3360_503 = ext_grs_act_add_node_to_keep(pattern, "Block3360_503", grs_op_Block, mode_BB, 74, n_Block3360); - ext_grs_node_t *n_Add2979_504 = ext_grs_act_add_node_to_keep(pattern, "Add2979_504", grs_op_Add, mode_Is, 73, n_Add2979); - ext_grs_node_t *n_Cond2570_505 = ext_grs_act_add_node_to_keep(pattern, "Cond2570_505", grs_op_Cond, mode_T, 75, n_Cond2570); - ext_grs_node_t *n_Block3067_506 = ext_grs_act_add_node_to_keep(pattern, "Block3067_506", grs_op_Block, mode_BB, 76, n_Block3067); - ext_grs_node_t *n_Arg_0_507 = ext_grs_act_add_node_to_keep(pattern, "Arg_0_507", grs_op_VectorBase, mode_ANY, 77, n_Arg_0); - ext_grs_node_t *n_Block3068_508 = ext_grs_act_add_node_to_keep(pattern, "Block3068_508", grs_op_Block, mode_BB, 79, n_Block3068); - ext_grs_node_t *n_Arg_1_509 = ext_grs_act_add_node_to_keep(pattern, "Arg_1_509", grs_op_VectorBase, mode_ANY, 78, n_Arg_1); - ext_grs_node_t *n_VProj3600_510 = ext_grs_act_add_node_to_keep(pattern, "VProj3600_510", grs_op_VProj, mode_Bu, 81, n_VProj3600); - ext_grs_node_t *n_Add3588_511 = ext_grs_act_add_node_to_keep(pattern, "Add3588_511", grs_op_Add, mode_Is, 80, n_Add3588); - ext_grs_node_t *n_Conv2644_512 = ext_grs_act_add_node_to_keep(pattern, "Conv2644_512", grs_op_Conv, mode_Is, 82, n_Conv2644); - ext_grs_node_t *n_Cond2831_513 = ext_grs_act_add_node_to_keep(pattern, "Cond2831_513", grs_op_Cond, mode_T, 83, n_Cond2831); - ext_grs_node_t *n_Cond3179_514 = ext_grs_act_add_node_to_keep(pattern, "Cond3179_514", grs_op_Cond, mode_T, 84, n_Cond3179); - ext_grs_node_t *n_Conv3253_515 = ext_grs_act_add_node_to_keep(pattern, "Conv3253_515", grs_op_Conv, mode_Is, 85, n_Conv3253); - ext_grs_node_t *n_Block3273_516 = ext_grs_act_add_node_to_keep(pattern, "Block3273_516", grs_op_Block, mode_BB, 87, n_Block3273); - ext_grs_node_t *n_Block2894_517 = ext_grs_act_add_node_to_keep(pattern, "Block2894_517", grs_op_Block, mode_BB, 86, n_Block2894); - ext_grs_node_t *n_Block2893_518 = ext_grs_act_add_node_to_keep(pattern, "Block2893_518", grs_op_Block, mode_BB, 88, n_Block2893); - ext_grs_node_t *n_Jmp3731_519 = ext_grs_act_add_node_to_keep(pattern, "Jmp3731_519", grs_op_Jmp, mode_X, 89, n_Jmp3731); - ext_grs_node_t *n_Block2751_520 = ext_grs_act_add_node_to_keep(pattern, "Block2751_520", grs_op_Block, mode_BB, 90, n_Block2751); - ext_grs_node_t *n_Block2490_521 = ext_grs_act_add_node_to_keep(pattern, "Block2490_521", grs_op_Block, mode_BB, 91, n_Block2490); - ext_grs_node_t *n_Sub2773_522 = ext_grs_act_add_node_to_keep(pattern, "Sub2773_522", grs_op_Sub, mode_Is, 92, n_Sub2773); - ext_grs_node_t *n_Jmp2974_523 = ext_grs_act_add_node_to_keep(pattern, "Jmp2974_523", grs_op_Jmp, mode_X, 93, n_Jmp2974); - ext_grs_node_t *n_VProj2740_524 = ext_grs_act_add_node_to_keep(pattern, "VProj2740_524", grs_op_VProj, mode_Bu, 94, n_VProj2740); - ext_grs_node_t *n_Conv2654_525 = ext_grs_act_add_node_to_keep(pattern, "Conv2654_525", grs_op_Conv, mode_Is, 95, n_Conv2654); - ext_grs_node_t *n_Phi2924_526 = ext_grs_act_add_node_to_keep(pattern, "Phi2924_526", grs_op_Phi, mode_Is, 96, n_Phi2924); - ext_grs_node_t *n_Phi2837_527 = ext_grs_act_add_node_to_keep(pattern, "Phi2837_527", grs_op_Phi, mode_Is, 97, n_Phi2837); - ext_grs_node_t *n_Proj2919_528 = ext_grs_act_add_node_to_keep(pattern, "Proj2919_528", grs_op_Proj, mode_X, 98, n_Proj2919); - ext_grs_node_t *n_Vector_op_ProjData = ext_grs_act_add_node(pattern, "Vector_op_ProjData", grs_op_Proj, mode_LLu, 290); - ext_grs_node_t *n_Block3241_529 = ext_grs_act_add_node_to_keep(pattern, "Block3241_529", grs_op_Block, mode_BB, 99, n_Block3241); - ext_grs_node_t *n_Block3242_530 = ext_grs_act_add_node_to_keep(pattern, "Block3242_530", grs_op_Block, mode_BB, 100, n_Block3242); - ext_grs_node_t *n_Proj2917_531 = ext_grs_act_add_node_to_keep(pattern, "Proj2917_531", grs_op_Proj, mode_b, 101, n_Proj2917); - ext_grs_node_t *n_Conv3263_532 = ext_grs_act_add_node_to_keep(pattern, "Conv3263_532", grs_op_Conv, mode_Is, 102, n_Conv3263); - ext_grs_node_t *n_Block3621_533 = ext_grs_act_add_node_to_keep(pattern, "Block3621_533", grs_op_Block, mode_BB, 103, n_Block3621); - ext_grs_node_t *n_Add3066_534 = ext_grs_act_add_node_to_keep(pattern, "Add3066_534", grs_op_Add, mode_Is, 104, n_Add3066); - ext_grs_node_t *n_Proj2920_535 = ext_grs_act_add_node_to_keep(pattern, "Proj2920_535", grs_op_Proj, mode_X, 105, n_Proj2920); - ext_grs_node_t *n_Proj3093_536 = ext_grs_act_add_node_to_keep(pattern, "Proj3093_536", grs_op_Proj, mode_X, 106, n_Proj3093); - ext_grs_node_t *n_Proj3094_537 = ext_grs_act_add_node_to_keep(pattern, "Proj3094_537", grs_op_Proj, mode_X, 107, n_Proj3094); - ext_grs_node_t *n_Jmp2861_538 = ext_grs_act_add_node_to_keep(pattern, "Jmp2861_538", grs_op_Jmp, mode_X, 108, n_Jmp2861); - ext_grs_node_t *n_Block3447_539 = ext_grs_act_add_node_to_keep(pattern, "Block3447_539", grs_op_Block, mode_BB, 109, n_Block3447); - ext_grs_node_t *n_Proj3091_540 = ext_grs_act_add_node_to_keep(pattern, "Proj3091_540", grs_op_Proj, mode_b, 110, n_Proj3091); - ext_grs_node_t *n_Block3589_541 = ext_grs_act_add_node_to_keep(pattern, "Block3589_541", grs_op_Block, mode_BB, 111, n_Block3589); - ext_grs_node_t *n_VProj2730_542 = ext_grs_act_add_node_to_keep(pattern, "VProj2730_542", grs_op_VProj, mode_Bu, 112, n_VProj2730); - ext_grs_node_t *n_Cond3266_543 = ext_grs_act_add_node_to_keep(pattern, "Cond3266_543", grs_op_Cond, mode_T, 113, n_Cond3266); - ext_grs_node_t *n_Jmp2713_544 = ext_grs_act_add_node_to_keep(pattern, "Jmp2713_544", grs_op_Jmp, mode_X, 114, n_Jmp2713); - ext_grs_node_t *n_Sub3382_545 = ext_grs_act_add_node_to_keep(pattern, "Sub3382_545", grs_op_Sub, mode_Is, 115, n_Sub3382); - ext_grs_node_t *n_VProj3436_546 = ext_grs_act_add_node_to_keep(pattern, "VProj3436_546", grs_op_VProj, mode_Bu, 116, n_VProj3436); - ext_grs_node_t *n_Block3590_547 = ext_grs_act_add_node_to_keep(pattern, "Block3590_547", grs_op_Block, mode_BB, 117, n_Block3590); - ext_grs_node_t *n_Conv2905_548 = ext_grs_act_add_node_to_keep(pattern, "Conv2905_548", grs_op_Conv, mode_Is, 118, n_Conv2905); - ext_grs_node_t *n_Conv2395_549 = ext_grs_act_add_node_to_keep(pattern, "Conv2395_549", grs_op_Conv, mode_Is, 119, n_Conv2395); - ext_grs_node_t *n_Jmp3583_550 = ext_grs_act_add_node_to_keep(pattern, "Jmp3583_550", grs_op_Jmp, mode_X, 120, n_Jmp3583); - ext_grs_node_t *n_Block3186_551 = ext_grs_act_add_node_to_keep(pattern, "Block3186_551", grs_op_Block, mode_BB, 121, n_Block3186); - ext_grs_node_t *n_Block2376_552 = ext_grs_act_add_node_to_keep(pattern, "Block2376_552", grs_op_Block, mode_BB, 122, n_Block2376); - ext_grs_node_t *n_Block2377_553 = ext_grs_act_add_node_to_keep(pattern, "Block2377_553", grs_op_Block, mode_BB, 123, n_Block2377); - ext_grs_node_t *n_Add2892_554 = ext_grs_act_add_node_to_keep(pattern, "Add2892_554", grs_op_Add, mode_Is, 124, n_Add2892); - ext_grs_node_t *n_Jmp2453_555 = ext_grs_act_add_node_to_keep(pattern, "Jmp2453_555", grs_op_Jmp, mode_X, 125, n_Jmp2453); - ext_grs_node_t *n_Add3327_556 = ext_grs_act_add_node_to_keep(pattern, "Add3327_556", grs_op_Add, mode_Is, 126, n_Add3327); - ext_grs_node_t *n_Conv3350_557 = ext_grs_act_add_node_to_keep(pattern, "Conv3350_557", grs_op_Conv, mode_Is, 127, n_Conv3350); - ext_grs_node_t *n_Sub2947_558 = ext_grs_act_add_node_to_keep(pattern, "Sub2947_558", grs_op_Sub, mode_Is, 128, n_Sub2947); - ext_grs_node_t *n_Block2720_559 = ext_grs_act_add_node_to_keep(pattern, "Block2720_559", grs_op_Block, mode_BB, 129, n_Block2720); - ext_grs_node_t *n_Cond2483_560 = ext_grs_act_add_node_to_keep(pattern, "Cond2483_560", grs_op_Cond, mode_T, 130, n_Cond2483); - ext_grs_node_t *n_Block3534_561 = ext_grs_act_add_node_to_keep(pattern, "Block3534_561", grs_op_Block, mode_BB, 131, n_Block3534); - ext_grs_node_t *n_Jmp3383_562 = ext_grs_act_add_node_to_keep(pattern, "Jmp3383_562", grs_op_Jmp, mode_X, 132, n_Jmp3383); - ext_grs_node_t *n_Cmp5646_563 = ext_grs_act_add_node_to_keep(pattern, "Cmp5646_563", grs_op_Cmp, mode_T, 133, n_Cmp5646); - ext_grs_node_t *n_Cmp5647_564 = ext_grs_act_add_node_to_keep(pattern, "Cmp5647_564", grs_op_Cmp, mode_T, 134, n_Cmp5647); - ext_grs_node_t *n_Cmp5648_565 = ext_grs_act_add_node_to_keep(pattern, "Cmp5648_565", grs_op_Cmp, mode_T, 135, n_Cmp5648); - ext_grs_node_t *n_Sub2512_566 = ext_grs_act_add_node_to_keep(pattern, "Sub2512_566", grs_op_Sub, mode_Is, 136, n_Sub2512); - ext_grs_node_t *n_Cmp5649_567 = ext_grs_act_add_node_to_keep(pattern, "Cmp5649_567", grs_op_Cmp, mode_T, 137, n_Cmp5649); - ext_grs_node_t *n_Block2458_568 = ext_grs_act_add_node_to_keep(pattern, "Block2458_568", grs_op_Block, mode_BB, 138, n_Block2458); - ext_grs_node_t *n_Cmp5645_569 = ext_grs_act_add_node_to_keep(pattern, "Cmp5645_569", grs_op_Cmp, mode_T, 139, n_Cmp5645); - ext_grs_node_t *n_Phi3185_570 = ext_grs_act_add_node_to_keep(pattern, "Phi3185_570", grs_op_Phi, mode_Is, 140, n_Phi3185); - ext_grs_node_t *n_Block2925_571 = ext_grs_act_add_node_to_keep(pattern, "Block2925_571", grs_op_Block, mode_BB, 141, n_Block2925); - ext_grs_node_t *n_Block2459_572 = ext_grs_act_add_node_to_keep(pattern, "Block2459_572", grs_op_Block, mode_BB, 142, n_Block2459); - ext_grs_node_t *n_Block2719_573 = ext_grs_act_add_node_to_keep(pattern, "Block2719_573", grs_op_Block, mode_BB, 143, n_Block2719); - ext_grs_node_t *n_Add3240_574 = ext_grs_act_add_node_to_keep(pattern, "Add3240_574", grs_op_Add, mode_Is, 144, n_Add3240); - ext_grs_node_t *n_Phi2576_575 = ext_grs_act_add_node_to_keep(pattern, "Phi2576_575", grs_op_Phi, mode_Is, 145, n_Phi2576); - ext_grs_node_t *n_Cond3092_576 = ext_grs_act_add_node_to_keep(pattern, "Cond3092_576", grs_op_Cond, mode_T, 146, n_Cond3092); - ext_grs_node_t *n_Cond2657_577 = ext_grs_act_add_node_to_keep(pattern, "Cond2657_577", grs_op_Cond, mode_T, 147, n_Cond2657); - ext_grs_node_t *n_Jmp3670_578 = ext_grs_act_add_node_to_keep(pattern, "Jmp3670_578", grs_op_Jmp, mode_X, 148, n_Jmp3670); - ext_grs_node_t *n_Conv2470_579 = ext_grs_act_add_node_to_keep(pattern, "Conv2470_579", grs_op_Conv, mode_Is, 149, n_Conv2470); - ext_grs_node_t *n_Conv3340_580 = ext_grs_act_add_node_to_keep(pattern, "Conv3340_580", grs_op_Conv, mode_Is, 150, n_Conv3340); - ext_grs_node_t *n_Block2664_581 = ext_grs_act_add_node_to_keep(pattern, "Block2664_581", grs_op_Block, mode_BB, 151, n_Block2664); - ext_grs_node_t *n_Conv3002_582 = ext_grs_act_add_node_to_keep(pattern, "Conv3002_582", grs_op_Conv, mode_Is, 152, n_Conv3002); - ext_grs_node_t *n_VProj2904_583 = ext_grs_act_add_node_to_keep(pattern, "VProj2904_583", grs_op_VProj, mode_Bu, 153, n_VProj2904); - ext_grs_node_t *n_Sub2426_584 = ext_grs_act_add_node_to_keep(pattern, "Sub2426_584", grs_op_Sub, mode_Is, 154, n_Sub2426); - ext_grs_node_t *n_Cond2398_585 = ext_grs_act_add_node_to_keep(pattern, "Cond2398_585", grs_op_Cond, mode_T, 155, n_Cond2398); - ext_grs_node_t *n_Cmp5659_586 = ext_grs_act_add_node_to_keep(pattern, "Cmp5659_586", grs_op_Cmp, mode_T, 156, n_Cmp5659); - ext_grs_node_t *n_Cmp5657_587 = ext_grs_act_add_node_to_keep(pattern, "Cmp5657_587", grs_op_Cmp, mode_T, 157, n_Cmp5657); - ext_grs_node_t *n_Cond2918_588 = ext_grs_act_add_node_to_keep(pattern, "Cond2918_588", grs_op_Cond, mode_T, 158, n_Cond2918); - ext_grs_node_t *n_Cmp5658_589 = ext_grs_act_add_node_to_keep(pattern, "Cmp5658_589", grs_op_Cmp, mode_T, 159, n_Cmp5658); - ext_grs_node_t *n_Block3708_590 = ext_grs_act_add_node_to_keep(pattern, "Block3708_590", grs_op_Block, mode_BB, 160, n_Block3708); - ext_grs_node_t *n_Conv2480_591 = ext_grs_act_add_node_to_keep(pattern, "Conv2480_591", grs_op_Conv, mode_Is, 161, n_Conv2480); - ext_grs_node_t *n_Cmp5656_592 = ext_grs_act_add_node_to_keep(pattern, "Cmp5656_592", grs_op_Cmp, mode_T, 162, n_Cmp5656); - ext_grs_node_t *n_Cmp5655_593 = ext_grs_act_add_node_to_keep(pattern, "Cmp5655_593", grs_op_Cmp, mode_T, 163, n_Cmp5655); - ext_grs_node_t *n_Cmp5654_594 = ext_grs_act_add_node_to_keep(pattern, "Cmp5654_594", grs_op_Cmp, mode_T, 164, n_Cmp5654); - ext_grs_node_t *n_Cmp5653_595 = ext_grs_act_add_node_to_keep(pattern, "Cmp5653_595", grs_op_Cmp, mode_T, 165, n_Cmp5653); - ext_grs_node_t *n_Cmp5652_596 = ext_grs_act_add_node_to_keep(pattern, "Cmp5652_596", grs_op_Cmp, mode_T, 166, n_Cmp5652); - ext_grs_node_t *n_Cmp5651_597 = ext_grs_act_add_node_to_keep(pattern, "Cmp5651_597", grs_op_Cmp, mode_T, 167, n_Cmp5651); - ext_grs_node_t *n_Cmp5650_598 = ext_grs_act_add_node_to_keep(pattern, "Cmp5650_598", grs_op_Cmp, mode_T, 168, n_Cmp5650); - ext_grs_node_t *n_Conv2386_599 = ext_grs_act_add_node_to_keep(pattern, "Conv2386_599", grs_op_Conv, mode_Is, 169, n_Conv2386); - ext_grs_node_t *n_Proj2397_600 = ext_grs_act_add_node_to_keep(pattern, "Proj2397_600", grs_op_Proj, mode_b, 170, n_Proj2397); - ext_grs_node_t *n_Proj2399_601 = ext_grs_act_add_node_to_keep(pattern, "Proj2399_601", grs_op_Proj, mode_X, 171, n_Proj2399); - ext_grs_node_t *n_Phi2663_602 = ext_grs_act_add_node_to_keep(pattern, "Phi2663_602", grs_op_Phi, mode_Is, 172, n_Phi2663); - ext_grs_node_t *n_Vector_op = ext_grs_act_add_node(pattern, "Vector_op", grs_op_Complex, mode_T, 291); - ext_grs_node_t *n_Block3415_603 = ext_grs_act_add_node_to_keep(pattern, "Block3415_603", grs_op_Block, mode_BB, 173, n_Block3415); - ext_grs_node_t *n_Block3416_604 = ext_grs_act_add_node_to_keep(pattern, "Block3416_604", grs_op_Block, mode_BB, 174, n_Block3416); - ext_grs_node_t *n_Jmp3757_605 = ext_grs_act_add_node_to_keep(pattern, "Jmp3757_605", grs_op_Jmp, mode_X, 175, n_Jmp3757); - ext_grs_node_t *n_Block2632_606 = ext_grs_act_add_node_to_keep(pattern, "Block2632_606", grs_op_Block, mode_BB, 176, n_Block2632); - ext_grs_node_t *n_Phi3533_607 = ext_grs_act_add_node_to_keep(pattern, "Phi3533_607", grs_op_Phi, mode_Is, 177, n_Phi3533); - ext_grs_node_t *n_Proj3265_608 = ext_grs_act_add_node_to_keep(pattern, "Proj3265_608", grs_op_Proj, mode_b, 178, n_Proj3265); - ext_grs_node_t *n_Proj3267_609 = ext_grs_act_add_node_to_keep(pattern, "Proj3267_609", grs_op_Proj, mode_X, 179, n_Proj3267); - ext_grs_node_t *n_Conv3601_610 = ext_grs_act_add_node_to_keep(pattern, "Conv3601_610", grs_op_Conv, mode_Is, 180, n_Conv3601); - ext_grs_node_t *n_Proj3268_611 = ext_grs_act_add_node_to_keep(pattern, "Proj3268_611", grs_op_Proj, mode_X, 181, n_Proj3268); - ext_grs_node_t *n_Jmp3122_612 = ext_grs_act_add_node_to_keep(pattern, "Jmp3122_612", grs_op_Jmp, mode_X, 183, n_Jmp3122); - ext_grs_node_t *n_Cond3614_613 = ext_grs_act_add_node_to_keep(pattern, "Cond3614_613", grs_op_Cond, mode_T, 182, n_Cond3614); - ext_grs_node_t *n_Conv3437_614 = ext_grs_act_add_node_to_keep(pattern, "Conv3437_614", grs_op_Conv, mode_Is, 184, n_Conv3437); - ext_grs_node_t *n_Block2633_615 = ext_grs_act_add_node_to_keep(pattern, "Block2633_615", grs_op_Block, mode_BB, 186, n_Block2633); - ext_grs_node_t *n_Sub2625_616 = ext_grs_act_add_node_to_keep(pattern, "Sub2625_616", grs_op_Sub, mode_Is, 185, n_Sub2625); - ext_grs_node_t *n_Sub2538_617 = ext_grs_act_add_node_to_keep(pattern, "Sub2538_617", grs_op_Sub, mode_Is, 187, n_Sub2538); - ext_grs_node_t *n_Block3155_618 = ext_grs_act_add_node_to_keep(pattern, "Block3155_618", grs_op_Block, mode_BB, 188, n_Block3155); - ext_grs_node_t *n_Sub3295_619 = ext_grs_act_add_node_to_keep(pattern, "Sub3295_619", grs_op_Sub, mode_Is, 190, n_Sub3295); - ext_grs_node_t *n_Block3154_620 = ext_grs_act_add_node_to_keep(pattern, "Block3154_620", grs_op_Block, mode_BB, 189, n_Block3154); - ext_grs_node_t *n_Proj2656_621 = ext_grs_act_add_node_to_keep(pattern, "Proj2656_621", grs_op_Proj, mode_b, 191, n_Proj2656); - ext_grs_node_t *n_Proj2658_622 = ext_grs_act_add_node_to_keep(pattern, "Proj2658_622", grs_op_Proj, mode_X, 192, n_Proj2658); - ext_grs_node_t *n_Proj2659_623 = ext_grs_act_add_node_to_keep(pattern, "Proj2659_623", grs_op_Proj, mode_X, 193, n_Proj2659); - ext_grs_node_t *n_Conv2557_624 = ext_grs_act_add_node_to_keep(pattern, "Conv2557_624", grs_op_Conv, mode_Is, 194, n_Conv2557); - ext_grs_node_t *n_Jmp3557_625 = ext_grs_act_add_node_to_keep(pattern, "Jmp3557_625", grs_op_Jmp, mode_X, 196, n_Jmp3557); - ext_grs_node_t *n_VProj3697_626 = ext_grs_act_add_node_to_keep(pattern, "VProj3697_626", grs_op_VProj, mode_Bu, 195, n_VProj3697); - ext_grs_node_t *n_VProj290_627 = ext_grs_act_add_node_to_keep(pattern, "VProj290_627", grs_op_VProj, mode_Is, 292, n_Vector_Result0_Add3762); - ext_grs_node_t *n_Block3012_628 = ext_grs_act_add_node_to_keep(pattern, "Block3012_628", grs_op_Block, mode_BB, 198, n_Block3012); - ext_grs_node_t *n_Jmp3235_629 = ext_grs_act_add_node_to_keep(pattern, "Jmp3235_629", grs_op_Jmp, mode_X, 199, n_Jmp3235); - ext_grs_node_t *n_Block2838_630 = ext_grs_act_add_node_to_keep(pattern, "Block2838_630", grs_op_Block, mode_BB, 201, n_Block2838); - ext_grs_node_t *n_Sub2712_631 = ext_grs_act_add_node_to_keep(pattern, "Sub2712_631", grs_op_Sub, mode_Is, 200, n_Sub2712); - ext_grs_node_t *n_Add3153_632 = ext_grs_act_add_node_to_keep(pattern, "Add3153_632", grs_op_Add, mode_Is, 203, n_Add3153); - ext_grs_node_t *n_Block2545_633 = ext_grs_act_add_node_to_keep(pattern, "Block2545_633", grs_op_Block, mode_BB, 202, n_Block2545); - ext_grs_node_t *n_Block2546_634 = ext_grs_act_add_node_to_keep(pattern, "Block2546_634", grs_op_Block, mode_BB, 205, n_Block2546); - ext_grs_node_t *n_Phi3359_635 = ext_grs_act_add_node_to_keep(pattern, "Phi3359_635", grs_op_Phi, mode_Is, 204, n_Phi3359); - ext_grs_node_t *n_Conv3611_636 = ext_grs_act_add_node_to_keep(pattern, "Conv3611_636", grs_op_Conv, mode_Is, 206, n_Conv3611); - ext_grs_node_t *n_Conv3524_637 = ext_grs_act_add_node_to_keep(pattern, "Conv3524_637", grs_op_Conv, mode_Is, 207, n_Conv3524); - ext_grs_node_t *n_Proj3355_638 = ext_grs_act_add_node_to_keep(pattern, "Proj3355_638", grs_op_Proj, mode_X, 209, n_Proj3355); - ext_grs_node_t *n_Conv3427_639 = ext_grs_act_add_node_to_keep(pattern, "Conv3427_639", grs_op_Conv, mode_Is, 208, n_Conv3427); - ext_grs_node_t *n_Cond3353_640 = ext_grs_act_add_node_to_keep(pattern, "Cond3353_640", grs_op_Cond, mode_T, 210, n_Cond3353); - ext_grs_node_t *n_VProj3001_641 = ext_grs_act_add_node_to_keep(pattern, "VProj3001_641", grs_op_VProj, mode_Bu, 212, n_VProj3001); - ext_grs_node_t *n_Cond2744_642 = ext_grs_act_add_node_to_keep(pattern, "Cond2744_642", grs_op_Cond, mode_T, 211, n_Cond2744); - ext_grs_node_t *n_Proj3354_643 = ext_grs_act_add_node_to_keep(pattern, "Proj3354_643", grs_op_Proj, mode_X, 214, n_Proj3354); - ext_grs_node_t *n_VProj3165_644 = ext_grs_act_add_node_to_keep(pattern, "VProj3165_644", grs_op_VProj, mode_Bu, 213, n_VProj3165); - ext_grs_node_t *n_Proj3352_645 = ext_grs_act_add_node_to_keep(pattern, "Proj3352_645", grs_op_Proj, mode_b, 215, n_Proj3352); - ext_grs_node_t *n_Add3414_646 = ext_grs_act_add_node_to_keep(pattern, "Add3414_646", grs_op_Add, mode_Is, 216, n_Add3414); - ext_grs_node_t *n_Conv2567_647 = ext_grs_act_add_node_to_keep(pattern, "Conv2567_647", grs_op_Conv, mode_Is, 217, n_Conv2567); - ext_grs_node_t *n_Sub3495_648 = ext_grs_act_add_node_to_keep(pattern, "Sub3495_648", grs_op_Sub, mode_Is, 218, n_Sub3495); - ext_grs_node_t *n_Jmp3148_649 = ext_grs_act_add_node_to_keep(pattern, "Jmp3148_649", grs_op_Jmp, mode_X, 219, n_Jmp3148); - ext_grs_node_t *n_Jmp2800_650 = ext_grs_act_add_node_to_keep(pattern, "Jmp2800_650", grs_op_Jmp, mode_X, 220, n_Jmp2800); - ext_grs_node_t *n_Sub2599_651 = ext_grs_act_add_node_to_keep(pattern, "Sub2599_651", grs_op_Sub, mode_Is, 221, n_Sub2599); - ext_grs_node_t *n_VProj3175_652 = ext_grs_act_add_node_to_keep(pattern, "VProj3175_652", grs_op_VProj, mode_Bu, 222, n_VProj3175); - ext_grs_node_t *n_Sub3408_653 = ext_grs_act_add_node_to_keep(pattern, "Sub3408_653", grs_op_Sub, mode_Is, 223, n_Sub3408); - ext_grs_node_t *n_VProj3078_654 = ext_grs_act_add_node_to_keep(pattern, "VProj3078_654", grs_op_VProj, mode_Bu, 225, n_VProj3078); - ext_grs_node_t *n_Sub2452_655 = ext_grs_act_add_node_to_keep(pattern, "Sub2452_655", grs_op_Sub, mode_Is, 224, n_Sub2452); - ext_grs_node_t *n_Conv2741_656 = ext_grs_act_add_node_to_keep(pattern, "Conv2741_656", grs_op_Conv, mode_Is, 226, n_Conv2741); - ext_grs_node_t *n_Proj3004_657 = ext_grs_act_add_node_to_keep(pattern, "Proj3004_657", grs_op_Proj, mode_b, 227, n_Proj3004); - ext_grs_node_t *n_Add3501_658 = ext_grs_act_add_node_to_keep(pattern, "Add3501_658", grs_op_Add, mode_Is, 228, n_Add3501); - ext_grs_node_t *n_Cond3005_659 = ext_grs_act_add_node_to_keep(pattern, "Cond3005_659", grs_op_Cond, mode_T, 229, n_Cond3005); - ext_grs_node_t *n_Proj2482_660 = ext_grs_act_add_node_to_keep(pattern, "Proj2482_660", grs_op_Proj, mode_b, 230, n_Proj2482); - ext_grs_node_t *n_Proj2571_661 = ext_grs_act_add_node_to_keep(pattern, "Proj2571_661", grs_op_Proj, mode_X, 231, n_Proj2571); - ext_grs_node_t *n_Proj2572_662 = ext_grs_act_add_node_to_keep(pattern, "Proj2572_662", grs_op_Proj, mode_X, 234, n_Proj2572); - ext_grs_node_t *n_Jmp2774_663 = ext_grs_act_add_node_to_keep(pattern, "Jmp2774_663", grs_op_Jmp, mode_X, 233, n_Jmp2774); - ext_grs_node_t *n_Proj3006_664 = ext_grs_act_add_node_to_keep(pattern, "Proj3006_664", grs_op_Proj, mode_X, 232, n_Proj3006); - ext_grs_node_t *n_Proj3007_665 = ext_grs_act_add_node_to_keep(pattern, "Proj3007_665", grs_op_Proj, mode_X, 237, n_Proj3007); - ext_grs_node_t *n_Proj2485_666 = ext_grs_act_add_node_to_keep(pattern, "Proj2485_666", grs_op_Proj, mode_X, 236, n_Proj2485); - ext_grs_node_t *n_Sub3469_667 = ext_grs_act_add_node_to_keep(pattern, "Sub3469_667", grs_op_Sub, mode_Is, 235, n_Sub3469); - ext_grs_node_t *n_Proj2484_668 = ext_grs_act_add_node_to_keep(pattern, "Proj2484_668", grs_op_Proj, mode_X, 238, n_Proj2484); - ext_grs_node_t *n_Add3675_669 = ext_grs_act_add_node_to_keep(pattern, "Add3675_669", grs_op_Add, mode_Is, 239, n_Add3675); - ext_grs_node_t *n_VProj2556_670 = ext_grs_act_add_node_to_keep(pattern, "VProj2556_670", grs_op_VProj, mode_Bu, 240, n_VProj2556); - ext_grs_node_t *n_Jmp3296_671 = ext_grs_act_add_node_to_keep(pattern, "Jmp3296_671", grs_op_Jmp, mode_X, 241, n_Jmp3296); - ext_grs_node_t *n_VProj3088_672 = ext_grs_act_add_node_to_keep(pattern, "VProj3088_672", grs_op_VProj, mode_Bu, 242, n_VProj3088); - ext_grs_node_t *n_Phi3272_673 = ext_grs_act_add_node_to_keep(pattern, "Phi3272_673", grs_op_Phi, mode_Is, 244, n_Phi3272); - ext_grs_node_t *n_Add2631_674 = ext_grs_act_add_node_to_keep(pattern, "Add2631_674", grs_op_Add, mode_Is, 243, n_Add2631); - ext_grs_node_t *n_VProj3687_675 = ext_grs_act_add_node_to_keep(pattern, "VProj3687_675", grs_op_VProj, mode_Bu, 245, n_VProj3687); - ext_grs_node_t *n_Block2806_676 = ext_grs_act_add_node_to_keep(pattern, "Block2806_676", grs_op_Block, mode_BB, 249, n_Block2806); - ext_grs_node_t *n_Jmp2687_677 = ext_grs_act_add_node_to_keep(pattern, "Jmp2687_677", grs_op_Jmp, mode_X, 248, n_Jmp2687); - ext_grs_node_t *n_Conv2731_678 = ext_grs_act_add_node_to_keep(pattern, "Conv2731_678", grs_op_Conv, mode_Is, 247, n_Conv2731); - ext_grs_node_t *n_Sub2973_679 = ext_grs_act_add_node_to_keep(pattern, "Sub2973_679", grs_op_Sub, mode_Is, 246, n_Sub2973); - ext_grs_node_t *n_Jmp3496_680 = ext_grs_act_add_node_to_keep(pattern, "Jmp3496_680", grs_op_Jmp, mode_X, 251, n_Jmp3496); - ext_grs_node_t *n_Block2807_681 = ext_grs_act_add_node_to_keep(pattern, "Block2807_681", grs_op_Block, mode_BB, 250, n_Block2807); - ext_grs_node_t *n_Proj2569_682 = ext_grs_act_add_node_to_keep(pattern, "Proj2569_682", grs_op_Proj, mode_b, 252, n_Proj2569); - ext_grs_node_t *n_Conv3176_683 = ext_grs_act_add_node_to_keep(pattern, "Conv3176_683", grs_op_Conv, mode_Is, 253, n_Conv3176); - ext_grs_node_t *n_VProj2817_684 = ext_grs_act_add_node_to_keep(pattern, "VProj2817_684", grs_op_VProj, mode_Bu, 254, n_VProj2817); - ext_grs_node_t *n_Block2577_685 = ext_grs_act_add_node_to_keep(pattern, "Block2577_685", grs_op_Block, mode_BB, 255, n_Block2577); - ext_grs_node_t *n_Conv3079_686 = ext_grs_act_add_node_to_keep(pattern, "Conv3079_686", grs_op_Conv, mode_Is, 256, n_Conv3079); - ext_grs_node_t *n_Add2805_687 = ext_grs_act_add_node_to_keep(pattern, "Add2805_687", grs_op_Add, mode_Is, 258, n_Add2805); - ext_grs_node_t *n_VProj2914_688 = ext_grs_act_add_node_to_keep(pattern, "VProj2914_688", grs_op_VProj, mode_Bu, 257, n_VProj2914); - ext_grs_node_t *n_Block2980_689 = ext_grs_act_add_node_to_keep(pattern, "Block2980_689", grs_op_Block, mode_BB, 260, n_Block2980); - ext_grs_node_t *n_Proj3613_690 = ext_grs_act_add_node_to_keep(pattern, "Proj3613_690", grs_op_Proj, mode_b, 259, n_Proj3613); - ext_grs_node_t *n_VProj3252_691 = ext_grs_act_add_node_to_keep(pattern, "VProj3252_691", grs_op_VProj, mode_Bu, 262, n_VProj3252); - ext_grs_node_t *n_Block2981_692 = ext_grs_act_add_node_to_keep(pattern, "Block2981_692", grs_op_Block, mode_BB, 261, n_Block2981); - ext_grs_node_t *n_Sub2860_693 = ext_grs_act_add_node_to_keep(pattern, "Sub2860_693", grs_op_Sub, mode_Is, 264, n_Sub2860); - ext_grs_node_t *n_Proj3615_694 = ext_grs_act_add_node_to_keep(pattern, "Proj3615_694", grs_op_Proj, mode_X, 263, n_Proj3615); - ext_grs_node_t *n_Proj3616_695 = ext_grs_act_add_node_to_keep(pattern, "Proj3616_695", grs_op_Proj, mode_X, 265, n_Proj3616); - ext_grs_node_t *n_Cmp5660_696 = ext_grs_act_add_node_to_keep(pattern, "Cmp5660_696", grs_op_Cmp, mode_T, 267, n_Cmp5660); - ext_grs_node_t *n_Jmp2513_697 = ext_grs_act_add_node_to_keep(pattern, "Jmp2513_697", grs_op_Jmp, mode_X, 266, n_Jmp2513); - ext_grs_node_t *n_Sub3582_698 = ext_grs_act_add_node_to_keep(pattern, "Sub3582_698", grs_op_Sub, mode_Is, 268, n_Sub3582); - ext_grs_node_t *n_Sub3060_699 = ext_grs_act_add_node_to_keep(pattern, "Sub3060_699", grs_op_Sub, mode_Is, 269, n_Sub3060); - ext_grs_node_t *n_Proj3529_700 = ext_grs_act_add_node_to_keep(pattern, "Proj3529_700", grs_op_Proj, mode_X, 270, n_Proj3529); - ext_grs_node_t *n_Proj3528_701 = ext_grs_act_add_node_to_keep(pattern, "Proj3528_701", grs_op_Proj, mode_X, 271, n_Proj3528); - ext_grs_node_t *n_Phi3446_702 = ext_grs_act_add_node_to_keep(pattern, "Phi3446_702", grs_op_Phi, mode_Is, 273, n_Phi3446); - ext_grs_node_t *n_Add2718_703 = ext_grs_act_add_node_to_keep(pattern, "Add2718_703", grs_op_Add, mode_Is, 272, n_Add2718); - ext_grs_node_t *n_Proj3526_704 = ext_grs_act_add_node_to_keep(pattern, "Proj3526_704", grs_op_Proj, mode_b, 276, n_Proj3526); - ext_grs_node_t *n_Conv3166_705 = ext_grs_act_add_node_to_keep(pattern, "Conv3166_705", grs_op_Conv, mode_Is, 274, n_Conv3166); - ext_grs_node_t *n_Vector_op_Block_706 = ext_grs_act_add_node_to_keep(pattern, "Vector_op_Block_706", grs_op_Block, mode_BB, 275, n_Vector_op_Block); - ext_grs_node_t *n_VProj2827_707 = ext_grs_act_add_node_to_keep(pattern, "VProj2827_707", grs_op_VProj, mode_Bu, 277, n_VProj2827); - ext_grs_node_t *n_Block3503_708 = ext_grs_act_add_node_to_keep(pattern, "Block3503_708", grs_op_Block, mode_BB, 278, n_Block3503); - ext_grs_node_t *n_Block3502_709 = ext_grs_act_add_node_to_keep(pattern, "Block3502_709", grs_op_Block, mode_BB, 279, n_Block3502); - ext_grs_node_t *n_Jmp3470_710 = ext_grs_act_add_node_to_keep(pattern, "Jmp3470_710", grs_op_Jmp, mode_X, 281, n_Jmp3470); - ext_grs_node_t *n_Proj2745_711 = ext_grs_act_add_node_to_keep(pattern, "Proj2745_711", grs_op_Proj, mode_X, 280, n_Proj2745); - ext_grs_node_t *n_Proj2746_712 = ext_grs_act_add_node_to_keep(pattern, "Proj2746_712", grs_op_Proj, mode_X, 282, n_Proj2746); - ext_grs_node_t *n_Proj2743_713 = ext_grs_act_add_node_to_keep(pattern, "Proj2743_713", grs_op_Proj, mode_b, 283, n_Proj2743); - ext_grs_node_t *n_Cond3701_714 = ext_grs_act_add_node_to_keep(pattern, "Cond3701_714", grs_op_Cond, mode_T, 284, n_Cond3701); - ext_grs_node_t *n_Jmp3644_715 = ext_grs_act_add_node_to_keep(pattern, "Jmp3644_715", grs_op_Jmp, mode_X, 285, n_Jmp3644); - ext_grs_node_t *n_Conv2992_716 = ext_grs_act_add_node_to_keep(pattern, "Conv2992_716", grs_op_Conv, mode_Is, 286, n_Conv2992); - ext_grs_node_t *n_VProj3262_717 = ext_grs_act_add_node_to_keep(pattern, "VProj3262_717", grs_op_VProj, mode_Bu, 287, n_VProj3262); - ext_grs_node_t *n_Phi3011_718 = ext_grs_act_add_node_to_keep(pattern, "Phi3011_718", grs_op_Phi, mode_Is, 288, n_Phi3011); - ext_grs_node_t *n_Block2404_719 = ext_grs_act_add_node_to_keep(pattern, "Block2404_719", grs_op_Block, mode_BB, 289, n_Block2404); - - /* The edges of the pattern */ - ext_grs_edge_t *e_e334_720 = ext_grs_act_add_edge_to_keep(pattern, "e334_720", ext_grs_NO_EDGE_POS, n_Proj3180_460, n_Block3155_618, 1, e_e334); - ext_grs_edge_t *e_e624_721 = ext_grs_act_add_edge_to_keep(pattern, "e624_721", ext_grs_NO_EDGE_POS, n_Jmp3035_479, n_Block3012_628, 0, e_e624); - ext_grs_edge_t *e_e430_722 = ext_grs_act_add_edge_to_keep(pattern, "e430_722", ext_grs_NO_EDGE_POS, n_Phi3446_702, n_Add3414_646, 3, e_e430); - ext_grs_edge_t *e_e625_723 = ext_grs_act_add_edge_to_keep(pattern, "e625_723", ext_grs_NO_EDGE_POS, n_Jmp3061_448, n_Block3012_628, 2, e_e625); - ext_grs_edge_t *e_e431_724 = ext_grs_act_add_edge_to_keep(pattern, "e431_724", ext_grs_NO_EDGE_POS, n_Add3327_556, n_Add3414_646, 4, e_e431); - ext_grs_edge_t *e_e523_725 = ext_grs_act_add_edge_to_keep(pattern, "e523_725", ext_grs_NO_EDGE_POS, n_Jmp2861_538, n_Block2838_630, 5, e_e523); - ext_grs_edge_t *e_e524_726 = ext_grs_act_add_edge_to_keep(pattern, "e524_726", ext_grs_NO_EDGE_POS, n_Jmp2887_500, n_Block2838_630, 6, e_e524); - ext_grs_edge_t *e_pos2_621_727 = ext_grs_act_add_edge_to_keep(pattern, "pos2_621_727", 1, n_Conv2470_579, n_Sub2538_617, 7, e_pos2_621); - ext_grs_edge_t *e_e433_728 = ext_grs_act_add_edge_to_keep(pattern, "e433_728", ext_grs_NO_EDGE_POS, n_Jmp2513_697, n_Block2490_521, 8, e_e433); - ext_grs_edge_t *e_e526_729 = ext_grs_act_add_edge_to_keep(pattern, "e526_729", ext_grs_NO_EDGE_POS, n_Proj3702_469, n_Block3677_491, 9, e_e526); - ext_grs_edge_t *e_e434_730 = ext_grs_act_add_edge_to_keep(pattern, "e434_730", ext_grs_NO_EDGE_POS, n_Jmp2539_450, n_Block2490_521, 10, e_e434); - ext_grs_edge_t *e_e331_731 = ext_grs_act_add_edge_to_keep(pattern, "e331_731", ext_grs_NO_EDGE_POS, n_Phi3707_456, n_Add3675_669, 11, e_e331); - ext_grs_edge_t *e_e332_732 = ext_grs_act_add_edge_to_keep(pattern, "e332_732", ext_grs_NO_EDGE_POS, n_Add3588_511, n_Add3675_669, 12, e_e332); - ext_grs_edge_t *e_pos0_324_733 = ext_grs_act_add_edge_to_keep(pattern, "pos0_324_733", -1, n_Block3415_603, n_Jmp3470_710, 13, e_pos0_324); - ext_grs_edge_t *e_pos2_629_734 = ext_grs_act_add_edge_to_keep(pattern, "pos2_629_734", 1, n_Conv3524_637, n_Sub3556_432, 14, e_pos2_629); - ext_grs_edge_t *e_pos2_385_735 = ext_grs_act_add_edge_to_keep(pattern, "pos2_385_735", 1, n_Conv3437_614, n_Sub3469_667, 15, e_pos2_385); - ext_grs_edge_t *e_e325_736 = ext_grs_act_add_edge_to_keep(pattern, "e325_736", ext_grs_NO_EDGE_POS, n_Jmp2948_442, n_Block2925_571, 18, e_e325); - ext_grs_edge_t *e_e420_737 = ext_grs_act_add_edge_to_keep(pattern, "e420_737", ext_grs_NO_EDGE_POS, n_Jmp3731_519, n_Block3708_590, 17, e_e420); - ext_grs_edge_t *e_e637_738 = ext_grs_act_add_edge_to_keep(pattern, "e637_738", ext_grs_NO_EDGE_POS, n_Phi2924_526, n_Add2892_554, 16, e_e637); - ext_grs_edge_t *e_e326_739 = ext_grs_act_add_edge_to_keep(pattern, "e326_739", ext_grs_NO_EDGE_POS, n_Jmp2974_523, n_Block2925_571, 21, e_e326); - ext_grs_edge_t *e_e421_740 = ext_grs_act_add_edge_to_keep(pattern, "e421_740", ext_grs_NO_EDGE_POS, n_Jmp3757_605, n_Block3708_590, 20, e_e421); - ext_grs_edge_t *e_e638_741 = ext_grs_act_add_edge_to_keep(pattern, "e638_741", ext_grs_NO_EDGE_POS, n_Add2805_687, n_Add2892_554, 19, e_e638); - ext_grs_edge_t *e_pos2_470_742 = ext_grs_act_add_edge_to_keep(pattern, "pos2_470_742", 1, n_Conv2395_549, n_Sub2426_584, 22, e_pos2_470); - ext_grs_edge_t *e_pos2_576_743 = ext_grs_act_add_edge_to_keep(pattern, "pos2_576_743", 1, n_Conv2395_549, n_Cmp5645_569, 24, e_pos2_576); - ext_grs_edge_t *e_e631_744 = ext_grs_act_add_edge_to_keep(pattern, "e631_744", ext_grs_NO_EDGE_POS, n_Jmp2427_470, n_Block2404_719, 23, e_e631); - ext_grs_edge_t *e_e632_745 = ext_grs_act_add_edge_to_keep(pattern, "e632_745", ext_grs_NO_EDGE_POS, n_Jmp2453_555, n_Block2404_719, 25, e_e632); - ext_grs_edge_t *e_e428_746 = ext_grs_act_add_edge_to_keep(pattern, "e428_746", ext_grs_NO_EDGE_POS, n_Jmp3148_649, n_Block3099_472, 26, e_e428); - ext_grs_edge_t *e_e535_747 = ext_grs_act_add_edge_to_keep(pattern, "e535_747", ext_grs_NO_EDGE_POS, n_Proj3093_536, n_Block3068_508, 27, e_e535); - ext_grs_edge_t *e_e427_748 = ext_grs_act_add_edge_to_keep(pattern, "e427_748", ext_grs_NO_EDGE_POS, n_Jmp3122_612, n_Block3099_472, 28, e_e427); - ext_grs_edge_t *e_e321_749 = ext_grs_act_add_edge_to_keep(pattern, "e321_749", ext_grs_NO_EDGE_POS, n_Sub2599_651, n_Phi2663_602, 30, e_e321); - ext_grs_edge_t *e_pos2_570_750 = ext_grs_act_add_edge_to_keep(pattern, "pos2_570_750", 1, n_Conv3698_483, n_Cmp5660_696, 29, e_pos2_570); - ext_grs_edge_t *e_e322_751 = ext_grs_act_add_edge_to_keep(pattern, "e322_751", ext_grs_NO_EDGE_POS, n_Sub2625_616, n_Phi2663_602, 32, e_e322); - ext_grs_edge_t *e_pos0_512_752 = ext_grs_act_add_edge_to_keep(pattern, "pos0_512_752", -1, n_Vector_op_Block_706, n_Cond2398_585, 31, e_pos0_512); - ext_grs_edge_t *e_e320_753 = ext_grs_act_add_edge_to_keep(pattern, "e320_753", ext_grs_NO_EDGE_POS, n_Block2577_685, n_Phi2663_602, 34, e_e320); - ext_grs_edge_t *e_pos0_514_754 = ext_grs_act_add_edge_to_keep(pattern, "pos0_514_754", -1, n_Block2981_692, n_Sub3060_699, 33, e_pos0_514); - ext_grs_edge_t *e_e733_755 = ext_grs_act_add_edge_to_keep(pattern, "e733_755", ext_grs_NO_EDGE_POS, n_Phi2576_575, n_Add2544_476, 35, e_e733); - ext_grs_edge_t *e_pos0_311_756 = ext_grs_act_add_edge_to_keep(pattern, "pos0_311_756", -1, n_Block3155_618, n_Jmp3235_629, 36, e_pos0_311); - ext_grs_edge_t *e_pos0_519_757 = ext_grs_act_add_edge_to_keep(pattern, "pos0_519_757", -1, n_Block3329_435, n_Sub3408_653, 38, e_pos0_519); - ext_grs_edge_t *e_pos2_614_758 = ext_grs_act_add_edge_to_keep(pattern, "pos2_614_758", 1, n_Conv3350_557, n_Sub3382_545, 37, e_pos2_614); - ext_grs_edge_t *e_pos2_373_759 = ext_grs_act_add_edge_to_keep(pattern, "pos2_373_759", 1, n_Conv3176_683, n_Cmp5654_594, 39, e_pos2_373); - ext_grs_edge_t *e_pos0_316_760 = ext_grs_act_add_edge_to_keep(pattern, "pos0_316_760", -1, n_Block2751_520, n_Cond2831_513, 40, e_pos0_316); - ext_grs_edge_t *e_pos2_371_761 = ext_grs_act_add_edge_to_keep(pattern, "pos2_371_761", 1, n_Conv3263_532, n_Sub3295_619, 41, e_pos2_371); - ext_grs_edge_t *e_e734_762 = ext_grs_act_add_edge_to_keep(pattern, "e734_762", ext_grs_NO_EDGE_POS, n_Phi2489_467, n_Add2544_476, 42, e_e734); - ext_grs_edge_t *e_pos2_376_763 = ext_grs_act_add_edge_to_keep(pattern, "pos2_376_763", 1, n_Conv2386_599, n_Sub2452_655, 43, e_pos2_376); - ext_grs_edge_t *e_pos2_756_764 = ext_grs_act_add_edge(pattern, "pos2_756_764", 1, n_Arg_1_509, n_Vector_op, 462); - ext_grs_edge_t *e_e645_765 = ext_grs_act_add_edge_to_keep(pattern, "e645_765", ext_grs_NO_EDGE_POS, n_Proj3267_609, n_Block3242_530, 44, e_e645); - ext_grs_edge_t *e_e312_766 = ext_grs_act_add_edge_to_keep(pattern, "e312_766", ext_grs_NO_EDGE_POS, n_Jmp3557_625, n_Block3534_561, 45, e_e312); - ext_grs_edge_t *e_pos2_741_767 = ext_grs_act_add_edge_to_keep(pattern, "pos2_741_767", 1, n_Conv2905_548, n_Sub2973_679, 46, e_pos2_741); - ext_grs_edge_t *e_e452_768 = ext_grs_act_add_edge_to_keep(pattern, "e452_768", ext_grs_NO_EDGE_POS, n_Block3708_590, n_Phi3870_482, 47, e_e452); - ext_grs_edge_t *e_e313_769 = ext_grs_act_add_edge_to_keep(pattern, "e313_769", ext_grs_NO_EDGE_POS, n_Jmp3583_550, n_Block3534_561, 48, e_e313); - ext_grs_edge_t *e_e453_770 = ext_grs_act_add_edge_to_keep(pattern, "e453_770", ext_grs_NO_EDGE_POS, n_Sub3730_477, n_Phi3870_482, 49, e_e453); - ext_grs_edge_t *e_e454_771 = ext_grs_act_add_edge_to_keep(pattern, "e454_771", ext_grs_NO_EDGE_POS, n_Sub3756_445, n_Phi3870_482, 50, e_e454); - ext_grs_edge_t *e_e709_772 = ext_grs_act_add_edge_to_keep(pattern, "e709_772", ext_grs_NO_EDGE_POS, n_Add2544_476, n_Add2631_674, 51, e_e709); - ext_grs_edge_t *e_e504_773 = ext_grs_act_add_edge_to_keep(pattern, "e504_773", ext_grs_NO_EDGE_POS, n_Proj2833_490, n_Block2806_676, 52, e_e504); - ext_grs_edge_t *e_e456_774 = ext_grs_act_add_edge_to_keep(pattern, "e456_774", ext_grs_NO_EDGE_POS, n_Phi3359_635, n_Add3327_556, 53, e_e456); - ext_grs_edge_t *e_e457_775 = ext_grs_act_add_edge_to_keep(pattern, "e457_775", ext_grs_NO_EDGE_POS, n_Add3240_574, n_Add3327_556, 54, e_e457); - ext_grs_edge_t *e_e310_776 = ext_grs_act_add_edge_to_keep(pattern, "e310_776", ext_grs_NO_EDGE_POS, n_Proj2745_711, n_Block2720_559, 55, e_e310); - ext_grs_edge_t *e_pos2_644_777 = ext_grs_act_add_edge_to_keep(pattern, "pos2_644_777", 1, n_Conv2567_647, n_Cmp5647_564, 56, e_pos2_644); - ext_grs_edge_t *e_e705_778 = ext_grs_act_add_edge_to_keep(pattern, "e705_778", ext_grs_NO_EDGE_POS, n_Sub2947_558, n_Phi3011_718, 57, e_e705); - ext_grs_edge_t *e_e459_779 = ext_grs_act_add_edge_to_keep(pattern, "e459_779", ext_grs_NO_EDGE_POS, n_Block3012_628, n_Phi3098_497, 58, e_e459); - ext_grs_edge_t *e_e706_780 = ext_grs_act_add_edge_to_keep(pattern, "e706_780", ext_grs_NO_EDGE_POS, n_Sub2973_679, n_Phi3011_718, 59, e_e706); - ext_grs_edge_t *e_e500_781 = ext_grs_act_add_edge_to_keep(pattern, "e500_781", ext_grs_NO_EDGE_POS, n_Phi3272_673, n_Add3240_574, 60, e_e500); - ext_grs_edge_t *e_pos2_467_782 = ext_grs_act_add_edge_to_keep(pattern, "pos2_467_782", 1, n_Conv3437_614, n_Cmp5657_587, 61, e_pos2_467); - ext_grs_edge_t *e_pos2_641_783 = ext_grs_act_add_edge_to_keep(pattern, "pos2_641_783", 1, n_Conv3176_683, n_Sub3208_484, 62, e_pos2_641); - ext_grs_edge_t *e_e501_784 = ext_grs_act_add_edge_to_keep(pattern, "e501_784", ext_grs_NO_EDGE_POS, n_Add3153_632, n_Add3240_574, 63, e_e501); - ext_grs_edge_t *e_e708_785 = ext_grs_act_add_edge_to_keep(pattern, "e708_785", ext_grs_NO_EDGE_POS, n_Phi2663_602, n_Add2631_674, 64, e_e708); - ext_grs_edge_t *e_e702_786 = ext_grs_act_add_edge_to_keep(pattern, "e702_786", ext_grs_NO_EDGE_POS, n_Proj2399_601, n_Block2377_553, 65, e_e702); - ext_grs_edge_t *e_e701_787 = ext_grs_act_add_edge_to_keep(pattern, "e701_787", ext_grs_NO_EDGE_POS, n_Sub3669_485, n_Phi3707_456, 66, e_e701); - ext_grs_edge_t *e_pos0_306_788 = ext_grs_act_add_edge_to_keep(pattern, "pos0_306_788", -1, n_Block3708_590, n_VProj290_627, 67, e_pos0_306); - ext_grs_edge_t *e_e704_789 = ext_grs_act_add_edge_to_keep(pattern, "e704_789", ext_grs_NO_EDGE_POS, n_Block2925_571, n_Phi3011_718, 68, e_e704); - ext_grs_edge_t *e_e700_790 = ext_grs_act_add_edge_to_keep(pattern, "e700_790", ext_grs_NO_EDGE_POS, n_Sub3643_453, n_Phi3707_456, 69, e_e700); - ext_grs_edge_t *e_pos0_505_791 = ext_grs_act_add_edge_to_keep(pattern, "pos0_505_791", -1, n_Block2459_572, n_Jmp2539_450, 70, e_pos0_505); - ext_grs_edge_t *e_pos0_506_792 = ext_grs_act_add_edge_to_keep(pattern, "pos0_506_792", -1, n_Block3677_491, n_Sub3756_445, 71, e_pos0_506); - ext_grs_edge_t *e_pos2_745_793 = ext_grs_act_add_edge_to_keep(pattern, "pos2_745_793", 1, n_Conv3253_515, n_Sub3321_452, 72, e_pos2_745); - ext_grs_edge_t *e_pos2_747_794 = ext_grs_act_add_edge_to_keep(pattern, "pos2_747_794", 1, n_Conv2915_439, n_Cmp5651_597, 73, e_pos2_747); - ext_grs_edge_t *e_pos0_406_795 = ext_grs_act_add_edge_to_keep(pattern, "pos0_406_795", -1, n_Block3708_590, n_Add3501_658, 74, e_pos0_406); - ext_grs_edge_t *e_e656_796 = ext_grs_act_add_edge_to_keep(pattern, "e656_796", ext_grs_NO_EDGE_POS, n_Phi2837_527, n_Add2805_687, 76, e_e656); - ext_grs_edge_t *e_e305_797 = ext_grs_act_add_edge_to_keep(pattern, "e305_797", ext_grs_NO_EDGE_POS, n_Sub2452_655, n_Phi2489_467, 78, e_e305); - ext_grs_edge_t *e_e442_798 = ext_grs_act_add_edge_to_keep(pattern, "e442_798", ext_grs_NO_EDGE_POS, n_Proj3354_643, n_Block3329_435, 79, e_e442); - ext_grs_edge_t *e_e303_799 = ext_grs_act_add_edge_to_keep(pattern, "e303_799", ext_grs_NO_EDGE_POS, n_Block2404_719, n_Phi2489_467, 80, e_e303); - ext_grs_edge_t *e_e304_800 = ext_grs_act_add_edge_to_keep(pattern, "e304_800", ext_grs_NO_EDGE_POS, n_Sub2426_584, n_Phi2489_467, 81, e_e304); - ext_grs_edge_t *e_e657_801 = ext_grs_act_add_edge_to_keep(pattern, "e657_801", ext_grs_NO_EDGE_POS, n_Add2718_703, n_Add2805_687, 82, e_e657); - ext_grs_edge_t *e_pos2_592_802 = ext_grs_act_add_edge_to_keep(pattern, "pos2_592_802", 1, n_Conv2644_512, n_Sub2712_631, 83, e_pos2_592); - ext_grs_edge_t *e_e300_803 = ext_grs_act_add_edge_to_keep(pattern, "e300_803", ext_grs_NO_EDGE_POS, n_Sub2799_488, n_Phi2837_527, 84, e_e300); - ext_grs_edge_t *e_e716_804 = ext_grs_act_add_edge_to_keep(pattern, "e716_804", ext_grs_NO_EDGE_POS, n_Jmp3235_629, n_Block3186_551, 85, e_e716); - ext_grs_edge_t *e_e448_805 = ext_grs_act_add_edge_to_keep(pattern, "e448_805", ext_grs_NO_EDGE_POS, n_Proj3268_611, n_Block3241_529, 86, e_e448); - ext_grs_edge_t *e_e715_806 = ext_grs_act_add_edge_to_keep(pattern, "e715_806", ext_grs_NO_EDGE_POS, n_Jmp3209_501, n_Block3186_551, 87, e_e715); - ext_grs_edge_t *e_pos2_393_807 = ext_grs_act_add_edge_to_keep(pattern, "pos2_393_807", 1, n_Conv2741_656, n_Sub2773_522, 88, e_pos2_393); - ext_grs_edge_t *e_e712_808 = ext_grs_act_add_edge_to_keep(pattern, "e712_808", ext_grs_NO_EDGE_POS, n_Sub3321_452, n_Phi3359_635, 89, e_e712); - ext_grs_edge_t *e_e711_809 = ext_grs_act_add_edge_to_keep(pattern, "e711_809", ext_grs_NO_EDGE_POS, n_Sub3295_619, n_Phi3359_635, 90, e_e711); - ext_grs_edge_t *e_e710_810 = ext_grs_act_add_edge_to_keep(pattern, "e710_810", ext_grs_NO_EDGE_POS, n_Block3273_516, n_Phi3359_635, 91, e_e710); - ext_grs_edge_t *e_pos2_635_811 = ext_grs_act_add_edge_to_keep(pattern, "pos2_635_811", 1, n_Conv2828_449, n_Sub2860_693, 92, e_pos2_635); - ext_grs_edge_t *e_pos1_291_812 = ext_grs_act_add_edge_to_keep(pattern, "pos1_291_812", 0, n_VProj3165_644, n_Conv3166_705, 94, e_pos1_291); - ext_grs_edge_t *e_pos2_737_813 = ext_grs_act_add_edge_to_keep(pattern, "pos2_737_813", 1, n_Conv3601_610, n_Sub3669_485, 93, e_pos2_737); - ext_grs_edge_t *e_pos1_293_814 = ext_grs_act_add_edge_to_keep(pattern, "pos1_293_814", 0, n_Cond2398_585, n_Proj2399_601, 95, e_pos1_293); - ext_grs_edge_t *e_pos1_294_815 = ext_grs_act_add_edge_to_keep(pattern, "pos1_294_815", 0, n_Arg_0_507, n_VProj3426_495, 96, e_pos1_294); - ext_grs_edge_t *e_pos2_398_816 = ext_grs_act_add_edge_to_keep(pattern, "pos2_398_816", 1, n_Conv3089_454, n_Sub3121_455, 97, e_pos2_398); - ext_grs_edge_t *e_pos1_297_817 = ext_grs_act_add_edge_to_keep(pattern, "pos1_297_817", 0, n_VProj2556_670, n_Conv2557_624, 98, e_pos1_297); - ext_grs_edge_t *e_pos2_661_818 = ext_grs_act_add_edge_to_keep(pattern, "pos2_661_818", 1, n_Conv2654_525, n_Cmp5648_565, 99, e_pos2_661); - ext_grs_edge_t *e_pos0_564_819 = ext_grs_act_add_edge_to_keep(pattern, "pos0_564_819", -1, n_Block3708_590, n_Add3066_534, 100, e_pos0_564); - ext_grs_edge_t *e_e478_820 = ext_grs_act_add_edge_to_keep(pattern, "e478_820", ext_grs_NO_EDGE_POS, n_Sub3556_432, n_Phi3620_433, 101, e_e478); - ext_grs_edge_t *e_e477_821 = ext_grs_act_add_edge_to_keep(pattern, "e477_821", ext_grs_NO_EDGE_POS, n_Block3534_561, n_Phi3620_433, 102, e_e477); - ext_grs_edge_t *e_e479_822 = ext_grs_act_add_edge_to_keep(pattern, "e479_822", ext_grs_NO_EDGE_POS, n_Sub3582_698, n_Phi3620_433, 104, e_e479); - ext_grs_edge_t *e_pos0_568_823 = ext_grs_act_add_edge_to_keep(pattern, "pos0_568_823", -1, n_Block3676_492, n_Jmp3731_519, 103, e_pos0_568); - ext_grs_edge_t *e_pos0_426_824 = ext_grs_act_add_edge_to_keep(pattern, "pos0_426_824", -1, n_Block3241_529, n_Jmp3296_671, 105, e_pos0_426); - ext_grs_edge_t *e_pos0_694_825 = ext_grs_act_add_edge_to_keep(pattern, "pos0_694_825", -1, n_Block2458_568, n_Sub2512_566, 106, e_pos0_694); - ext_grs_edge_t *e_pos0_424_826 = ext_grs_act_add_edge_to_keep(pattern, "pos0_424_826", -1, n_Block3502_709, n_Jmp3557_625, 107, e_pos0_424); - ext_grs_edge_t *e_pos0_562_827 = ext_grs_act_add_edge_to_keep(pattern, "pos0_562_827", -1, n_Block3416_604, n_Jmp3496_680, 108, e_pos0_562); - ext_grs_edge_t *e_pos0_560_828 = ext_grs_act_add_edge_to_keep(pattern, "pos0_560_828", -1, n_Block3273_516, n_Cond3353_640, 109, e_pos0_560); - ext_grs_edge_t *e_pos1_389_829 = ext_grs_act_add_edge_to_keep(pattern, "pos1_389_829", 0, n_Proj3091_540, n_Cond3092_576, 110, e_pos1_389); - ext_grs_edge_t *e_pos1_387_830 = ext_grs_act_add_edge_to_keep(pattern, "pos1_387_830", 0, n_Proj3613_690, n_Cond3614_613, 111, e_pos1_387); - ext_grs_edge_t *e_pos0_429_831 = ext_grs_act_add_edge_to_keep(pattern, "pos0_429_831", -1, n_Block3708_590, n_Add3414_646, 112, e_pos0_429); - ext_grs_edge_t *e_pos1_381_832 = ext_grs_act_add_edge_to_keep(pattern, "pos1_381_832", 0, n_VProj2479_489, n_Conv2480_591, 113, e_pos1_381); - ext_grs_edge_t *e_pos1_380_833 = ext_grs_act_add_edge_to_keep(pattern, "pos1_380_833", 0, n_Proj2569_682, n_Cond2570_505, 114, e_pos1_380); - ext_grs_edge_t *e_pos1_384_834 = ext_grs_act_add_edge_to_keep(pattern, "pos1_384_834", 0, n_Conv3427_639, n_Sub3469_667, 115, e_pos1_384); - ext_grs_edge_t *e_e364_835 = ext_grs_act_add_edge_to_keep(pattern, "e364_835", ext_grs_NO_EDGE_POS, n_Add3501_658, n_Add3588_511, 116, e_e364); - ext_grs_edge_t *e_e363_836 = ext_grs_act_add_edge_to_keep(pattern, "e363_836", ext_grs_NO_EDGE_POS, n_Phi3620_433, n_Add3588_511, 117, e_e363); - ext_grs_edge_t *e_e465_837 = ext_grs_act_add_edge_to_keep(pattern, "e465_837", ext_grs_NO_EDGE_POS, n_Sub3408_653, n_Phi3446_702, 118, e_e465); - ext_grs_edge_t *e_e464_838 = ext_grs_act_add_edge_to_keep(pattern, "e464_838", ext_grs_NO_EDGE_POS, n_Sub3382_545, n_Phi3446_702, 119, e_e464); - ext_grs_edge_t *e_pos2_339_839 = ext_grs_act_add_edge_to_keep(pattern, "pos2_339_839", 1, n_Conv3089_454, n_Cmp5653_595, 121, e_pos2_339); - ext_grs_edge_t *e_e463_840 = ext_grs_act_add_edge_to_keep(pattern, "e463_840", ext_grs_NO_EDGE_POS, n_Block3360_503, n_Phi3446_702, 120, e_e463); - ext_grs_edge_t *e_e461_841 = ext_grs_act_add_edge_to_keep(pattern, "e461_841", ext_grs_NO_EDGE_POS, n_Sub3060_699, n_Phi3098_497, 122, e_e461); - ext_grs_edge_t *e_e460_842 = ext_grs_act_add_edge_to_keep(pattern, "e460_842", ext_grs_NO_EDGE_POS, n_Sub3034_444, n_Phi3098_497, 123, e_e460); - ext_grs_edge_t *e_pos1_375_843 = ext_grs_act_add_edge_to_keep(pattern, "pos1_375_843", 0, n_Conv2395_549, n_Sub2452_655, 124, e_pos1_375); - ext_grs_edge_t *e_pos1_378_844 = ext_grs_act_add_edge_to_keep(pattern, "pos1_378_844", 0, n_Proj3178_430, n_Cond3179_514, 125, e_pos1_378); - ext_grs_edge_t *e_pos2_337_845 = ext_grs_act_add_edge_to_keep(pattern, "pos2_337_845", 1, n_Conv2731_678, n_Sub2799_488, 126, e_pos2_337); - ext_grs_edge_t *e_pos0_419_846 = ext_grs_act_add_edge_to_keep(pattern, "pos0_419_846", -1, n_Block3329_435, n_Jmp3409_499, 127, e_pos0_419); - ext_grs_edge_t *e_pos1_370_847 = ext_grs_act_add_edge_to_keep(pattern, "pos1_370_847", 0, n_Conv3253_515, n_Sub3295_619, 128, e_pos1_370); - ext_grs_edge_t *e_pos1_372_848 = ext_grs_act_add_edge_to_keep(pattern, "pos1_372_848", 0, n_Conv3166_705, n_Cmp5654_594, 129, e_pos1_372); - ext_grs_edge_t *e_e352_849 = ext_grs_act_add_edge_to_keep(pattern, "e352_849", ext_grs_NO_EDGE_POS, n_Jmp3409_499, n_Block3360_503, 130, e_e352); - ext_grs_edge_t *e_pos0_543_850 = ext_grs_act_add_edge_to_keep(pattern, "pos0_543_850", -1, n_Block3155_618, n_Sub3234_431, 131, e_pos0_543); - ext_grs_edge_t *e_e351_851 = ext_grs_act_add_edge_to_keep(pattern, "e351_851", ext_grs_NO_EDGE_POS, n_Jmp3383_562, n_Block3360_503, 132, e_e351); - ext_grs_edge_t *e_pos0_542_852 = ext_grs_act_add_edge_to_keep(pattern, "pos0_542_852", -1, n_Block3328_436, n_Jmp3383_562, 134, e_pos0_542); - ext_grs_edge_t *e_pos2_685_853 = ext_grs_act_add_edge_to_keep(pattern, "pos2_685_853", 1, n_Conv2741_656, n_Cmp5649_567, 133, e_pos2_685); - ext_grs_edge_t *e_pos0_444_854 = ext_grs_act_add_edge_to_keep(pattern, "pos0_444_854", -1, n_Block2545_633, n_Sub2599_651, 136, e_pos0_444); - ext_grs_edge_t *e_e492_855 = ext_grs_act_add_edge_to_keep(pattern, "e492_855", ext_grs_NO_EDGE_POS, n_Sub3208_484, n_Phi3272_673, 135, e_e492); - ext_grs_edge_t *e_e491_856 = ext_grs_act_add_edge_to_keep(pattern, "e491_856", ext_grs_NO_EDGE_POS, n_Block3186_551, n_Phi3272_673, 137, e_e491); - ext_grs_edge_t *e_e494_857 = ext_grs_act_add_edge_to_keep(pattern, "e494_857", ext_grs_NO_EDGE_POS, n_Proj2659_623, n_Block2632_606, 138, e_e494); - ext_grs_edge_t *e_e493_858 = ext_grs_act_add_edge_to_keep(pattern, "e493_858", ext_grs_NO_EDGE_POS, n_Sub3234_431, n_Phi3272_673, 140, e_e493); - ext_grs_edge_t *e_e600_859 = ext_grs_act_add_edge_to_keep(pattern, "e600_859", ext_grs_NO_EDGE_POS, n_Proj2920_535, n_Block2893_518, 139, e_e600); - ext_grs_edge_t *e_pos0_449_860 = ext_grs_act_add_edge_to_keep(pattern, "pos0_449_860", -1, n_Block2632_606, n_Jmp2687_677, 142, e_pos0_449); - ext_grs_edge_t *e_e495_861 = ext_grs_act_add_edge_to_keep(pattern, "e495_861", ext_grs_NO_EDGE_POS, n_Proj2658_622, n_Block2633_615, 141, e_e495); - ext_grs_edge_t *e_e498_862 = ext_grs_act_add_edge_to_keep(pattern, "e498_862", ext_grs_NO_EDGE_POS, n_Jmp3496_680, n_Block3447_539, 143, e_e498); - ext_grs_edge_t *e_e497_863 = ext_grs_act_add_edge_to_keep(pattern, "e497_863", ext_grs_NO_EDGE_POS, n_Jmp3470_710, n_Block3447_539, 144, e_e497); - ext_grs_edge_t *e_e606_864 = ext_grs_act_add_edge_to_keep(pattern, "e606_864", ext_grs_NO_EDGE_POS, n_Proj2832_486, n_Block2807_681, 145, e_e606); - ext_grs_edge_t *e_pos2_368_865 = ext_grs_act_add_edge_to_keep(pattern, "pos2_368_865", 1, n_Conv2915_439, n_Sub2947_558, 146, e_pos2_368); - ext_grs_edge_t *e_pos2_361_866 = ext_grs_act_add_edge_to_keep(pattern, "pos2_361_866", 1, n_Conv3611_636, n_Sub3643_453, 147, e_pos2_361); - ext_grs_edge_t *e_e489_867 = ext_grs_act_add_edge_to_keep(pattern, "e489_867", ext_grs_NO_EDGE_POS, n_Sub2860_693, n_Phi2924_526, 149, e_e489); - ext_grs_edge_t *e_pos0_536_868 = ext_grs_act_add_edge_to_keep(pattern, "pos0_536_868", -1, n_Block2807_681, n_Sub2886_434, 148, e_pos0_536); - ext_grs_edge_t *e_e488_869 = ext_grs_act_add_edge_to_keep(pattern, "e488_869", ext_grs_NO_EDGE_POS, n_Block2838_630, n_Phi2924_526, 150, e_e488); - ext_grs_edge_t *e_pos2_674_870 = ext_grs_act_add_edge_to_keep(pattern, "pos2_674_870", 1, n_Conv2654_525, n_Sub2686_446, 151, e_pos2_674); - ext_grs_edge_t *e_pos0_532_871 = ext_grs_act_add_edge_to_keep(pattern, "pos0_532_871", -1, n_Block3503_708, n_Sub3582_698, 152, e_pos0_532); - ext_grs_edge_t *e_e346_872 = ext_grs_act_add_edge_to_keep(pattern, "e346_872", ext_grs_NO_EDGE_POS, n_Proj3442_458, n_Block3415_603, 153, e_e346); - ext_grs_edge_t *e_pos0_439_873 = ext_grs_act_add_edge_to_keep(pattern, "pos0_439_873", -1, n_Block3447_539, n_Cond3527_441, 154, e_pos0_439); - ext_grs_edge_t *e_e617_874 = ext_grs_act_add_edge_to_keep(pattern, "e617_874", ext_grs_NO_EDGE_POS, n_Jmp3644_715, n_Block3621_533, 155, e_e617); - ext_grs_edge_t *e_e618_875 = ext_grs_act_add_edge_to_keep(pattern, "e618_875", ext_grs_NO_EDGE_POS, n_Jmp3670_578, n_Block3621_533, 156, e_e618); - ext_grs_edge_t *e_pos1_397_876 = ext_grs_act_add_edge_to_keep(pattern, "pos1_397_876", 0, n_Conv3079_686, n_Sub3121_455, 158, e_pos1_397); - ext_grs_edge_t *e_e490_877 = ext_grs_act_add_edge_to_keep(pattern, "e490_877", ext_grs_NO_EDGE_POS, n_Sub2886_434, n_Phi2924_526, 157, e_e490); - ext_grs_edge_t *e_pos2_350_878 = ext_grs_act_add_edge_to_keep(pattern, "pos2_350_878", 1, n_Conv2557_624, n_Sub2625_616, 160, e_pos2_350); - ext_grs_edge_t *e_pos1_394_879 = ext_grs_act_add_edge_to_keep(pattern, "pos1_394_879", 0, n_Arg_0_507, n_VProj3513_465, 159, e_pos1_394); - ext_grs_edge_t *e_pos0_539_880 = ext_grs_act_add_edge_to_keep(pattern, "pos0_539_880", -1, n_Block3708_590, n_Add3153_632, 161, e_pos0_539); - ext_grs_edge_t *e_pos1_392_881 = ext_grs_act_add_edge_to_keep(pattern, "pos1_392_881", 0, n_Conv2731_678, n_Sub2773_522, 162, e_pos1_392); - ext_grs_edge_t *e_pos1_340_882 = ext_grs_act_add_edge_to_keep(pattern, "pos1_340_882", 0, n_Arg_1_509, n_VProj2740_524, 163, e_pos1_340); - ext_grs_edge_t *e_pos1_341_883 = ext_grs_act_add_edge_to_keep(pattern, "pos1_341_883", 0, n_Cmp5650_598, n_Proj2830_487, 164, e_pos1_341); - ext_grs_edge_t *e_pos1_342_884 = ext_grs_act_add_edge_to_keep(pattern, "pos1_342_884", 0, n_Cond3092_576, n_Proj3094_537, 165, e_pos1_342); - ext_grs_edge_t *e_pos1_343_885 = ext_grs_act_add_edge_to_keep(pattern, "pos1_343_885", 0, n_Cond2483_560, n_Proj2485_666, 166, e_pos1_343); - ext_grs_edge_t *e_pos1_345_886 = ext_grs_act_add_edge_to_keep(pattern, "pos1_345_886", 0, n_Cond3527_441, n_Proj3529_700, 167, e_pos1_345); - ext_grs_edge_t *e_pos1_347_887 = ext_grs_act_add_edge_to_keep(pattern, "pos1_347_887", 0, n_Cond3005_659, n_Proj3007_665, 169, e_pos1_347); - ext_grs_edge_t *e_pos1_626_888 = ext_grs_act_add_edge_to_keep(pattern, "pos1_626_888", 0, n_Arg_1_509, n_VProj3697_626, 168, e_pos1_626); - ext_grs_edge_t *e_pos1_349_889 = ext_grs_act_add_edge_to_keep(pattern, "pos1_349_889", 0, n_Conv2567_647, n_Sub2625_616, 171, e_pos1_349); - ext_grs_edge_t *e_pos1_628_890 = ext_grs_act_add_edge_to_keep(pattern, "pos1_628_890", 0, n_Conv3514_502, n_Sub3556_432, 170, e_pos1_628); - ext_grs_edge_t *e_pos1_622_891 = ext_grs_act_add_edge_to_keep(pattern, "pos1_622_891", 0, n_Arg_0_507, n_VProj2385_438, 172, e_pos1_622); - ext_grs_edge_t *e_pos0_468_892 = ext_grs_act_add_edge_to_keep(pattern, "pos0_468_892", -1, n_Block2376_552, n_Sub2426_584, 173, e_pos0_468); - ext_grs_edge_t *e_pos1_623_893 = ext_grs_act_add_edge_to_keep(pattern, "pos1_623_893", 0, n_Arg_1_509, n_VProj2653_447, 174, e_pos1_623); - ext_grs_edge_t *e_pos1_620_894 = ext_grs_act_add_edge_to_keep(pattern, "pos1_620_894", 0, n_Conv2480_591, n_Sub2538_617, 175, e_pos1_620); - ext_grs_edge_t *e_pos0_655_895 = ext_grs_act_add_edge_to_keep(pattern, "pos0_655_895", -1, n_Block3708_590, n_Add2805_687, 176, e_pos0_655); - ext_grs_edge_t *e_pos0_462_896 = ext_grs_act_add_edge_to_keep(pattern, "pos0_462_896", -1, n_Block2806_676, n_Jmp2861_538, 177, e_pos0_462); - ext_grs_edge_t *e_pos0_651_897 = ext_grs_act_add_edge_to_keep(pattern, "pos0_651_897", -1, n_Block3360_503, n_Cond3440_459, 178, e_pos0_651); - ext_grs_edge_t *e_pos1_757_898 = ext_grs_act_add_edge(pattern, "pos1_757_898", 0, n_Vector_op_ProjData, n_VProj290_627, 463); - ext_grs_edge_t *e_pos1_333_899 = ext_grs_act_add_edge_to_keep(pattern, "pos1_333_899", 0, n_Arg_1_509, n_VProj3001_641, 179, e_pos1_333); - ext_grs_edge_t *e_pos0_390_900 = ext_grs_act_add_edge_to_keep(pattern, "pos0_390_900", -1, n_Block2894_517, n_Jmp2974_523, 180, e_pos0_390); - ext_grs_edge_t *e_pos0_391_901 = ext_grs_act_add_edge_to_keep(pattern, "pos0_391_901", -1, n_Block2719_573, n_Sub2773_522, 181, e_pos0_391); - ext_grs_edge_t *e_pos0_396_902 = ext_grs_act_add_edge_to_keep(pattern, "pos0_396_902", -1, n_Block3067_506, n_Sub3121_455, 183, e_pos0_396); - ext_grs_edge_t *e_pos1_616_903 = ext_grs_act_add_edge_to_keep(pattern, "pos1_616_903", 0, n_VProj2730_542, n_Conv2731_678, 182, e_pos1_616); - ext_grs_edge_t *e_pos1_338_904 = ext_grs_act_add_edge_to_keep(pattern, "pos1_338_904", 0, n_Conv3079_686, n_Cmp5653_595, 184, e_pos1_338); - ext_grs_edge_t *e_pos1_336_905 = ext_grs_act_add_edge_to_keep(pattern, "pos1_336_905", 0, n_Conv2741_656, n_Sub2799_488, 186, e_pos1_336); - ext_grs_edge_t *e_pos1_615_906 = ext_grs_act_add_edge_to_keep(pattern, "pos1_615_906", 0, n_Arg_1_509, n_VProj3262_717, 185, e_pos1_615); - ext_grs_edge_t *e_pos1_613_907 = ext_grs_act_add_edge_to_keep(pattern, "pos1_613_907", 0, n_Conv3340_580, n_Sub3382_545, 187, e_pos1_613); - ext_grs_edge_t *e_pos0_590_908 = ext_grs_act_add_edge_to_keep(pattern, "pos0_590_908", -1, n_Block2633_615, n_Sub2712_631, 188, e_pos0_590); - ext_grs_edge_t *e_pos1_610_909 = ext_grs_act_add_edge_to_keep(pattern, "pos1_610_909", 0, n_VProj2394_451, n_Conv2395_549, 189, e_pos1_610); - ext_grs_edge_t *e_pos0_594_910 = ext_grs_act_add_edge_to_keep(pattern, "pos0_594_910", -1, n_Block3708_590, n_Add2979_504, 190, e_pos0_594); - ext_grs_edge_t *e_pos0_455_911 = ext_grs_act_add_edge_to_keep(pattern, "pos0_455_911", -1, n_Block3708_590, n_Add3327_556, 191, e_pos0_455); - ext_grs_edge_t *e_pos1_751_912 = ext_grs_act_add_edge_to_keep(pattern, "pos1_751_912", 0, n_Cond3005_659, n_Proj3006_664, 192, e_pos1_751); - ext_grs_edge_t *e_pos1_750_913 = ext_grs_act_add_edge_to_keep(pattern, "pos1_750_913", 0, n_Proj2482_660, n_Cond2483_560, 193, e_pos1_750); - ext_grs_edge_t *e_pos0_667_914 = ext_grs_act_add_edge_to_keep(pattern, "pos0_667_914", -1, n_Block2981_692, n_Jmp3061_448, 194, e_pos0_667); - ext_grs_edge_t *e_pos0_597_915 = ext_grs_act_add_edge_to_keep(pattern, "pos0_597_915", -1, n_Block2838_630, n_Cond2918_588, 195, e_pos0_597); - ext_grs_edge_t *e_pos0_450_916 = ext_grs_act_add_edge_to_keep(pattern, "pos0_450_916", -1, n_Block2633_615, n_Jmp2713_544, 196, e_pos0_450); - ext_grs_edge_t *e_pos1_755_917 = ext_grs_act_add_edge(pattern, "pos1_755_917", 0, n_Arg_0_507, n_Vector_op, 464); - ext_grs_edge_t *e_pos1_754_918 = ext_grs_act_add_edge(pattern, "pos1_754_918", 0, n_Vector_op, n_Vector_op_ProjData, 465); - ext_grs_edge_t *e_pos0_663_919 = ext_grs_act_add_edge_to_keep(pattern, "pos0_663_919", -1, n_Block2719_573, n_Jmp2774_663, 197, e_pos0_663); - ext_grs_edge_t *e_pos0_662_920 = ext_grs_act_add_edge_to_keep(pattern, "pos0_662_920", -1, n_Block3590_547, n_Jmp3670_578, 198, e_pos0_662); - ext_grs_edge_t *e_pos1_360_921 = ext_grs_act_add_edge_to_keep(pattern, "pos1_360_921", 0, n_Conv3601_610, n_Sub3643_453, 199, e_pos1_360); - ext_grs_edge_t *e_pos1_746_922 = ext_grs_act_add_edge_to_keep(pattern, "pos1_746_922", 0, n_Conv2905_548, n_Cmp5651_597, 200, e_pos1_746); - ext_grs_edge_t *e_pos0_388_923 = ext_grs_act_add_edge_to_keep(pattern, "pos0_388_923", -1, n_Block3012_628, n_Cond3092_576, 201, e_pos0_388); - ext_grs_edge_t *e_pos1_748_924 = ext_grs_act_add_edge_to_keep(pattern, "pos1_748_924", 0, n_Cond2744_642, n_Proj2746_712, 202, e_pos1_748); - ext_grs_edge_t *e_pos1_647_925 = ext_grs_act_add_edge_to_keep(pattern, "pos1_647_925", 0, n_Arg_0_507, n_VProj2730_542, 203, e_pos1_647); - ext_grs_edge_t *e_pos0_383_926 = ext_grs_act_add_edge_to_keep(pattern, "pos0_383_926", -1, n_Block3415_603, n_Sub3469_667, 204, e_pos0_383); - ext_grs_edge_t *e_pos0_386_927 = ext_grs_act_add_edge_to_keep(pattern, "pos0_386_927", -1, n_Block3534_561, n_Cond3614_613, 205, e_pos0_386); - ext_grs_edge_t *e_pos1_367_928 = ext_grs_act_add_edge_to_keep(pattern, "pos1_367_928", 0, n_Conv2905_548, n_Sub2947_558, 206, e_pos1_367); - ext_grs_edge_t *e_pos1_640_929 = ext_grs_act_add_edge_to_keep(pattern, "pos1_640_929", 0, n_Conv3166_705, n_Sub3208_484, 207, e_pos1_640); - ext_grs_edge_t *e_e585_930 = ext_grs_act_add_edge_to_keep(pattern, "e585_930", ext_grs_NO_EDGE_POS, n_Jmp2626_464, n_Block2577_685, 208, e_e585); - ext_grs_edge_t *e_pos0_581_931 = ext_grs_act_add_edge_to_keep(pattern, "pos0_581_931", -1, n_Block2664_581, n_Cond2744_642, 209, e_pos0_581); - ext_grs_edge_t *e_pos1_642_932 = ext_grs_act_add_edge_to_keep(pattern, "pos1_642_932", 0, n_Cmp5651_597, n_Proj2917_531, 210, e_pos1_642); - ext_grs_edge_t *e_e584_933 = ext_grs_act_add_edge_to_keep(pattern, "e584_933", ext_grs_NO_EDGE_POS, n_Jmp2600_498, n_Block2577_685, 211, e_e584); - ext_grs_edge_t *e_pos1_643_934 = ext_grs_act_add_edge_to_keep(pattern, "pos1_643_934", 0, n_Conv2557_624, n_Cmp5647_564, 212, e_pos1_643); - ext_grs_edge_t *e_pos0_672_935 = ext_grs_act_add_edge_to_keep(pattern, "pos0_672_935", -1, n_Block2632_606, n_Sub2686_446, 213, e_pos0_672); - ext_grs_edge_t *e_pos1_646_936 = ext_grs_act_add_edge_to_keep(pattern, "pos1_646_936", 0, n_Arg_1_509, n_VProj2394_451, 214, e_pos1_646); - ext_grs_edge_t *e_pos0_671_937 = ext_grs_act_add_edge_to_keep(pattern, "pos0_671_937", -1, n_Block2377_553, n_Jmp2453_555, 215, e_pos0_671); - ext_grs_edge_t *e_pos1_742_938 = ext_grs_act_add_edge_to_keep(pattern, "pos1_742_938", 0, n_Cond3614_613, n_Proj3615_694, 216, e_pos1_742); - ext_grs_edge_t *e_pos0_481_939 = ext_grs_act_add_edge_to_keep(pattern, "pos0_481_939", -1, n_Block2577_685, n_Cond2657_577, 217, e_pos0_481); - ext_grs_edge_t *e_pos1_744_940 = ext_grs_act_add_edge_to_keep(pattern, "pos1_744_940", 0, n_Conv3263_532, n_Sub3321_452, 218, e_pos1_744); - ext_grs_edge_t *e_pos0_675_941 = ext_grs_act_add_edge_to_keep(pattern, "pos0_675_941", -1, n_Block3708_590, n_Add2718_703, 219, e_pos0_675); - ext_grs_edge_t *e_pos0_678_942 = ext_grs_act_add_edge_to_keep(pattern, "pos0_678_942", -1, n_Block2925_571, n_Cond3005_659, 220, e_pos0_678); - ext_grs_edge_t *e_e589_943 = ext_grs_act_add_edge_to_keep(pattern, "e589_943", ext_grs_NO_EDGE_POS, n_Proj3441_457, n_Block3416_604, 221, e_e589); - ext_grs_edge_t *e_pos0_483_944 = ext_grs_act_add_edge_to_keep(pattern, "pos0_483_944", -1, n_Block3677_491, n_Jmp3757_605, 222, e_pos0_483); - ext_grs_edge_t *e_pos1_740_945 = ext_grs_act_add_edge_to_keep(pattern, "pos1_740_945", 0, n_Conv2915_439, n_Sub2973_679, 223, e_pos1_740); - ext_grs_edge_t *e_pos0_484_946 = ext_grs_act_add_edge_to_keep(pattern, "pos0_484_946", -1, n_Block3621_533, n_Cond3701_714, 224, e_pos0_484); - ext_grs_edge_t *e_pos0_379_947 = ext_grs_act_add_edge_to_keep(pattern, "pos0_379_947", -1, n_Block2490_521, n_Cond2570_505, 225, e_pos0_379); - ext_grs_edge_t *e_pos1_736_948 = ext_grs_act_add_edge_to_keep(pattern, "pos1_736_948", 0, n_Conv3611_636, n_Sub3669_485, 226, e_pos1_736); - ext_grs_edge_t *e_pos0_377_949 = ext_grs_act_add_edge_to_keep(pattern, "pos0_377_949", -1, n_Block3099_472, n_Cond3179_514, 227, e_pos0_377); - ext_grs_edge_t *e_pos0_374_950 = ext_grs_act_add_edge_to_keep(pattern, "pos0_374_950", -1, n_Block2377_553, n_Sub2452_655, 228, e_pos0_374); - ext_grs_edge_t *e_pos1_357_951 = ext_grs_act_add_edge_to_keep(pattern, "pos1_357_951", 0, n_VProj3252_691, n_Conv3253_515, 229, e_pos1_357); - ext_grs_edge_t *e_pos1_358_952 = ext_grs_act_add_edge_to_keep(pattern, "pos1_358_952", 0, n_Cond2744_642, n_Proj2745_711, 230, e_pos1_358); - ext_grs_edge_t *e_pos1_353_953 = ext_grs_act_add_edge_to_keep(pattern, "pos1_353_953", 0, n_VProj3513_465, n_Conv3514_502, 231, e_pos1_353); - ext_grs_edge_t *e_pos1_630_954 = ext_grs_act_add_edge_to_keep(pattern, "pos1_630_954", 0, n_Cond3353_640, n_Proj3355_638, 232, e_pos1_630); - ext_grs_edge_t *e_e595_955 = ext_grs_act_add_edge_to_keep(pattern, "e595_955", ext_grs_NO_EDGE_POS, n_Phi3011_718, n_Add2979_504, 233, e_e595); - ext_grs_edge_t *e_e596_956 = ext_grs_act_add_edge_to_keep(pattern, "e596_956", ext_grs_NO_EDGE_POS, n_Add2892_554, n_Add2979_504, 234, e_e596); - ext_grs_edge_t *e_pos0_571_957 = ext_grs_act_add_edge_to_keep(pattern, "pos0_571_957", -1, n_Block2893_518, n_Jmp2948_442, 235, e_pos0_571); - ext_grs_edge_t *e_pos1_634_958 = ext_grs_act_add_edge_to_keep(pattern, "pos1_634_958", 0, n_Conv2818_437, n_Sub2860_693, 236, e_pos1_634); - ext_grs_edge_t *e_pos1_730_959 = ext_grs_act_add_edge_to_keep(pattern, "pos1_730_959", 0, n_VProj3436_546, n_Conv3437_614, 237, e_pos1_730); - ext_grs_edge_t *e_pos0_577_960 = ext_grs_act_add_edge_to_keep(pattern, "pos0_577_960", -1, n_Block2807_681, n_Jmp2887_500, 238, e_pos0_577); - ext_grs_edge_t *e_e599_961 = ext_grs_act_add_edge_to_keep(pattern, "e599_961", ext_grs_NO_EDGE_POS, n_Proj3703_468, n_Block3676_492, 239, e_e599); - ext_grs_edge_t *e_pos0_471_962 = ext_grs_act_add_edge_to_keep(pattern, "pos0_471_962", -1, n_Block3186_551, n_Cond3266_543, 240, e_pos0_471); - ext_grs_edge_t *e_pos2_728_963 = ext_grs_act_add_edge_to_keep(pattern, "pos2_728_963", 1, n_Conv3427_639, n_Sub3495_648, 241, e_pos2_728); - ext_grs_edge_t *e_pos1_301_964 = ext_grs_act_add_edge_to_keep(pattern, "pos1_301_964", 0, n_VProj3600_510, n_Conv3601_610, 242, e_pos1_301); - ext_grs_edge_t *e_pos0_362_965 = ext_grs_act_add_edge_to_keep(pattern, "pos0_362_965", -1, n_Block3708_590, n_Add3588_511, 243, e_pos0_362); - ext_grs_edge_t *e_pos2_725_966 = ext_grs_act_add_edge_to_keep(pattern, "pos2_725_966", 1, n_Conv3079_686, n_Sub3147_493, 244, e_pos2_725); - ext_grs_edge_t *e_pos1_302_967 = ext_grs_act_add_edge_to_keep(pattern, "pos1_302_967", 0, n_VProj3078_654, n_Conv3079_686, 245, e_pos1_302); - ext_grs_edge_t *e_pos0_366_968 = ext_grs_act_add_edge_to_keep(pattern, "pos0_366_968", -1, n_Block2893_518, n_Sub2947_558, 246, e_pos0_366); - ext_grs_edge_t *e_pos1_724_969 = ext_grs_act_add_edge_to_keep(pattern, "pos1_724_969", 0, n_Conv3089_454, n_Sub3147_493, 247, e_pos1_724); - ext_grs_edge_t *e_pos0_619_970 = ext_grs_act_add_edge_to_keep(pattern, "pos0_619_970", -1, n_Block2459_572, n_Sub2538_617, 248, e_pos0_619); - ext_grs_edge_t *e_pos0_365_971 = ext_grs_act_add_edge_to_keep(pattern, "pos0_365_971", -1, n_Block3503_708, n_Jmp3583_550, 249, e_pos0_365); - ext_grs_edge_t *e_pos1_727_972 = ext_grs_act_add_edge_to_keep(pattern, "pos1_727_972", 0, n_Conv3437_614, n_Sub3495_648, 250, e_pos1_727); - ext_grs_edge_t *e_pos1_520_973 = ext_grs_act_add_edge_to_keep(pattern, "pos1_520_973", 0, n_Conv3350_557, n_Sub3408_653, 251, e_pos1_520); - ext_grs_edge_t *e_pos1_729_974 = ext_grs_act_add_edge_to_keep(pattern, "pos1_729_974", 0, n_VProj3426_495, n_Conv3427_639, 252, e_pos1_729); - ext_grs_edge_t *e_pos1_522_975 = ext_grs_act_add_edge_to_keep(pattern, "pos1_522_975", 0, n_Cmp5655_593, n_Proj3265_608, 253, e_pos1_522); - ext_grs_edge_t *e_pos0_369_976 = ext_grs_act_add_edge_to_keep(pattern, "pos0_369_976", -1, n_Block3241_529, n_Sub3295_619, 254, e_pos0_369); - ext_grs_edge_t *e_pos1_525_977 = ext_grs_act_add_edge_to_keep(pattern, "pos1_525_977", 0, n_Cond3353_640, n_Proj3354_643, 255, e_pos1_525); - ext_grs_edge_t *e_pos0_611_978 = ext_grs_act_add_edge_to_keep(pattern, "pos0_611_978", -1, n_Block3242_530, n_Jmp3322_466, 256, e_pos0_611); - ext_grs_edge_t *e_pos0_612_979 = ext_grs_act_add_edge_to_keep(pattern, "pos0_612_979", -1, n_Block3328_436, n_Sub3382_545, 257, e_pos0_612); - ext_grs_edge_t *e_pos1_527_980 = ext_grs_act_add_edge_to_keep(pattern, "pos1_527_980", 0, n_Arg_1_509, n_VProj3610_471, 258, e_pos1_527); - ext_grs_edge_t *e_e566_981 = ext_grs_act_add_edge_to_keep(pattern, "e566_981", ext_grs_NO_EDGE_POS, n_Add2979_504, n_Add3066_534, 259, e_e566); - ext_grs_edge_t *e_pos1_528_982 = ext_grs_act_add_edge_to_keep(pattern, "pos1_528_982", 0, n_Arg_1_509, n_VProj3088_672, 260, e_pos1_528); - ext_grs_edge_t *e_e565_983 = ext_grs_act_add_edge_to_keep(pattern, "e565_983", ext_grs_NO_EDGE_POS, n_Phi3098_497, n_Add3066_534, 261, e_e565); - ext_grs_edge_t *e_pos1_529_984 = ext_grs_act_add_edge_to_keep(pattern, "pos1_529_984", 0, n_Cmp5648_565, n_Proj2656_621, 262, e_pos1_529); - ext_grs_edge_t *e_pos1_720_985 = ext_grs_act_add_edge_to_keep(pattern, "pos1_720_985", 0, n_Cond2398_585, n_Proj2400_496, 263, e_pos1_720); - ext_grs_edge_t *e_pos1_721_986 = ext_grs_act_add_edge_to_keep(pattern, "pos1_721_986", 0, n_Cond2570_505, n_Proj2571_661, 264, e_pos1_721); - ext_grs_edge_t *e_pos0_752_987 = ext_grs_act_add_edge(pattern, "pos0_752_987", -1, n_Vector_op_Block_706, n_Vector_op, 466); - ext_grs_edge_t *e_pos0_753_988 = ext_grs_act_add_edge(pattern, "pos0_753_988", -1, n_Vector_op_Block_706, n_Vector_op_ProjData, 467); - ext_grs_edge_t *e_pos1_309_989 = ext_grs_act_add_edge_to_keep(pattern, "pos1_309_989", 0, n_VProj3001_641, n_Conv3002_582, 265, e_pos1_309); - ext_grs_edge_t *e_e666_990 = ext_grs_act_add_edge_to_keep(pattern, "e666_990", ext_grs_NO_EDGE_POS, n_Proj2571_661, n_Block2546_634, 266, e_e666); - ext_grs_edge_t *e_e563_991 = ext_grs_act_add_edge_to_keep(pattern, "e563_991", ext_grs_NO_EDGE_POS, n_Proj3355_638, n_Block3328_436, 267, e_e563); - ext_grs_edge_t *e_e664_992 = ext_grs_act_add_edge_to_keep(pattern, "e664_992", ext_grs_NO_EDGE_POS, n_Proj2400_496, n_Block2376_552, 268, e_e664); - ext_grs_edge_t *e_pos2_718_993 = ext_grs_act_add_edge_to_keep(pattern, "pos2_718_993", 1, n_Conv2828_449, n_Cmp5650_598, 269, e_pos2_718); - ext_grs_edge_t *e_pos0_356_994 = ext_grs_act_add_edge_to_keep(pattern, "pos0_356_994", -1, n_Block3067_506, n_Jmp3122_612, 270, e_pos0_356); - ext_grs_edge_t *e_pos1_714_995 = ext_grs_act_add_edge_to_keep(pattern, "pos1_714_995", 0, n_Cmp5652_596, n_Proj3004_657, 271, e_pos1_714); - ext_grs_edge_t *e_pos0_355_996 = ext_grs_act_add_edge_to_keep(pattern, "pos0_355_996", -1, n_Block3589_541, n_Jmp3644_715, 272, e_pos0_355); - ext_grs_edge_t *e_pos1_713_997 = ext_grs_act_add_edge_to_keep(pattern, "pos1_713_997", 0, n_Arg_1_509, n_VProj2914_688, 273, e_pos1_713); - ext_grs_edge_t *e_pos0_354_998 = ext_grs_act_add_edge_to_keep(pattern, "pos0_354_998", -1, n_Block2545_633, n_Jmp2600_498, 274, e_pos0_354); - ext_grs_edge_t *e_pos1_719_999 = ext_grs_act_add_edge_to_keep(pattern, "pos1_719_999", 0, n_Cmp5649_567, n_Proj2743_713, 275, e_pos1_719); - ext_grs_edge_t *e_pos1_513_1000 = ext_grs_act_add_edge_to_keep(pattern, "pos1_513_1000", 0, n_Proj2397_600, n_Cond2398_585, 276, e_pos1_513); - ext_grs_edge_t *e_pos0_627_1001 = ext_grs_act_add_edge_to_keep(pattern, "pos0_627_1001", -1, n_Block3502_709, n_Sub3556_432, 277, e_pos0_627); - ext_grs_edge_t *e_pos0_359_1002 = ext_grs_act_add_edge_to_keep(pattern, "pos0_359_1002", -1, n_Block3589_541, n_Sub3643_453, 278, e_pos0_359); - ext_grs_edge_t *e_pos1_717_1003 = ext_grs_act_add_edge_to_keep(pattern, "pos1_717_1003", 0, n_Conv2818_437, n_Cmp5650_598, 279, e_pos1_717); - ext_grs_edge_t *e_pos1_511_1004 = ext_grs_act_add_edge_to_keep(pattern, "pos1_511_1004", 0, n_VProj2904_583, n_Conv2905_548, 280, e_pos1_511); - ext_grs_edge_t *e_pos1_517_1005 = ext_grs_act_add_edge_to_keep(pattern, "pos1_517_1005", 0, n_Arg_1_509, n_VProj3175_652, 281, e_pos1_517); - ext_grs_edge_t *e_pos1_518_1006 = ext_grs_act_add_edge_to_keep(pattern, "pos1_518_1006", 0, n_Arg_1_509, n_VProj2566_480, 282, e_pos1_518); - ext_grs_edge_t *e_pos0_496_1007 = ext_grs_act_add_edge_to_keep(pattern, "pos0_496_1007", -1, n_Block3068_508, n_Jmp3148_649, 283, e_pos0_496); - ext_grs_edge_t *e_pos1_515_1008 = ext_grs_act_add_edge_to_keep(pattern, "pos1_515_1008", 0, n_Conv3002_582, n_Sub3060_699, 284, e_pos1_515); - ext_grs_edge_t *e_e676_1009 = ext_grs_act_add_edge_to_keep(pattern, "e676_1009", ext_grs_NO_EDGE_POS, n_Phi2750_494, n_Add2718_703, 285, e_e676); - ext_grs_edge_t *e_e573_1010 = ext_grs_act_add_edge_to_keep(pattern, "e573_1010", ext_grs_NO_EDGE_POS, n_Sub2512_566, n_Phi2576_575, 286, e_e573); - ext_grs_edge_t *e_pos0_499_1011 = ext_grs_act_add_edge_to_keep(pattern, "pos0_499_1011", -1, n_Block3708_590, n_Add3240_574, 287, e_pos0_499); - ext_grs_edge_t *e_e572_1012 = ext_grs_act_add_edge_to_keep(pattern, "e572_1012", ext_grs_NO_EDGE_POS, n_Block2490_521, n_Phi2576_575, 288, e_e572); - ext_grs_edge_t *e_e677_1013 = ext_grs_act_add_edge_to_keep(pattern, "e677_1013", ext_grs_NO_EDGE_POS, n_Add2631_674, n_Add2718_703, 289, e_e677); - ext_grs_edge_t *e_e574_1014 = ext_grs_act_add_edge_to_keep(pattern, "e574_1014", ext_grs_NO_EDGE_POS, n_Sub2538_617, n_Phi2576_575, 290, e_e574); - ext_grs_edge_t *e_pos1_604_1015 = ext_grs_act_add_edge_to_keep(pattern, "pos1_604_1015", 0, n_Conv2470_579, n_Cmp5646_563, 291, e_pos1_604); - ext_grs_edge_t *e_pos1_327_1016 = ext_grs_act_add_edge_to_keep(pattern, "pos1_327_1016", 0, n_Arg_0_507, n_VProj2556_670, 292, e_pos1_327); - ext_grs_edge_t *e_pos1_608_1017 = ext_grs_act_add_edge_to_keep(pattern, "pos1_608_1017", 0, n_Conv2992_716, n_Sub3034_444, 293, e_pos1_608); - ext_grs_edge_t *e_pos1_402_1018 = ext_grs_act_add_edge_to_keep(pattern, "pos1_402_1018", 0, n_Arg_0_507, n_VProj3252_691, 294, e_pos1_402); - ext_grs_edge_t *e_pos1_401_1019 = ext_grs_act_add_edge_to_keep(pattern, "pos1_401_1019", 0, n_VProj2643_462, n_Conv2644_512, 295, e_pos1_401); - ext_grs_edge_t *e_pos0_739_1020 = ext_grs_act_add_edge_to_keep(pattern, "pos0_739_1020", -1, n_Block2894_517, n_Sub2973_679, 296, e_pos0_739); - ext_grs_edge_t *e_pos1_323_1021 = ext_grs_act_add_edge_to_keep(pattern, "pos1_323_1021", 0, n_Arg_0_507, n_VProj3165_644, 297, e_pos1_323); - ext_grs_edge_t *e_pos0_738_1022 = ext_grs_act_add_edge_to_keep(pattern, "pos0_738_1022", -1, n_Block2720_559, n_Jmp2800_650, 298, e_pos0_738); - ext_grs_edge_t *e_pos2_609_1023 = ext_grs_act_add_edge_to_keep(pattern, "pos2_609_1023", 1, n_Conv3002_582, n_Sub3034_444, 299, e_pos2_609); - ext_grs_edge_t *e_pos0_348_1024 = ext_grs_act_add_edge_to_keep(pattern, "pos0_348_1024", -1, n_Block2546_634, n_Sub2625_616, 300, e_pos0_348); - ext_grs_edge_t *e_pos1_503_1025 = ext_grs_act_add_edge_to_keep(pattern, "pos1_503_1025", 0, n_VProj3687_675, n_Conv3688_475, 301, e_pos1_503); - ext_grs_edge_t *e_pos0_639_1026 = ext_grs_act_add_edge_to_keep(pattern, "pos0_639_1026", -1, n_Block3154_620, n_Sub3208_484, 302, e_pos0_639); - ext_grs_edge_t *e_pos1_502_1027 = ext_grs_act_add_edge_to_keep(pattern, "pos1_502_1027", 0, n_Arg_0_507, n_VProj3339_478, 303, e_pos1_502); - ext_grs_edge_t *e_pos1_703_1028 = ext_grs_act_add_edge_to_keep(pattern, "pos1_703_1028", 0, n_Arg_0_507, n_VProj2991_440, 304, e_pos1_703); - ext_grs_edge_t *e_pos2_605_1029 = ext_grs_act_add_edge_to_keep(pattern, "pos2_605_1029", 1, n_Conv2480_591, n_Cmp5646_563, 305, e_pos2_605); - ext_grs_edge_t *e_pos0_344_1030 = ext_grs_act_add_edge_to_keep(pattern, "pos0_344_1030", -1, n_Block3154_620, n_Jmp3209_501, 306, e_pos0_344); - ext_grs_edge_t *e_pos2_603_1031 = ext_grs_act_add_edge_to_keep(pattern, "pos2_603_1031", 1, n_Conv3698_483, n_Sub3730_477, 307, e_pos2_603); - ext_grs_edge_t *e_e681_1032 = ext_grs_act_add_edge_to_keep(pattern, "e681_1032", ext_grs_NO_EDGE_POS, n_Jmp2774_663, n_Block2751_520, 308, e_e681); - ext_grs_edge_t *e_pos1_509_1033 = ext_grs_act_add_edge_to_keep(pattern, "pos1_509_1033", 0, n_Conv3514_502, n_Cmp5658_589, 309, e_pos1_509); - ext_grs_edge_t *e_pos0_633_1034 = ext_grs_act_add_edge_to_keep(pattern, "pos0_633_1034", -1, n_Block2806_676, n_Sub2860_693, 310, e_pos0_633); - ext_grs_edge_t *e_e546_1035 = ext_grs_act_add_edge_to_keep(pattern, "e546_1035", ext_grs_NO_EDGE_POS, n_Proj2484_668, n_Block2459_572, 311, e_e546); - ext_grs_edge_t *e_e418_1036 = ext_grs_act_add_edge_to_keep(pattern, "e418_1036", ext_grs_NO_EDGE_POS, n_Proj2919_528, n_Block2894_517, 312, e_e418); - ext_grs_edge_t *e_e682_1037 = ext_grs_act_add_edge_to_keep(pattern, "e682_1037", ext_grs_NO_EDGE_POS, n_Jmp2800_650, n_Block2751_520, 313, e_e682); - ext_grs_edge_t *e_pos0_636_1038 = ext_grs_act_add_edge_to_keep(pattern, "pos0_636_1038", -1, n_Block3708_590, n_Add2892_554, 314, e_pos0_636); - ext_grs_edge_t *e_pos1_507_1039 = ext_grs_act_add_edge_to_keep(pattern, "pos1_507_1039", 0, n_Conv3698_483, n_Sub3756_445, 315, e_pos1_507); - ext_grs_edge_t *e_pos0_732_1040 = ext_grs_act_add_edge_to_keep(pattern, "pos0_732_1040", -1, n_Block3708_590, n_Add2544_476, 316, e_pos0_732); - ext_grs_edge_t *e_e689_1041 = ext_grs_act_add_edge_to_keep(pattern, "e689_1041", ext_grs_NO_EDGE_POS, n_Sub3147_493, n_Phi3185_570, 317, e_e689); - ext_grs_edge_t *e_pos1_405_1042 = ext_grs_act_add_edge_to_keep(pattern, "pos1_405_1042", 0, n_Cond3179_514, n_Proj3180_460, 318, e_pos1_405); - ext_grs_edge_t *e_e688_1043 = ext_grs_act_add_edge_to_keep(pattern, "e688_1043", ext_grs_NO_EDGE_POS, n_Sub3121_455, n_Phi3185_570, 319, e_e688); - ext_grs_edge_t *e_e541_1044 = ext_grs_act_add_edge_to_keep(pattern, "e541_1044", ext_grs_NO_EDGE_POS, n_Add3066_534, n_Add3153_632, 320, e_e541); - ext_grs_edge_t *e_e687_1045 = ext_grs_act_add_edge_to_keep(pattern, "e687_1045", ext_grs_NO_EDGE_POS, n_Block3099_472, n_Phi3185_570, 321, e_e687); - ext_grs_edge_t *e_e540_1046 = ext_grs_act_add_edge_to_keep(pattern, "e540_1046", ext_grs_NO_EDGE_POS, n_Phi3185_570, n_Add3153_632, 322, e_e540); - ext_grs_edge_t *e_pos0_735_1047 = ext_grs_act_add_edge_to_keep(pattern, "pos0_735_1047", -1, n_Block3590_547, n_Sub3669_485, 323, e_pos0_735); - ext_grs_edge_t *e_e686_1048 = ext_grs_act_add_edge_to_keep(pattern, "e686_1048", ext_grs_NO_EDGE_POS, n_Proj3615_694, n_Block3590_547, 324, e_e686); - ext_grs_edge_t *e_pos1_328_1049 = ext_grs_act_add_edge_to_keep(pattern, "pos1_328_1049", 0, n_Arg_0_507, n_VProj3600_510, 325, e_pos1_328); - ext_grs_edge_t *e_pos1_329_1050 = ext_grs_act_add_edge_to_keep(pattern, "pos1_329_1050", 0, n_Arg_0_507, n_VProj3078_654, 326, e_pos1_329); - ext_grs_edge_t *e_pos0_731_1051 = ext_grs_act_add_edge_to_keep(pattern, "pos0_731_1051", -1, n_Block2980_689, n_Jmp3035_479, 327, e_pos0_731); - ext_grs_edge_t *e_pos1_602_1052 = ext_grs_act_add_edge_to_keep(pattern, "pos1_602_1052", 0, n_Conv3688_475, n_Sub3730_477, 328, e_pos1_602); - ext_grs_edge_t *e_pos0_330_1053 = ext_grs_act_add_edge_to_keep(pattern, "pos0_330_1053", -1, n_Block3708_590, n_Add3675_669, 329, e_pos0_330); - ext_grs_edge_t *e_pos1_314_1054 = ext_grs_act_add_edge_to_keep(pattern, "pos1_314_1054", 0, n_Conv2992_716, n_Cmp5652_596, 330, e_pos1_314); - ext_grs_edge_t *e_pos0_749_1055 = ext_grs_act_add_edge_to_keep(pattern, "pos0_749_1055", -1, n_Block2404_719, n_Cond2483_560, 331, e_pos0_749); - ext_grs_edge_t *e_e408_1056 = ext_grs_act_add_edge_to_keep(pattern, "e408_1056", ext_grs_NO_EDGE_POS, n_Add3414_646, n_Add3501_658, 332, e_e408); - ext_grs_edge_t *e_e409_1057 = ext_grs_act_add_edge_to_keep(pattern, "e409_1057", ext_grs_NO_EDGE_POS, n_Proj3528_701, n_Block3503_708, 333, e_e409); - ext_grs_edge_t *e_pos0_649_1058 = ext_grs_act_add_edge_to_keep(pattern, "pos0_649_1058", -1, n_Block2546_634, n_Jmp2626_464, 334, e_pos0_649); - ext_grs_edge_t *e_pos0_648_1059 = ext_grs_act_add_edge_to_keep(pattern, "pos0_648_1059", -1, n_Block2376_552, n_Jmp2427_470, 335, e_pos0_648); - ext_grs_edge_t *e_pos0_335_1060 = ext_grs_act_add_edge_to_keep(pattern, "pos0_335_1060", -1, n_Block2720_559, n_Sub2799_488, 336, e_pos0_335); - ext_grs_edge_t *e_e690_1061 = ext_grs_act_add_edge_to_keep(pattern, "e690_1061", ext_grs_NO_EDGE_POS, n_Proj2746_712, n_Block2719_573, 337, e_e690); - ext_grs_edge_t *e_e400_1062 = ext_grs_act_add_edge_to_keep(pattern, "e400_1062", ext_grs_NO_EDGE_POS, n_Proj3094_537, n_Block3067_506, 338, e_e400); - ext_grs_edge_t *e_e692_1063 = ext_grs_act_add_edge_to_keep(pattern, "e692_1063", ext_grs_NO_EDGE_POS, n_Sub3469_667, n_Phi3533_607, 339, e_e692); - ext_grs_edge_t *e_e403_1064 = ext_grs_act_add_edge_to_keep(pattern, "e403_1064", ext_grs_NO_EDGE_POS, n_Jmp2687_677, n_Block2664_581, 340, e_e403); - ext_grs_edge_t *e_e691_1065 = ext_grs_act_add_edge_to_keep(pattern, "e691_1065", ext_grs_NO_EDGE_POS, n_Block3447_539, n_Phi3533_607, 341, e_e691); - ext_grs_edge_t *e_e555_1066 = ext_grs_act_add_edge_to_keep(pattern, "e555_1066", ext_grs_NO_EDGE_POS, n_Block2664_581, n_Phi2750_494, 342, e_e555); - ext_grs_edge_t *e_e693_1067 = ext_grs_act_add_edge_to_keep(pattern, "e693_1067", ext_grs_NO_EDGE_POS, n_Sub3495_648, n_Phi3533_607, 343, e_e693); - ext_grs_edge_t *e_e404_1068 = ext_grs_act_add_edge_to_keep(pattern, "e404_1068", ext_grs_NO_EDGE_POS, n_Jmp2713_544, n_Block2664_581, 344, e_e404); - ext_grs_edge_t *e_e557_1069 = ext_grs_act_add_edge_to_keep(pattern, "e557_1069", ext_grs_NO_EDGE_POS, n_Sub2712_631, n_Phi2750_494, 345, e_e557); - ext_grs_edge_t *e_e407_1070 = ext_grs_act_add_edge_to_keep(pattern, "e407_1070", ext_grs_NO_EDGE_POS, n_Phi3533_607, n_Add3501_658, 346, e_e407); - ext_grs_edge_t *e_e556_1071 = ext_grs_act_add_edge_to_keep(pattern, "e556_1071", ext_grs_NO_EDGE_POS, n_Sub2686_446, n_Phi2750_494, 347, e_e556); - ext_grs_edge_t *e_e698_1072 = ext_grs_act_add_edge_to_keep(pattern, "e698_1072", ext_grs_NO_EDGE_POS, n_Proj3006_664, n_Block2981_692, 348, e_e698); - ext_grs_edge_t *e_pos0_743_1073 = ext_grs_act_add_edge_to_keep(pattern, "pos0_743_1073", -1, n_Block3242_530, n_Sub3321_452, 349, e_pos0_743); - ext_grs_edge_t *e_e553_1074 = ext_grs_act_add_edge_to_keep(pattern, "e553_1074", ext_grs_NO_EDGE_POS, n_Jmp3322_466, n_Block3273_516, 350, e_e553); - ext_grs_edge_t *e_e699_1075 = ext_grs_act_add_edge_to_keep(pattern, "e699_1075", ext_grs_NO_EDGE_POS, n_Block3621_533, n_Phi3707_456, 351, e_e699); - ext_grs_edge_t *e_e552_1076 = ext_grs_act_add_edge_to_keep(pattern, "e552_1076", ext_grs_NO_EDGE_POS, n_Jmp3296_671, n_Block3273_516, 352, e_e552); - ext_grs_edge_t *e_pos1_319_1077 = ext_grs_act_add_edge_to_keep(pattern, "pos1_319_1077", 0, n_Cmp5646_563, n_Proj2482_660, 353, e_pos1_319); - ext_grs_edge_t *e_pos1_317_1078 = ext_grs_act_add_edge_to_keep(pattern, "pos1_317_1078", 0, n_Proj2830_487, n_Cond2831_513, 354, e_pos1_317); - ext_grs_edge_t *e_pos1_318_1079 = ext_grs_act_add_edge_to_keep(pattern, "pos1_318_1079", 0, n_VProj2740_524, n_Conv2741_656, 355, e_pos1_318); - ext_grs_edge_t *e_pos0_722_1080 = ext_grs_act_add_edge_to_keep(pattern, "pos0_722_1080", -1, n_Block2458_568, n_Jmp2513_697, 356, e_pos0_722); - ext_grs_edge_t *e_pos1_695_1081 = ext_grs_act_add_edge_to_keep(pattern, "pos1_695_1081", 0, n_Conv2470_579, n_Sub2512_566, 357, e_pos1_695); - ext_grs_edge_t *e_pos1_417_1082 = ext_grs_act_add_edge_to_keep(pattern, "pos1_417_1082", 0, n_Cond3440_459, n_Proj3442_458, 358, e_pos1_417); - ext_grs_edge_t *e_pos1_416_1083 = ext_grs_act_add_edge_to_keep(pattern, "pos1_416_1083", 0, n_Cmp5647_564, n_Proj2569_682, 359, e_pos1_416); - ext_grs_edge_t *e_pos1_697_1084 = ext_grs_act_add_edge_to_keep(pattern, "pos1_697_1084", 0, n_Arg_0_507, n_VProj2469_474, 360, e_pos1_697); - ext_grs_edge_t *e_pos0_723_1085 = ext_grs_act_add_edge_to_keep(pattern, "pos0_723_1085", -1, n_Block3068_508, n_Sub3147_493, 361, e_pos0_723); - ext_grs_edge_t *e_pos1_559_1086 = ext_grs_act_add_edge_to_keep(pattern, "pos1_559_1086", 0, n_Cond2657_577, n_Proj2658_622, 362, e_pos1_559); - ext_grs_edge_t *e_pos1_558_1087 = ext_grs_act_add_edge_to_keep(pattern, "pos1_558_1087", 0, n_Cond2657_577, n_Proj2659_623, 363, e_pos1_558); - ext_grs_edge_t *e_pos1_551_1088 = ext_grs_act_add_edge_to_keep(pattern, "pos1_551_1088", 0, n_Cmp5645_569, n_Proj2397_600, 364, e_pos1_551); - ext_grs_edge_t *e_pos1_554_1089 = ext_grs_act_add_edge_to_keep(pattern, "pos1_554_1089", 0, n_VProj3523_481, n_Conv3524_637, 365, e_pos1_554); - ext_grs_edge_t *e_pos1_410_1090 = ext_grs_act_add_edge_to_keep(pattern, "pos1_410_1090", 0, n_VProj2817_684, n_Conv2818_437, 366, e_pos1_410); - ext_grs_edge_t *e_pos1_550_1091 = ext_grs_act_add_edge_to_keep(pattern, "pos1_550_1091", 0, n_Arg_0_507, n_VProj2904_583, 367, e_pos1_550); - ext_grs_edge_t *e_pos1_411_1092 = ext_grs_act_add_edge_to_keep(pattern, "pos1_411_1092", 0, n_Conv3253_515, n_Cmp5655_593, 368, e_pos1_411); - ext_grs_edge_t *e_pos0_726_1093 = ext_grs_act_add_edge_to_keep(pattern, "pos0_726_1093", -1, n_Block3416_604, n_Sub3495_648, 369, e_pos0_726); - ext_grs_edge_t *e_pos1_413_1094 = ext_grs_act_add_edge_to_keep(pattern, "pos1_413_1094", 0, n_VProj2827_707, n_Conv2828_449, 370, e_pos1_413); - ext_grs_edge_t *e_pos1_414_1095 = ext_grs_act_add_edge_to_keep(pattern, "pos1_414_1095", 0, n_Arg_1_509, n_VProj2479_489, 371, e_pos1_414); - ext_grs_edge_t *e_pos1_415_1096 = ext_grs_act_add_edge_to_keep(pattern, "pos1_415_1096", 0, n_Cmp5654_594, n_Proj3178_430, 372, e_pos1_415); - ext_grs_edge_t *e_pos1_569_1097 = ext_grs_act_add_edge_to_keep(pattern, "pos1_569_1097", 0, n_Conv3688_475, n_Cmp5660_696, 373, e_pos1_569); - ext_grs_edge_t *e_pos1_567_1098 = ext_grs_act_add_edge_to_keep(pattern, "pos1_567_1098", 0, n_Cond2831_513, n_Proj2833_490, 374, e_pos1_567); - ext_grs_edge_t *e_pos1_422_1099 = ext_grs_act_add_edge_to_keep(pattern, "pos1_422_1099", 0, n_Cmp5659_586, n_Proj3613_690, 376, e_pos1_422); - ext_grs_edge_t *e_pos1_561_1100 = ext_grs_act_add_edge_to_keep(pattern, "pos1_561_1100", 0, n_Proj3352_645, n_Cond3353_640, 375, e_pos1_561); - ext_grs_edge_t *e_pos1_425_1101 = ext_grs_act_add_edge_to_keep(pattern, "pos1_425_1101", 0, n_Arg_0_507, n_VProj2643_462, 377, e_pos1_425); - ext_grs_edge_t *e_pos1_423_1102 = ext_grs_act_add_edge_to_keep(pattern, "pos1_423_1102", 0, n_Cmp5653_595, n_Proj3091_540, 378, e_pos1_423); - ext_grs_edge_t *e_pos1_438_1103 = ext_grs_act_add_edge_to_keep(pattern, "pos1_438_1103", 0, n_Cond3179_514, n_Proj3181_461, 379, e_pos1_438); - ext_grs_edge_t *e_pos0_601_1104 = ext_grs_act_add_edge_to_keep(pattern, "pos0_601_1104", -1, n_Block3676_492, n_Sub3730_477, 380, e_pos0_601); - ext_grs_edge_t *e_pos1_537_1105 = ext_grs_act_add_edge_to_keep(pattern, "pos1_537_1105", 0, n_Conv2828_449, n_Sub2886_434, 381, e_pos1_537); - ext_grs_edge_t *e_pos1_530_1106 = ext_grs_act_add_edge_to_keep(pattern, "pos1_530_1106", 0, n_Cmp5660_696, n_Proj3700_473, 382, e_pos1_530); - ext_grs_edge_t *e_pos1_531_1107 = ext_grs_act_add_edge_to_keep(pattern, "pos1_531_1107", 0, n_Cond3266_543, n_Proj3268_611, 383, e_pos1_531); - ext_grs_edge_t *e_pos1_533_1108 = ext_grs_act_add_edge_to_keep(pattern, "pos1_533_1108", 0, n_Conv3524_637, n_Sub3582_698, 384, e_pos1_533); - ext_grs_edge_t *e_pos0_607_1109 = ext_grs_act_add_edge_to_keep(pattern, "pos0_607_1109", -1, n_Block2980_689, n_Sub3034_444, 385, e_pos0_607); - ext_grs_edge_t *e_pos1_435_1110 = ext_grs_act_add_edge_to_keep(pattern, "pos1_435_1110", 0, n_Conv3340_580, n_Cmp5656_592, 386, e_pos1_435); - ext_grs_edge_t *e_pos1_437_1111 = ext_grs_act_add_edge_to_keep(pattern, "pos1_437_1111", 0, n_Arg_1_509, n_VProj2827_707, 387, e_pos1_437); - ext_grs_edge_t *e_pos0_707_1112 = ext_grs_act_add_edge_to_keep(pattern, "pos0_707_1112", -1, n_Block3708_590, n_Add2631_674, 388, e_pos0_707); - ext_grs_edge_t *e_pos1_432_1113 = ext_grs_act_add_edge_to_keep(pattern, "pos1_432_1113", 0, n_Arg_0_507, n_VProj2817_684, 389, e_pos1_432); - ext_grs_edge_t *e_pos1_548_1114 = ext_grs_act_add_edge_to_keep(pattern, "pos1_548_1114", 0, n_Conv3601_610, n_Cmp5659_586, 390, e_pos1_548); - ext_grs_edge_t *e_pos1_440_1115 = ext_grs_act_add_edge_to_keep(pattern, "pos1_440_1115", 0, n_Proj3526_704, n_Cond3527_441, 391, e_pos1_440); - ext_grs_edge_t *e_pos1_547_1116 = ext_grs_act_add_edge_to_keep(pattern, "pos1_547_1116", 0, n_Arg_0_507, n_VProj3687_675, 392, e_pos1_547); - ext_grs_edge_t *e_pos1_544_1117 = ext_grs_act_add_edge_to_keep(pattern, "pos1_544_1117", 0, n_Conv3176_683, n_Sub3234_431, 393, e_pos1_544); - ext_grs_edge_t *e_pos1_447_1118 = ext_grs_act_add_edge_to_keep(pattern, "pos1_447_1118", 0, n_Cond3614_613, n_Proj3616_695, 394, e_pos1_447); - ext_grs_edge_t *e_pos1_445_1119 = ext_grs_act_add_edge_to_keep(pattern, "pos1_445_1119", 0, n_Conv2557_624, n_Sub2599_651, 395, e_pos1_445); - ext_grs_edge_t *e_pos1_443_1120 = ext_grs_act_add_edge_to_keep(pattern, "pos1_443_1120", 0, n_Cond2570_505, n_Proj2572_662, 396, e_pos1_443); - ext_grs_edge_t *e_pos1_441_1121 = ext_grs_act_add_edge_to_keep(pattern, "pos1_441_1121", 0, n_VProj2385_438, n_Conv2386_599, 397, e_pos1_441); - ext_grs_edge_t *e_pos1_650_1122 = ext_grs_act_add_edge_to_keep(pattern, "pos1_650_1122", 0, n_Cond3440_459, n_Proj3441_457, 398, e_pos1_650); - ext_grs_edge_t *e_pos1_652_1123 = ext_grs_act_add_edge_to_keep(pattern, "pos1_652_1123", 0, n_Proj3439_443, n_Cond3440_459, 399, e_pos1_652); - ext_grs_edge_t *e_pos1_653_1124 = ext_grs_act_add_edge_to_keep(pattern, "pos1_653_1124", 0, n_VProj3349_463, n_Conv3350_557, 400, e_pos1_653); - ext_grs_edge_t *e_pos1_654_1125 = ext_grs_act_add_edge_to_keep(pattern, "pos1_654_1125", 0, n_Cond3701_714, n_Proj3703_468, 401, e_pos1_654); - ext_grs_edge_t *e_pos1_659_1126 = ext_grs_act_add_edge_to_keep(pattern, "pos1_659_1126", 0, n_Cond2831_513, n_Proj2832_486, 402, e_pos1_659); - ext_grs_edge_t *e_pos1_591_1127 = ext_grs_act_add_edge_to_keep(pattern, "pos1_591_1127", 0, n_Conv2654_525, n_Sub2712_631, 404, e_pos1_591); - ext_grs_edge_t *e_pos1_658_1128 = ext_grs_act_add_edge_to_keep(pattern, "pos1_658_1128", 0, n_Cond2918_588, n_Proj2920_535, 403, e_pos1_658); - ext_grs_edge_t *e_pos1_593_1129 = ext_grs_act_add_edge_to_keep(pattern, "pos1_593_1129", 0, n_Cond2483_560, n_Proj2484_668, 405, e_pos1_593); - ext_grs_edge_t *e_pos1_458_1130 = ext_grs_act_add_edge_to_keep(pattern, "pos1_458_1130", 0, n_VProj3339_478, n_Conv3340_580, 406, e_pos1_458); - ext_grs_edge_t *e_pos1_451_1131 = ext_grs_act_add_edge_to_keep(pattern, "pos1_451_1131", 0, n_Cond3527_441, n_Proj3528_701, 408, e_pos1_451); - ext_grs_edge_t *e_pos1_598_1132 = ext_grs_act_add_edge_to_keep(pattern, "pos1_598_1132", 0, n_Proj2917_531, n_Cond2918_588, 407, e_pos1_598); - ext_grs_edge_t *e_pos1_660_1133 = ext_grs_act_add_edge_to_keep(pattern, "pos1_660_1133", 0, n_Conv2644_512, n_Cmp5648_565, 409, e_pos1_660); - ext_grs_edge_t *e_pos1_668_1134 = ext_grs_act_add_edge_to_keep(pattern, "pos1_668_1134", 0, n_Arg_1_509, n_VProj3349_463, 410, e_pos1_668); - ext_grs_edge_t *e_pos1_665_1135 = ext_grs_act_add_edge_to_keep(pattern, "pos1_665_1135", 0, n_VProj2469_474, n_Conv2470_579, 411, e_pos1_665); - ext_grs_edge_t *e_pos1_466_1136 = ext_grs_act_add_edge_to_keep(pattern, "pos1_466_1136", 0, n_Conv3427_639, n_Cmp5657_587, 412, e_pos1_466); - ext_grs_edge_t *e_pos1_669_1137 = ext_grs_act_add_edge_to_keep(pattern, "pos1_669_1137", 0, n_Cmp5657_587, n_Proj3439_443, 413, e_pos1_669); - ext_grs_edge_t *e_pos1_469_1138 = ext_grs_act_add_edge_to_keep(pattern, "pos1_469_1138", 0, n_Conv2386_599, n_Sub2426_584, 414, e_pos1_469); - ext_grs_edge_t *e_pos1_670_1139 = ext_grs_act_add_edge_to_keep(pattern, "pos1_670_1139", 0, n_VProj2991_440, n_Conv2992_716, 415, e_pos1_670); - ext_grs_edge_t *e_pos1_679_1140 = ext_grs_act_add_edge_to_keep(pattern, "pos1_679_1140", 0, n_Proj3004_657, n_Cond3005_659, 416, e_pos1_679); - ext_grs_edge_t *e_pos1_673_1141 = ext_grs_act_add_edge_to_keep(pattern, "pos1_673_1141", 0, n_Conv2644_512, n_Sub2686_446, 417, e_pos1_673); - ext_grs_edge_t *e_pos0_292_1142 = ext_grs_act_add_edge_to_keep(pattern, "pos0_292_1142", -1, n_Vector_op_Block_706, n_Proj2399_601, 418, e_pos0_292); - ext_grs_edge_t *e_pos1_475_1143 = ext_grs_act_add_edge_to_keep(pattern, "pos1_475_1143", 0, n_Cond2918_588, n_Proj2919_528, 419, e_pos1_475); - ext_grs_edge_t *e_pos1_474_1144 = ext_grs_act_add_edge_to_keep(pattern, "pos1_474_1144", 0, n_VProj2566_480, n_Conv2567_647, 420, e_pos1_474); - ext_grs_edge_t *e_pos1_476_1145 = ext_grs_act_add_edge_to_keep(pattern, "pos1_476_1145", 0, n_Arg_1_509, n_VProj3436_546, 421, e_pos1_476); - ext_grs_edge_t *e_pos1_473_1146 = ext_grs_act_add_edge_to_keep(pattern, "pos1_473_1146", 0, n_VProj3175_652, n_Conv3176_683, 422, e_pos1_473); - ext_grs_edge_t *e_pos1_472_1147 = ext_grs_act_add_edge_to_keep(pattern, "pos1_472_1147", 0, n_Proj3265_608, n_Cond3266_543, 424, e_pos1_472); - ext_grs_edge_t *e_pos1_575_1148 = ext_grs_act_add_edge_to_keep(pattern, "pos1_575_1148", 0, n_Conv2386_599, n_Cmp5645_569, 423, e_pos1_575); - ext_grs_edge_t *e_pos1_578_1149 = ext_grs_act_add_edge_to_keep(pattern, "pos1_578_1149", 0, n_VProj3262_717, n_Conv3263_532, 425, e_pos1_578); - ext_grs_edge_t *e_pos1_579_1150 = ext_grs_act_add_edge_to_keep(pattern, "pos1_579_1150", 0, n_Cond3701_714, n_Proj3702_469, 426, e_pos1_579); - ext_grs_edge_t *e_pos1_680_1151 = ext_grs_act_add_edge_to_keep(pattern, "pos1_680_1151", 0, n_VProj2914_688, n_Conv2915_439, 427, e_pos1_680); - ext_grs_edge_t *e_pos1_683_1152 = ext_grs_act_add_edge_to_keep(pattern, "pos1_683_1152", 0, n_Cond3266_543, n_Proj3267_609, 428, e_pos1_683); - ext_grs_edge_t *e_pos1_684_1153 = ext_grs_act_add_edge_to_keep(pattern, "pos1_684_1153", 0, n_Conv2731_678, n_Cmp5649_567, 429, e_pos1_684); - ext_grs_edge_t *e_pos1_583_1154 = ext_grs_act_add_edge_to_keep(pattern, "pos1_583_1154", 0, n_VProj2653_447, n_Conv2654_525, 430, e_pos1_583); - ext_grs_edge_t *e_pos1_487_1155 = ext_grs_act_add_edge_to_keep(pattern, "pos1_487_1155", 0, n_VProj3088_672, n_Conv3089_454, 432, e_pos1_487); - ext_grs_edge_t *e_pos1_582_1156 = ext_grs_act_add_edge_to_keep(pattern, "pos1_582_1156", 0, n_Proj2743_713, n_Cond2744_642, 431, e_pos1_582); - ext_grs_edge_t *e_pos1_486_1157 = ext_grs_act_add_edge_to_keep(pattern, "pos1_486_1157", 0, n_VProj3610_471, n_Conv3611_636, 433, e_pos1_486); - ext_grs_edge_t *e_pos1_485_1158 = ext_grs_act_add_edge_to_keep(pattern, "pos1_485_1158", 0, n_Proj3700_473, n_Cond3701_714, 435, e_pos1_485); - ext_grs_edge_t *e_pos1_580_1159 = ext_grs_act_add_edge_to_keep(pattern, "pos1_580_1159", 0, n_Arg_1_509, n_VProj3523_481, 434, e_pos1_580); - ext_grs_edge_t *e_pos1_587_1160 = ext_grs_act_add_edge_to_keep(pattern, "pos1_587_1160", 0, n_VProj3697_626, n_Conv3698_483, 436, e_pos1_587); - ext_grs_edge_t *e_pos1_586_1161 = ext_grs_act_add_edge_to_keep(pattern, "pos1_586_1161", 0, n_Cond3092_576, n_Proj3093_536, 437, e_pos1_586); - ext_grs_edge_t *e_pos1_482_1162 = ext_grs_act_add_edge_to_keep(pattern, "pos1_482_1162", 0, n_Proj2656_621, n_Cond2657_577, 438, e_pos1_482); - ext_grs_edge_t *e_pos1_480_1163 = ext_grs_act_add_edge_to_keep(pattern, "pos1_480_1163", 0, n_Cmp5658_589, n_Proj3526_704, 439, e_pos1_480); - ext_grs_edge_t *e_pos1_588_1164 = ext_grs_act_add_edge_to_keep(pattern, "pos1_588_1164", 0, n_Cmp5656_592, n_Proj3352_645, 440, e_pos1_588); - ext_grs_edge_t *e_e290_1165 = ext_grs_act_add_edge_to_keep(pattern, "e290_1165", ext_grs_NO_EDGE_POS, n_Proj2485_666, n_Block2458_568, 441, e_e290); - ext_grs_edge_t *e_e382_1166 = ext_grs_act_add_edge_to_keep(pattern, "e382_1166", ext_grs_NO_EDGE_POS, n_Proj3181_461, n_Block3154_620, 442, e_e382); - ext_grs_edge_t *e_pos2_696_1167 = ext_grs_act_add_edge_to_keep(pattern, "pos2_696_1167", 1, n_Conv2480_591, n_Sub2512_566, 443, e_pos2_696); - ext_grs_edge_t *e_pos2_508_1168 = ext_grs_act_add_edge_to_keep(pattern, "pos2_508_1168", 1, n_Conv3688_475, n_Sub3756_445, 444, e_pos2_508); - ext_grs_edge_t *e_e395_1169 = ext_grs_act_add_edge_to_keep(pattern, "e395_1169", ext_grs_NO_EDGE_POS, n_Proj2572_662, n_Block2545_633, 445, e_e395); - ext_grs_edge_t *e_e399_1170 = ext_grs_act_add_edge_to_keep(pattern, "e399_1170", ext_grs_NO_EDGE_POS, n_Proj3616_695, n_Block3589_541, 446, e_e399); - ext_grs_edge_t *e_e299_1171 = ext_grs_act_add_edge_to_keep(pattern, "e299_1171", ext_grs_NO_EDGE_POS, n_Sub2773_522, n_Phi2837_527, 447, e_e299); - ext_grs_edge_t *e_e298_1172 = ext_grs_act_add_edge_to_keep(pattern, "e298_1172", ext_grs_NO_EDGE_POS, n_Block2751_520, n_Phi2837_527, 448, e_e298); - ext_grs_edge_t *e_e295_1173 = ext_grs_act_add_edge_to_keep(pattern, "e295_1173", ext_grs_NO_EDGE_POS, n_Proj3529_700, n_Block3502_709, 449, e_e295); - ext_grs_edge_t *e_e296_1174 = ext_grs_act_add_edge_to_keep(pattern, "e296_1174", ext_grs_NO_EDGE_POS, n_Proj3007_665, n_Block2980_689, 450, e_e296); - ext_grs_edge_t *e_pos2_516_1175 = ext_grs_act_add_edge_to_keep(pattern, "pos2_516_1175", 1, n_Conv2992_716, n_Sub3060_699, 451, e_pos2_516); - ext_grs_edge_t *e_pos2_315_1176 = ext_grs_act_add_edge_to_keep(pattern, "pos2_315_1176", 1, n_Conv3002_582, n_Cmp5652_596, 452, e_pos2_315); - ext_grs_edge_t *e_pos2_510_1177 = ext_grs_act_add_edge_to_keep(pattern, "pos2_510_1177", 1, n_Conv3524_637, n_Cmp5658_589, 453, e_pos2_510); - ext_grs_edge_t *e_pos2_521_1178 = ext_grs_act_add_edge_to_keep(pattern, "pos2_521_1178", 1, n_Conv3340_580, n_Sub3408_653, 454, e_pos2_521); - ext_grs_edge_t *e_pos2_538_1179 = ext_grs_act_add_edge_to_keep(pattern, "pos2_538_1179", 1, n_Conv2818_437, n_Sub2886_434, 455, e_pos2_538); - ext_grs_edge_t *e_pos2_436_1180 = ext_grs_act_add_edge_to_keep(pattern, "pos2_436_1180", 1, n_Conv3350_557, n_Cmp5656_592, 456, e_pos2_436); - ext_grs_edge_t *e_pos2_534_1181 = ext_grs_act_add_edge_to_keep(pattern, "pos2_534_1181", 1, n_Conv3514_502, n_Sub3582_698, 457, e_pos2_534); - ext_grs_edge_t *e_pos2_549_1182 = ext_grs_act_add_edge_to_keep(pattern, "pos2_549_1182", 1, n_Conv3611_636, n_Cmp5659_586, 458, e_pos2_549); - ext_grs_edge_t *e_pos2_446_1183 = ext_grs_act_add_edge_to_keep(pattern, "pos2_446_1183", 1, n_Conv2567_647, n_Sub2599_651, 459, e_pos2_446); - ext_grs_edge_t *e_pos2_545_1184 = ext_grs_act_add_edge_to_keep(pattern, "pos2_545_1184", 1, n_Conv3166_705, n_Sub3234_431, 460, e_pos2_545); - ext_grs_edge_t *e_pos2_412_1185 = ext_grs_act_add_edge_to_keep(pattern, "pos2_412_1185", 1, n_Conv3263_532, n_Cmp5655_593, 461, e_pos2_412); - - } /* The replacement */ - - /* Eval functions */ - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_44235); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_44238); - } /* The Action */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* psadbw_variant0 */ - - -/* functions for evaluation of conditions of action vload_16b_variant0 */ -static int grs_cond_func_32999(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[54/* Const944 */])) == 14; -} -static int grs_cond_func_33002(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[9/* Const727 */])) == 0; -} -static int grs_cond_func_33005(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[56/* MultipleAdd5701 */]) == 2; -} -static int grs_cond_func_33008(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[59/* Vector_Result0_Proj741 */]) == 3; -} -static int grs_cond_func_33011(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[61/* Proj815 */]) == 0; -} -static int grs_cond_func_33014(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[42/* Vector_Result11_Proj906 */]) == 3; -} -static int grs_cond_func_33017(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[8/* Proj740 */]) == 0; -} -static int grs_cond_func_33020(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[12/* MultipleAdd5717 */]) == 2; -} -static int grs_cond_func_33023(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[33/* MultipleAdd5693 */]) == 2; -} -static int grs_cond_func_33026(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[1/* Const959 */])) == 15; -} -static int grs_cond_func_33029(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[7/* Proj935 */]) == 0; -} -static int grs_cond_func_33032(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[37/* Vector_Result8_Proj861 */]) == 3; -} -static int grs_cond_func_33035(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[58/* MultipleAdd5703 */]) == 2; -} -static int grs_cond_func_33038(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[22/* Const824 */])) == 6; -} -static int grs_cond_func_33041(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[75/* Proj830 */]) == 0; -} -static int grs_cond_func_33044(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[62/* Proj755 */]) == 0; -} -static int grs_cond_func_33047(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[73/* Vector_Result2_Proj771 */]) == 3; -} -static int grs_cond_func_33050(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[10/* MultipleAdd5719 */]) == 2; -} -static int grs_cond_func_33053(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[30/* Vector_Result13_Proj936 */]) == 3; -} -static int grs_cond_func_33056(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[43/* MultipleAdd5695 */]) == 2; -} -static int grs_cond_func_33059(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[44/* Proj950 */]) == 0; -} -static int grs_cond_func_33062(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[27/* Const899 */])) == 11; -} -static int grs_cond_func_33065(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[57/* MultipleAdd5705 */]) == 2; -} -static int grs_cond_func_33068(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[45/* Proj845 */]) == 0; -} -static int grs_cond_func_33071(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[76/* Proj770 */]) == 0; -} -static int grs_cond_func_33074(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[20/* Const854 */])) == 8; -} -static int grs_cond_func_33077(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[38/* MultipleAdd5697 */]) == 2; -} -static int grs_cond_func_33080(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[5/* MultipleAdd5723 */]) == 2; -} -static int grs_cond_func_33083(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[60/* Vector_Result4_Proj801 */]) == 3; -} -static int grs_cond_func_33086(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[77/* Proj965 */]) == 0; -} -static int grs_cond_func_33089(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[46/* Vector_Result5_Proj816 */]) == 3; -} -static int grs_cond_func_33092(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[0/* Const764 */])) == 2; -} -static int grs_cond_func_33095(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[39/* MultipleAdd5707 */]) == 2; -} -static int grs_cond_func_33098(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[14/* Const929 */])) == 13; -} -static int grs_cond_func_33101(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[55/* Proj860 */]) == 0; -} -static int grs_cond_func_33104(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[35/* Proj785 */]) == 0; -} -static int grs_cond_func_33107(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[71/* Vector_Result10_Proj891 */]) == 3; -} -static int grs_cond_func_33110(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[50/* MultipleAdd5699 */]) == 2; -} -static int grs_cond_func_33113(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[41/* MultipleAdd5709 */]) == 2; -} -static int grs_cond_func_33116(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[16/* Vector_Result7_Proj846 */]) == 3; -} -static int grs_cond_func_33119(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[51/* Const794 */])) == 4; -} -static int grs_cond_func_33122(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[17/* Proj875 */]) == 0; -} -static int grs_cond_func_33125(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[29/* Proj800 */]) == 0; -} -static int grs_cond_func_33128(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[66/* Const809 */])) == 5; -} -static int grs_cond_func_33131(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[3/* Vector_Result1_Proj756 */]) == 3; -} -static int grs_cond_func_33134(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[4/* Vector_Result12_Proj921 */]) == 3; -} -static int grs_cond_func_33137(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[74/* Const731 */])) == 10; -} -static int grs_cond_func_33140(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[31/* MultipleAdd5711 */]) == 2; -} -static int grs_cond_func_33143(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[23/* Proj890 */]) == 0; -} -static int grs_cond_func_33146(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[25/* Vector_Result9_Proj876 */]) == 3; -} -static int grs_cond_func_33149(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[81/* Const839 */])) == 7; -} -static int grs_cond_func_33152(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[64/* Vector_Result3_Proj786 */]) == 3; -} -static int grs_cond_func_33155(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[24/* MultipleAdd5713 */]) == 2; -} -static int grs_cond_func_33158(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[72/* Const735 */])) == 1; -} -static int grs_cond_func_33161(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[52/* Const914 */])) == 12; -} -static int grs_cond_func_33164(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[49/* Proj905 */]) == 0; -} -static int grs_cond_func_33167(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[6/* Vector_Result14_Proj951 */]) == 3; -} -static int grs_cond_func_33170(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[79/* Vector_Result15_Proj966 */]) == 3; -} -static int grs_cond_func_33173(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[18/* Const869 */])) == 9; -} -static int grs_cond_func_33176(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[26/* MultipleAdd5715 */]) == 2; -} -static int grs_cond_func_33179(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[34/* MultipleAdd5691 */]) == 2; -} -static int grs_cond_func_33182(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[40/* Vector_Result6_Proj831 */]) == 3; -} -static int grs_cond_func_33185(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[80/* Proj920 */]) == 0; -} -static int grs_cond_func_33188(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[67/* Const779 */])) == 3; -} - -static void *grs_eval_out_func_33557(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { - set_Proj_proj(rpl_node_map[94/* Vector_op_ProjData */], 0); - return(NULL); -} -static void *grs_eval_out_func_33560(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { - set_Proj_proj(rpl_node_map[93/* Vector_op_ProjM */], 1); - return(NULL); -} -static void *grs_eval_out_func_33563(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[97/* VProj82 */], 0); - return(NULL); -} -static void *grs_eval_out_func_33566(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[90/* VProj84 */], 11); - return(NULL); -} -static void *grs_eval_out_func_33569(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[88/* VProj86 */], 8); - return(NULL); -} -static void *grs_eval_out_func_33572(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[100/* VProj88 */], 2); - return(NULL); -} -static void *grs_eval_out_func_33575(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[87/* VProj90 */], 13); - return(NULL); -} -static void *grs_eval_out_func_33578(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[96/* VProj92 */], 4); - return(NULL); -} -static void *grs_eval_out_func_33581(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[91/* VProj94 */], 5); - return(NULL); -} -static void *grs_eval_out_func_33584(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[99/* VProj96 */], 10); - return(NULL); -} -static void *grs_eval_out_func_33587(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[85/* VProj98 */], 7); - return(NULL); -} -static void *grs_eval_out_func_33590(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[82/* VProj100 */], 1); - return(NULL); -} -static void *grs_eval_out_func_33593(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[83/* VProj102 */], 12); - return(NULL); -} -static void *grs_eval_out_func_33596(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[86/* VProj104 */], 9); - return(NULL); -} -static void *grs_eval_out_func_33599(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[98/* VProj106 */], 3); - return(NULL); -} -static void *grs_eval_out_func_33602(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[84/* VProj108 */], 14); - return(NULL); -} -static void *grs_eval_out_func_33605(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[101/* VProj110 */], 15); - return(NULL); -} -static void *grs_eval_out_func_33608(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[89/* VProj112 */], 6); - return(NULL); -} -/* functions for building the pattern of action vload_16b_variant0 */ -static _inline ext_grs_action_t *grs_action_vload_16b_variant0_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_rule, "vload_16b_variant0"); - int check; - { /* The action */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - ext_grs_node_t *n_Const764 = ext_grs_act_add_node(pattern, "Const764", grs_op_Const, mode_Is, 0); - ext_grs_node_t *n_Const959 = ext_grs_act_add_node(pattern, "Const959", grs_op_Const, mode_Is, 1); - ext_grs_node_t *n_Load874 = ext_grs_act_add_node(pattern, "Load874", grs_op_Load, mode_T, 2); - ext_grs_node_t *n_Vector_Result1_Proj756 = ext_grs_act_add_node(pattern, "Vector_Result1_Proj756", grs_op_Proj, mode_Bu, 3); - ext_grs_node_t *n_Vector_Result12_Proj921 = ext_grs_act_add_node(pattern, "Vector_Result12_Proj921", grs_op_Proj, mode_Bu, 4); - ext_grs_node_t *n_MultipleAdd5723 = ext_grs_act_add_node(pattern, "MultipleAdd5723", grs_op_MultipleAdd, mode_P, 5); - ext_grs_node_t *n_Vector_Result14_Proj951 = ext_grs_act_add_node(pattern, "Vector_Result14_Proj951", grs_op_Proj, mode_Bu, 6); - ext_grs_node_t *n_Proj935 = ext_grs_act_add_node(pattern, "Proj935", grs_op_Proj, mode_M, 7); - ext_grs_node_t *n_Proj740 = ext_grs_act_add_node(pattern, "Proj740", grs_op_Proj, mode_M, 8); - ext_grs_node_t *n_Const727 = ext_grs_act_add_node(pattern, "Const727", grs_op_Const, mode_Is, 9); - ext_grs_node_t *n_MultipleAdd5719 = ext_grs_act_add_node(pattern, "MultipleAdd5719", grs_op_MultipleAdd, mode_P, 10); - ext_grs_node_t *n_Load934 = ext_grs_act_add_node(pattern, "Load934", grs_op_Load, mode_T, 11); - ext_grs_node_t *n_MultipleAdd5717 = ext_grs_act_add_node(pattern, "MultipleAdd5717", grs_op_MultipleAdd, mode_P, 12); - ext_grs_node_t *n_Load739 = ext_grs_act_add_node(pattern, "Load739", grs_op_Load, mode_T, 13); - ext_grs_node_t *n_Const929 = ext_grs_act_add_node(pattern, "Const929", grs_op_Const, mode_Is, 14); - ext_grs_node_t *n_Load829 = ext_grs_act_add_node(pattern, "Load829", grs_op_Load, mode_T, 15); - ext_grs_node_t *n_Vector_Result7_Proj846 = ext_grs_act_add_node(pattern, "Vector_Result7_Proj846", grs_op_Proj, mode_Bu, 16); - ext_grs_node_t *n_Proj875 = ext_grs_act_add_node(pattern, "Proj875", grs_op_Proj, mode_M, 17); - ext_grs_node_t *n_Const869 = ext_grs_act_add_node(pattern, "Const869", grs_op_Const, mode_Is, 18); - ext_grs_node_t *n_Arg_0 = ext_grs_act_add_node(pattern, "Arg_0", grs_op_VectorBase, mode_ANY, 19); - ext_grs_node_t *n_Const854 = ext_grs_act_add_node(pattern, "Const854", grs_op_Const, mode_Is, 20); - ext_grs_node_t *n_Load844 = ext_grs_act_add_node(pattern, "Load844", grs_op_Load, mode_T, 21); - ext_grs_node_t *n_Const824 = ext_grs_act_add_node(pattern, "Const824", grs_op_Const, mode_Is, 22); - ext_grs_node_t *n_Proj890 = ext_grs_act_add_node(pattern, "Proj890", grs_op_Proj, mode_M, 23); - ext_grs_node_t *n_MultipleAdd5713 = ext_grs_act_add_node(pattern, "MultipleAdd5713", grs_op_MultipleAdd, mode_P, 24); - ext_grs_node_t *n_Vector_Result9_Proj876 = ext_grs_act_add_node(pattern, "Vector_Result9_Proj876", grs_op_Proj, mode_Bu, 25); - ext_grs_node_t *n_MultipleAdd5715 = ext_grs_act_add_node(pattern, "MultipleAdd5715", grs_op_MultipleAdd, mode_P, 26); - ext_grs_node_t *n_Const899 = ext_grs_act_add_node(pattern, "Const899", grs_op_Const, mode_Is, 27); - ext_grs_node_t *n_Load889 = ext_grs_act_add_node(pattern, "Load889", grs_op_Load, mode_T, 28); - ext_grs_node_t *n_Proj800 = ext_grs_act_add_node(pattern, "Proj800", grs_op_Proj, mode_M, 29); - ext_grs_node_t *n_Vector_Result13_Proj936 = ext_grs_act_add_node(pattern, "Vector_Result13_Proj936", grs_op_Proj, mode_Bu, 30); - ext_grs_node_t *n_MultipleAdd5711 = ext_grs_act_add_node(pattern, "MultipleAdd5711", grs_op_MultipleAdd, mode_P, 31); - ext_grs_node_t *n_Load949 = ext_grs_act_add_node(pattern, "Load949", grs_op_Load, mode_T, 32); - ext_grs_node_t *n_MultipleAdd5693 = ext_grs_act_add_node(pattern, "MultipleAdd5693", grs_op_MultipleAdd, mode_P, 33); - ext_grs_node_t *n_MultipleAdd5691 = ext_grs_act_add_node(pattern, "MultipleAdd5691", grs_op_MultipleAdd, mode_P, 34); - ext_grs_node_t *n_Proj785 = ext_grs_act_add_node(pattern, "Proj785", grs_op_Proj, mode_M, 35); - ext_grs_node_t *n_Load799 = ext_grs_act_add_node(pattern, "Load799", grs_op_Load, mode_T, 36); - ext_grs_node_t *n_Vector_Result8_Proj861 = ext_grs_act_add_node(pattern, "Vector_Result8_Proj861", grs_op_Proj, mode_Bu, 37); - ext_grs_node_t *n_MultipleAdd5697 = ext_grs_act_add_node(pattern, "MultipleAdd5697", grs_op_MultipleAdd, mode_P, 38); - ext_grs_node_t *n_MultipleAdd5707 = ext_grs_act_add_node(pattern, "MultipleAdd5707", grs_op_MultipleAdd, mode_P, 39); - ext_grs_node_t *n_Vector_Result6_Proj831 = ext_grs_act_add_node(pattern, "Vector_Result6_Proj831", grs_op_Proj, mode_Bu, 40); - ext_grs_node_t *n_MultipleAdd5709 = ext_grs_act_add_node(pattern, "MultipleAdd5709", grs_op_MultipleAdd, mode_P, 41); - ext_grs_node_t *n_Vector_Result11_Proj906 = ext_grs_act_add_node(pattern, "Vector_Result11_Proj906", grs_op_Proj, mode_Bu, 42); - ext_grs_node_t *n_MultipleAdd5695 = ext_grs_act_add_node(pattern, "MultipleAdd5695", grs_op_MultipleAdd, mode_P, 43); - ext_grs_node_t *n_Proj950 = ext_grs_act_add_node(pattern, "Proj950", grs_op_Proj, mode_M, 44); - ext_grs_node_t *n_Proj845 = ext_grs_act_add_node(pattern, "Proj845", grs_op_Proj, mode_M, 45); - ext_grs_node_t *n_Vector_Result5_Proj816 = ext_grs_act_add_node(pattern, "Vector_Result5_Proj816", grs_op_Proj, mode_Bu, 46); - ext_grs_node_t *n_Load904 = ext_grs_act_add_node(pattern, "Load904", grs_op_Load, mode_T, 47); - ext_grs_node_t *n_Load784 = ext_grs_act_add_node(pattern, "Load784", grs_op_Load, mode_T, 48); - ext_grs_node_t *n_Proj905 = ext_grs_act_add_node(pattern, "Proj905", grs_op_Proj, mode_M, 49); - ext_grs_node_t *n_MultipleAdd5699 = ext_grs_act_add_node(pattern, "MultipleAdd5699", grs_op_MultipleAdd, mode_P, 50); - ext_grs_node_t *n_Const794 = ext_grs_act_add_node(pattern, "Const794", grs_op_Const, mode_Is, 51); - ext_grs_node_t *n_Const914 = ext_grs_act_add_node(pattern, "Const914", grs_op_Const, mode_Is, 52); - ext_grs_node_t *n_Load859 = ext_grs_act_add_node(pattern, "Load859", grs_op_Load, mode_T, 53); - ext_grs_node_t *n_Const944 = ext_grs_act_add_node(pattern, "Const944", grs_op_Const, mode_Is, 54); - ext_grs_node_t *n_Proj860 = ext_grs_act_add_node(pattern, "Proj860", grs_op_Proj, mode_M, 55); - ext_grs_node_t *n_MultipleAdd5701 = ext_grs_act_add_node(pattern, "MultipleAdd5701", grs_op_MultipleAdd, mode_P, 56); - ext_grs_node_t *n_MultipleAdd5705 = ext_grs_act_add_node(pattern, "MultipleAdd5705", grs_op_MultipleAdd, mode_P, 57); - ext_grs_node_t *n_MultipleAdd5703 = ext_grs_act_add_node(pattern, "MultipleAdd5703", grs_op_MultipleAdd, mode_P, 58); - ext_grs_node_t *n_Vector_Result0_Proj741 = ext_grs_act_add_node(pattern, "Vector_Result0_Proj741", grs_op_Proj, mode_Bu, 59); - ext_grs_node_t *n_Vector_Result4_Proj801 = ext_grs_act_add_node(pattern, "Vector_Result4_Proj801", grs_op_Proj, mode_Bu, 60); - ext_grs_node_t *n_Proj815 = ext_grs_act_add_node(pattern, "Proj815", grs_op_Proj, mode_M, 61); - ext_grs_node_t *n_Proj755 = ext_grs_act_add_node(pattern, "Proj755", grs_op_Proj, mode_M, 62); - ext_grs_node_t *n_Load814 = ext_grs_act_add_node(pattern, "Load814", grs_op_Load, mode_T, 63); - ext_grs_node_t *n_Vector_Result3_Proj786 = ext_grs_act_add_node(pattern, "Vector_Result3_Proj786", grs_op_Proj, mode_Bu, 64); - ext_grs_node_t *n_Load754 = ext_grs_act_add_node(pattern, "Load754", grs_op_Load, mode_T, 65); - ext_grs_node_t *n_Const809 = ext_grs_act_add_node(pattern, "Const809", grs_op_Const, mode_Is, 66); - ext_grs_node_t *n_Const779 = ext_grs_act_add_node(pattern, "Const779", grs_op_Const, mode_Is, 67); - ext_grs_node_t *n_Vector_op_Block = ext_grs_act_add_node(pattern, "Vector_op_Block", grs_op_Block, mode_BB, 68); - ext_grs_node_t *n_Load964 = ext_grs_act_add_node(pattern, "Load964", grs_op_Load, mode_T, 69); - ext_grs_node_t *n_Load919 = ext_grs_act_add_node(pattern, "Load919", grs_op_Load, mode_T, 70); - ext_grs_node_t *n_Vector_Result10_Proj891 = ext_grs_act_add_node(pattern, "Vector_Result10_Proj891", grs_op_Proj, mode_Bu, 71); - ext_grs_node_t *n_Const735 = ext_grs_act_add_node(pattern, "Const735", grs_op_Const, mode_Is, 72); - ext_grs_node_t *n_Vector_Result2_Proj771 = ext_grs_act_add_node(pattern, "Vector_Result2_Proj771", grs_op_Proj, mode_Bu, 73); - ext_grs_node_t *n_Const731 = ext_grs_act_add_node(pattern, "Const731", grs_op_Const, mode_Is, 74); - ext_grs_node_t *n_Proj830 = ext_grs_act_add_node(pattern, "Proj830", grs_op_Proj, mode_M, 75); - ext_grs_node_t *n_Proj770 = ext_grs_act_add_node(pattern, "Proj770", grs_op_Proj, mode_M, 76); - ext_grs_node_t *n_Proj965 = ext_grs_act_add_node(pattern, "Proj965", grs_op_Proj, mode_M, 77); - ext_grs_node_t *n_Load769 = ext_grs_act_add_node(pattern, "Load769", grs_op_Load, mode_T, 78); - ext_grs_node_t *n_Vector_Result15_Proj966 = ext_grs_act_add_node(pattern, "Vector_Result15_Proj966", grs_op_Proj, mode_Bu, 79); - ext_grs_node_t *n_Proj920 = ext_grs_act_add_node(pattern, "Proj920", grs_op_Proj, mode_M, 80); - ext_grs_node_t *n_Const839 = ext_grs_act_add_node(pattern, "Const839", grs_op_Const, mode_Is, 81); - - /* The edges of the pattern */ - ext_grs_edge_t *e_pos1_146 = ext_grs_act_add_edge(pattern, "pos1_146", 0, n_Load784, n_Vector_Result3_Proj786, 0); - ext_grs_edge_t *e_pos1_145 = ext_grs_act_add_edge(pattern, "pos1_145", 0, n_Load874, n_Vector_Result9_Proj876, 1); - ext_grs_edge_t *e_pos1_144 = ext_grs_act_add_edge(pattern, "pos1_144", 0, n_Load889, n_Proj890, 2); - ext_grs_edge_t *e_e130 = ext_grs_act_add_edge(pattern, "e130", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5699, 3); - ext_grs_edge_t *e_e133 = ext_grs_act_add_edge(pattern, "e133", ext_grs_NO_EDGE_POS, n_Const824, n_MultipleAdd5709, 4); - ext_grs_edge_t *e_e134 = ext_grs_act_add_edge(pattern, "e134", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5709, 5); - ext_grs_edge_t *e_e83 = ext_grs_act_add_edge(pattern, "e83", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5701, 6); - ext_grs_edge_t *e_e82 = ext_grs_act_add_edge(pattern, "e82", ext_grs_NO_EDGE_POS, n_Const731, n_MultipleAdd5701, 7); - ext_grs_edge_t *e_pos1_136 = ext_grs_act_add_edge(pattern, "pos1_136", 0, n_Load799, n_Proj800, 8); - ext_grs_edge_t *e_pos2_102 = ext_grs_act_add_edge(pattern, "pos2_102", 1, n_MultipleAdd5705, n_Load859, 9); - ext_grs_edge_t *e_pos1_135 = ext_grs_act_add_edge(pattern, "pos1_135", 0, n_Load874, n_Proj875, 10); - ext_grs_edge_t *e_pos1_137 = ext_grs_act_add_edge(pattern, "pos1_137", 0, n_Load754, n_Vector_Result1_Proj756, 11); - ext_grs_edge_t *e_pos1_139 = ext_grs_act_add_edge(pattern, "pos1_139", 0, n_Load919, n_Vector_Result12_Proj921, 12); - ext_grs_edge_t *e_e89 = ext_grs_act_add_edge(pattern, "e89", ext_grs_NO_EDGE_POS, n_Const764, n_MultipleAdd5717, 13); - ext_grs_edge_t *e_pos1_132 = ext_grs_act_add_edge(pattern, "pos1_132", 0, n_Load844, n_Vector_Result7_Proj846, 14); - ext_grs_edge_t *e_e123 = ext_grs_act_add_edge(pattern, "e123", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5707, 15); - ext_grs_edge_t *e_e122 = ext_grs_act_add_edge(pattern, "e122", ext_grs_NO_EDGE_POS, n_Const839, n_MultipleAdd5707, 16); - ext_grs_edge_t *e_pos1_88 = ext_grs_act_add_edge(pattern, "pos1_88", 0, n_Load739, n_Proj740, 17); - ext_grs_edge_t *e_pos1_87 = ext_grs_act_add_edge(pattern, "pos1_87", 0, n_Load814, n_Proj815, 18); - ext_grs_edge_t *e_pos1_86 = ext_grs_act_add_edge(pattern, "pos1_86", 0, n_Load904, n_Vector_Result11_Proj906, 19); - ext_grs_edge_t *e_pos2_109 = ext_grs_act_add_edge(pattern, "pos2_109", 1, n_MultipleAdd5717, n_Load769, 20); - ext_grs_edge_t *e_pos1_84 = ext_grs_act_add_edge(pattern, "pos1_84", 0, n_Load739, n_Vector_Result0_Proj741, 21); - ext_grs_edge_t *e_e129 = ext_grs_act_add_edge(pattern, "e129", ext_grs_NO_EDGE_POS, n_Const899, n_MultipleAdd5699, 22); - ext_grs_edge_t *e_pos2_110 = ext_grs_act_add_edge(pattern, "pos2_110", 1, n_MultipleAdd5695, n_Load934, 23); - ext_grs_edge_t *e_pos1_162 = ext_grs_act_add_edge(pattern, "pos1_162", 0, n_Load919, n_Proj920, 24); - ext_grs_edge_t *e_e111 = ext_grs_act_add_edge(pattern, "e111", ext_grs_NO_EDGE_POS, n_Const854, n_MultipleAdd5705, 25); - ext_grs_edge_t *e_e112 = ext_grs_act_add_edge(pattern, "e112", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5705, 26); - ext_grs_edge_t *e_e118 = ext_grs_act_add_edge(pattern, "e118", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5723, 27); - ext_grs_edge_t *e_e115 = ext_grs_act_add_edge(pattern, "e115", ext_grs_NO_EDGE_POS, n_Const914, n_MultipleAdd5697, 28); - ext_grs_edge_t *e_e117 = ext_grs_act_add_edge(pattern, "e117", ext_grs_NO_EDGE_POS, n_Const727, n_MultipleAdd5723, 29); - ext_grs_edge_t *e_e116 = ext_grs_act_add_edge(pattern, "e116", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5697, 30); - ext_grs_edge_t *e_pos2_126 = ext_grs_act_add_edge(pattern, "pos2_126", 1, n_MultipleAdd5711, n_Load814, 31); - ext_grs_edge_t *e_pos1_159 = ext_grs_act_add_edge(pattern, "pos1_159", 0, n_Load829, n_Vector_Result6_Proj831, 32); - ext_grs_edge_t *e_pos2_124 = ext_grs_act_add_edge(pattern, "pos2_124", 1, n_MultipleAdd5713, n_Load799, 33); - ext_grs_edge_t *e_pos1_152 = ext_grs_act_add_edge(pattern, "pos1_152", 0, n_Load949, n_Vector_Result14_Proj951, 34); - ext_grs_edge_t *e_pos1_153 = ext_grs_act_add_edge(pattern, "pos1_153", 0, n_Load964, n_Vector_Result15_Proj966, 35); - ext_grs_edge_t *e_pos1_150 = ext_grs_act_add_edge(pattern, "pos1_150", 0, n_Load904, n_Proj905, 36); - ext_grs_edge_t *e_e107 = ext_grs_act_add_edge(pattern, "e107", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5695, 37); - ext_grs_edge_t *e_e106 = ext_grs_act_add_edge(pattern, "e106", ext_grs_NO_EDGE_POS, n_Const929, n_MultipleAdd5695, 38); - ext_grs_edge_t *e_e105 = ext_grs_act_add_edge(pattern, "e105", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5719, 39); - ext_grs_edge_t *e_e104 = ext_grs_act_add_edge(pattern, "e104", ext_grs_NO_EDGE_POS, n_Const735, n_MultipleAdd5719, 40); - ext_grs_edge_t *e_pos1_108 = ext_grs_act_add_edge(pattern, "pos1_108", 0, n_Load949, n_Proj950, 41); - ext_grs_edge_t *e_e141 = ext_grs_act_add_edge(pattern, "e141", ext_grs_NO_EDGE_POS, n_Const809, n_MultipleAdd5711, 42); - ext_grs_edge_t *e_e142 = ext_grs_act_add_edge(pattern, "e142", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5711, 43); - ext_grs_edge_t *e_pos2_131 = ext_grs_act_add_edge(pattern, "pos2_131", 1, n_MultipleAdd5701, n_Load889, 44); - ext_grs_edge_t *e_e148 = ext_grs_act_add_edge(pattern, "e148", ext_grs_NO_EDGE_POS, n_Const794, n_MultipleAdd5713, 45); - ext_grs_edge_t *e_e149 = ext_grs_act_add_edge(pattern, "e149", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5713, 46); - ext_grs_edge_t *e_pos2_138 = ext_grs_act_add_edge(pattern, "pos2_138", 1, n_MultipleAdd5707, n_Load844, 47); - ext_grs_edge_t *e_pos1_100 = ext_grs_act_add_edge(pattern, "pos1_100", 0, n_Load754, n_Proj755, 48); - ext_grs_edge_t *e_pos1_101 = ext_grs_act_add_edge(pattern, "pos1_101", 0, n_Load769, n_Vector_Result2_Proj771, 49); - ext_grs_edge_t *e_pos0_160 = ext_grs_act_add_edge(pattern, "pos0_160", -1, n_Vector_op_Block, n_Load964, 50); - ext_grs_edge_t *e_pos1_103 = ext_grs_act_add_edge(pattern, "pos1_103", 0, n_Load934, n_Vector_Result13_Proj936, 51); - ext_grs_edge_t *e_e156 = ext_grs_act_add_edge(pattern, "e156", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5715, 52); - ext_grs_edge_t *e_e157 = ext_grs_act_add_edge(pattern, "e157", ext_grs_NO_EDGE_POS, n_Const959, n_MultipleAdd5691, 53); - ext_grs_edge_t *e_pos2_140 = ext_grs_act_add_edge(pattern, "pos2_140", 1, n_MultipleAdd5719, n_Load754, 54); - ext_grs_edge_t *e_e155 = ext_grs_act_add_edge(pattern, "e155", ext_grs_NO_EDGE_POS, n_Const779, n_MultipleAdd5715, 55); - ext_grs_edge_t *e_pos2_143 = ext_grs_act_add_edge(pattern, "pos2_143", 1, n_MultipleAdd5697, n_Load919, 56); - ext_grs_edge_t *e_e158 = ext_grs_act_add_edge(pattern, "e158", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5691, 57); - ext_grs_edge_t *e_pos2_147 = ext_grs_act_add_edge(pattern, "pos2_147", 1, n_MultipleAdd5703, n_Load874, 58); - ext_grs_edge_t *e_pos2_151 = ext_grs_act_add_edge(pattern, "pos2_151", 1, n_MultipleAdd5715, n_Load784, 59); - ext_grs_edge_t *e_pos2_154 = ext_grs_act_add_edge(pattern, "pos2_154", 1, n_MultipleAdd5693, n_Load949, 60); - ext_grs_edge_t *e_e97 = ext_grs_act_add_edge(pattern, "e97", ext_grs_NO_EDGE_POS, n_Const869, n_MultipleAdd5703, 61); - ext_grs_edge_t *e_e98 = ext_grs_act_add_edge(pattern, "e98", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5703, 62); - ext_grs_edge_t *e_pos1_120 = ext_grs_act_add_edge(pattern, "pos1_120", 0, n_Load964, n_Proj965, 63); - ext_grs_edge_t *e_pos1_121 = ext_grs_act_add_edge(pattern, "pos1_121", 0, n_Load814, n_Vector_Result5_Proj816, 64); - ext_grs_edge_t *e_pos2_95 = ext_grs_act_add_edge(pattern, "pos2_95", 1, n_MultipleAdd5699, n_Load904, 65); - ext_grs_edge_t *e_pos1_94 = ext_grs_act_add_edge(pattern, "pos1_94", 0, n_Load934, n_Proj935, 66); - ext_grs_edge_t *e_pos1_96 = ext_grs_act_add_edge(pattern, "pos1_96", 0, n_Load859, n_Vector_Result8_Proj861, 67); - ext_grs_edge_t *e_pos2_91 = ext_grs_act_add_edge(pattern, "pos2_91", 1, n_MultipleAdd5723, n_Load739, 68); - ext_grs_edge_t *e_pos1_127 = ext_grs_act_add_edge(pattern, "pos1_127", 0, n_Load784, n_Proj785, 69); - ext_grs_edge_t *e_pos1_99 = ext_grs_act_add_edge(pattern, "pos1_99", 0, n_Load829, n_Proj830, 70); - ext_grs_edge_t *e_e90 = ext_grs_act_add_edge(pattern, "e90", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5717, 71); - ext_grs_edge_t *e_pos1_128 = ext_grs_act_add_edge(pattern, "pos1_128", 0, n_Load889, n_Vector_Result10_Proj891, 72); - ext_grs_edge_t *e_e93 = ext_grs_act_add_edge(pattern, "e93", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5693, 73); - ext_grs_edge_t *e_pos1_125 = ext_grs_act_add_edge(pattern, "pos1_125", 0, n_Load859, n_Proj860, 74); - ext_grs_edge_t *e_e92 = ext_grs_act_add_edge(pattern, "e92", ext_grs_NO_EDGE_POS, n_Const944, n_MultipleAdd5693, 75); - ext_grs_edge_t *e_pos2_161 = ext_grs_act_add_edge(pattern, "pos2_161", 1, n_MultipleAdd5691, n_Load964, 76); - ext_grs_edge_t *e_pos1_119 = ext_grs_act_add_edge(pattern, "pos1_119", 0, n_Load799, n_Vector_Result4_Proj801, 77); - ext_grs_edge_t *e_pos2_85 = ext_grs_act_add_edge(pattern, "pos2_85", 1, n_MultipleAdd5709, n_Load829, 78); - ext_grs_edge_t *e_pos1_113 = ext_grs_act_add_edge(pattern, "pos1_113", 0, n_Load844, n_Proj845, 79); - ext_grs_edge_t *e_pos1_114 = ext_grs_act_add_edge(pattern, "pos1_114", 0, n_Load769, n_Proj770, 80); - - /* The conditions of the pattern */ - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const944}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_32999, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const727}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33002, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5701}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33005, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result0_Proj741}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33008, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj815}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33011, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result11_Proj906}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33014, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj740}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33017, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5717}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33020, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5693}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33023, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const959}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33026, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj935}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33029, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result8_Proj861}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33032, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5703}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33035, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const824}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33038, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj830}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33041, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj755}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33044, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result2_Proj771}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33047, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5719}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33050, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result13_Proj936}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33053, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5695}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33056, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj950}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33059, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const899}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33062, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5705}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33065, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj845}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33068, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj770}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33071, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const854}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33074, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5697}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33077, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5723}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33080, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result4_Proj801}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33083, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj965}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33086, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result5_Proj816}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33089, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const764}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33092, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5707}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33095, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const929}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33098, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj860}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33101, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj785}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33104, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result10_Proj891}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33107, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5699}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33110, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5709}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33113, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result7_Proj846}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33116, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const794}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33119, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj875}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33122, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj800}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33125, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const809}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33128, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result1_Proj756}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33131, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result12_Proj921}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33134, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const731}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33137, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5711}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33140, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj890}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33143, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result9_Proj876}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33146, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const839}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33149, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result3_Proj786}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33152, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5713}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33155, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const735}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33158, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const914}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33161, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj905}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33164, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result14_Proj951}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33167, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result15_Proj966}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33170, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const869}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33173, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5715}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33176, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5691}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33179, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result6_Proj831}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33182, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj920}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33185, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const779}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_33188, pattern, 1, nodes, 0, edges); - } /* if */ - - /* The negative parts of the pattern */ - - - { /* The replacement */ - ext_grs_graph_t *pattern = ext_grs_act_get_replacement(act); - - /* The nodes of the pattern */ - ext_grs_node_t *n_Const764_1186 = ext_grs_act_add_node_to_keep(pattern, "Const764_1186", grs_op_Const, mode_Is, 0, n_Const764); - ext_grs_node_t *n_Const959_1187 = ext_grs_act_add_node_to_keep(pattern, "Const959_1187", grs_op_Const, mode_Is, 1, n_Const959); - ext_grs_node_t *n_Load874_1188 = ext_grs_act_add_node_to_keep(pattern, "Load874_1188", grs_op_Load, mode_T, 2, n_Load874); - ext_grs_node_t *n_VProj100_1189 = ext_grs_act_add_node_to_keep(pattern, "VProj100_1189", grs_op_VProj, mode_Bu, 82, n_Vector_Result1_Proj756); - ext_grs_node_t *n_VProj102_1190 = ext_grs_act_add_node_to_keep(pattern, "VProj102_1190", grs_op_VProj, mode_Bu, 83, n_Vector_Result12_Proj921); - ext_grs_node_t *n_MultipleAdd5723_1191 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5723_1191", grs_op_MultipleAdd, mode_P, 5, n_MultipleAdd5723); - ext_grs_node_t *n_VProj108_1192 = ext_grs_act_add_node_to_keep(pattern, "VProj108_1192", grs_op_VProj, mode_Bu, 84, n_Vector_Result14_Proj951); - ext_grs_node_t *n_Proj935_1193 = ext_grs_act_add_node_to_keep(pattern, "Proj935_1193", grs_op_Proj, mode_M, 7, n_Proj935); - ext_grs_node_t *n_Proj740_1194 = ext_grs_act_add_node_to_keep(pattern, "Proj740_1194", grs_op_Proj, mode_M, 8, n_Proj740); - ext_grs_node_t *n_Const727_1195 = ext_grs_act_add_node_to_keep(pattern, "Const727_1195", grs_op_Const, mode_Is, 9, n_Const727); - ext_grs_node_t *n_MultipleAdd5719_1196 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5719_1196", grs_op_MultipleAdd, mode_P, 10, n_MultipleAdd5719); - ext_grs_node_t *n_Load934_1197 = ext_grs_act_add_node_to_keep(pattern, "Load934_1197", grs_op_Load, mode_T, 11, n_Load934); - ext_grs_node_t *n_MultipleAdd5717_1198 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5717_1198", grs_op_MultipleAdd, mode_P, 12, n_MultipleAdd5717); - ext_grs_node_t *n_Load739_1199 = ext_grs_act_add_node_to_keep(pattern, "Load739_1199", grs_op_Load, mode_T, 13, n_Load739); - ext_grs_node_t *n_Const929_1200 = ext_grs_act_add_node_to_keep(pattern, "Const929_1200", grs_op_Const, mode_Is, 14, n_Const929); - ext_grs_node_t *n_Load829_1201 = ext_grs_act_add_node_to_keep(pattern, "Load829_1201", grs_op_Load, mode_T, 15, n_Load829); - ext_grs_node_t *n_VProj98_1202 = ext_grs_act_add_node_to_keep(pattern, "VProj98_1202", grs_op_VProj, mode_Bu, 85, n_Vector_Result7_Proj846); - ext_grs_node_t *n_Proj875_1203 = ext_grs_act_add_node_to_keep(pattern, "Proj875_1203", grs_op_Proj, mode_M, 17, n_Proj875); - ext_grs_node_t *n_Const869_1204 = ext_grs_act_add_node_to_keep(pattern, "Const869_1204", grs_op_Const, mode_Is, 18, n_Const869); - ext_grs_node_t *n_Arg_0_1205 = ext_grs_act_add_node_to_keep(pattern, "Arg_0_1205", grs_op_VectorBase, mode_ANY, 19, n_Arg_0); - ext_grs_node_t *n_Const854_1206 = ext_grs_act_add_node_to_keep(pattern, "Const854_1206", grs_op_Const, mode_Is, 20, n_Const854); - ext_grs_node_t *n_Load844_1207 = ext_grs_act_add_node_to_keep(pattern, "Load844_1207", grs_op_Load, mode_T, 21, n_Load844); - ext_grs_node_t *n_Const824_1208 = ext_grs_act_add_node_to_keep(pattern, "Const824_1208", grs_op_Const, mode_Is, 22, n_Const824); - ext_grs_node_t *n_Proj890_1209 = ext_grs_act_add_node_to_keep(pattern, "Proj890_1209", grs_op_Proj, mode_M, 23, n_Proj890); - ext_grs_node_t *n_VProj104_1210 = ext_grs_act_add_node_to_keep(pattern, "VProj104_1210", grs_op_VProj, mode_Bu, 86, n_Vector_Result9_Proj876); - ext_grs_node_t *n_MultipleAdd5713_1211 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5713_1211", grs_op_MultipleAdd, mode_P, 24, n_MultipleAdd5713); - ext_grs_node_t *n_MultipleAdd5715_1212 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5715_1212", grs_op_MultipleAdd, mode_P, 26, n_MultipleAdd5715); - ext_grs_node_t *n_Const899_1213 = ext_grs_act_add_node_to_keep(pattern, "Const899_1213", grs_op_Const, mode_Is, 27, n_Const899); - ext_grs_node_t *n_Load889_1214 = ext_grs_act_add_node_to_keep(pattern, "Load889_1214", grs_op_Load, mode_T, 28, n_Load889); - ext_grs_node_t *n_Proj800_1215 = ext_grs_act_add_node_to_keep(pattern, "Proj800_1215", grs_op_Proj, mode_M, 29, n_Proj800); - ext_grs_node_t *n_VProj90_1216 = ext_grs_act_add_node_to_keep(pattern, "VProj90_1216", grs_op_VProj, mode_Bu, 87, n_Vector_Result13_Proj936); - ext_grs_node_t *n_MultipleAdd5711_1217 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5711_1217", grs_op_MultipleAdd, mode_P, 31, n_MultipleAdd5711); - ext_grs_node_t *n_MultipleAdd5693_1218 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5693_1218", grs_op_MultipleAdd, mode_P, 33, n_MultipleAdd5693); - ext_grs_node_t *n_Load949_1219 = ext_grs_act_add_node_to_keep(pattern, "Load949_1219", grs_op_Load, mode_T, 32, n_Load949); - ext_grs_node_t *n_Proj785_1220 = ext_grs_act_add_node_to_keep(pattern, "Proj785_1220", grs_op_Proj, mode_M, 35, n_Proj785); - ext_grs_node_t *n_MultipleAdd5691_1221 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5691_1221", grs_op_MultipleAdd, mode_P, 34, n_MultipleAdd5691); - ext_grs_node_t *n_MultipleAdd5707_1222 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5707_1222", grs_op_MultipleAdd, mode_P, 39, n_MultipleAdd5707); - ext_grs_node_t *n_MultipleAdd5697_1223 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5697_1223", grs_op_MultipleAdd, mode_P, 38, n_MultipleAdd5697); - ext_grs_node_t *n_Load799_1224 = ext_grs_act_add_node_to_keep(pattern, "Load799_1224", grs_op_Load, mode_T, 36, n_Load799); - ext_grs_node_t *n_VProj86_1225 = ext_grs_act_add_node_to_keep(pattern, "VProj86_1225", grs_op_VProj, mode_Bu, 88, n_Vector_Result8_Proj861); - ext_grs_node_t *n_VProj112_1226 = ext_grs_act_add_node_to_keep(pattern, "VProj112_1226", grs_op_VProj, mode_Bu, 89, n_Vector_Result6_Proj831); - ext_grs_node_t *n_Proj845_1227 = ext_grs_act_add_node_to_keep(pattern, "Proj845_1227", grs_op_Proj, mode_M, 45, n_Proj845); - ext_grs_node_t *n_Proj950_1228 = ext_grs_act_add_node_to_keep(pattern, "Proj950_1228", grs_op_Proj, mode_M, 44, n_Proj950); - ext_grs_node_t *n_MultipleAdd5695_1229 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5695_1229", grs_op_MultipleAdd, mode_P, 43, n_MultipleAdd5695); - ext_grs_node_t *n_MultipleAdd5709_1230 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5709_1230", grs_op_MultipleAdd, mode_P, 41, n_MultipleAdd5709); - ext_grs_node_t *n_VProj84_1231 = ext_grs_act_add_node_to_keep(pattern, "VProj84_1231", grs_op_VProj, mode_Bu, 90, n_Vector_Result11_Proj906); - ext_grs_node_t *n_VProj94_1232 = ext_grs_act_add_node_to_keep(pattern, "VProj94_1232", grs_op_VProj, mode_Bu, 91, n_Vector_Result5_Proj816); - ext_grs_node_t *n_Load904_1233 = ext_grs_act_add_node_to_keep(pattern, "Load904_1233", grs_op_Load, mode_T, 47, n_Load904); - ext_grs_node_t *n_Load784_1234 = ext_grs_act_add_node_to_keep(pattern, "Load784_1234", grs_op_Load, mode_T, 48, n_Load784); - ext_grs_node_t *n_MultipleAdd5699_1235 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5699_1235", grs_op_MultipleAdd, mode_P, 50, n_MultipleAdd5699); - ext_grs_node_t *n_Proj905_1236 = ext_grs_act_add_node_to_keep(pattern, "Proj905_1236", grs_op_Proj, mode_M, 49, n_Proj905); - ext_grs_node_t *n_Const794_1237 = ext_grs_act_add_node_to_keep(pattern, "Const794_1237", grs_op_Const, mode_Is, 51, n_Const794); - ext_grs_node_t *n_Const914_1238 = ext_grs_act_add_node_to_keep(pattern, "Const914_1238", grs_op_Const, mode_Is, 52, n_Const914); - ext_grs_node_t *n_Vector_op = ext_grs_act_add_node(pattern, "Vector_op", grs_op_Complex, mode_T, 92); - ext_grs_node_t *n_Load859_1239 = ext_grs_act_add_node_to_keep(pattern, "Load859_1239", grs_op_Load, mode_T, 53, n_Load859); - ext_grs_node_t *n_Const944_1240 = ext_grs_act_add_node_to_keep(pattern, "Const944_1240", grs_op_Const, mode_Is, 54, n_Const944); - ext_grs_node_t *n_Proj860_1241 = ext_grs_act_add_node_to_keep(pattern, "Proj860_1241", grs_op_Proj, mode_M, 55, n_Proj860); - ext_grs_node_t *n_Vector_op_ProjM = ext_grs_act_add_node(pattern, "Vector_op_ProjM", grs_op_Proj, mode_M, 93); - ext_grs_node_t *n_MultipleAdd5701_1242 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5701_1242", grs_op_MultipleAdd, mode_P, 56, n_MultipleAdd5701); - ext_grs_node_t *n_Vector_op_ProjData = ext_grs_act_add_node(pattern, "Vector_op_ProjData", grs_op_Proj, mode_LLu, 94); - ext_grs_node_t *n_MultipleAdd5705_1243 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5705_1243", grs_op_MultipleAdd, mode_P, 57, n_MultipleAdd5705); - ext_grs_node_t *n_MultipleAdd5703_1244 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5703_1244", grs_op_MultipleAdd, mode_P, 58, n_MultipleAdd5703); - ext_grs_node_t *n_Bad82 = ext_grs_act_add_node(pattern, "Bad82", grs_op_Bad, mode_ANY, 95); - ext_grs_node_t *n_VProj92_1245 = ext_grs_act_add_node_to_keep(pattern, "VProj92_1245", grs_op_VProj, mode_Bu, 96, n_Vector_Result4_Proj801); - ext_grs_node_t *n_VProj82_1246 = ext_grs_act_add_node_to_keep(pattern, "VProj82_1246", grs_op_VProj, mode_Bu, 97, n_Vector_Result0_Proj741); - ext_grs_node_t *n_Proj815_1247 = ext_grs_act_add_node_to_keep(pattern, "Proj815_1247", grs_op_Proj, mode_M, 61, n_Proj815); - ext_grs_node_t *n_Proj755_1248 = ext_grs_act_add_node_to_keep(pattern, "Proj755_1248", grs_op_Proj, mode_M, 62, n_Proj755); - ext_grs_node_t *n_Load814_1249 = ext_grs_act_add_node_to_keep(pattern, "Load814_1249", grs_op_Load, mode_T, 63, n_Load814); - ext_grs_node_t *n_VProj106_1250 = ext_grs_act_add_node_to_keep(pattern, "VProj106_1250", grs_op_VProj, mode_Bu, 98, n_Vector_Result3_Proj786); - ext_grs_node_t *n_Load754_1251 = ext_grs_act_add_node_to_keep(pattern, "Load754_1251", grs_op_Load, mode_T, 65, n_Load754); - ext_grs_node_t *n_Const809_1252 = ext_grs_act_add_node_to_keep(pattern, "Const809_1252", grs_op_Const, mode_Is, 66, n_Const809); - ext_grs_node_t *n_Const779_1253 = ext_grs_act_add_node_to_keep(pattern, "Const779_1253", grs_op_Const, mode_Is, 67, n_Const779); - ext_grs_node_t *n_Vector_op_Block_1254 = ext_grs_act_add_node_to_keep(pattern, "Vector_op_Block_1254", grs_op_Block, mode_BB, 68, n_Vector_op_Block); - ext_grs_node_t *n_Load919_1255 = ext_grs_act_add_node_to_keep(pattern, "Load919_1255", grs_op_Load, mode_T, 70, n_Load919); - ext_grs_node_t *n_Load964_1256 = ext_grs_act_add_node_to_keep(pattern, "Load964_1256", grs_op_Load, mode_T, 69, n_Load964); - ext_grs_node_t *n_VProj96_1257 = ext_grs_act_add_node_to_keep(pattern, "VProj96_1257", grs_op_VProj, mode_Bu, 99, n_Vector_Result10_Proj891); - ext_grs_node_t *n_Const735_1258 = ext_grs_act_add_node_to_keep(pattern, "Const735_1258", grs_op_Const, mode_Is, 72, n_Const735); - ext_grs_node_t *n_VProj88_1259 = ext_grs_act_add_node_to_keep(pattern, "VProj88_1259", grs_op_VProj, mode_Bu, 100, n_Vector_Result2_Proj771); - ext_grs_node_t *n_Const731_1260 = ext_grs_act_add_node_to_keep(pattern, "Const731_1260", grs_op_Const, mode_Is, 74, n_Const731); - ext_grs_node_t *n_Proj965_1261 = ext_grs_act_add_node_to_keep(pattern, "Proj965_1261", grs_op_Proj, mode_M, 77, n_Proj965); - ext_grs_node_t *n_Proj770_1262 = ext_grs_act_add_node_to_keep(pattern, "Proj770_1262", grs_op_Proj, mode_M, 76, n_Proj770); - ext_grs_node_t *n_Proj830_1263 = ext_grs_act_add_node_to_keep(pattern, "Proj830_1263", grs_op_Proj, mode_M, 75, n_Proj830); - ext_grs_node_t *n_Load769_1264 = ext_grs_act_add_node_to_keep(pattern, "Load769_1264", grs_op_Load, mode_T, 78, n_Load769); - ext_grs_node_t *n_VProj110_1265 = ext_grs_act_add_node_to_keep(pattern, "VProj110_1265", grs_op_VProj, mode_Bu, 101, n_Vector_Result15_Proj966); - ext_grs_node_t *n_Proj920_1266 = ext_grs_act_add_node_to_keep(pattern, "Proj920_1266", grs_op_Proj, mode_M, 80, n_Proj920); - ext_grs_node_t *n_Const839_1267 = ext_grs_act_add_node_to_keep(pattern, "Const839_1267", grs_op_Const, mode_Is, 81, n_Const839); - - /* The edges of the pattern */ - ext_grs_edge_t *e_pos1_144_1268 = ext_grs_act_add_edge_to_keep(pattern, "pos1_144_1268", 0, n_Load889_1214, n_Proj890_1209, 2, e_pos1_144); - ext_grs_edge_t *e_e130_1269 = ext_grs_act_add_edge_to_keep(pattern, "e130_1269", ext_grs_NO_EDGE_POS, n_Arg_0_1205, n_MultipleAdd5699_1235, 3, e_e130); - ext_grs_edge_t *e_e133_1270 = ext_grs_act_add_edge_to_keep(pattern, "e133_1270", ext_grs_NO_EDGE_POS, n_Const824_1208, n_MultipleAdd5709_1230, 4, e_e133); - ext_grs_edge_t *e_e134_1271 = ext_grs_act_add_edge_to_keep(pattern, "e134_1271", ext_grs_NO_EDGE_POS, n_Arg_0_1205, n_MultipleAdd5709_1230, 5, e_e134); - ext_grs_edge_t *e_e83_1272 = ext_grs_act_add_edge_to_keep(pattern, "e83_1272", ext_grs_NO_EDGE_POS, n_Arg_0_1205, n_MultipleAdd5701_1242, 6, e_e83); - ext_grs_edge_t *e_e82_1273 = ext_grs_act_add_edge_to_keep(pattern, "e82_1273", ext_grs_NO_EDGE_POS, n_Const731_1260, n_MultipleAdd5701_1242, 7, e_e82); - ext_grs_edge_t *e_pos2_102_1274 = ext_grs_act_add_edge_to_keep(pattern, "pos2_102_1274", 1, n_MultipleAdd5705_1243, n_Load859_1239, 9, e_pos2_102); - ext_grs_edge_t *e_pos1_136_1275 = ext_grs_act_add_edge_to_keep(pattern, "pos1_136_1275", 0, n_Load799_1224, n_Proj800_1215, 8, e_pos1_136); - ext_grs_edge_t *e_pos1_135_1276 = ext_grs_act_add_edge_to_keep(pattern, "pos1_135_1276", 0, n_Load874_1188, n_Proj875_1203, 10, e_pos1_135); - ext_grs_edge_t *e_e89_1277 = ext_grs_act_add_edge_to_keep(pattern, "e89_1277", ext_grs_NO_EDGE_POS, n_Const764_1186, n_MultipleAdd5717_1198, 13, e_e89); - ext_grs_edge_t *e_e123_1278 = ext_grs_act_add_edge_to_keep(pattern, "e123_1278", ext_grs_NO_EDGE_POS, n_Arg_0_1205, n_MultipleAdd5707_1222, 15, e_e123); - ext_grs_edge_t *e_e122_1279 = ext_grs_act_add_edge_to_keep(pattern, "e122_1279", ext_grs_NO_EDGE_POS, n_Const839_1267, n_MultipleAdd5707_1222, 16, e_e122); - ext_grs_edge_t *e_pos1_88_1280 = ext_grs_act_add_edge_to_keep(pattern, "pos1_88_1280", 0, n_Load739_1199, n_Proj740_1194, 17, e_pos1_88); - ext_grs_edge_t *e_pos1_87_1281 = ext_grs_act_add_edge_to_keep(pattern, "pos1_87_1281", 0, n_Load814_1249, n_Proj815_1247, 18, e_pos1_87); - ext_grs_edge_t *e_pos2_109_1282 = ext_grs_act_add_edge_to_keep(pattern, "pos2_109_1282", 1, n_MultipleAdd5717_1198, n_Load769_1264, 20, e_pos2_109); - ext_grs_edge_t *e_e129_1283 = ext_grs_act_add_edge_to_keep(pattern, "e129_1283", ext_grs_NO_EDGE_POS, n_Const899_1213, n_MultipleAdd5699_1235, 22, e_e129); - ext_grs_edge_t *e_pos1_168_1284 = ext_grs_act_add_edge(pattern, "pos1_168_1284", 0, n_Vector_op, n_Vector_op_ProjM, 81); - ext_grs_edge_t *e_pos1_166_1285 = ext_grs_act_add_edge(pattern, "pos1_166_1285", 0, n_MultipleAdd5723_1191, n_Vector_op, 82); - ext_grs_edge_t *e_pos2_110_1286 = ext_grs_act_add_edge_to_keep(pattern, "pos2_110_1286", 1, n_MultipleAdd5695_1229, n_Load934_1197, 23, e_pos2_110); - ext_grs_edge_t *e_pos1_165_1287 = ext_grs_act_add_edge(pattern, "pos1_165_1287", 0, n_Vector_op, n_Vector_op_ProjData, 83); - ext_grs_edge_t *e_pos1_162_1288 = ext_grs_act_add_edge_to_keep(pattern, "pos1_162_1288", 0, n_Load919_1255, n_Proj920_1266, 24, e_pos1_162); - ext_grs_edge_t *e_e111_1289 = ext_grs_act_add_edge_to_keep(pattern, "e111_1289", ext_grs_NO_EDGE_POS, n_Const854_1206, n_MultipleAdd5705_1243, 25, e_e111); - ext_grs_edge_t *e_e112_1290 = ext_grs_act_add_edge_to_keep(pattern, "e112_1290", ext_grs_NO_EDGE_POS, n_Arg_0_1205, n_MultipleAdd5705_1243, 26, e_e112); - ext_grs_edge_t *e_e118_1291 = ext_grs_act_add_edge_to_keep(pattern, "e118_1291", ext_grs_NO_EDGE_POS, n_Arg_0_1205, n_MultipleAdd5723_1191, 27, e_e118); - ext_grs_edge_t *e_e115_1292 = ext_grs_act_add_edge_to_keep(pattern, "e115_1292", ext_grs_NO_EDGE_POS, n_Const914_1238, n_MultipleAdd5697_1223, 28, e_e115); - ext_grs_edge_t *e_e117_1293 = ext_grs_act_add_edge_to_keep(pattern, "e117_1293", ext_grs_NO_EDGE_POS, n_Const727_1195, n_MultipleAdd5723_1191, 29, e_e117); - ext_grs_edge_t *e_e116_1294 = ext_grs_act_add_edge_to_keep(pattern, "e116_1294", ext_grs_NO_EDGE_POS, n_Arg_0_1205, n_MultipleAdd5697_1223, 30, e_e116); - ext_grs_edge_t *e_pos2_126_1295 = ext_grs_act_add_edge_to_keep(pattern, "pos2_126_1295", 1, n_MultipleAdd5711_1217, n_Load814_1249, 31, e_pos2_126); - ext_grs_edge_t *e_pos2_124_1296 = ext_grs_act_add_edge_to_keep(pattern, "pos2_124_1296", 1, n_MultipleAdd5713_1211, n_Load799_1224, 33, e_pos2_124); - ext_grs_edge_t *e_pos1_150_1297 = ext_grs_act_add_edge_to_keep(pattern, "pos1_150_1297", 0, n_Load904_1233, n_Proj905_1236, 36, e_pos1_150); - ext_grs_edge_t *e_e107_1298 = ext_grs_act_add_edge_to_keep(pattern, "e107_1298", ext_grs_NO_EDGE_POS, n_Arg_0_1205, n_MultipleAdd5695_1229, 37, e_e107); - ext_grs_edge_t *e_e106_1299 = ext_grs_act_add_edge_to_keep(pattern, "e106_1299", ext_grs_NO_EDGE_POS, n_Const929_1200, n_MultipleAdd5695_1229, 38, e_e106); - ext_grs_edge_t *e_e105_1300 = ext_grs_act_add_edge_to_keep(pattern, "e105_1300", ext_grs_NO_EDGE_POS, n_Arg_0_1205, n_MultipleAdd5719_1196, 39, e_e105); - ext_grs_edge_t *e_e104_1301 = ext_grs_act_add_edge_to_keep(pattern, "e104_1301", ext_grs_NO_EDGE_POS, n_Const735_1258, n_MultipleAdd5719_1196, 40, e_e104); - ext_grs_edge_t *e_pos1_182_1302 = ext_grs_act_add_edge(pattern, "pos1_182_1302", 0, n_Vector_op_ProjData, n_VProj106_1250, 84); - ext_grs_edge_t *e_pos1_108_1303 = ext_grs_act_add_edge_to_keep(pattern, "pos1_108_1303", 0, n_Load949_1219, n_Proj950_1228, 41, e_pos1_108); - ext_grs_edge_t *e_pos1_183_1304 = ext_grs_act_add_edge(pattern, "pos1_183_1304", 0, n_Vector_op_ProjData, n_VProj108_1192, 85); - ext_grs_edge_t *e_e141_1305 = ext_grs_act_add_edge_to_keep(pattern, "e141_1305", ext_grs_NO_EDGE_POS, n_Const809_1252, n_MultipleAdd5711_1217, 42, e_e141); - ext_grs_edge_t *e_pos1_180_1306 = ext_grs_act_add_edge(pattern, "pos1_180_1306", 0, n_Vector_op_ProjData, n_VProj102_1190, 86); - ext_grs_edge_t *e_e142_1307 = ext_grs_act_add_edge_to_keep(pattern, "e142_1307", ext_grs_NO_EDGE_POS, n_Arg_0_1205, n_MultipleAdd5711_1217, 43, e_e142); - ext_grs_edge_t *e_pos1_181_1308 = ext_grs_act_add_edge(pattern, "pos1_181_1308", 0, n_Vector_op_ProjData, n_VProj104_1210, 87); - ext_grs_edge_t *e_pos2_131_1309 = ext_grs_act_add_edge_to_keep(pattern, "pos2_131_1309", 1, n_MultipleAdd5701_1242, n_Load889_1214, 44, e_pos2_131); - ext_grs_edge_t *e_pos1_184_1310 = ext_grs_act_add_edge(pattern, "pos1_184_1310", 0, n_Vector_op_ProjData, n_VProj110_1265, 88); - ext_grs_edge_t *e_pos1_185_1311 = ext_grs_act_add_edge(pattern, "pos1_185_1311", 0, n_Vector_op_ProjData, n_VProj112_1226, 89); - ext_grs_edge_t *e_e148_1312 = ext_grs_act_add_edge_to_keep(pattern, "e148_1312", ext_grs_NO_EDGE_POS, n_Const794_1237, n_MultipleAdd5713_1211, 45, e_e148); - ext_grs_edge_t *e_e149_1313 = ext_grs_act_add_edge_to_keep(pattern, "e149_1313", ext_grs_NO_EDGE_POS, n_Arg_0_1205, n_MultipleAdd5713_1211, 46, e_e149); - ext_grs_edge_t *e_pos2_138_1314 = ext_grs_act_add_edge_to_keep(pattern, "pos2_138_1314", 1, n_MultipleAdd5707_1222, n_Load844_1207, 47, e_pos2_138); - ext_grs_edge_t *e_pos0_169_1315 = ext_grs_act_add_edge(pattern, "pos0_169_1315", -1, n_Vector_op_Block_1254, n_Vector_op_ProjM, 90); - ext_grs_edge_t *e_pos1_100_1316 = ext_grs_act_add_edge_to_keep(pattern, "pos1_100_1316", 0, n_Load754_1251, n_Proj755_1248, 48, e_pos1_100); - ext_grs_edge_t *e_pos0_160_1317 = ext_grs_act_add_edge_to_keep(pattern, "pos0_160_1317", -1, n_Vector_op_Block_1254, n_Load964_1256, 50, e_pos0_160); - ext_grs_edge_t *e_pos0_163_1318 = ext_grs_act_add_edge(pattern, "pos0_163_1318", -1, n_Vector_op_Block_1254, n_Vector_op, 91); - ext_grs_edge_t *e_pos0_164_1319 = ext_grs_act_add_edge(pattern, "pos0_164_1319", -1, n_Vector_op_Block_1254, n_Vector_op_ProjData, 92); - ext_grs_edge_t *e_pos1_170_1320 = ext_grs_act_add_edge(pattern, "pos1_170_1320", 0, n_Vector_op_ProjData, n_VProj82_1246, 93); - ext_grs_edge_t *e_pos1_171_1321 = ext_grs_act_add_edge(pattern, "pos1_171_1321", 0, n_Vector_op_ProjData, n_VProj84_1231, 94); - ext_grs_edge_t *e_pos1_172_1322 = ext_grs_act_add_edge(pattern, "pos1_172_1322", 0, n_Vector_op_ProjData, n_VProj86_1225, 95); - ext_grs_edge_t *e_e156_1323 = ext_grs_act_add_edge_to_keep(pattern, "e156_1323", ext_grs_NO_EDGE_POS, n_Arg_0_1205, n_MultipleAdd5715_1212, 52, e_e156); - ext_grs_edge_t *e_pos1_173_1324 = ext_grs_act_add_edge(pattern, "pos1_173_1324", 0, n_Vector_op_ProjData, n_VProj88_1259, 96); - ext_grs_edge_t *e_pos2_140_1325 = ext_grs_act_add_edge_to_keep(pattern, "pos2_140_1325", 1, n_MultipleAdd5719_1196, n_Load754_1251, 54, e_pos2_140); - ext_grs_edge_t *e_e157_1326 = ext_grs_act_add_edge_to_keep(pattern, "e157_1326", ext_grs_NO_EDGE_POS, n_Const959_1187, n_MultipleAdd5691_1221, 53, e_e157); - ext_grs_edge_t *e_pos1_174_1327 = ext_grs_act_add_edge(pattern, "pos1_174_1327", 0, n_Vector_op_ProjData, n_VProj90_1216, 97); - ext_grs_edge_t *e_pos1_175_1328 = ext_grs_act_add_edge(pattern, "pos1_175_1328", 0, n_Vector_op_ProjData, n_VProj92_1245, 98); - ext_grs_edge_t *e_e155_1329 = ext_grs_act_add_edge_to_keep(pattern, "e155_1329", ext_grs_NO_EDGE_POS, n_Const779_1253, n_MultipleAdd5715_1212, 55, e_e155); - ext_grs_edge_t *e_pos1_176_1330 = ext_grs_act_add_edge(pattern, "pos1_176_1330", 0, n_Vector_op_ProjData, n_VProj94_1232, 99); - ext_grs_edge_t *e_pos2_143_1331 = ext_grs_act_add_edge_to_keep(pattern, "pos2_143_1331", 1, n_MultipleAdd5697_1223, n_Load919_1255, 56, e_pos2_143); - ext_grs_edge_t *e_pos1_177_1332 = ext_grs_act_add_edge(pattern, "pos1_177_1332", 0, n_Vector_op_ProjData, n_VProj96_1257, 100); - ext_grs_edge_t *e_pos1_178_1333 = ext_grs_act_add_edge(pattern, "pos1_178_1333", 0, n_Vector_op_ProjData, n_VProj98_1202, 101); - ext_grs_edge_t *e_e158_1334 = ext_grs_act_add_edge_to_keep(pattern, "e158_1334", ext_grs_NO_EDGE_POS, n_Arg_0_1205, n_MultipleAdd5691_1221, 57, e_e158); - ext_grs_edge_t *e_pos1_179_1335 = ext_grs_act_add_edge(pattern, "pos1_179_1335", 0, n_Vector_op_ProjData, n_VProj100_1189, 102); - ext_grs_edge_t *e_pos2_147_1336 = ext_grs_act_add_edge_to_keep(pattern, "pos2_147_1336", 1, n_MultipleAdd5703_1244, n_Load874_1188, 58, e_pos2_147); - ext_grs_edge_t *e_pos2_151_1337 = ext_grs_act_add_edge_to_keep(pattern, "pos2_151_1337", 1, n_MultipleAdd5715_1212, n_Load784_1234, 59, e_pos2_151); - ext_grs_edge_t *e_pos2_154_1338 = ext_grs_act_add_edge_to_keep(pattern, "pos2_154_1338", 1, n_MultipleAdd5693_1218, n_Load949_1219, 60, e_pos2_154); - ext_grs_edge_t *e_e97_1339 = ext_grs_act_add_edge_to_keep(pattern, "e97_1339", ext_grs_NO_EDGE_POS, n_Const869_1204, n_MultipleAdd5703_1244, 61, e_e97); - ext_grs_edge_t *e_e98_1340 = ext_grs_act_add_edge_to_keep(pattern, "e98_1340", ext_grs_NO_EDGE_POS, n_Arg_0_1205, n_MultipleAdd5703_1244, 62, e_e98); - ext_grs_edge_t *e_pos1_120_1341 = ext_grs_act_add_edge_to_keep(pattern, "pos1_120_1341", 0, n_Load964_1256, n_Proj965_1261, 63, e_pos1_120); - ext_grs_edge_t *e_pos2_95_1342 = ext_grs_act_add_edge_to_keep(pattern, "pos2_95_1342", 1, n_MultipleAdd5699_1235, n_Load904_1233, 65, e_pos2_95); - ext_grs_edge_t *e_pos1_94_1343 = ext_grs_act_add_edge_to_keep(pattern, "pos1_94_1343", 0, n_Load934_1197, n_Proj935_1193, 66, e_pos1_94); - ext_grs_edge_t *e_pos2_91_1344 = ext_grs_act_add_edge_to_keep(pattern, "pos2_91_1344", 1, n_MultipleAdd5723_1191, n_Load739_1199, 68, e_pos2_91); - ext_grs_edge_t *e_e90_1345 = ext_grs_act_add_edge_to_keep(pattern, "e90_1345", ext_grs_NO_EDGE_POS, n_Arg_0_1205, n_MultipleAdd5717_1198, 71, e_e90); - ext_grs_edge_t *e_pos1_99_1346 = ext_grs_act_add_edge_to_keep(pattern, "pos1_99_1346", 0, n_Load829_1201, n_Proj830_1263, 70, e_pos1_99); - ext_grs_edge_t *e_pos1_127_1347 = ext_grs_act_add_edge_to_keep(pattern, "pos1_127_1347", 0, n_Load784_1234, n_Proj785_1220, 69, e_pos1_127); - ext_grs_edge_t *e_e93_1348 = ext_grs_act_add_edge_to_keep(pattern, "e93_1348", ext_grs_NO_EDGE_POS, n_Arg_0_1205, n_MultipleAdd5693_1218, 73, e_e93); - ext_grs_edge_t *e_e92_1349 = ext_grs_act_add_edge_to_keep(pattern, "e92_1349", ext_grs_NO_EDGE_POS, n_Const944_1240, n_MultipleAdd5693_1218, 75, e_e92); - ext_grs_edge_t *e_pos1_125_1350 = ext_grs_act_add_edge_to_keep(pattern, "pos1_125_1350", 0, n_Load859_1239, n_Proj860_1241, 74, e_pos1_125); - ext_grs_edge_t *e_pos2_161_1351 = ext_grs_act_add_edge_to_keep(pattern, "pos2_161_1351", 1, n_MultipleAdd5691_1221, n_Load964_1256, 76, e_pos2_161); - ext_grs_edge_t *e_pos2_167_1352 = ext_grs_act_add_edge(pattern, "pos2_167_1352", 1, n_Bad82, n_Vector_op, 103); - ext_grs_edge_t *e_pos2_85_1353 = ext_grs_act_add_edge_to_keep(pattern, "pos2_85_1353", 1, n_MultipleAdd5709_1230, n_Load829_1201, 78, e_pos2_85); - ext_grs_edge_t *e_pos1_113_1354 = ext_grs_act_add_edge_to_keep(pattern, "pos1_113_1354", 0, n_Load844_1207, n_Proj845_1227, 79, e_pos1_113); - ext_grs_edge_t *e_pos1_114_1355 = ext_grs_act_add_edge_to_keep(pattern, "pos1_114_1355", 0, n_Load769_1264, n_Proj770_1262, 80, e_pos1_114); - - } /* The replacement */ - - /* Eval functions */ - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_33557); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_33560); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_33563); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_33566); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_33569); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_33572); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_33575); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_33578); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_33581); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_33584); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_33587); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_33590); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_33593); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_33596); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_33599); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_33602); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_33605); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_33608); - } /* The Action */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* vload_16b_variant0 */ - - -/* functions for evaluation of conditions of action vload_16b_variant1 */ -static int grs_cond_func_34420(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[54/* Const944 */])) == 14; -} -static int grs_cond_func_34423(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[9/* Const727 */])) == 0; -} -static int grs_cond_func_34426(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[57/* MultipleAdd5701 */]) == 3; -} -static int grs_cond_func_34429(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[60/* Vector_Result0_Proj741 */]) == 3; -} -static int grs_cond_func_34432(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[62/* Proj815 */]) == 0; -} -static int grs_cond_func_34435(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[42/* Vector_Result11_Proj906 */]) == 3; -} -static int grs_cond_func_34438(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[8/* Proj740 */]) == 0; -} -static int grs_cond_func_34441(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[12/* MultipleAdd5717 */]) == 3; -} -static int grs_cond_func_34444(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[33/* MultipleAdd5693 */]) == 3; -} -static int grs_cond_func_34447(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[1/* Const959 */])) == 15; -} -static int grs_cond_func_34450(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[7/* Proj935 */]) == 0; -} -static int grs_cond_func_34453(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[37/* Vector_Result8_Proj861 */]) == 3; -} -static int grs_cond_func_34456(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[59/* MultipleAdd5703 */]) == 3; -} -static int grs_cond_func_34459(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[22/* Const824 */])) == 6; -} -static int grs_cond_func_34462(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[76/* Proj830 */]) == 0; -} -static int grs_cond_func_34465(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[63/* Proj755 */]) == 0; -} -static int grs_cond_func_34468(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[74/* Vector_Result2_Proj771 */]) == 3; -} -static int grs_cond_func_34471(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[10/* MultipleAdd5719 */]) == 3; -} -static int grs_cond_func_34474(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[30/* Vector_Result13_Proj936 */]) == 3; -} -static int grs_cond_func_34477(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[43/* MultipleAdd5695 */]) == 3; -} -static int grs_cond_func_34480(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[44/* Proj950 */]) == 0; -} -static int grs_cond_func_34483(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[27/* Const899 */])) == 11; -} -static int grs_cond_func_34486(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[58/* MultipleAdd5705 */]) == 3; -} -static int grs_cond_func_34489(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[45/* Proj845 */]) == 0; -} -static int grs_cond_func_34492(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[77/* Proj770 */]) == 0; -} -static int grs_cond_func_34495(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[20/* Const854 */])) == 8; -} -static int grs_cond_func_34498(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[38/* MultipleAdd5697 */]) == 3; -} -static int grs_cond_func_34501(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[5/* MultipleAdd5723 */]) == 3; -} -static int grs_cond_func_34504(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[61/* Vector_Result4_Proj801 */]) == 3; -} -static int grs_cond_func_34507(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[78/* Proj965 */]) == 0; -} -static int grs_cond_func_34510(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[46/* Vector_Result5_Proj816 */]) == 3; -} -static int grs_cond_func_34513(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[0/* Const764 */])) == 2; -} -static int grs_cond_func_34516(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[39/* MultipleAdd5707 */]) == 3; -} -static int grs_cond_func_34519(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[14/* Const929 */])) == 13; -} -static int grs_cond_func_34522(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[55/* Proj860 */]) == 0; -} -static int grs_cond_func_34525(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[35/* Proj785 */]) == 0; -} -static int grs_cond_func_34528(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[72/* Vector_Result10_Proj891 */]) == 3; -} -static int grs_cond_func_34531(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[50/* MultipleAdd5699 */]) == 3; -} -static int grs_cond_func_34534(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[41/* MultipleAdd5709 */]) == 3; -} -static int grs_cond_func_34537(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[16/* Vector_Result7_Proj846 */]) == 3; -} -static int grs_cond_func_34540(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[51/* Const794 */])) == 4; -} -static int grs_cond_func_34543(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[17/* Proj875 */]) == 0; -} -static int grs_cond_func_34546(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[29/* Proj800 */]) == 0; -} -static int grs_cond_func_34549(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[67/* Const809 */])) == 5; -} -static int grs_cond_func_34552(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[3/* Vector_Result1_Proj756 */]) == 3; -} -static int grs_cond_func_34555(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[4/* Vector_Result12_Proj921 */]) == 3; -} -static int grs_cond_func_34558(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[75/* Const731 */])) == 10; -} -static int grs_cond_func_34561(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[31/* MultipleAdd5711 */]) == 3; -} -static int grs_cond_func_34564(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[23/* Proj890 */]) == 0; -} -static int grs_cond_func_34567(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[25/* Vector_Result9_Proj876 */]) == 3; -} -static int grs_cond_func_34570(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[82/* Const839 */])) == 7; -} -static int grs_cond_func_34573(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[65/* Vector_Result3_Proj786 */]) == 3; -} -static int grs_cond_func_34576(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[24/* MultipleAdd5713 */]) == 3; -} -static int grs_cond_func_34579(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[73/* Const735 */])) == 1; -} -static int grs_cond_func_34582(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[52/* Const914 */])) == 12; -} -static int grs_cond_func_34585(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[49/* Proj905 */]) == 0; -} -static int grs_cond_func_34588(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[6/* Vector_Result14_Proj951 */]) == 3; -} -static int grs_cond_func_34591(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[80/* Vector_Result15_Proj966 */]) == 3; -} -static int grs_cond_func_34594(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[18/* Const869 */])) == 9; -} -static int grs_cond_func_34597(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[26/* MultipleAdd5715 */]) == 3; -} -static int grs_cond_func_34600(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[34/* MultipleAdd5691 */]) == 3; -} -static int grs_cond_func_34603(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[40/* Vector_Result6_Proj831 */]) == 3; -} -static int grs_cond_func_34606(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[81/* Proj920 */]) == 0; -} -static int grs_cond_func_34609(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[68/* Const779 */])) == 3; -} - -static void *grs_eval_out_func_34996(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { - set_Proj_proj(rpl_node_map[94/* Vector_op_ProjM */], 1); - return(NULL); -} -static void *grs_eval_out_func_34999(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { - set_Proj_proj(rpl_node_map[95/* Vector_op_ProjData */], 0); - return(NULL); -} -static void *grs_eval_out_func_35002(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[98/* VProj83 */], 0); - return(NULL); -} -static void *grs_eval_out_func_35005(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[91/* VProj85 */], 11); - return(NULL); -} -static void *grs_eval_out_func_35008(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[89/* VProj87 */], 8); - return(NULL); -} -static void *grs_eval_out_func_35011(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[101/* VProj89 */], 2); - return(NULL); -} -static void *grs_eval_out_func_35014(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[88/* VProj91 */], 13); - return(NULL); -} -static void *grs_eval_out_func_35017(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[96/* VProj93 */], 4); - return(NULL); -} -static void *grs_eval_out_func_35020(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[92/* VProj95 */], 5); - return(NULL); -} -static void *grs_eval_out_func_35023(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[100/* VProj97 */], 10); - return(NULL); -} -static void *grs_eval_out_func_35026(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[86/* VProj99 */], 7); - return(NULL); -} -static void *grs_eval_out_func_35029(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[83/* VProj101 */], 1); - return(NULL); -} -static void *grs_eval_out_func_35032(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[84/* VProj103 */], 12); - return(NULL); -} -static void *grs_eval_out_func_35035(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[87/* VProj105 */], 9); - return(NULL); -} -static void *grs_eval_out_func_35038(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[99/* VProj107 */], 3); - return(NULL); -} -static void *grs_eval_out_func_35041(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[85/* VProj109 */], 14); - return(NULL); -} -static void *grs_eval_out_func_35044(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[102/* VProj111 */], 15); - return(NULL); -} -static void *grs_eval_out_func_35047(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[90/* VProj113 */], 6); - return(NULL); -} -/* functions for building the pattern of action vload_16b_variant1 */ -static _inline ext_grs_action_t *grs_action_vload_16b_variant1_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_rule, "vload_16b_variant1"); - int check; - { /* The action */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - ext_grs_node_t *n_Const764 = ext_grs_act_add_node(pattern, "Const764", grs_op_Const, mode_Is, 0); - ext_grs_node_t *n_Const959 = ext_grs_act_add_node(pattern, "Const959", grs_op_Const, mode_Is, 1); - ext_grs_node_t *n_Load874 = ext_grs_act_add_node(pattern, "Load874", grs_op_Load, mode_T, 2); - ext_grs_node_t *n_Vector_Result1_Proj756 = ext_grs_act_add_node(pattern, "Vector_Result1_Proj756", grs_op_Proj, mode_Bu, 3); - ext_grs_node_t *n_Vector_Result12_Proj921 = ext_grs_act_add_node(pattern, "Vector_Result12_Proj921", grs_op_Proj, mode_Bu, 4); - ext_grs_node_t *n_MultipleAdd5723 = ext_grs_act_add_node(pattern, "MultipleAdd5723", grs_op_MultipleAdd, mode_P, 5); - ext_grs_node_t *n_Vector_Result14_Proj951 = ext_grs_act_add_node(pattern, "Vector_Result14_Proj951", grs_op_Proj, mode_Bu, 6); - ext_grs_node_t *n_Proj935 = ext_grs_act_add_node(pattern, "Proj935", grs_op_Proj, mode_M, 7); - ext_grs_node_t *n_Proj740 = ext_grs_act_add_node(pattern, "Proj740", grs_op_Proj, mode_M, 8); - ext_grs_node_t *n_Const727 = ext_grs_act_add_node(pattern, "Const727", grs_op_Const, mode_Is, 9); - ext_grs_node_t *n_MultipleAdd5719 = ext_grs_act_add_node(pattern, "MultipleAdd5719", grs_op_MultipleAdd, mode_P, 10); - ext_grs_node_t *n_Load934 = ext_grs_act_add_node(pattern, "Load934", grs_op_Load, mode_T, 11); - ext_grs_node_t *n_MultipleAdd5717 = ext_grs_act_add_node(pattern, "MultipleAdd5717", grs_op_MultipleAdd, mode_P, 12); - ext_grs_node_t *n_Load739 = ext_grs_act_add_node(pattern, "Load739", grs_op_Load, mode_T, 13); - ext_grs_node_t *n_Const929 = ext_grs_act_add_node(pattern, "Const929", grs_op_Const, mode_Is, 14); - ext_grs_node_t *n_Load829 = ext_grs_act_add_node(pattern, "Load829", grs_op_Load, mode_T, 15); - ext_grs_node_t *n_Vector_Result7_Proj846 = ext_grs_act_add_node(pattern, "Vector_Result7_Proj846", grs_op_Proj, mode_Bu, 16); - ext_grs_node_t *n_Proj875 = ext_grs_act_add_node(pattern, "Proj875", grs_op_Proj, mode_M, 17); - ext_grs_node_t *n_Const869 = ext_grs_act_add_node(pattern, "Const869", grs_op_Const, mode_Is, 18); - ext_grs_node_t *n_Arg_0 = ext_grs_act_add_node(pattern, "Arg_0", grs_op_VectorBase, mode_ANY, 19); - ext_grs_node_t *n_Const854 = ext_grs_act_add_node(pattern, "Const854", grs_op_Const, mode_Is, 20); - ext_grs_node_t *n_Load844 = ext_grs_act_add_node(pattern, "Load844", grs_op_Load, mode_T, 21); - ext_grs_node_t *n_Const824 = ext_grs_act_add_node(pattern, "Const824", grs_op_Const, mode_Is, 22); - ext_grs_node_t *n_Proj890 = ext_grs_act_add_node(pattern, "Proj890", grs_op_Proj, mode_M, 23); - ext_grs_node_t *n_MultipleAdd5713 = ext_grs_act_add_node(pattern, "MultipleAdd5713", grs_op_MultipleAdd, mode_P, 24); - ext_grs_node_t *n_Vector_Result9_Proj876 = ext_grs_act_add_node(pattern, "Vector_Result9_Proj876", grs_op_Proj, mode_Bu, 25); - ext_grs_node_t *n_MultipleAdd5715 = ext_grs_act_add_node(pattern, "MultipleAdd5715", grs_op_MultipleAdd, mode_P, 26); - ext_grs_node_t *n_Const899 = ext_grs_act_add_node(pattern, "Const899", grs_op_Const, mode_Is, 27); - ext_grs_node_t *n_Load889 = ext_grs_act_add_node(pattern, "Load889", grs_op_Load, mode_T, 28); - ext_grs_node_t *n_Proj800 = ext_grs_act_add_node(pattern, "Proj800", grs_op_Proj, mode_M, 29); - ext_grs_node_t *n_Vector_Result13_Proj936 = ext_grs_act_add_node(pattern, "Vector_Result13_Proj936", grs_op_Proj, mode_Bu, 30); - ext_grs_node_t *n_MultipleAdd5711 = ext_grs_act_add_node(pattern, "MultipleAdd5711", grs_op_MultipleAdd, mode_P, 31); - ext_grs_node_t *n_Load949 = ext_grs_act_add_node(pattern, "Load949", grs_op_Load, mode_T, 32); - ext_grs_node_t *n_MultipleAdd5693 = ext_grs_act_add_node(pattern, "MultipleAdd5693", grs_op_MultipleAdd, mode_P, 33); - ext_grs_node_t *n_MultipleAdd5691 = ext_grs_act_add_node(pattern, "MultipleAdd5691", grs_op_MultipleAdd, mode_P, 34); - ext_grs_node_t *n_Proj785 = ext_grs_act_add_node(pattern, "Proj785", grs_op_Proj, mode_M, 35); - ext_grs_node_t *n_Load799 = ext_grs_act_add_node(pattern, "Load799", grs_op_Load, mode_T, 36); - ext_grs_node_t *n_Vector_Result8_Proj861 = ext_grs_act_add_node(pattern, "Vector_Result8_Proj861", grs_op_Proj, mode_Bu, 37); - ext_grs_node_t *n_MultipleAdd5697 = ext_grs_act_add_node(pattern, "MultipleAdd5697", grs_op_MultipleAdd, mode_P, 38); - ext_grs_node_t *n_MultipleAdd5707 = ext_grs_act_add_node(pattern, "MultipleAdd5707", grs_op_MultipleAdd, mode_P, 39); - ext_grs_node_t *n_Vector_Result6_Proj831 = ext_grs_act_add_node(pattern, "Vector_Result6_Proj831", grs_op_Proj, mode_Bu, 40); - ext_grs_node_t *n_MultipleAdd5709 = ext_grs_act_add_node(pattern, "MultipleAdd5709", grs_op_MultipleAdd, mode_P, 41); - ext_grs_node_t *n_Vector_Result11_Proj906 = ext_grs_act_add_node(pattern, "Vector_Result11_Proj906", grs_op_Proj, mode_Bu, 42); - ext_grs_node_t *n_MultipleAdd5695 = ext_grs_act_add_node(pattern, "MultipleAdd5695", grs_op_MultipleAdd, mode_P, 43); - ext_grs_node_t *n_Proj950 = ext_grs_act_add_node(pattern, "Proj950", grs_op_Proj, mode_M, 44); - ext_grs_node_t *n_Proj845 = ext_grs_act_add_node(pattern, "Proj845", grs_op_Proj, mode_M, 45); - ext_grs_node_t *n_Vector_Result5_Proj816 = ext_grs_act_add_node(pattern, "Vector_Result5_Proj816", grs_op_Proj, mode_Bu, 46); - ext_grs_node_t *n_Load904 = ext_grs_act_add_node(pattern, "Load904", grs_op_Load, mode_T, 47); - ext_grs_node_t *n_Load784 = ext_grs_act_add_node(pattern, "Load784", grs_op_Load, mode_T, 48); - ext_grs_node_t *n_Proj905 = ext_grs_act_add_node(pattern, "Proj905", grs_op_Proj, mode_M, 49); - ext_grs_node_t *n_MultipleAdd5699 = ext_grs_act_add_node(pattern, "MultipleAdd5699", grs_op_MultipleAdd, mode_P, 50); - ext_grs_node_t *n_Const794 = ext_grs_act_add_node(pattern, "Const794", grs_op_Const, mode_Is, 51); - ext_grs_node_t *n_Const914 = ext_grs_act_add_node(pattern, "Const914", grs_op_Const, mode_Is, 52); - ext_grs_node_t *n_Load859 = ext_grs_act_add_node(pattern, "Load859", grs_op_Load, mode_T, 53); - ext_grs_node_t *n_Const944 = ext_grs_act_add_node(pattern, "Const944", grs_op_Const, mode_Is, 54); - ext_grs_node_t *n_Proj860 = ext_grs_act_add_node(pattern, "Proj860", grs_op_Proj, mode_M, 55); - ext_grs_node_t *n_IR_node5724 = ext_grs_act_add_node(pattern, "IR_node5724", grs_op_IR_node, mode_ANY, 56); - ext_grs_node_t *n_MultipleAdd5701 = ext_grs_act_add_node(pattern, "MultipleAdd5701", grs_op_MultipleAdd, mode_P, 57); - ext_grs_node_t *n_MultipleAdd5705 = ext_grs_act_add_node(pattern, "MultipleAdd5705", grs_op_MultipleAdd, mode_P, 58); - ext_grs_node_t *n_MultipleAdd5703 = ext_grs_act_add_node(pattern, "MultipleAdd5703", grs_op_MultipleAdd, mode_P, 59); - ext_grs_node_t *n_Vector_Result0_Proj741 = ext_grs_act_add_node(pattern, "Vector_Result0_Proj741", grs_op_Proj, mode_Bu, 60); - ext_grs_node_t *n_Vector_Result4_Proj801 = ext_grs_act_add_node(pattern, "Vector_Result4_Proj801", grs_op_Proj, mode_Bu, 61); - ext_grs_node_t *n_Proj815 = ext_grs_act_add_node(pattern, "Proj815", grs_op_Proj, mode_M, 62); - ext_grs_node_t *n_Proj755 = ext_grs_act_add_node(pattern, "Proj755", grs_op_Proj, mode_M, 63); - ext_grs_node_t *n_Load814 = ext_grs_act_add_node(pattern, "Load814", grs_op_Load, mode_T, 64); - ext_grs_node_t *n_Vector_Result3_Proj786 = ext_grs_act_add_node(pattern, "Vector_Result3_Proj786", grs_op_Proj, mode_Bu, 65); - ext_grs_node_t *n_Load754 = ext_grs_act_add_node(pattern, "Load754", grs_op_Load, mode_T, 66); - ext_grs_node_t *n_Const809 = ext_grs_act_add_node(pattern, "Const809", grs_op_Const, mode_Is, 67); - ext_grs_node_t *n_Const779 = ext_grs_act_add_node(pattern, "Const779", grs_op_Const, mode_Is, 68); - ext_grs_node_t *n_Vector_op_Block = ext_grs_act_add_node(pattern, "Vector_op_Block", grs_op_Block, mode_BB, 69); - ext_grs_node_t *n_Load964 = ext_grs_act_add_node(pattern, "Load964", grs_op_Load, mode_T, 70); - ext_grs_node_t *n_Load919 = ext_grs_act_add_node(pattern, "Load919", grs_op_Load, mode_T, 71); - ext_grs_node_t *n_Vector_Result10_Proj891 = ext_grs_act_add_node(pattern, "Vector_Result10_Proj891", grs_op_Proj, mode_Bu, 72); - ext_grs_node_t *n_Const735 = ext_grs_act_add_node(pattern, "Const735", grs_op_Const, mode_Is, 73); - ext_grs_node_t *n_Vector_Result2_Proj771 = ext_grs_act_add_node(pattern, "Vector_Result2_Proj771", grs_op_Proj, mode_Bu, 74); - ext_grs_node_t *n_Const731 = ext_grs_act_add_node(pattern, "Const731", grs_op_Const, mode_Is, 75); - ext_grs_node_t *n_Proj830 = ext_grs_act_add_node(pattern, "Proj830", grs_op_Proj, mode_M, 76); - ext_grs_node_t *n_Proj770 = ext_grs_act_add_node(pattern, "Proj770", grs_op_Proj, mode_M, 77); - ext_grs_node_t *n_Proj965 = ext_grs_act_add_node(pattern, "Proj965", grs_op_Proj, mode_M, 78); - ext_grs_node_t *n_Load769 = ext_grs_act_add_node(pattern, "Load769", grs_op_Load, mode_T, 79); - ext_grs_node_t *n_Vector_Result15_Proj966 = ext_grs_act_add_node(pattern, "Vector_Result15_Proj966", grs_op_Proj, mode_Bu, 80); - ext_grs_node_t *n_Proj920 = ext_grs_act_add_node(pattern, "Proj920", grs_op_Proj, mode_M, 81); - ext_grs_node_t *n_Const839 = ext_grs_act_add_node(pattern, "Const839", grs_op_Const, mode_Is, 82); - - /* The edges of the pattern */ - ext_grs_edge_t *e_pos1_144 = ext_grs_act_add_edge(pattern, "pos1_144", 0, n_Load844, n_Vector_Result7_Proj846, 0); - ext_grs_edge_t *e_pos1_149 = ext_grs_act_add_edge(pattern, "pos1_149", 0, n_Load799, n_Proj800, 1); - ext_grs_edge_t *e_pos1_148 = ext_grs_act_add_edge(pattern, "pos1_148", 0, n_Load874, n_Proj875, 2); - ext_grs_edge_t *e_pos2_178 = ext_grs_act_add_edge(pattern, "pos2_178", 1, n_MultipleAdd5691, n_Load964, 3); - ext_grs_edge_t *e_e133 = ext_grs_act_add_edge(pattern, "e133", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5707, 4); - ext_grs_edge_t *e_e132 = ext_grs_act_add_edge(pattern, "e132", ext_grs_NO_EDGE_POS, n_Const839, n_MultipleAdd5707, 5); - ext_grs_edge_t *e_e134 = ext_grs_act_add_edge(pattern, "e134", ext_grs_NO_EDGE_POS, n_IR_node5724, n_MultipleAdd5707, 6); - ext_grs_edge_t *e_e83 = ext_grs_act_add_edge(pattern, "e83", ext_grs_NO_EDGE_POS, n_Const731, n_MultipleAdd5701, 7); - ext_grs_edge_t *e_pos1_136 = ext_grs_act_add_edge(pattern, "pos1_136", 0, n_Load859, n_Proj860, 8); - ext_grs_edge_t *e_pos1_138 = ext_grs_act_add_edge(pattern, "pos1_138", 0, n_Load784, n_Proj785, 9); - ext_grs_edge_t *e_pos1_139 = ext_grs_act_add_edge(pattern, "pos1_139", 0, n_Load889, n_Vector_Result10_Proj891, 10); - ext_grs_edge_t *e_pos1_130 = ext_grs_act_add_edge(pattern, "pos1_130", 0, n_Load964, n_Proj965, 11); - ext_grs_edge_t *e_e85 = ext_grs_act_add_edge(pattern, "e85", ext_grs_NO_EDGE_POS, n_IR_node5724, n_MultipleAdd5701, 12); - ext_grs_edge_t *e_pos1_131 = ext_grs_act_add_edge(pattern, "pos1_131", 0, n_Load814, n_Vector_Result5_Proj816, 13); - ext_grs_edge_t *e_e84 = ext_grs_act_add_edge(pattern, "e84", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5701, 14); - ext_grs_edge_t *e_e120 = ext_grs_act_add_edge(pattern, "e120", ext_grs_NO_EDGE_POS, n_IR_node5724, n_MultipleAdd5705, 15); - ext_grs_edge_t *e_e124 = ext_grs_act_add_edge(pattern, "e124", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5697, 16); - ext_grs_edge_t *e_e123 = ext_grs_act_add_edge(pattern, "e123", ext_grs_NO_EDGE_POS, n_Const914, n_MultipleAdd5697, 17); - ext_grs_edge_t *e_pos1_89 = ext_grs_act_add_edge(pattern, "pos1_89", 0, n_Load814, n_Proj815, 18); - ext_grs_edge_t *e_pos1_88 = ext_grs_act_add_edge(pattern, "pos1_88", 0, n_Load904, n_Vector_Result11_Proj906, 19); - ext_grs_edge_t *e_e128 = ext_grs_act_add_edge(pattern, "e128", ext_grs_NO_EDGE_POS, n_IR_node5724, n_MultipleAdd5723, 20); - ext_grs_edge_t *e_pos2_107 = ext_grs_act_add_edge(pattern, "pos2_107", 1, n_MultipleAdd5705, n_Load859, 21); - ext_grs_edge_t *e_pos1_86 = ext_grs_act_add_edge(pattern, "pos1_86", 0, n_Load739, n_Vector_Result0_Proj741, 22); - ext_grs_edge_t *e_e127 = ext_grs_act_add_edge(pattern, "e127", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5723, 23); - ext_grs_edge_t *e_e126 = ext_grs_act_add_edge(pattern, "e126", ext_grs_NO_EDGE_POS, n_Const727, n_MultipleAdd5723, 24); - ext_grs_edge_t *e_e125 = ext_grs_act_add_edge(pattern, "e125", ext_grs_NO_EDGE_POS, n_IR_node5724, n_MultipleAdd5697, 25); - ext_grs_edge_t *e_pos2_117 = ext_grs_act_add_edge(pattern, "pos2_117", 1, n_MultipleAdd5695, n_Load934, 26); - ext_grs_edge_t *e_pos2_116 = ext_grs_act_add_edge(pattern, "pos2_116", 1, n_MultipleAdd5717, n_Load769, 27); - ext_grs_edge_t *e_pos1_168 = ext_grs_act_add_edge(pattern, "pos1_168", 0, n_Load964, n_Vector_Result15_Proj966, 28); - ext_grs_edge_t *e_pos1_167 = ext_grs_act_add_edge(pattern, "pos1_167", 0, n_Load949, n_Vector_Result14_Proj951, 29); - ext_grs_edge_t *e_pos1_165 = ext_grs_act_add_edge(pattern, "pos1_165", 0, n_Load904, n_Proj905, 30); - ext_grs_edge_t *e_pos1_160 = ext_grs_act_add_edge(pattern, "pos1_160", 0, n_Load784, n_Vector_Result3_Proj786, 31); - ext_grs_edge_t *e_e111 = ext_grs_act_add_edge(pattern, "e111", ext_grs_NO_EDGE_POS, n_IR_node5724, n_MultipleAdd5719, 32); - ext_grs_edge_t *e_e110 = ext_grs_act_add_edge(pattern, "e110", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5719, 33); - ext_grs_edge_t *e_e113 = ext_grs_act_add_edge(pattern, "e113", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5695, 34); - ext_grs_edge_t *e_e112 = ext_grs_act_add_edge(pattern, "e112", ext_grs_NO_EDGE_POS, n_Const929, n_MultipleAdd5695, 35); - ext_grs_edge_t *e_e119 = ext_grs_act_add_edge(pattern, "e119", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5705, 36); - ext_grs_edge_t *e_e118 = ext_grs_act_add_edge(pattern, "e118", ext_grs_NO_EDGE_POS, n_Const854, n_MultipleAdd5705, 37); - ext_grs_edge_t *e_e114 = ext_grs_act_add_edge(pattern, "e114", ext_grs_NO_EDGE_POS, n_IR_node5724, n_MultipleAdd5695, 38); - ext_grs_edge_t *e_pos1_159 = ext_grs_act_add_edge(pattern, "pos1_159", 0, n_Load874, n_Vector_Result9_Proj876, 39); - ext_grs_edge_t *e_pos1_158 = ext_grs_act_add_edge(pattern, "pos1_158", 0, n_Load889, n_Proj890, 40); - ext_grs_edge_t *e_pos1_152 = ext_grs_act_add_edge(pattern, "pos1_152", 0, n_Load919, n_Vector_Result12_Proj921, 41); - ext_grs_edge_t *e_pos1_150 = ext_grs_act_add_edge(pattern, "pos1_150", 0, n_Load754, n_Vector_Result1_Proj756, 42); - ext_grs_edge_t *e_e102 = ext_grs_act_add_edge(pattern, "e102", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5703, 43); - ext_grs_edge_t *e_e101 = ext_grs_act_add_edge(pattern, "e101", ext_grs_NO_EDGE_POS, n_Const869, n_MultipleAdd5703, 44); - ext_grs_edge_t *e_e109 = ext_grs_act_add_edge(pattern, "e109", ext_grs_NO_EDGE_POS, n_Const735, n_MultipleAdd5719, 45); - ext_grs_edge_t *e_e103 = ext_grs_act_add_edge(pattern, "e103", ext_grs_NO_EDGE_POS, n_IR_node5724, n_MultipleAdd5703, 46); - ext_grs_edge_t *e_e140 = ext_grs_act_add_edge(pattern, "e140", ext_grs_NO_EDGE_POS, n_Const899, n_MultipleAdd5699, 47); - ext_grs_edge_t *e_pos1_108 = ext_grs_act_add_edge(pattern, "pos1_108", 0, n_Load934, n_Vector_Result13_Proj936, 48); - ext_grs_edge_t *e_e141 = ext_grs_act_add_edge(pattern, "e141", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5699, 49); - ext_grs_edge_t *e_e142 = ext_grs_act_add_edge(pattern, "e142", ext_grs_NO_EDGE_POS, n_IR_node5724, n_MultipleAdd5699, 50); - ext_grs_edge_t *e_e145 = ext_grs_act_add_edge(pattern, "e145", ext_grs_NO_EDGE_POS, n_Const824, n_MultipleAdd5709, 51); - ext_grs_edge_t *e_e146 = ext_grs_act_add_edge(pattern, "e146", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5709, 52); - ext_grs_edge_t *e_e147 = ext_grs_act_add_edge(pattern, "e147", ext_grs_NO_EDGE_POS, n_IR_node5724, n_MultipleAdd5709, 53); - ext_grs_edge_t *e_pos2_135 = ext_grs_act_add_edge(pattern, "pos2_135", 1, n_MultipleAdd5713, n_Load799, 54); - ext_grs_edge_t *e_pos2_137 = ext_grs_act_add_edge(pattern, "pos2_137", 1, n_MultipleAdd5711, n_Load814, 55); - ext_grs_edge_t *e_pos1_100 = ext_grs_act_add_edge(pattern, "pos1_100", 0, n_Load859, n_Vector_Result8_Proj861, 56); - ext_grs_edge_t *e_pos1_104 = ext_grs_act_add_edge(pattern, "pos1_104", 0, n_Load829, n_Proj830, 57); - ext_grs_edge_t *e_pos1_105 = ext_grs_act_add_edge(pattern, "pos1_105", 0, n_Load754, n_Proj755, 58); - ext_grs_edge_t *e_pos0_177 = ext_grs_act_add_edge(pattern, "pos0_177", -1, n_Vector_op_Block, n_Load964, 59); - ext_grs_edge_t *e_pos1_106 = ext_grs_act_add_edge(pattern, "pos1_106", 0, n_Load769, n_Vector_Result2_Proj771, 60); - ext_grs_edge_t *e_e156 = ext_grs_act_add_edge(pattern, "e156", ext_grs_NO_EDGE_POS, n_IR_node5724, n_MultipleAdd5711, 61); - ext_grs_edge_t *e_e154 = ext_grs_act_add_edge(pattern, "e154", ext_grs_NO_EDGE_POS, n_Const809, n_MultipleAdd5711, 62); - ext_grs_edge_t *e_pos1_176 = ext_grs_act_add_edge(pattern, "pos1_176", 0, n_Load829, n_Vector_Result6_Proj831, 63); - ext_grs_edge_t *e_e155 = ext_grs_act_add_edge(pattern, "e155", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5711, 64); - ext_grs_edge_t *e_pos2_143 = ext_grs_act_add_edge(pattern, "pos2_143", 1, n_MultipleAdd5701, n_Load889, 65); - ext_grs_edge_t *e_pos1_179 = ext_grs_act_add_edge(pattern, "pos1_179", 0, n_Load919, n_Proj920, 66); - ext_grs_edge_t *e_pos2_153 = ext_grs_act_add_edge(pattern, "pos2_153", 1, n_MultipleAdd5719, n_Load754, 67); - ext_grs_edge_t *e_pos2_151 = ext_grs_act_add_edge(pattern, "pos2_151", 1, n_MultipleAdd5707, n_Load844, 68); - ext_grs_edge_t *e_e162 = ext_grs_act_add_edge(pattern, "e162", ext_grs_NO_EDGE_POS, n_Const794, n_MultipleAdd5713, 69); - ext_grs_edge_t *e_e163 = ext_grs_act_add_edge(pattern, "e163", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5713, 70); - ext_grs_edge_t *e_e164 = ext_grs_act_add_edge(pattern, "e164", ext_grs_NO_EDGE_POS, n_IR_node5724, n_MultipleAdd5713, 71); - ext_grs_edge_t *e_pos2_157 = ext_grs_act_add_edge(pattern, "pos2_157", 1, n_MultipleAdd5697, n_Load919, 72); - ext_grs_edge_t *e_e97 = ext_grs_act_add_edge(pattern, "e97", ext_grs_NO_EDGE_POS, n_IR_node5724, n_MultipleAdd5693, 73); - ext_grs_edge_t *e_pos1_90 = ext_grs_act_add_edge(pattern, "pos1_90", 0, n_Load739, n_Proj740, 74); - ext_grs_edge_t *e_e95 = ext_grs_act_add_edge(pattern, "e95", ext_grs_NO_EDGE_POS, n_Const944, n_MultipleAdd5693, 75); - ext_grs_edge_t *e_pos1_121 = ext_grs_act_add_edge(pattern, "pos1_121", 0, n_Load844, n_Proj845, 76); - ext_grs_edge_t *e_e96 = ext_grs_act_add_edge(pattern, "e96", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5693, 77); - ext_grs_edge_t *e_pos2_94 = ext_grs_act_add_edge(pattern, "pos2_94", 1, n_MultipleAdd5723, n_Load739, 78); - ext_grs_edge_t *e_pos1_98 = ext_grs_act_add_edge(pattern, "pos1_98", 0, n_Load934, n_Proj935, 79); - ext_grs_edge_t *e_e171 = ext_grs_act_add_edge(pattern, "e171", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5715, 80); - ext_grs_edge_t *e_e170 = ext_grs_act_add_edge(pattern, "e170", ext_grs_NO_EDGE_POS, n_Const779, n_MultipleAdd5715, 81); - ext_grs_edge_t *e_pos1_129 = ext_grs_act_add_edge(pattern, "pos1_129", 0, n_Load799, n_Vector_Result4_Proj801, 82); - ext_grs_edge_t *e_pos1_122 = ext_grs_act_add_edge(pattern, "pos1_122", 0, n_Load769, n_Proj770, 83); - ext_grs_edge_t *e_e93 = ext_grs_act_add_edge(pattern, "e93", ext_grs_NO_EDGE_POS, n_IR_node5724, n_MultipleAdd5717, 84); - ext_grs_edge_t *e_e91 = ext_grs_act_add_edge(pattern, "e91", ext_grs_NO_EDGE_POS, n_Const764, n_MultipleAdd5717, 85); - ext_grs_edge_t *e_pos2_99 = ext_grs_act_add_edge(pattern, "pos2_99", 1, n_MultipleAdd5699, n_Load904, 86); - ext_grs_edge_t *e_e92 = ext_grs_act_add_edge(pattern, "e92", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5717, 87); - ext_grs_edge_t *e_pos2_161 = ext_grs_act_add_edge(pattern, "pos2_161", 1, n_MultipleAdd5703, n_Load874, 88); - ext_grs_edge_t *e_e174 = ext_grs_act_add_edge(pattern, "e174", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5691, 89); - ext_grs_edge_t *e_e175 = ext_grs_act_add_edge(pattern, "e175", ext_grs_NO_EDGE_POS, n_IR_node5724, n_MultipleAdd5691, 90); - ext_grs_edge_t *e_e172 = ext_grs_act_add_edge(pattern, "e172", ext_grs_NO_EDGE_POS, n_IR_node5724, n_MultipleAdd5715, 91); - ext_grs_edge_t *e_e173 = ext_grs_act_add_edge(pattern, "e173", ext_grs_NO_EDGE_POS, n_Const959, n_MultipleAdd5691, 92); - ext_grs_edge_t *e_pos2_169 = ext_grs_act_add_edge(pattern, "pos2_169", 1, n_MultipleAdd5693, n_Load949, 93); - ext_grs_edge_t *e_pos2_166 = ext_grs_act_add_edge(pattern, "pos2_166", 1, n_MultipleAdd5715, n_Load784, 94); - ext_grs_edge_t *e_pos2_87 = ext_grs_act_add_edge(pattern, "pos2_87", 1, n_MultipleAdd5709, n_Load829, 95); - ext_grs_edge_t *e_pos1_115 = ext_grs_act_add_edge(pattern, "pos1_115", 0, n_Load949, n_Proj950, 96); - - /* The conditions of the pattern */ - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const944}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34420, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const727}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34423, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5701}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34426, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result0_Proj741}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34429, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj815}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34432, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result11_Proj906}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34435, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj740}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34438, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5717}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34441, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5693}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34444, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const959}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34447, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj935}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34450, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result8_Proj861}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34453, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5703}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34456, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const824}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34459, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj830}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34462, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj755}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34465, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result2_Proj771}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34468, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5719}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34471, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result13_Proj936}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34474, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5695}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34477, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj950}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34480, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const899}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34483, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5705}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34486, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj845}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34489, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj770}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34492, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const854}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34495, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5697}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34498, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5723}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34501, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result4_Proj801}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34504, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj965}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34507, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result5_Proj816}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34510, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const764}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34513, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5707}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34516, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const929}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34519, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj860}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34522, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj785}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34525, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result10_Proj891}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34528, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5699}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34531, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5709}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34534, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result7_Proj846}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34537, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const794}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34540, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj875}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34543, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj800}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34546, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const809}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34549, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result1_Proj756}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34552, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result12_Proj921}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34555, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const731}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34558, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5711}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34561, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj890}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34564, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result9_Proj876}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34567, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const839}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34570, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result3_Proj786}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34573, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5713}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34576, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const735}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34579, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const914}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34582, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj905}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34585, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result14_Proj951}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34588, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result15_Proj966}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34591, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const869}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34594, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5715}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34597, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5691}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34600, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result6_Proj831}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34603, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj920}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34606, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const779}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_34609, pattern, 1, nodes, 0, edges); - } /* if */ - - /* The negative parts of the pattern */ - - - { /* The replacement */ - ext_grs_graph_t *pattern = ext_grs_act_get_replacement(act); - - /* The nodes of the pattern */ - ext_grs_node_t *n_Const764_1356 = ext_grs_act_add_node_to_keep(pattern, "Const764_1356", grs_op_Const, mode_Is, 0, n_Const764); - ext_grs_node_t *n_Const959_1357 = ext_grs_act_add_node_to_keep(pattern, "Const959_1357", grs_op_Const, mode_Is, 1, n_Const959); - ext_grs_node_t *n_Load874_1358 = ext_grs_act_add_node_to_keep(pattern, "Load874_1358", grs_op_Load, mode_T, 2, n_Load874); - ext_grs_node_t *n_VProj101_1359 = ext_grs_act_add_node_to_keep(pattern, "VProj101_1359", grs_op_VProj, mode_Bu, 83, n_Vector_Result1_Proj756); - ext_grs_node_t *n_VProj103_1360 = ext_grs_act_add_node_to_keep(pattern, "VProj103_1360", grs_op_VProj, mode_Bu, 84, n_Vector_Result12_Proj921); - ext_grs_node_t *n_MultipleAdd5723_1361 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5723_1361", grs_op_MultipleAdd, mode_P, 5, n_MultipleAdd5723); - ext_grs_node_t *n_VProj109_1362 = ext_grs_act_add_node_to_keep(pattern, "VProj109_1362", grs_op_VProj, mode_Bu, 85, n_Vector_Result14_Proj951); - ext_grs_node_t *n_Proj935_1363 = ext_grs_act_add_node_to_keep(pattern, "Proj935_1363", grs_op_Proj, mode_M, 7, n_Proj935); - ext_grs_node_t *n_Proj740_1364 = ext_grs_act_add_node_to_keep(pattern, "Proj740_1364", grs_op_Proj, mode_M, 8, n_Proj740); - ext_grs_node_t *n_Const727_1365 = ext_grs_act_add_node_to_keep(pattern, "Const727_1365", grs_op_Const, mode_Is, 9, n_Const727); - ext_grs_node_t *n_MultipleAdd5719_1366 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5719_1366", grs_op_MultipleAdd, mode_P, 10, n_MultipleAdd5719); - ext_grs_node_t *n_Load934_1367 = ext_grs_act_add_node_to_keep(pattern, "Load934_1367", grs_op_Load, mode_T, 11, n_Load934); - ext_grs_node_t *n_MultipleAdd5717_1368 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5717_1368", grs_op_MultipleAdd, mode_P, 12, n_MultipleAdd5717); - ext_grs_node_t *n_Load739_1369 = ext_grs_act_add_node_to_keep(pattern, "Load739_1369", grs_op_Load, mode_T, 13, n_Load739); - ext_grs_node_t *n_Const929_1370 = ext_grs_act_add_node_to_keep(pattern, "Const929_1370", grs_op_Const, mode_Is, 14, n_Const929); - ext_grs_node_t *n_Load829_1371 = ext_grs_act_add_node_to_keep(pattern, "Load829_1371", grs_op_Load, mode_T, 15, n_Load829); - ext_grs_node_t *n_VProj99_1372 = ext_grs_act_add_node_to_keep(pattern, "VProj99_1372", grs_op_VProj, mode_Bu, 86, n_Vector_Result7_Proj846); - ext_grs_node_t *n_Proj875_1373 = ext_grs_act_add_node_to_keep(pattern, "Proj875_1373", grs_op_Proj, mode_M, 17, n_Proj875); - ext_grs_node_t *n_Const869_1374 = ext_grs_act_add_node_to_keep(pattern, "Const869_1374", grs_op_Const, mode_Is, 18, n_Const869); - ext_grs_node_t *n_Arg_0_1375 = ext_grs_act_add_node_to_keep(pattern, "Arg_0_1375", grs_op_VectorBase, mode_ANY, 19, n_Arg_0); - ext_grs_node_t *n_Const854_1376 = ext_grs_act_add_node_to_keep(pattern, "Const854_1376", grs_op_Const, mode_Is, 20, n_Const854); - ext_grs_node_t *n_Load844_1377 = ext_grs_act_add_node_to_keep(pattern, "Load844_1377", grs_op_Load, mode_T, 21, n_Load844); - ext_grs_node_t *n_Const824_1378 = ext_grs_act_add_node_to_keep(pattern, "Const824_1378", grs_op_Const, mode_Is, 22, n_Const824); - ext_grs_node_t *n_Proj890_1379 = ext_grs_act_add_node_to_keep(pattern, "Proj890_1379", grs_op_Proj, mode_M, 23, n_Proj890); - ext_grs_node_t *n_VProj105_1380 = ext_grs_act_add_node_to_keep(pattern, "VProj105_1380", grs_op_VProj, mode_Bu, 87, n_Vector_Result9_Proj876); - ext_grs_node_t *n_MultipleAdd5713_1381 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5713_1381", grs_op_MultipleAdd, mode_P, 24, n_MultipleAdd5713); - ext_grs_node_t *n_MultipleAdd5715_1382 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5715_1382", grs_op_MultipleAdd, mode_P, 26, n_MultipleAdd5715); - ext_grs_node_t *n_Const899_1383 = ext_grs_act_add_node_to_keep(pattern, "Const899_1383", grs_op_Const, mode_Is, 27, n_Const899); - ext_grs_node_t *n_Load889_1384 = ext_grs_act_add_node_to_keep(pattern, "Load889_1384", grs_op_Load, mode_T, 28, n_Load889); - ext_grs_node_t *n_Proj800_1385 = ext_grs_act_add_node_to_keep(pattern, "Proj800_1385", grs_op_Proj, mode_M, 29, n_Proj800); - ext_grs_node_t *n_VProj91_1386 = ext_grs_act_add_node_to_keep(pattern, "VProj91_1386", grs_op_VProj, mode_Bu, 88, n_Vector_Result13_Proj936); - ext_grs_node_t *n_MultipleAdd5711_1387 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5711_1387", grs_op_MultipleAdd, mode_P, 31, n_MultipleAdd5711); - ext_grs_node_t *n_MultipleAdd5693_1388 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5693_1388", grs_op_MultipleAdd, mode_P, 33, n_MultipleAdd5693); - ext_grs_node_t *n_Load949_1389 = ext_grs_act_add_node_to_keep(pattern, "Load949_1389", grs_op_Load, mode_T, 32, n_Load949); - ext_grs_node_t *n_Proj785_1390 = ext_grs_act_add_node_to_keep(pattern, "Proj785_1390", grs_op_Proj, mode_M, 35, n_Proj785); - ext_grs_node_t *n_MultipleAdd5691_1391 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5691_1391", grs_op_MultipleAdd, mode_P, 34, n_MultipleAdd5691); - ext_grs_node_t *n_MultipleAdd5707_1392 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5707_1392", grs_op_MultipleAdd, mode_P, 39, n_MultipleAdd5707); - ext_grs_node_t *n_MultipleAdd5697_1393 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5697_1393", grs_op_MultipleAdd, mode_P, 38, n_MultipleAdd5697); - ext_grs_node_t *n_Load799_1394 = ext_grs_act_add_node_to_keep(pattern, "Load799_1394", grs_op_Load, mode_T, 36, n_Load799); - ext_grs_node_t *n_VProj87_1395 = ext_grs_act_add_node_to_keep(pattern, "VProj87_1395", grs_op_VProj, mode_Bu, 89, n_Vector_Result8_Proj861); - ext_grs_node_t *n_VProj113_1396 = ext_grs_act_add_node_to_keep(pattern, "VProj113_1396", grs_op_VProj, mode_Bu, 90, n_Vector_Result6_Proj831); - ext_grs_node_t *n_Proj845_1397 = ext_grs_act_add_node_to_keep(pattern, "Proj845_1397", grs_op_Proj, mode_M, 45, n_Proj845); - ext_grs_node_t *n_Proj950_1398 = ext_grs_act_add_node_to_keep(pattern, "Proj950_1398", grs_op_Proj, mode_M, 44, n_Proj950); - ext_grs_node_t *n_MultipleAdd5695_1399 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5695_1399", grs_op_MultipleAdd, mode_P, 43, n_MultipleAdd5695); - ext_grs_node_t *n_MultipleAdd5709_1400 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5709_1400", grs_op_MultipleAdd, mode_P, 41, n_MultipleAdd5709); - ext_grs_node_t *n_VProj85_1401 = ext_grs_act_add_node_to_keep(pattern, "VProj85_1401", grs_op_VProj, mode_Bu, 91, n_Vector_Result11_Proj906); - ext_grs_node_t *n_VProj95_1402 = ext_grs_act_add_node_to_keep(pattern, "VProj95_1402", grs_op_VProj, mode_Bu, 92, n_Vector_Result5_Proj816); - ext_grs_node_t *n_Load904_1403 = ext_grs_act_add_node_to_keep(pattern, "Load904_1403", grs_op_Load, mode_T, 47, n_Load904); - ext_grs_node_t *n_Load784_1404 = ext_grs_act_add_node_to_keep(pattern, "Load784_1404", grs_op_Load, mode_T, 48, n_Load784); - ext_grs_node_t *n_MultipleAdd5699_1405 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5699_1405", grs_op_MultipleAdd, mode_P, 50, n_MultipleAdd5699); - ext_grs_node_t *n_Proj905_1406 = ext_grs_act_add_node_to_keep(pattern, "Proj905_1406", grs_op_Proj, mode_M, 49, n_Proj905); - ext_grs_node_t *n_Const794_1407 = ext_grs_act_add_node_to_keep(pattern, "Const794_1407", grs_op_Const, mode_Is, 51, n_Const794); - ext_grs_node_t *n_Const914_1408 = ext_grs_act_add_node_to_keep(pattern, "Const914_1408", grs_op_Const, mode_Is, 52, n_Const914); - ext_grs_node_t *n_Vector_op = ext_grs_act_add_node(pattern, "Vector_op", grs_op_Complex, mode_T, 93); - ext_grs_node_t *n_Load859_1409 = ext_grs_act_add_node_to_keep(pattern, "Load859_1409", grs_op_Load, mode_T, 53, n_Load859); - ext_grs_node_t *n_Const944_1410 = ext_grs_act_add_node_to_keep(pattern, "Const944_1410", grs_op_Const, mode_Is, 54, n_Const944); - ext_grs_node_t *n_Proj860_1411 = ext_grs_act_add_node_to_keep(pattern, "Proj860_1411", grs_op_Proj, mode_M, 55, n_Proj860); - ext_grs_node_t *n_IR_node5724_1412 = ext_grs_act_add_node_to_keep(pattern, "IR_node5724_1412", grs_op_IR_node, mode_ANY, 56, n_IR_node5724); - ext_grs_node_t *n_Vector_op_ProjM = ext_grs_act_add_node(pattern, "Vector_op_ProjM", grs_op_Proj, mode_M, 94); - ext_grs_node_t *n_MultipleAdd5701_1413 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5701_1413", grs_op_MultipleAdd, mode_P, 57, n_MultipleAdd5701); - ext_grs_node_t *n_Vector_op_ProjData = ext_grs_act_add_node(pattern, "Vector_op_ProjData", grs_op_Proj, mode_LLu, 95); - ext_grs_node_t *n_MultipleAdd5705_1414 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5705_1414", grs_op_MultipleAdd, mode_P, 58, n_MultipleAdd5705); - ext_grs_node_t *n_MultipleAdd5703_1415 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5703_1415", grs_op_MultipleAdd, mode_P, 59, n_MultipleAdd5703); - ext_grs_node_t *n_VProj93_1416 = ext_grs_act_add_node_to_keep(pattern, "VProj93_1416", grs_op_VProj, mode_Bu, 96, n_Vector_Result4_Proj801); - ext_grs_node_t *n_Bad83 = ext_grs_act_add_node(pattern, "Bad83", grs_op_Bad, mode_ANY, 97); - ext_grs_node_t *n_VProj83_1417 = ext_grs_act_add_node_to_keep(pattern, "VProj83_1417", grs_op_VProj, mode_Bu, 98, n_Vector_Result0_Proj741); - ext_grs_node_t *n_Proj815_1418 = ext_grs_act_add_node_to_keep(pattern, "Proj815_1418", grs_op_Proj, mode_M, 62, n_Proj815); - ext_grs_node_t *n_Proj755_1419 = ext_grs_act_add_node_to_keep(pattern, "Proj755_1419", grs_op_Proj, mode_M, 63, n_Proj755); - ext_grs_node_t *n_Load814_1420 = ext_grs_act_add_node_to_keep(pattern, "Load814_1420", grs_op_Load, mode_T, 64, n_Load814); - ext_grs_node_t *n_VProj107_1421 = ext_grs_act_add_node_to_keep(pattern, "VProj107_1421", grs_op_VProj, mode_Bu, 99, n_Vector_Result3_Proj786); - ext_grs_node_t *n_Load754_1422 = ext_grs_act_add_node_to_keep(pattern, "Load754_1422", grs_op_Load, mode_T, 66, n_Load754); - ext_grs_node_t *n_Const809_1423 = ext_grs_act_add_node_to_keep(pattern, "Const809_1423", grs_op_Const, mode_Is, 67, n_Const809); - ext_grs_node_t *n_Const779_1424 = ext_grs_act_add_node_to_keep(pattern, "Const779_1424", grs_op_Const, mode_Is, 68, n_Const779); - ext_grs_node_t *n_Vector_op_Block_1425 = ext_grs_act_add_node_to_keep(pattern, "Vector_op_Block_1425", grs_op_Block, mode_BB, 69, n_Vector_op_Block); - ext_grs_node_t *n_Load919_1426 = ext_grs_act_add_node_to_keep(pattern, "Load919_1426", grs_op_Load, mode_T, 71, n_Load919); - ext_grs_node_t *n_Load964_1427 = ext_grs_act_add_node_to_keep(pattern, "Load964_1427", grs_op_Load, mode_T, 70, n_Load964); - ext_grs_node_t *n_VProj97_1428 = ext_grs_act_add_node_to_keep(pattern, "VProj97_1428", grs_op_VProj, mode_Bu, 100, n_Vector_Result10_Proj891); - ext_grs_node_t *n_Const735_1429 = ext_grs_act_add_node_to_keep(pattern, "Const735_1429", grs_op_Const, mode_Is, 73, n_Const735); - ext_grs_node_t *n_VProj89_1430 = ext_grs_act_add_node_to_keep(pattern, "VProj89_1430", grs_op_VProj, mode_Bu, 101, n_Vector_Result2_Proj771); - ext_grs_node_t *n_Const731_1431 = ext_grs_act_add_node_to_keep(pattern, "Const731_1431", grs_op_Const, mode_Is, 75, n_Const731); - ext_grs_node_t *n_Proj965_1432 = ext_grs_act_add_node_to_keep(pattern, "Proj965_1432", grs_op_Proj, mode_M, 78, n_Proj965); - ext_grs_node_t *n_Proj770_1433 = ext_grs_act_add_node_to_keep(pattern, "Proj770_1433", grs_op_Proj, mode_M, 77, n_Proj770); - ext_grs_node_t *n_Proj830_1434 = ext_grs_act_add_node_to_keep(pattern, "Proj830_1434", grs_op_Proj, mode_M, 76, n_Proj830); - ext_grs_node_t *n_Load769_1435 = ext_grs_act_add_node_to_keep(pattern, "Load769_1435", grs_op_Load, mode_T, 79, n_Load769); - ext_grs_node_t *n_VProj111_1436 = ext_grs_act_add_node_to_keep(pattern, "VProj111_1436", grs_op_VProj, mode_Bu, 102, n_Vector_Result15_Proj966); - ext_grs_node_t *n_Proj920_1437 = ext_grs_act_add_node_to_keep(pattern, "Proj920_1437", grs_op_Proj, mode_M, 81, n_Proj920); - ext_grs_node_t *n_Const839_1438 = ext_grs_act_add_node_to_keep(pattern, "Const839_1438", grs_op_Const, mode_Is, 82, n_Const839); - - /* The edges of the pattern */ - ext_grs_edge_t *e_pos1_149_1439 = ext_grs_act_add_edge_to_keep(pattern, "pos1_149_1439", 0, n_Load799_1394, n_Proj800_1385, 1, e_pos1_149); - ext_grs_edge_t *e_pos1_148_1440 = ext_grs_act_add_edge_to_keep(pattern, "pos1_148_1440", 0, n_Load874_1358, n_Proj875_1373, 2, e_pos1_148); - ext_grs_edge_t *e_pos2_178_1441 = ext_grs_act_add_edge_to_keep(pattern, "pos2_178_1441", 1, n_MultipleAdd5691_1391, n_Load964_1427, 3, e_pos2_178); - ext_grs_edge_t *e_e133_1442 = ext_grs_act_add_edge_to_keep(pattern, "e133_1442", ext_grs_NO_EDGE_POS, n_Arg_0_1375, n_MultipleAdd5707_1392, 4, e_e133); - ext_grs_edge_t *e_e132_1443 = ext_grs_act_add_edge_to_keep(pattern, "e132_1443", ext_grs_NO_EDGE_POS, n_Const839_1438, n_MultipleAdd5707_1392, 5, e_e132); - ext_grs_edge_t *e_e134_1444 = ext_grs_act_add_edge_to_keep(pattern, "e134_1444", ext_grs_NO_EDGE_POS, n_IR_node5724_1412, n_MultipleAdd5707_1392, 6, e_e134); - ext_grs_edge_t *e_e83_1445 = ext_grs_act_add_edge_to_keep(pattern, "e83_1445", ext_grs_NO_EDGE_POS, n_Const731_1431, n_MultipleAdd5701_1413, 7, e_e83); - ext_grs_edge_t *e_pos1_136_1446 = ext_grs_act_add_edge_to_keep(pattern, "pos1_136_1446", 0, n_Load859_1409, n_Proj860_1411, 8, e_pos1_136); - ext_grs_edge_t *e_pos1_138_1447 = ext_grs_act_add_edge_to_keep(pattern, "pos1_138_1447", 0, n_Load784_1404, n_Proj785_1390, 9, e_pos1_138); - ext_grs_edge_t *e_pos1_130_1448 = ext_grs_act_add_edge_to_keep(pattern, "pos1_130_1448", 0, n_Load964_1427, n_Proj965_1432, 11, e_pos1_130); - ext_grs_edge_t *e_e85_1449 = ext_grs_act_add_edge_to_keep(pattern, "e85_1449", ext_grs_NO_EDGE_POS, n_IR_node5724_1412, n_MultipleAdd5701_1413, 12, e_e85); - ext_grs_edge_t *e_e84_1450 = ext_grs_act_add_edge_to_keep(pattern, "e84_1450", ext_grs_NO_EDGE_POS, n_Arg_0_1375, n_MultipleAdd5701_1413, 14, e_e84); - ext_grs_edge_t *e_e120_1451 = ext_grs_act_add_edge_to_keep(pattern, "e120_1451", ext_grs_NO_EDGE_POS, n_IR_node5724_1412, n_MultipleAdd5705_1414, 15, e_e120); - ext_grs_edge_t *e_e124_1452 = ext_grs_act_add_edge_to_keep(pattern, "e124_1452", ext_grs_NO_EDGE_POS, n_Arg_0_1375, n_MultipleAdd5697_1393, 16, e_e124); - ext_grs_edge_t *e_e123_1453 = ext_grs_act_add_edge_to_keep(pattern, "e123_1453", ext_grs_NO_EDGE_POS, n_Const914_1408, n_MultipleAdd5697_1393, 17, e_e123); - ext_grs_edge_t *e_pos1_89_1454 = ext_grs_act_add_edge_to_keep(pattern, "pos1_89_1454", 0, n_Load814_1420, n_Proj815_1418, 18, e_pos1_89); - ext_grs_edge_t *e_e128_1455 = ext_grs_act_add_edge_to_keep(pattern, "e128_1455", ext_grs_NO_EDGE_POS, n_IR_node5724_1412, n_MultipleAdd5723_1361, 20, e_e128); - ext_grs_edge_t *e_pos2_107_1456 = ext_grs_act_add_edge_to_keep(pattern, "pos2_107_1456", 1, n_MultipleAdd5705_1414, n_Load859_1409, 21, e_pos2_107); - ext_grs_edge_t *e_e127_1457 = ext_grs_act_add_edge_to_keep(pattern, "e127_1457", ext_grs_NO_EDGE_POS, n_Arg_0_1375, n_MultipleAdd5723_1361, 23, e_e127); - ext_grs_edge_t *e_e126_1458 = ext_grs_act_add_edge_to_keep(pattern, "e126_1458", ext_grs_NO_EDGE_POS, n_Const727_1365, n_MultipleAdd5723_1361, 24, e_e126); - ext_grs_edge_t *e_e125_1459 = ext_grs_act_add_edge_to_keep(pattern, "e125_1459", ext_grs_NO_EDGE_POS, n_IR_node5724_1412, n_MultipleAdd5697_1393, 25, e_e125); - ext_grs_edge_t *e_pos2_184_1460 = ext_grs_act_add_edge(pattern, "pos2_184_1460", 1, n_Bad83, n_Vector_op, 97); - ext_grs_edge_t *e_pos2_117_1461 = ext_grs_act_add_edge_to_keep(pattern, "pos2_117_1461", 1, n_MultipleAdd5695_1399, n_Load934_1367, 26, e_pos2_117); - ext_grs_edge_t *e_pos2_116_1462 = ext_grs_act_add_edge_to_keep(pattern, "pos2_116_1462", 1, n_MultipleAdd5717_1368, n_Load769_1435, 27, e_pos2_116); - ext_grs_edge_t *e_pos1_165_1463 = ext_grs_act_add_edge_to_keep(pattern, "pos1_165_1463", 0, n_Load904_1403, n_Proj905_1406, 30, e_pos1_165); - ext_grs_edge_t *e_e111_1464 = ext_grs_act_add_edge_to_keep(pattern, "e111_1464", ext_grs_NO_EDGE_POS, n_IR_node5724_1412, n_MultipleAdd5719_1366, 32, e_e111); - ext_grs_edge_t *e_e110_1465 = ext_grs_act_add_edge_to_keep(pattern, "e110_1465", ext_grs_NO_EDGE_POS, n_Arg_0_1375, n_MultipleAdd5719_1366, 33, e_e110); - ext_grs_edge_t *e_e113_1466 = ext_grs_act_add_edge_to_keep(pattern, "e113_1466", ext_grs_NO_EDGE_POS, n_Arg_0_1375, n_MultipleAdd5695_1399, 34, e_e113); - ext_grs_edge_t *e_e112_1467 = ext_grs_act_add_edge_to_keep(pattern, "e112_1467", ext_grs_NO_EDGE_POS, n_Const929_1370, n_MultipleAdd5695_1399, 35, e_e112); - ext_grs_edge_t *e_e119_1468 = ext_grs_act_add_edge_to_keep(pattern, "e119_1468", ext_grs_NO_EDGE_POS, n_Arg_0_1375, n_MultipleAdd5705_1414, 36, e_e119); - ext_grs_edge_t *e_e118_1469 = ext_grs_act_add_edge_to_keep(pattern, "e118_1469", ext_grs_NO_EDGE_POS, n_Const854_1376, n_MultipleAdd5705_1414, 37, e_e118); - ext_grs_edge_t *e_e114_1470 = ext_grs_act_add_edge_to_keep(pattern, "e114_1470", ext_grs_NO_EDGE_POS, n_IR_node5724_1412, n_MultipleAdd5695_1399, 38, e_e114); - ext_grs_edge_t *e_pos1_158_1471 = ext_grs_act_add_edge_to_keep(pattern, "pos1_158_1471", 0, n_Load889_1384, n_Proj890_1379, 40, e_pos1_158); - ext_grs_edge_t *e_e102_1472 = ext_grs_act_add_edge_to_keep(pattern, "e102_1472", ext_grs_NO_EDGE_POS, n_Arg_0_1375, n_MultipleAdd5703_1415, 43, e_e102); - ext_grs_edge_t *e_e101_1473 = ext_grs_act_add_edge_to_keep(pattern, "e101_1473", ext_grs_NO_EDGE_POS, n_Const869_1374, n_MultipleAdd5703_1415, 44, e_e101); - ext_grs_edge_t *e_e109_1474 = ext_grs_act_add_edge_to_keep(pattern, "e109_1474", ext_grs_NO_EDGE_POS, n_Const735_1429, n_MultipleAdd5719_1366, 45, e_e109); - ext_grs_edge_t *e_e103_1475 = ext_grs_act_add_edge_to_keep(pattern, "e103_1475", ext_grs_NO_EDGE_POS, n_IR_node5724_1412, n_MultipleAdd5703_1415, 46, e_e103); - ext_grs_edge_t *e_pos1_182_1476 = ext_grs_act_add_edge(pattern, "pos1_182_1476", 0, n_Vector_op, n_Vector_op_ProjData, 98); - ext_grs_edge_t *e_e140_1477 = ext_grs_act_add_edge_to_keep(pattern, "e140_1477", ext_grs_NO_EDGE_POS, n_Const899_1383, n_MultipleAdd5699_1405, 47, e_e140); - ext_grs_edge_t *e_pos1_183_1478 = ext_grs_act_add_edge(pattern, "pos1_183_1478", 0, n_MultipleAdd5723_1361, n_Vector_op, 99); - ext_grs_edge_t *e_e141_1479 = ext_grs_act_add_edge_to_keep(pattern, "e141_1479", ext_grs_NO_EDGE_POS, n_Arg_0_1375, n_MultipleAdd5699_1405, 49, e_e141); - ext_grs_edge_t *e_e142_1480 = ext_grs_act_add_edge_to_keep(pattern, "e142_1480", ext_grs_NO_EDGE_POS, n_IR_node5724_1412, n_MultipleAdd5699_1405, 50, e_e142); - ext_grs_edge_t *e_pos1_187_1481 = ext_grs_act_add_edge(pattern, "pos1_187_1481", 0, n_Vector_op_ProjData, n_VProj83_1417, 100); - ext_grs_edge_t *e_e145_1482 = ext_grs_act_add_edge_to_keep(pattern, "e145_1482", ext_grs_NO_EDGE_POS, n_Const824_1378, n_MultipleAdd5709_1400, 51, e_e145); - ext_grs_edge_t *e_e146_1483 = ext_grs_act_add_edge_to_keep(pattern, "e146_1483", ext_grs_NO_EDGE_POS, n_Arg_0_1375, n_MultipleAdd5709_1400, 52, e_e146); - ext_grs_edge_t *e_pos1_185_1484 = ext_grs_act_add_edge(pattern, "pos1_185_1484", 0, n_Vector_op, n_Vector_op_ProjM, 101); - ext_grs_edge_t *e_pos0_180_1485 = ext_grs_act_add_edge(pattern, "pos0_180_1485", -1, n_Vector_op_Block_1425, n_Vector_op, 102); - ext_grs_edge_t *e_e147_1486 = ext_grs_act_add_edge_to_keep(pattern, "e147_1486", ext_grs_NO_EDGE_POS, n_IR_node5724_1412, n_MultipleAdd5709_1400, 53, e_e147); - ext_grs_edge_t *e_pos2_135_1487 = ext_grs_act_add_edge_to_keep(pattern, "pos2_135_1487", 1, n_MultipleAdd5713_1381, n_Load799_1394, 54, e_pos2_135); - ext_grs_edge_t *e_pos1_188_1488 = ext_grs_act_add_edge(pattern, "pos1_188_1488", 0, n_Vector_op_ProjData, n_VProj85_1401, 103); - ext_grs_edge_t *e_pos1_189_1489 = ext_grs_act_add_edge(pattern, "pos1_189_1489", 0, n_Vector_op_ProjData, n_VProj87_1395, 104); - ext_grs_edge_t *e_pos1_200_1490 = ext_grs_act_add_edge(pattern, "pos1_200_1490", 0, n_Vector_op_ProjData, n_VProj109_1362, 105); - ext_grs_edge_t *e_pos1_202_1491 = ext_grs_act_add_edge(pattern, "pos1_202_1491", 0, n_Vector_op_ProjData, n_VProj113_1396, 106); - ext_grs_edge_t *e_pos2_137_1492 = ext_grs_act_add_edge_to_keep(pattern, "pos2_137_1492", 1, n_MultipleAdd5711_1387, n_Load814_1420, 55, e_pos2_137); - ext_grs_edge_t *e_pos1_201_1493 = ext_grs_act_add_edge(pattern, "pos1_201_1493", 0, n_Vector_op_ProjData, n_VProj111_1436, 107); - ext_grs_edge_t *e_pos1_104_1494 = ext_grs_act_add_edge_to_keep(pattern, "pos1_104_1494", 0, n_Load829_1371, n_Proj830_1434, 57, e_pos1_104); - ext_grs_edge_t *e_pos1_190_1495 = ext_grs_act_add_edge(pattern, "pos1_190_1495", 0, n_Vector_op_ProjData, n_VProj89_1430, 108); - ext_grs_edge_t *e_pos1_105_1496 = ext_grs_act_add_edge_to_keep(pattern, "pos1_105_1496", 0, n_Load754_1422, n_Proj755_1419, 58, e_pos1_105); - ext_grs_edge_t *e_pos0_177_1497 = ext_grs_act_add_edge_to_keep(pattern, "pos0_177_1497", -1, n_Vector_op_Block_1425, n_Load964_1427, 59, e_pos0_177); - ext_grs_edge_t *e_e156_1498 = ext_grs_act_add_edge_to_keep(pattern, "e156_1498", ext_grs_NO_EDGE_POS, n_IR_node5724_1412, n_MultipleAdd5711_1387, 61, e_e156); - ext_grs_edge_t *e_e154_1499 = ext_grs_act_add_edge_to_keep(pattern, "e154_1499", ext_grs_NO_EDGE_POS, n_Const809_1423, n_MultipleAdd5711_1387, 62, e_e154); - ext_grs_edge_t *e_e155_1500 = ext_grs_act_add_edge_to_keep(pattern, "e155_1500", ext_grs_NO_EDGE_POS, n_Arg_0_1375, n_MultipleAdd5711_1387, 64, e_e155); - ext_grs_edge_t *e_pos2_143_1501 = ext_grs_act_add_edge_to_keep(pattern, "pos2_143_1501", 1, n_MultipleAdd5701_1413, n_Load889_1384, 65, e_pos2_143); - ext_grs_edge_t *e_pos1_179_1502 = ext_grs_act_add_edge_to_keep(pattern, "pos1_179_1502", 0, n_Load919_1426, n_Proj920_1437, 66, e_pos1_179); - ext_grs_edge_t *e_pos0_181_1503 = ext_grs_act_add_edge(pattern, "pos0_181_1503", -1, n_Vector_op_Block_1425, n_Vector_op_ProjData, 109); - ext_grs_edge_t *e_pos0_186_1504 = ext_grs_act_add_edge(pattern, "pos0_186_1504", -1, n_Vector_op_Block_1425, n_Vector_op_ProjM, 110); - ext_grs_edge_t *e_pos2_153_1505 = ext_grs_act_add_edge_to_keep(pattern, "pos2_153_1505", 1, n_MultipleAdd5719_1366, n_Load754_1422, 67, e_pos2_153); - ext_grs_edge_t *e_pos2_151_1506 = ext_grs_act_add_edge_to_keep(pattern, "pos2_151_1506", 1, n_MultipleAdd5707_1392, n_Load844_1377, 68, e_pos2_151); - ext_grs_edge_t *e_e162_1507 = ext_grs_act_add_edge_to_keep(pattern, "e162_1507", ext_grs_NO_EDGE_POS, n_Const794_1407, n_MultipleAdd5713_1381, 69, e_e162); - ext_grs_edge_t *e_e163_1508 = ext_grs_act_add_edge_to_keep(pattern, "e163_1508", ext_grs_NO_EDGE_POS, n_Arg_0_1375, n_MultipleAdd5713_1381, 70, e_e163); - ext_grs_edge_t *e_e164_1509 = ext_grs_act_add_edge_to_keep(pattern, "e164_1509", ext_grs_NO_EDGE_POS, n_IR_node5724_1412, n_MultipleAdd5713_1381, 71, e_e164); - ext_grs_edge_t *e_pos2_157_1510 = ext_grs_act_add_edge_to_keep(pattern, "pos2_157_1510", 1, n_MultipleAdd5697_1393, n_Load919_1426, 72, e_pos2_157); - ext_grs_edge_t *e_pos1_90_1511 = ext_grs_act_add_edge_to_keep(pattern, "pos1_90_1511", 0, n_Load739_1369, n_Proj740_1364, 74, e_pos1_90); - ext_grs_edge_t *e_e97_1512 = ext_grs_act_add_edge_to_keep(pattern, "e97_1512", ext_grs_NO_EDGE_POS, n_IR_node5724_1412, n_MultipleAdd5693_1388, 73, e_e97); - ext_grs_edge_t *e_e95_1513 = ext_grs_act_add_edge_to_keep(pattern, "e95_1513", ext_grs_NO_EDGE_POS, n_Const944_1410, n_MultipleAdd5693_1388, 75, e_e95); - ext_grs_edge_t *e_e96_1514 = ext_grs_act_add_edge_to_keep(pattern, "e96_1514", ext_grs_NO_EDGE_POS, n_Arg_0_1375, n_MultipleAdd5693_1388, 77, e_e96); - ext_grs_edge_t *e_pos1_121_1515 = ext_grs_act_add_edge_to_keep(pattern, "pos1_121_1515", 0, n_Load844_1377, n_Proj845_1397, 76, e_pos1_121); - ext_grs_edge_t *e_pos2_94_1516 = ext_grs_act_add_edge_to_keep(pattern, "pos2_94_1516", 1, n_MultipleAdd5723_1361, n_Load739_1369, 78, e_pos2_94); - ext_grs_edge_t *e_pos1_98_1517 = ext_grs_act_add_edge_to_keep(pattern, "pos1_98_1517", 0, n_Load934_1367, n_Proj935_1363, 79, e_pos1_98); - ext_grs_edge_t *e_e171_1518 = ext_grs_act_add_edge_to_keep(pattern, "e171_1518", ext_grs_NO_EDGE_POS, n_Arg_0_1375, n_MultipleAdd5715_1382, 80, e_e171); - ext_grs_edge_t *e_e170_1519 = ext_grs_act_add_edge_to_keep(pattern, "e170_1519", ext_grs_NO_EDGE_POS, n_Const779_1424, n_MultipleAdd5715_1382, 81, e_e170); - ext_grs_edge_t *e_e93_1520 = ext_grs_act_add_edge_to_keep(pattern, "e93_1520", ext_grs_NO_EDGE_POS, n_IR_node5724_1412, n_MultipleAdd5717_1368, 84, e_e93); - ext_grs_edge_t *e_pos1_122_1521 = ext_grs_act_add_edge_to_keep(pattern, "pos1_122_1521", 0, n_Load769_1435, n_Proj770_1433, 83, e_pos1_122); - ext_grs_edge_t *e_e91_1522 = ext_grs_act_add_edge_to_keep(pattern, "e91_1522", ext_grs_NO_EDGE_POS, n_Const764_1356, n_MultipleAdd5717_1368, 85, e_e91); - ext_grs_edge_t *e_e92_1523 = ext_grs_act_add_edge_to_keep(pattern, "e92_1523", ext_grs_NO_EDGE_POS, n_Arg_0_1375, n_MultipleAdd5717_1368, 87, e_e92); - ext_grs_edge_t *e_pos2_99_1524 = ext_grs_act_add_edge_to_keep(pattern, "pos2_99_1524", 1, n_MultipleAdd5699_1405, n_Load904_1403, 86, e_pos2_99); - ext_grs_edge_t *e_pos2_161_1525 = ext_grs_act_add_edge_to_keep(pattern, "pos2_161_1525", 1, n_MultipleAdd5703_1415, n_Load874_1358, 88, e_pos2_161); - ext_grs_edge_t *e_pos1_195_1526 = ext_grs_act_add_edge(pattern, "pos1_195_1526", 0, n_Vector_op_ProjData, n_VProj99_1372, 111); - ext_grs_edge_t *e_pos1_196_1527 = ext_grs_act_add_edge(pattern, "pos1_196_1527", 0, n_Vector_op_ProjData, n_VProj101_1359, 112); - ext_grs_edge_t *e_pos1_197_1528 = ext_grs_act_add_edge(pattern, "pos1_197_1528", 0, n_Vector_op_ProjData, n_VProj103_1360, 113); - ext_grs_edge_t *e_pos1_198_1529 = ext_grs_act_add_edge(pattern, "pos1_198_1529", 0, n_Vector_op_ProjData, n_VProj105_1380, 114); - ext_grs_edge_t *e_e174_1530 = ext_grs_act_add_edge_to_keep(pattern, "e174_1530", ext_grs_NO_EDGE_POS, n_Arg_0_1375, n_MultipleAdd5691_1391, 89, e_e174); - ext_grs_edge_t *e_pos1_191_1531 = ext_grs_act_add_edge(pattern, "pos1_191_1531", 0, n_Vector_op_ProjData, n_VProj91_1386, 115); - ext_grs_edge_t *e_e175_1532 = ext_grs_act_add_edge_to_keep(pattern, "e175_1532", ext_grs_NO_EDGE_POS, n_IR_node5724_1412, n_MultipleAdd5691_1391, 90, e_e175); - ext_grs_edge_t *e_pos1_192_1533 = ext_grs_act_add_edge(pattern, "pos1_192_1533", 0, n_Vector_op_ProjData, n_VProj93_1416, 116); - ext_grs_edge_t *e_e172_1534 = ext_grs_act_add_edge_to_keep(pattern, "e172_1534", ext_grs_NO_EDGE_POS, n_IR_node5724_1412, n_MultipleAdd5715_1382, 91, e_e172); - ext_grs_edge_t *e_pos1_193_1535 = ext_grs_act_add_edge(pattern, "pos1_193_1535", 0, n_Vector_op_ProjData, n_VProj95_1402, 117); - ext_grs_edge_t *e_e173_1536 = ext_grs_act_add_edge_to_keep(pattern, "e173_1536", ext_grs_NO_EDGE_POS, n_Const959_1357, n_MultipleAdd5691_1391, 92, e_e173); - ext_grs_edge_t *e_pos1_194_1537 = ext_grs_act_add_edge(pattern, "pos1_194_1537", 0, n_Vector_op_ProjData, n_VProj97_1428, 118); - ext_grs_edge_t *e_pos2_169_1538 = ext_grs_act_add_edge_to_keep(pattern, "pos2_169_1538", 1, n_MultipleAdd5693_1388, n_Load949_1389, 93, e_pos2_169); - ext_grs_edge_t *e_pos1_199_1539 = ext_grs_act_add_edge(pattern, "pos1_199_1539", 0, n_Vector_op_ProjData, n_VProj107_1421, 119); - ext_grs_edge_t *e_pos2_166_1540 = ext_grs_act_add_edge_to_keep(pattern, "pos2_166_1540", 1, n_MultipleAdd5715_1382, n_Load784_1404, 94, e_pos2_166); - ext_grs_edge_t *e_pos2_87_1541 = ext_grs_act_add_edge_to_keep(pattern, "pos2_87_1541", 1, n_MultipleAdd5709_1400, n_Load829_1371, 95, e_pos2_87); - ext_grs_edge_t *e_pos1_115_1542 = ext_grs_act_add_edge_to_keep(pattern, "pos1_115_1542", 0, n_Load949_1389, n_Proj950_1398, 96, e_pos1_115); - - } /* The replacement */ - - /* Eval functions */ - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_34996); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_34999); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_35002); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_35005); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_35008); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_35011); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_35014); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_35017); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_35020); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_35023); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_35026); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_35029); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_35032); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_35035); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_35038); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_35041); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_35044); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_35047); - } /* The Action */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* vload_16b_variant1 */ - - -/* functions for evaluation of conditions of action vload_16b_variant2 */ -static int grs_cond_func_35913(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[54/* Const944 */])) == 14; -} -static int grs_cond_func_35916(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[9/* Const727 */])) == 0; -} -static int grs_cond_func_35919(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[57/* MultipleAdd5701 */]) == 4; -} -static int grs_cond_func_35922(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[61/* Vector_Result0_Proj741 */]) == 3; -} -static int grs_cond_func_35925(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[63/* Proj815 */]) == 0; -} -static int grs_cond_func_35928(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[42/* Vector_Result11_Proj906 */]) == 3; -} -static int grs_cond_func_35931(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[8/* Proj740 */]) == 0; -} -static int grs_cond_func_35934(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[12/* MultipleAdd5717 */]) == 4; -} -static int grs_cond_func_35937(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[33/* MultipleAdd5693 */]) == 4; -} -static int grs_cond_func_35940(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[1/* Const959 */])) == 15; -} -static int grs_cond_func_35943(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[7/* Proj935 */]) == 0; -} -static int grs_cond_func_35946(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[37/* Vector_Result8_Proj861 */]) == 3; -} -static int grs_cond_func_35949(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[60/* MultipleAdd5703 */]) == 4; -} -static int grs_cond_func_35952(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[22/* Const824 */])) == 6; -} -static int grs_cond_func_35955(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[77/* Proj830 */]) == 0; -} -static int grs_cond_func_35958(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[64/* Proj755 */]) == 0; -} -static int grs_cond_func_35961(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[75/* Vector_Result2_Proj771 */]) == 3; -} -static int grs_cond_func_35964(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[10/* MultipleAdd5719 */]) == 4; -} -static int grs_cond_func_35967(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[30/* Vector_Result13_Proj936 */]) == 3; -} -static int grs_cond_func_35970(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[43/* MultipleAdd5695 */]) == 4; -} -static int grs_cond_func_35973(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[44/* Proj950 */]) == 0; -} -static int grs_cond_func_35976(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[27/* Const899 */])) == 11; -} -static int grs_cond_func_35979(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[58/* MultipleAdd5705 */]) == 4; -} -static int grs_cond_func_35982(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[45/* Proj845 */]) == 0; -} -static int grs_cond_func_35985(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[78/* Proj770 */]) == 0; -} -static int grs_cond_func_35988(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[20/* Const854 */])) == 8; -} -static int grs_cond_func_35991(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[38/* MultipleAdd5697 */]) == 4; -} -static int grs_cond_func_35994(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[5/* MultipleAdd5723 */]) == 4; -} -static int grs_cond_func_35997(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[62/* Vector_Result4_Proj801 */]) == 3; -} -static int grs_cond_func_36000(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[79/* Proj965 */]) == 0; -} -static int grs_cond_func_36003(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[46/* Vector_Result5_Proj816 */]) == 3; -} -static int grs_cond_func_36006(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[0/* Const764 */])) == 2; -} -static int grs_cond_func_36009(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[39/* MultipleAdd5707 */]) == 4; -} -static int grs_cond_func_36012(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[14/* Const929 */])) == 13; -} -static int grs_cond_func_36015(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[55/* Proj860 */]) == 0; -} -static int grs_cond_func_36018(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[35/* Proj785 */]) == 0; -} -static int grs_cond_func_36021(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[73/* Vector_Result10_Proj891 */]) == 3; -} -static int grs_cond_func_36024(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[50/* MultipleAdd5699 */]) == 4; -} -static int grs_cond_func_36027(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[41/* MultipleAdd5709 */]) == 4; -} -static int grs_cond_func_36030(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[16/* Vector_Result7_Proj846 */]) == 3; -} -static int grs_cond_func_36033(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[51/* Const794 */])) == 4; -} -static int grs_cond_func_36036(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[17/* Proj875 */]) == 0; -} -static int grs_cond_func_36039(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[29/* Proj800 */]) == 0; -} -static int grs_cond_func_36042(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[68/* Const809 */])) == 5; -} -static int grs_cond_func_36045(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[3/* Vector_Result1_Proj756 */]) == 3; -} -static int grs_cond_func_36048(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[4/* Vector_Result12_Proj921 */]) == 3; -} -static int grs_cond_func_36051(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[76/* Const731 */])) == 10; -} -static int grs_cond_func_36054(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[31/* MultipleAdd5711 */]) == 4; -} -static int grs_cond_func_36057(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[23/* Proj890 */]) == 0; -} -static int grs_cond_func_36060(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[25/* Vector_Result9_Proj876 */]) == 3; -} -static int grs_cond_func_36063(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[83/* Const839 */])) == 7; -} -static int grs_cond_func_36066(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[66/* Vector_Result3_Proj786 */]) == 3; -} -static int grs_cond_func_36069(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[24/* MultipleAdd5713 */]) == 4; -} -static int grs_cond_func_36072(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[74/* Const735 */])) == 1; -} -static int grs_cond_func_36075(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[52/* Const914 */])) == 12; -} -static int grs_cond_func_36078(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[49/* Proj905 */]) == 0; -} -static int grs_cond_func_36081(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[6/* Vector_Result14_Proj951 */]) == 3; -} -static int grs_cond_func_36084(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[81/* Vector_Result15_Proj966 */]) == 3; -} -static int grs_cond_func_36087(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[18/* Const869 */])) == 9; -} -static int grs_cond_func_36090(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[26/* MultipleAdd5715 */]) == 4; -} -static int grs_cond_func_36093(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[34/* MultipleAdd5691 */]) == 4; -} -static int grs_cond_func_36096(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[40/* Vector_Result6_Proj831 */]) == 3; -} -static int grs_cond_func_36099(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[82/* Proj920 */]) == 0; -} -static int grs_cond_func_36102(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[69/* Const779 */])) == 3; -} - -static void *grs_eval_out_func_36507(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { - set_Proj_proj(rpl_node_map[96/* Vector_op_ProjData */], 0); - return(NULL); -} -static void *grs_eval_out_func_36510(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { - set_Proj_proj(rpl_node_map[95/* Vector_op_ProjM */], 1); - return(NULL); -} -static void *grs_eval_out_func_36513(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[98/* VProj84 */], 0); - return(NULL); -} -static void *grs_eval_out_func_36516(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[92/* VProj86 */], 11); - return(NULL); -} -static void *grs_eval_out_func_36519(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[90/* VProj88 */], 8); - return(NULL); -} -static void *grs_eval_out_func_36522(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[102/* VProj90 */], 2); - return(NULL); -} -static void *grs_eval_out_func_36525(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[89/* VProj92 */], 13); - return(NULL); -} -static void *grs_eval_out_func_36528(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[97/* VProj94 */], 4); - return(NULL); -} -static void *grs_eval_out_func_36531(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[93/* VProj96 */], 5); - return(NULL); -} -static void *grs_eval_out_func_36534(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[101/* VProj98 */], 10); - return(NULL); -} -static void *grs_eval_out_func_36537(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[87/* VProj100 */], 7); - return(NULL); -} -static void *grs_eval_out_func_36540(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[84/* VProj102 */], 1); - return(NULL); -} -static void *grs_eval_out_func_36543(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[85/* VProj104 */], 12); - return(NULL); -} -static void *grs_eval_out_func_36546(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[88/* VProj106 */], 9); - return(NULL); -} -static void *grs_eval_out_func_36549(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[99/* VProj108 */], 3); - return(NULL); -} -static void *grs_eval_out_func_36552(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[86/* VProj110 */], 14); - return(NULL); -} -static void *grs_eval_out_func_36555(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[103/* VProj112 */], 15); - return(NULL); -} -static void *grs_eval_out_func_36558(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[91/* VProj114 */], 6); - return(NULL); -} -/* functions for building the pattern of action vload_16b_variant2 */ -static _inline ext_grs_action_t *grs_action_vload_16b_variant2_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_rule, "vload_16b_variant2"); - int check; - { /* The action */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - ext_grs_node_t *n_Const764 = ext_grs_act_add_node(pattern, "Const764", grs_op_Const, mode_Is, 0); - ext_grs_node_t *n_Const959 = ext_grs_act_add_node(pattern, "Const959", grs_op_Const, mode_Is, 1); - ext_grs_node_t *n_Load874 = ext_grs_act_add_node(pattern, "Load874", grs_op_Load, mode_T, 2); - ext_grs_node_t *n_Vector_Result1_Proj756 = ext_grs_act_add_node(pattern, "Vector_Result1_Proj756", grs_op_Proj, mode_Bu, 3); - ext_grs_node_t *n_Vector_Result12_Proj921 = ext_grs_act_add_node(pattern, "Vector_Result12_Proj921", grs_op_Proj, mode_Bu, 4); - ext_grs_node_t *n_MultipleAdd5723 = ext_grs_act_add_node(pattern, "MultipleAdd5723", grs_op_MultipleAdd, mode_P, 5); - ext_grs_node_t *n_Vector_Result14_Proj951 = ext_grs_act_add_node(pattern, "Vector_Result14_Proj951", grs_op_Proj, mode_Bu, 6); - ext_grs_node_t *n_Proj935 = ext_grs_act_add_node(pattern, "Proj935", grs_op_Proj, mode_M, 7); - ext_grs_node_t *n_Proj740 = ext_grs_act_add_node(pattern, "Proj740", grs_op_Proj, mode_M, 8); - ext_grs_node_t *n_Const727 = ext_grs_act_add_node(pattern, "Const727", grs_op_Const, mode_Is, 9); - ext_grs_node_t *n_MultipleAdd5719 = ext_grs_act_add_node(pattern, "MultipleAdd5719", grs_op_MultipleAdd, mode_P, 10); - ext_grs_node_t *n_Load934 = ext_grs_act_add_node(pattern, "Load934", grs_op_Load, mode_T, 11); - ext_grs_node_t *n_MultipleAdd5717 = ext_grs_act_add_node(pattern, "MultipleAdd5717", grs_op_MultipleAdd, mode_P, 12); - ext_grs_node_t *n_Load739 = ext_grs_act_add_node(pattern, "Load739", grs_op_Load, mode_T, 13); - ext_grs_node_t *n_Const929 = ext_grs_act_add_node(pattern, "Const929", grs_op_Const, mode_Is, 14); - ext_grs_node_t *n_Load829 = ext_grs_act_add_node(pattern, "Load829", grs_op_Load, mode_T, 15); - ext_grs_node_t *n_Vector_Result7_Proj846 = ext_grs_act_add_node(pattern, "Vector_Result7_Proj846", grs_op_Proj, mode_Bu, 16); - ext_grs_node_t *n_Proj875 = ext_grs_act_add_node(pattern, "Proj875", grs_op_Proj, mode_M, 17); - ext_grs_node_t *n_Const869 = ext_grs_act_add_node(pattern, "Const869", grs_op_Const, mode_Is, 18); - ext_grs_node_t *n_Arg_0 = ext_grs_act_add_node(pattern, "Arg_0", grs_op_VectorBase, mode_ANY, 19); - ext_grs_node_t *n_Const854 = ext_grs_act_add_node(pattern, "Const854", grs_op_Const, mode_Is, 20); - ext_grs_node_t *n_Load844 = ext_grs_act_add_node(pattern, "Load844", grs_op_Load, mode_T, 21); - ext_grs_node_t *n_Const824 = ext_grs_act_add_node(pattern, "Const824", grs_op_Const, mode_Is, 22); - ext_grs_node_t *n_Proj890 = ext_grs_act_add_node(pattern, "Proj890", grs_op_Proj, mode_M, 23); - ext_grs_node_t *n_MultipleAdd5713 = ext_grs_act_add_node(pattern, "MultipleAdd5713", grs_op_MultipleAdd, mode_P, 24); - ext_grs_node_t *n_Vector_Result9_Proj876 = ext_grs_act_add_node(pattern, "Vector_Result9_Proj876", grs_op_Proj, mode_Bu, 25); - ext_grs_node_t *n_MultipleAdd5715 = ext_grs_act_add_node(pattern, "MultipleAdd5715", grs_op_MultipleAdd, mode_P, 26); - ext_grs_node_t *n_Const899 = ext_grs_act_add_node(pattern, "Const899", grs_op_Const, mode_Is, 27); - ext_grs_node_t *n_Load889 = ext_grs_act_add_node(pattern, "Load889", grs_op_Load, mode_T, 28); - ext_grs_node_t *n_Proj800 = ext_grs_act_add_node(pattern, "Proj800", grs_op_Proj, mode_M, 29); - ext_grs_node_t *n_Vector_Result13_Proj936 = ext_grs_act_add_node(pattern, "Vector_Result13_Proj936", grs_op_Proj, mode_Bu, 30); - ext_grs_node_t *n_MultipleAdd5711 = ext_grs_act_add_node(pattern, "MultipleAdd5711", grs_op_MultipleAdd, mode_P, 31); - ext_grs_node_t *n_Load949 = ext_grs_act_add_node(pattern, "Load949", grs_op_Load, mode_T, 32); - ext_grs_node_t *n_MultipleAdd5693 = ext_grs_act_add_node(pattern, "MultipleAdd5693", grs_op_MultipleAdd, mode_P, 33); - ext_grs_node_t *n_MultipleAdd5691 = ext_grs_act_add_node(pattern, "MultipleAdd5691", grs_op_MultipleAdd, mode_P, 34); - ext_grs_node_t *n_Proj785 = ext_grs_act_add_node(pattern, "Proj785", grs_op_Proj, mode_M, 35); - ext_grs_node_t *n_Load799 = ext_grs_act_add_node(pattern, "Load799", grs_op_Load, mode_T, 36); - ext_grs_node_t *n_Vector_Result8_Proj861 = ext_grs_act_add_node(pattern, "Vector_Result8_Proj861", grs_op_Proj, mode_Bu, 37); - ext_grs_node_t *n_MultipleAdd5697 = ext_grs_act_add_node(pattern, "MultipleAdd5697", grs_op_MultipleAdd, mode_P, 38); - ext_grs_node_t *n_MultipleAdd5707 = ext_grs_act_add_node(pattern, "MultipleAdd5707", grs_op_MultipleAdd, mode_P, 39); - ext_grs_node_t *n_Vector_Result6_Proj831 = ext_grs_act_add_node(pattern, "Vector_Result6_Proj831", grs_op_Proj, mode_Bu, 40); - ext_grs_node_t *n_MultipleAdd5709 = ext_grs_act_add_node(pattern, "MultipleAdd5709", grs_op_MultipleAdd, mode_P, 41); - ext_grs_node_t *n_Vector_Result11_Proj906 = ext_grs_act_add_node(pattern, "Vector_Result11_Proj906", grs_op_Proj, mode_Bu, 42); - ext_grs_node_t *n_MultipleAdd5695 = ext_grs_act_add_node(pattern, "MultipleAdd5695", grs_op_MultipleAdd, mode_P, 43); - ext_grs_node_t *n_Proj950 = ext_grs_act_add_node(pattern, "Proj950", grs_op_Proj, mode_M, 44); - ext_grs_node_t *n_Proj845 = ext_grs_act_add_node(pattern, "Proj845", grs_op_Proj, mode_M, 45); - ext_grs_node_t *n_Vector_Result5_Proj816 = ext_grs_act_add_node(pattern, "Vector_Result5_Proj816", grs_op_Proj, mode_Bu, 46); - ext_grs_node_t *n_Load904 = ext_grs_act_add_node(pattern, "Load904", grs_op_Load, mode_T, 47); - ext_grs_node_t *n_Load784 = ext_grs_act_add_node(pattern, "Load784", grs_op_Load, mode_T, 48); - ext_grs_node_t *n_Proj905 = ext_grs_act_add_node(pattern, "Proj905", grs_op_Proj, mode_M, 49); - ext_grs_node_t *n_MultipleAdd5699 = ext_grs_act_add_node(pattern, "MultipleAdd5699", grs_op_MultipleAdd, mode_P, 50); - ext_grs_node_t *n_Const794 = ext_grs_act_add_node(pattern, "Const794", grs_op_Const, mode_Is, 51); - ext_grs_node_t *n_Const914 = ext_grs_act_add_node(pattern, "Const914", grs_op_Const, mode_Is, 52); - ext_grs_node_t *n_Load859 = ext_grs_act_add_node(pattern, "Load859", grs_op_Load, mode_T, 53); - ext_grs_node_t *n_Const944 = ext_grs_act_add_node(pattern, "Const944", grs_op_Const, mode_Is, 54); - ext_grs_node_t *n_Proj860 = ext_grs_act_add_node(pattern, "Proj860", grs_op_Proj, mode_M, 55); - ext_grs_node_t *n_IR_node5724 = ext_grs_act_add_node(pattern, "IR_node5724", grs_op_IR_node, mode_ANY, 56); - ext_grs_node_t *n_MultipleAdd5701 = ext_grs_act_add_node(pattern, "MultipleAdd5701", grs_op_MultipleAdd, mode_P, 57); - ext_grs_node_t *n_MultipleAdd5705 = ext_grs_act_add_node(pattern, "MultipleAdd5705", grs_op_MultipleAdd, mode_P, 58); - ext_grs_node_t *n_IR_node5725 = ext_grs_act_add_node(pattern, "IR_node5725", grs_op_IR_node, mode_ANY, 59); - ext_grs_node_t *n_MultipleAdd5703 = ext_grs_act_add_node(pattern, "MultipleAdd5703", grs_op_MultipleAdd, mode_P, 60); - ext_grs_node_t *n_Vector_Result0_Proj741 = ext_grs_act_add_node(pattern, "Vector_Result0_Proj741", grs_op_Proj, mode_Bu, 61); - ext_grs_node_t *n_Vector_Result4_Proj801 = ext_grs_act_add_node(pattern, "Vector_Result4_Proj801", grs_op_Proj, mode_Bu, 62); - ext_grs_node_t *n_Proj815 = ext_grs_act_add_node(pattern, "Proj815", grs_op_Proj, mode_M, 63); - ext_grs_node_t *n_Proj755 = ext_grs_act_add_node(pattern, "Proj755", grs_op_Proj, mode_M, 64); - ext_grs_node_t *n_Load814 = ext_grs_act_add_node(pattern, "Load814", grs_op_Load, mode_T, 65); - ext_grs_node_t *n_Vector_Result3_Proj786 = ext_grs_act_add_node(pattern, "Vector_Result3_Proj786", grs_op_Proj, mode_Bu, 66); - ext_grs_node_t *n_Load754 = ext_grs_act_add_node(pattern, "Load754", grs_op_Load, mode_T, 67); - ext_grs_node_t *n_Const809 = ext_grs_act_add_node(pattern, "Const809", grs_op_Const, mode_Is, 68); - ext_grs_node_t *n_Const779 = ext_grs_act_add_node(pattern, "Const779", grs_op_Const, mode_Is, 69); - ext_grs_node_t *n_Vector_op_Block = ext_grs_act_add_node(pattern, "Vector_op_Block", grs_op_Block, mode_BB, 70); - ext_grs_node_t *n_Load964 = ext_grs_act_add_node(pattern, "Load964", grs_op_Load, mode_T, 71); - ext_grs_node_t *n_Load919 = ext_grs_act_add_node(pattern, "Load919", grs_op_Load, mode_T, 72); - ext_grs_node_t *n_Vector_Result10_Proj891 = ext_grs_act_add_node(pattern, "Vector_Result10_Proj891", grs_op_Proj, mode_Bu, 73); - ext_grs_node_t *n_Const735 = ext_grs_act_add_node(pattern, "Const735", grs_op_Const, mode_Is, 74); - ext_grs_node_t *n_Vector_Result2_Proj771 = ext_grs_act_add_node(pattern, "Vector_Result2_Proj771", grs_op_Proj, mode_Bu, 75); - ext_grs_node_t *n_Const731 = ext_grs_act_add_node(pattern, "Const731", grs_op_Const, mode_Is, 76); - ext_grs_node_t *n_Proj830 = ext_grs_act_add_node(pattern, "Proj830", grs_op_Proj, mode_M, 77); - ext_grs_node_t *n_Proj770 = ext_grs_act_add_node(pattern, "Proj770", grs_op_Proj, mode_M, 78); - ext_grs_node_t *n_Proj965 = ext_grs_act_add_node(pattern, "Proj965", grs_op_Proj, mode_M, 79); - ext_grs_node_t *n_Load769 = ext_grs_act_add_node(pattern, "Load769", grs_op_Load, mode_T, 80); - ext_grs_node_t *n_Vector_Result15_Proj966 = ext_grs_act_add_node(pattern, "Vector_Result15_Proj966", grs_op_Proj, mode_Bu, 81); - ext_grs_node_t *n_Proj920 = ext_grs_act_add_node(pattern, "Proj920", grs_op_Proj, mode_M, 82); - ext_grs_node_t *n_Const839 = ext_grs_act_add_node(pattern, "Const839", grs_op_Const, mode_Is, 83); - - /* The edges of the pattern */ - ext_grs_edge_t *e_pos1_147 = ext_grs_act_add_edge(pattern, "pos1_147", 0, n_Load859, n_Proj860, 0); - ext_grs_edge_t *e_pos1_149 = ext_grs_act_add_edge(pattern, "pos1_149", 0, n_Load784, n_Proj785, 1); - ext_grs_edge_t *e_pos1_141 = ext_grs_act_add_edge(pattern, "pos1_141", 0, n_Load814, n_Vector_Result5_Proj816, 2); - ext_grs_edge_t *e_pos1_140 = ext_grs_act_add_edge(pattern, "pos1_140", 0, n_Load964, n_Proj965, 3); - ext_grs_edge_t *e_e131 = ext_grs_act_add_edge(pattern, "e131", ext_grs_NO_EDGE_POS, n_Const914, n_MultipleAdd5697, 4); - ext_grs_edge_t *e_e133 = ext_grs_act_add_edge(pattern, "e133", ext_grs_NO_EDGE_POS, n_IR_node5724, n_MultipleAdd5697, 5); - ext_grs_edge_t *e_e132 = ext_grs_act_add_edge(pattern, "e132", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5697, 6); - ext_grs_edge_t *e_e135 = ext_grs_act_add_edge(pattern, "e135", ext_grs_NO_EDGE_POS, n_Const727, n_MultipleAdd5723, 7); - ext_grs_edge_t *e_e134 = ext_grs_act_add_edge(pattern, "e134", ext_grs_NO_EDGE_POS, n_IR_node5725, n_MultipleAdd5697, 8); - ext_grs_edge_t *e_e137 = ext_grs_act_add_edge(pattern, "e137", ext_grs_NO_EDGE_POS, n_IR_node5724, n_MultipleAdd5723, 9); - ext_grs_edge_t *e_e136 = ext_grs_act_add_edge(pattern, "e136", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5723, 10); - ext_grs_edge_t *e_pos2_171 = ext_grs_act_add_edge(pattern, "pos2_171", 1, n_MultipleAdd5697, n_Load919, 11); - ext_grs_edge_t *e_e138 = ext_grs_act_add_edge(pattern, "e138", ext_grs_NO_EDGE_POS, n_IR_node5725, n_MultipleAdd5723, 12); - ext_grs_edge_t *e_pos2_175 = ext_grs_act_add_edge(pattern, "pos2_175", 1, n_MultipleAdd5703, n_Load874, 13); - ext_grs_edge_t *e_pos1_139 = ext_grs_act_add_edge(pattern, "pos1_139", 0, n_Load799, n_Vector_Result4_Proj801, 14); - ext_grs_edge_t *e_pos1_130 = ext_grs_act_add_edge(pattern, "pos1_130", 0, n_Load769, n_Proj770, 15); - ext_grs_edge_t *e_e120 = ext_grs_act_add_edge(pattern, "e120", ext_grs_NO_EDGE_POS, n_IR_node5724, n_MultipleAdd5695, 16); - ext_grs_edge_t *e_pos1_88 = ext_grs_act_add_edge(pattern, "pos1_88", 0, n_Load739, n_Vector_Result0_Proj741, 17); - ext_grs_edge_t *e_e121 = ext_grs_act_add_edge(pattern, "e121", ext_grs_NO_EDGE_POS, n_IR_node5725, n_MultipleAdd5695, 18); - ext_grs_edge_t *e_e128 = ext_grs_act_add_edge(pattern, "e128", ext_grs_NO_EDGE_POS, n_IR_node5725, n_MultipleAdd5705, 19); - ext_grs_edge_t *e_e127 = ext_grs_act_add_edge(pattern, "e127", ext_grs_NO_EDGE_POS, n_IR_node5724, n_MultipleAdd5705, 20); - ext_grs_edge_t *e_pos2_181 = ext_grs_act_add_edge(pattern, "pos2_181", 1, n_MultipleAdd5715, n_Load784, 21); - ext_grs_edge_t *e_e126 = ext_grs_act_add_edge(pattern, "e126", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5705, 22); - ext_grs_edge_t *e_e125 = ext_grs_act_add_edge(pattern, "e125", ext_grs_NO_EDGE_POS, n_Const854, n_MultipleAdd5705, 23); - ext_grs_edge_t *e_pos2_184 = ext_grs_act_add_edge(pattern, "pos2_184", 1, n_MultipleAdd5693, n_Load949, 24); - ext_grs_edge_t *e_pos1_165 = ext_grs_act_add_edge(pattern, "pos1_165", 0, n_Load919, n_Vector_Result12_Proj921, 25); - ext_grs_edge_t *e_pos1_163 = ext_grs_act_add_edge(pattern, "pos1_163", 0, n_Load754, n_Vector_Result1_Proj756, 26); - ext_grs_edge_t *e_pos1_162 = ext_grs_act_add_edge(pattern, "pos1_162", 0, n_Load799, n_Proj800, 27); - ext_grs_edge_t *e_pos1_161 = ext_grs_act_add_edge(pattern, "pos1_161", 0, n_Load874, n_Proj875, 28); - ext_grs_edge_t *e_pos2_195 = ext_grs_act_add_edge(pattern, "pos2_195", 1, n_MultipleAdd5691, n_Load964, 29); - ext_grs_edge_t *e_e119 = ext_grs_act_add_edge(pattern, "e119", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5695, 30); - ext_grs_edge_t *e_e118 = ext_grs_act_add_edge(pattern, "e118", ext_grs_NO_EDGE_POS, n_Const929, n_MultipleAdd5695, 31); - ext_grs_edge_t *e_e115 = ext_grs_act_add_edge(pattern, "e115", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5719, 32); - ext_grs_edge_t *e_e114 = ext_grs_act_add_edge(pattern, "e114", ext_grs_NO_EDGE_POS, n_Const735, n_MultipleAdd5719, 33); - ext_grs_edge_t *e_e117 = ext_grs_act_add_edge(pattern, "e117", ext_grs_NO_EDGE_POS, n_IR_node5725, n_MultipleAdd5719, 34); - ext_grs_edge_t *e_e116 = ext_grs_act_add_edge(pattern, "e116", ext_grs_NO_EDGE_POS, n_IR_node5724, n_MultipleAdd5719, 35); - ext_grs_edge_t *e_pos1_156 = ext_grs_act_add_edge(pattern, "pos1_156", 0, n_Load844, n_Vector_Result7_Proj846, 36); - ext_grs_edge_t *e_pos1_150 = ext_grs_act_add_edge(pattern, "pos1_150", 0, n_Load889, n_Vector_Result10_Proj891, 37); - ext_grs_edge_t *e_e101 = ext_grs_act_add_edge(pattern, "e101", ext_grs_NO_EDGE_POS, n_IR_node5725, n_MultipleAdd5693, 38); - ext_grs_edge_t *e_e100 = ext_grs_act_add_edge(pattern, "e100", ext_grs_NO_EDGE_POS, n_IR_node5724, n_MultipleAdd5693, 39); - ext_grs_edge_t *e_e108 = ext_grs_act_add_edge(pattern, "e108", ext_grs_NO_EDGE_POS, n_IR_node5725, n_MultipleAdd5703, 40); - ext_grs_edge_t *e_e107 = ext_grs_act_add_edge(pattern, "e107", ext_grs_NO_EDGE_POS, n_IR_node5724, n_MultipleAdd5703, 41); - ext_grs_edge_t *e_e106 = ext_grs_act_add_edge(pattern, "e106", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5703, 42); - ext_grs_edge_t *e_e105 = ext_grs_act_add_edge(pattern, "e105", ext_grs_NO_EDGE_POS, n_Const869, n_MultipleAdd5703, 43); - ext_grs_edge_t *e_pos1_182 = ext_grs_act_add_edge(pattern, "pos1_182", 0, n_Load949, n_Vector_Result14_Proj951, 44); - ext_grs_edge_t *e_pos1_183 = ext_grs_act_add_edge(pattern, "pos1_183", 0, n_Load964, n_Vector_Result15_Proj966, 45); - ext_grs_edge_t *e_pos1_180 = ext_grs_act_add_edge(pattern, "pos1_180", 0, n_Load904, n_Proj905, 46); - ext_grs_edge_t *e_pos1_172 = ext_grs_act_add_edge(pattern, "pos1_172", 0, n_Load889, n_Proj890, 47); - ext_grs_edge_t *e_pos1_173 = ext_grs_act_add_edge(pattern, "pos1_173", 0, n_Load874, n_Vector_Result9_Proj876, 48); - ext_grs_edge_t *e_pos1_174 = ext_grs_act_add_edge(pattern, "pos1_174", 0, n_Load784, n_Vector_Result3_Proj786, 49); - ext_grs_edge_t *e_pos1_90 = ext_grs_act_add_edge(pattern, "pos1_90", 0, n_Load904, n_Vector_Result11_Proj906, 50); - ext_grs_edge_t *e_pos1_91 = ext_grs_act_add_edge(pattern, "pos1_91", 0, n_Load814, n_Proj815, 51); - ext_grs_edge_t *e_pos2_97 = ext_grs_act_add_edge(pattern, "pos2_97", 1, n_MultipleAdd5723, n_Load739, 52); - ext_grs_edge_t *e_e98 = ext_grs_act_add_edge(pattern, "e98", ext_grs_NO_EDGE_POS, n_Const944, n_MultipleAdd5693, 53); - ext_grs_edge_t *e_e95 = ext_grs_act_add_edge(pattern, "e95", ext_grs_NO_EDGE_POS, n_IR_node5724, n_MultipleAdd5717, 54); - ext_grs_edge_t *e_pos1_92 = ext_grs_act_add_edge(pattern, "pos1_92", 0, n_Load739, n_Proj740, 55); - ext_grs_edge_t *e_e96 = ext_grs_act_add_edge(pattern, "e96", ext_grs_NO_EDGE_POS, n_IR_node5725, n_MultipleAdd5717, 56); - ext_grs_edge_t *e_e99 = ext_grs_act_add_edge(pattern, "e99", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5693, 57); - ext_grs_edge_t *e_e93 = ext_grs_act_add_edge(pattern, "e93", ext_grs_NO_EDGE_POS, n_Const764, n_MultipleAdd5717, 58); - ext_grs_edge_t *e_e94 = ext_grs_act_add_edge(pattern, "e94", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5717, 59); - ext_grs_edge_t *e_pos0_194 = ext_grs_act_add_edge(pattern, "pos0_194", -1, n_Vector_op_Block, n_Load964, 60); - ext_grs_edge_t *e_pos1_196 = ext_grs_act_add_edge(pattern, "pos1_196", 0, n_Load919, n_Proj920, 61); - ext_grs_edge_t *e_pos1_193 = ext_grs_act_add_edge(pattern, "pos1_193", 0, n_Load829, n_Vector_Result6_Proj831, 62); - ext_grs_edge_t *e_pos2_89 = ext_grs_act_add_edge(pattern, "pos2_89", 1, n_MultipleAdd5709, n_Load829, 63); - ext_grs_edge_t *e_e186 = ext_grs_act_add_edge(pattern, "e186", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5715, 64); - ext_grs_edge_t *e_e185 = ext_grs_act_add_edge(pattern, "e185", ext_grs_NO_EDGE_POS, n_Const779, n_MultipleAdd5715, 65); - ext_grs_edge_t *e_e188 = ext_grs_act_add_edge(pattern, "e188", ext_grs_NO_EDGE_POS, n_IR_node5725, n_MultipleAdd5715, 66); - ext_grs_edge_t *e_e187 = ext_grs_act_add_edge(pattern, "e187", ext_grs_NO_EDGE_POS, n_IR_node5724, n_MultipleAdd5715, 67); - ext_grs_edge_t *e_e189 = ext_grs_act_add_edge(pattern, "e189", ext_grs_NO_EDGE_POS, n_Const959, n_MultipleAdd5691, 68); - ext_grs_edge_t *e_e190 = ext_grs_act_add_edge(pattern, "e190", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5691, 69); - ext_grs_edge_t *e_e191 = ext_grs_act_add_edge(pattern, "e191", ext_grs_NO_EDGE_POS, n_IR_node5724, n_MultipleAdd5691, 70); - ext_grs_edge_t *e_e192 = ext_grs_act_add_edge(pattern, "e192", ext_grs_NO_EDGE_POS, n_IR_node5725, n_MultipleAdd5691, 71); - ext_grs_edge_t *e_pos2_103 = ext_grs_act_add_edge(pattern, "pos2_103", 1, n_MultipleAdd5699, n_Load904, 72); - ext_grs_edge_t *e_e87 = ext_grs_act_add_edge(pattern, "e87", ext_grs_NO_EDGE_POS, n_IR_node5725, n_MultipleAdd5701, 73); - ext_grs_edge_t *e_e86 = ext_grs_act_add_edge(pattern, "e86", ext_grs_NO_EDGE_POS, n_IR_node5724, n_MultipleAdd5701, 74); - ext_grs_edge_t *e_e85 = ext_grs_act_add_edge(pattern, "e85", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5701, 75); - ext_grs_edge_t *e_e84 = ext_grs_act_add_edge(pattern, "e84", ext_grs_NO_EDGE_POS, n_Const731, n_MultipleAdd5701, 76); - ext_grs_edge_t *e_pos2_112 = ext_grs_act_add_edge(pattern, "pos2_112", 1, n_MultipleAdd5705, n_Load859, 77); - ext_grs_edge_t *e_pos2_124 = ext_grs_act_add_edge(pattern, "pos2_124", 1, n_MultipleAdd5695, n_Load934, 78); - ext_grs_edge_t *e_pos2_123 = ext_grs_act_add_edge(pattern, "pos2_123", 1, n_MultipleAdd5717, n_Load769, 79); - ext_grs_edge_t *e_pos1_109 = ext_grs_act_add_edge(pattern, "pos1_109", 0, n_Load829, n_Proj830, 80); - ext_grs_edge_t *e_e142 = ext_grs_act_add_edge(pattern, "e142", ext_grs_NO_EDGE_POS, n_Const839, n_MultipleAdd5707, 81); - ext_grs_edge_t *e_e143 = ext_grs_act_add_edge(pattern, "e143", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5707, 82); - ext_grs_edge_t *e_e144 = ext_grs_act_add_edge(pattern, "e144", ext_grs_NO_EDGE_POS, n_IR_node5724, n_MultipleAdd5707, 83); - ext_grs_edge_t *e_e145 = ext_grs_act_add_edge(pattern, "e145", ext_grs_NO_EDGE_POS, n_IR_node5725, n_MultipleAdd5707, 84); - ext_grs_edge_t *e_pos1_102 = ext_grs_act_add_edge(pattern, "pos1_102", 0, n_Load934, n_Proj935, 85); - ext_grs_edge_t *e_pos1_104 = ext_grs_act_add_edge(pattern, "pos1_104", 0, n_Load859, n_Vector_Result8_Proj861, 86); - ext_grs_edge_t *e_e152 = ext_grs_act_add_edge(pattern, "e152", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5699, 87); - ext_grs_edge_t *e_e153 = ext_grs_act_add_edge(pattern, "e153", ext_grs_NO_EDGE_POS, n_IR_node5724, n_MultipleAdd5699, 88); - ext_grs_edge_t *e_e151 = ext_grs_act_add_edge(pattern, "e151", ext_grs_NO_EDGE_POS, n_Const899, n_MultipleAdd5699, 89); - ext_grs_edge_t *e_e157 = ext_grs_act_add_edge(pattern, "e157", ext_grs_NO_EDGE_POS, n_Const824, n_MultipleAdd5709, 90); - ext_grs_edge_t *e_e154 = ext_grs_act_add_edge(pattern, "e154", ext_grs_NO_EDGE_POS, n_IR_node5725, n_MultipleAdd5699, 91); - ext_grs_edge_t *e_e158 = ext_grs_act_add_edge(pattern, "e158", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5709, 92); - ext_grs_edge_t *e_pos2_146 = ext_grs_act_add_edge(pattern, "pos2_146", 1, n_MultipleAdd5713, n_Load799, 93); - ext_grs_edge_t *e_e159 = ext_grs_act_add_edge(pattern, "e159", ext_grs_NO_EDGE_POS, n_IR_node5724, n_MultipleAdd5709, 94); - ext_grs_edge_t *e_pos2_148 = ext_grs_act_add_edge(pattern, "pos2_148", 1, n_MultipleAdd5711, n_Load814, 95); - ext_grs_edge_t *e_e160 = ext_grs_act_add_edge(pattern, "e160", ext_grs_NO_EDGE_POS, n_IR_node5725, n_MultipleAdd5709, 96); - ext_grs_edge_t *e_e167 = ext_grs_act_add_edge(pattern, "e167", ext_grs_NO_EDGE_POS, n_Const809, n_MultipleAdd5711, 97); - ext_grs_edge_t *e_e168 = ext_grs_act_add_edge(pattern, "e168", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5711, 98); - ext_grs_edge_t *e_e169 = ext_grs_act_add_edge(pattern, "e169", ext_grs_NO_EDGE_POS, n_IR_node5724, n_MultipleAdd5711, 99); - ext_grs_edge_t *e_pos2_155 = ext_grs_act_add_edge(pattern, "pos2_155", 1, n_MultipleAdd5701, n_Load889, 100); - ext_grs_edge_t *e_pos1_129 = ext_grs_act_add_edge(pattern, "pos1_129", 0, n_Load844, n_Proj845, 101); - ext_grs_edge_t *e_e170 = ext_grs_act_add_edge(pattern, "e170", ext_grs_NO_EDGE_POS, n_IR_node5725, n_MultipleAdd5711, 102); - ext_grs_edge_t *e_pos1_122 = ext_grs_act_add_edge(pattern, "pos1_122", 0, n_Load949, n_Proj950, 103); - ext_grs_edge_t *e_e178 = ext_grs_act_add_edge(pattern, "e178", ext_grs_NO_EDGE_POS, n_IR_node5724, n_MultipleAdd5713, 104); - ext_grs_edge_t *e_e179 = ext_grs_act_add_edge(pattern, "e179", ext_grs_NO_EDGE_POS, n_IR_node5725, n_MultipleAdd5713, 105); - ext_grs_edge_t *e_e176 = ext_grs_act_add_edge(pattern, "e176", ext_grs_NO_EDGE_POS, n_Const794, n_MultipleAdd5713, 106); - ext_grs_edge_t *e_pos2_164 = ext_grs_act_add_edge(pattern, "pos2_164", 1, n_MultipleAdd5707, n_Load844, 107); - ext_grs_edge_t *e_e177 = ext_grs_act_add_edge(pattern, "e177", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5713, 108); - ext_grs_edge_t *e_pos2_166 = ext_grs_act_add_edge(pattern, "pos2_166", 1, n_MultipleAdd5719, n_Load754, 109); - ext_grs_edge_t *e_pos1_110 = ext_grs_act_add_edge(pattern, "pos1_110", 0, n_Load754, n_Proj755, 110); - ext_grs_edge_t *e_pos1_113 = ext_grs_act_add_edge(pattern, "pos1_113", 0, n_Load934, n_Vector_Result13_Proj936, 111); - ext_grs_edge_t *e_pos1_111 = ext_grs_act_add_edge(pattern, "pos1_111", 0, n_Load769, n_Vector_Result2_Proj771, 112); - - /* The conditions of the pattern */ - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const944}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_35913, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const727}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_35916, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5701}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_35919, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result0_Proj741}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_35922, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj815}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_35925, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result11_Proj906}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_35928, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj740}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_35931, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5717}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_35934, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5693}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_35937, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const959}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_35940, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj935}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_35943, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result8_Proj861}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_35946, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5703}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_35949, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const824}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_35952, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj830}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_35955, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj755}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_35958, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result2_Proj771}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_35961, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5719}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_35964, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result13_Proj936}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_35967, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5695}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_35970, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj950}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_35973, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const899}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_35976, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5705}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_35979, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj845}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_35982, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj770}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_35985, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const854}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_35988, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5697}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_35991, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5723}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_35994, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result4_Proj801}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_35997, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj965}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36000, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result5_Proj816}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36003, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const764}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36006, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5707}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36009, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const929}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36012, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj860}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36015, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj785}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36018, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result10_Proj891}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36021, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5699}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36024, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5709}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36027, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result7_Proj846}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36030, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const794}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36033, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj875}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36036, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj800}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36039, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const809}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36042, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result1_Proj756}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36045, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result12_Proj921}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36048, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const731}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36051, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5711}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36054, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj890}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36057, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result9_Proj876}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36060, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const839}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36063, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result3_Proj786}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36066, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5713}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36069, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const735}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36072, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const914}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36075, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj905}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36078, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result14_Proj951}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36081, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result15_Proj966}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36084, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const869}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36087, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5715}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36090, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5691}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36093, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result6_Proj831}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36096, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj920}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36099, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const779}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_36102, pattern, 1, nodes, 0, edges); - } /* if */ - - /* The negative parts of the pattern */ - - - { /* The replacement */ - ext_grs_graph_t *pattern = ext_grs_act_get_replacement(act); - - /* The nodes of the pattern */ - ext_grs_node_t *n_Const764_1543 = ext_grs_act_add_node_to_keep(pattern, "Const764_1543", grs_op_Const, mode_Is, 0, n_Const764); - ext_grs_node_t *n_Const959_1544 = ext_grs_act_add_node_to_keep(pattern, "Const959_1544", grs_op_Const, mode_Is, 1, n_Const959); - ext_grs_node_t *n_Load874_1545 = ext_grs_act_add_node_to_keep(pattern, "Load874_1545", grs_op_Load, mode_T, 2, n_Load874); - ext_grs_node_t *n_VProj102_1546 = ext_grs_act_add_node_to_keep(pattern, "VProj102_1546", grs_op_VProj, mode_Bu, 84, n_Vector_Result1_Proj756); - ext_grs_node_t *n_VProj104_1547 = ext_grs_act_add_node_to_keep(pattern, "VProj104_1547", grs_op_VProj, mode_Bu, 85, n_Vector_Result12_Proj921); - ext_grs_node_t *n_MultipleAdd5723_1548 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5723_1548", grs_op_MultipleAdd, mode_P, 5, n_MultipleAdd5723); - ext_grs_node_t *n_VProj110_1549 = ext_grs_act_add_node_to_keep(pattern, "VProj110_1549", grs_op_VProj, mode_Bu, 86, n_Vector_Result14_Proj951); - ext_grs_node_t *n_Proj935_1550 = ext_grs_act_add_node_to_keep(pattern, "Proj935_1550", grs_op_Proj, mode_M, 7, n_Proj935); - ext_grs_node_t *n_Proj740_1551 = ext_grs_act_add_node_to_keep(pattern, "Proj740_1551", grs_op_Proj, mode_M, 8, n_Proj740); - ext_grs_node_t *n_Const727_1552 = ext_grs_act_add_node_to_keep(pattern, "Const727_1552", grs_op_Const, mode_Is, 9, n_Const727); - ext_grs_node_t *n_MultipleAdd5719_1553 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5719_1553", grs_op_MultipleAdd, mode_P, 10, n_MultipleAdd5719); - ext_grs_node_t *n_Load934_1554 = ext_grs_act_add_node_to_keep(pattern, "Load934_1554", grs_op_Load, mode_T, 11, n_Load934); - ext_grs_node_t *n_MultipleAdd5717_1555 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5717_1555", grs_op_MultipleAdd, mode_P, 12, n_MultipleAdd5717); - ext_grs_node_t *n_Load739_1556 = ext_grs_act_add_node_to_keep(pattern, "Load739_1556", grs_op_Load, mode_T, 13, n_Load739); - ext_grs_node_t *n_Const929_1557 = ext_grs_act_add_node_to_keep(pattern, "Const929_1557", grs_op_Const, mode_Is, 14, n_Const929); - ext_grs_node_t *n_Load829_1558 = ext_grs_act_add_node_to_keep(pattern, "Load829_1558", grs_op_Load, mode_T, 15, n_Load829); - ext_grs_node_t *n_VProj100_1559 = ext_grs_act_add_node_to_keep(pattern, "VProj100_1559", grs_op_VProj, mode_Bu, 87, n_Vector_Result7_Proj846); - ext_grs_node_t *n_Proj875_1560 = ext_grs_act_add_node_to_keep(pattern, "Proj875_1560", grs_op_Proj, mode_M, 17, n_Proj875); - ext_grs_node_t *n_Const869_1561 = ext_grs_act_add_node_to_keep(pattern, "Const869_1561", grs_op_Const, mode_Is, 18, n_Const869); - ext_grs_node_t *n_Arg_0_1562 = ext_grs_act_add_node_to_keep(pattern, "Arg_0_1562", grs_op_VectorBase, mode_ANY, 19, n_Arg_0); - ext_grs_node_t *n_Const854_1563 = ext_grs_act_add_node_to_keep(pattern, "Const854_1563", grs_op_Const, mode_Is, 20, n_Const854); - ext_grs_node_t *n_Load844_1564 = ext_grs_act_add_node_to_keep(pattern, "Load844_1564", grs_op_Load, mode_T, 21, n_Load844); - ext_grs_node_t *n_Const824_1565 = ext_grs_act_add_node_to_keep(pattern, "Const824_1565", grs_op_Const, mode_Is, 22, n_Const824); - ext_grs_node_t *n_Proj890_1566 = ext_grs_act_add_node_to_keep(pattern, "Proj890_1566", grs_op_Proj, mode_M, 23, n_Proj890); - ext_grs_node_t *n_VProj106_1567 = ext_grs_act_add_node_to_keep(pattern, "VProj106_1567", grs_op_VProj, mode_Bu, 88, n_Vector_Result9_Proj876); - ext_grs_node_t *n_MultipleAdd5713_1568 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5713_1568", grs_op_MultipleAdd, mode_P, 24, n_MultipleAdd5713); - ext_grs_node_t *n_MultipleAdd5715_1569 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5715_1569", grs_op_MultipleAdd, mode_P, 26, n_MultipleAdd5715); - ext_grs_node_t *n_Const899_1570 = ext_grs_act_add_node_to_keep(pattern, "Const899_1570", grs_op_Const, mode_Is, 27, n_Const899); - ext_grs_node_t *n_Load889_1571 = ext_grs_act_add_node_to_keep(pattern, "Load889_1571", grs_op_Load, mode_T, 28, n_Load889); - ext_grs_node_t *n_Proj800_1572 = ext_grs_act_add_node_to_keep(pattern, "Proj800_1572", grs_op_Proj, mode_M, 29, n_Proj800); - ext_grs_node_t *n_VProj92_1573 = ext_grs_act_add_node_to_keep(pattern, "VProj92_1573", grs_op_VProj, mode_Bu, 89, n_Vector_Result13_Proj936); - ext_grs_node_t *n_MultipleAdd5711_1574 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5711_1574", grs_op_MultipleAdd, mode_P, 31, n_MultipleAdd5711); - ext_grs_node_t *n_MultipleAdd5693_1575 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5693_1575", grs_op_MultipleAdd, mode_P, 33, n_MultipleAdd5693); - ext_grs_node_t *n_Load949_1576 = ext_grs_act_add_node_to_keep(pattern, "Load949_1576", grs_op_Load, mode_T, 32, n_Load949); - ext_grs_node_t *n_Proj785_1577 = ext_grs_act_add_node_to_keep(pattern, "Proj785_1577", grs_op_Proj, mode_M, 35, n_Proj785); - ext_grs_node_t *n_MultipleAdd5691_1578 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5691_1578", grs_op_MultipleAdd, mode_P, 34, n_MultipleAdd5691); - ext_grs_node_t *n_MultipleAdd5707_1579 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5707_1579", grs_op_MultipleAdd, mode_P, 39, n_MultipleAdd5707); - ext_grs_node_t *n_MultipleAdd5697_1580 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5697_1580", grs_op_MultipleAdd, mode_P, 38, n_MultipleAdd5697); - ext_grs_node_t *n_Load799_1581 = ext_grs_act_add_node_to_keep(pattern, "Load799_1581", grs_op_Load, mode_T, 36, n_Load799); - ext_grs_node_t *n_VProj88_1582 = ext_grs_act_add_node_to_keep(pattern, "VProj88_1582", grs_op_VProj, mode_Bu, 90, n_Vector_Result8_Proj861); - ext_grs_node_t *n_VProj114_1583 = ext_grs_act_add_node_to_keep(pattern, "VProj114_1583", grs_op_VProj, mode_Bu, 91, n_Vector_Result6_Proj831); - ext_grs_node_t *n_Proj845_1584 = ext_grs_act_add_node_to_keep(pattern, "Proj845_1584", grs_op_Proj, mode_M, 45, n_Proj845); - ext_grs_node_t *n_Proj950_1585 = ext_grs_act_add_node_to_keep(pattern, "Proj950_1585", grs_op_Proj, mode_M, 44, n_Proj950); - ext_grs_node_t *n_MultipleAdd5695_1586 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5695_1586", grs_op_MultipleAdd, mode_P, 43, n_MultipleAdd5695); - ext_grs_node_t *n_MultipleAdd5709_1587 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5709_1587", grs_op_MultipleAdd, mode_P, 41, n_MultipleAdd5709); - ext_grs_node_t *n_VProj86_1588 = ext_grs_act_add_node_to_keep(pattern, "VProj86_1588", grs_op_VProj, mode_Bu, 92, n_Vector_Result11_Proj906); - ext_grs_node_t *n_VProj96_1589 = ext_grs_act_add_node_to_keep(pattern, "VProj96_1589", grs_op_VProj, mode_Bu, 93, n_Vector_Result5_Proj816); - ext_grs_node_t *n_Load904_1590 = ext_grs_act_add_node_to_keep(pattern, "Load904_1590", grs_op_Load, mode_T, 47, n_Load904); - ext_grs_node_t *n_Load784_1591 = ext_grs_act_add_node_to_keep(pattern, "Load784_1591", grs_op_Load, mode_T, 48, n_Load784); - ext_grs_node_t *n_MultipleAdd5699_1592 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5699_1592", grs_op_MultipleAdd, mode_P, 50, n_MultipleAdd5699); - ext_grs_node_t *n_Proj905_1593 = ext_grs_act_add_node_to_keep(pattern, "Proj905_1593", grs_op_Proj, mode_M, 49, n_Proj905); - ext_grs_node_t *n_Const794_1594 = ext_grs_act_add_node_to_keep(pattern, "Const794_1594", grs_op_Const, mode_Is, 51, n_Const794); - ext_grs_node_t *n_Const914_1595 = ext_grs_act_add_node_to_keep(pattern, "Const914_1595", grs_op_Const, mode_Is, 52, n_Const914); - ext_grs_node_t *n_Vector_op = ext_grs_act_add_node(pattern, "Vector_op", grs_op_Complex, mode_T, 94); - ext_grs_node_t *n_Load859_1596 = ext_grs_act_add_node_to_keep(pattern, "Load859_1596", grs_op_Load, mode_T, 53, n_Load859); - ext_grs_node_t *n_Const944_1597 = ext_grs_act_add_node_to_keep(pattern, "Const944_1597", grs_op_Const, mode_Is, 54, n_Const944); - ext_grs_node_t *n_Proj860_1598 = ext_grs_act_add_node_to_keep(pattern, "Proj860_1598", grs_op_Proj, mode_M, 55, n_Proj860); - ext_grs_node_t *n_IR_node5724_1599 = ext_grs_act_add_node_to_keep(pattern, "IR_node5724_1599", grs_op_IR_node, mode_ANY, 56, n_IR_node5724); - ext_grs_node_t *n_Vector_op_ProjM = ext_grs_act_add_node(pattern, "Vector_op_ProjM", grs_op_Proj, mode_M, 95); - ext_grs_node_t *n_MultipleAdd5701_1600 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5701_1600", grs_op_MultipleAdd, mode_P, 57, n_MultipleAdd5701); - ext_grs_node_t *n_Vector_op_ProjData = ext_grs_act_add_node(pattern, "Vector_op_ProjData", grs_op_Proj, mode_LLu, 96); - ext_grs_node_t *n_MultipleAdd5705_1601 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5705_1601", grs_op_MultipleAdd, mode_P, 58, n_MultipleAdd5705); - ext_grs_node_t *n_MultipleAdd5703_1602 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5703_1602", grs_op_MultipleAdd, mode_P, 60, n_MultipleAdd5703); - ext_grs_node_t *n_IR_node5725_1603 = ext_grs_act_add_node_to_keep(pattern, "IR_node5725_1603", grs_op_IR_node, mode_ANY, 59, n_IR_node5725); - ext_grs_node_t *n_VProj94_1604 = ext_grs_act_add_node_to_keep(pattern, "VProj94_1604", grs_op_VProj, mode_Bu, 97, n_Vector_Result4_Proj801); - ext_grs_node_t *n_VProj84_1605 = ext_grs_act_add_node_to_keep(pattern, "VProj84_1605", grs_op_VProj, mode_Bu, 98, n_Vector_Result0_Proj741); - ext_grs_node_t *n_Proj815_1606 = ext_grs_act_add_node_to_keep(pattern, "Proj815_1606", grs_op_Proj, mode_M, 63, n_Proj815); - ext_grs_node_t *n_Proj755_1607 = ext_grs_act_add_node_to_keep(pattern, "Proj755_1607", grs_op_Proj, mode_M, 64, n_Proj755); - ext_grs_node_t *n_Load814_1608 = ext_grs_act_add_node_to_keep(pattern, "Load814_1608", grs_op_Load, mode_T, 65, n_Load814); - ext_grs_node_t *n_VProj108_1609 = ext_grs_act_add_node_to_keep(pattern, "VProj108_1609", grs_op_VProj, mode_Bu, 99, n_Vector_Result3_Proj786); - ext_grs_node_t *n_Load754_1610 = ext_grs_act_add_node_to_keep(pattern, "Load754_1610", grs_op_Load, mode_T, 67, n_Load754); - ext_grs_node_t *n_Bad84 = ext_grs_act_add_node(pattern, "Bad84", grs_op_Bad, mode_ANY, 100); - ext_grs_node_t *n_Const809_1611 = ext_grs_act_add_node_to_keep(pattern, "Const809_1611", grs_op_Const, mode_Is, 68, n_Const809); - ext_grs_node_t *n_Const779_1612 = ext_grs_act_add_node_to_keep(pattern, "Const779_1612", grs_op_Const, mode_Is, 69, n_Const779); - ext_grs_node_t *n_Vector_op_Block_1613 = ext_grs_act_add_node_to_keep(pattern, "Vector_op_Block_1613", grs_op_Block, mode_BB, 70, n_Vector_op_Block); - ext_grs_node_t *n_Load919_1614 = ext_grs_act_add_node_to_keep(pattern, "Load919_1614", grs_op_Load, mode_T, 72, n_Load919); - ext_grs_node_t *n_Load964_1615 = ext_grs_act_add_node_to_keep(pattern, "Load964_1615", grs_op_Load, mode_T, 71, n_Load964); - ext_grs_node_t *n_VProj98_1616 = ext_grs_act_add_node_to_keep(pattern, "VProj98_1616", grs_op_VProj, mode_Bu, 101, n_Vector_Result10_Proj891); - ext_grs_node_t *n_Const735_1617 = ext_grs_act_add_node_to_keep(pattern, "Const735_1617", grs_op_Const, mode_Is, 74, n_Const735); - ext_grs_node_t *n_VProj90_1618 = ext_grs_act_add_node_to_keep(pattern, "VProj90_1618", grs_op_VProj, mode_Bu, 102, n_Vector_Result2_Proj771); - ext_grs_node_t *n_Const731_1619 = ext_grs_act_add_node_to_keep(pattern, "Const731_1619", grs_op_Const, mode_Is, 76, n_Const731); - ext_grs_node_t *n_Proj965_1620 = ext_grs_act_add_node_to_keep(pattern, "Proj965_1620", grs_op_Proj, mode_M, 79, n_Proj965); - ext_grs_node_t *n_Proj770_1621 = ext_grs_act_add_node_to_keep(pattern, "Proj770_1621", grs_op_Proj, mode_M, 78, n_Proj770); - ext_grs_node_t *n_Proj830_1622 = ext_grs_act_add_node_to_keep(pattern, "Proj830_1622", grs_op_Proj, mode_M, 77, n_Proj830); - ext_grs_node_t *n_Load769_1623 = ext_grs_act_add_node_to_keep(pattern, "Load769_1623", grs_op_Load, mode_T, 80, n_Load769); - ext_grs_node_t *n_VProj112_1624 = ext_grs_act_add_node_to_keep(pattern, "VProj112_1624", grs_op_VProj, mode_Bu, 103, n_Vector_Result15_Proj966); - ext_grs_node_t *n_Proj920_1625 = ext_grs_act_add_node_to_keep(pattern, "Proj920_1625", grs_op_Proj, mode_M, 82, n_Proj920); - ext_grs_node_t *n_Const839_1626 = ext_grs_act_add_node_to_keep(pattern, "Const839_1626", grs_op_Const, mode_Is, 83, n_Const839); - - /* The edges of the pattern */ - ext_grs_edge_t *e_pos1_147_1627 = ext_grs_act_add_edge_to_keep(pattern, "pos1_147_1627", 0, n_Load859_1596, n_Proj860_1598, 0, e_pos1_147); - ext_grs_edge_t *e_pos1_149_1628 = ext_grs_act_add_edge_to_keep(pattern, "pos1_149_1628", 0, n_Load784_1591, n_Proj785_1577, 1, e_pos1_149); - ext_grs_edge_t *e_pos1_140_1629 = ext_grs_act_add_edge_to_keep(pattern, "pos1_140_1629", 0, n_Load964_1615, n_Proj965_1620, 3, e_pos1_140); - ext_grs_edge_t *e_e131_1630 = ext_grs_act_add_edge_to_keep(pattern, "e131_1630", ext_grs_NO_EDGE_POS, n_Const914_1595, n_MultipleAdd5697_1580, 4, e_e131); - ext_grs_edge_t *e_e133_1631 = ext_grs_act_add_edge_to_keep(pattern, "e133_1631", ext_grs_NO_EDGE_POS, n_IR_node5724_1599, n_MultipleAdd5697_1580, 5, e_e133); - ext_grs_edge_t *e_e132_1632 = ext_grs_act_add_edge_to_keep(pattern, "e132_1632", ext_grs_NO_EDGE_POS, n_Arg_0_1562, n_MultipleAdd5697_1580, 6, e_e132); - ext_grs_edge_t *e_e135_1633 = ext_grs_act_add_edge_to_keep(pattern, "e135_1633", ext_grs_NO_EDGE_POS, n_Const727_1552, n_MultipleAdd5723_1548, 7, e_e135); - ext_grs_edge_t *e_e134_1634 = ext_grs_act_add_edge_to_keep(pattern, "e134_1634", ext_grs_NO_EDGE_POS, n_IR_node5725_1603, n_MultipleAdd5697_1580, 8, e_e134); - ext_grs_edge_t *e_e137_1635 = ext_grs_act_add_edge_to_keep(pattern, "e137_1635", ext_grs_NO_EDGE_POS, n_IR_node5724_1599, n_MultipleAdd5723_1548, 9, e_e137); - ext_grs_edge_t *e_e136_1636 = ext_grs_act_add_edge_to_keep(pattern, "e136_1636", ext_grs_NO_EDGE_POS, n_Arg_0_1562, n_MultipleAdd5723_1548, 10, e_e136); - ext_grs_edge_t *e_pos2_171_1637 = ext_grs_act_add_edge_to_keep(pattern, "pos2_171_1637", 1, n_MultipleAdd5697_1580, n_Load919_1614, 11, e_pos2_171); - ext_grs_edge_t *e_e138_1638 = ext_grs_act_add_edge_to_keep(pattern, "e138_1638", ext_grs_NO_EDGE_POS, n_IR_node5725_1603, n_MultipleAdd5723_1548, 12, e_e138); - ext_grs_edge_t *e_pos2_175_1639 = ext_grs_act_add_edge_to_keep(pattern, "pos2_175_1639", 1, n_MultipleAdd5703_1602, n_Load874_1545, 13, e_pos2_175); - ext_grs_edge_t *e_pos1_130_1640 = ext_grs_act_add_edge_to_keep(pattern, "pos1_130_1640", 0, n_Load769_1623, n_Proj770_1621, 15, e_pos1_130); - ext_grs_edge_t *e_e120_1641 = ext_grs_act_add_edge_to_keep(pattern, "e120_1641", ext_grs_NO_EDGE_POS, n_IR_node5724_1599, n_MultipleAdd5695_1586, 16, e_e120); - ext_grs_edge_t *e_e121_1642 = ext_grs_act_add_edge_to_keep(pattern, "e121_1642", ext_grs_NO_EDGE_POS, n_IR_node5725_1603, n_MultipleAdd5695_1586, 18, e_e121); - ext_grs_edge_t *e_e128_1643 = ext_grs_act_add_edge_to_keep(pattern, "e128_1643", ext_grs_NO_EDGE_POS, n_IR_node5725_1603, n_MultipleAdd5705_1601, 19, e_e128); - ext_grs_edge_t *e_e127_1644 = ext_grs_act_add_edge_to_keep(pattern, "e127_1644", ext_grs_NO_EDGE_POS, n_IR_node5724_1599, n_MultipleAdd5705_1601, 20, e_e127); - ext_grs_edge_t *e_pos2_181_1645 = ext_grs_act_add_edge_to_keep(pattern, "pos2_181_1645", 1, n_MultipleAdd5715_1569, n_Load784_1591, 21, e_pos2_181); - ext_grs_edge_t *e_e126_1646 = ext_grs_act_add_edge_to_keep(pattern, "e126_1646", ext_grs_NO_EDGE_POS, n_Arg_0_1562, n_MultipleAdd5705_1601, 22, e_e126); - ext_grs_edge_t *e_e125_1647 = ext_grs_act_add_edge_to_keep(pattern, "e125_1647", ext_grs_NO_EDGE_POS, n_Const854_1563, n_MultipleAdd5705_1601, 23, e_e125); - ext_grs_edge_t *e_pos2_184_1648 = ext_grs_act_add_edge_to_keep(pattern, "pos2_184_1648", 1, n_MultipleAdd5693_1575, n_Load949_1576, 24, e_pos2_184); - ext_grs_edge_t *e_pos1_162_1649 = ext_grs_act_add_edge_to_keep(pattern, "pos1_162_1649", 0, n_Load799_1581, n_Proj800_1572, 27, e_pos1_162); - ext_grs_edge_t *e_pos1_161_1650 = ext_grs_act_add_edge_to_keep(pattern, "pos1_161_1650", 0, n_Load874_1545, n_Proj875_1560, 28, e_pos1_161); - ext_grs_edge_t *e_e119_1651 = ext_grs_act_add_edge_to_keep(pattern, "e119_1651", ext_grs_NO_EDGE_POS, n_Arg_0_1562, n_MultipleAdd5695_1586, 30, e_e119); - ext_grs_edge_t *e_pos2_195_1652 = ext_grs_act_add_edge_to_keep(pattern, "pos2_195_1652", 1, n_MultipleAdd5691_1578, n_Load964_1615, 29, e_pos2_195); - ext_grs_edge_t *e_e118_1653 = ext_grs_act_add_edge_to_keep(pattern, "e118_1653", ext_grs_NO_EDGE_POS, n_Const929_1557, n_MultipleAdd5695_1586, 31, e_e118); - ext_grs_edge_t *e_pos0_203_1654 = ext_grs_act_add_edge(pattern, "pos0_203_1654", -1, n_Vector_op_Block_1613, n_Vector_op_ProjM, 113); - ext_grs_edge_t *e_e115_1655 = ext_grs_act_add_edge_to_keep(pattern, "e115_1655", ext_grs_NO_EDGE_POS, n_Arg_0_1562, n_MultipleAdd5719_1553, 32, e_e115); - ext_grs_edge_t *e_e114_1656 = ext_grs_act_add_edge_to_keep(pattern, "e114_1656", ext_grs_NO_EDGE_POS, n_Const735_1617, n_MultipleAdd5719_1553, 33, e_e114); - ext_grs_edge_t *e_e117_1657 = ext_grs_act_add_edge_to_keep(pattern, "e117_1657", ext_grs_NO_EDGE_POS, n_IR_node5725_1603, n_MultipleAdd5719_1553, 34, e_e117); - ext_grs_edge_t *e_e116_1658 = ext_grs_act_add_edge_to_keep(pattern, "e116_1658", ext_grs_NO_EDGE_POS, n_IR_node5724_1599, n_MultipleAdd5719_1553, 35, e_e116); - ext_grs_edge_t *e_e101_1659 = ext_grs_act_add_edge_to_keep(pattern, "e101_1659", ext_grs_NO_EDGE_POS, n_IR_node5725_1603, n_MultipleAdd5693_1575, 38, e_e101); - ext_grs_edge_t *e_e100_1660 = ext_grs_act_add_edge_to_keep(pattern, "e100_1660", ext_grs_NO_EDGE_POS, n_IR_node5724_1599, n_MultipleAdd5693_1575, 39, e_e100); - ext_grs_edge_t *e_e108_1661 = ext_grs_act_add_edge_to_keep(pattern, "e108_1661", ext_grs_NO_EDGE_POS, n_IR_node5725_1603, n_MultipleAdd5703_1602, 40, e_e108); - ext_grs_edge_t *e_e107_1662 = ext_grs_act_add_edge_to_keep(pattern, "e107_1662", ext_grs_NO_EDGE_POS, n_IR_node5724_1599, n_MultipleAdd5703_1602, 41, e_e107); - ext_grs_edge_t *e_e106_1663 = ext_grs_act_add_edge_to_keep(pattern, "e106_1663", ext_grs_NO_EDGE_POS, n_Arg_0_1562, n_MultipleAdd5703_1602, 42, e_e106); - ext_grs_edge_t *e_e105_1664 = ext_grs_act_add_edge_to_keep(pattern, "e105_1664", ext_grs_NO_EDGE_POS, n_Const869_1561, n_MultipleAdd5703_1602, 43, e_e105); - ext_grs_edge_t *e_pos1_180_1665 = ext_grs_act_add_edge_to_keep(pattern, "pos1_180_1665", 0, n_Load904_1590, n_Proj905_1593, 46, e_pos1_180); - ext_grs_edge_t *e_pos1_172_1666 = ext_grs_act_add_edge_to_keep(pattern, "pos1_172_1666", 0, n_Load889_1571, n_Proj890_1566, 47, e_pos1_172); - ext_grs_edge_t *e_e98_1667 = ext_grs_act_add_edge_to_keep(pattern, "e98_1667", ext_grs_NO_EDGE_POS, n_Const944_1597, n_MultipleAdd5693_1575, 53, e_e98); - ext_grs_edge_t *e_pos2_97_1668 = ext_grs_act_add_edge_to_keep(pattern, "pos2_97_1668", 1, n_MultipleAdd5723_1548, n_Load739_1556, 52, e_pos2_97); - ext_grs_edge_t *e_pos1_91_1669 = ext_grs_act_add_edge_to_keep(pattern, "pos1_91_1669", 0, n_Load814_1608, n_Proj815_1606, 51, e_pos1_91); - ext_grs_edge_t *e_pos1_92_1670 = ext_grs_act_add_edge_to_keep(pattern, "pos1_92_1670", 0, n_Load739_1556, n_Proj740_1551, 55, e_pos1_92); - ext_grs_edge_t *e_e95_1671 = ext_grs_act_add_edge_to_keep(pattern, "e95_1671", ext_grs_NO_EDGE_POS, n_IR_node5724_1599, n_MultipleAdd5717_1555, 54, e_e95); - ext_grs_edge_t *e_e96_1672 = ext_grs_act_add_edge_to_keep(pattern, "e96_1672", ext_grs_NO_EDGE_POS, n_IR_node5725_1603, n_MultipleAdd5717_1555, 56, e_e96); - ext_grs_edge_t *e_e99_1673 = ext_grs_act_add_edge_to_keep(pattern, "e99_1673", ext_grs_NO_EDGE_POS, n_Arg_0_1562, n_MultipleAdd5693_1575, 57, e_e99); - ext_grs_edge_t *e_pos0_197_1674 = ext_grs_act_add_edge(pattern, "pos0_197_1674", -1, n_Vector_op_Block_1613, n_Vector_op, 114); - ext_grs_edge_t *e_pos0_198_1675 = ext_grs_act_add_edge(pattern, "pos0_198_1675", -1, n_Vector_op_Block_1613, n_Vector_op_ProjData, 115); - ext_grs_edge_t *e_e93_1676 = ext_grs_act_add_edge_to_keep(pattern, "e93_1676", ext_grs_NO_EDGE_POS, n_Const764_1543, n_MultipleAdd5717_1555, 58, e_e93); - ext_grs_edge_t *e_e94_1677 = ext_grs_act_add_edge_to_keep(pattern, "e94_1677", ext_grs_NO_EDGE_POS, n_Arg_0_1562, n_MultipleAdd5717_1555, 59, e_e94); - ext_grs_edge_t *e_pos0_194_1678 = ext_grs_act_add_edge_to_keep(pattern, "pos0_194_1678", -1, n_Vector_op_Block_1613, n_Load964_1615, 60, e_pos0_194); - ext_grs_edge_t *e_pos1_196_1679 = ext_grs_act_add_edge_to_keep(pattern, "pos1_196_1679", 0, n_Load919_1614, n_Proj920_1625, 61, e_pos1_196); - ext_grs_edge_t *e_pos1_199_1680 = ext_grs_act_add_edge(pattern, "pos1_199_1680", 0, n_Vector_op, n_Vector_op_ProjData, 116); - ext_grs_edge_t *e_pos2_89_1681 = ext_grs_act_add_edge_to_keep(pattern, "pos2_89_1681", 1, n_MultipleAdd5709_1587, n_Load829_1558, 63, e_pos2_89); - ext_grs_edge_t *e_e186_1682 = ext_grs_act_add_edge_to_keep(pattern, "e186_1682", ext_grs_NO_EDGE_POS, n_Arg_0_1562, n_MultipleAdd5715_1569, 64, e_e186); - ext_grs_edge_t *e_e185_1683 = ext_grs_act_add_edge_to_keep(pattern, "e185_1683", ext_grs_NO_EDGE_POS, n_Const779_1612, n_MultipleAdd5715_1569, 65, e_e185); - ext_grs_edge_t *e_e188_1684 = ext_grs_act_add_edge_to_keep(pattern, "e188_1684", ext_grs_NO_EDGE_POS, n_IR_node5725_1603, n_MultipleAdd5715_1569, 66, e_e188); - ext_grs_edge_t *e_e187_1685 = ext_grs_act_add_edge_to_keep(pattern, "e187_1685", ext_grs_NO_EDGE_POS, n_IR_node5724_1599, n_MultipleAdd5715_1569, 67, e_e187); - ext_grs_edge_t *e_e189_1686 = ext_grs_act_add_edge_to_keep(pattern, "e189_1686", ext_grs_NO_EDGE_POS, n_Const959_1544, n_MultipleAdd5691_1578, 68, e_e189); - ext_grs_edge_t *e_e190_1687 = ext_grs_act_add_edge_to_keep(pattern, "e190_1687", ext_grs_NO_EDGE_POS, n_Arg_0_1562, n_MultipleAdd5691_1578, 69, e_e190); - ext_grs_edge_t *e_e191_1688 = ext_grs_act_add_edge_to_keep(pattern, "e191_1688", ext_grs_NO_EDGE_POS, n_IR_node5724_1599, n_MultipleAdd5691_1578, 70, e_e191); - ext_grs_edge_t *e_e192_1689 = ext_grs_act_add_edge_to_keep(pattern, "e192_1689", ext_grs_NO_EDGE_POS, n_IR_node5725_1603, n_MultipleAdd5691_1578, 71, e_e192); - ext_grs_edge_t *e_pos2_201_1690 = ext_grs_act_add_edge(pattern, "pos2_201_1690", 1, n_Bad84, n_Vector_op, 117); - ext_grs_edge_t *e_pos2_103_1691 = ext_grs_act_add_edge_to_keep(pattern, "pos2_103_1691", 1, n_MultipleAdd5699_1592, n_Load904_1590, 72, e_pos2_103); - ext_grs_edge_t *e_e87_1692 = ext_grs_act_add_edge_to_keep(pattern, "e87_1692", ext_grs_NO_EDGE_POS, n_IR_node5725_1603, n_MultipleAdd5701_1600, 73, e_e87); - ext_grs_edge_t *e_e86_1693 = ext_grs_act_add_edge_to_keep(pattern, "e86_1693", ext_grs_NO_EDGE_POS, n_IR_node5724_1599, n_MultipleAdd5701_1600, 74, e_e86); - ext_grs_edge_t *e_e85_1694 = ext_grs_act_add_edge_to_keep(pattern, "e85_1694", ext_grs_NO_EDGE_POS, n_Arg_0_1562, n_MultipleAdd5701_1600, 75, e_e85); - ext_grs_edge_t *e_e84_1695 = ext_grs_act_add_edge_to_keep(pattern, "e84_1695", ext_grs_NO_EDGE_POS, n_Const731_1619, n_MultipleAdd5701_1600, 76, e_e84); - ext_grs_edge_t *e_pos2_112_1696 = ext_grs_act_add_edge_to_keep(pattern, "pos2_112_1696", 1, n_MultipleAdd5705_1601, n_Load859_1596, 77, e_pos2_112); - ext_grs_edge_t *e_pos1_212_1697 = ext_grs_act_add_edge(pattern, "pos1_212_1697", 0, n_Vector_op_ProjData, n_VProj100_1559, 118); - ext_grs_edge_t *e_pos1_213_1698 = ext_grs_act_add_edge(pattern, "pos1_213_1698", 0, n_Vector_op_ProjData, n_VProj102_1546, 119); - ext_grs_edge_t *e_pos1_210_1699 = ext_grs_act_add_edge(pattern, "pos1_210_1699", 0, n_Vector_op_ProjData, n_VProj96_1589, 120); - ext_grs_edge_t *e_pos1_211_1700 = ext_grs_act_add_edge(pattern, "pos1_211_1700", 0, n_Vector_op_ProjData, n_VProj98_1616, 121); - ext_grs_edge_t *e_pos1_216_1701 = ext_grs_act_add_edge(pattern, "pos1_216_1701", 0, n_Vector_op_ProjData, n_VProj108_1609, 122); - ext_grs_edge_t *e_pos1_217_1702 = ext_grs_act_add_edge(pattern, "pos1_217_1702", 0, n_Vector_op_ProjData, n_VProj110_1549, 123); - ext_grs_edge_t *e_pos1_214_1703 = ext_grs_act_add_edge(pattern, "pos1_214_1703", 0, n_Vector_op_ProjData, n_VProj104_1547, 124); - ext_grs_edge_t *e_pos2_124_1704 = ext_grs_act_add_edge_to_keep(pattern, "pos2_124_1704", 1, n_MultipleAdd5695_1586, n_Load934_1554, 78, e_pos2_124); - ext_grs_edge_t *e_pos1_215_1705 = ext_grs_act_add_edge(pattern, "pos1_215_1705", 0, n_Vector_op_ProjData, n_VProj106_1567, 125); - ext_grs_edge_t *e_pos2_123_1706 = ext_grs_act_add_edge_to_keep(pattern, "pos2_123_1706", 1, n_MultipleAdd5717_1555, n_Load769_1623, 79, e_pos2_123); - ext_grs_edge_t *e_pos1_219_1707 = ext_grs_act_add_edge(pattern, "pos1_219_1707", 0, n_Vector_op_ProjData, n_VProj114_1583, 126); - ext_grs_edge_t *e_pos1_218_1708 = ext_grs_act_add_edge(pattern, "pos1_218_1708", 0, n_Vector_op_ProjData, n_VProj112_1624, 127); - ext_grs_edge_t *e_pos1_109_1709 = ext_grs_act_add_edge_to_keep(pattern, "pos1_109_1709", 0, n_Load829_1558, n_Proj830_1622, 80, e_pos1_109); - ext_grs_edge_t *e_e142_1710 = ext_grs_act_add_edge_to_keep(pattern, "e142_1710", ext_grs_NO_EDGE_POS, n_Const839_1626, n_MultipleAdd5707_1579, 81, e_e142); - ext_grs_edge_t *e_e143_1711 = ext_grs_act_add_edge_to_keep(pattern, "e143_1711", ext_grs_NO_EDGE_POS, n_Arg_0_1562, n_MultipleAdd5707_1579, 82, e_e143); - ext_grs_edge_t *e_e144_1712 = ext_grs_act_add_edge_to_keep(pattern, "e144_1712", ext_grs_NO_EDGE_POS, n_IR_node5724_1599, n_MultipleAdd5707_1579, 83, e_e144); - ext_grs_edge_t *e_e145_1713 = ext_grs_act_add_edge_to_keep(pattern, "e145_1713", ext_grs_NO_EDGE_POS, n_IR_node5725_1603, n_MultipleAdd5707_1579, 84, e_e145); - ext_grs_edge_t *e_pos1_204_1714 = ext_grs_act_add_edge(pattern, "pos1_204_1714", 0, n_Vector_op_ProjData, n_VProj84_1605, 128); - ext_grs_edge_t *e_pos1_206_1715 = ext_grs_act_add_edge(pattern, "pos1_206_1715", 0, n_Vector_op_ProjData, n_VProj88_1582, 129); - ext_grs_edge_t *e_pos1_205_1716 = ext_grs_act_add_edge(pattern, "pos1_205_1716", 0, n_Vector_op_ProjData, n_VProj86_1588, 130); - ext_grs_edge_t *e_pos1_200_1717 = ext_grs_act_add_edge(pattern, "pos1_200_1717", 0, n_MultipleAdd5723_1548, n_Vector_op, 131); - ext_grs_edge_t *e_pos1_202_1718 = ext_grs_act_add_edge(pattern, "pos1_202_1718", 0, n_Vector_op, n_Vector_op_ProjM, 132); - ext_grs_edge_t *e_pos1_207_1719 = ext_grs_act_add_edge(pattern, "pos1_207_1719", 0, n_Vector_op_ProjData, n_VProj90_1618, 133); - ext_grs_edge_t *e_pos1_208_1720 = ext_grs_act_add_edge(pattern, "pos1_208_1720", 0, n_Vector_op_ProjData, n_VProj92_1573, 134); - ext_grs_edge_t *e_pos1_209_1721 = ext_grs_act_add_edge(pattern, "pos1_209_1721", 0, n_Vector_op_ProjData, n_VProj94_1604, 135); - ext_grs_edge_t *e_pos1_102_1722 = ext_grs_act_add_edge_to_keep(pattern, "pos1_102_1722", 0, n_Load934_1554, n_Proj935_1550, 85, e_pos1_102); - ext_grs_edge_t *e_e152_1723 = ext_grs_act_add_edge_to_keep(pattern, "e152_1723", ext_grs_NO_EDGE_POS, n_Arg_0_1562, n_MultipleAdd5699_1592, 87, e_e152); - ext_grs_edge_t *e_e153_1724 = ext_grs_act_add_edge_to_keep(pattern, "e153_1724", ext_grs_NO_EDGE_POS, n_IR_node5724_1599, n_MultipleAdd5699_1592, 88, e_e153); - ext_grs_edge_t *e_e151_1725 = ext_grs_act_add_edge_to_keep(pattern, "e151_1725", ext_grs_NO_EDGE_POS, n_Const899_1570, n_MultipleAdd5699_1592, 89, e_e151); - ext_grs_edge_t *e_e157_1726 = ext_grs_act_add_edge_to_keep(pattern, "e157_1726", ext_grs_NO_EDGE_POS, n_Const824_1565, n_MultipleAdd5709_1587, 90, e_e157); - ext_grs_edge_t *e_e154_1727 = ext_grs_act_add_edge_to_keep(pattern, "e154_1727", ext_grs_NO_EDGE_POS, n_IR_node5725_1603, n_MultipleAdd5699_1592, 91, e_e154); - ext_grs_edge_t *e_e158_1728 = ext_grs_act_add_edge_to_keep(pattern, "e158_1728", ext_grs_NO_EDGE_POS, n_Arg_0_1562, n_MultipleAdd5709_1587, 92, e_e158); - ext_grs_edge_t *e_pos2_146_1729 = ext_grs_act_add_edge_to_keep(pattern, "pos2_146_1729", 1, n_MultipleAdd5713_1568, n_Load799_1581, 93, e_pos2_146); - ext_grs_edge_t *e_e159_1730 = ext_grs_act_add_edge_to_keep(pattern, "e159_1730", ext_grs_NO_EDGE_POS, n_IR_node5724_1599, n_MultipleAdd5709_1587, 94, e_e159); - ext_grs_edge_t *e_pos2_148_1731 = ext_grs_act_add_edge_to_keep(pattern, "pos2_148_1731", 1, n_MultipleAdd5711_1574, n_Load814_1608, 95, e_pos2_148); - ext_grs_edge_t *e_e160_1732 = ext_grs_act_add_edge_to_keep(pattern, "e160_1732", ext_grs_NO_EDGE_POS, n_IR_node5725_1603, n_MultipleAdd5709_1587, 96, e_e160); - ext_grs_edge_t *e_e167_1733 = ext_grs_act_add_edge_to_keep(pattern, "e167_1733", ext_grs_NO_EDGE_POS, n_Const809_1611, n_MultipleAdd5711_1574, 97, e_e167); - ext_grs_edge_t *e_e168_1734 = ext_grs_act_add_edge_to_keep(pattern, "e168_1734", ext_grs_NO_EDGE_POS, n_Arg_0_1562, n_MultipleAdd5711_1574, 98, e_e168); - ext_grs_edge_t *e_e169_1735 = ext_grs_act_add_edge_to_keep(pattern, "e169_1735", ext_grs_NO_EDGE_POS, n_IR_node5724_1599, n_MultipleAdd5711_1574, 99, e_e169); - ext_grs_edge_t *e_pos2_155_1736 = ext_grs_act_add_edge_to_keep(pattern, "pos2_155_1736", 1, n_MultipleAdd5701_1600, n_Load889_1571, 100, e_pos2_155); - ext_grs_edge_t *e_pos1_129_1737 = ext_grs_act_add_edge_to_keep(pattern, "pos1_129_1737", 0, n_Load844_1564, n_Proj845_1584, 101, e_pos1_129); - ext_grs_edge_t *e_e170_1738 = ext_grs_act_add_edge_to_keep(pattern, "e170_1738", ext_grs_NO_EDGE_POS, n_IR_node5725_1603, n_MultipleAdd5711_1574, 102, e_e170); - ext_grs_edge_t *e_pos1_122_1739 = ext_grs_act_add_edge_to_keep(pattern, "pos1_122_1739", 0, n_Load949_1576, n_Proj950_1585, 103, e_pos1_122); - ext_grs_edge_t *e_e178_1740 = ext_grs_act_add_edge_to_keep(pattern, "e178_1740", ext_grs_NO_EDGE_POS, n_IR_node5724_1599, n_MultipleAdd5713_1568, 104, e_e178); - ext_grs_edge_t *e_e179_1741 = ext_grs_act_add_edge_to_keep(pattern, "e179_1741", ext_grs_NO_EDGE_POS, n_IR_node5725_1603, n_MultipleAdd5713_1568, 105, e_e179); - ext_grs_edge_t *e_e176_1742 = ext_grs_act_add_edge_to_keep(pattern, "e176_1742", ext_grs_NO_EDGE_POS, n_Const794_1594, n_MultipleAdd5713_1568, 106, e_e176); - ext_grs_edge_t *e_e177_1743 = ext_grs_act_add_edge_to_keep(pattern, "e177_1743", ext_grs_NO_EDGE_POS, n_Arg_0_1562, n_MultipleAdd5713_1568, 108, e_e177); - ext_grs_edge_t *e_pos2_164_1744 = ext_grs_act_add_edge_to_keep(pattern, "pos2_164_1744", 1, n_MultipleAdd5707_1579, n_Load844_1564, 107, e_pos2_164); - ext_grs_edge_t *e_pos2_166_1745 = ext_grs_act_add_edge_to_keep(pattern, "pos2_166_1745", 1, n_MultipleAdd5719_1553, n_Load754_1610, 109, e_pos2_166); - ext_grs_edge_t *e_pos1_110_1746 = ext_grs_act_add_edge_to_keep(pattern, "pos1_110_1746", 0, n_Load754_1610, n_Proj755_1607, 110, e_pos1_110); - - } /* The replacement */ - - /* Eval functions */ - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_36507); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_36510); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_36513); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_36516); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_36519); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_36522); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_36525); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_36528); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_36531); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_36534); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_36537); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_36540); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_36543); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_36546); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_36549); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_36552); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_36555); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_36558); - } /* The Action */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* vload_16b_variant2 */ - - -/* functions for evaluation of conditions of action vload_4f_32_variant0 */ -static int grs_cond_func_31130(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[6/* Const603 */])) == 12; -} -static int grs_cond_func_31133(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[2/* Const588 */])) == 8; -} -static int grs_cond_func_31136(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[5/* MultipleAdd5687 */]) == 2; -} -static int grs_cond_func_31139(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[1/* Proj561 */]) == 0; -} -static int grs_cond_func_31142(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[12/* Proj576 */]) == 0; -} -static int grs_cond_func_31145(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[15/* Vector_Result1_Proj577 */]) == 3; -} -static int grs_cond_func_31148(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[10/* Proj591 */]) == 0; -} -static int grs_cond_func_31151(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[0/* Proj606 */]) == 0; -} -static int grs_cond_func_31154(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[17/* Const556 */])) == 4; -} -static int grs_cond_func_31157(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[20/* MultipleAdd5679 */]) == 2; -} -static int grs_cond_func_31160(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[4/* Vector_Result0_Proj562 */]) == 3; -} -static int grs_cond_func_31163(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[8/* MultipleAdd5681 */]) == 2; -} -static int grs_cond_func_31166(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[18/* Vector_Result2_Proj592 */]) == 3; -} -static int grs_cond_func_31169(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[13/* Vector_Result3_Proj607 */]) == 3; -} -static int grs_cond_func_31172(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[7/* MultipleAdd5683 */]) == 2; -} -static int grs_cond_func_31175(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[14/* Const552 */])) == 0; -} - -static void *grs_eval_out_func_31316(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { - set_Proj_proj(rpl_node_map[23/* Vector_op_ProjData */], 0); - return(NULL); -} -static void *grs_eval_out_func_31319(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { - set_Proj_proj(rpl_node_map[22/* Vector_op_ProjM */], 1); - return(NULL); -} -static void *grs_eval_out_func_31322(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[27/* VProj22 */], 1); - return(NULL); -} -static void *grs_eval_out_func_31325(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[24/* VProj24 */], 0); - return(NULL); -} -static void *grs_eval_out_func_31328(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[28/* VProj26 */], 2); - return(NULL); -} -static void *grs_eval_out_func_31331(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[26/* VProj28 */], 3); - return(NULL); -} -/* functions for building the pattern of action vload_4f_32_variant0 */ -static _inline ext_grs_action_t *grs_action_vload_4f_32_variant0_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_rule, "vload_4f_32_variant0"); - int check; - { /* The action */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - ext_grs_node_t *n_Proj606 = ext_grs_act_add_node(pattern, "Proj606", grs_op_Proj, mode_M, 0); - ext_grs_node_t *n_Proj561 = ext_grs_act_add_node(pattern, "Proj561", grs_op_Proj, mode_M, 1); - ext_grs_node_t *n_Const588 = ext_grs_act_add_node(pattern, "Const588", grs_op_Const, mode_Is, 2); - ext_grs_node_t *n_Load560 = ext_grs_act_add_node(pattern, "Load560", grs_op_Load, mode_T, 3); - ext_grs_node_t *n_Vector_Result0_Proj562 = ext_grs_act_add_node(pattern, "Vector_Result0_Proj562", grs_op_Proj, mode_F, 4); - ext_grs_node_t *n_MultipleAdd5687 = ext_grs_act_add_node(pattern, "MultipleAdd5687", grs_op_MultipleAdd, mode_P, 5); - ext_grs_node_t *n_Const603 = ext_grs_act_add_node(pattern, "Const603", grs_op_Const, mode_Is, 6); - ext_grs_node_t *n_MultipleAdd5683 = ext_grs_act_add_node(pattern, "MultipleAdd5683", grs_op_MultipleAdd, mode_P, 7); - ext_grs_node_t *n_MultipleAdd5681 = ext_grs_act_add_node(pattern, "MultipleAdd5681", grs_op_MultipleAdd, mode_P, 8); - ext_grs_node_t *n_Arg_0 = ext_grs_act_add_node(pattern, "Arg_0", grs_op_VectorBase, mode_ANY, 9); - ext_grs_node_t *n_Proj591 = ext_grs_act_add_node(pattern, "Proj591", grs_op_Proj, mode_M, 10); - ext_grs_node_t *n_Vector_op_Block = ext_grs_act_add_node(pattern, "Vector_op_Block", grs_op_Block, mode_BB, 11); - ext_grs_node_t *n_Proj576 = ext_grs_act_add_node(pattern, "Proj576", grs_op_Proj, mode_M, 12); - ext_grs_node_t *n_Vector_Result3_Proj607 = ext_grs_act_add_node(pattern, "Vector_Result3_Proj607", grs_op_Proj, mode_F, 13); - ext_grs_node_t *n_Const552 = ext_grs_act_add_node(pattern, "Const552", grs_op_Const, mode_Is, 14); - ext_grs_node_t *n_Vector_Result1_Proj577 = ext_grs_act_add_node(pattern, "Vector_Result1_Proj577", grs_op_Proj, mode_F, 15); - ext_grs_node_t *n_Load575 = ext_grs_act_add_node(pattern, "Load575", grs_op_Load, mode_T, 16); - ext_grs_node_t *n_Const556 = ext_grs_act_add_node(pattern, "Const556", grs_op_Const, mode_Is, 17); - ext_grs_node_t *n_Vector_Result2_Proj592 = ext_grs_act_add_node(pattern, "Vector_Result2_Proj592", grs_op_Proj, mode_F, 18); - ext_grs_node_t *n_Load605 = ext_grs_act_add_node(pattern, "Load605", grs_op_Load, mode_T, 19); - ext_grs_node_t *n_MultipleAdd5679 = ext_grs_act_add_node(pattern, "MultipleAdd5679", grs_op_MultipleAdd, mode_P, 20); - ext_grs_node_t *n_Load590 = ext_grs_act_add_node(pattern, "Load590", grs_op_Load, mode_T, 21); - - /* The edges of the pattern */ - ext_grs_edge_t *e_e34 = ext_grs_act_add_edge(pattern, "e34", ext_grs_NO_EDGE_POS, n_Const588, n_MultipleAdd5681, 0); - ext_grs_edge_t *e_e35 = ext_grs_act_add_edge(pattern, "e35", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5681, 1); - ext_grs_edge_t *e_e30 = ext_grs_act_add_edge(pattern, "e30", ext_grs_NO_EDGE_POS, n_Const603, n_MultipleAdd5679, 2); - ext_grs_edge_t *e_e31 = ext_grs_act_add_edge(pattern, "e31", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5679, 3); - ext_grs_edge_t *e_pos1_36 = ext_grs_act_add_edge(pattern, "pos1_36", 0, n_Load590, n_Vector_Result2_Proj592, 4); - ext_grs_edge_t *e_pos1_37 = ext_grs_act_add_edge(pattern, "pos1_37", 0, n_Load605, n_Vector_Result3_Proj607, 5); - ext_grs_edge_t *e_pos1_32 = ext_grs_act_add_edge(pattern, "pos1_32", 0, n_Load560, n_Vector_Result0_Proj562, 6); - ext_grs_edge_t *e_pos2_33 = ext_grs_act_add_edge(pattern, "pos2_33", 1, n_MultipleAdd5687, n_Load560, 7); - ext_grs_edge_t *e_pos2_38 = ext_grs_act_add_edge(pattern, "pos2_38", 1, n_MultipleAdd5681, n_Load590, 8); - ext_grs_edge_t *e_e39 = ext_grs_act_add_edge(pattern, "e39", ext_grs_NO_EDGE_POS, n_Const556, n_MultipleAdd5683, 9); - ext_grs_edge_t *e_pos0_41 = ext_grs_act_add_edge(pattern, "pos0_41", -1, n_Vector_op_Block, n_Load605, 10); - ext_grs_edge_t *e_e24 = ext_grs_act_add_edge(pattern, "e24", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5687, 11); - ext_grs_edge_t *e_e40 = ext_grs_act_add_edge(pattern, "e40", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5683, 12); - ext_grs_edge_t *e_e23 = ext_grs_act_add_edge(pattern, "e23", ext_grs_NO_EDGE_POS, n_Const552, n_MultipleAdd5687, 13); - ext_grs_edge_t *e_pos1_22 = ext_grs_act_add_edge(pattern, "pos1_22", 0, n_Load560, n_Proj561, 14); - ext_grs_edge_t *e_pos1_25 = ext_grs_act_add_edge(pattern, "pos1_25", 0, n_Load575, n_Proj576, 15); - ext_grs_edge_t *e_pos1_26 = ext_grs_act_add_edge(pattern, "pos1_26", 0, n_Load575, n_Vector_Result1_Proj577, 16); - ext_grs_edge_t *e_pos1_27 = ext_grs_act_add_edge(pattern, "pos1_27", 0, n_Load590, n_Proj591, 17); - ext_grs_edge_t *e_pos1_29 = ext_grs_act_add_edge(pattern, "pos1_29", 0, n_Load605, n_Proj606, 18); - ext_grs_edge_t *e_pos2_28 = ext_grs_act_add_edge(pattern, "pos2_28", 1, n_MultipleAdd5683, n_Load575, 19); - ext_grs_edge_t *e_pos2_42 = ext_grs_act_add_edge(pattern, "pos2_42", 1, n_MultipleAdd5679, n_Load605, 20); - - /* The conditions of the pattern */ - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const603}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_31130, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const588}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_31133, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5687}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_31136, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj561}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_31139, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj576}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_31142, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result1_Proj577}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_31145, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj591}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_31148, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj606}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_31151, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const556}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_31154, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5679}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_31157, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result0_Proj562}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_31160, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5681}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_31163, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result2_Proj592}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_31166, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result3_Proj607}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_31169, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5683}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_31172, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const552}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_31175, pattern, 1, nodes, 0, edges); - } /* if */ - - /* The negative parts of the pattern */ - - - { /* The replacement */ - ext_grs_graph_t *pattern = ext_grs_act_get_replacement(act); - - /* The nodes of the pattern */ - ext_grs_node_t *n_Proj606_1747 = ext_grs_act_add_node_to_keep(pattern, "Proj606_1747", grs_op_Proj, mode_M, 0, n_Proj606); - ext_grs_node_t *n_Proj561_1748 = ext_grs_act_add_node_to_keep(pattern, "Proj561_1748", grs_op_Proj, mode_M, 1, n_Proj561); - ext_grs_node_t *n_Vector_op_ProjM = ext_grs_act_add_node(pattern, "Vector_op_ProjM", grs_op_Proj, mode_M, 22); - ext_grs_node_t *n_Vector_op_ProjData = ext_grs_act_add_node(pattern, "Vector_op_ProjData", grs_op_Proj, mode_LLu, 23); - ext_grs_node_t *n_Const588_1749 = ext_grs_act_add_node_to_keep(pattern, "Const588_1749", grs_op_Const, mode_Is, 2, n_Const588); - ext_grs_node_t *n_Load560_1750 = ext_grs_act_add_node_to_keep(pattern, "Load560_1750", grs_op_Load, mode_T, 3, n_Load560); - ext_grs_node_t *n_VProj24_1751 = ext_grs_act_add_node_to_keep(pattern, "VProj24_1751", grs_op_VProj, mode_F, 24, n_Vector_Result0_Proj562); - ext_grs_node_t *n_MultipleAdd5687_1752 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5687_1752", grs_op_MultipleAdd, mode_P, 5, n_MultipleAdd5687); - ext_grs_node_t *n_Const603_1753 = ext_grs_act_add_node_to_keep(pattern, "Const603_1753", grs_op_Const, mode_Is, 6, n_Const603); - ext_grs_node_t *n_MultipleAdd5683_1754 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5683_1754", grs_op_MultipleAdd, mode_P, 7, n_MultipleAdd5683); - ext_grs_node_t *n_MultipleAdd5681_1755 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5681_1755", grs_op_MultipleAdd, mode_P, 8, n_MultipleAdd5681); - ext_grs_node_t *n_Arg_0_1756 = ext_grs_act_add_node_to_keep(pattern, "Arg_0_1756", grs_op_VectorBase, mode_ANY, 9, n_Arg_0); - ext_grs_node_t *n_Proj591_1757 = ext_grs_act_add_node_to_keep(pattern, "Proj591_1757", grs_op_Proj, mode_M, 10, n_Proj591); - ext_grs_node_t *n_Bad22 = ext_grs_act_add_node(pattern, "Bad22", grs_op_Bad, mode_ANY, 25); - ext_grs_node_t *n_Vector_op_Block_1758 = ext_grs_act_add_node_to_keep(pattern, "Vector_op_Block_1758", grs_op_Block, mode_BB, 11, n_Vector_op_Block); - ext_grs_node_t *n_Proj576_1759 = ext_grs_act_add_node_to_keep(pattern, "Proj576_1759", grs_op_Proj, mode_M, 12, n_Proj576); - ext_grs_node_t *n_VProj28_1760 = ext_grs_act_add_node_to_keep(pattern, "VProj28_1760", grs_op_VProj, mode_F, 26, n_Vector_Result3_Proj607); - ext_grs_node_t *n_Const552_1761 = ext_grs_act_add_node_to_keep(pattern, "Const552_1761", grs_op_Const, mode_Is, 14, n_Const552); - ext_grs_node_t *n_VProj22_1762 = ext_grs_act_add_node_to_keep(pattern, "VProj22_1762", grs_op_VProj, mode_F, 27, n_Vector_Result1_Proj577); - ext_grs_node_t *n_Load575_1763 = ext_grs_act_add_node_to_keep(pattern, "Load575_1763", grs_op_Load, mode_T, 16, n_Load575); - ext_grs_node_t *n_Const556_1764 = ext_grs_act_add_node_to_keep(pattern, "Const556_1764", grs_op_Const, mode_Is, 17, n_Const556); - ext_grs_node_t *n_VProj26_1765 = ext_grs_act_add_node_to_keep(pattern, "VProj26_1765", grs_op_VProj, mode_F, 28, n_Vector_Result2_Proj592); - ext_grs_node_t *n_Load605_1766 = ext_grs_act_add_node_to_keep(pattern, "Load605_1766", grs_op_Load, mode_T, 19, n_Load605); - ext_grs_node_t *n_MultipleAdd5679_1767 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5679_1767", grs_op_MultipleAdd, mode_P, 20, n_MultipleAdd5679); - ext_grs_node_t *n_Load590_1768 = ext_grs_act_add_node_to_keep(pattern, "Load590_1768", grs_op_Load, mode_T, 21, n_Load590); - ext_grs_node_t *n_Vector_op = ext_grs_act_add_node(pattern, "Vector_op", grs_op_Complex, mode_T, 29); - - /* The edges of the pattern */ - ext_grs_edge_t *e_e34_1769 = ext_grs_act_add_edge_to_keep(pattern, "e34_1769", ext_grs_NO_EDGE_POS, n_Const588_1749, n_MultipleAdd5681_1755, 0, e_e34); - ext_grs_edge_t *e_e35_1770 = ext_grs_act_add_edge_to_keep(pattern, "e35_1770", ext_grs_NO_EDGE_POS, n_Arg_0_1756, n_MultipleAdd5681_1755, 1, e_e35); - ext_grs_edge_t *e_e30_1771 = ext_grs_act_add_edge_to_keep(pattern, "e30_1771", ext_grs_NO_EDGE_POS, n_Const603_1753, n_MultipleAdd5679_1767, 2, e_e30); - ext_grs_edge_t *e_e31_1772 = ext_grs_act_add_edge_to_keep(pattern, "e31_1772", ext_grs_NO_EDGE_POS, n_Arg_0_1756, n_MultipleAdd5679_1767, 3, e_e31); - ext_grs_edge_t *e_pos2_33_1773 = ext_grs_act_add_edge_to_keep(pattern, "pos2_33_1773", 1, n_MultipleAdd5687_1752, n_Load560_1750, 7, e_pos2_33); - ext_grs_edge_t *e_pos2_38_1774 = ext_grs_act_add_edge_to_keep(pattern, "pos2_38_1774", 1, n_MultipleAdd5681_1755, n_Load590_1768, 8, e_pos2_38); - ext_grs_edge_t *e_e39_1775 = ext_grs_act_add_edge_to_keep(pattern, "e39_1775", ext_grs_NO_EDGE_POS, n_Const556_1764, n_MultipleAdd5683_1754, 9, e_e39); - ext_grs_edge_t *e_e40_1776 = ext_grs_act_add_edge_to_keep(pattern, "e40_1776", ext_grs_NO_EDGE_POS, n_Arg_0_1756, n_MultipleAdd5683_1754, 12, e_e40); - ext_grs_edge_t *e_pos1_48_1777 = ext_grs_act_add_edge(pattern, "pos1_48_1777", 0, n_Vector_op, n_Vector_op_ProjM, 21); - ext_grs_edge_t *e_pos1_45_1778 = ext_grs_act_add_edge(pattern, "pos1_45_1778", 0, n_Vector_op, n_Vector_op_ProjData, 22); - ext_grs_edge_t *e_pos1_46_1779 = ext_grs_act_add_edge(pattern, "pos1_46_1779", 0, n_MultipleAdd5687_1752, n_Vector_op, 23); - ext_grs_edge_t *e_pos2_28_1780 = ext_grs_act_add_edge_to_keep(pattern, "pos2_28_1780", 1, n_MultipleAdd5683_1754, n_Load575_1763, 19, e_pos2_28); - ext_grs_edge_t *e_pos1_51_1781 = ext_grs_act_add_edge(pattern, "pos1_51_1781", 0, n_Vector_op_ProjData, n_VProj24_1751, 24); - ext_grs_edge_t *e_pos1_50_1782 = ext_grs_act_add_edge(pattern, "pos1_50_1782", 0, n_Vector_op_ProjData, n_VProj22_1762, 25); - ext_grs_edge_t *e_pos1_53_1783 = ext_grs_act_add_edge(pattern, "pos1_53_1783", 0, n_Vector_op_ProjData, n_VProj28_1760, 26); - ext_grs_edge_t *e_pos1_52_1784 = ext_grs_act_add_edge(pattern, "pos1_52_1784", 0, n_Vector_op_ProjData, n_VProj26_1765, 27); - ext_grs_edge_t *e_pos0_41_1785 = ext_grs_act_add_edge_to_keep(pattern, "pos0_41_1785", -1, n_Vector_op_Block_1758, n_Load605_1766, 10, e_pos0_41); - ext_grs_edge_t *e_e24_1786 = ext_grs_act_add_edge_to_keep(pattern, "e24_1786", ext_grs_NO_EDGE_POS, n_Arg_0_1756, n_MultipleAdd5687_1752, 11, e_e24); - ext_grs_edge_t *e_e23_1787 = ext_grs_act_add_edge_to_keep(pattern, "e23_1787", ext_grs_NO_EDGE_POS, n_Const552_1761, n_MultipleAdd5687_1752, 13, e_e23); - ext_grs_edge_t *e_pos1_22_1788 = ext_grs_act_add_edge_to_keep(pattern, "pos1_22_1788", 0, n_Load560_1750, n_Proj561_1748, 14, e_pos1_22); - ext_grs_edge_t *e_pos0_49_1789 = ext_grs_act_add_edge(pattern, "pos0_49_1789", -1, n_Vector_op_Block_1758, n_Vector_op_ProjM, 28); - ext_grs_edge_t *e_pos1_25_1790 = ext_grs_act_add_edge_to_keep(pattern, "pos1_25_1790", 0, n_Load575_1763, n_Proj576_1759, 15, e_pos1_25); - ext_grs_edge_t *e_pos0_43_1791 = ext_grs_act_add_edge(pattern, "pos0_43_1791", -1, n_Vector_op_Block_1758, n_Vector_op, 29); - ext_grs_edge_t *e_pos0_44_1792 = ext_grs_act_add_edge(pattern, "pos0_44_1792", -1, n_Vector_op_Block_1758, n_Vector_op_ProjData, 30); - ext_grs_edge_t *e_pos1_27_1793 = ext_grs_act_add_edge_to_keep(pattern, "pos1_27_1793", 0, n_Load590_1768, n_Proj591_1757, 17, e_pos1_27); - ext_grs_edge_t *e_pos1_29_1794 = ext_grs_act_add_edge_to_keep(pattern, "pos1_29_1794", 0, n_Load605_1766, n_Proj606_1747, 18, e_pos1_29); - ext_grs_edge_t *e_pos2_47_1795 = ext_grs_act_add_edge(pattern, "pos2_47_1795", 1, n_Bad22, n_Vector_op, 31); - ext_grs_edge_t *e_pos2_42_1796 = ext_grs_act_add_edge_to_keep(pattern, "pos2_42_1796", 1, n_MultipleAdd5679_1767, n_Load605_1766, 20, e_pos2_42); - - } /* The replacement */ - - /* Eval functions */ - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_31316); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_31319); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_31322); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_31325); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_31328); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_31331); - } /* The Action */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* vload_4f_32_variant0 */ - - -/* functions for evaluation of conditions of action vload_4f_32_variant1 */ -static int grs_cond_func_31567(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[6/* Const603 */])) == 12; -} -static int grs_cond_func_31570(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[2/* Const588 */])) == 8; -} -static int grs_cond_func_31573(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[5/* MultipleAdd5687 */]) == 3; -} -static int grs_cond_func_31576(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[1/* Proj561 */]) == 0; -} -static int grs_cond_func_31579(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[12/* Proj576 */]) == 0; -} -static int grs_cond_func_31582(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[15/* Vector_Result1_Proj577 */]) == 3; -} -static int grs_cond_func_31585(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[10/* Proj591 */]) == 0; -} -static int grs_cond_func_31588(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[0/* Proj606 */]) == 0; -} -static int grs_cond_func_31591(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[17/* Const556 */])) == 4; -} -static int grs_cond_func_31594(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[21/* MultipleAdd5679 */]) == 3; -} -static int grs_cond_func_31597(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[4/* Vector_Result0_Proj562 */]) == 3; -} -static int grs_cond_func_31600(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[8/* MultipleAdd5681 */]) == 3; -} -static int grs_cond_func_31603(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[18/* Vector_Result2_Proj592 */]) == 3; -} -static int grs_cond_func_31606(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[13/* Vector_Result3_Proj607 */]) == 3; -} -static int grs_cond_func_31609(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[7/* MultipleAdd5683 */]) == 3; -} -static int grs_cond_func_31612(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[14/* Const552 */])) == 0; -} - -static void *grs_eval_out_func_31759(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { - set_Proj_proj(rpl_node_map[24/* Vector_op_ProjData */], 0); - return(NULL); -} -static void *grs_eval_out_func_31762(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { - set_Proj_proj(rpl_node_map[23/* Vector_op_ProjM */], 1); - return(NULL); -} -static void *grs_eval_out_func_31765(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[28/* VProj23 */], 1); - return(NULL); -} -static void *grs_eval_out_func_31768(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[25/* VProj25 */], 0); - return(NULL); -} -static void *grs_eval_out_func_31771(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[29/* VProj27 */], 2); - return(NULL); -} -static void *grs_eval_out_func_31774(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[27/* VProj29 */], 3); - return(NULL); -} -/* functions for building the pattern of action vload_4f_32_variant1 */ -static _inline ext_grs_action_t *grs_action_vload_4f_32_variant1_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_rule, "vload_4f_32_variant1"); - int check; - { /* The action */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - ext_grs_node_t *n_Proj606 = ext_grs_act_add_node(pattern, "Proj606", grs_op_Proj, mode_M, 0); - ext_grs_node_t *n_Proj561 = ext_grs_act_add_node(pattern, "Proj561", grs_op_Proj, mode_M, 1); - ext_grs_node_t *n_Const588 = ext_grs_act_add_node(pattern, "Const588", grs_op_Const, mode_Is, 2); - ext_grs_node_t *n_Load560 = ext_grs_act_add_node(pattern, "Load560", grs_op_Load, mode_T, 3); - ext_grs_node_t *n_Vector_Result0_Proj562 = ext_grs_act_add_node(pattern, "Vector_Result0_Proj562", grs_op_Proj, mode_F, 4); - ext_grs_node_t *n_MultipleAdd5687 = ext_grs_act_add_node(pattern, "MultipleAdd5687", grs_op_MultipleAdd, mode_P, 5); - ext_grs_node_t *n_Const603 = ext_grs_act_add_node(pattern, "Const603", grs_op_Const, mode_Is, 6); - ext_grs_node_t *n_MultipleAdd5683 = ext_grs_act_add_node(pattern, "MultipleAdd5683", grs_op_MultipleAdd, mode_P, 7); - ext_grs_node_t *n_MultipleAdd5681 = ext_grs_act_add_node(pattern, "MultipleAdd5681", grs_op_MultipleAdd, mode_P, 8); - ext_grs_node_t *n_Arg_0 = ext_grs_act_add_node(pattern, "Arg_0", grs_op_VectorBase, mode_ANY, 9); - ext_grs_node_t *n_Proj591 = ext_grs_act_add_node(pattern, "Proj591", grs_op_Proj, mode_M, 10); - ext_grs_node_t *n_Vector_op_Block = ext_grs_act_add_node(pattern, "Vector_op_Block", grs_op_Block, mode_BB, 11); - ext_grs_node_t *n_Proj576 = ext_grs_act_add_node(pattern, "Proj576", grs_op_Proj, mode_M, 12); - ext_grs_node_t *n_Vector_Result3_Proj607 = ext_grs_act_add_node(pattern, "Vector_Result3_Proj607", grs_op_Proj, mode_F, 13); - ext_grs_node_t *n_Const552 = ext_grs_act_add_node(pattern, "Const552", grs_op_Const, mode_Is, 14); - ext_grs_node_t *n_Vector_Result1_Proj577 = ext_grs_act_add_node(pattern, "Vector_Result1_Proj577", grs_op_Proj, mode_F, 15); - ext_grs_node_t *n_Load575 = ext_grs_act_add_node(pattern, "Load575", grs_op_Load, mode_T, 16); - ext_grs_node_t *n_Const556 = ext_grs_act_add_node(pattern, "Const556", grs_op_Const, mode_Is, 17); - ext_grs_node_t *n_Vector_Result2_Proj592 = ext_grs_act_add_node(pattern, "Vector_Result2_Proj592", grs_op_Proj, mode_F, 18); - ext_grs_node_t *n_Load605 = ext_grs_act_add_node(pattern, "Load605", grs_op_Load, mode_T, 19); - ext_grs_node_t *n_IR_node5688 = ext_grs_act_add_node(pattern, "IR_node5688", grs_op_IR_node, mode_ANY, 20); - ext_grs_node_t *n_MultipleAdd5679 = ext_grs_act_add_node(pattern, "MultipleAdd5679", grs_op_MultipleAdd, mode_P, 21); - ext_grs_node_t *n_Load590 = ext_grs_act_add_node(pattern, "Load590", grs_op_Load, mode_T, 22); - - /* The edges of the pattern */ - ext_grs_edge_t *e_e33 = ext_grs_act_add_edge(pattern, "e33", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5679, 0); - ext_grs_edge_t *e_e34 = ext_grs_act_add_edge(pattern, "e34", ext_grs_NO_EDGE_POS, n_IR_node5688, n_MultipleAdd5679, 1); - ext_grs_edge_t *e_pos1_31 = ext_grs_act_add_edge(pattern, "pos1_31", 0, n_Load605, n_Proj606, 2); - ext_grs_edge_t *e_e32 = ext_grs_act_add_edge(pattern, "e32", ext_grs_NO_EDGE_POS, n_Const603, n_MultipleAdd5679, 3); - ext_grs_edge_t *e_pos1_35 = ext_grs_act_add_edge(pattern, "pos1_35", 0, n_Load560, n_Vector_Result0_Proj562, 4); - ext_grs_edge_t *e_pos2_36 = ext_grs_act_add_edge(pattern, "pos2_36", 1, n_MultipleAdd5687, n_Load560, 5); - ext_grs_edge_t *e_e38 = ext_grs_act_add_edge(pattern, "e38", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5681, 6); - ext_grs_edge_t *e_e37 = ext_grs_act_add_edge(pattern, "e37", ext_grs_NO_EDGE_POS, n_Const588, n_MultipleAdd5681, 7); - ext_grs_edge_t *e_e39 = ext_grs_act_add_edge(pattern, "e39", ext_grs_NO_EDGE_POS, n_IR_node5688, n_MultipleAdd5681, 8); - ext_grs_edge_t *e_pos2_30 = ext_grs_act_add_edge(pattern, "pos2_30", 1, n_MultipleAdd5683, n_Load575, 9); - ext_grs_edge_t *e_pos1_40 = ext_grs_act_add_edge(pattern, "pos1_40", 0, n_Load590, n_Vector_Result2_Proj592, 10); - ext_grs_edge_t *e_e44 = ext_grs_act_add_edge(pattern, "e44", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5683, 11); - ext_grs_edge_t *e_pos1_41 = ext_grs_act_add_edge(pattern, "pos1_41", 0, n_Load605, n_Vector_Result3_Proj607, 12); - ext_grs_edge_t *e_e45 = ext_grs_act_add_edge(pattern, "e45", ext_grs_NO_EDGE_POS, n_IR_node5688, n_MultipleAdd5683, 13); - ext_grs_edge_t *e_e24 = ext_grs_act_add_edge(pattern, "e24", ext_grs_NO_EDGE_POS, n_Const552, n_MultipleAdd5687, 14); - ext_grs_edge_t *e_e43 = ext_grs_act_add_edge(pattern, "e43", ext_grs_NO_EDGE_POS, n_Const556, n_MultipleAdd5683, 15); - ext_grs_edge_t *e_e25 = ext_grs_act_add_edge(pattern, "e25", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5687, 16); - ext_grs_edge_t *e_pos0_46 = ext_grs_act_add_edge(pattern, "pos0_46", -1, n_Vector_op_Block, n_Load605, 17); - ext_grs_edge_t *e_pos1_23 = ext_grs_act_add_edge(pattern, "pos1_23", 0, n_Load560, n_Proj561, 18); - ext_grs_edge_t *e_pos1_27 = ext_grs_act_add_edge(pattern, "pos1_27", 0, n_Load575, n_Proj576, 19); - ext_grs_edge_t *e_pos1_28 = ext_grs_act_add_edge(pattern, "pos1_28", 0, n_Load575, n_Vector_Result1_Proj577, 20); - ext_grs_edge_t *e_pos1_29 = ext_grs_act_add_edge(pattern, "pos1_29", 0, n_Load590, n_Proj591, 21); - ext_grs_edge_t *e_pos2_47 = ext_grs_act_add_edge(pattern, "pos2_47", 1, n_MultipleAdd5679, n_Load605, 22); - ext_grs_edge_t *e_pos2_42 = ext_grs_act_add_edge(pattern, "pos2_42", 1, n_MultipleAdd5681, n_Load590, 23); - ext_grs_edge_t *e_e26 = ext_grs_act_add_edge(pattern, "e26", ext_grs_NO_EDGE_POS, n_IR_node5688, n_MultipleAdd5687, 24); - - /* The conditions of the pattern */ - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const603}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_31567, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const588}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_31570, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5687}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_31573, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj561}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_31576, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj576}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_31579, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result1_Proj577}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_31582, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj591}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_31585, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj606}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_31588, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const556}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_31591, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5679}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_31594, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result0_Proj562}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_31597, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5681}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_31600, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result2_Proj592}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_31603, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result3_Proj607}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_31606, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5683}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_31609, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const552}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_31612, pattern, 1, nodes, 0, edges); - } /* if */ - - /* The negative parts of the pattern */ - - - { /* The replacement */ - ext_grs_graph_t *pattern = ext_grs_act_get_replacement(act); - - /* The nodes of the pattern */ - ext_grs_node_t *n_Proj606_1797 = ext_grs_act_add_node_to_keep(pattern, "Proj606_1797", grs_op_Proj, mode_M, 0, n_Proj606); - ext_grs_node_t *n_Proj561_1798 = ext_grs_act_add_node_to_keep(pattern, "Proj561_1798", grs_op_Proj, mode_M, 1, n_Proj561); - ext_grs_node_t *n_Vector_op_ProjM = ext_grs_act_add_node(pattern, "Vector_op_ProjM", grs_op_Proj, mode_M, 23); - ext_grs_node_t *n_Vector_op_ProjData = ext_grs_act_add_node(pattern, "Vector_op_ProjData", grs_op_Proj, mode_LLu, 24); - ext_grs_node_t *n_Const588_1799 = ext_grs_act_add_node_to_keep(pattern, "Const588_1799", grs_op_Const, mode_Is, 2, n_Const588); - ext_grs_node_t *n_Load560_1800 = ext_grs_act_add_node_to_keep(pattern, "Load560_1800", grs_op_Load, mode_T, 3, n_Load560); - ext_grs_node_t *n_VProj25_1801 = ext_grs_act_add_node_to_keep(pattern, "VProj25_1801", grs_op_VProj, mode_F, 25, n_Vector_Result0_Proj562); - ext_grs_node_t *n_MultipleAdd5687_1802 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5687_1802", grs_op_MultipleAdd, mode_P, 5, n_MultipleAdd5687); - ext_grs_node_t *n_Const603_1803 = ext_grs_act_add_node_to_keep(pattern, "Const603_1803", grs_op_Const, mode_Is, 6, n_Const603); - ext_grs_node_t *n_MultipleAdd5683_1804 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5683_1804", grs_op_MultipleAdd, mode_P, 7, n_MultipleAdd5683); - ext_grs_node_t *n_MultipleAdd5681_1805 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5681_1805", grs_op_MultipleAdd, mode_P, 8, n_MultipleAdd5681); - ext_grs_node_t *n_Arg_0_1806 = ext_grs_act_add_node_to_keep(pattern, "Arg_0_1806", grs_op_VectorBase, mode_ANY, 9, n_Arg_0); - ext_grs_node_t *n_Proj591_1807 = ext_grs_act_add_node_to_keep(pattern, "Proj591_1807", grs_op_Proj, mode_M, 10, n_Proj591); - ext_grs_node_t *n_Bad23 = ext_grs_act_add_node(pattern, "Bad23", grs_op_Bad, mode_ANY, 26); - ext_grs_node_t *n_Vector_op_Block_1808 = ext_grs_act_add_node_to_keep(pattern, "Vector_op_Block_1808", grs_op_Block, mode_BB, 11, n_Vector_op_Block); - ext_grs_node_t *n_Proj576_1809 = ext_grs_act_add_node_to_keep(pattern, "Proj576_1809", grs_op_Proj, mode_M, 12, n_Proj576); - ext_grs_node_t *n_VProj29_1810 = ext_grs_act_add_node_to_keep(pattern, "VProj29_1810", grs_op_VProj, mode_F, 27, n_Vector_Result3_Proj607); - ext_grs_node_t *n_Const552_1811 = ext_grs_act_add_node_to_keep(pattern, "Const552_1811", grs_op_Const, mode_Is, 14, n_Const552); - ext_grs_node_t *n_VProj23_1812 = ext_grs_act_add_node_to_keep(pattern, "VProj23_1812", grs_op_VProj, mode_F, 28, n_Vector_Result1_Proj577); - ext_grs_node_t *n_Load575_1813 = ext_grs_act_add_node_to_keep(pattern, "Load575_1813", grs_op_Load, mode_T, 16, n_Load575); - ext_grs_node_t *n_Const556_1814 = ext_grs_act_add_node_to_keep(pattern, "Const556_1814", grs_op_Const, mode_Is, 17, n_Const556); - ext_grs_node_t *n_VProj27_1815 = ext_grs_act_add_node_to_keep(pattern, "VProj27_1815", grs_op_VProj, mode_F, 29, n_Vector_Result2_Proj592); - ext_grs_node_t *n_Load605_1816 = ext_grs_act_add_node_to_keep(pattern, "Load605_1816", grs_op_Load, mode_T, 19, n_Load605); - ext_grs_node_t *n_MultipleAdd5679_1817 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5679_1817", grs_op_MultipleAdd, mode_P, 21, n_MultipleAdd5679); - ext_grs_node_t *n_IR_node5688_1818 = ext_grs_act_add_node_to_keep(pattern, "IR_node5688_1818", grs_op_IR_node, mode_ANY, 20, n_IR_node5688); - ext_grs_node_t *n_Load590_1819 = ext_grs_act_add_node_to_keep(pattern, "Load590_1819", grs_op_Load, mode_T, 22, n_Load590); - ext_grs_node_t *n_Vector_op = ext_grs_act_add_node(pattern, "Vector_op", grs_op_Complex, mode_T, 30); - - /* The edges of the pattern */ - ext_grs_edge_t *e_e33_1820 = ext_grs_act_add_edge_to_keep(pattern, "e33_1820", ext_grs_NO_EDGE_POS, n_Arg_0_1806, n_MultipleAdd5679_1817, 0, e_e33); - ext_grs_edge_t *e_pos1_31_1821 = ext_grs_act_add_edge_to_keep(pattern, "pos1_31_1821", 0, n_Load605_1816, n_Proj606_1797, 2, e_pos1_31); - ext_grs_edge_t *e_e34_1822 = ext_grs_act_add_edge_to_keep(pattern, "e34_1822", ext_grs_NO_EDGE_POS, n_IR_node5688_1818, n_MultipleAdd5679_1817, 1, e_e34); - ext_grs_edge_t *e_e32_1823 = ext_grs_act_add_edge_to_keep(pattern, "e32_1823", ext_grs_NO_EDGE_POS, n_Const603_1803, n_MultipleAdd5679_1817, 3, e_e32); - ext_grs_edge_t *e_pos2_36_1824 = ext_grs_act_add_edge_to_keep(pattern, "pos2_36_1824", 1, n_MultipleAdd5687_1802, n_Load560_1800, 5, e_pos2_36); - ext_grs_edge_t *e_e38_1825 = ext_grs_act_add_edge_to_keep(pattern, "e38_1825", ext_grs_NO_EDGE_POS, n_Arg_0_1806, n_MultipleAdd5681_1805, 6, e_e38); - ext_grs_edge_t *e_e37_1826 = ext_grs_act_add_edge_to_keep(pattern, "e37_1826", ext_grs_NO_EDGE_POS, n_Const588_1799, n_MultipleAdd5681_1805, 7, e_e37); - ext_grs_edge_t *e_e39_1827 = ext_grs_act_add_edge_to_keep(pattern, "e39_1827", ext_grs_NO_EDGE_POS, n_IR_node5688_1818, n_MultipleAdd5681_1805, 8, e_e39); - ext_grs_edge_t *e_pos2_30_1828 = ext_grs_act_add_edge_to_keep(pattern, "pos2_30_1828", 1, n_MultipleAdd5683_1804, n_Load575_1813, 9, e_pos2_30); - ext_grs_edge_t *e_e44_1829 = ext_grs_act_add_edge_to_keep(pattern, "e44_1829", ext_grs_NO_EDGE_POS, n_Arg_0_1806, n_MultipleAdd5683_1804, 11, e_e44); - ext_grs_edge_t *e_e45_1830 = ext_grs_act_add_edge_to_keep(pattern, "e45_1830", ext_grs_NO_EDGE_POS, n_IR_node5688_1818, n_MultipleAdd5683_1804, 13, e_e45); - ext_grs_edge_t *e_e43_1831 = ext_grs_act_add_edge_to_keep(pattern, "e43_1831", ext_grs_NO_EDGE_POS, n_Const556_1814, n_MultipleAdd5683_1804, 15, e_e43); - ext_grs_edge_t *e_pos0_54_1832 = ext_grs_act_add_edge(pattern, "pos0_54_1832", -1, n_Vector_op_Block_1808, n_Vector_op_ProjM, 25); - ext_grs_edge_t *e_pos1_55_1833 = ext_grs_act_add_edge(pattern, "pos1_55_1833", 0, n_Vector_op_ProjData, n_VProj23_1812, 26); - ext_grs_edge_t *e_pos1_57_1834 = ext_grs_act_add_edge(pattern, "pos1_57_1834", 0, n_Vector_op_ProjData, n_VProj27_1815, 27); - ext_grs_edge_t *e_pos1_56_1835 = ext_grs_act_add_edge(pattern, "pos1_56_1835", 0, n_Vector_op_ProjData, n_VProj25_1801, 28); - ext_grs_edge_t *e_pos1_58_1836 = ext_grs_act_add_edge(pattern, "pos1_58_1836", 0, n_Vector_op_ProjData, n_VProj29_1810, 29); - ext_grs_edge_t *e_pos2_52_1837 = ext_grs_act_add_edge(pattern, "pos2_52_1837", 1, n_Bad23, n_Vector_op, 30); - ext_grs_edge_t *e_pos1_51_1838 = ext_grs_act_add_edge(pattern, "pos1_51_1838", 0, n_MultipleAdd5687_1802, n_Vector_op, 31); - ext_grs_edge_t *e_pos1_50_1839 = ext_grs_act_add_edge(pattern, "pos1_50_1839", 0, n_Vector_op, n_Vector_op_ProjData, 32); - ext_grs_edge_t *e_pos1_53_1840 = ext_grs_act_add_edge(pattern, "pos1_53_1840", 0, n_Vector_op, n_Vector_op_ProjM, 33); - ext_grs_edge_t *e_e24_1841 = ext_grs_act_add_edge_to_keep(pattern, "e24_1841", ext_grs_NO_EDGE_POS, n_Const552_1811, n_MultipleAdd5687_1802, 14, e_e24); - ext_grs_edge_t *e_e25_1842 = ext_grs_act_add_edge_to_keep(pattern, "e25_1842", ext_grs_NO_EDGE_POS, n_Arg_0_1806, n_MultipleAdd5687_1802, 16, e_e25); - ext_grs_edge_t *e_pos0_46_1843 = ext_grs_act_add_edge_to_keep(pattern, "pos0_46_1843", -1, n_Vector_op_Block_1808, n_Load605_1816, 17, e_pos0_46); - ext_grs_edge_t *e_pos0_48_1844 = ext_grs_act_add_edge(pattern, "pos0_48_1844", -1, n_Vector_op_Block_1808, n_Vector_op, 34); - ext_grs_edge_t *e_pos1_23_1845 = ext_grs_act_add_edge_to_keep(pattern, "pos1_23_1845", 0, n_Load560_1800, n_Proj561_1798, 18, e_pos1_23); - ext_grs_edge_t *e_pos0_49_1846 = ext_grs_act_add_edge(pattern, "pos0_49_1846", -1, n_Vector_op_Block_1808, n_Vector_op_ProjData, 35); - ext_grs_edge_t *e_pos1_27_1847 = ext_grs_act_add_edge_to_keep(pattern, "pos1_27_1847", 0, n_Load575_1813, n_Proj576_1809, 19, e_pos1_27); - ext_grs_edge_t *e_pos1_29_1848 = ext_grs_act_add_edge_to_keep(pattern, "pos1_29_1848", 0, n_Load590_1819, n_Proj591_1807, 21, e_pos1_29); - ext_grs_edge_t *e_pos2_47_1849 = ext_grs_act_add_edge_to_keep(pattern, "pos2_47_1849", 1, n_MultipleAdd5679_1817, n_Load605_1816, 22, e_pos2_47); - ext_grs_edge_t *e_pos2_42_1850 = ext_grs_act_add_edge_to_keep(pattern, "pos2_42_1850", 1, n_MultipleAdd5681_1805, n_Load590_1819, 23, e_pos2_42); - ext_grs_edge_t *e_e26_1851 = ext_grs_act_add_edge_to_keep(pattern, "e26_1851", ext_grs_NO_EDGE_POS, n_IR_node5688_1818, n_MultipleAdd5687_1802, 24, e_e26); - - } /* The replacement */ - - /* Eval functions */ - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_31759); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_31762); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_31765); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_31768); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_31771); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_31774); - } /* The Action */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* vload_4f_32_variant1 */ - - -/* functions for evaluation of conditions of action vload_4f_32_variant2 */ -static int grs_cond_func_32028(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[6/* Const603 */])) == 12; -} -static int grs_cond_func_32031(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[2/* Const588 */])) == 8; -} -static int grs_cond_func_32034(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[5/* MultipleAdd5687 */]) == 4; -} -static int grs_cond_func_32037(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[1/* Proj561 */]) == 0; -} -static int grs_cond_func_32040(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[12/* Proj576 */]) == 0; -} -static int grs_cond_func_32043(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[15/* Vector_Result1_Proj577 */]) == 3; -} -static int grs_cond_func_32046(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[10/* Proj591 */]) == 0; -} -static int grs_cond_func_32049(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[0/* Proj606 */]) == 0; -} -static int grs_cond_func_32052(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[17/* Const556 */])) == 4; -} -static int grs_cond_func_32055(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[22/* MultipleAdd5679 */]) == 4; -} -static int grs_cond_func_32058(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[4/* Vector_Result0_Proj562 */]) == 3; -} -static int grs_cond_func_32061(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[8/* MultipleAdd5681 */]) == 4; -} -static int grs_cond_func_32064(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[18/* Vector_Result2_Proj592 */]) == 3; -} -static int grs_cond_func_32067(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[13/* Vector_Result3_Proj607 */]) == 3; -} -static int grs_cond_func_32070(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[7/* MultipleAdd5683 */]) == 4; -} -static int grs_cond_func_32073(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[14/* Const552 */])) == 0; -} - -static void *grs_eval_out_func_32226(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { - set_Proj_proj(rpl_node_map[25/* Vector_op_ProjData */], 0); - return(NULL); -} -static void *grs_eval_out_func_32229(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { - set_Proj_proj(rpl_node_map[24/* Vector_op_ProjM */], 1); - return(NULL); -} -static void *grs_eval_out_func_32232(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[29/* VProj24 */], 1); - return(NULL); -} -static void *grs_eval_out_func_32235(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[26/* VProj26 */], 0); - return(NULL); -} -static void *grs_eval_out_func_32238(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[30/* VProj28 */], 2); - return(NULL); -} -static void *grs_eval_out_func_32241(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { -set_VProj_proj(rpl_node_map[28/* VProj30 */], 3); - return(NULL); -} -/* functions for building the pattern of action vload_4f_32_variant2 */ -static _inline ext_grs_action_t *grs_action_vload_4f_32_variant2_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_rule, "vload_4f_32_variant2"); - int check; - { /* The action */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - ext_grs_node_t *n_Proj606 = ext_grs_act_add_node(pattern, "Proj606", grs_op_Proj, mode_M, 0); - ext_grs_node_t *n_Proj561 = ext_grs_act_add_node(pattern, "Proj561", grs_op_Proj, mode_M, 1); - ext_grs_node_t *n_Const588 = ext_grs_act_add_node(pattern, "Const588", grs_op_Const, mode_Is, 2); - ext_grs_node_t *n_Load560 = ext_grs_act_add_node(pattern, "Load560", grs_op_Load, mode_T, 3); - ext_grs_node_t *n_Vector_Result0_Proj562 = ext_grs_act_add_node(pattern, "Vector_Result0_Proj562", grs_op_Proj, mode_F, 4); - ext_grs_node_t *n_MultipleAdd5687 = ext_grs_act_add_node(pattern, "MultipleAdd5687", grs_op_MultipleAdd, mode_P, 5); - ext_grs_node_t *n_Const603 = ext_grs_act_add_node(pattern, "Const603", grs_op_Const, mode_Is, 6); - ext_grs_node_t *n_MultipleAdd5683 = ext_grs_act_add_node(pattern, "MultipleAdd5683", grs_op_MultipleAdd, mode_P, 7); - ext_grs_node_t *n_MultipleAdd5681 = ext_grs_act_add_node(pattern, "MultipleAdd5681", grs_op_MultipleAdd, mode_P, 8); - ext_grs_node_t *n_Arg_0 = ext_grs_act_add_node(pattern, "Arg_0", grs_op_VectorBase, mode_ANY, 9); - ext_grs_node_t *n_Proj591 = ext_grs_act_add_node(pattern, "Proj591", grs_op_Proj, mode_M, 10); - ext_grs_node_t *n_Vector_op_Block = ext_grs_act_add_node(pattern, "Vector_op_Block", grs_op_Block, mode_BB, 11); - ext_grs_node_t *n_Proj576 = ext_grs_act_add_node(pattern, "Proj576", grs_op_Proj, mode_M, 12); - ext_grs_node_t *n_Vector_Result3_Proj607 = ext_grs_act_add_node(pattern, "Vector_Result3_Proj607", grs_op_Proj, mode_F, 13); - ext_grs_node_t *n_Const552 = ext_grs_act_add_node(pattern, "Const552", grs_op_Const, mode_Is, 14); - ext_grs_node_t *n_Vector_Result1_Proj577 = ext_grs_act_add_node(pattern, "Vector_Result1_Proj577", grs_op_Proj, mode_F, 15); - ext_grs_node_t *n_Load575 = ext_grs_act_add_node(pattern, "Load575", grs_op_Load, mode_T, 16); - ext_grs_node_t *n_Const556 = ext_grs_act_add_node(pattern, "Const556", grs_op_Const, mode_Is, 17); - ext_grs_node_t *n_Vector_Result2_Proj592 = ext_grs_act_add_node(pattern, "Vector_Result2_Proj592", grs_op_Proj, mode_F, 18); - ext_grs_node_t *n_Load605 = ext_grs_act_add_node(pattern, "Load605", grs_op_Load, mode_T, 19); - ext_grs_node_t *n_IR_node5689 = ext_grs_act_add_node(pattern, "IR_node5689", grs_op_IR_node, mode_ANY, 20); - ext_grs_node_t *n_IR_node5688 = ext_grs_act_add_node(pattern, "IR_node5688", grs_op_IR_node, mode_ANY, 21); - ext_grs_node_t *n_MultipleAdd5679 = ext_grs_act_add_node(pattern, "MultipleAdd5679", grs_op_MultipleAdd, mode_P, 22); - ext_grs_node_t *n_Load590 = ext_grs_act_add_node(pattern, "Load590", grs_op_Load, mode_T, 23); - - /* The edges of the pattern */ - ext_grs_edge_t *e_pos1_30 = ext_grs_act_add_edge(pattern, "pos1_30", 0, n_Load575, n_Vector_Result1_Proj577, 0); - ext_grs_edge_t *e_pos1_31 = ext_grs_act_add_edge(pattern, "pos1_31", 0, n_Load590, n_Proj591, 1); - ext_grs_edge_t *e_e34 = ext_grs_act_add_edge(pattern, "e34", ext_grs_NO_EDGE_POS, n_Const603, n_MultipleAdd5679, 2); - ext_grs_edge_t *e_e35 = ext_grs_act_add_edge(pattern, "e35", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5679, 3); - ext_grs_edge_t *e_e36 = ext_grs_act_add_edge(pattern, "e36", ext_grs_NO_EDGE_POS, n_IR_node5688, n_MultipleAdd5679, 4); - ext_grs_edge_t *e_pos1_38 = ext_grs_act_add_edge(pattern, "pos1_38", 0, n_Load560, n_Vector_Result0_Proj562, 5); - ext_grs_edge_t *e_pos1_33 = ext_grs_act_add_edge(pattern, "pos1_33", 0, n_Load605, n_Proj606, 6); - ext_grs_edge_t *e_pos2_39 = ext_grs_act_add_edge(pattern, "pos2_39", 1, n_MultipleAdd5687, n_Load560, 7); - ext_grs_edge_t *e_pos2_32 = ext_grs_act_add_edge(pattern, "pos2_32", 1, n_MultipleAdd5683, n_Load575, 8); - ext_grs_edge_t *e_e37 = ext_grs_act_add_edge(pattern, "e37", ext_grs_NO_EDGE_POS, n_IR_node5689, n_MultipleAdd5679, 9); - ext_grs_edge_t *e_e47 = ext_grs_act_add_edge(pattern, "e47", ext_grs_NO_EDGE_POS, n_Const556, n_MultipleAdd5683, 10); - ext_grs_edge_t *e_e42 = ext_grs_act_add_edge(pattern, "e42", ext_grs_NO_EDGE_POS, n_IR_node5688, n_MultipleAdd5681, 11); - ext_grs_edge_t *e_e43 = ext_grs_act_add_edge(pattern, "e43", ext_grs_NO_EDGE_POS, n_IR_node5689, n_MultipleAdd5681, 12); - ext_grs_edge_t *e_e40 = ext_grs_act_add_edge(pattern, "e40", ext_grs_NO_EDGE_POS, n_Const588, n_MultipleAdd5681, 13); - ext_grs_edge_t *e_e41 = ext_grs_act_add_edge(pattern, "e41", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5681, 14); - ext_grs_edge_t *e_pos1_44 = ext_grs_act_add_edge(pattern, "pos1_44", 0, n_Load590, n_Vector_Result2_Proj592, 15); - ext_grs_edge_t *e_pos1_45 = ext_grs_act_add_edge(pattern, "pos1_45", 0, n_Load605, n_Vector_Result3_Proj607, 16); - ext_grs_edge_t *e_e49 = ext_grs_act_add_edge(pattern, "e49", ext_grs_NO_EDGE_POS, n_IR_node5688, n_MultipleAdd5683, 17); - ext_grs_edge_t *e_e48 = ext_grs_act_add_edge(pattern, "e48", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5683, 18); - ext_grs_edge_t *e_pos0_51 = ext_grs_act_add_edge(pattern, "pos0_51", -1, n_Vector_op_Block, n_Load605, 19); - ext_grs_edge_t *e_e50 = ext_grs_act_add_edge(pattern, "e50", ext_grs_NO_EDGE_POS, n_IR_node5689, n_MultipleAdd5683, 20); - ext_grs_edge_t *e_pos2_52 = ext_grs_act_add_edge(pattern, "pos2_52", 1, n_MultipleAdd5679, n_Load605, 21); - ext_grs_edge_t *e_e25 = ext_grs_act_add_edge(pattern, "e25", ext_grs_NO_EDGE_POS, n_Const552, n_MultipleAdd5687, 22); - ext_grs_edge_t *e_pos1_24 = ext_grs_act_add_edge(pattern, "pos1_24", 0, n_Load560, n_Proj561, 23); - ext_grs_edge_t *e_pos1_29 = ext_grs_act_add_edge(pattern, "pos1_29", 0, n_Load575, n_Proj576, 24); - ext_grs_edge_t *e_pos2_46 = ext_grs_act_add_edge(pattern, "pos2_46", 1, n_MultipleAdd5681, n_Load590, 25); - ext_grs_edge_t *e_e28 = ext_grs_act_add_edge(pattern, "e28", ext_grs_NO_EDGE_POS, n_IR_node5689, n_MultipleAdd5687, 26); - ext_grs_edge_t *e_e27 = ext_grs_act_add_edge(pattern, "e27", ext_grs_NO_EDGE_POS, n_IR_node5688, n_MultipleAdd5687, 27); - ext_grs_edge_t *e_e26 = ext_grs_act_add_edge(pattern, "e26", ext_grs_NO_EDGE_POS, n_Arg_0, n_MultipleAdd5687, 28); - - /* The conditions of the pattern */ - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const603}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_32028, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const588}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_32031, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5687}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_32034, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj561}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_32037, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj576}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_32040, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result1_Proj577}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_32043, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj591}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_32046, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj606}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_32049, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const556}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_32052, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5679}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_32055, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result0_Proj562}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_32058, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5681}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_32061, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result2_Proj592}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_32064, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Vector_Result3_Proj607}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_32067, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5683}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_32070, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const552}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_32073, pattern, 1, nodes, 0, edges); - } /* if */ - - /* The negative parts of the pattern */ - - - { /* The replacement */ - ext_grs_graph_t *pattern = ext_grs_act_get_replacement(act); - - /* The nodes of the pattern */ - ext_grs_node_t *n_Proj606_1852 = ext_grs_act_add_node_to_keep(pattern, "Proj606_1852", grs_op_Proj, mode_M, 0, n_Proj606); - ext_grs_node_t *n_Proj561_1853 = ext_grs_act_add_node_to_keep(pattern, "Proj561_1853", grs_op_Proj, mode_M, 1, n_Proj561); - ext_grs_node_t *n_Vector_op_ProjM = ext_grs_act_add_node(pattern, "Vector_op_ProjM", grs_op_Proj, mode_M, 24); - ext_grs_node_t *n_Vector_op_ProjData = ext_grs_act_add_node(pattern, "Vector_op_ProjData", grs_op_Proj, mode_LLu, 25); - ext_grs_node_t *n_Const588_1854 = ext_grs_act_add_node_to_keep(pattern, "Const588_1854", grs_op_Const, mode_Is, 2, n_Const588); - ext_grs_node_t *n_Load560_1855 = ext_grs_act_add_node_to_keep(pattern, "Load560_1855", grs_op_Load, mode_T, 3, n_Load560); - ext_grs_node_t *n_VProj26_1856 = ext_grs_act_add_node_to_keep(pattern, "VProj26_1856", grs_op_VProj, mode_F, 26, n_Vector_Result0_Proj562); - ext_grs_node_t *n_MultipleAdd5687_1857 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5687_1857", grs_op_MultipleAdd, mode_P, 5, n_MultipleAdd5687); - ext_grs_node_t *n_Const603_1858 = ext_grs_act_add_node_to_keep(pattern, "Const603_1858", grs_op_Const, mode_Is, 6, n_Const603); - ext_grs_node_t *n_MultipleAdd5683_1859 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5683_1859", grs_op_MultipleAdd, mode_P, 7, n_MultipleAdd5683); - ext_grs_node_t *n_MultipleAdd5681_1860 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5681_1860", grs_op_MultipleAdd, mode_P, 8, n_MultipleAdd5681); - ext_grs_node_t *n_Bad24 = ext_grs_act_add_node(pattern, "Bad24", grs_op_Bad, mode_ANY, 27); - ext_grs_node_t *n_Arg_0_1861 = ext_grs_act_add_node_to_keep(pattern, "Arg_0_1861", grs_op_VectorBase, mode_ANY, 9, n_Arg_0); - ext_grs_node_t *n_Proj591_1862 = ext_grs_act_add_node_to_keep(pattern, "Proj591_1862", grs_op_Proj, mode_M, 10, n_Proj591); - ext_grs_node_t *n_Vector_op_Block_1863 = ext_grs_act_add_node_to_keep(pattern, "Vector_op_Block_1863", grs_op_Block, mode_BB, 11, n_Vector_op_Block); - ext_grs_node_t *n_Proj576_1864 = ext_grs_act_add_node_to_keep(pattern, "Proj576_1864", grs_op_Proj, mode_M, 12, n_Proj576); - ext_grs_node_t *n_VProj30_1865 = ext_grs_act_add_node_to_keep(pattern, "VProj30_1865", grs_op_VProj, mode_F, 28, n_Vector_Result3_Proj607); - ext_grs_node_t *n_Const552_1866 = ext_grs_act_add_node_to_keep(pattern, "Const552_1866", grs_op_Const, mode_Is, 14, n_Const552); - ext_grs_node_t *n_VProj24_1867 = ext_grs_act_add_node_to_keep(pattern, "VProj24_1867", grs_op_VProj, mode_F, 29, n_Vector_Result1_Proj577); - ext_grs_node_t *n_Load575_1868 = ext_grs_act_add_node_to_keep(pattern, "Load575_1868", grs_op_Load, mode_T, 16, n_Load575); - ext_grs_node_t *n_Const556_1869 = ext_grs_act_add_node_to_keep(pattern, "Const556_1869", grs_op_Const, mode_Is, 17, n_Const556); - ext_grs_node_t *n_VProj28_1870 = ext_grs_act_add_node_to_keep(pattern, "VProj28_1870", grs_op_VProj, mode_F, 30, n_Vector_Result2_Proj592); - ext_grs_node_t *n_IR_node5689_1871 = ext_grs_act_add_node_to_keep(pattern, "IR_node5689_1871", grs_op_IR_node, mode_ANY, 20, n_IR_node5689); - ext_grs_node_t *n_Load605_1872 = ext_grs_act_add_node_to_keep(pattern, "Load605_1872", grs_op_Load, mode_T, 19, n_Load605); - ext_grs_node_t *n_MultipleAdd5679_1873 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5679_1873", grs_op_MultipleAdd, mode_P, 22, n_MultipleAdd5679); - ext_grs_node_t *n_IR_node5688_1874 = ext_grs_act_add_node_to_keep(pattern, "IR_node5688_1874", grs_op_IR_node, mode_ANY, 21, n_IR_node5688); - ext_grs_node_t *n_Load590_1875 = ext_grs_act_add_node_to_keep(pattern, "Load590_1875", grs_op_Load, mode_T, 23, n_Load590); - ext_grs_node_t *n_Vector_op = ext_grs_act_add_node(pattern, "Vector_op", grs_op_Complex, mode_T, 31); - - /* The edges of the pattern */ - ext_grs_edge_t *e_e34_1876 = ext_grs_act_add_edge_to_keep(pattern, "e34_1876", ext_grs_NO_EDGE_POS, n_Const603_1858, n_MultipleAdd5679_1873, 2, e_e34); - ext_grs_edge_t *e_pos1_31_1877 = ext_grs_act_add_edge_to_keep(pattern, "pos1_31_1877", 0, n_Load590_1875, n_Proj591_1862, 1, e_pos1_31); - ext_grs_edge_t *e_e35_1878 = ext_grs_act_add_edge_to_keep(pattern, "e35_1878", ext_grs_NO_EDGE_POS, n_Arg_0_1861, n_MultipleAdd5679_1873, 3, e_e35); - ext_grs_edge_t *e_e36_1879 = ext_grs_act_add_edge_to_keep(pattern, "e36_1879", ext_grs_NO_EDGE_POS, n_IR_node5688_1874, n_MultipleAdd5679_1873, 4, e_e36); - ext_grs_edge_t *e_pos1_33_1880 = ext_grs_act_add_edge_to_keep(pattern, "pos1_33_1880", 0, n_Load605_1872, n_Proj606_1852, 6, e_pos1_33); - ext_grs_edge_t *e_pos2_39_1881 = ext_grs_act_add_edge_to_keep(pattern, "pos2_39_1881", 1, n_MultipleAdd5687_1857, n_Load560_1855, 7, e_pos2_39); - ext_grs_edge_t *e_e37_1882 = ext_grs_act_add_edge_to_keep(pattern, "e37_1882", ext_grs_NO_EDGE_POS, n_IR_node5689_1871, n_MultipleAdd5679_1873, 9, e_e37); - ext_grs_edge_t *e_pos2_32_1883 = ext_grs_act_add_edge_to_keep(pattern, "pos2_32_1883", 1, n_MultipleAdd5683_1859, n_Load575_1868, 8, e_pos2_32); - ext_grs_edge_t *e_e47_1884 = ext_grs_act_add_edge_to_keep(pattern, "e47_1884", ext_grs_NO_EDGE_POS, n_Const556_1869, n_MultipleAdd5683_1859, 10, e_e47); - ext_grs_edge_t *e_e42_1885 = ext_grs_act_add_edge_to_keep(pattern, "e42_1885", ext_grs_NO_EDGE_POS, n_IR_node5688_1874, n_MultipleAdd5681_1860, 11, e_e42); - ext_grs_edge_t *e_e43_1886 = ext_grs_act_add_edge_to_keep(pattern, "e43_1886", ext_grs_NO_EDGE_POS, n_IR_node5689_1871, n_MultipleAdd5681_1860, 12, e_e43); - ext_grs_edge_t *e_e40_1887 = ext_grs_act_add_edge_to_keep(pattern, "e40_1887", ext_grs_NO_EDGE_POS, n_Const588_1854, n_MultipleAdd5681_1860, 13, e_e40); - ext_grs_edge_t *e_e41_1888 = ext_grs_act_add_edge_to_keep(pattern, "e41_1888", ext_grs_NO_EDGE_POS, n_Arg_0_1861, n_MultipleAdd5681_1860, 14, e_e41); - ext_grs_edge_t *e_e49_1889 = ext_grs_act_add_edge_to_keep(pattern, "e49_1889", ext_grs_NO_EDGE_POS, n_IR_node5688_1874, n_MultipleAdd5683_1859, 17, e_e49); - ext_grs_edge_t *e_e48_1890 = ext_grs_act_add_edge_to_keep(pattern, "e48_1890", ext_grs_NO_EDGE_POS, n_Arg_0_1861, n_MultipleAdd5683_1859, 18, e_e48); - ext_grs_edge_t *e_pos0_51_1891 = ext_grs_act_add_edge_to_keep(pattern, "pos0_51_1891", -1, n_Vector_op_Block_1863, n_Load605_1872, 19, e_pos0_51); - ext_grs_edge_t *e_e50_1892 = ext_grs_act_add_edge_to_keep(pattern, "e50_1892", ext_grs_NO_EDGE_POS, n_IR_node5689_1871, n_MultipleAdd5683_1859, 20, e_e50); - ext_grs_edge_t *e_pos0_59_1893 = ext_grs_act_add_edge(pattern, "pos0_59_1893", -1, n_Vector_op_Block_1863, n_Vector_op_ProjM, 29); - ext_grs_edge_t *e_pos0_53_1894 = ext_grs_act_add_edge(pattern, "pos0_53_1894", -1, n_Vector_op_Block_1863, n_Vector_op, 30); - ext_grs_edge_t *e_pos0_54_1895 = ext_grs_act_add_edge(pattern, "pos0_54_1895", -1, n_Vector_op_Block_1863, n_Vector_op_ProjData, 31); - ext_grs_edge_t *e_pos1_55_1896 = ext_grs_act_add_edge(pattern, "pos1_55_1896", 0, n_Vector_op, n_Vector_op_ProjData, 32); - ext_grs_edge_t *e_pos1_56_1897 = ext_grs_act_add_edge(pattern, "pos1_56_1897", 0, n_MultipleAdd5687_1857, n_Vector_op, 33); - ext_grs_edge_t *e_pos2_57_1898 = ext_grs_act_add_edge(pattern, "pos2_57_1898", 1, n_Bad24, n_Vector_op, 34); - ext_grs_edge_t *e_pos1_58_1899 = ext_grs_act_add_edge(pattern, "pos1_58_1899", 0, n_Vector_op, n_Vector_op_ProjM, 35); - ext_grs_edge_t *e_pos2_52_1900 = ext_grs_act_add_edge_to_keep(pattern, "pos2_52_1900", 1, n_MultipleAdd5679_1873, n_Load605_1872, 21, e_pos2_52); - ext_grs_edge_t *e_e25_1901 = ext_grs_act_add_edge_to_keep(pattern, "e25_1901", ext_grs_NO_EDGE_POS, n_Const552_1866, n_MultipleAdd5687_1857, 22, e_e25); - ext_grs_edge_t *e_pos1_24_1902 = ext_grs_act_add_edge_to_keep(pattern, "pos1_24_1902", 0, n_Load560_1855, n_Proj561_1853, 23, e_pos1_24); - ext_grs_edge_t *e_pos1_29_1903 = ext_grs_act_add_edge_to_keep(pattern, "pos1_29_1903", 0, n_Load575_1868, n_Proj576_1864, 24, e_pos1_29); - ext_grs_edge_t *e_pos2_46_1904 = ext_grs_act_add_edge_to_keep(pattern, "pos2_46_1904", 1, n_MultipleAdd5681_1860, n_Load590_1875, 25, e_pos2_46); - ext_grs_edge_t *e_pos1_60_1905 = ext_grs_act_add_edge(pattern, "pos1_60_1905", 0, n_Vector_op_ProjData, n_VProj24_1867, 36); - ext_grs_edge_t *e_e28_1906 = ext_grs_act_add_edge_to_keep(pattern, "e28_1906", ext_grs_NO_EDGE_POS, n_IR_node5689_1871, n_MultipleAdd5687_1857, 26, e_e28); - ext_grs_edge_t *e_e27_1907 = ext_grs_act_add_edge_to_keep(pattern, "e27_1907", ext_grs_NO_EDGE_POS, n_IR_node5688_1874, n_MultipleAdd5687_1857, 27, e_e27); - ext_grs_edge_t *e_e26_1908 = ext_grs_act_add_edge_to_keep(pattern, "e26_1908", ext_grs_NO_EDGE_POS, n_Arg_0_1861, n_MultipleAdd5687_1857, 28, e_e26); - ext_grs_edge_t *e_pos1_63_1909 = ext_grs_act_add_edge(pattern, "pos1_63_1909", 0, n_Vector_op_ProjData, n_VProj30_1865, 37); - ext_grs_edge_t *e_pos1_62_1910 = ext_grs_act_add_edge(pattern, "pos1_62_1910", 0, n_Vector_op_ProjData, n_VProj28_1870, 38); - ext_grs_edge_t *e_pos1_61_1911 = ext_grs_act_add_edge(pattern, "pos1_61_1911", 0, n_Vector_op_ProjData, n_VProj26_1856, 39); - - } /* The replacement */ - - /* Eval functions */ - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_32226); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_32229); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_32232); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_32235); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_32238); - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_32241); - } /* The Action */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* vload_4f_32_variant2 */ - - -/* functions for evaluation of conditions of action vstore_4f_variant0 */ -static int grs_cond_func_44474(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[0/* VProj3987 */]) == 0; -} -static int grs_cond_func_44477(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[2/* VProj4017 */]) == 2; -} -static int grs_cond_func_44480(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[5/* VProj4032 */]) == 3; -} -static int grs_cond_func_44483(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[3/* Const4028 */])) == 12; -} -static int grs_cond_func_44486(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[19/* Const4013 */])) == 8; -} -static int grs_cond_func_44489(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[17/* Proj4009 */]) == 0; -} -static int grs_cond_func_44492(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[21/* MultipleAdd5824 */]) == 2; -} -static int grs_cond_func_44495(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[18/* VProj4002 */]) == 1; -} -static int grs_cond_func_44498(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[20/* MultipleAdd5826 */]) == 2; -} -static int grs_cond_func_44501(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[8/* MultipleAdd5831 */]) == 2; -} -static int grs_cond_func_44504(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[6/* MultipleAdd5828 */]) == 2; -} -static int grs_cond_func_44507(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[16/* Proj3994 */]) == 0; -} -static int grs_cond_func_44510(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[9/* Const5830 */])) == 0; -} -static int grs_cond_func_44513(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[15/* Proj4024 */]) == 0; -} -static int grs_cond_func_44516(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[1/* Proj4039 */]) == 0; -} - -static void *grs_eval_out_func_44659(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { - set_Proj_proj(rpl_node_map[22/* Vector_op_ProjM */], 0); - return(NULL); -} -/* functions for building the pattern of action vstore_4f_variant0 */ -static _inline ext_grs_action_t *grs_action_vstore_4f_variant0_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_rule, "vstore_4f_variant0"); - int check; - { /* The action */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - ext_grs_node_t *n_VProj3987 = ext_grs_act_add_node(pattern, "VProj3987", grs_op_VProj, mode_F, 0); - ext_grs_node_t *n_Proj4039 = ext_grs_act_add_node(pattern, "Proj4039", grs_op_Proj, mode_M, 1); - ext_grs_node_t *n_VProj4017 = ext_grs_act_add_node(pattern, "VProj4017", grs_op_VProj, mode_F, 2); - ext_grs_node_t *n_Const4028 = ext_grs_act_add_node(pattern, "Const4028", grs_op_Const, mode_Is, 3); - ext_grs_node_t *n_Store3993 = ext_grs_act_add_node(pattern, "Store3993", grs_op_Store, mode_T, 4); - ext_grs_node_t *n_VProj4032 = ext_grs_act_add_node(pattern, "VProj4032", grs_op_VProj, mode_F, 5); - ext_grs_node_t *n_MultipleAdd5828 = ext_grs_act_add_node(pattern, "MultipleAdd5828", grs_op_MultipleAdd, mode_P, 6); - ext_grs_node_t *n_Store4038 = ext_grs_act_add_node(pattern, "Store4038", grs_op_Store, mode_T, 7); - ext_grs_node_t *n_MultipleAdd5831 = ext_grs_act_add_node(pattern, "MultipleAdd5831", grs_op_MultipleAdd, mode_P, 8); - ext_grs_node_t *n_Const5830 = ext_grs_act_add_node(pattern, "Const5830", grs_op_Const, mode_Is, 9); - ext_grs_node_t *n_Arg_0 = ext_grs_act_add_node(pattern, "Arg_0", grs_op_VectorBase, mode_ANY, 10); - ext_grs_node_t *n_Arg_1 = ext_grs_act_add_node(pattern, "Arg_1", grs_op_VectorBase, mode_ANY, 11); - ext_grs_node_t *n_Store4023 = ext_grs_act_add_node(pattern, "Store4023", grs_op_Store, mode_T, 12); - ext_grs_node_t *n_Vector_op_Block = ext_grs_act_add_node(pattern, "Vector_op_Block", grs_op_Block, mode_BB, 13); - ext_grs_node_t *n_Store4008 = ext_grs_act_add_node(pattern, "Store4008", grs_op_Store, mode_T, 14); - ext_grs_node_t *n_Proj4024 = ext_grs_act_add_node(pattern, "Proj4024", grs_op_Proj, mode_M, 15); - ext_grs_node_t *n_Proj3994 = ext_grs_act_add_node(pattern, "Proj3994", grs_op_Proj, mode_M, 16); - ext_grs_node_t *n_Proj4009 = ext_grs_act_add_node(pattern, "Proj4009", grs_op_Proj, mode_M, 17); - ext_grs_node_t *n_VProj4002 = ext_grs_act_add_node(pattern, "VProj4002", grs_op_VProj, mode_F, 18); - ext_grs_node_t *n_Const4013 = ext_grs_act_add_node(pattern, "Const4013", grs_op_Const, mode_Is, 19); - ext_grs_node_t *n_MultipleAdd5826 = ext_grs_act_add_node(pattern, "MultipleAdd5826", grs_op_MultipleAdd, mode_P, 20); - ext_grs_node_t *n_MultipleAdd5824 = ext_grs_act_add_node(pattern, "MultipleAdd5824", grs_op_MultipleAdd, mode_P, 21); - - /* The edges of the pattern */ - ext_grs_edge_t *e_pos1_30 = ext_grs_act_add_edge(pattern, "pos1_30", 0, n_Arg_0, n_VProj4032, 0); - ext_grs_edge_t *e_pos1_31 = ext_grs_act_add_edge(pattern, "pos1_31", 0, n_Store4008, n_Proj4009, 1); - ext_grs_edge_t *e_pos0_32 = ext_grs_act_add_edge(pattern, "pos0_32", -1, n_Vector_op_Block, n_Store4008, 2); - ext_grs_edge_t *e_e35 = ext_grs_act_add_edge(pattern, "e35", ext_grs_NO_EDGE_POS, n_Const4028, n_MultipleAdd5824, 3); - ext_grs_edge_t *e_e36 = ext_grs_act_add_edge(pattern, "e36", ext_grs_NO_EDGE_POS, n_Arg_1, n_MultipleAdd5824, 4); - ext_grs_edge_t *e_pos1_37 = ext_grs_act_add_edge(pattern, "pos1_37", 0, n_Arg_0, n_VProj4002, 5); - ext_grs_edge_t *e_pos2_33 = ext_grs_act_add_edge(pattern, "pos2_33", 1, n_MultipleAdd5828, n_Store4008, 6); - ext_grs_edge_t *e_e38 = ext_grs_act_add_edge(pattern, "e38", ext_grs_NO_EDGE_POS, n_Const4013, n_MultipleAdd5826, 7); - ext_grs_edge_t *e_e39 = ext_grs_act_add_edge(pattern, "e39", ext_grs_NO_EDGE_POS, n_Arg_1, n_MultipleAdd5826, 8); - ext_grs_edge_t *e_pos0_23 = ext_grs_act_add_edge(pattern, "pos0_23", -1, n_Vector_op_Block, n_Store4023, 9); - ext_grs_edge_t *e_e42 = ext_grs_act_add_edge(pattern, "e42", ext_grs_NO_EDGE_POS, n_Arg_1, n_MultipleAdd5828, 10); - ext_grs_edge_t *e_e40 = ext_grs_act_add_edge(pattern, "e40", ext_grs_NO_EDGE_POS, n_Const5830, n_MultipleAdd5831, 11); - ext_grs_edge_t *e_pos0_26 = ext_grs_act_add_edge(pattern, "pos0_26", -1, n_Vector_op_Block, n_Store4038, 12); - ext_grs_edge_t *e_e41 = ext_grs_act_add_edge(pattern, "e41", ext_grs_NO_EDGE_POS, n_Arg_1, n_MultipleAdd5831, 13); - ext_grs_edge_t *e_pos1_47 = ext_grs_act_add_edge(pattern, "pos1_47", 0, n_Store4023, n_Proj4024, 14); - ext_grs_edge_t *e_pos1_48 = ext_grs_act_add_edge(pattern, "pos1_48", 0, n_Store4038, n_Proj4039, 15); - ext_grs_edge_t *e_pos1_43 = ext_grs_act_add_edge(pattern, "pos1_43", 0, n_Store3993, n_Proj3994, 16); - ext_grs_edge_t *e_pos3_28 = ext_grs_act_add_edge(pattern, "pos3_28", 2, n_VProj4032, n_Store4038, 17); - ext_grs_edge_t *e_pos2_24 = ext_grs_act_add_edge(pattern, "pos2_24", 1, n_MultipleAdd5826, n_Store4023, 18); - ext_grs_edge_t *e_pos2_27 = ext_grs_act_add_edge(pattern, "pos2_27", 1, n_MultipleAdd5824, n_Store4038, 19); - ext_grs_edge_t *e_pos3_25 = ext_grs_act_add_edge(pattern, "pos3_25", 2, n_VProj4017, n_Store4023, 20); - ext_grs_edge_t *e_pos3_34 = ext_grs_act_add_edge(pattern, "pos3_34", 2, n_VProj4002, n_Store4008, 21); - ext_grs_edge_t *e_pos1_22 = ext_grs_act_add_edge(pattern, "pos1_22", 0, n_Arg_0, n_VProj3987, 22); - ext_grs_edge_t *e_pos0_44 = ext_grs_act_add_edge(pattern, "pos0_44", -1, n_Vector_op_Block, n_Store3993, 23); - ext_grs_edge_t *e_pos1_29 = ext_grs_act_add_edge(pattern, "pos1_29", 0, n_Arg_0, n_VProj4017, 24); - ext_grs_edge_t *e_pos2_45 = ext_grs_act_add_edge(pattern, "pos2_45", 1, n_MultipleAdd5831, n_Store3993, 25); - ext_grs_edge_t *e_pos3_46 = ext_grs_act_add_edge(pattern, "pos3_46", 2, n_VProj3987, n_Store3993, 26); - - /* The conditions of the pattern */ - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj3987}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_44474, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj4017}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_44477, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj4032}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_44480, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const4028}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_44483, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const4013}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_44486, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj4009}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_44489, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5824}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_44492, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj4002}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_44495, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5826}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_44498, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5831}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_44501, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5828}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_44504, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj3994}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_44507, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const5830}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_44510, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj4024}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_44513, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj4039}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_44516, pattern, 1, nodes, 0, edges); - } /* if */ - - /* The negative parts of the pattern */ - - - { /* The replacement */ - ext_grs_graph_t *pattern = ext_grs_act_get_replacement(act); - - /* The nodes of the pattern */ - ext_grs_node_t *n_VProj3987_1912 = ext_grs_act_add_node_to_keep(pattern, "VProj3987_1912", grs_op_VProj, mode_F, 0, n_VProj3987); - ext_grs_node_t *n_Vector_op_ProjM = ext_grs_act_add_node(pattern, "Vector_op_ProjM", grs_op_Proj, mode_M, 22); - ext_grs_node_t *n_Sync29_1913 = ext_grs_act_add_node_to_keep(pattern, "Sync29_1913", grs_op_Sync, mode_M, 23, n_Proj4039); - ext_grs_node_t *n_VProj4017_1914 = ext_grs_act_add_node_to_keep(pattern, "VProj4017_1914", grs_op_VProj, mode_F, 2, n_VProj4017); - ext_grs_node_t *n_Const4028_1915 = ext_grs_act_add_node_to_keep(pattern, "Const4028_1915", grs_op_Const, mode_Is, 3, n_Const4028); - ext_grs_node_t *n_Sync27_1916 = ext_grs_act_add_node_to_keep(pattern, "Sync27_1916", grs_op_Sync, mode_M, 24, n_Store3993); - ext_grs_node_t *n_VProj4032_1917 = ext_grs_act_add_node_to_keep(pattern, "VProj4032_1917", grs_op_VProj, mode_F, 5, n_VProj4032); - ext_grs_node_t *n_MultipleAdd5828_1918 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5828_1918", grs_op_MultipleAdd, mode_P, 6, n_MultipleAdd5828); - ext_grs_node_t *n_Sync23_1919 = ext_grs_act_add_node_to_keep(pattern, "Sync23_1919", grs_op_Sync, mode_M, 25, n_Store4038); - ext_grs_node_t *n_MultipleAdd5831_1920 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5831_1920", grs_op_MultipleAdd, mode_P, 8, n_MultipleAdd5831); - ext_grs_node_t *n_Const5830_1921 = ext_grs_act_add_node_to_keep(pattern, "Const5830_1921", grs_op_Const, mode_Is, 9, n_Const5830); - ext_grs_node_t *n_Arg_0_1922 = ext_grs_act_add_node_to_keep(pattern, "Arg_0_1922", grs_op_VectorBase, mode_ANY, 10, n_Arg_0); - ext_grs_node_t *n_Arg_1_1923 = ext_grs_act_add_node_to_keep(pattern, "Arg_1_1923", grs_op_VectorBase, mode_ANY, 11, n_Arg_1); - ext_grs_node_t *n_Sync22_1924 = ext_grs_act_add_node_to_keep(pattern, "Sync22_1924", grs_op_Sync, mode_M, 26, n_Store4023); - ext_grs_node_t *n_Bad22 = ext_grs_act_add_node(pattern, "Bad22", grs_op_Bad, mode_ANY, 27); - ext_grs_node_t *n_Vector_op_Block_1925 = ext_grs_act_add_node_to_keep(pattern, "Vector_op_Block_1925", grs_op_Block, mode_BB, 13, n_Vector_op_Block); - ext_grs_node_t *n_Sync25_1926 = ext_grs_act_add_node_to_keep(pattern, "Sync25_1926", grs_op_Sync, mode_M, 28, n_Store4008); - ext_grs_node_t *n_Sync28_1927 = ext_grs_act_add_node_to_keep(pattern, "Sync28_1927", grs_op_Sync, mode_M, 29, n_Proj4024); - ext_grs_node_t *n_Sync26_1928 = ext_grs_act_add_node_to_keep(pattern, "Sync26_1928", grs_op_Sync, mode_M, 30, n_Proj3994); - ext_grs_node_t *n_Sync24_1929 = ext_grs_act_add_node_to_keep(pattern, "Sync24_1929", grs_op_Sync, mode_M, 31, n_Proj4009); - ext_grs_node_t *n_VProj4002_1930 = ext_grs_act_add_node_to_keep(pattern, "VProj4002_1930", grs_op_VProj, mode_F, 18, n_VProj4002); - ext_grs_node_t *n_Const4013_1931 = ext_grs_act_add_node_to_keep(pattern, "Const4013_1931", grs_op_Const, mode_Is, 19, n_Const4013); - ext_grs_node_t *n_MultipleAdd5826_1932 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5826_1932", grs_op_MultipleAdd, mode_P, 20, n_MultipleAdd5826); - ext_grs_node_t *n_MultipleAdd5824_1933 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5824_1933", grs_op_MultipleAdd, mode_P, 21, n_MultipleAdd5824); - ext_grs_node_t *n_Vector_op = ext_grs_act_add_node(pattern, "Vector_op", grs_op_Complex, mode_T, 32); - - /* The edges of the pattern */ - ext_grs_edge_t *e_pos1_30_1934 = ext_grs_act_add_edge_to_keep(pattern, "pos1_30_1934", 0, n_Arg_0_1922, n_VProj4032_1917, 0, e_pos1_30); - ext_grs_edge_t *e_pos1_31_1935 = ext_grs_act_add_edge_to_keep(pattern, "pos1_31_1935", 0, n_Sync25_1926, n_Sync24_1929, 1, e_pos1_31); - ext_grs_edge_t *e_e35_1936 = ext_grs_act_add_edge_to_keep(pattern, "e35_1936", ext_grs_NO_EDGE_POS, n_Const4028_1915, n_MultipleAdd5824_1933, 3, e_e35); - ext_grs_edge_t *e_pos0_32_1937 = ext_grs_act_add_edge_to_keep(pattern, "pos0_32_1937", -1, n_Vector_op_Block_1925, n_Sync25_1926, 2, e_pos0_32); - ext_grs_edge_t *e_e36_1938 = ext_grs_act_add_edge_to_keep(pattern, "e36_1938", ext_grs_NO_EDGE_POS, n_Arg_1_1923, n_MultipleAdd5824_1933, 4, e_e36); - ext_grs_edge_t *e_pos1_37_1939 = ext_grs_act_add_edge_to_keep(pattern, "pos1_37_1939", 0, n_Arg_0_1922, n_VProj4002_1930, 5, e_pos1_37); - ext_grs_edge_t *e_pos3_52_1940 = ext_grs_act_add_edge(pattern, "pos3_52_1940", 2, n_Bad22, n_Vector_op, 27); - ext_grs_edge_t *e_e38_1941 = ext_grs_act_add_edge_to_keep(pattern, "e38_1941", ext_grs_NO_EDGE_POS, n_Const4013_1931, n_MultipleAdd5826_1932, 7, e_e38); - ext_grs_edge_t *e_e39_1942 = ext_grs_act_add_edge_to_keep(pattern, "e39_1942", ext_grs_NO_EDGE_POS, n_Arg_1_1923, n_MultipleAdd5826_1932, 8, e_e39); - ext_grs_edge_t *e_pos0_23_1943 = ext_grs_act_add_edge_to_keep(pattern, "pos0_23_1943", -1, n_Vector_op_Block_1925, n_Sync22_1924, 9, e_pos0_23); - ext_grs_edge_t *e_e42_1944 = ext_grs_act_add_edge_to_keep(pattern, "e42_1944", ext_grs_NO_EDGE_POS, n_Arg_1_1923, n_MultipleAdd5828_1918, 10, e_e42); - ext_grs_edge_t *e_e40_1945 = ext_grs_act_add_edge_to_keep(pattern, "e40_1945", ext_grs_NO_EDGE_POS, n_Const5830_1921, n_MultipleAdd5831_1920, 11, e_e40); - ext_grs_edge_t *e_pos0_26_1946 = ext_grs_act_add_edge_to_keep(pattern, "pos0_26_1946", -1, n_Vector_op_Block_1925, n_Sync23_1919, 12, e_pos0_26); - ext_grs_edge_t *e_e41_1947 = ext_grs_act_add_edge_to_keep(pattern, "e41_1947", ext_grs_NO_EDGE_POS, n_Arg_1_1923, n_MultipleAdd5831_1920, 13, e_e41); - ext_grs_edge_t *e_pos1_47_1948 = ext_grs_act_add_edge_to_keep(pattern, "pos1_47_1948", 0, n_Sync22_1924, n_Sync28_1927, 14, e_pos1_47); - ext_grs_edge_t *e_pos1_48_1949 = ext_grs_act_add_edge_to_keep(pattern, "pos1_48_1949", 0, n_Sync23_1919, n_Sync29_1913, 15, e_pos1_48); - ext_grs_edge_t *e_pos1_43_1950 = ext_grs_act_add_edge_to_keep(pattern, "pos1_43_1950", 0, n_Sync27_1916, n_Sync26_1928, 16, e_pos1_43); - ext_grs_edge_t *e_pos0_54_1951 = ext_grs_act_add_edge(pattern, "pos0_54_1951", -1, n_Vector_op_Block_1925, n_Vector_op_ProjM, 28); - ext_grs_edge_t *e_pos1_51_1952 = ext_grs_act_add_edge(pattern, "pos1_51_1952", 0, n_Arg_0_1922, n_Vector_op, 29); - ext_grs_edge_t *e_pos2_50_1953 = ext_grs_act_add_edge(pattern, "pos2_50_1953", 1, n_MultipleAdd5831_1920, n_Vector_op, 30); - ext_grs_edge_t *e_pos1_53_1954 = ext_grs_act_add_edge(pattern, "pos1_53_1954", 0, n_Vector_op, n_Vector_op_ProjM, 31); - ext_grs_edge_t *e_pos1_22_1955 = ext_grs_act_add_edge_to_keep(pattern, "pos1_22_1955", 0, n_Arg_0_1922, n_VProj3987_1912, 22, e_pos1_22); - ext_grs_edge_t *e_pos0_49_1956 = ext_grs_act_add_edge(pattern, "pos0_49_1956", -1, n_Vector_op_Block_1925, n_Vector_op, 32); - ext_grs_edge_t *e_pos0_44_1957 = ext_grs_act_add_edge_to_keep(pattern, "pos0_44_1957", -1, n_Vector_op_Block_1925, n_Sync27_1916, 23, e_pos0_44); - ext_grs_edge_t *e_pos1_29_1958 = ext_grs_act_add_edge_to_keep(pattern, "pos1_29_1958", 0, n_Arg_0_1922, n_VProj4017_1914, 24, e_pos1_29); - - } /* The replacement */ - - /* Eval functions */ - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_44659); - } /* The Action */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* vstore_4f_variant0 */ - - -/* functions for evaluation of conditions of action vstore_4f_variant1 */ -static int grs_cond_func_44913(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[0/* VProj3987 */]) == 0; -} -static int grs_cond_func_44916(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[2/* VProj4017 */]) == 2; -} -static int grs_cond_func_44919(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[5/* VProj4032 */]) == 3; -} -static int grs_cond_func_44922(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[3/* Const4028 */])) == 12; -} -static int grs_cond_func_44925(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[19/* Const4013 */])) == 8; -} -static int grs_cond_func_44928(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[17/* Proj4009 */]) == 0; -} -static int grs_cond_func_44931(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[21/* MultipleAdd5824 */]) == 3; -} -static int grs_cond_func_44934(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[18/* VProj4002 */]) == 1; -} -static int grs_cond_func_44937(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[20/* MultipleAdd5826 */]) == 3; -} -static int grs_cond_func_44940(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[8/* MultipleAdd5831 */]) == 3; -} -static int grs_cond_func_44943(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[6/* MultipleAdd5828 */]) == 3; -} -static int grs_cond_func_44946(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[16/* Proj3994 */]) == 0; -} -static int grs_cond_func_44949(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[9/* Const5830 */])) == 0; -} -static int grs_cond_func_44952(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[15/* Proj4024 */]) == 0; -} -static int grs_cond_func_44955(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[1/* Proj4039 */]) == 0; -} - -static void *grs_eval_out_func_45104(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { - set_Proj_proj(rpl_node_map[23/* Vector_op_ProjM */], 0); - return(NULL); -} -/* functions for building the pattern of action vstore_4f_variant1 */ -static _inline ext_grs_action_t *grs_action_vstore_4f_variant1_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_rule, "vstore_4f_variant1"); - int check; - { /* The action */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - ext_grs_node_t *n_VProj3987 = ext_grs_act_add_node(pattern, "VProj3987", grs_op_VProj, mode_F, 0); - ext_grs_node_t *n_Proj4039 = ext_grs_act_add_node(pattern, "Proj4039", grs_op_Proj, mode_M, 1); - ext_grs_node_t *n_VProj4017 = ext_grs_act_add_node(pattern, "VProj4017", grs_op_VProj, mode_F, 2); - ext_grs_node_t *n_Const4028 = ext_grs_act_add_node(pattern, "Const4028", grs_op_Const, mode_Is, 3); - ext_grs_node_t *n_Store3993 = ext_grs_act_add_node(pattern, "Store3993", grs_op_Store, mode_T, 4); - ext_grs_node_t *n_VProj4032 = ext_grs_act_add_node(pattern, "VProj4032", grs_op_VProj, mode_F, 5); - ext_grs_node_t *n_MultipleAdd5828 = ext_grs_act_add_node(pattern, "MultipleAdd5828", grs_op_MultipleAdd, mode_P, 6); - ext_grs_node_t *n_Store4038 = ext_grs_act_add_node(pattern, "Store4038", grs_op_Store, mode_T, 7); - ext_grs_node_t *n_MultipleAdd5831 = ext_grs_act_add_node(pattern, "MultipleAdd5831", grs_op_MultipleAdd, mode_P, 8); - ext_grs_node_t *n_Const5830 = ext_grs_act_add_node(pattern, "Const5830", grs_op_Const, mode_Is, 9); - ext_grs_node_t *n_Arg_0 = ext_grs_act_add_node(pattern, "Arg_0", grs_op_VectorBase, mode_ANY, 10); - ext_grs_node_t *n_Arg_1 = ext_grs_act_add_node(pattern, "Arg_1", grs_op_VectorBase, mode_ANY, 11); - ext_grs_node_t *n_Store4023 = ext_grs_act_add_node(pattern, "Store4023", grs_op_Store, mode_T, 12); - ext_grs_node_t *n_Vector_op_Block = ext_grs_act_add_node(pattern, "Vector_op_Block", grs_op_Block, mode_BB, 13); - ext_grs_node_t *n_Store4008 = ext_grs_act_add_node(pattern, "Store4008", grs_op_Store, mode_T, 14); - ext_grs_node_t *n_Proj4024 = ext_grs_act_add_node(pattern, "Proj4024", grs_op_Proj, mode_M, 15); - ext_grs_node_t *n_Proj3994 = ext_grs_act_add_node(pattern, "Proj3994", grs_op_Proj, mode_M, 16); - ext_grs_node_t *n_Proj4009 = ext_grs_act_add_node(pattern, "Proj4009", grs_op_Proj, mode_M, 17); - ext_grs_node_t *n_VProj4002 = ext_grs_act_add_node(pattern, "VProj4002", grs_op_VProj, mode_F, 18); - ext_grs_node_t *n_Const4013 = ext_grs_act_add_node(pattern, "Const4013", grs_op_Const, mode_Is, 19); - ext_grs_node_t *n_MultipleAdd5826 = ext_grs_act_add_node(pattern, "MultipleAdd5826", grs_op_MultipleAdd, mode_P, 20); - ext_grs_node_t *n_MultipleAdd5824 = ext_grs_act_add_node(pattern, "MultipleAdd5824", grs_op_MultipleAdd, mode_P, 21); - ext_grs_node_t *n_IR_node5834 = ext_grs_act_add_node(pattern, "IR_node5834", grs_op_IR_node, mode_ANY, 22); - - /* The edges of the pattern */ - ext_grs_edge_t *e_pos1_30 = ext_grs_act_add_edge(pattern, "pos1_30", 0, n_Arg_0, n_VProj4017, 0); - ext_grs_edge_t *e_pos1_31 = ext_grs_act_add_edge(pattern, "pos1_31", 0, n_Arg_0, n_VProj4032, 1); - ext_grs_edge_t *e_pos0_33 = ext_grs_act_add_edge(pattern, "pos0_33", -1, n_Vector_op_Block, n_Store4008, 2); - ext_grs_edge_t *e_e36 = ext_grs_act_add_edge(pattern, "e36", ext_grs_NO_EDGE_POS, n_Const4028, n_MultipleAdd5824, 3); - ext_grs_edge_t *e_pos1_39 = ext_grs_act_add_edge(pattern, "pos1_39", 0, n_Arg_0, n_VProj4002, 4); - ext_grs_edge_t *e_pos1_32 = ext_grs_act_add_edge(pattern, "pos1_32", 0, n_Store4008, n_Proj4009, 5); - ext_grs_edge_t *e_pos2_34 = ext_grs_act_add_edge(pattern, "pos2_34", 1, n_MultipleAdd5828, n_Store4008, 6); - ext_grs_edge_t *e_pos3_51 = ext_grs_act_add_edge(pattern, "pos3_51", 2, n_VProj3987, n_Store3993, 7); - ext_grs_edge_t *e_e38 = ext_grs_act_add_edge(pattern, "e38", ext_grs_NO_EDGE_POS, n_IR_node5834, n_MultipleAdd5824, 8); - ext_grs_edge_t *e_e37 = ext_grs_act_add_edge(pattern, "e37", ext_grs_NO_EDGE_POS, n_Arg_1, n_MultipleAdd5824, 9); - ext_grs_edge_t *e_e46 = ext_grs_act_add_edge(pattern, "e46", ext_grs_NO_EDGE_POS, n_Arg_1, n_MultipleAdd5828, 10); - ext_grs_edge_t *e_e47 = ext_grs_act_add_edge(pattern, "e47", ext_grs_NO_EDGE_POS, n_IR_node5834, n_MultipleAdd5828, 11); - ext_grs_edge_t *e_e44 = ext_grs_act_add_edge(pattern, "e44", ext_grs_NO_EDGE_POS, n_Arg_1, n_MultipleAdd5831, 12); - ext_grs_edge_t *e_e45 = ext_grs_act_add_edge(pattern, "e45", ext_grs_NO_EDGE_POS, n_IR_node5834, n_MultipleAdd5831, 13); - ext_grs_edge_t *e_e42 = ext_grs_act_add_edge(pattern, "e42", ext_grs_NO_EDGE_POS, n_IR_node5834, n_MultipleAdd5826, 14); - ext_grs_edge_t *e_pos0_24 = ext_grs_act_add_edge(pattern, "pos0_24", -1, n_Vector_op_Block, n_Store4023, 15); - ext_grs_edge_t *e_e43 = ext_grs_act_add_edge(pattern, "e43", ext_grs_NO_EDGE_POS, n_Const5830, n_MultipleAdd5831, 16); - ext_grs_edge_t *e_pos0_27 = ext_grs_act_add_edge(pattern, "pos0_27", -1, n_Vector_op_Block, n_Store4038, 17); - ext_grs_edge_t *e_e40 = ext_grs_act_add_edge(pattern, "e40", ext_grs_NO_EDGE_POS, n_Const4013, n_MultipleAdd5826, 18); - ext_grs_edge_t *e_e41 = ext_grs_act_add_edge(pattern, "e41", ext_grs_NO_EDGE_POS, n_Arg_1, n_MultipleAdd5826, 19); - ext_grs_edge_t *e_pos1_48 = ext_grs_act_add_edge(pattern, "pos1_48", 0, n_Store3993, n_Proj3994, 20); - ext_grs_edge_t *e_pos2_25 = ext_grs_act_add_edge(pattern, "pos2_25", 1, n_MultipleAdd5826, n_Store4023, 21); - ext_grs_edge_t *e_pos3_29 = ext_grs_act_add_edge(pattern, "pos3_29", 2, n_VProj4032, n_Store4038, 22); - ext_grs_edge_t *e_pos3_26 = ext_grs_act_add_edge(pattern, "pos3_26", 2, n_VProj4017, n_Store4023, 23); - ext_grs_edge_t *e_pos2_28 = ext_grs_act_add_edge(pattern, "pos2_28", 1, n_MultipleAdd5824, n_Store4038, 24); - ext_grs_edge_t *e_pos3_35 = ext_grs_act_add_edge(pattern, "pos3_35", 2, n_VProj4002, n_Store4008, 25); - ext_grs_edge_t *e_pos2_50 = ext_grs_act_add_edge(pattern, "pos2_50", 1, n_MultipleAdd5831, n_Store3993, 26); - ext_grs_edge_t *e_pos1_53 = ext_grs_act_add_edge(pattern, "pos1_53", 0, n_Store4038, n_Proj4039, 27); - ext_grs_edge_t *e_pos1_52 = ext_grs_act_add_edge(pattern, "pos1_52", 0, n_Store4023, n_Proj4024, 28); - ext_grs_edge_t *e_pos1_23 = ext_grs_act_add_edge(pattern, "pos1_23", 0, n_Arg_0, n_VProj3987, 29); - ext_grs_edge_t *e_pos0_49 = ext_grs_act_add_edge(pattern, "pos0_49", -1, n_Vector_op_Block, n_Store3993, 30); - - /* The conditions of the pattern */ - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj3987}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_44913, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj4017}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_44916, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj4032}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_44919, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const4028}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_44922, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const4013}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_44925, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj4009}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_44928, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5824}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_44931, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj4002}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_44934, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5826}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_44937, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5831}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_44940, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5828}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_44943, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj3994}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_44946, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const5830}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_44949, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj4024}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_44952, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj4039}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_44955, pattern, 1, nodes, 0, edges); - } /* if */ - - /* The negative parts of the pattern */ - - - { /* The replacement */ - ext_grs_graph_t *pattern = ext_grs_act_get_replacement(act); - - /* The nodes of the pattern */ - ext_grs_node_t *n_VProj3987_1959 = ext_grs_act_add_node_to_keep(pattern, "VProj3987_1959", grs_op_VProj, mode_F, 0, n_VProj3987); - ext_grs_node_t *n_Vector_op_ProjM = ext_grs_act_add_node(pattern, "Vector_op_ProjM", grs_op_Proj, mode_M, 23); - ext_grs_node_t *n_Sync30_1960 = ext_grs_act_add_node_to_keep(pattern, "Sync30_1960", grs_op_Sync, mode_M, 24, n_Proj4039); - ext_grs_node_t *n_VProj4017_1961 = ext_grs_act_add_node_to_keep(pattern, "VProj4017_1961", grs_op_VProj, mode_F, 2, n_VProj4017); - ext_grs_node_t *n_Const4028_1962 = ext_grs_act_add_node_to_keep(pattern, "Const4028_1962", grs_op_Const, mode_Is, 3, n_Const4028); - ext_grs_node_t *n_Sync28_1963 = ext_grs_act_add_node_to_keep(pattern, "Sync28_1963", grs_op_Sync, mode_M, 25, n_Store3993); - ext_grs_node_t *n_VProj4032_1964 = ext_grs_act_add_node_to_keep(pattern, "VProj4032_1964", grs_op_VProj, mode_F, 5, n_VProj4032); - ext_grs_node_t *n_MultipleAdd5828_1965 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5828_1965", grs_op_MultipleAdd, mode_P, 6, n_MultipleAdd5828); - ext_grs_node_t *n_Sync24_1966 = ext_grs_act_add_node_to_keep(pattern, "Sync24_1966", grs_op_Sync, mode_M, 26, n_Store4038); - ext_grs_node_t *n_MultipleAdd5831_1967 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5831_1967", grs_op_MultipleAdd, mode_P, 8, n_MultipleAdd5831); - ext_grs_node_t *n_Const5830_1968 = ext_grs_act_add_node_to_keep(pattern, "Const5830_1968", grs_op_Const, mode_Is, 9, n_Const5830); - ext_grs_node_t *n_Arg_0_1969 = ext_grs_act_add_node_to_keep(pattern, "Arg_0_1969", grs_op_VectorBase, mode_ANY, 10, n_Arg_0); - ext_grs_node_t *n_Arg_1_1970 = ext_grs_act_add_node_to_keep(pattern, "Arg_1_1970", grs_op_VectorBase, mode_ANY, 11, n_Arg_1); - ext_grs_node_t *n_Sync23_1971 = ext_grs_act_add_node_to_keep(pattern, "Sync23_1971", grs_op_Sync, mode_M, 27, n_Store4023); - ext_grs_node_t *n_Bad23 = ext_grs_act_add_node(pattern, "Bad23", grs_op_Bad, mode_ANY, 28); - ext_grs_node_t *n_Vector_op_Block_1972 = ext_grs_act_add_node_to_keep(pattern, "Vector_op_Block_1972", grs_op_Block, mode_BB, 13, n_Vector_op_Block); - ext_grs_node_t *n_Sync26_1973 = ext_grs_act_add_node_to_keep(pattern, "Sync26_1973", grs_op_Sync, mode_M, 29, n_Store4008); - ext_grs_node_t *n_Sync29_1974 = ext_grs_act_add_node_to_keep(pattern, "Sync29_1974", grs_op_Sync, mode_M, 30, n_Proj4024); - ext_grs_node_t *n_Sync27_1975 = ext_grs_act_add_node_to_keep(pattern, "Sync27_1975", grs_op_Sync, mode_M, 31, n_Proj3994); - ext_grs_node_t *n_Sync25_1976 = ext_grs_act_add_node_to_keep(pattern, "Sync25_1976", grs_op_Sync, mode_M, 32, n_Proj4009); - ext_grs_node_t *n_VProj4002_1977 = ext_grs_act_add_node_to_keep(pattern, "VProj4002_1977", grs_op_VProj, mode_F, 18, n_VProj4002); - ext_grs_node_t *n_Const4013_1978 = ext_grs_act_add_node_to_keep(pattern, "Const4013_1978", grs_op_Const, mode_Is, 19, n_Const4013); - ext_grs_node_t *n_MultipleAdd5826_1979 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5826_1979", grs_op_MultipleAdd, mode_P, 20, n_MultipleAdd5826); - ext_grs_node_t *n_MultipleAdd5824_1980 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5824_1980", grs_op_MultipleAdd, mode_P, 21, n_MultipleAdd5824); - ext_grs_node_t *n_IR_node5834_1981 = ext_grs_act_add_node_to_keep(pattern, "IR_node5834_1981", grs_op_IR_node, mode_ANY, 22, n_IR_node5834); - ext_grs_node_t *n_Vector_op = ext_grs_act_add_node(pattern, "Vector_op", grs_op_Complex, mode_T, 33); - - /* The edges of the pattern */ - ext_grs_edge_t *e_pos1_30_1982 = ext_grs_act_add_edge_to_keep(pattern, "pos1_30_1982", 0, n_Arg_0_1969, n_VProj4017_1961, 0, e_pos1_30); - ext_grs_edge_t *e_pos0_33_1983 = ext_grs_act_add_edge_to_keep(pattern, "pos0_33_1983", -1, n_Vector_op_Block_1972, n_Sync26_1973, 2, e_pos0_33); - ext_grs_edge_t *e_pos1_31_1984 = ext_grs_act_add_edge_to_keep(pattern, "pos1_31_1984", 0, n_Arg_0_1969, n_VProj4032_1964, 1, e_pos1_31); - ext_grs_edge_t *e_e36_1985 = ext_grs_act_add_edge_to_keep(pattern, "e36_1985", ext_grs_NO_EDGE_POS, n_Const4028_1962, n_MultipleAdd5824_1980, 3, e_e36); - ext_grs_edge_t *e_pos1_39_1986 = ext_grs_act_add_edge_to_keep(pattern, "pos1_39_1986", 0, n_Arg_0_1969, n_VProj4002_1977, 4, e_pos1_39); - ext_grs_edge_t *e_pos1_32_1987 = ext_grs_act_add_edge_to_keep(pattern, "pos1_32_1987", 0, n_Sync26_1973, n_Sync25_1976, 5, e_pos1_32); - ext_grs_edge_t *e_e38_1988 = ext_grs_act_add_edge_to_keep(pattern, "e38_1988", ext_grs_NO_EDGE_POS, n_IR_node5834_1981, n_MultipleAdd5824_1980, 8, e_e38); - ext_grs_edge_t *e_e37_1989 = ext_grs_act_add_edge_to_keep(pattern, "e37_1989", ext_grs_NO_EDGE_POS, n_Arg_1_1970, n_MultipleAdd5824_1980, 9, e_e37); - ext_grs_edge_t *e_pos3_57_1990 = ext_grs_act_add_edge(pattern, "pos3_57_1990", 2, n_Bad23, n_Vector_op, 31); - ext_grs_edge_t *e_e46_1991 = ext_grs_act_add_edge_to_keep(pattern, "e46_1991", ext_grs_NO_EDGE_POS, n_Arg_1_1970, n_MultipleAdd5828_1965, 10, e_e46); - ext_grs_edge_t *e_e47_1992 = ext_grs_act_add_edge_to_keep(pattern, "e47_1992", ext_grs_NO_EDGE_POS, n_IR_node5834_1981, n_MultipleAdd5828_1965, 11, e_e47); - ext_grs_edge_t *e_e44_1993 = ext_grs_act_add_edge_to_keep(pattern, "e44_1993", ext_grs_NO_EDGE_POS, n_Arg_1_1970, n_MultipleAdd5831_1967, 12, e_e44); - ext_grs_edge_t *e_e45_1994 = ext_grs_act_add_edge_to_keep(pattern, "e45_1994", ext_grs_NO_EDGE_POS, n_IR_node5834_1981, n_MultipleAdd5831_1967, 13, e_e45); - ext_grs_edge_t *e_e42_1995 = ext_grs_act_add_edge_to_keep(pattern, "e42_1995", ext_grs_NO_EDGE_POS, n_IR_node5834_1981, n_MultipleAdd5826_1979, 14, e_e42); - ext_grs_edge_t *e_pos0_24_1996 = ext_grs_act_add_edge_to_keep(pattern, "pos0_24_1996", -1, n_Vector_op_Block_1972, n_Sync23_1971, 15, e_pos0_24); - ext_grs_edge_t *e_e43_1997 = ext_grs_act_add_edge_to_keep(pattern, "e43_1997", ext_grs_NO_EDGE_POS, n_Const5830_1968, n_MultipleAdd5831_1967, 16, e_e43); - ext_grs_edge_t *e_pos0_27_1998 = ext_grs_act_add_edge_to_keep(pattern, "pos0_27_1998", -1, n_Vector_op_Block_1972, n_Sync24_1966, 17, e_pos0_27); - ext_grs_edge_t *e_e40_1999 = ext_grs_act_add_edge_to_keep(pattern, "e40_1999", ext_grs_NO_EDGE_POS, n_Const4013_1978, n_MultipleAdd5826_1979, 18, e_e40); - ext_grs_edge_t *e_e41_2000 = ext_grs_act_add_edge_to_keep(pattern, "e41_2000", ext_grs_NO_EDGE_POS, n_Arg_1_1970, n_MultipleAdd5826_1979, 19, e_e41); - ext_grs_edge_t *e_pos1_48_2001 = ext_grs_act_add_edge_to_keep(pattern, "pos1_48_2001", 0, n_Sync28_1963, n_Sync27_1975, 20, e_pos1_48); - ext_grs_edge_t *e_pos0_59_2002 = ext_grs_act_add_edge(pattern, "pos0_59_2002", -1, n_Vector_op_Block_1972, n_Vector_op_ProjM, 32); - ext_grs_edge_t *e_pos0_54_2003 = ext_grs_act_add_edge(pattern, "pos0_54_2003", -1, n_Vector_op_Block_1972, n_Vector_op, 33); - ext_grs_edge_t *e_pos1_56_2004 = ext_grs_act_add_edge(pattern, "pos1_56_2004", 0, n_Arg_0_1969, n_Vector_op, 34); - ext_grs_edge_t *e_pos1_58_2005 = ext_grs_act_add_edge(pattern, "pos1_58_2005", 0, n_Vector_op, n_Vector_op_ProjM, 35); - ext_grs_edge_t *e_pos2_55_2006 = ext_grs_act_add_edge(pattern, "pos2_55_2006", 1, n_MultipleAdd5831_1967, n_Vector_op, 36); - ext_grs_edge_t *e_pos1_53_2007 = ext_grs_act_add_edge_to_keep(pattern, "pos1_53_2007", 0, n_Sync24_1966, n_Sync30_1960, 27, e_pos1_53); - ext_grs_edge_t *e_pos1_52_2008 = ext_grs_act_add_edge_to_keep(pattern, "pos1_52_2008", 0, n_Sync23_1971, n_Sync29_1974, 28, e_pos1_52); - ext_grs_edge_t *e_pos1_23_2009 = ext_grs_act_add_edge_to_keep(pattern, "pos1_23_2009", 0, n_Arg_0_1969, n_VProj3987_1959, 29, e_pos1_23); - ext_grs_edge_t *e_pos0_49_2010 = ext_grs_act_add_edge_to_keep(pattern, "pos0_49_2010", -1, n_Vector_op_Block_1972, n_Sync28_1963, 30, e_pos0_49); - - } /* The replacement */ - - /* Eval functions */ - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_45104); - } /* The Action */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* vstore_4f_variant1 */ - - -/* functions for evaluation of conditions of action vstore_4f_variant2 */ -static int grs_cond_func_45376(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[0/* VProj3987 */]) == 0; -} -static int grs_cond_func_45379(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[2/* VProj4017 */]) == 2; -} -static int grs_cond_func_45382(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[5/* VProj4032 */]) == 3; -} -static int grs_cond_func_45385(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[3/* Const4028 */])) == 12; -} -static int grs_cond_func_45388(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[19/* Const4013 */])) == 8; -} -static int grs_cond_func_45391(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[17/* Proj4009 */]) == 0; -} -static int grs_cond_func_45394(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[21/* MultipleAdd5824 */]) == 4; -} -static int grs_cond_func_45397(ir_node **node_map, const ir_edge_t **edge_map) { - return get_VProj_proj(node_map[18/* VProj4002 */]) == 1; -} -static int grs_cond_func_45400(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[20/* MultipleAdd5826 */]) == 4; -} -static int grs_cond_func_45403(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[8/* MultipleAdd5831 */]) == 4; -} -static int grs_cond_func_45406(ir_node **node_map, const ir_edge_t **edge_map) { - return get_irn_arity(node_map[6/* MultipleAdd5828 */]) == 4; -} -static int grs_cond_func_45409(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[16/* Proj3994 */]) == 0; -} -static int grs_cond_func_45412(ir_node **node_map, const ir_edge_t **edge_map) { - return get_tarval_long(get_Const_tarval(node_map[9/* Const5830 */])) == 0; -} -static int grs_cond_func_45415(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[15/* Proj4024 */]) == 0; -} -static int grs_cond_func_45418(ir_node **node_map, const ir_edge_t **edge_map) { - return get_Proj_proj(node_map[1/* Proj4039 */]) == 0; -} - -static void *grs_eval_out_func_45573(ir_node **rpl_node_map, const ir_edge_t **rpl_edge_map, ir_node **pat_node_map, void *data) { - set_Proj_proj(rpl_node_map[24/* Vector_op_ProjM */], 0); - return(NULL); -} -/* functions for building the pattern of action vstore_4f_variant2 */ -static _inline ext_grs_action_t *grs_action_vstore_4f_variant2_init() { - ext_grs_action_t *act = ext_grs_new_action(ext_grs_k_rule, "vstore_4f_variant2"); - int check; - { /* The action */ - ext_grs_graph_t *pattern = ext_grs_act_get_pattern(act); - - /* The nodes of the pattern */ - ext_grs_node_t *n_VProj3987 = ext_grs_act_add_node(pattern, "VProj3987", grs_op_VProj, mode_F, 0); - ext_grs_node_t *n_Proj4039 = ext_grs_act_add_node(pattern, "Proj4039", grs_op_Proj, mode_M, 1); - ext_grs_node_t *n_VProj4017 = ext_grs_act_add_node(pattern, "VProj4017", grs_op_VProj, mode_F, 2); - ext_grs_node_t *n_Const4028 = ext_grs_act_add_node(pattern, "Const4028", grs_op_Const, mode_Is, 3); - ext_grs_node_t *n_Store3993 = ext_grs_act_add_node(pattern, "Store3993", grs_op_Store, mode_T, 4); - ext_grs_node_t *n_VProj4032 = ext_grs_act_add_node(pattern, "VProj4032", grs_op_VProj, mode_F, 5); - ext_grs_node_t *n_MultipleAdd5828 = ext_grs_act_add_node(pattern, "MultipleAdd5828", grs_op_MultipleAdd, mode_P, 6); - ext_grs_node_t *n_Store4038 = ext_grs_act_add_node(pattern, "Store4038", grs_op_Store, mode_T, 7); - ext_grs_node_t *n_MultipleAdd5831 = ext_grs_act_add_node(pattern, "MultipleAdd5831", grs_op_MultipleAdd, mode_P, 8); - ext_grs_node_t *n_Const5830 = ext_grs_act_add_node(pattern, "Const5830", grs_op_Const, mode_Is, 9); - ext_grs_node_t *n_Arg_0 = ext_grs_act_add_node(pattern, "Arg_0", grs_op_VectorBase, mode_ANY, 10); - ext_grs_node_t *n_Arg_1 = ext_grs_act_add_node(pattern, "Arg_1", grs_op_VectorBase, mode_ANY, 11); - ext_grs_node_t *n_Store4023 = ext_grs_act_add_node(pattern, "Store4023", grs_op_Store, mode_T, 12); - ext_grs_node_t *n_Vector_op_Block = ext_grs_act_add_node(pattern, "Vector_op_Block", grs_op_Block, mode_BB, 13); - ext_grs_node_t *n_Store4008 = ext_grs_act_add_node(pattern, "Store4008", grs_op_Store, mode_T, 14); - ext_grs_node_t *n_Proj4024 = ext_grs_act_add_node(pattern, "Proj4024", grs_op_Proj, mode_M, 15); - ext_grs_node_t *n_Proj3994 = ext_grs_act_add_node(pattern, "Proj3994", grs_op_Proj, mode_M, 16); - ext_grs_node_t *n_Proj4009 = ext_grs_act_add_node(pattern, "Proj4009", grs_op_Proj, mode_M, 17); - ext_grs_node_t *n_VProj4002 = ext_grs_act_add_node(pattern, "VProj4002", grs_op_VProj, mode_F, 18); - ext_grs_node_t *n_Const4013 = ext_grs_act_add_node(pattern, "Const4013", grs_op_Const, mode_Is, 19); - ext_grs_node_t *n_MultipleAdd5826 = ext_grs_act_add_node(pattern, "MultipleAdd5826", grs_op_MultipleAdd, mode_P, 20); - ext_grs_node_t *n_MultipleAdd5824 = ext_grs_act_add_node(pattern, "MultipleAdd5824", grs_op_MultipleAdd, mode_P, 21); - ext_grs_node_t *n_IR_node5835 = ext_grs_act_add_node(pattern, "IR_node5835", grs_op_IR_node, mode_ANY, 22); - ext_grs_node_t *n_IR_node5834 = ext_grs_act_add_node(pattern, "IR_node5834", grs_op_IR_node, mode_ANY, 23); - - /* The edges of the pattern */ - ext_grs_edge_t *e_pos0_34 = ext_grs_act_add_edge(pattern, "pos0_34", -1, n_Vector_op_Block, n_Store4008, 0); - ext_grs_edge_t *e_pos1_31 = ext_grs_act_add_edge(pattern, "pos1_31", 0, n_Arg_0, n_VProj4017, 1); - ext_grs_edge_t *e_pos1_32 = ext_grs_act_add_edge(pattern, "pos1_32", 0, n_Arg_0, n_VProj4032, 2); - ext_grs_edge_t *e_pos1_33 = ext_grs_act_add_edge(pattern, "pos1_33", 0, n_Store4008, n_Proj4009, 3); - ext_grs_edge_t *e_pos2_35 = ext_grs_act_add_edge(pattern, "pos2_35", 1, n_MultipleAdd5828, n_Store4008, 4); - ext_grs_edge_t *e_e38 = ext_grs_act_add_edge(pattern, "e38", ext_grs_NO_EDGE_POS, n_Arg_1, n_MultipleAdd5824, 5); - ext_grs_edge_t *e_e37 = ext_grs_act_add_edge(pattern, "e37", ext_grs_NO_EDGE_POS, n_Const4028, n_MultipleAdd5824, 6); - ext_grs_edge_t *e_pos3_56 = ext_grs_act_add_edge(pattern, "pos3_56", 2, n_VProj3987, n_Store3993, 7); - ext_grs_edge_t *e_e39 = ext_grs_act_add_edge(pattern, "e39", ext_grs_NO_EDGE_POS, n_IR_node5834, n_MultipleAdd5824, 8); - ext_grs_edge_t *e_e46 = ext_grs_act_add_edge(pattern, "e46", ext_grs_NO_EDGE_POS, n_Const5830, n_MultipleAdd5831, 9); - ext_grs_edge_t *e_e47 = ext_grs_act_add_edge(pattern, "e47", ext_grs_NO_EDGE_POS, n_Arg_1, n_MultipleAdd5831, 10); - ext_grs_edge_t *e_pos1_41 = ext_grs_act_add_edge(pattern, "pos1_41", 0, n_Arg_0, n_VProj4002, 11); - ext_grs_edge_t *e_e44 = ext_grs_act_add_edge(pattern, "e44", ext_grs_NO_EDGE_POS, n_IR_node5834, n_MultipleAdd5826, 12); - ext_grs_edge_t *e_e45 = ext_grs_act_add_edge(pattern, "e45", ext_grs_NO_EDGE_POS, n_IR_node5835, n_MultipleAdd5826, 13); - ext_grs_edge_t *e_pos0_25 = ext_grs_act_add_edge(pattern, "pos0_25", -1, n_Vector_op_Block, n_Store4023, 14); - ext_grs_edge_t *e_e42 = ext_grs_act_add_edge(pattern, "e42", ext_grs_NO_EDGE_POS, n_Const4013, n_MultipleAdd5826, 15); - ext_grs_edge_t *e_e43 = ext_grs_act_add_edge(pattern, "e43", ext_grs_NO_EDGE_POS, n_Arg_1, n_MultipleAdd5826, 16); - ext_grs_edge_t *e_e40 = ext_grs_act_add_edge(pattern, "e40", ext_grs_NO_EDGE_POS, n_IR_node5835, n_MultipleAdd5824, 17); - ext_grs_edge_t *e_pos3_27 = ext_grs_act_add_edge(pattern, "pos3_27", 2, n_VProj4017, n_Store4023, 18); - ext_grs_edge_t *e_pos2_26 = ext_grs_act_add_edge(pattern, "pos2_26", 1, n_MultipleAdd5826, n_Store4023, 19); - ext_grs_edge_t *e_pos2_29 = ext_grs_act_add_edge(pattern, "pos2_29", 1, n_MultipleAdd5824, n_Store4038, 20); - ext_grs_edge_t *e_pos0_28 = ext_grs_act_add_edge(pattern, "pos0_28", -1, n_Vector_op_Block, n_Store4038, 21); - ext_grs_edge_t *e_e49 = ext_grs_act_add_edge(pattern, "e49", ext_grs_NO_EDGE_POS, n_IR_node5835, n_MultipleAdd5831, 22); - ext_grs_edge_t *e_e48 = ext_grs_act_add_edge(pattern, "e48", ext_grs_NO_EDGE_POS, n_IR_node5834, n_MultipleAdd5831, 23); - ext_grs_edge_t *e_e50 = ext_grs_act_add_edge(pattern, "e50", ext_grs_NO_EDGE_POS, n_Arg_1, n_MultipleAdd5828, 24); - ext_grs_edge_t *e_e52 = ext_grs_act_add_edge(pattern, "e52", ext_grs_NO_EDGE_POS, n_IR_node5835, n_MultipleAdd5828, 25); - ext_grs_edge_t *e_e51 = ext_grs_act_add_edge(pattern, "e51", ext_grs_NO_EDGE_POS, n_IR_node5834, n_MultipleAdd5828, 26); - ext_grs_edge_t *e_pos0_54 = ext_grs_act_add_edge(pattern, "pos0_54", -1, n_Vector_op_Block, n_Store3993, 27); - ext_grs_edge_t *e_pos1_57 = ext_grs_act_add_edge(pattern, "pos1_57", 0, n_Store4023, n_Proj4024, 28); - ext_grs_edge_t *e_pos1_58 = ext_grs_act_add_edge(pattern, "pos1_58", 0, n_Store4038, n_Proj4039, 29); - ext_grs_edge_t *e_pos2_55 = ext_grs_act_add_edge(pattern, "pos2_55", 1, n_MultipleAdd5831, n_Store3993, 30); - ext_grs_edge_t *e_pos3_30 = ext_grs_act_add_edge(pattern, "pos3_30", 2, n_VProj4032, n_Store4038, 31); - ext_grs_edge_t *e_pos3_36 = ext_grs_act_add_edge(pattern, "pos3_36", 2, n_VProj4002, n_Store4008, 32); - ext_grs_edge_t *e_pos1_53 = ext_grs_act_add_edge(pattern, "pos1_53", 0, n_Store3993, n_Proj3994, 33); - ext_grs_edge_t *e_pos1_24 = ext_grs_act_add_edge(pattern, "pos1_24", 0, n_Arg_0, n_VProj3987, 34); - - /* The conditions of the pattern */ - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj3987}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_45376, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj4017}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_45379, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj4032}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_45382, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const4028}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_45385, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const4013}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_45388, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj4009}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_45391, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5824}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_45394, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_VProj4002}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_45397, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5826}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_45400, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5831}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_45403, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_MultipleAdd5828}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_45406, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj3994}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_45409, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Const5830}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_45412, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj4024}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_45415, pattern, 1, nodes, 0, edges); - } /* if */ - - { /* if */ - ext_grs_node_t *nodes[1] = {n_Proj4039}; - ext_grs_edge_t **edges = NULL; - - ext_grs_act_register_condition(grs_cond_func_45418, pattern, 1, nodes, 0, edges); - } /* if */ - - /* The negative parts of the pattern */ - - - { /* The replacement */ - ext_grs_graph_t *pattern = ext_grs_act_get_replacement(act); - - /* The nodes of the pattern */ - ext_grs_node_t *n_VProj3987_2011 = ext_grs_act_add_node_to_keep(pattern, "VProj3987_2011", grs_op_VProj, mode_F, 0, n_VProj3987); - ext_grs_node_t *n_Vector_op_ProjM = ext_grs_act_add_node(pattern, "Vector_op_ProjM", grs_op_Proj, mode_M, 24); - ext_grs_node_t *n_Sync31_2012 = ext_grs_act_add_node_to_keep(pattern, "Sync31_2012", grs_op_Sync, mode_M, 25, n_Proj4039); - ext_grs_node_t *n_VProj4017_2013 = ext_grs_act_add_node_to_keep(pattern, "VProj4017_2013", grs_op_VProj, mode_F, 2, n_VProj4017); - ext_grs_node_t *n_Const4028_2014 = ext_grs_act_add_node_to_keep(pattern, "Const4028_2014", grs_op_Const, mode_Is, 3, n_Const4028); - ext_grs_node_t *n_Sync29_2015 = ext_grs_act_add_node_to_keep(pattern, "Sync29_2015", grs_op_Sync, mode_M, 26, n_Store3993); - ext_grs_node_t *n_VProj4032_2016 = ext_grs_act_add_node_to_keep(pattern, "VProj4032_2016", grs_op_VProj, mode_F, 5, n_VProj4032); - ext_grs_node_t *n_MultipleAdd5828_2017 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5828_2017", grs_op_MultipleAdd, mode_P, 6, n_MultipleAdd5828); - ext_grs_node_t *n_Sync25_2018 = ext_grs_act_add_node_to_keep(pattern, "Sync25_2018", grs_op_Sync, mode_M, 27, n_Store4038); - ext_grs_node_t *n_MultipleAdd5831_2019 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5831_2019", grs_op_MultipleAdd, mode_P, 8, n_MultipleAdd5831); - ext_grs_node_t *n_Const5830_2020 = ext_grs_act_add_node_to_keep(pattern, "Const5830_2020", grs_op_Const, mode_Is, 9, n_Const5830); - ext_grs_node_t *n_Bad24 = ext_grs_act_add_node(pattern, "Bad24", grs_op_Bad, mode_ANY, 28); - ext_grs_node_t *n_Arg_0_2021 = ext_grs_act_add_node_to_keep(pattern, "Arg_0_2021", grs_op_VectorBase, mode_ANY, 10, n_Arg_0); - ext_grs_node_t *n_Arg_1_2022 = ext_grs_act_add_node_to_keep(pattern, "Arg_1_2022", grs_op_VectorBase, mode_ANY, 11, n_Arg_1); - ext_grs_node_t *n_Sync24_2023 = ext_grs_act_add_node_to_keep(pattern, "Sync24_2023", grs_op_Sync, mode_M, 29, n_Store4023); - ext_grs_node_t *n_Vector_op_Block_2024 = ext_grs_act_add_node_to_keep(pattern, "Vector_op_Block_2024", grs_op_Block, mode_BB, 13, n_Vector_op_Block); - ext_grs_node_t *n_Sync27_2025 = ext_grs_act_add_node_to_keep(pattern, "Sync27_2025", grs_op_Sync, mode_M, 30, n_Store4008); - ext_grs_node_t *n_Sync30_2026 = ext_grs_act_add_node_to_keep(pattern, "Sync30_2026", grs_op_Sync, mode_M, 31, n_Proj4024); - ext_grs_node_t *n_Sync28_2027 = ext_grs_act_add_node_to_keep(pattern, "Sync28_2027", grs_op_Sync, mode_M, 32, n_Proj3994); - ext_grs_node_t *n_Sync26_2028 = ext_grs_act_add_node_to_keep(pattern, "Sync26_2028", grs_op_Sync, mode_M, 33, n_Proj4009); - ext_grs_node_t *n_VProj4002_2029 = ext_grs_act_add_node_to_keep(pattern, "VProj4002_2029", grs_op_VProj, mode_F, 18, n_VProj4002); - ext_grs_node_t *n_Const4013_2030 = ext_grs_act_add_node_to_keep(pattern, "Const4013_2030", grs_op_Const, mode_Is, 19, n_Const4013); - ext_grs_node_t *n_MultipleAdd5826_2031 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5826_2031", grs_op_MultipleAdd, mode_P, 20, n_MultipleAdd5826); - ext_grs_node_t *n_MultipleAdd5824_2032 = ext_grs_act_add_node_to_keep(pattern, "MultipleAdd5824_2032", grs_op_MultipleAdd, mode_P, 21, n_MultipleAdd5824); - ext_grs_node_t *n_IR_node5835_2033 = ext_grs_act_add_node_to_keep(pattern, "IR_node5835_2033", grs_op_IR_node, mode_ANY, 22, n_IR_node5835); - ext_grs_node_t *n_IR_node5834_2034 = ext_grs_act_add_node_to_keep(pattern, "IR_node5834_2034", grs_op_IR_node, mode_ANY, 23, n_IR_node5834); - ext_grs_node_t *n_Vector_op = ext_grs_act_add_node(pattern, "Vector_op", grs_op_Complex, mode_T, 34); - - /* The edges of the pattern */ - ext_grs_edge_t *e_pos0_34_2035 = ext_grs_act_add_edge_to_keep(pattern, "pos0_34_2035", -1, n_Vector_op_Block_2024, n_Sync27_2025, 0, e_pos0_34); - ext_grs_edge_t *e_pos1_31_2036 = ext_grs_act_add_edge_to_keep(pattern, "pos1_31_2036", 0, n_Arg_0_2021, n_VProj4017_2013, 1, e_pos1_31); - ext_grs_edge_t *e_pos1_32_2037 = ext_grs_act_add_edge_to_keep(pattern, "pos1_32_2037", 0, n_Arg_0_2021, n_VProj4032_2016, 2, e_pos1_32); - ext_grs_edge_t *e_pos1_33_2038 = ext_grs_act_add_edge_to_keep(pattern, "pos1_33_2038", 0, n_Sync27_2025, n_Sync26_2028, 3, e_pos1_33); - ext_grs_edge_t *e_e38_2039 = ext_grs_act_add_edge_to_keep(pattern, "e38_2039", ext_grs_NO_EDGE_POS, n_Arg_1_2022, n_MultipleAdd5824_2032, 5, e_e38); - ext_grs_edge_t *e_e37_2040 = ext_grs_act_add_edge_to_keep(pattern, "e37_2040", ext_grs_NO_EDGE_POS, n_Const4028_2014, n_MultipleAdd5824_2032, 6, e_e37); - ext_grs_edge_t *e_e39_2041 = ext_grs_act_add_edge_to_keep(pattern, "e39_2041", ext_grs_NO_EDGE_POS, n_IR_node5834_2034, n_MultipleAdd5824_2032, 8, e_e39); - ext_grs_edge_t *e_e46_2042 = ext_grs_act_add_edge_to_keep(pattern, "e46_2042", ext_grs_NO_EDGE_POS, n_Const5830_2020, n_MultipleAdd5831_2019, 9, e_e46); - ext_grs_edge_t *e_e47_2043 = ext_grs_act_add_edge_to_keep(pattern, "e47_2043", ext_grs_NO_EDGE_POS, n_Arg_1_2022, n_MultipleAdd5831_2019, 10, e_e47); - ext_grs_edge_t *e_pos1_41_2044 = ext_grs_act_add_edge_to_keep(pattern, "pos1_41_2044", 0, n_Arg_0_2021, n_VProj4002_2029, 11, e_pos1_41); - ext_grs_edge_t *e_e44_2045 = ext_grs_act_add_edge_to_keep(pattern, "e44_2045", ext_grs_NO_EDGE_POS, n_IR_node5834_2034, n_MultipleAdd5826_2031, 12, e_e44); - ext_grs_edge_t *e_e45_2046 = ext_grs_act_add_edge_to_keep(pattern, "e45_2046", ext_grs_NO_EDGE_POS, n_IR_node5835_2033, n_MultipleAdd5826_2031, 13, e_e45); - ext_grs_edge_t *e_pos0_25_2047 = ext_grs_act_add_edge_to_keep(pattern, "pos0_25_2047", -1, n_Vector_op_Block_2024, n_Sync24_2023, 14, e_pos0_25); - ext_grs_edge_t *e_e42_2048 = ext_grs_act_add_edge_to_keep(pattern, "e42_2048", ext_grs_NO_EDGE_POS, n_Const4013_2030, n_MultipleAdd5826_2031, 15, e_e42); - ext_grs_edge_t *e_e43_2049 = ext_grs_act_add_edge_to_keep(pattern, "e43_2049", ext_grs_NO_EDGE_POS, n_Arg_1_2022, n_MultipleAdd5826_2031, 16, e_e43); - ext_grs_edge_t *e_e40_2050 = ext_grs_act_add_edge_to_keep(pattern, "e40_2050", ext_grs_NO_EDGE_POS, n_IR_node5835_2033, n_MultipleAdd5824_2032, 17, e_e40); - ext_grs_edge_t *e_pos0_64_2051 = ext_grs_act_add_edge(pattern, "pos0_64_2051", -1, n_Vector_op_Block_2024, n_Vector_op_ProjM, 35); - ext_grs_edge_t *e_pos2_60_2052 = ext_grs_act_add_edge(pattern, "pos2_60_2052", 1, n_MultipleAdd5831_2019, n_Vector_op, 36); - ext_grs_edge_t *e_pos3_62_2053 = ext_grs_act_add_edge(pattern, "pos3_62_2053", 2, n_Bad24, n_Vector_op, 37); - ext_grs_edge_t *e_pos0_28_2054 = ext_grs_act_add_edge_to_keep(pattern, "pos0_28_2054", -1, n_Vector_op_Block_2024, n_Sync25_2018, 21, e_pos0_28); - ext_grs_edge_t *e_e49_2055 = ext_grs_act_add_edge_to_keep(pattern, "e49_2055", ext_grs_NO_EDGE_POS, n_IR_node5835_2033, n_MultipleAdd5831_2019, 22, e_e49); - ext_grs_edge_t *e_e48_2056 = ext_grs_act_add_edge_to_keep(pattern, "e48_2056", ext_grs_NO_EDGE_POS, n_IR_node5834_2034, n_MultipleAdd5831_2019, 23, e_e48); - ext_grs_edge_t *e_e50_2057 = ext_grs_act_add_edge_to_keep(pattern, "e50_2057", ext_grs_NO_EDGE_POS, n_Arg_1_2022, n_MultipleAdd5828_2017, 24, e_e50); - ext_grs_edge_t *e_e52_2058 = ext_grs_act_add_edge_to_keep(pattern, "e52_2058", ext_grs_NO_EDGE_POS, n_IR_node5835_2033, n_MultipleAdd5828_2017, 25, e_e52); - ext_grs_edge_t *e_pos0_59_2059 = ext_grs_act_add_edge(pattern, "pos0_59_2059", -1, n_Vector_op_Block_2024, n_Vector_op, 38); - ext_grs_edge_t *e_e51_2060 = ext_grs_act_add_edge_to_keep(pattern, "e51_2060", ext_grs_NO_EDGE_POS, n_IR_node5834_2034, n_MultipleAdd5828_2017, 26, e_e51); - ext_grs_edge_t *e_pos0_54_2061 = ext_grs_act_add_edge_to_keep(pattern, "pos0_54_2061", -1, n_Vector_op_Block_2024, n_Sync29_2015, 27, e_pos0_54); - ext_grs_edge_t *e_pos1_57_2062 = ext_grs_act_add_edge_to_keep(pattern, "pos1_57_2062", 0, n_Sync24_2023, n_Sync30_2026, 28, e_pos1_57); - ext_grs_edge_t *e_pos1_58_2063 = ext_grs_act_add_edge_to_keep(pattern, "pos1_58_2063", 0, n_Sync25_2018, n_Sync31_2012, 29, e_pos1_58); - ext_grs_edge_t *e_pos1_53_2064 = ext_grs_act_add_edge_to_keep(pattern, "pos1_53_2064", 0, n_Sync29_2015, n_Sync28_2027, 33, e_pos1_53); - ext_grs_edge_t *e_pos1_24_2065 = ext_grs_act_add_edge_to_keep(pattern, "pos1_24_2065", 0, n_Arg_0_2021, n_VProj3987_2011, 34, e_pos1_24); - ext_grs_edge_t *e_pos1_63_2066 = ext_grs_act_add_edge(pattern, "pos1_63_2066", 0, n_Vector_op, n_Vector_op_ProjM, 39); - ext_grs_edge_t *e_pos1_61_2067 = ext_grs_act_add_edge(pattern, "pos1_61_2067", 0, n_Arg_0_2021, n_Vector_op, 40); - - } /* The replacement */ - - /* Eval functions */ - ext_grs_act_register_eval(act, NULL, (ext_grs_eval_out_func_t) &grs_eval_out_func_45573); - } /* The Action */ - - check = ext_grs_act_mature(act); - assert(check); - return act; -} /* vstore_4f_variant2 */ - - -/* global variables containing the actions */ -ext_grs_action_t *ext_grs_action_complex_instructions_add_horz_4_32_variant0; -ext_grs_action_t *ext_grs_action_complex_instructions_component_0Iu_variant0; -ext_grs_action_t *ext_grs_action_complex_instructions_component_0f_variant0; -ext_grs_action_t *ext_grs_action_complex_instructions_maxps_variant0; -ext_grs_action_t *ext_grs_action_complex_instructions_mulps_4_32_am_variant0; -ext_grs_action_t *ext_grs_action_complex_instructions_mulps_4_32_am_variant1; -ext_grs_action_t *ext_grs_action_complex_instructions_mulps_4_32_am_variant2; -ext_grs_action_t *ext_grs_action_complex_instructions_mulps_4_32_variant0; -ext_grs_action_t *ext_grs_action_complex_instructions_psadbw_variant0; -ext_grs_action_t *ext_grs_action_complex_instructions_vload_16b_variant0; -ext_grs_action_t *ext_grs_action_complex_instructions_vload_16b_variant1; -ext_grs_action_t *ext_grs_action_complex_instructions_vload_16b_variant2; -ext_grs_action_t *ext_grs_action_complex_instructions_vload_4f_32_variant0; -ext_grs_action_t *ext_grs_action_complex_instructions_vload_4f_32_variant1; -ext_grs_action_t *ext_grs_action_complex_instructions_vload_4f_32_variant2; -ext_grs_action_t *ext_grs_action_complex_instructions_vstore_4f_variant0; -ext_grs_action_t *ext_grs_action_complex_instructions_vstore_4f_variant1; -ext_grs_action_t *ext_grs_action_complex_instructions_vstore_4f_variant2; - -/* function for initializing the actions */ -ext_grs_action_init_complex_instructions() { - init(); - ext_grs_action_complex_instructions_add_horz_4_32_variant0 = grs_action_add_horz_4_32_variant0_init(); - ext_grs_action_complex_instructions_component_0Iu_variant0 = grs_action_component_0Iu_variant0_init(); - ext_grs_action_complex_instructions_component_0f_variant0 = grs_action_component_0f_variant0_init(); - ext_grs_action_complex_instructions_maxps_variant0 = grs_action_maxps_variant0_init(); - ext_grs_action_complex_instructions_mulps_4_32_am_variant0 = grs_action_mulps_4_32_am_variant0_init(); - ext_grs_action_complex_instructions_mulps_4_32_am_variant1 = grs_action_mulps_4_32_am_variant1_init(); - ext_grs_action_complex_instructions_mulps_4_32_am_variant2 = grs_action_mulps_4_32_am_variant2_init(); - ext_grs_action_complex_instructions_mulps_4_32_variant0 = grs_action_mulps_4_32_variant0_init(); - ext_grs_action_complex_instructions_psadbw_variant0 = grs_action_psadbw_variant0_init(); - ext_grs_action_complex_instructions_vload_16b_variant0 = grs_action_vload_16b_variant0_init(); - ext_grs_action_complex_instructions_vload_16b_variant1 = grs_action_vload_16b_variant1_init(); - ext_grs_action_complex_instructions_vload_16b_variant2 = grs_action_vload_16b_variant2_init(); - ext_grs_action_complex_instructions_vload_4f_32_variant0 = grs_action_vload_4f_32_variant0_init(); - ext_grs_action_complex_instructions_vload_4f_32_variant1 = grs_action_vload_4f_32_variant1_init(); - ext_grs_action_complex_instructions_vload_4f_32_variant2 = grs_action_vload_4f_32_variant2_init(); - ext_grs_action_complex_instructions_vstore_4f_variant0 = grs_action_vstore_4f_variant0_init(); - ext_grs_action_complex_instructions_vstore_4f_variant1 = grs_action_vstore_4f_variant1_init(); - ext_grs_action_complex_instructions_vstore_4f_variant2 = grs_action_vstore_4f_variant2_init(); - - /* establish inherritance */ - ext_grs_appoint_heir(grs_op_Intrinsic_addr_addr_store, grs_op_Intrinsic); - ext_grs_appoint_heir(grs_op_Intrinsic_addr_addr_store, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Intrinsic_addr_addr_store, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_Intrinsic_addr_addr_store, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Intrinsic_addr_addr_store, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Entity, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Entity, grs_op_Node); - - ext_grs_appoint_heir(grs_op_End, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_End, grs_op_Special); - ext_grs_appoint_heir(grs_op_End, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_End, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Intrinsic_addr_sse, grs_op_Intrinsic); - ext_grs_appoint_heir(grs_op_Intrinsic_addr_sse, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Intrinsic_addr_sse, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_Intrinsic_addr_sse, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Intrinsic_addr_sse, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Union, grs_op_Compound); - ext_grs_appoint_heir(grs_op_Union, grs_op_Type); - ext_grs_appoint_heir(grs_op_Union, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Union, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Intrinsic_addr_addr_sse, grs_op_Intrinsic); - ext_grs_appoint_heir(grs_op_Intrinsic_addr_addr_sse, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Intrinsic_addr_addr_sse, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_Intrinsic_addr_addr_sse, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Intrinsic_addr_addr_sse, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Special, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Struct, grs_op_Compound); - ext_grs_appoint_heir(grs_op_Struct, grs_op_Type); - ext_grs_appoint_heir(grs_op_Struct, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Struct, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Memory, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Complex, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Complex, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Complex, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Intrinsic_sse_addr_sse, grs_op_Intrinsic); - ext_grs_appoint_heir(grs_op_Intrinsic_sse_addr_sse, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Intrinsic_sse_addr_sse, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_Intrinsic_sse_addr_sse, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Intrinsic_sse_addr_sse, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Intrinsic_sse_sse, grs_op_Intrinsic); - ext_grs_appoint_heir(grs_op_Intrinsic_sse_sse, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Intrinsic_sse_sse, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_Intrinsic_sse_sse, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Intrinsic_sse_sse, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Tarval, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Tarval, grs_op_Node); - - - ext_grs_appoint_heir(grs_op_V2Load, grs_op_V2); - ext_grs_appoint_heir(grs_op_V2Load, grs_op_Vector); - ext_grs_appoint_heir(grs_op_V2Load, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_V2Load, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_V2Load, grs_op_Node); - - ext_grs_appoint_heir(grs_op_V2Sub, grs_op_V2); - ext_grs_appoint_heir(grs_op_V2Sub, grs_op_Vector); - ext_grs_appoint_heir(grs_op_V2Sub, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_V2Sub, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_V2Sub, grs_op_Node); - - ext_grs_appoint_heir(grs_op_IR_node, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_IR_node, grs_op_Node); - - ext_grs_appoint_heir(grs_op_CMOV, grs_op_IntrinsicGP); - ext_grs_appoint_heir(grs_op_CMOV, grs_op_Intrinsic); - ext_grs_appoint_heir(grs_op_CMOV, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_CMOV, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_CMOV, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_CMOV, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Match, grs_op_Node); - - ext_grs_appoint_heir(grs_op_SymConst, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_SymConst, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_SymConst, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_SymConst, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Store, grs_op_MemNode); - ext_grs_appoint_heir(grs_op_Store, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Store, grs_op_Memory); - ext_grs_appoint_heir(grs_op_Store, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Store, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Break, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Break, grs_op_Controlflow); - ext_grs_appoint_heir(grs_op_Break, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Break, grs_op_Node); - - ext_grs_appoint_heir(grs_op_V4pi_2, grs_op_V4); - ext_grs_appoint_heir(grs_op_V4pi_2, grs_op_pi); - ext_grs_appoint_heir(grs_op_V4pi_2, grs_op_Vector); - ext_grs_appoint_heir(grs_op_V4pi_2, grs_op_Node); - ext_grs_appoint_heir(grs_op_V4pi_2, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_V4pi_2, grs_op_FIRM_node); - - ext_grs_appoint_heir(grs_op_V4pi_1, grs_op_V4); - ext_grs_appoint_heir(grs_op_V4pi_1, grs_op_pi); - ext_grs_appoint_heir(grs_op_V4pi_1, grs_op_Vector); - ext_grs_appoint_heir(grs_op_V4pi_1, grs_op_Node); - ext_grs_appoint_heir(grs_op_V4pi_1, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_V4pi_1, grs_op_FIRM_node); - - ext_grs_appoint_heir(grs_op_V4pi_4, grs_op_V4); - ext_grs_appoint_heir(grs_op_V4pi_4, grs_op_pi); - ext_grs_appoint_heir(grs_op_V4pi_4, grs_op_Vector); - ext_grs_appoint_heir(grs_op_V4pi_4, grs_op_Node); - ext_grs_appoint_heir(grs_op_V4pi_4, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_V4pi_4, grs_op_FIRM_node); - - ext_grs_appoint_heir(grs_op_V4pi_3, grs_op_V4); - ext_grs_appoint_heir(grs_op_V4pi_3, grs_op_pi); - ext_grs_appoint_heir(grs_op_V4pi_3, grs_op_Vector); - ext_grs_appoint_heir(grs_op_V4pi_3, grs_op_Node); - ext_grs_appoint_heir(grs_op_V4pi_3, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_V4pi_3, grs_op_FIRM_node); - - ext_grs_appoint_heir(grs_op_Unary, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Div, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Div, grs_op_Arithmetic); - ext_grs_appoint_heir(grs_op_Div, grs_op_Binary); - ext_grs_appoint_heir(grs_op_Div, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Div, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_Div, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Free, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Free, grs_op_Memory); - ext_grs_appoint_heir(grs_op_Free, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Free, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Trinary, grs_op_Node); - - ext_grs_appoint_heir(grs_op_IntrinsicMatch, grs_op_Match); - ext_grs_appoint_heir(grs_op_IntrinsicMatch, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Bad, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Bad, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Bad, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Confirm, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Confirm, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Confirm, grs_op_Node); - - ext_grs_appoint_heir(grs_op_IntConst, grs_op_Const); - ext_grs_appoint_heir(grs_op_IntConst, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_IntConst, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_IntConst, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_IntConst, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Nary, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Raise, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Raise, grs_op_Controlflow); - ext_grs_appoint_heir(grs_op_Raise, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Raise, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Id, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Id, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Id, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Or, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Or, grs_op_Arithmetic); - ext_grs_appoint_heir(grs_op_Or, grs_op_Binary); - ext_grs_appoint_heir(grs_op_Or, grs_op_Commutative); - ext_grs_appoint_heir(grs_op_Or, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Or, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_Or, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Eor, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Eor, grs_op_Arithmetic); - ext_grs_appoint_heir(grs_op_Eor, grs_op_Binary); - ext_grs_appoint_heir(grs_op_Eor, grs_op_Commutative); - ext_grs_appoint_heir(grs_op_Eor, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Eor, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_Eor, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Vector, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Vector, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Vector, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Intrinsic_sse_reg_sse, grs_op_Intrinsic); - ext_grs_appoint_heir(grs_op_Intrinsic_sse_reg_sse, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Intrinsic_sse_reg_sse, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_Intrinsic_sse_reg_sse, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Intrinsic_sse_reg_sse, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Add, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Add, grs_op_Arithmetic); - ext_grs_appoint_heir(grs_op_Add, grs_op_Binary); - ext_grs_appoint_heir(grs_op_Add, grs_op_Commutative); - ext_grs_appoint_heir(grs_op_Add, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Add, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_Add, grs_op_Node); - - ext_grs_appoint_heir(grs_op_VProj, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_VProj, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_VProj, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_VProj, grs_op_Node); - - ext_grs_appoint_heir(grs_op_IntrinsicMMX, grs_op_Intrinsic); - ext_grs_appoint_heir(grs_op_IntrinsicMMX, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_IntrinsicMMX, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_IntrinsicMMX, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_IntrinsicMMX, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Const, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Const, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_Const, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Const, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Sel, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Sel, grs_op_VectorBase); - ext_grs_appoint_heir(grs_op_Sel, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Sel, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Sub, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Sub, grs_op_Arithmetic); - ext_grs_appoint_heir(grs_op_Sub, grs_op_Binary); - ext_grs_appoint_heir(grs_op_Sub, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Sub, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_Sub, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Ordinary, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Tuple, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Tuple, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Tuple, grs_op_Node); - - ext_grs_appoint_heir(grs_op_MultipleAdd, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_MultipleAdd, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_MultipleAdd, grs_op_Node); - - ext_grs_appoint_heir(grs_op_IntrinsicFP, grs_op_Intrinsic); - ext_grs_appoint_heir(grs_op_IntrinsicFP, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_IntrinsicFP, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_IntrinsicFP, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_IntrinsicFP, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Cmp, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Cmp, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_Cmp, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Cmp, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Mulh, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Mulh, grs_op_Arithmetic); - ext_grs_appoint_heir(grs_op_Mulh, grs_op_Binary); - ext_grs_appoint_heir(grs_op_Mulh, grs_op_Commutative); - ext_grs_appoint_heir(grs_op_Mulh, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Mulh, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_Mulh, grs_op_Node); - - ext_grs_appoint_heir(grs_op_And, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_And, grs_op_Arithmetic); - ext_grs_appoint_heir(grs_op_And, grs_op_Binary); - ext_grs_appoint_heir(grs_op_And, grs_op_Commutative); - ext_grs_appoint_heir(grs_op_And, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_And, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_And, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Method_IRG, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Method_IRG, grs_op_Node); - - ext_grs_appoint_heir(grs_op_CCopy, grs_op_IntrinsicGP); - ext_grs_appoint_heir(grs_op_CCopy, grs_op_Intrinsic); - ext_grs_appoint_heir(grs_op_CCopy, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_CCopy, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_CCopy, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_CCopy, grs_op_Node); - - ext_grs_appoint_heir(grs_op_EndReg, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_EndReg, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_EndReg, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Call, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Call, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Call, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Cast, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Cast, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Cast, grs_op_Node); - - ext_grs_appoint_heir(grs_op_EndExcept, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_EndExcept, grs_op_Controlflow); - ext_grs_appoint_heir(grs_op_EndExcept, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_EndExcept, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Sync, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Sync, grs_op_Memory); - ext_grs_appoint_heir(grs_op_Sync, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Sync, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Rot, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Rot, grs_op_Arithmetic); - ext_grs_appoint_heir(grs_op_Rot, grs_op_Binary); - ext_grs_appoint_heir(grs_op_Rot, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Rot, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_Rot, grs_op_Node); - - ext_grs_appoint_heir(grs_op_NoMem, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_NoMem, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_NoMem, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Unknown, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Unknown, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Unknown, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Primitive, grs_op_Type); - ext_grs_appoint_heir(grs_op_Primitive, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Primitive, grs_op_Node); - - ext_grs_appoint_heir(grs_op_IntrinsicGP, grs_op_Intrinsic); - ext_grs_appoint_heir(grs_op_IntrinsicGP, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_IntrinsicGP, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_IntrinsicGP, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_IntrinsicGP, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Mux, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Mux, grs_op_Trinary); - ext_grs_appoint_heir(grs_op_Mux, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Mux, grs_op_Node); - - ext_grs_appoint_heir(grs_op_pi, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Quot, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Quot, grs_op_Arithmetic); - ext_grs_appoint_heir(grs_op_Quot, grs_op_Binary); - ext_grs_appoint_heir(grs_op_Quot, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Quot, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_Quot, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Method, grs_op_Type); - ext_grs_appoint_heir(grs_op_Method, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Method, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Jmp, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Jmp, grs_op_Controlflow); - ext_grs_appoint_heir(grs_op_Jmp, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Jmp, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Mul, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Mul, grs_op_Arithmetic); - ext_grs_appoint_heir(grs_op_Mul, grs_op_Binary); - ext_grs_appoint_heir(grs_op_Mul, grs_op_Commutative); - ext_grs_appoint_heir(grs_op_Mul, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Mul, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_Mul, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Associative, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Start, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Start, grs_op_Special); - ext_grs_appoint_heir(grs_op_Start, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Start, grs_op_Node); - - ext_grs_appoint_heir(grs_op_SyncArity2, grs_op_Sync); - ext_grs_appoint_heir(grs_op_SyncArity2, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_SyncArity2, grs_op_Memory); - ext_grs_appoint_heir(grs_op_SyncArity2, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_SyncArity2, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Arithmetic, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_Arithmetic, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Intrinsic_sse_addr_store, grs_op_Intrinsic); - ext_grs_appoint_heir(grs_op_Intrinsic_sse_addr_store, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Intrinsic_sse_addr_store, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_Intrinsic_sse_addr_store, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Intrinsic_sse_addr_store, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Conv, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Conv, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_Conv, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Conv, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Intrinsic, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Intrinsic, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_Intrinsic, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Intrinsic, grs_op_Node); - - ext_grs_appoint_heir(grs_op_VectorBase, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_VectorBase, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_VectorBase, grs_op_Node); - - ext_grs_appoint_heir(grs_op_V2Store, grs_op_V2); - ext_grs_appoint_heir(grs_op_V2Store, grs_op_Vector); - ext_grs_appoint_heir(grs_op_V2Store, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_V2Store, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_V2Store, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Cond, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Cond, grs_op_Controlflow); - ext_grs_appoint_heir(grs_op_Cond, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_Cond, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Cond, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Class, grs_op_Compound); - ext_grs_appoint_heir(grs_op_Class, grs_op_Type); - ext_grs_appoint_heir(grs_op_Class, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Class, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Abs, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Abs, grs_op_Arithmetic); - ext_grs_appoint_heir(grs_op_Abs, grs_op_Unary); - ext_grs_appoint_heir(grs_op_Abs, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Abs, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_Abs, grs_op_Node); - - ext_grs_appoint_heir(grs_op_V2pi_1, grs_op_V2); - ext_grs_appoint_heir(grs_op_V2pi_1, grs_op_pi); - ext_grs_appoint_heir(grs_op_V2pi_1, grs_op_Vector); - ext_grs_appoint_heir(grs_op_V2pi_1, grs_op_Node); - ext_grs_appoint_heir(grs_op_V2pi_1, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_V2pi_1, grs_op_FIRM_node); - - ext_grs_appoint_heir(grs_op_Commutative, grs_op_Node); - - ext_grs_appoint_heir(grs_op_V2pi_2, grs_op_V2); - ext_grs_appoint_heir(grs_op_V2pi_2, grs_op_pi); - ext_grs_appoint_heir(grs_op_V2pi_2, grs_op_Vector); - ext_grs_appoint_heir(grs_op_V2pi_2, grs_op_Node); - ext_grs_appoint_heir(grs_op_V2pi_2, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_V2pi_2, grs_op_FIRM_node); - - ext_grs_appoint_heir(grs_op_StartBlock, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Phi, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Phi, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_Phi, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Phi, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Block, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Block, grs_op_Special); - ext_grs_appoint_heir(grs_op_Block, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Block, grs_op_Node); - - ext_grs_appoint_heir(grs_op_MemNode, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_MemNode, grs_op_Memory); - ext_grs_appoint_heir(grs_op_MemNode, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_MemNode, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Enum, grs_op_Type); - ext_grs_appoint_heir(grs_op_Enum, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Enum, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Shrs, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Shrs, grs_op_Arithmetic); - ext_grs_appoint_heir(grs_op_Shrs, grs_op_Binary); - ext_grs_appoint_heir(grs_op_Shrs, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Shrs, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_Shrs, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Array, grs_op_Type); - ext_grs_appoint_heir(grs_op_Array, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Array, grs_op_Node); - - ext_grs_appoint_heir(grs_op_max, grs_op_IntrinsicGP); - ext_grs_appoint_heir(grs_op_max, grs_op_Intrinsic); - ext_grs_appoint_heir(grs_op_max, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_max, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_max, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_max, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Proj, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Proj, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_Proj, grs_op_VectorBase); - ext_grs_appoint_heir(grs_op_Proj, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Proj, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Mod, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Mod, grs_op_Arithmetic); - ext_grs_appoint_heir(grs_op_Mod, grs_op_Binary); - ext_grs_appoint_heir(grs_op_Mod, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Mod, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_Mod, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Binary, grs_op_Node); - - ext_grs_appoint_heir(grs_op_V2, grs_op_Vector); - ext_grs_appoint_heir(grs_op_V2, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_V2, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_V2, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Not, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Not, grs_op_Arithmetic); - ext_grs_appoint_heir(grs_op_Not, grs_op_Unary); - ext_grs_appoint_heir(grs_op_Not, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Not, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_Not, grs_op_Node); - - ext_grs_appoint_heir(grs_op_V4, grs_op_Vector); - ext_grs_appoint_heir(grs_op_V4, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_V4, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_V4, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Intrinsic_sse_sse_sse, grs_op_Intrinsic); - ext_grs_appoint_heir(grs_op_Intrinsic_sse_sse_sse, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Intrinsic_sse_sse_sse, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_Intrinsic_sse_sse_sse, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Intrinsic_sse_sse_sse, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Intrinsic_reg_sse_sse, grs_op_Intrinsic); - ext_grs_appoint_heir(grs_op_Intrinsic_reg_sse_sse, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Intrinsic_reg_sse_sse, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_Intrinsic_reg_sse_sse, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Intrinsic_reg_sse_sse, grs_op_Node); - - ext_grs_appoint_heir(grs_op_DivMod, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_DivMod, grs_op_Arithmetic); - ext_grs_appoint_heir(grs_op_DivMod, grs_op_Binary); - ext_grs_appoint_heir(grs_op_DivMod, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_DivMod, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_DivMod, grs_op_Node); - - ext_grs_appoint_heir(grs_op_FIRM_node, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Alloc, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Alloc, grs_op_Memory); - ext_grs_appoint_heir(grs_op_Alloc, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Alloc, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Pointer, grs_op_Type); - ext_grs_appoint_heir(grs_op_Pointer, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Pointer, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Minus, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Minus, grs_op_Arithmetic); - ext_grs_appoint_heir(grs_op_Minus, grs_op_Unary); - ext_grs_appoint_heir(grs_op_Minus, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Minus, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_Minus, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Type, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Type, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Return, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Return, grs_op_Controlflow); - ext_grs_appoint_heir(grs_op_Return, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Return, grs_op_Node); - - ext_grs_appoint_heir(grs_op_IntrinsicSSE, grs_op_Intrinsic); - ext_grs_appoint_heir(grs_op_IntrinsicSSE, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_IntrinsicSSE, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_IntrinsicSSE, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_IntrinsicSSE, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Filter, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Filter, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Filter, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Controlflow, grs_op_Node); - - ext_grs_appoint_heir(grs_op_min, grs_op_IntrinsicGP); - ext_grs_appoint_heir(grs_op_min, grs_op_Intrinsic); - ext_grs_appoint_heir(grs_op_min, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_min, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_min, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_min, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Intrinsic_addr_sse_store, grs_op_Intrinsic); - ext_grs_appoint_heir(grs_op_Intrinsic_addr_sse_store, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Intrinsic_addr_sse_store, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_Intrinsic_addr_sse_store, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Intrinsic_addr_sse_store, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Compound, grs_op_Type); - ext_grs_appoint_heir(grs_op_Compound, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Compound, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Load, grs_op_MemNode); - ext_grs_appoint_heir(grs_op_Load, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Load, grs_op_Memory); - ext_grs_appoint_heir(grs_op_Load, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Load, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Shl, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Shl, grs_op_Arithmetic); - ext_grs_appoint_heir(grs_op_Shl, grs_op_Binary); - ext_grs_appoint_heir(grs_op_Shl, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Shl, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_Shl, grs_op_Node); - - ext_grs_appoint_heir(grs_op_IgnoreCF, grs_op_Node); - - ext_grs_appoint_heir(grs_op_Shr, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_Shr, grs_op_Arithmetic); - ext_grs_appoint_heir(grs_op_Shr, grs_op_Binary); - ext_grs_appoint_heir(grs_op_Shr, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_Shr, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_Shr, grs_op_Node); - - ext_grs_appoint_heir(grs_op_InstOf, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_InstOf, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_InstOf, grs_op_Node); - - ext_grs_appoint_heir(grs_op_IntrinsicGP3, grs_op_Intrinsic); - ext_grs_appoint_heir(grs_op_IntrinsicGP3, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_IntrinsicGP3, grs_op_Ordinary); - ext_grs_appoint_heir(grs_op_IntrinsicGP3, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_IntrinsicGP3, grs_op_Node); - - ext_grs_appoint_heir(grs_op_IR_Keep, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_IR_Keep, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_IR_Keep, grs_op_Node); - - ext_grs_appoint_heir(grs_op_CallBegin, grs_op_IR_node); - ext_grs_appoint_heir(grs_op_CallBegin, grs_op_FIRM_node); - ext_grs_appoint_heir(grs_op_CallBegin, grs_op_Node); - - ext_grs_inheritance_mature(); -} diff --git a/ir/be/grgen/simd/generated/node_attributes.c b/ir/be/grgen/simd/generated/node_attributes.c deleted file mode 100644 index 1ad388b9c..000000000 --- a/ir/be/grgen/simd/generated/node_attributes.c +++ /dev/null @@ -1,3 +0,0 @@ -/* TODO: Dump all the nodes attributes -> - e.g. pointers to result nodes... - here */ diff --git a/ir/be/grgen/simd/generated/pattern_importer.c b/ir/be/grgen/simd/generated/pattern_importer.c deleted file mode 100644 index 0bba2e838..000000000 --- a/ir/be/grgen/simd/generated/pattern_importer.c +++ /dev/null @@ -1,21 +0,0 @@ -/************************************************************************* -* Program: pattern_importer.c -* Function: Includes all the generated patterns. This wrapper can turn off -* the includation of generated patterns in case the gerenation went -* wrong. -* Author: Andreas Schoesser -* Date: 2007-01-09 -*************************************************************************/ - -#include "../simd_presets.h" - - -// Only include the patterns of the INCLUDE_GENERATED_PATTERNS macro -// is set in simd_presets.h. Can be turned off in case gen_patterns.c -// contains errors - -#ifdef INCLUDE_GENERATED_PATTERNS - #include "firm.h" - #include "../firm_node_ext.h" - #include "gen_patterns.c" -#endif diff --git a/ir/be/grgen/simd/grgen_dumper.c b/ir/be/grgen/simd/grgen_dumper.c deleted file mode 100644 index b6c04d2e3..000000000 --- a/ir/be/grgen/simd/grgen_dumper.c +++ /dev/null @@ -1,1116 +0,0 @@ -/***************************************************************************** - * Program: grgen_dumper.c - * Function: Dumps parts of a firm graph (those which have to be extracted - * as search and replace patterns) as a grGen rule. - * Depends on: Needs the analysis info generated by the pattern creator - * Author: Andreas Schoesser - * Date: 2006-12-07 - *****************************************************************************/ - - -// ---------------------------- INCLUDES -------------------------------- - -#include -#include -#include - -#include "simd_presets.h" - -#include "firm_types.h" -#include "pmap.h" -#include "tv.h" -#include "irgwalk.h" - -#include "grgen_dumper__t.h" -#include "create_pattern_t.h" -#include "firm_node_ext.h" - -// ----------------------------- GLOABALS -------------------------------- - -// Saves the current indent value and keeps spaces in a string -#define MAX_INDENT 100 -static char indent[MAX_INDENT] = ""; -static int current_indent = 0; - -// Saves the current node number to generate node names -static int node_counter; -static int edge_counter; - - - - -/************************************************************************ - * Initializes the grgen_dumper module and dumps the GrGen File header - * Returns: An environment to be passed to all functions of the GrGen - * dumper. - * Parameters: file: filename of the file to dump to - * append: 1 if the previous file content should be - * maintained. - ************************************************************************/ - -grgen_dumper_env_t *init_grgen_dumper(char *file, int append) -{ - grgen_dumper_env_t *grgen_dumper_env = malloc(sizeof(grgen_dumper_env_t)); - FILE *fp; - - if(append) - fp = fopen(file, "at"); - else - { - fp = fopen(file, "wt"); - - // *** Dump header - fprintf(fp, "%susing Firm;\n\n", indent); - } - - grgen_dumper_env -> output_file = fp; - return(grgen_dumper_env); -} - - - -/************************************************************************ - * Frees information used by the grgen_dumper and closes the output file - ************************************************************************/ - -void deinit_grgen_dumper(grgen_dumper_env_t *grgen_dumper_env) -{ - fclose(grgen_dumper_env->output_file); - free(grgen_dumper_env); -} - - - - -/************************************************************************ - * Starts dumping - * Returns - * 1 if the complex operation uses the memory edge - * 0 if no memory edge is used. - ************************************************************************/ - -int dump_irgraph_grgen(grgen_dumper_env_t *grgen_dumper_env, graph_ana_info_t *graph_ana_info) -{ - FILE *fp = grgen_dumper_env -> output_file; - dump_info_t dump_info; - int uses_memory = 0; - char irg_name[255]; - - get_rule_name(graph_ana_info, irg_name); - - // Do initialization - dump_info.irg = graph_ana_info->irg; // Basically copy the graph_ana_struct, ugly - dump_info.destroyed_regs = graph_ana_info->destroyed_regs; // Should have used a pointer to the - dump_info.register_access = graph_ana_info->register_access; // graph_ana_info struct here - dump_info.memory_access = graph_ana_info->memory_access; - dump_info.nodes_to_dump = graph_ana_info->nodes_to_dump; - dump_info.argument_nodes = graph_ana_info->argument_nodes; - dump_info.complex_operation_block = graph_ana_info->complex_operation_block; - dump_info.node_to_match_block = graph_ana_info->node_to_match_block; - dump_info.has_result = graph_ana_info->has_result; - dump_info.priority = graph_ana_info->priority; - dump_info.mode_edge_map = pmap_create(); // Create some additional pmaps to hold - dump_info.edge_name_map = pmap_create(); // node and edge name information etc. - dump_info.node_name_map = pmap_create(); - dump_info.mode_name_map = pmap_create(); - dump_info.dump_condition = pmap_create(); // pmaps "misused" as lists here... - dump_info.retyped_nodes = pmap_create(); - dump_info.eval_statements = pmap_create(); - dump_info.dump_everything = graph_ana_info->dump_everything; - - // Node and egde count start at 0 for each pattern to be dumped. - node_counter = 0; - edge_counter = 0; - obstack_init(&(dump_info.node_names)); - obstack_init(&(dump_info.mode_names)); - - // Dump rule header - set_indent(0); - fprintf(fp, "\n\n%srule %s\n%s{\n", indent, irg_name, indent); - set_indent(2); - if(!dump_info.dump_everything) - fprintf(fp, "%spattern\n%s{\n", indent, indent); - else - { - fprintf(fp, "%spattern { }\n", indent); - fprintf(fp, "%sreplace\n%s{\n", indent, indent); - } - set_indent(4); - - // *** Dump the left side of the rule - uses_memory = dump_pattern(&dump_info, fp); - - // *** Dump the right side of the rule - if(!dump_info.dump_everything) // Hack: If a whole graph is dumped, the pattern part will raise errors since no complex operations etc. are there - { - dump_replacement(&dump_info, uses_memory, fp); - - // *** Dump the eval part of the rule - fprintf(fp, "\n%seval {\n", indent); - set_indent(6); - dump_mandatory_evals(&dump_info, uses_memory, fp); - dump_vproj_nr(&dump_info, fp); // Dumps all vproj_nr attribute assignments - set_indent(4); - fprintf(fp, "%s} /* Eval */\n", indent); - - // *** Close the replacement part - - set_indent(2); - fprintf(fp, "%s} /* Replacement */\n", indent); - } - - // *** Dump footer - set_indent(0); - fprintf(fp, "%s}\n", indent); - - // Clean up - pmap_destroy(dump_info.mode_edge_map); - pmap_destroy(dump_info.edge_name_map); - pmap_destroy(dump_info.node_name_map); - pmap_destroy(dump_info.mode_name_map); - pmap_destroy(dump_info.dump_condition); - pmap_destroy(dump_info.retyped_nodes); - pmap_destroy(dump_info.eval_statements); - obstack_free(&(dump_info.node_names), NULL); - obstack_finish(&(dump_info.node_names)); - obstack_free(&(dump_info.mode_names), NULL); - obstack_finish(&(dump_info.mode_names)); - - return(uses_memory); -} - - -/************************************************************************ - * Dumps the left hand side of the rule - ************************************************************************/ - -static int dump_pattern(dump_info_t *dump_info, FILE *fp) -{ - struct pmap *nodes_to_dump = dump_info->nodes_to_dump; - pmap_entry *entry; - int uses_memory = 0; - - // Dump all nodes - pmap_foreach(nodes_to_dump, entry) - { - ir_node *n = (ir_node *) entry->key; - ir_opcode code; - - // Dump node - if(get_irn_opcode(n) == iro_Proj && get_irn_modecode(n) == irm_M) - uses_memory = 1; - dump_grgen_node(n, dump_info, fp); - dump_grgen_mode(n, dump_info, fp, NULL); - //dump_grgen_block(n, dump_info, fp); - - - // If a condition has to be dumped afterwards: Save the node for later - code = get_irn_opcode(n); - if(code == iro_MultipleAdd || - code == iro_VProj || - code == iro_Const || - code == iro_Proj || - code == iro_Phi) - pmap_insert(dump_info -> dump_condition, n, NULL); - } - - // Dump all edges - pmap_foreach(nodes_to_dump, entry) - { - ir_node *n = (ir_node *) entry->key; - int i; - - // Dump edges - for(i = -1; i < get_irn_arity(n); i++) - dump_grgen_edge(n, i, dump_info, fp); - } - - // Dump the edge from a special pattern node to it's block. This block will later be the block - // of the complex operation - //dump_complex_operation_block_match(dump_info, fp); - - if(!dump_info->dump_everything) - { - - fprintf(fp, "\n%sif\n%s{\n", indent, indent); - set_indent(6); - - pmap_foreach(dump_info->dump_condition, entry) - { - ir_node *n = (ir_node *) entry->key; - dump_grgen_condition(n, dump_info, fp); - } - set_indent(4); - fprintf(fp, "%s} /* Conditions */\n", indent); - } - - set_indent(2); - fprintf(fp, "%s} /* Pattern */\n", indent); - return(uses_memory); -} - - - -/************************************************************************ - * Dumps the right hand side of the rule - ************************************************************************/ - -static void dump_replacement(dump_info_t *dump_info, int uses_memory, FILE *fp) -{ - pmap_entry *entry; - register_access_descr_t *register_access_descr; - memory_access_descr_t *memory_access_descr; - - // dump grGen "replace" statement - fprintf(fp, "\n%smodify {\n", indent); - set_indent(4); - - // Dump the complex operation node with it's projs and vprojs - dump_complex_operation(dump_info, fp, uses_memory); - - // Dump the rest of the replacement nodes. Do retyping to VProj if necessary - fprintf(fp, "\n"); - - // First dump all nodes. - pmap_foreach(dump_info->nodes_to_dump, entry) - { - ir_node *n = (ir_node *) entry->key; - - if((register_access_descr = pmap_get(dump_info->register_access, n)) != NULL) - { - // Nodes that represent a result in a register have to be retyped - if(register_access_descr -> load_store == REGISTER_STORE) - { - // Find out, if this store is a component of a vector or a standalone scalar - argument_descr_t *arg_descr; - - arg_descr = pmap_get(dump_info->argument_nodes, register_access_descr->pointer_base); - assert(arg_descr && "No argument information available! Should have been created during analysis!"); - - // Treat SCALAR and VECTOR_COMPONENT differently - // A vector component has to be retyped to VProj - // A scalar has to be retyped to a Proj - switch(arg_descr->argument_type) - { - case ARGUMENT_VECTOR: - // Not needed: - // assert(get_irn_opcode(n) != iro_VProj); // An existing VProj would be a register LOAD - - // Node is a vector result to be stored in a register: - // Retype the node to VProj - // Connect it with the Data Proj of the complex operation - dump_retyping_to_vproj(n, NULL, dump_info, VECTOR_OP_PROJDATA_NAME, fp); - //dump_grgen_block(n, dump_info, fp); - break; - - case ARGUMENT_SCALAR: - // Retype the scalar result to proj - // Connect it directly with the operation - dump_retyping_to_proj(n, NULL, dump_info, VECTOR_OP_NAME, fp); - //dump_grgen_block(n, dump_info, fp); - //assert(0 && "// TODO: retype_to_proj, if the result is a scalar"); - break; - - default: - assert(0 && "Argument Type not implemented!"); - } - - continue; - } - } - - if((memory_access_descr = pmap_get(dump_info->memory_access, n)) != NULL) - { - if(memory_access_descr->load_store == MEMORY_STORE) - { - // Node is part of a memory store, that is STORE or PROJM node. - // Retype it to id. - // Trick to keep the M-edge predecessor of the Store node as - // the predecessor of the Id Node without actually matching the predecessor: - // Since we don't dump the M-Edge of the STORE but the Adr and Value edges and - // we can just "not dump" the 2 matched edges. The Adr and Value edges are therefore - // killed by the graph rewriting system. The M-Edge is not specified at all and the - // GRS is supposed to leave the edge as it was. M-Edges of Stores are at position 0, - // so the kept edge is also at position 0, which is correct. - dump_grgen_retyped_node(n, op_Sync, dump_info, fp); - dump_grgen_delete_incoming_edges(n, dump_info, fp); // Only the M edge (not matched) will persist - change_mode(n, mode_M, dump_info, fp); - continue; - } - } - - // Same for the STORE PROJ M - if(get_irn_opcode(n) == iro_Proj && (memory_access_descr = pmap_get(dump_info->memory_access, get_irn_n(n, 0))) != NULL) - { - if(memory_access_descr->load_store == MEMORY_STORE) - { - dump_grgen_retyped_node(n, op_Sync, dump_info, fp); - change_mode(n, mode_M, dump_info, fp); - continue; - } - } - } - - - // Now dump the edges of the replaced nodes, that could not be dumped before: - // - Eliminated STOREs and ProjMs - pmap_foreach(dump_info->retyped_nodes, entry) - { - const ir_node *n = entry->key; - if(pmap_contains(dump_info->memory_access, n)) - { - memory_access_descr_t *memory_access_descr = pmap_get(dump_info->memory_access, n); - assert(memory_access_descr->load_store == MEMORY_STORE); - - if(get_irn_opcode(n) == iro_Proj) - { - // dump in edge of the retyped ProjM - fprintf(fp, "%s%s -:df-> %s;\n", indent, pmap_get(dump_info->node_name_map, n), pmap_get(dump_info->node_name_map, get_irn_n(n, 0))); - } - } - } - //dump_complex_operation_block_match(dump_info, fp); - - /* Don't close the replacement since evals have moved into the replacement part */ -#if 0 - set_indent(2); - fprintf(fp, "%s} /* Replacement */\n", indent); -#endif -} - - - -/************************************************************************ - * Dumps the new complex operation node and it's Projs and Vprojs - ************************************************************************/ - -void dump_complex_operation(dump_info_t *dump_info, FILE *fp, int uses_memory) -{ - pmap_entry *entry; - int i, mem_slot = (uses_memory) ? 1 : 0, max_argument; - char *mode_node_name, eval[100]; - - // Generate Vector operation - fprintf(fp, "%s%s : Complex;\n", indent, VECTOR_OP_NAME); - - // Dump the mode of the Complex op (mode T). - mode_node_name = dump_grgen_mode_node(mode_T, dump_info, fp); - fprintf(fp, "%s%s -:has_mode-> %s;\n", indent, VECTOR_OP_NAME, mode_node_name); - - // Connect the complex operation to it's block - assert(pmap_contains(dump_info->node_name_map, dump_info->complex_operation_block) && "Complex operation's block predecessor must have already been dumped in the positive pattern!"); - fprintf(fp, "%s%s -pos0_%d:df-> %s;\n", indent, VECTOR_OP_NAME, edge_counter++, pmap_get(dump_info->node_name_map, dump_info->complex_operation_block)); - - if(dump_info->has_result) - { - // Dump the res proj node projecting the complete vector out of the complex operation - fprintf(fp, "%s%s : Proj;\n", indent, VECTOR_OP_PROJDATA_NAME); - mode_node_name = dump_grgen_mode_node(mode_LLu, dump_info, fp); - fprintf(fp, "%s%s -:has_mode-> %s;\n", indent, VECTOR_OP_PROJDATA_NAME, mode_node_name); - fprintf(fp, "%s%s -pos0_%d:df-> %s;\n", indent, VECTOR_OP_PROJDATA_NAME, edge_counter++, pmap_get(dump_info->node_name_map, dump_info->complex_operation_block)); - fprintf(fp, "%s%s -pos1_%d:df-> %s;\n", indent, VECTOR_OP_PROJDATA_NAME, edge_counter++, VECTOR_OP_NAME); - sprintf(eval, "%s.proj = %d;", VECTOR_OP_PROJDATA_NAME, 0); - add_eval(dump_info, eval); - } - - - // Connect the complex operation to it's arguments - // Caution: The argument-nodes must have not been retyped! - i = 0; - max_argument = -1000; - pmap_foreach(dump_info->argument_nodes, entry) - { - ir_node *n = (ir_node *) entry->key; - ir_node *argument; - argument_descr_t *argument_descr = entry -> value; - int arg_nr = argument_descr->arg_nr; - - if(arg_nr < 0) - continue; - assert(pmap_contains(dump_info->node_name_map, n) && "The pointer base node must have already been dumped in the positive pattern!"); - - if(argument_descr->argument_location == ARGUMENT_SIMD_REGISTER) - argument = n; - else - argument = argument_descr->vec_op_input; - - fprintf(fp, "%s%s -pos%d_%d:df-> %s;\n", indent, VECTOR_OP_NAME, arg_nr + 1, edge_counter++, pmap_get(dump_info->node_name_map, argument)); - if(max_argument < arg_nr) - max_argument = arg_nr; - } - - // Do preparations to connect the memory edge to the complex operation - if(uses_memory) - { - // Dump a dummy in-edge used to connect the memory in manually later - fprintf(fp, "%s%s -pos%d_%d:df-> Bad%d : Bad;\n", indent, VECTOR_OP_NAME, max_argument + 2, edge_counter++, node_counter); - - // Generate ProjM node to connect the rest of the replace pattern with - fprintf(fp, "%s%s : Proj;\n", indent, VECTOR_OP_PROJM_NAME); - fprintf(fp, "%s%s -:has_mode-> mode_M_node;\n", indent, VECTOR_OP_PROJM_NAME); - fprintf(fp, "%s%s -pos1_%d:df-> %s;\n", indent, VECTOR_OP_PROJM_NAME, edge_counter++, VECTOR_OP_NAME); - fprintf(fp, "%s%s -pos0_%d:df-> %s;\n", indent, VECTOR_OP_PROJM_NAME, edge_counter++, pmap_get(dump_info->node_name_map, dump_info->complex_operation_block)); - - // Add eval to set the proj nr - sprintf(eval, "%s.proj = %d;", VECTOR_OP_PROJM_NAME, (dump_info->has_result) ? 1 : 0); - add_eval(dump_info, eval); - } - - i = 0; - pmap_foreach(dump_info->destroyed_regs, entry) - { - //ir_node *end_node = get_irg_end(dump_info->irg); - //char *end_name = pmap_get(dump_info->node_name_map, end_node); - char proj_name[255], keep_name[255]; - -// assert(end_name && "End node has to be already dumped in positive pattern!"); - - sprintf(proj_name, "Proj%d", node_counter++); - sprintf(keep_name, "IR_Keep%d", i); - fprintf(fp, "%s%s : Proj;\n", indent, proj_name); - fprintf(fp, "%s%s -:has_mode-> mode_LLu_node;\n", indent, proj_name); - fprintf(fp, "%s%s -pos0_%d:df-> %s;\n", indent, proj_name, edge_counter++, pmap_get(dump_info->node_name_map, dump_info->complex_operation_block)); - fprintf(fp, "%s%s -pos1_%d:df-> %s;\n", indent, proj_name, edge_counter++, VECTOR_OP_NAME); - fprintf(fp, "%s%s : IR_Keep;\n", indent, keep_name); - fprintf(fp, "%s%s -pos%d_%d:df-> %s;\n", indent, keep_name, i + 1, edge_counter++, proj_name); - fprintf(fp, "%s%s -pos0_%d:df-> %s;\n", indent, keep_name, edge_counter++, pmap_get(dump_info->node_name_map, dump_info->complex_operation_block)); - //fprintf(fp, "%s%s -:df-> %s;\n", indent, end_name, keep_name); - sprintf(eval, "%s.proj = %d;", proj_name, (dump_info->has_result + uses_memory + i)); - add_eval(dump_info, eval); - i++; - } -} - - - -/************************************************************************ - * Dumps a node in GrGen Format - ************************************************************************/ - -static void dump_grgen_node(ir_node *n, dump_info_t *dump_info, FILE *fp) -{ - char *node_name; - - // Already dumped the node? Then do nothing - if(pmap_contains(dump_info -> node_name_map, n)) - return; - - // Else generate new node name and dump the node - - node_name = obstack_alloc(&(dump_info -> node_names), MAX_NODENAME_LEN); - - if(!pmap_contains(dump_info->argument_nodes, n)) - { - register_access_descr_t *register_access_descr = pmap_get(dump_info->register_access, n); - - if(n == dump_info->complex_operation_block) - sprintf(node_name, "%s", COMPLEX_OPERATION_BLOCK_NAME); - else if(register_access_descr != NULL && register_access_descr -> load_store == REGISTER_STORE) // Register STORE nodes get a special name to be fao - sprintf(node_name, "%s%d_%s%d", VECTOR_RESULT_NAME, register_access_descr->array_index, get_op_name(get_irn_op(n)), get_irn_node_nr(n)); - else - sprintf(node_name, "%s%d", get_op_name(get_irn_op(n)), get_irn_node_nr(n)); - - if(get_irn_opcode(n) == iro_Bad) // A bad node that comes out of specification is a generic IR_node - fprintf(fp, "%s%s : %s;\n", indent, node_name, "IR_node"); - else - fprintf(fp, "%s%s : %s;\n", indent, node_name, get_op_name(get_irn_op(n))); - } - else - { - // Argument nodes get a special name, so that they can be found after - // matching to test if their position is legal - argument_descr_t *arg_descr = pmap_get(dump_info->argument_nodes, n); - if(arg_descr->arg_nr != -1) - sprintf(node_name, "Arg_%d", arg_descr->arg_nr); - else - sprintf(node_name, "Result"); /// ???? What did I do here? - fprintf(fp, "%s%s : %s;\n", indent, node_name, VECTOR_BASE_TYPE); - - } - - pmap_insert(dump_info -> node_name_map, n, node_name); - node_counter++; -} - - - -/************************************************************************ - * Dump grGen code for retyping a node to a new opCode. - * The mode stays the same. - * Changes also the already saved node_name in node_name_map - * Returns the node name generated for the retyped node. - ************************************************************************/ - -static char *dump_grgen_retyped_node(ir_node *n, ir_op *new_op, dump_info_t *dump_info, FILE *fp) -{ - char *node_name; - - // A retyped node should have already been dumped. - assert(pmap_contains(dump_info->node_name_map, n)); - - // Else generate new node name and dump the retyped node - node_name = obstack_alloc(&(dump_info -> node_names), MAX_NODENAME_LEN); - sprintf(node_name, "%s%d", get_op_name(new_op), node_counter); - fprintf(fp, "%s%s : %s<%s>;\n", indent, node_name, get_op_name(new_op), pmap_get(dump_info->node_name_map, n)); - pmap_insert(dump_info -> node_name_map, n, node_name); - - // Save the retyped op - pmap_insert(dump_info -> retyped_nodes, n, (void *) new_op); - node_counter++; - - // Dump the block of the original node had one. - // dump_grgen_edge(n, -1, dump_info, fp); - - return(node_name); -} - - - -/************************************************************************* - * Dumps 'delete' statements for all incoming egdes that have been matched - * except for the bock edge and the mode edge - * This is useful for nodes that were retyped to VProj or Sync and - * needing new incoming edges now; - *************************************************************************/ - -void dump_grgen_delete_incoming_edges(ir_node *n, dump_info_t *dump_info, FILE *fp) -{ - char **nodes_edge_names; - int i, deleted = 0; - - // Delete all incoming edges of the original node since a retyped node - // will get new in edges (except the block edge and mode egde) - - if(get_irn_arity(n) > 0) - { - fprintf(fp, "%sdelete(", indent); - nodes_edge_names = pmap_get(dump_info->edge_name_map, n); - assert(nodes_edge_names != NULL); - - for(i = get_irn_arity(n); i > 0; i--) - if(nodes_edge_names[i] != NULL) - { - fprintf(fp, "%c%s", (deleted == 0) ? ' ' : ',', nodes_edge_names[i]); - deleted = 1; - } - - fprintf(fp, ");\n"); - } -} - - - -/************************************************************************ - * Dumps - * - The Block node of a ir_node if it has not been dumped before - * - The edge to the block node if n is not an argument or Const - ************************************************************************/ - -static void dump_grgen_block(ir_node *n, dump_info_t *dump_info, FILE *fp) -{ - ir_node *block; - return; - - if(get_irn_opcode(n) == iro_Block) // A block has no block predecessor - return; - - if(get_irn_opcode(n) == iro_Const || pmap_contains(dump_info->argument_nodes, n)) - return; - - if(get_irn_opcode(n) == iro_VProj) - return; - - block = get_nodes_block(n); - // Dump the block node if necessary - if(!pmap_contains(dump_info->node_name_map, block)) - { - dump_grgen_node(block, dump_info, fp); - dump_grgen_mode(block, dump_info, fp, NULL); - } - - // Dump the edge to the block node - dump_grgen_edge(n, -1, dump_info, fp); -} - - - -/************************************************************************ - * Dumps an edge in GrGen format - ************************************************************************/ - -static void dump_grgen_edge(ir_node *n, int n_edge, dump_info_t *dump_info, FILE *fp) -{ - ir_node *to_node; - char *from_node_name, *to_node_name; - char **nodes_edge_names; - - // Don't dump a block edge if n is a block or n is a const or n is an argument for the complex - // operation which can be in a random block in the host graph - if(!dump_info->dump_everything) - if(n_edge == -1 && n != dump_info->node_to_match_block && (is_Block(n) || (get_irn_opcode(n) == iro_VProj && dump_info->priority != PRIORITY_CLEANUP /* HACK!!! */ ) || - get_irn_opcode(n) == iro_Const || get_irn_opcode(n) == iro_Cmp || - (get_irn_opcode(n) == iro_Proj && get_irn_modecode(n) != irm_M) || - get_irn_opcode(n) == iro_MultipleAdd || - get_irn_opcode(n) == iro_Load || - get_irn_opcode(n) == iro_Proj || - get_irn_opcode(n) == iro_Conv || - get_irn_op(n) == op_IrNode || - pmap_contains(dump_info->argument_nodes, n))) - return; - - - // Check if to_node has also to be dumped. If not, skip this edge - // We have to dump to_node here, because to_node has to be known by grgen before - // connecting an edge to it. - to_node = get_irn_n(n, n_edge); - if(!pmap_contains(dump_info -> nodes_to_dump, to_node)) - return; - - if((nodes_edge_names = pmap_get(dump_info -> edge_name_map, n)) == NULL) - { - nodes_edge_names = (char **) obstack_alloc(&(dump_info->node_names), (get_irn_arity(n) + 1) * sizeof(char *)); - memset(nodes_edge_names, 0, (get_irn_arity(n) + 1) * sizeof(char *)); - pmap_insert(dump_info->edge_name_map, n, nodes_edge_names); - } - - - // Is the target node a node with memory mode? - if(dump_info->dump_everything || get_mode_modecode(get_irn_mode(to_node)) != irm_M) - { - // No, we can dump the edge since it's no memory edge: - - // Dumps node only when it was not dumped before - // dump_grgen_node(to_node, node_name_map, node_names, mode_name_map, mode_names, fp); - // dump_grgen_node(to_node, dump_info, fp); - - assert(pmap_contains(dump_info -> node_name_map, n)); - assert(pmap_contains(dump_info -> node_name_map, to_node)); - from_node_name = (char *) pmap_get(dump_info -> node_name_map, n); - to_node_name = (char *) pmap_get(dump_info -> node_name_map, to_node); - - // Don't dump edge number for certain nodes that are commutative (like ADD operation) - if(!dump_info->dump_everything && (n_edge != -1 && (get_irn_opcode(n) == iro_Add || - get_irn_opcode(n) == iro_MultipleAdd || - get_irn_opcode(n) == iro_Mul) || - get_irn_opcode(n) == iro_Block || - get_irn_opcode(n) == iro_Phi)) - { - char edge_name[50], *edge_name_obst; - - sprintf(edge_name, "e%d", edge_counter++); - edge_name_obst = obstack_alloc(&(dump_info->node_names), strlen(edge_name) + 1); - strcpy(edge_name_obst, edge_name); - nodes_edge_names[n_edge + 1] = edge_name_obst; - - fprintf(fp, "%s%s -%s:df-> %s;\n", indent, from_node_name, edge_name_obst, to_node_name); - } - else - { - char edge_name[50], *edge_name_obst; - - sprintf(edge_name, "pos%d_%d", n_edge + 1, edge_counter++); - edge_name_obst = obstack_alloc(&(dump_info->node_names), strlen(edge_name) + 1); - strcpy(edge_name_obst, edge_name); - nodes_edge_names[n_edge + 1] = edge_name_obst; - - fprintf(fp, "%s%s -%s:df-> %s;\n", indent, from_node_name, edge_name_obst, to_node_name); - } - /* - switch(get_irn_opcode(n)) - { - case iro_Add: - case iro_MultipleAdd: - case iro_Mul: - - break; - default: - fprintf(fp, "%s%s -pos%d_%d:df-> %s;\n", indent, from_node_name, n_edge + 1, edge_counter++, to_node_name); - break; - }*/ - - } -} - - - -/************************************************************************ - * Dumps an FIRM Mode as GrGen Code - * If source_node_name == NULL, that name of n that was already - * generated is used. - * If source_node_name != NULL, this given source will be used - * (useful for retyped nodes) - ************************************************************************/ - -static void dump_grgen_mode(ir_node *n, dump_info_t *dump_info, FILE *fp, ir_mode *alt_mode) -{ - char *node_name = (char *) pmap_get(dump_info -> node_name_map, n); - ir_mode *irn_mode = (alt_mode != NULL) ? alt_mode : get_irn_mode(n); - char edge_name[50]; - char *mode_node_name; - - if(pmap_contains(dump_info->argument_nodes, n)) - irn_mode = mode_ANY; - mode_node_name = dump_grgen_mode_node(irn_mode, dump_info, fp); - - //mode_code = get_mode_modecode(irn_mode); - //mode_name = get_mode_name(irn_mode); - - - -#if 0 - // Check if the mode node has already been created - if(!pmap_contains(dump_info -> mode_name_map, (void *) mode_code)) - { - // No, create a new mode-node - mode_node_name = obstack_alloc(&(dump_info -> mode_names), MAX_NODENAME_LEN); - sprintf(mode_node_name, "mode_%s_node", mode_name); - pmap_insert(dump_info -> mode_name_map, (int *) mode_code, mode_node_name); - // Dump the edge from the current node to it's mode node - fprintf(fp, "%s%s -:has_mode-> %s : Mode_%s;\n", indent, node_name, mode_node_name, mode_name); - } - else - { -#endif - // Yes, use the given mode-node - //mode_node_name = pmap_get(dump_info -> mode_name_map, (void *) mode_code); - sprintf(edge_name, "m%d", edge_counter++); - - - if(pmap_get(dump_info->mode_edge_map, n) == NULL) - { - char *edge_name_obst = obstack_alloc(&(dump_info->node_names), strlen(edge_name) + 1); - strcpy(edge_name_obst, edge_name); - pmap_insert(dump_info->mode_edge_map, n, edge_name_obst); - } - - // Dump the edge from the current node to it's mode node - fprintf(fp, "%s%s -%s:has_mode-> %s;\n", indent, node_name, edge_name, mode_node_name); -#if 0 - } -#endif -} - - - -/************************************************************************ - * Dumps a node representing a node - ************************************************************************/ - -char *dump_grgen_mode_node(ir_mode *irn_mode, dump_info_t *dump_info, FILE *fp) -{ - modecode mode_code = get_mode_modecode(irn_mode); - const char *mode_name = get_mode_name(irn_mode); - char *mode_node_name; - - if(!pmap_contains(dump_info -> mode_name_map, (void *) mode_code)) - { - // No, create a new mode-node - mode_node_name = obstack_alloc(&(dump_info -> mode_names), MAX_NODENAME_LEN); - sprintf(mode_node_name, "mode_%s_node", mode_name); - pmap_insert(dump_info -> mode_name_map, (void *) mode_code, mode_node_name); - fprintf(fp, "%s%s : Mode_%s;\n", indent, mode_node_name, mode_name); - return(mode_node_name); - } - else - { - return((char *) pmap_get(dump_info -> mode_name_map, (void *) mode_code)); - } - -} - - - -/************************************************************************ - * Dumps the condition for the given node, depending on the node's - * attributes and the node's opcode - ************************************************************************/ - -static void dump_grgen_condition(ir_node *n, dump_info_t *dump_info, FILE *fp) -{ - char *node_name; - ir_opcode code = get_irn_opcode(n); - - if(code == iro_MultipleAdd) - { - node_name = pmap_get(dump_info->node_name_map, n); - fprintf(fp, "%s%s.arity == %d;\n", indent, node_name, get_irn_arity(n)); - return; - } - - if(code == iro_Const) - { - node_name = pmap_get(dump_info->node_name_map, n); - fprintf(fp, "%s%s.value == \"%d\";\n", indent, node_name, get_tarval_long(get_Const_tarval(n))); - return; - } - - if(code == iro_VProj) - { - node_name = pmap_get(dump_info->node_name_map, n); - fprintf(fp, "%s%s.proj == %d;\n", indent, node_name, get_VProj_proj(n)); - return; - } - - if(code == iro_Proj) - { - if(!pmap_contains(dump_info->argument_nodes, n)) - { - node_name = pmap_get(dump_info->node_name_map, n); - fprintf(fp, "%s%s.proj == %d;\n", indent, node_name, get_Proj_proj(n)); - } - return; - } - - - if(code == iro_Phi) - { - ir_node *phi_block = get_nodes_block(n); - char **edge_names_phi, **edge_names_block; - int i; - - assert((get_irn_arity(n) == get_irn_arity(phi_block)) && "Phi has other arity than it's block! Pattern seems to be broken."); - - // Load the edge names that have been saved - edge_names_phi = pmap_get(dump_info->edge_name_map, n); - edge_names_block = pmap_get(dump_info->edge_name_map, phi_block); - assert(edge_names_phi && edge_names_block && "Some edge names have not been dumped!"); - - // Correlate the matched phi edges with the matched block edges - // Caution: Position 0 in the edge_names array is the block edge, so start at 1 - for(i = 1; i < get_irn_arity(n) + 1; i++) - { - assert(edge_names_phi[i] != NULL && edge_names_block[i] != NULL && "Some edges have not been dumped!"); - - fprintf(fp, "%s%s.pos == %s.pos;\n", indent, edge_names_phi[i], edge_names_block[i]); - } - return; - } - - assert(0 && "Nodes attributes not supported"); -} - - - - -/************************************************************************ - * Dump grGen code for retyping a special node - ************************************************************************/ - -static void dump_retyping_to_vproj(ir_node *n, ir_node *complex_operation, dump_info_t *dump_info, char *vector_op_node_name, FILE *fp) -{ - // Dump the grGen code for retyping - register_access_descr_t *register_access_descr; - char *node_name; - - /*char *node_name = obstack_alloc(&(dump_info->node_names), MAX_NODENAME_LEN); - - // A node that should be retyped must be already there in the pattern part. - assert(pmap_contains(dump_info->node_name_map, n)); - // Generate a node name for that VProj - sprintf(node_name, "VProj%d", node_counter); - fprintf(fp, "%s%s : VProj<%s>;\n", indent, node_name, pmap_get(dump_info->node_name_map, n)); - dump_grgen_mode(n, dump_info, fp, node_name); */ - - node_name = dump_grgen_retyped_node(n, op_VProj, dump_info, fp); - dump_grgen_delete_incoming_edges(n, dump_info, fp); - - // Dump the edge to the complex operation - fprintf(fp, "%s%s -pos1_%d:df-> %s;\n", indent, node_name, edge_counter++, vector_op_node_name); - node_counter++; - - // Save generated VProj Node name for later usage - register_access_descr = pmap_get(dump_info->register_access, n); - register_access_descr->replace_node_name = node_name; -} - - - -/************************************************************************ - * Dump grGen code for retyping a special node - ************************************************************************/ - -static void dump_retyping_to_proj(ir_node *n, ir_node *complex_operation, dump_info_t *dump_info, char *vector_op_node_name, FILE *fp) -{ - // Dump the grGen code for retyping - register_access_descr_t *register_access_descr; - char *node_name; - - - node_name = dump_grgen_retyped_node(n, op_Proj, dump_info, fp); - dump_grgen_delete_incoming_edges(n, dump_info, fp); // Will get a new edge to the complex op - dump_grgen_mode(n, dump_info, fp, NULL); - - // Dump the edge to the complex operation - fprintf(fp, "%s%s -pos1_%d:df-> %s;\n", indent, node_name, edge_counter++, vector_op_node_name); - node_counter++; - - // Save generated VProj Node name for later usage - register_access_descr = pmap_get(dump_info->register_access, n); - register_access_descr->replace_node_name = node_name; -} - - - -/************************************************************************ - * Dump grGen Code to add the VProj Nr to VProj nodes after replacement - ************************************************************************/ - -static void dump_vproj_nr(dump_info_t *dump_info, FILE *fp) -{ - pmap_entry *entry; - - pmap_foreach(dump_info -> register_access, entry) - { - ir_node *n = (ir_node *) entry->key; - register_access_descr_t *register_access_descr = entry->value; - - // Only VProjs that represent a store have to be changed - if(register_access_descr->load_store == REGISTER_STORE) - fprintf(fp, "%s%s.proj = %d;\n", indent, pmap_get(dump_info->node_name_map, n) /*register_access_descr->replace_node_name*/, register_access_descr->array_index); - } -} - - -/************************************************************************ - * Sets current indent - ************************************************************************/ - -void set_indent(int i) -{ - int j; - - // Generate a string containing i blank characters - if(i < MAX_INDENT - 1) - { - for(j = 0; j < i; j++) - indent[j] = ' '; - indent[j] = 0x0; - current_indent = i; - } -} - - - -/************************************************************************ - * Gets current indent value - ************************************************************************/ - -int get_indent(void) -{ - return(current_indent); -} - -void dump_complex_operation_block_match(dump_info_t *dump_info, FILE *fp) -{ - fprintf(fp, "%s%s -:df-> %s;\n", indent, pmap_get(dump_info->node_name_map, dump_info->node_to_match_block), pmap_get(dump_info->node_name_map, dump_info->complex_operation_block)); -} - - -/************************************************************************ - * Dumps some evals which are mandatory - ************************************************************************/ - -void dump_mandatory_evals(dump_info_t *dump_info, int uses_memory, FILE *fp) -{ - pmap_entry *entry; - - pmap_foreach(dump_info->eval_statements, entry) - { - char *statement = (char *) entry->key; - fprintf(fp, "%s%s\n", indent, statement); - } -} - - -/************************************************************************ - * Adds an eval to the list that has to be dumped at the end - ************************************************************************/ - -void add_eval(dump_info_t *dump_info, char *eval) -{ - char *eval_obst = obstack_alloc(&(dump_info->node_names), strlen(eval) + 5); - - strcpy(eval_obst, eval); - pmap_insert(dump_info->eval_statements, eval_obst, NULL); -} - - - -/************************************************************************* - * Changes the mode of an already dumped node. Deletes the old mode edge - * and inserts a new one. To be used e.g. in the replacement graph. - *************************************************************************/ - -void change_mode(ir_node *n, ir_mode *m, dump_info_t *dump_info, FILE *fp) -{ - char *mode_edge_name = pmap_get(dump_info->mode_edge_map, n); - - if(mode_edge_name != NULL) - { - fprintf(fp, "%sdelete(%s);\n", indent, mode_edge_name); - pmap_insert(dump_info->mode_edge_map, n, NULL); - dump_grgen_mode(n, dump_info, fp, m); - } -} - - -/************************************************************************ - * Sets up "fake" graph analysis information to just dump all nodes of - * an ir graph. Used for the AGTIVE workshop. - * Parameters: irg: The irg to dump - * - * - ************************************************************************/ - -void dump_irgraph_complete_grgen(ir_graph *irg, char *filename, int append) -{ - graph_ana_info_t graph_ana_info; - struct obstack obst; - grgen_dumper_env_t *gd_env; - - obstack_init(&obst); - - graph_ana_info.irg = irg; - graph_ana_info.nodes_to_dump = pmap_create(); - graph_ana_info.register_access = pmap_create(); // Those pmaps are not filled here, but needed by the dumper - graph_ana_info.memory_access = pmap_create(); - graph_ana_info.argument_nodes = pmap_create(); - graph_ana_info.destroyed_regs = pmap_create(); - graph_ana_info.obst = &obst; - graph_ana_info.num_simd_arguments = 0; - graph_ana_info.complex_operation_block = NULL; - graph_ana_info.node_to_match_block = NULL; - graph_ana_info.emit_statement = NULL; - graph_ana_info.has_result = 0; - graph_ana_info.variant_nr = 0; - graph_ana_info.priority = 0; - graph_ana_info.dump_everything = 1; - - gd_env = init_grgen_dumper(filename, append); - irg_walk_graph(graph_ana_info.irg, collect_nodes, NULL, &graph_ana_info); - dump_irgraph_grgen(gd_env, &graph_ana_info); - deinit_grgen_dumper(gd_env); - - pmap_destroy(graph_ana_info.nodes_to_dump); - pmap_destroy(graph_ana_info.destroyed_regs); - pmap_destroy(graph_ana_info.register_access); - pmap_destroy(graph_ana_info.memory_access); - pmap_destroy(graph_ana_info.argument_nodes); - obstack_free(&obst, NULL); - obstack_finish(&obst); -} - - - -/************************************************************************ - * Collects all nodes of a ir graph, so that the ir graph can be - * dumped completely - ************************************************************************/ - - -static void collect_nodes(ir_node *n, void * env) -{ - graph_ana_info_t *graph_ana_info = (graph_ana_info_t *) env; - - pmap_insert(graph_ana_info->nodes_to_dump, n, NULL); -} diff --git a/ir/be/grgen/simd/grgen_dumper.h b/ir/be/grgen/simd/grgen_dumper.h deleted file mode 100644 index 0ba73ec6c..000000000 --- a/ir/be/grgen/simd/grgen_dumper.h +++ /dev/null @@ -1,27 +0,0 @@ -/************************************************************************* -* Program: grgen_dumper.c -* Function: Dumps parts of a firm graph (those which have to be extracted -* as search and replace patterns) as a grgen rule. -* Author: Andreas Schoesser -* Date: 2006-12-07 -*************************************************************************/ - -#ifndef GRGEN_DUMPER_H -#define GRGEN_DUMPER_H - -#include "create_pattern_t.h" - - -typedef struct // Holds information needed througout the usage of a grgen dumper instance -{ - FILE *output_file; // The file the grgen rules will be dumped to -} grgen_dumper_env_t; - - - -grgen_dumper_env_t *init_grgen_dumper(char *file, int append); -int dump_irgraph_grgen(grgen_dumper_env_t *grgen_dumper_env, graph_ana_info_t *walker_info); -void deinit_grgen_dumper(grgen_dumper_env_t *grgen_dumper_env); -void dump_irgraph_complete_grgen(ir_graph *irg, char *filename, int append); - -#endif diff --git a/ir/be/grgen/simd/grgen_dumper__t.h b/ir/be/grgen/simd/grgen_dumper__t.h deleted file mode 100644 index 3237da7e0..000000000 --- a/ir/be/grgen/simd/grgen_dumper__t.h +++ /dev/null @@ -1,64 +0,0 @@ -/************************************************************************* -* Program: grgen_dumper_t.h -* Function: Dumps parts of a firm graph (those which have to be extracted -* as search and replace patterns) as a grgen rule. -* Author: Andreas Schoesser -* Date: 2007-01-11 -*************************************************************************/ - -#ifndef GRGEN_DUMPER_H_T -#define GRGEN_DUMPER_H_T - -#include "grgen_dumper.h" - -#define MAX_NODENAME_LEN 40 - -typedef struct -{ - ir_graph *irg; - struct pmap *mode_edge_map; - struct pmap *edge_name_map; - struct pmap *node_name_map; // Contains the mapping firm node -> node name - struct obstack node_names; // Contains the node name data - struct pmap *mode_name_map; // Contains the mapping firm mode -> mode node name - struct obstack mode_names; // Contains the "mode node name" data - struct pmap *register_access; // Contains all nodes that are register access and their vector component - struct pmap *memory_access; // Contains all nodes that are memory access and their vector component - struct pmap *nodes_to_dump; // Contains firm nodes, that have to be dumped - struct pmap *argument_nodes; // Contains "pointer root nodes" (usually ProjP), which have to be transformed to a generic firm node mode P - struct pmap *retyped_nodes; // Contains all nodes that were retyped in the replacement step and therefore no edges have to be dumped. - // (Retyped nodes get completely new edges in our case) - struct pmap *dump_condition; // Contains all nodes for which a conditions has to be dumped afterwards. - struct pmap *eval_statements; // Contains strings of eval statements dropped during replacement dumping and to be dumped at the end - struct pmap *destroyed_regs; - ir_node *complex_operation_block, *node_to_match_block; - char *node_name; - int has_result; - int priority; - int dump_everything; // Used to dump whole FIRM graphs with memory egdes .... -} dump_info_t; - -static int dump_pattern(dump_info_t *dump_info, FILE *fp); -static void dump_replacement(dump_info_t *dump_info, int uses_memory, FILE *fp); -void dump_grgen_node(ir_node *n, dump_info_t *dump_info, FILE *fp); -static char *dump_grgen_retyped_node(ir_node *n, ir_op *new_op, dump_info_t *dump_info, FILE *fp); -static void dump_grgen_block(ir_node *n, dump_info_t *dump_info, FILE *fp); -void dump_grgen_edge(ir_node *n, int n_edge, dump_info_t *dump_info, FILE *fp); -static void dump_grgen_mode(ir_node *n, dump_info_t *dump_info, FILE *fp, ir_mode *alt_mode); -char *dump_grgen_mode_node(ir_mode *irn_mode, dump_info_t *dump_info, FILE *fp); -void dump_grgen_condition(ir_node *n, dump_info_t *dump_info, FILE *fp); -static void dump_retyping_to_vproj(ir_node *n, ir_node *complex_operation, dump_info_t *dump_info, char *vector_op_node_name, FILE *fp); -static void dump_retyping_to_proj(ir_node *n, ir_node *complex_operation, dump_info_t *dump_info, char *vector_op_node_name, FILE *fp); -static void dump_vproj_nr(dump_info_t *dump_info, FILE *fp); -void dump_complex_operation_block_match(dump_info_t *dump_info, FILE *fp); -void dump_complex_operation(dump_info_t *dump_info, FILE *fp, int uses_memory); -void dump_mandatory_evals(dump_info_t *dump_info, int uses_memory, FILE *fp); -void add_eval(dump_info_t *dump_info, char *eval); -void change_mode(ir_node *n, ir_mode *m, dump_info_t *dump_info, FILE *fp); -void dump_grgen_delete_incoming_edges(ir_node *n, dump_info_t *dump_info, FILE *fp); -static void collect_nodes(ir_node *n, void * env); - -void set_indent(int i); -int get_indent(void); - -#endif diff --git a/ir/be/grgen/simd/normalize.c b/ir/be/grgen/simd/normalize.c deleted file mode 100644 index eb5ce7c31..000000000 --- a/ir/be/grgen/simd/normalize.c +++ /dev/null @@ -1,273 +0,0 @@ -/******************************************************************************************* -* Program: normalize.c -* Function: Part of the simd optimization. Provides functions to normalize a FIRM -* graph in order to increase the number of patterns matched. -* Author: Andreas Schoesser -* Date: 08.03.2007 -*******************************************************************************************/ - -#include -#include - -#include "simd_presets.h" - -#include "pmap.h" -#include "irgwalk.h" -#include "ircons.h" -#include "tv.h" -#include "irgmod.h" -#include "irnode.h" - -#include "normalize_t.h" -#include "firm_node_ext.h" - - - -/************************************************************************ - * Starts normalization of address calculations for Add and Store - * nodes. Folds Add-chains to one big MultipeAdd node. - ************************************************************************/ - -struct pmap *normalize_address_calculation(ir_graph *irg, int decomposition_possible) -{ - normalize_info_t norm_info; - - norm_info.irg = irg; - norm_info.replaced_ptrs = (decomposition_possible) ? pmap_create() : NULL; - - irg_walk_graph(irg, ac_walk_pre, NULL, &norm_info); - - return(norm_info.replaced_ptrs); -} - - - -/************************************************************************ - * Called for each ir_node, in which the main work for normalization - * is done. - ************************************************************************/ - -static void ac_walk_pre(ir_node *n, void * env) -{ - ir_node *addr, *multAdd; - normalize_info_t *norm_info = (normalize_info_t *) env; - ir_graph *irg = norm_info->irg; - int i, exchanged = 0; - - switch(get_irn_opcode(n)) - { - case iro_Load: addr = get_Load_ptr(n); break; - case iro_Store: addr = get_Store_ptr(n); break; - case iro_Proj: if(get_irn_opcode(get_irn_n(n, 0)) == iro_Cmp) - enforce_cmp_gt(n); - return; - default: return; - } - - if(get_irn_opcode(addr) == iro_Add) - { - // Convert a ADD-chain to a single MultipleAdd node. - - ir_node *add = addr; - int arity = 0; - int max_ins = 30; - ir_node **ins = malloc(max_ins * sizeof(ir_node *)); - - if(add_add_preds(add, ins, &max_ins, &arity) == 0) - { - // We found no constant, add 0x0 - ins[arity++] = new_Const(mode_Is, new_tarval_from_long(0, mode_Is)); - } - multAdd = new_ir_node(NULL, irg, get_nodes_block(addr), op_MultipleAdd, get_irn_mode(addr), arity, ins); - - switch(get_irn_opcode(n)) - { - case iro_Load: set_Load_ptr(n, multAdd); break; - case iro_Store: set_Store_ptr(n, multAdd); break; - default: return; - } - - // exchange(add, multAdd); Exchange wouldn't work here since the original ADD node would be killed. - if(norm_info->replaced_ptrs != NULL) - pmap_insert(norm_info->replaced_ptrs, multAdd, add); - free(ins); - } - else if(get_irn_opcode(addr) != iro_MultipleAdd) - { - // Insert a new MultipleAdd node. - ir_node **ins = alloca(2 * sizeof(ir_node *)); - - ins[0] = addr; - ins[1] = new_Const(mode_Is, new_tarval_from_long(0, mode_Is)); - multAdd = new_ir_node(NULL, irg, get_nodes_block(n), op_MultipleAdd, get_irn_mode(addr), 2, ins); - //exchange(addr, multAdd); - if(norm_info->replaced_ptrs != NULL) - pmap_insert(norm_info->replaced_ptrs, multAdd, addr); - - switch(get_irn_opcode(n)) - { - case iro_Load: set_Load_ptr(n, multAdd); break; - case iro_Store: set_Store_ptr(n, multAdd); break; - default: return; - } - } - - /* Order the MultAdd ins to be compared quickly later. Bubble Sort */ - do - { - exchanged = 0; - for(i = 0; i < get_irn_arity(multAdd) - 1; i++) - { - ir_node *n1 = get_irn_n(multAdd, i), - *n2 = get_irn_n(multAdd, i + 1); - - // Move the Constant to pos0 - if(is_Const(n2) && !is_Const(n1)) - { - set_irn_n(multAdd, i, n2); - set_irn_n(multAdd, i + 1, n1); - exchanged = 1; - continue; - } - - // Otherwise order by pointer value - if(n1 > n2 && !is_Const(n1)) - { - set_irn_n(multAdd, i, n2); - set_irn_n(multAdd, i + 1, n1); - exchanged = 1; - } - } - } while(exchanged); - -} - - - -/************************************************************************ - * Recursive function. Collects all adds of an "add chain" and inserts - * all the predecessors of the add chain into one ins array - ************************************************************************/ - -int add_add_preds(ir_node *add, ir_node **ins, int *max_len, int *num_preds) -{ - int i, found_constant = 0; - - for(i = 0; i < 2; i++) - { - ir_node *pred = get_irn_n(add, i); - switch(get_irn_opcode(pred)) - { - case iro_Add: found_constant |= add_add_preds(pred, ins, max_len, num_preds); - break; - case iro_Const: found_constant |= 1; - /* Fall through */ - default: assert(*num_preds < *max_len && "Reallocation of temp ins array not implemented yet!"); - ins[*num_preds] = pred; - (*num_preds)++; - } - } - - return(found_constant); -} - - - -/******************************************************* - * Decompose the normalization, that is replace all - * introduced MultipleAdds by their original ADD-Chain. - *******************************************************/ - -void decompose_normalization(struct pmap *replaced_ptrs) -{ - pmap_entry *entry; - - pmap_foreach(replaced_ptrs, entry) - { - ir_node *multAdd = (ir_node *) entry->key; - ir_node *orgAddr = (ir_node *) entry->value; - - //if(get_irn_n_edges(multAdd) > 0) -/* switch(get_irn_opcode(loadStore)) - { - case iro_Load: set_Load_ptr(loadStore, orgAddr); break; - case iro_Store: set_Store_ptr(loadStore, orgAddr); break; - default: break; //return; //assert(0 && "Wrong opcode!"); - }*/ - exchange(multAdd, orgAddr); -// edges_node_deleted(multAdd, get_irn_irg(multAdd)); - } - - pmap_destroy(replaced_ptrs); -} - - -/************************************************************************ - * Returns the original address that was replaced by a multiple add - ************************************************************************/ - -ir_node *get_org_addr(ir_node *madd, struct pmap *replaced_ptrs) -{ - assert(get_irn_opcode(madd) == iro_MultipleAdd); - return(pmap_get(replaced_ptrs, madd)); -} - - - -/************************************************************************ - * Enforces all compares lt to be gt - ************************************************************************/ - -void enforce_cmp_gt(ir_node *proj) -{ - if(get_Proj_proj(proj) == pn_Cmp_Lt) - { - pn_Cmp new_pnc = get_inversed_pnc(get_Proj_proj(proj)); - ir_node *tmp, *cmp = get_irn_n(proj, 0); - - tmp = get_Cmp_left(cmp); - set_Cmp_left(cmp, get_Cmp_right(cmp)); - set_Cmp_right(cmp, tmp); - set_Proj_proj(proj, new_pnc); - } -} - - -/************************************************************************/ -/* */ -/************************************************************************/ -#if 0 -void normalize_direct_jump(ir_node *block) -{ - int block_arity = get_irn_arity(block); - int i, j; - - if(block_arity > 1) - { - for(i = 0; i < block_arity; i++) - { - ir_node *pred1 = get_irn_n(block, i); - ir_node *cond; - if(get_irn_opcode(pred1) == iro_Proj && get_irn_mode(pred1) == mode_X && get_Proj_proj(pred1) == 0 /* False */) - { - cond = get_irn_n(pred1, 0); - assert(get_irn_op(cond) == iro_Cond); - - for(j = 0; i < block_arity; j++) - { - ir_node *jmp = get_irn_n(block, j); - - if(j == i) - continue; - - if(get_irn_opcode(jmp) == iro_Jmp) - { - ir_node *jmp_block = get_nodes_block(jmp); - if(get_irn_arity(jmp_block) == 1 && get_irn_n(jmp_block) - } - - } - } - } -} -#endif diff --git a/ir/be/grgen/simd/normalize.h b/ir/be/grgen/simd/normalize.h deleted file mode 100644 index f150e406a..000000000 --- a/ir/be/grgen/simd/normalize.h +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************************* -* Program: normalize.h -* Function: Part of the simd optimization. Provides functions to normalize a FIRM -* graph in order to increase the number of patterns matched. -* Author: Andreas Schoesser -* Date: 08.03.2007 -*******************************************************************************************/ - -#ifndef __NORMALIZE_H__ -#define __NORMALIZE_H__ - -/** */ -struct pmap *normalize_address_calculation(ir_graph *irg, int decomposition_possible); -void decompose_normalization(struct pmap *replaced_ptrs); -ir_node *get_org_addr(ir_node *madd, struct pmap *replaced_ptrs); - -#endif diff --git a/ir/be/grgen/simd/normalize_t.h b/ir/be/grgen/simd/normalize_t.h deleted file mode 100644 index 8be833346..000000000 --- a/ir/be/grgen/simd/normalize_t.h +++ /dev/null @@ -1,24 +0,0 @@ -/******************************************************************************************* - * Program: normalize_t.h - * Function: Part of the simd optimization. Provides functions to normalize a FIRM - * graph in order to increase the number of patterns matched. - * Author: Andreas Schoesser - * Date: 08.03.2007 - *******************************************************************************************/ - -#ifndef __NORMALIZE_T_H__ -#define __NORMALIZE_T_H__ - -#include "irnode.h" - -static void ac_walk_pre(ir_node *n, void * env); -int add_add_preds(ir_node *add, ir_node **ins, int *max_len, int *num_preds); -void enforce_cmp_gt(ir_node *proj); - -typedef struct -{ - ir_graph *irg; - struct pmap *replaced_ptrs; -} normalize_info_t; - -#endif diff --git a/ir/be/grgen/simd/presets.h b/ir/be/grgen/simd/presets.h deleted file mode 100644 index 3205a0b9a..000000000 --- a/ir/be/grgen/simd/presets.h +++ /dev/null @@ -1,13 +0,0 @@ -/************************************************************************* -* Program: presets.h -* Function: Preset values for simd optimizer -* Author: Andreas Schoesser -* Date: 2006-12-20 -*************************************************************************/ - -#ifndef _PRESETS_H_ -#define _PRESETS_H_ - -#define MEMORY_ARRAY "memory_array" - -#endif diff --git a/ir/be/grgen/simd/rule_info_dumper.c b/ir/be/grgen/simd/rule_info_dumper.c deleted file mode 100644 index d97209d46..000000000 --- a/ir/be/grgen/simd/rule_info_dumper.c +++ /dev/null @@ -1,97 +0,0 @@ -/*********************************************************************** - * Program: rule_info_dumper.c - * Function: Dumps C source code containig information about the - * generated GrGen rules into a .h file to be included - * when the compiler is recompiled to use the new GrGen - * rules. - * Depends on: Needs the analysis info generated by the pattern creator - * Author: Andreas Schoesser - * Date: 2007-06-28 - ************************************************************************/ - - -// ----------------------------- INCLUDES -------------------------------- - -#include - -#include "rule_info_dumper.h" -#include "simd_presets.h" - - - -/************************************************************************ - * Dumps the header of the "rulenames.c" file - * Rulenames.c contains information about - * - Which rules are defined, - * - Which name the assembly operation the complex operation gets - * - Which name the backend-firmnode the complex operation gets. - ************************************************************************/ - -rule_info_env_t *init_rule_info_dumper(int max_num_rules) -{ - rule_info_env_t *rule_info_env = malloc(sizeof(rule_info_env_t)); - FILE *fp = fopen(RULENAME_FILE, "wt"); - - fprintf(fp, "#ifdef INCLUDE_GENERATED_PATTERNS\n"); - fprintf(fp, "typedef ir_node* (* ia32_construct_func_t) ();\n"); - fprintf(fp, "ext_grs_action_t *rules[%d];\n", max_num_rules); - fprintf(fp, "char *operation_names[%d];\n", max_num_rules); - fprintf(fp, "char *firmnode_names[%d];\n", max_num_rules); - fprintf(fp, "int priorities[%d][2];\n", max_num_rules); - fprintf(fp, "ia32_construct_func_t ia32_construct_funcs[%d];\n", max_num_rules); - fprintf(fp, "int cost_savings[%d];\n", max_num_rules); - fprintf(fp, "\n"); - fprintf(fp, "void fill_rulename_array()\n{\n"); - - rule_info_env->output_file = fp; - rule_info_env->num_rules = 0; - return(rule_info_env); -} - - - -/************************************************************************ - * Dumps the above information for each rule. - ************************************************************************/ - -void dump_rule_info(rule_info_env_t *rule_info_env, graph_ana_info_t *graph_ana_info, int arity) -{ - FILE *fp = rule_info_env->output_file; - char name[255]; - const char *firmnode_name; - int i = rule_info_env->num_rules; - - get_rule_name(graph_ana_info, name); - firmnode_name = name; - - fprintf(fp, " {\n"); - fprintf(fp, " extern ext_grs_action_t *ext_grs_action_complex_instructions_%s;\n", name); - fprintf(fp, " extern ia32_construct_func_t new_rd_ia32_%s;\n", firmnode_name); - fprintf(fp, " rules[%d] = ext_grs_action_complex_instructions_%s;\n", i, name); - fprintf(fp, " firmnode_names[%d] = \"%s\";\n", i, firmnode_name); - fprintf(fp, " ia32_construct_funcs[%d] = (ia32_construct_func_t) &new_rd_ia32_%s;\n", i, firmnode_name); - fprintf(fp, " priorities[%d][0] = %d;\n", i, i); - fprintf(fp, " priorities[%d][1] = %d;\n", i, graph_ana_info->priority); - fprintf(fp, " cost_savings[%d] = %d;\n", i, graph_ana_info->cost_savings); - fprintf(fp, " }\n"); - - rule_info_env->num_rules++; -} - - - -/************************************************************************ - * Frees information used by the rule_info_dumper instance - ************************************************************************/ - -void deinit_rule_info_dumper(rule_info_env_t *rule_info_env) -{ - FILE *fp = rule_info_env->output_file; - - // Dump footer of rule pointers file - fprintf(fp, "}\n\n"); - fprintf(fp, "#define NUM_RULES %d\n\n#endif\n", rule_info_env->num_rules); - - fclose(rule_info_env->output_file); - free(rule_info_env); -} diff --git a/ir/be/grgen/simd/rule_info_dumper.h b/ir/be/grgen/simd/rule_info_dumper.h deleted file mode 100644 index 79230d978..000000000 --- a/ir/be/grgen/simd/rule_info_dumper.h +++ /dev/null @@ -1,31 +0,0 @@ -/*********************************************************************** -* Program: rule_info_dumper.c -* Function: Dumps C source code containig information about the -* generated GrGen rules into a .h file to be included -* when the compiler is recompiled to use the new GrGen -* rules. -* Author: Andreas Schoesser -* Date: 2007-06-28 -************************************************************************/ - -#ifndef __RULE_INFO_DUMPER__ -#define __RULE_INFO_DUMPER__ - -#include -#include "create_pattern_t.h" - - - -typedef struct // Holds information throughout the lifetime of a rule_info_dumper instance -{ - FILE *output_file; // The file the rule information is written to - int num_rules; // Holds the number of rules dumped so far -} rule_info_env_t; - - -rule_info_env_t *init_rule_info_dumper(int max_num_rules); -void deinit_rule_info_dumper(rule_info_env_t *rule_info_env); -void dump_rule_info(rule_info_env_t *rule_info_env, graph_ana_info_t *graph_ana_info, int arity); - - -#endif diff --git a/ir/be/grgen/simd/search_tree.c b/ir/be/grgen/simd/search_tree.c deleted file mode 100644 index 886740993..000000000 --- a/ir/be/grgen/simd/search_tree.c +++ /dev/null @@ -1,801 +0,0 @@ -/************************************************************************ - * Program: Search_tree.c - * Project: SIMD optimization - * Function: Provides functions to build a search tree to - * select the patterns for rewrite - * Author: Andreas Schoesser - * Date: 2007-07-05 - ************************************************************************/ - -#include -#include - -#include "irgraph.h" -#include "pmap.h" -#include "irtools.h" - -#include "grs/match.h" - -#include "simd_presets.h" -#include "search_tree_t.h" -#include "firm_node_ext.h" - - -struct pmap *applied_nodes; -static int st_number = 0; - - -/************************************************************************ - * Builds a search tree - * TODO: Check if a match is valid, only then insert a search tree node, - * but insert it into the ignore list - ************************************************************************/ - -search_tree_node_t *build_search_tree(search_tree_env_t *search_tree_env, int prio_start) -//void build_search_tree(search_tree_env_t *search_tree_env)//, int struct pmap *vec_operations, struct pmap *keep_nodes, int start, statistics_t *statistics, struct pmap *replaced_ptrs) -{ - plist_t **ignored_matches = alloca(search_tree_env->num_rules * sizeof(plist_t *)); - search_tree_node_t *root; - int i; - char st_filename[255]; - - applied_nodes = pmap_create(); - #if VERBOSE_REWRITE - printf("\n\nBuilding search tree for priority %d:\n\n", search_tree_env->priorities[1]); - #endif - - // Create "list of matches to ignore" for each rule type - for(i = 0; i < search_tree_env->num_rules; i++) - ignored_matches[i] = plist_new(); - - root = rec_search_patterns(search_tree_env, search_tree_env->priorities[1], ignored_matches); - - // Free "list of matches to ignore" for each rule type - for(i = 0; i < search_tree_env->num_rules; i++) - { - plist_clear(ignored_matches[i]); - plist_free(ignored_matches[i]); - } - - #if VERBOSE_REWRITE - sprintf(st_filename, "%s-searchtree-%d.vcg", get_entity_name(get_irg_entity(search_tree_env->irg)), st_number++); - dump_search_tree(root, st_filename, "testtree", search_tree_env); - #endif - - #if VERBOSE_REWRITE - printf("\n"); - #endif - - pmap_destroy(applied_nodes); - - return(root); -} - - - -/************************************************************************ - * Frees the memory occupied by the search tree data structure - * Params: root: The root node of the search tree - ************************************************************************/ - -void destroy_search_tree(search_tree_node_t *root) -{ - // Free memory preds - if(root->memory_preds != NULL) - pmap_destroy(root->memory_preds); - - // Free the match and free subsequent search nodes recursively - if(root->match != NULL) - { - destroy_search_tree(root->with); - destroy_search_tree(root->without); - ext_grs_free_match(root->match); - } - - // Free the current search tree node itself - free(root); -} - - - -/************************************************************************ - * Searches patterns recursively and tests what costs appear when - * the pattern we found would be applied or not. - ************************************************************************/ - -static search_tree_node_t *rec_search_patterns(search_tree_env_t *st_env, int prio, plist_t **ignored_matches) -{ - int i, j, *prio_pos = st_env->priorities; - - // Search all patterns in this priority - search_tree_node_t *st_node = malloc(sizeof(*st_node)); - - memset(st_node, 0, sizeof(*st_node)); - - for(; prio_pos[1] == prio; ) // TODO! Nach oben begrenzen! - { - int rule_nr = prio_pos[0]; - ext_grs_match_t *match; - - #if VERBOSE_REWRITE - printf("\nSearching pattern %s (%d).", st_env->firmnode_names[rule_nr], rule_nr); - #endif - - // Get ALL matches - match = ext_grs_match(st_env->irg, st_env->m_plans[rule_nr], ext_grs_ALL, ext_grs_REGARDLESS); - assert(match != NULL && "Panic! No memory for match!"); - st_env->statistics->num_matches += ext_grs_get_n_matches(match); - st_env->statistics->num_matched_nodes += ext_grs_get_n_matches(match) * ext_grs_get_match_max_node_aiid(match); - - // Now find the first one not to be ignored; - for(i = 0; i < ext_grs_get_n_matches(match); i++) - { - if(!ignore_match(match, i, ignored_matches, rule_nr)) - { - // Insert this match into ignore list - plist_element_t *inserted_match = add_ignored_match(match, i, ignored_matches, rule_nr); - plist_t *undo_vproj_info; - int aa; - - #if VERBOSE_REWRITE - printf(" Found! %p", st_node); - #endif - - // ** First look if we're allowed to apply the match ** - // Look if the arguments are in dominating blocks - - if((aa = analyze_arguments(st_env->rules[rule_nr], match, i, st_env->irg, NULL)) < 0) - { - - #if VERBOSE_REWRITE - if(aa == -1) - printf(" Invalid arguments."); - else - printf(" Argument dependency."); - #endif - return(st_node); - } - - - // Find the memory predecessors to be able to schedule the complex operation - st_node->memory_preds = find_memory_preds(st_env->irg, ext_grs_get_match_node_map(match, i), st_env->rules[rule_nr]->max_node_aiid); - - // Do alias analysis and "LOAD usage" analysis" to see if pattern is really appliable. - if(test_alias_relation(match->nodes[i], match->max_node_id, st_node->memory_preds, st_env->replaced_ptrs) != 0) - { - #if VERBOSE_REWRITE - printf(" Rejected: Alias conflict!"); - #endif - return(st_node); - } - - - // Arriving here means we're allowed to apply the match. Save information and look for - // following matches with or without the current match. - st_node->match = match; - st_node->which_match = i; - st_node->rule_nr = rule_nr; - - // call recursively - st_node->without = rec_search_patterns(st_env, prio, ignored_matches); - - // Delete this pattern from the ignored ones - delete_ignored_match(ignored_matches, inserted_match, rule_nr); - - - // Insert vProj nodes - undo_vproj_info = construct_vproj(st_env, st_node, rule_nr); - - // call again recursively - #if VERBOSE_REWRITE - printf("\nApplying %p ", st_node); - #endif - insert_inner_nodes(st_env, st_node); - st_node->with = rec_search_patterns(st_env, prio, ignored_matches); - remove_inner_nodes(st_env, st_node); - #if VERBOSE_REWRITE - printf("\nFinished Applying %p\n", st_node); - #endif - - // Destroy VProj nodes - deconstruct_vproj(undo_vproj_info); - - - // Build the search tree node for this match - - st_node->this_matchs_costsavings = st_env->cost_savings[rule_nr] - ext_result_costs(st_node->match, st_node->which_match); - st_node->cost_savings = MAX((st_node->without->cost_savings), (st_node->with->cost_savings + st_node->this_matchs_costsavings)); - - - return(st_node); - } - } - prio_pos += 2; - } - return(st_node); -} - - - -/*_ _ _ - (_) __ _ _ __ ___ _ __ ___ __| | _ __ ___ __| | ___ ___ - | |/ _` | '_ \ / _ \| '__/ _ \/ _` | | '_ \ / _ \ / _` |/ _ \/ __| - | | (_| | | | | (_) | | | __/ (_| | | | | | (_) | (_| | __/\__ \ - |_|\__, |_| |_|\___/|_| \___|\__,_| |_| |_|\___/ \__,_|\___||___/ - |___/ */ - - -/************************************************************************ - * Adds a certain match to the list of ignored matches - * Prarms: match: The match object to be inserted - * which: The match number inside the match object to be inserted - * ignored_matches: Array of list of matches to be ignored - * rule_nr: The rule which found the match - * Returns: List element containing the ignored match - ************************************************************************/ - -static plist_element_t *add_ignored_match(ext_grs_match_t *match, int which, plist_t **ignored_matches, int rule_nr) -{ - ignored_match_t *imatch = malloc(sizeof(*imatch)); - //memset(imatch, 0, sizeof(*imatch)); - - imatch->nodes = generate_nodemap_hash(ext_grs_get_match_node_map(match, which), ext_grs_get_match_max_node_aiid(match)); - // imatch->edges = ext_grs_get_match_edge_map(match, which); - - plist_insert_back(ignored_matches[rule_nr], imatch); - return(plist_last(ignored_matches[rule_nr])); -} - - - -/************************************************************************ - * Removes a certain match to the list of ignored matches - * Params: ignored_matches: List of matches to be ignored - * match_to_delete: List element of ignored_matches to be deleted - ************************************************************************/ - -static void delete_ignored_match(plist_t **ignored_matches, plist_element_t *match_to_delete, int rule_nr) -{ - ignored_match_t *imatch = match_to_delete->data; - pmap_destroy(imatch->nodes); - free(imatch); - plist_erase(ignored_matches[rule_nr], match_to_delete); -} - - - -/************************************************************************ - * Test, if a certain match is in the ignore list - * Returns: 0 if the match is not in the list - * 1 if the match has to be ignored - * Prarms: match: The match object to be tested - * which: The match number inside the match object to be tested - * ignored_matches: Array of list of matches to be ignored - * rule_nr: The rule which found the match - ************************************************************************/ - -static int ignore_match(ext_grs_match_t *match, int which, plist_t **ignored_matches, int rule_nr) -{ - int j; - plist_element_t *el; - pmap_entry *pen = NULL; - ir_node **node_map = ext_grs_get_match_node_map(match, which); - ir_edge_t **edge_map = ext_grs_get_match_edge_map(match, which); - int max_aiid = ext_grs_get_match_max_node_aiid(match); - - // Iterate over all matches to be ignored of rule type "rule_nr" - foreach_plist(ignored_matches[rule_nr], el) - { - ignored_match_t *imatch = (ignored_match_t *) el->data; - int difference = 0; - - for(j = 0; j <= max_aiid; j++) - // if((pen = pmap_get(imatch->nodes, node_map[j])) == NULL) /// HAEEE? Why does this not work???? - if(!pmap_contains(imatch->nodes, node_map[j])) - { - difference = 1; // We have a difference. Proceed with next saved match - break; - } - - if(difference == 0) - { - #if VERBOSE_REWRITE - printf(" Ignoring: Already matched in %p", pen); - #endif - return(1); // There is no difference beetween the two, that means we found 2 identical matches - } - } - - // Now look if match's nodes don't collide with inner nodes of already applied matches - for(j = 0; j <= max_aiid; j++) - if((pen = pmap_get(applied_nodes, node_map[j])) != 0) - { - #if VERBOSE_REWRITE - printf(" Overlapping with %p", pen); - #endif - return(1); - } - - - return(0); -} - - -/************************************************************************ - * Insert inner nodes of an applied pattern into a global pmap - ************************************************************************/ - -void insert_inner_nodes(search_tree_env_t *st_env, search_tree_node_t *st_node) -{ - ir_node **nodes = ext_grs_get_match_node_map(st_node->match, st_node->which_match); - int max_id = ext_grs_get_match_max_node_aiid(st_node->match, st_node->which_match); - int i; - ext_grs_node_t **act_nodes = st_node->match->action->nodes; - int len = strlen(VECTOR_RESULT_NAME); - - for(i = 0; i < max_id; i++) - { - // Ignore Agrument nodes of the pattern - if(act_nodes[i]->op == op_IrNode) // Generic argument nodes - continue; - if(strncmp(act_nodes[i]->name, "Arg_", 4) == 0) // explicit argument nodes, that is Vector Base - continue; - if(get_irn_opcode(nodes[i]) == iro_Const) - continue; - if(get_irn_opcode(nodes[i]) == iro_VProj) - continue; - if(get_irn_opcode(nodes[i]) == iro_Block) - continue; - pmap_insert(applied_nodes, nodes[i], (void *) st_node); // Annotate which node produced that node - } -} - - - -/************************************************************************ - * - ************************************************************************/ - -void remove_inner_nodes(search_tree_env_t *st_env, search_tree_node_t *st_node) -{ - ir_node **nodes = ext_grs_get_match_node_map(st_node->match, st_node->which_match); - int max_id = ext_grs_get_match_max_node_aiid(st_node->match, st_node->which_match); - int i; - - for(i = 0; i < max_id; i++) - if(pmap_contains(applied_nodes, nodes[i])) - pmap_insert(applied_nodes, nodes[i], 0); // Ugly, can't remove from pmap! -} - - - -/* ___ _ __ ______ _ - |_ _|_ __ ___ ___ _ __| |_ \ \ / / _ \ _ __ ___ (_) - | || '_ \/ __|/ _ \ '__| __| \ \ / /| |_) | '__/ _ \| | - | || | | \__ \ __/ | | |_ \ V / | __/| | | (_) | | - |___|_| |_|___/\___|_| \__| \_/ |_| |_| \___// | - |__/ */ - -/************************************************************************ - * Insert "artificial" VProj and Complex Instruction nodes - * Annotate at these nodes which match "created" them. - ************************************************************************/ - -static plist_t *construct_vproj(search_tree_env_t *st_env, search_tree_node_t *st_node, int rule_nr) -{ - char node_name[50]; - int result_nr = 0, result_aiid; - plist_t *undo_info = plist_new(); - ext_grs_match_t *match = st_node->match; - int which = st_node->which_match; - - // Find out if the match has VProj results and how many - // This is done by looking for the node names Result_0_... - Result_n_... - // The right node names have to be created by the pattern creator before! - - sprintf(node_name, "%s%d", VECTOR_RESULT_NAME, result_nr); - if((result_aiid = ext_grs_act_get_node_aiid_n(st_env->rules[rule_nr], node_name, strlen(node_name))) >= 0) - { // Yes, it has vector results - ir_node **nodes = ext_grs_get_match_node_map(match, which); - ir_node *ins[1], *dataproj, *block, *complex; - pmap_entry *pen; - - block = get_nodes_block(nodes[result_aiid]); - - // Insert artificial complex instruction - ins[0] = NULL; - pmap_foreach(st_node->memory_preds, pen) - { - ins[0] = get_irn_n(pen->key, 0); //(pen->key); - pmap_break(st_node->memory_preds); - } - complex = new_ir_node(NULL, st_env->irg, block, op_FakeComplex, mode_T, (ins[0] == NULL) ? 0 : 1, &ins[0]); - ins[0] = complex; - dataproj = new_ir_node_with_update(NULL, st_env->irg, block, op_Proj, mode_LLu, 1, ins); - insert_which_match_vproj(st_env, dataproj, st_node->match, st_node->which_match, -1); - ins[0] = dataproj; - - // Insert the VProjs, connect them with the complex instruction node - do - { - ir_node *result_node = nodes[result_aiid]; - ir_node *new_vproj; - ir_edge_t *res_succ, **outs; - int n_edges, i = 0; - undo_vproj_t *undo_vproj = malloc(sizeof(*undo_vproj)); - - // Create a new VProj node - new_vproj = new_ir_node_with_update(NULL, st_env->irg, get_nodes_block(result_node), op_VProj, get_irn_mode(result_node), 1, ins); - set_VProj_proj(new_vproj, result_nr); - - // Save undo info for that VProj node - undo_vproj -> vproj_node = new_vproj; - undo_vproj -> org_result = result_node; - plist_insert_back(undo_info, undo_vproj); - - // Save for each VProj, which match "created" them - //pmap_insert(st_env->which_match_vproj, new_vproj, st_node); - insert_which_match_vproj(st_env, new_vproj, st_node->match, st_node->which_match, result_aiid); - - // Now connect the result's successors to the Vproj, remember the old connections - n_edges = get_irn_n_edges(result_node); - NEW_ARR_A(ir_edge_t *, outs, n_edges); - - foreach_out_edge(result_node, res_succ) - { - assert(i < n_edges); - outs[i++] = res_succ; - } - - for(i = 0; i < n_edges; i++) - { - // Rewire - set_irn_n(outs[i]->src, outs[i]->pos, new_vproj); - } - - - // Search the next node. - sprintf(node_name, "%s%d", VECTOR_RESULT_NAME, ++result_nr); - } while((result_aiid = ext_grs_act_get_node_aiid_n(st_env->rules[rule_nr], node_name, strlen(node_name))) >= 0); - } - - //dump_ir_block_graph(st_env->irg, "inserted_vproj"); - - return(undo_info); - -} - - - -/************************************************************************ - * Connects the successors of the inserted VProjs with their original - * arguments again. Does NOT erase the VProj nodes from the graph, - * they are still needed. - * Frees the undo info - ************************************************************************/ - -static void deconstruct_vproj(plist_t *undo_vproj_info) -{ - plist_element_t *el; - - // Undo every VProj inserted - foreach_plist(undo_vproj_info, el) - { - undo_vproj_t *undo_vproj = el->data; - ir_edge_t **outs, *vproj_succ; - int i = 0, n_edges; - - assert(get_irn_opcode(undo_vproj->vproj_node) == iro_VProj); - - // Save all outs - n_edges = get_irn_n_edges(undo_vproj->vproj_node); - NEW_ARR_A(ir_edge_t *, outs, n_edges); - foreach_out_edge(undo_vproj->vproj_node, vproj_succ) - { - assert(i < n_edges); - outs[i++] = vproj_succ; - } - - // Rewire - for(i = 0; i < n_edges; i++) - set_irn_n(outs[i]->src, outs[i]->pos, undo_vproj->org_result); - - // TODO!! Remove VProjs from matchers nodes list! - - // Free undo info - free(undo_vproj); - - } - - plist_clear(undo_vproj_info); - plist_free(undo_vproj_info); -} - - - -/************************************************************************ - * Creates an entry in the which_match_vproj pmap to indicate - * which match created which vproj node and where to find the - * the REAL vproj node that was created by the replacement - ************************************************************************/ - -static void insert_which_match_vproj(search_tree_env_t *st_env, ir_node *vproj, ext_grs_match_t *match, int which, int aiid) -{ - which_match_vproj_t *wmv = obstack_alloc(st_env->obst, sizeof(*wmv)); - - wmv->match = match; - wmv->which = which; - wmv->aiid = aiid; - - pmap_insert(st_env->which_match_vproj, vproj, wmv); -} - - -/* _ _ - _ __ ___ _ __ | | __ _ ___ ___ _ __ ___ ___ _ __ | |_ -| '__/ _ \ '_ \| |/ _` |/ __/ _ \ '_ ` _ \ / _ \ '_ \| __| -| | | __/ |_) | | (_| | (_| __/ | | | | | __/ | | | |_ -|_| \___| .__/|_|\__,_|\___\___|_| |_| |_|\___|_| |_|\__| - |_| */ - -/************************************************************************ - * Walk over search tree - * Replace those patterns with the greates saving of costs - * Params: root: root of the search tree - ************************************************************************/ - -void replace_search_tree(search_tree_node_t *root, replace_st_env_t *rep_env) -{ - char force_apply, suggestion; - - if(root->match == NULL) - return; - - #if VERBOSE_REWRITE - suggestion = ((root->without->cost_savings) > (root->with->cost_savings + root->this_matchs_costsavings)) ? 'n' : 'y'; - printf("\nApply RULE %s? Suggested: %c (y/n): ", rep_env->firmnode_names[root->rule_nr], suggestion); - #if PROMPT_REWRITE - force_apply = getch(); - #endif - #endif - - - #if VERBOSE_REWRITE && PROMPT_REWRITE - if(force_apply == 'n' || force_apply == 'N') // User driven - #else - if((root->without->cost_savings) >= (root->with->cost_savings + root->this_matchs_costsavings)) // Cost driven - #endif - { - #if VERBOSE_REWRITE - printf("n"); - #endif - // Go on with the "not replaced" edge - replace_search_tree(root->without, rep_env); - } - else - { - int which[1]; - char match_postfix[100]; - - #if VERBOSE_REWRITE - printf("y"); - #endif - - // Manipulate the match to use the VProjs of its predecessor - manipulate_match(rep_env, root->match, root->which_match); - - // Rewrite the Match - which[0] = root->which_match; - ext_grs_finish_match(root->match, 1, &which[0]); - - connect_complex_memory(rep_env->rules[root->rule_nr], root->match, root->which_match, root->memory_preds); - save_complex_operation(rep_env->rules[root->rule_nr], root->match, root->which_match, rep_env->vec_operations, root->rule_nr); - save_keep_nodes(rep_env->rules[root->rule_nr], root->match, root->which_match, rep_env->keep_nodes); - set_complex_operation_block(rep_env->irg, root->match, root->which_match); - - //sprintf(match_postfix, "-REWRITTEN-%d-%d", i, j); - //dump_ir_block_graph(irg, match_postfix); - rep_env->statistics -> num_instructions_inserted++; - rep_env->statistics -> num_replaced_nodes += root->match->n_nodes; - rep_env->statistics -> rewritten_patterns[root->rule_nr]++; - - // Go on with the "replaced" edge - replace_search_tree(root->with, rep_env); - } -} - - - -/************************************************************************ - * Manipulate Match object before replacement to not use the - * temporarily created VProj nodes but the VProj nodes created by - * the previous replacement. - ************************************************************************/ - -static void manipulate_match(replace_st_env_t *rep_env, ext_grs_match_t *match, int which) -{ - /* TODO: - * Find out which nodes and edges have to be manipulated - - Iterate through matches array - - Look if a node is inside the which_match_vproj map - - Retrieve the preceeding match object - - - */ - - int max_aiid = ext_grs_get_match_max_node_aiid(match); - ir_node **node_map = ext_grs_get_match_node_map(match, which); - which_match_vproj_t *wmv; - int i; - - // Manipulate nodes - for(i = 0; i < max_aiid; i++) - { - if((wmv = (which_match_vproj_t *) pmap_get(rep_env->which_match_vproj, node_map[i])) != NULL) - { - // We found an entry that has to be rewired. - if(wmv->aiid >= 0) - { - // It's a retyped result node. Follow "kept" array that points to the replace_node_map - ir_node **repl_node_map = wmv->match->repl_nodes[wmv->which]; - node_map[i] = repl_node_map[wmv->match->action->pattern_node_kept[wmv->aiid]]; - } - else - { - // It's the vector proj, which is not in the "kept" array since it was newly inserted. - // Search for it by name in the replace_node_map - int aiid = ext_grs_act_get_node_aiid(wmv->match->action, VECTOR_OP_PROJDATA_NAME); - ir_node **repl_node_map = wmv->match->repl_nodes[wmv->which]; - assert(aiid >= 0 && "Vector_Op_ProjData not found!"); - node_map[i] = repl_node_map[aiid]; - } - } - } - - // Manipulate edges! Maybe not even necessary! As well as Vprojs, we just need the - // Vector_op_ProjData node! -} - - - -/************************************************************************ -* Find the block to place the complex operation in -* We have to think here: -* Maybe we should prefer the blocks of the memory nodes. If no memory -* nodes there, the algorithm should be correct. -************************************************************************/ - -void set_complex_operation_block(ir_graph *irg, ext_grs_match_t *match, int which) -{ - ir_node **nodes = ext_grs_get_replace_node_map(match, which); - int max_id = match->action->max_repl_node_aiid; - int i, aiid; - - ir_node *current_block = NULL; - - assure_doms(irg); - - for(i = 0; i <= max_id; i++) - { - if(nodes[i] != NULL) - { - ir_opcode opc = get_irn_opcode(nodes[i]); - if(opc != iro_Conv && match->action->replacement_nodes[i]->op != op_IrNode /* Its a generic Vector Base */ && opc != iro_VProj && opc != iro_MultipleAdd && opc != iro_Block && opc != iro_Const && strncmp(match->action->replacement_nodes[i]->name, "Arg_", 4) != 0) - { - if(current_block == NULL) - current_block = get_nodes_block(nodes[i]); - else - { - ir_node *this_block = get_nodes_block(nodes[i]); - if(this_block && this_block != current_block && block_dominates(this_block, current_block)) - current_block = this_block; - } - } - } - } - - // Set the Block for the complex operation and it's projs - assert(current_block != NULL); - set_nodes_block(nodes[ext_grs_act_get_node_aiid(match->action, VECTOR_OP_PROJDATA_NAME)], current_block); - set_nodes_block(nodes[ext_grs_act_get_node_aiid(match->action, VECTOR_OP_NAME)], current_block); - if((aiid = ext_grs_act_get_node_aiid(match->action, VECTOR_OP_PROJM_NAME)) >= 0) - set_nodes_block(nodes[aiid], current_block); -} - - - - -/* _ _ _ - ___ ___ __ _ _ __ ___| |__ | |_ _ __ ___ ___ __| |_ _ _ __ ___ _ __ ___ _ __ -/ __|/ _ \/ _` | '__/ __| '_ \ | __| '__/ _ \/ _ \ / _` | | | | '_ ` _ \| '_ \ / _ \ '__| -\__ \ __/ (_| | | | (__| | | | | |_| | | __/ __/ | (_| | |_| | | | | | | |_) | __/ | -|___/\___|\__,_|_| \___|_| |_| \__|_| \___|\___| \__,_|\__,_|_| |_| |_| .__/ \___|_| - |_| */ - -/*********************************************************************** - * Dumps search trees in VCG Format - ************************************************************************/ - -int glob_node_nr = 0; -void dump_search_tree(search_tree_node_t *root, char *file, char *graph_name, search_tree_env_t *st_env) -{ - FILE *fp = fopen(file, "wt"); - assert(fp && "Could not open file to dump"); - - // Print vcg header - fprintf(fp, - "graph: { title: \"ir graph of %s\"\n" - "display_edge_labels: yes\n" - "layoutalgorithm: mindepth\n" - "manhattan_edges: yes\n" - "port_sharing: no\n" - //"orientation: %s\n" - "infoname 1: \"Test\"\n", - graph_name);//, label, orientation); - fprintf(fp, "\n"); /* a separator */ - - glob_node_nr = 0; - rec_dump_search_tree(root, fp, 0, st_env, 1); - - // Dump Footer - fprintf(fp, "}\n"); - fclose(fp); -} - - - -/************************************************************************ - * Called for each search tree node recursively and dumps its - * information - * Params: bestcost: 1 If we're on the path with the best costs - ************************************************************************/ - -int rec_dump_search_tree(search_tree_node_t *node, FILE *fp, int this_node_nr, search_tree_env_t *st_env, int best_cost) -{ - int next_node_nr = this_node_nr; - ir_node **nodes; - char args[1000], arg_name[20], tmp[1000]; - int i = 0, aiid, replace; - args[0] = 0; - - if(node->match != NULL) - { - nodes = ext_grs_get_match_node_map(node->match, node->which_match); - - do - { - sprintf(arg_name, "Arg_%d", i); - aiid = ext_grs_act_get_node_aiid(node->match->action, arg_name); - if(aiid >= 0) - { - sprintf(tmp, "Arg_%d: %s %d ", i, get_irn_opname(nodes[aiid]), get_irn_node_nr(nodes[aiid])); - strcat(args, tmp); - strcat(args, "\n"); - } - i++; - } while(aiid >= 0); - sprintf(tmp, "st_node: %p\n", node); - strcat(args, tmp); - sprintf(tmp, "CostSavings: %d\n", node->cost_savings); - strcat(args, tmp); - sprintf(tmp, "CostSavings this node %d\n", node->this_matchs_costsavings); - strcat(args, tmp); - - replace = ((node->without->cost_savings) > (node->with->cost_savings + node->this_matchs_costsavings)) ? 0 : 1; - - fprintf(fp, "node: { title: \"n%d\" label: \"%s\" color:%s info1: \"%s\" }\n", this_node_nr, st_env->rules[node->rule_nr]->name, (replace && best_cost) ? "red" : "white", args); - - if(node->with->match != NULL) - { - fprintf(fp, "edge: { sourcename: \"n%d\" targetname: \"n%d\" label: \"1\" color:%s}\n", this_node_nr, this_node_nr+1, (replace==1 && best_cost) ? "red" : "black"); - next_node_nr = rec_dump_search_tree(node->with, fp, this_node_nr + 1, st_env, (replace==1 && best_cost)); - } - - if(node->without->match != NULL) - { - fprintf(fp, "edge: { sourcename: \"n%d\" targetname: \"n%d\" label: \"0\" color:%s}\n", this_node_nr, next_node_nr+1, (replace==0 && best_cost) ? "red" : "black"); - next_node_nr = rec_dump_search_tree(node->without, fp, next_node_nr + 1, st_env, (replace==0 && best_cost)); - } - } - - return(next_node_nr); -} diff --git a/ir/be/grgen/simd/search_tree.h b/ir/be/grgen/simd/search_tree.h deleted file mode 100644 index f31c56c1e..000000000 --- a/ir/be/grgen/simd/search_tree.h +++ /dev/null @@ -1,20 +0,0 @@ -/************************************************************************ - * Program: Search_tree.c - * Project: SIMD optimization - * Function: Provides functions to build a search tree to - * select the patterns for rewrite - * Author: Andreas Schoesser - * Date: 2007-07-05 - ************************************************************************/ - -#ifndef __SEARCH_TREE_H__ -#define __SEARCH_TREE_H__ - -#include "plist.h" - -#include "grs/match.h" -#include "grs/matchplan.h" - -#include "search_tree_t.h" - -#endif diff --git a/ir/be/grgen/simd/search_tree_t.h b/ir/be/grgen/simd/search_tree_t.h deleted file mode 100644 index bf263b669..000000000 --- a/ir/be/grgen/simd/search_tree_t.h +++ /dev/null @@ -1,116 +0,0 @@ -/************************************************************************ -* Program: Search_tree.c -* Project: SIMD optimization -* Function: Provides functions to build a search tree to -* select the patterns for rewrite -* Author: Andreas Schoesser -* Date: 2007-07-05 -************************************************************************/ - -#ifndef __SEARCH_TREE_T_H__ -#define __SEARCH_TREE_T_H__ - -#include "plist.h" -#include "obstack.h" - -#include "grs/grs.h" -#include "grs/match_t.h" -#include "grs/matchplan.h" -#include "grs/matchplan_t.h" - -#include "simd_opt_t.h" - -ext_grs_match_plan_t *mplans; - -#define THIS_MATCHS_COSTSAVINGS 3 - - -/** Entry of a ignore_match list */ -typedef struct -{ - pmap *nodes; - //ir_edge_t **edges; -} ignored_match_t; - - -/** A node of the search tree */ -typedef struct search_tree_node_t -{ - ext_grs_match_t *match; - int which_match; - struct search_tree_node_t *with; - struct search_tree_node_t *without; - int cost_savings; - int this_matchs_costsavings; - int rule_nr; - struct pmap *memory_preds; -} search_tree_node_t; - -/** Information to delete vproj nodes again */ -typedef struct -{ - ir_node *vproj_node; - ir_node *org_result; -} undo_vproj_t; - -/** Environment passed while building the search tree recursively */ -typedef struct -{ - ir_graph *irg; - int num_rules; - ext_grs_match_plan_t **m_plans; - int *priorities; - ext_grs_action_t **rules; - struct pmap *which_match_vproj; - struct pmap *replaced_ptrs; - char **firmnode_names; - struct obstack *obst; - statistics_t *statistics; - int *cost_savings; -} search_tree_env_t; - -/** To be filled before replacement */ -typedef struct -{ - ir_graph *irg; - struct pmap *keep_nodes; - struct pmap *vec_operations; - struct pmap *which_match_vproj; - statistics_t *statistics; - ext_grs_action_t **rules; - char **firmnode_names; - struct obstack *obst; -} replace_st_env_t; - -typedef struct -{ - ext_grs_match_t *match; - int which; - int aiid; -} which_match_vproj_t; - - -// Public -search_tree_node_t *build_search_tree(search_tree_env_t *search_tree_env, int prio_start);//, int struct pmap *vec_operations, struct pmap *keep_nodes, int start, statistics_t *statistics, struct pmap *replaced_ptrs) -void replace_search_tree(search_tree_node_t *root, replace_st_env_t *rep_env); -void destroy_search_tree(search_tree_node_t *root); - -// Private -static search_tree_node_t *rec_search_patterns(search_tree_env_t *st_env, int prio, plist_t **ignored_matches); -static plist_element_t *add_ignored_match(ext_grs_match_t *match, int which, plist_t **ignored_matches, int rule_nr); -static void delete_ignored_match(plist_t **ignored_matches, plist_element_t *match_to_delete, int rule_nr); -static int ignore_match(ext_grs_match_t *match, int which, plist_t **ignored_matches, int rule_nr); -static plist_t *construct_vproj(search_tree_env_t *st_env, search_tree_node_t *st_node, int rule_nr); -static void deconstruct_vproj(plist_t *undo_vproj_info); -static void insert_which_match_vproj(search_tree_env_t *st_env, ir_node *vproj, ext_grs_match_t *match, int which, int aiid); -static void manipulate_match(replace_st_env_t *rep_env, ext_grs_match_t *match, int which); - -void dump_search_tree(search_tree_node_t *root, char *file, char *graph_name, search_tree_env_t *st_env); -int rec_dump_search_tree(search_tree_node_t *node, FILE *fp, int this_node_nr, search_tree_env_t *st_env, int best_cost); - -void insert_inner_nodes(search_tree_env_t *st_env, search_tree_node_t *st_node); -void remove_inner_nodes(search_tree_env_t *st_env, search_tree_node_t *st_node); - -void set_complex_operation_block(ir_graph *irg, ext_grs_match_t *match, int which); - -#endif diff --git a/ir/be/grgen/simd/simd_opt.c b/ir/be/grgen/simd/simd_opt.c deleted file mode 100644 index 98b0cea55..000000000 --- a/ir/be/grgen/simd/simd_opt.c +++ /dev/null @@ -1,1183 +0,0 @@ -/******************************************************************************************* - * Program: simd_opt.c - * Function: Part of the simd optimization. Searches match of complex operation pattern and - * inserts the complex operation if possible. - * Author: Andreas Schoesser - * Date: 06.12.2006 - *******************************************************************************************/ - - -#include -#include -#include -#include - -#include "irgopt.h" -#include "pmap.h" -#include "obstack.h" - -#include "simd_opt_t.h" - -#include "firm_node_ext.h" -#include "normalize.h" -#include "search_tree_t.h" - -#ifdef INCLUDE_GENERATED_PATTERNS - #include "generated/simd_rules.h" -#endif - -extern ir_op *grs_op_Complex; -extern ext_grs_action_init_complex_instructions(); - -#ifdef INCLUDE_GENERATED_PATTERNS - ext_grs_match_plan_t *m_plans[NUM_RULES]; -#endif - - -/* _ _ _ _ _ -_ __ _ _| | ___ __ _ _ __ _ __ | (_) ___ __ _| |_(_) ___ _ __ -| '__| | | | |/ _ \ / _` | '_ \| '_ \| | |/ __/ _` | __| |/ _ \| '_ \ -| | | |_| | | __/ | (_| | |_) | |_) | | | (_| (_| | |_| | (_) | | | | -|_| \__,_|_|\___| \__,_| .__/| .__/|_|_|\___\__,_|\__|_|\___/|_| |_| - |_| |_| -*/ - -int srt_cmp(const void *v1, const void *v2) -{ - int *i1 = (int *) v1; - int *i2 = (int *) v2; - - return i1[1] - i2[1]; -} - - -/************************************************************************/ -/* Performs the pattern lookup and pattern replacement if possible, */ -/* for all actions defined by the user in the "create pattern" step. */ -/************************************************************************/ - -void ext_grs_simd_opt() -{ -#ifdef INCLUDE_GENERATED_PATTERNS - - ext_grs_planer_t *planer; - ext_grs_analyzer_t *analyzer; - char c; - int irg_nr, start; - statistics_t statistics; - - memset(&statistics, 0, sizeof(statistics_t)); - statistics.rewritten_patterns = alloca(NUM_RULES * sizeof(int)); - memset(statistics.rewritten_patterns, 0, NUM_RULES * sizeof(int)); - - printf("\n\nSearching for rich instructions\n===============================\n\n"); - - statistics.start_time = clock(); - - // Insert additional FIRM nodes, like VProj - ext_firm_nodes(); - - // Init the actions - ext_grs_action_init_complex_instructions(); - fill_rulename_array(); - - // "priorites" is a 2-dimensional array, containing - // [RULE_NUMBER][priority] - // Sort this array by priority here. - qsort((void *) &priorities, (size_t) NUM_RULES, ( size_t) (sizeof(int) * 2), srt_cmp); - - // Set up the graph matcher - analyzer = ext_grs_get_vs_analyzer(); - planer = ext_grs_get_vs_dmst_planer(); - - // Match defined rules. - // Rules are ordered by priority in the rules[] array. - for(irg_nr = get_irp_n_irgs() - 1; irg_nr >= 0; irg_nr--) - { - struct pmap *vec_operations = pmap_create(); /* Maps all created vector operations to their destination op */ - struct pmap *keep_nodes = pmap_create(); - ir_graph *irg = get_irp_irg(irg_nr); - struct pmap *norm_undo_info; - - #if VERBOSE_REWRITE - printf("\n ** Analyzing function %s **\n", get_entity_name(get_irg_entity(irg))); - #endif - - current_ir_graph = irg; - - - // Dump the graph to see what it was like before the replacement - dump_ir_block_graph(irg, "-pre-simd"); - remove_critical_cf_edges(irg); - norm_undo_info = normalize_address_calculation(irg, 1); - edges_deactivate(irg); - edges_activate(irg); - - - compute_match_plans(irg, planer, analyzer); - - // Normal rewrite - //start = perform_rewrite(irg, vec_operations, keep_nodes, 0, &statistics, norm_undo_info); - start = perform_rewrite_experimental(irg, vec_operations, keep_nodes, 0, &statistics, norm_undo_info); - #if VERBOSE_REWRITE - printf("\nRenaming complex operations...\n"); - #endif - #if VERBOSE_REWRITE - dump_ir_block_graph(irg, "-REWRITTEN0-PRE-IA23-NODES"); - #endif - - rename_complex_operations(vec_operations); - #if VERBOSE_REWRITE - dump_ir_block_graph(irg, "-REWRITTEN1-IA23-NODES"); - #endif - exchange_keep_nodes(keep_nodes); - - // Rewriting may have left a mess of a graph behind, optimize control flow and ophaned LOADs - - optimize_load_store(irg); - optimize_cf(irg); - - #if VERBOSE_REWRITE - dump_ir_block_graph(irg, "-REWRITTEN2-POST-LOAD-STORE-OPT"); - #endif - - edges_activate(irg); /* HACK! optimize_cf deactivates edges!! */ - - // Clean up the remaining vProjs - #if VERBOSE_REWRITE - printf("\nClean-up step:"); - #endif - - pmap_destroy(vec_operations); - pmap_destroy(keep_nodes); - vec_operations = pmap_create(); /* Maps all created vector operations to their destination op */ - keep_nodes = pmap_create(); - perform_rewrite(irg, vec_operations, keep_nodes, start, &statistics, norm_undo_info); - rename_complex_operations(vec_operations); - - exchange_keep_nodes(keep_nodes); - - // Remove MultipleAdd nodes - #if VERBOSE_REWRITE - printf("\nUndoing normalization...\n"); - #endif - decompose_normalization(norm_undo_info); - - #if VERBOSE_REWRITE - dump_ir_block_graph(irg, "-REWRITTEN3-FINAL"); - #endif - - // Clean up data structures - pmap_destroy(vec_operations); - pmap_destroy(keep_nodes); - edges_deactivate(irg); - } - statistics.end_time = clock(); - - printf("\n ** Rewriting finished. **\n\n"); - - view_statistics(&statistics); -#else - - printf("SIMD optimization turned off...\n<--'\n"); - getchar(); - ext_firm_nodes(); - -#endif -} - -void compute_match_plans(ir_graph *irg, ext_grs_planer_t *planer, ext_grs_analyzer_t *analyzer) -{ -#ifdef INCLUDE_GENERATED_PATTERNS - int rule_nr; - - #if VERBOSE_REWRITE - printf("Computing search plans...\n"); - #endif - - ext_grs_init_planer(planer, analyzer); - ext_grs_enable_irg(irg); // Alloc memory in ir_graph for match analysis result. - ext_grs_analyze(analyzer, irg); - - // This returns a newly allocated "matchplan" oject. - for(rule_nr = 0; rule_nr < NUM_RULES; rule_nr++) - { - m_plans[rule_nr] = ext_grs_compute_plan(planer, irg, rules[rule_nr]); - - #if DUMP_SEARCH_PLAN - ext_grs_dump_match_plan(m_plans[rule_nr]); - #endif - } -#endif -} - - - -/************************************************************************************ - * Params: irg: The ir graph to be optimized - * vec_operations: A pmap with all "Complex" nodes to be exchanged - * by ia32 nodes later - * keep_nodes: A pmap containing the keep nodes to be inserted - * start: rule number to start with - * statistics: Statistics structure to save statistics information in - * replaced_ptrs: Addresses of Load and Store nodes replaced by MultipleAdd - * Nodes - ************************************************************************************/ - -int perform_rewrite(ir_graph *irg, struct pmap *vec_operations, struct pmap *keep_nodes, int start, statistics_t *statistics, struct pmap *replaced_ptrs) -{ -#ifdef INCLUDE_GENERATED_PATTERNS - int i, j; - ext_grs_match_t *match; - char c; - - for(i = start; i < NUM_RULES; i++) - { - int rule_nr = priorities[i][0]; - int num_matches; - char match_postfix[100]; - j = 0; - - if(priorities[i][1] > 1000 && start == 0) - break; - - do - { - #if VERBOSE_REWRITE - printf("\nApplying RULE %s: ", firmnode_names[rule_nr]); - #endif - - // This returns a newly allocated "matchplan" oject. - //m_plan = ext_grs_compute_plan(planer, irg, rules[rule_nr]); */ - - #if DUMP_SEARCH_PLAN - ext_grs_dump_match_plan(m_plans[rule_nr]); - #endif - - // Match the pattern given in the action inited above - // Compliant: Only NON-overlapping matches allowed. - // TODO: Describe case of overlapping patterns. Which to chose? Point to backend implementations - match = ext_grs_match(irg, m_plans[rule_nr], ext_grs_ALL, ext_grs_COMPLIANT); - statistics->num_matches++; - statistics->num_matched_nodes += match->n_nodes; - - #if VERBOSE_REWRITE - printf(" Found matches is %d.", ext_grs_get_n_matches(match)); - sprintf(match_postfix, "-MATCHED-%d-%d", i, j); - ext_grs_dump_match(match, match_postfix); - #endif - - // Look if a match has been found - num_matches = ext_grs_get_n_matches(match); - if(num_matches > 0) - { - struct pmap *memory_preds; - // Do alias analysis and "LOAD usage" analysis" to see if pattern is really appliable. - - if(analyze_arguments(rules[rule_nr], match, 0, irg, NULL) < 0) - { - #if VERBOSE_REWRITE - printf(" Invalid arguments."); - #endif - } - else - { - - // Find the memory predecessors to be able to schedule the complex operation - memory_preds = find_memory_preds(irg, ext_grs_get_match_node_map(match, 0), rules[rule_nr]->max_node_aiid); - - if(test_alias_relation(match->nodes[0], match->max_node_id, memory_preds, replaced_ptrs) == 0) - { - // Everything seems ok, do the rewrite - #if VERBOSE_REWRITE - printf(" Rewrite? (y/n) "); - #if PROMPT_REWRITE - c = getch(); - #else - c = 'y'; - printf("y"); - #endif - #else - c = 'y'; - #endif - - if(c == 'y' || c == 'Y') - { - // Do the rewriting step. Rewrite ALL matches (for now...). - int which[5] = { 0, 1, 2, 3, 4 }; - ext_grs_finish_match(match, 1, &which[0]); - connect_complex_memory(rules[rule_nr], match, 0, memory_preds); - save_complex_operation(rules[rule_nr], match, 0, vec_operations, rule_nr); - save_keep_nodes(rules[rule_nr], match, 0, keep_nodes); - sprintf(match_postfix, "-REWRITTEN-%d-%d", i, j); - dump_ir_block_graph(irg, match_postfix); - statistics -> num_instructions_inserted++; - statistics -> num_replaced_nodes += match->n_nodes; - statistics -> rewritten_patterns[rule_nr]++; - } - else - { - num_matches = 0; - } - } - else - { - #if VERBOSE_REWRITE - printf("Rejected. "); - #endif - } - } - ext_grs_free_match(match); - } -#if PROMPT_NO_PATTERN_FOUND - else - getch(); -#endif - //ext_grs_disable_irg(irg); // Free analysis memory - j++; - } while(num_matches > 0); - } - return(i); -#endif -} - - -int perform_rewrite_experimental(ir_graph *irg, struct pmap *vec_operations, struct pmap *keep_nodes, int start, statistics_t *statistics, struct pmap *replaced_ptrs) -{ -#ifdef INCLUDE_GENERATED_PATTERNS - search_tree_env_t st_env; - replace_st_env_t rep_env; - search_tree_node_t *root; - int rule_nr = start; - struct obstack obst; - - obstack_init(&obst); - - while(rule_nr < NUM_RULES && priorities[rule_nr][1] != PRIORITY_CLEANUP) - { - int old_rulenr = rule_nr; - - // Build the search tree - st_env.irg = irg; - st_env.priorities = (int *) &priorities[rule_nr]; - st_env.m_plans = m_plans; - st_env.num_rules = NUM_RULES; - st_env.rules = rules; - st_env.which_match_vproj = pmap_create(); - st_env.replaced_ptrs = replaced_ptrs; - st_env.firmnode_names = firmnode_names; - st_env.obst = &obst; - st_env.statistics = statistics; - st_env.cost_savings = cost_savings; - root = build_search_tree(&st_env, priorities[rule_nr][1]); - - // Rewrite using search tree we built: - rep_env.irg = irg; - rep_env.keep_nodes = keep_nodes; - rep_env.vec_operations = vec_operations; - rep_env.statistics = statistics; - rep_env.rules = rules; - rep_env.which_match_vproj = st_env.which_match_vproj; - rep_env.firmnode_names = firmnode_names; - rep_env.obst = &obst; - replace_search_tree(root, &rep_env); - - // Destroy the search tree - destroy_search_tree(root); - pmap_destroy(st_env.which_match_vproj); - - //dump_irgraph_complete_grgen(current_ir_graph); - - // Search rule with next higher priority to start the next search with - while(rule_nr < NUM_RULES && priorities[rule_nr][1] == priorities[old_rulenr][1]) - rule_nr++; - } - - // TODO: Return the rule_nr up to which we searched - // This will be used in a second step to search for the rest of the - // rules which are cleanup operations - obstack_free(&obst, NULL); - obstack_finish(&obst); - return(rule_nr); -#endif -} - - - -/************************************************************************ - * View statistics about the rewrite - ************************************************************************/ - -static void view_statistics(statistics_t *statistics) -{ -#ifdef INCLUDE_GENERATED_PATTERNS - int i; - - printf("***************************\n* Optimization Statistics *\n***************************\n\n\n"); - printf("Rich instructions inserted: %d\n", statistics->num_instructions_inserted); - printf("Matches: %d\n", statistics->num_matches); - printf("Nodes matched: %d\n", statistics->num_matched_nodes); - printf("Nodes probably replaced: %d\n", statistics->num_replaced_nodes); - printf("Time elapsed: %g s\n", ((double) (statistics->end_time - statistics->start_time)) / CLOCKS_PER_SEC); - - printf("\nReplaced patterns:\n"); - for(i = 0; i < NUM_RULES; i++) - { - if(statistics->rewritten_patterns[i] > 0) - printf(" %3dx %s\n", statistics->rewritten_patterns[i], firmnode_names[i]); - } - - printf("\n\nPress <--' to generate code."); - getchar(); -#endif -} - - - - -/* _ _ - _ __ ___ ___ _ __ ___ ___ _ __ _ _ __ _ _ __ __ _| |_ _ ___(_)___ -| '_ ` _ \ / _ \ '_ ` _ \ / _ \| '__| | | | / _` | '_ \ / _` | | | | / __| / __| -| | | | | | __/ | | | | | (_) | | | |_| | | (_| | | | | (_| | | |_| \__ \ \__ \ -|_| |_| |_|\___|_| |_| |_|\___/|_| \__, | \__,_|_| |_|\__,_|_|\__, |___/_|___/ - |___/ |___/ -*/ - -#if 0 - -/* This is used when we have parallel memory edges */ - -/************************************************************************/ -/* Tests, if two operations using the memory edge are */ -/* 0: parallel regarding the memory edge */ -/* 1: node b is above node a regarding the memory edge */ -/* 2: node a is above node b regarding the memory edge */ -/************************************************************************/ - -int test_mem_rel(ir_node *a, ir_node *b) -{ - ir_graph *irg = get_irn_irg(get_nodes_block(a)); - inc_irg_visited(irg); - - if(search_mem_node(b, a, irg)) - return(1); // b is above a - - if(search_mem_node(a, b, irg)) - return(2); // a is above b - - return(0); // nodes are parallel - - -} - -int search_mem_node(ir_node *n, ir_node *start, ir_graph *irg) -{ - int i, found = 0; - - if(get_irn_visited(start) == get_irg_visited(irg)) - return(0); - - set_irn_visited(start, get_irg_visited(irg)); - - if(start == n); - return(1); // Found it! - - // Walk up the memory chain - if(get_irn_mode(start) == mode_M) - { - for(i = 0; i < get_irn_arity(start) && found == 0; i++) - found |= search_mem_node(n, get_irn_n(start, i), irg); - } - else - { - for(i = 0; i < get_irn_arity(start) && found == 0; i++) - { - ir_node *pred = get_irn_n(start, i); - if(get_irn_mode(pred) == mode_M) - found |= search_mem_node(n, get_irn_n(start, i), irg); - } - } - - return(found); -} -#endif - - - - -/************************************************************************ - * Finds all pattern nodes, which are scheduled first - * The indicator of this is that these nodes have a memory-predecessor - * which lies outside of the pattern and there is no pattern node - * scheduled 'above' that predecessor. We call those nodes - * 'incoming memory nodes' - ************************************************************************/ - -struct pmap *find_memory_preds(ir_graph *irg, ir_node **match_node_map, int max_node_aiid) -{ - mem_preds_info_t mem_preds_info; // Holds analysis information during the firm walk - ir_node *start = get_irg_start(irg); - inc_irg_visited(irg); - - mem_preds_info.pattern_nodes = generate_nodemap_hash(match_node_map, max_node_aiid); // Generate a hash out of the nodemap array for faster access - mem_preds_info.memory_preds = pmap_create(); // Save the memory predecessors we will find during the firm walk here - mem_preds_info.irg = irg; // Hand the irg over to the firm walker - - visit_mem_nodes(start, &mem_preds_info); - - // Return the 'incoming memory nodes' that we found. - pmap_destroy(mem_preds_info.pattern_nodes); - return(mem_preds_info.memory_preds); - -} - -static void visit_mem_nodes(ir_node *node, mem_preds_info_t *mem_preds_info) -{ - ir_graph *irg = mem_preds_info->irg; - - if(irn_visited(node)) - return; - set_irn_visited(node, get_irg_visited(irg)); - - // The end node is matched, but not really part of the pattern. Only needed to connect - // keep nodes to. So Skip the end node when searching memory predecessors - if(get_irn_opcode(node) == iro_End) - return; - - // Falls in pattern nodes-> return; - if(pmap_contains(mem_preds_info->pattern_nodes, node)) - { - pmap_insert(mem_preds_info->memory_preds, node, (void *) pmap_get(mem_preds_info->pattern_nodes, node) /*=aiid*/); - return; - } - - if(get_irn_mode(node) == mode_M) - { - const ir_edge_t *edge; - foreach_out_edge(node, edge) - visit_mem_nodes(get_edge_src_irn(edge), mem_preds_info); - } - else - { - const ir_edge_t *edge; - foreach_out_edge(node, edge) - { - ir_node *tgt = get_edge_src_irn(edge); - if(tgt != NULL && get_irn_mode(tgt) == mode_M) - visit_mem_nodes(tgt, mem_preds_info); - } - } -} - - - - -/************************************************************************ - * Find and return the memory in edge of a given node - * Returns the in-array index for the edge in edge_nr - * CAUTION: Seems not to work for PHI nodes!!!!!!!!!!!!!!!!!!!!! - ************************************************************************/ - -static ir_node *find_memory_pred(ir_node *n, int *edge_nr, int start_edge) -{ - int i; - ir_node *mem_pred = NULL; - - // Look for ProjMs. ProjM's predecessors don't have the "mode M". - if(get_irn_arity(n) == 1 && get_irn_modecode(n) == irm_M && start_edge == 0) - { - if(edge_nr != NULL) - *edge_nr = 0; - return(get_irn_n(n, 0)); - } - - // It's not a ProjM node. Look for a predecessor with "mode_M". - for(i = start_edge; i < get_irn_arity(n); i++) - { - ir_node *pred = get_irn_n(n, i); - if(get_irn_modecode(pred) == irm_M /*&& get_irn_opcode(pred) != iro_NoMem <-- Do we really need this? */) - { - if(edge_nr != NULL) - *edge_nr = i; - return(pred); - } - } - return(NULL); -} - - - -/************************************************************************ - * Generates a hash map out of a node_map array to have faster - * access on matched nodes later. - ************************************************************************/ - -struct pmap *generate_nodemap_hash(ir_node **node_map, int max_node_aiid) -{ - struct pmap *node_hash = pmap_create(); - int i; - - for(i = 0; i <= max_node_aiid; i++) - if(node_map[i]) - pmap_insert(node_hash, node_map[i], (void *) i); - return(node_hash); -} - - - -/*************************************************************************** - * Returns the first predecessor nr, that is an Bad node, -2 otherwise - ***************************************************************************/ - -static int find_bad_node(ir_node *n) -{ - int in_pos = -2, i; - - for(i = 0; i < get_irn_arity(n); i++) - if(get_irn_opcode(get_irn_n(n, i)) == iro_Bad) - return(i); - - return(in_pos); -} - - - -/* - _ _ _ ____ _ _ _ - / \ | (_) __ _ ___ | _ \ ___| | __ _| |_(_) ___ _ __ - / _ \ | | |/ _` / __| | |_) / _ \ |/ _` | __| |/ _ \| '_ \ - / ___ \| | | (_| \__ \ | _ < __/ | (_| | |_| | (_) | | | | -/_/ \_\_|_|\__,_|___/ |_| \_\___|_|\__,_|\__|_|\___/|_| |_| */ - - -/************************************************************************ - * Starts the alias check for each node of the pattern - * Returns: 1 if pattern is not appliable due to alias conflicts - * 0 if the pattern is appliable - ************************************************************************/ - -int test_alias_relation(ir_node **node_map, int max_node_aiid, struct pmap *memory_preds, struct pmap *replaced_ptrs) -{ - struct pmap *node_map_hash = generate_nodemap_hash(node_map, max_node_aiid); - int i; - - for(i = 0; i < max_node_aiid; i++) - if(node_map[i]) - { - int edge_nr = -1; - ir_node *pred; - - while((pred = find_memory_pred(node_map[i], &edge_nr, edge_nr + 1))) - { - if(walk_mem_edge_alias(node_map[i], pred, memory_preds, node_map_hash, replaced_ptrs) == 1) - return(1); - } - } - return(0); -} - - -/************************************************************************ - * For a specific pattern node: Walks up the memory edge until start or - * a memory predecessor of the pattern is reached and checks each memory - * node found for alias relation - * How can start be reached? Should not happen IMO. - ************************************************************************/ - -static int walk_mem_edge_alias(ir_node *orgn, ir_node *cn, struct pmap *memory_preds, struct pmap *node_map_hash, struct pmap *replaced_ptrs) -{ - int edge_nr = -1; - ir_node *pred; - - if(pmap_contains(memory_preds, orgn)) - return(0); - - if(pmap_contains(node_map_hash, cn)) - { - if(get_multadd_alias_relation(orgn, cn) != no_alias) //check_alias(orgn, cn, replaced_ptrs) != no_alias) - { - if(get_irn_opcode(orgn) != iro_Store || get_irn_opcode(cn) == iro_Load) - return(1); // Bad - // go on otherwise, STORE after LOAD allowed - } - } - - // We reached a memory pred or the start node? - if(pmap_contains(memory_preds, cn) || get_irn_opcode(cn) == iro_Start) // Caution, memory preds are inside the pattern - return(0); - - // Check if the two nodes alias - if(!pmap_contains(node_map_hash, cn)) - { - if(get_multadd_alias_relation(orgn, cn) != no_alias) //check_alias(orgn, cn, replaced_ptrs) != no_alias) - return(1); - } - - // Walk on - while((pred = find_memory_pred(cn, &edge_nr, edge_nr + 1))) - if(walk_mem_edge_alias(orgn, pred, memory_preds, node_map_hash, replaced_ptrs) == 1) - return(1); - - // Checked all paths and did not find an alias conflict, so return 0 - return(0); -} - - -/************************************************************************ - * Checks if 2 nodes of kind LOAD or STORE alias. Uses the old addresses - * instead of the MultipleAdd used for normalization - ************************************************************************/ - -static ir_alias_relation check_alias(ir_node *n1, ir_node *n2, struct pmap *replaced_ptrs) -{ - ir_node *addr1 = NULL, *addr2 = NULL, *org_addr1, *org_addr2; - ir_mode *mode1, *mode2; - - switch(get_irn_opcode(n1)) - { - case iro_Store: addr1 = get_Store_ptr(n1); mode1 = get_irn_mode(get_Store_value(n1)); break; - case iro_Load: addr1 = get_Load_ptr(n1); mode1 = mode_F; /* Hack */ break; - default: return(no_alias); - } - - switch(get_irn_opcode(n2)) - { - case iro_Store: addr2 = get_Store_ptr(n2); mode2 = get_irn_mode(get_Store_value(n1)); break; - case iro_Load: addr2 = get_Load_ptr(n2); mode2 = mode_F; /* Hack */break; - default: return(no_alias); - } - - org_addr1 = get_org_addr(addr1, replaced_ptrs); - org_addr2 = get_org_addr(addr2, replaced_ptrs); - - return(get_alias_relation(current_ir_graph, org_addr1, mode1, org_addr2, mode2)); -} - - - -/* _ _ _ _ - / \ _ __ __ _ _ _ _ __ ___ ___ _ __ | |_ __ _ _ __ __ _| |_ _ ___(_)___ - / _ \ | '__/ _` | | | | '_ ` _ \ / _ \ '_ \| __| / _` | '_ \ / _` | | | | / __| / __| - / ___ \| | | (_| | |_| | | | | | | __/ | | | |_ | (_| | | | | (_| | | |_| \__ \ \__ \ -/_/ \_\_| \__, |\__,_|_| |_| |_|\___|_| |_|\__| \__,_|_| |_|\__,_|_|\__, |___/_|___/ - |___/ |___/ -*/ - - -/************************************************************************ - * Looks, if a argument node is in a block that dominates the block - * the complex node has to be inserted to! - * Return: 0 if so - * -1 if the arguments are not in a dominator, which is illegal - * -2 if an argument is mem dependent of an inner pattern node - * TODO: Analyse where to put the complex operation first! Now we do that - * by hand! - ************************************************************************/ - -int analyze_arguments(ext_grs_action_t *action, ext_grs_match_t *match, int which, ir_graph *irg, struct pmap *memory_preds) -{ - char arg_name[100]; - int arg_aiid, i, block_aiid; - ir_node **node_map = ext_grs_get_match_node_map(match, which); - ir_node *arg, *block, *arg_block; - struct pmap *node_map_hash = generate_nodemap_hash(ext_grs_get_match_node_map(match, which), ext_grs_get_match_max_node_aiid(match)); - - block_aiid = ext_grs_act_get_node_aiid(action, COMPLEX_OPERATION_BLOCK_NAME); - assert(block_aiid > 0 && "Block of complex operations has not been dumped!"); - block = node_map[block_aiid]; - assert(get_irn_opcode(block) == iro_Block); - - for(i = 0; ; i++) - { - sprintf(arg_name, "Arg_%d", i); - arg_aiid = ext_grs_act_get_node_aiid(action, arg_name); - if(arg_aiid < 0) - break; // All arguments have been processed. - - // Retrieve the node corresponding to an argument and check it for consistency - arg = node_map[arg_aiid]; - - if(is_arg_mem_dependent(arg, node_map_hash)) - { - pmap_destroy(node_map_hash); - return(-2); - } - - - // First check if the argument is dependent from inner pattern nodes - arg_block = get_nodes_block(arg); - assert(get_irn_opcode(arg_block) == iro_Block); - - if(arg_block == block) - continue; - - assure_doms(irg); - if(block_dominates(arg_block, block)) - continue; - - pmap_destroy(node_map_hash); - return(-1); // Argument not in dominator of complex operation block! It's unsafe to rewrite. - } - - pmap_destroy(node_map_hash); - return(0); // Everything is ok, match can be rewritten -} - - - -/************************************************************************** -* Looks if a Argument node of the complex node is memory dependent of any -* memory node of the pattern. This would lead to a dead lock and has to -* be prevented. -**************************************************************************/ - -int is_arg_mem_dependent(ir_node *arg, struct pmap *node_map_hash) -{ - argdep_ana_info_t ana_info; - - // First find out the highest block in dom tree - - // First start firm walker up till - // - a memory nodes is reached - // - or we reached the highest dom block - ana_info.found_dependency = 0; - ana_info.node_map_hash = node_map_hash; - irg_walk(arg, walk_arg_dep, NULL, &ana_info); - - return(ana_info.found_dependency); - - - // For all mem nodes we reached - // Walk up mem edge - // Check if we hit an inner pattern node. If so: error! - - // Problems: Mem edge walker: Phis? Sync? Have to walk all ways -} - - - -/************************************************************************ - * - ************************************************************************/ - -static void walk_arg_dep(ir_node *n, void * env) -{ - // If n is a memory node, start walking up only all memory edges incident to this node - int edge_nr = -1; - argdep_ana_info_t *ana_info = env; - ir_node *pred; - - // Dependency has been found on another path. Break walker - if(ana_info->found_dependency) - { - for(edge_nr = (is_Block(n)) ? 0 : -1; edge_nr < get_irn_arity(n); edge_nr++) - set_irn_visited(get_irn_n(n, edge_nr), get_irg_visited(get_irn_irg(n))); - return; - } - - // If we have a memory node, walk up memory edge(s) and don't touch the above data preds - while((pred = find_memory_pred(n, &edge_nr, edge_nr + 1))) -// if(ana_info->found_dependency == 0) - if(walk_mem_edge_argdep(pred, ana_info->node_map_hash) == 1) - { - ana_info->found_dependency = 1; - break; - } -} - - - -/************************************************************************ - * Walks up the memory edge for argument dependency analysis - ************************************************************************/ - -int walk_mem_edge_argdep(ir_node *n, struct pmap *node_map_hash) -{ - int edge_nr = -1; - ir_node *pred; - - if(get_irn_visited(n) == get_irg_visited(get_irn_irg(n))) - return(0); - set_irn_visited(n, get_irg_visited(get_irn_irg(n))); - - // Did we reach a pattern node? - if(pmap_contains(node_map_hash, n)) - return(1); // Yes - - // TODO: Check if max dominator reached - // TODO: Check if we walked over a backedgemake - - - // Walk on - while((pred = find_memory_pred(n, &edge_nr, edge_nr + 1))) - if(walk_mem_edge_argdep(pred, node_map_hash) == 1) - return(1); - - return(0); // We reached no pattern node, everything ok -} - - - -/* _ _ _ - _____ _| |_ ___ _ __ _ __ _ __ ___ ___ _ _| | |_ - / _ \ \/ / __/ _ \ '__| '_ \ | '__/ _ \/ __| | | | | __| -| __/> <| || __/ | | | | | | | | __/\__ \ |_| | | |_ - \___/_/\_\\__\___|_| |_| |_| |_| \___||___/\__,_|_|\__| */ - -/************************************************************************ - * Computes the additional costs that arise when pattern nodes have to - * be maintained due to external usage nodes outside the pattern - * We just compute the costs of THAT single node - ************************************************************************/ - -int ext_result_costs(ext_grs_match_t *match, int which) -{ - ir_node **nodes = ext_grs_get_match_node_map(match, which); - int maxid = ext_grs_get_match_max_node_aiid(match), i; - struct pmap *node_map_hash = generate_nodemap_hash(nodes, maxid); - int add_costs = 0; - - for(i = 0; i < maxid; i++) // Iterate through all pattern nodes - { - if(match->action->nodes[i]->op != op_IrNode) // Node is not one of the generic vector base nodes. Those stay in the graph anyway. - { - // Has the node been matched and is the node NOT a Result of the Pattern? - if(nodes[i] && strncmp(match->action->nodes[i]->name, VECTOR_RESULT_NAME, strlen(VECTOR_RESULT_NAME)) != 0 && strncmp(match->action->nodes[i]->name, "Arg_", 4) != 0) - { - if(get_irn_modecode(nodes[i]) != irm_M && get_irn_opcode(nodes[i]) != iro_Const && get_irn_opcode(nodes[i]) != iro_Block && get_irn_opcode(nodes[i]) != iro_VProj) // Memory result not interesting here - { - ir_edge_t *edge; - foreach_out_edge(nodes[i], edge) // Look at all out edges of the pattern node - { - if(get_irn_modecode(edge->src) != irm_M) // Memory result not interesting here - { - if(!pmap_contains(node_map_hash, edge->src)) // Look, if the source of the out edge is outside the pattern - add_costs += single_node_costs(edge->src); - } - } - } - } - } - } - - pmap_destroy(node_map_hash); - return(add_costs); -} - - - -/************************************************************************ - * Returns the costs for each individual FIRM node type. - * Returns always 3 for now. - ************************************************************************/ - -int single_node_costs(ir_node *n) -{ - return(3); -} - - - - -/* _ _ _ - _ __ ___ ___| |_ _ __ ___ _ __ | | __ _ ___ ___ _ __ ___ ___ _ __ | |_ -| '_ \ / _ \/ __| __| | '__/ _ \ '_ \| |/ _` |/ __/ _ \ '_ ` _ \ / _ \ '_ \| __| -| |_) | (_) \__ \ |_ | | | __/ |_) | | (_| | (_| __/ | | | | | __/ | | | |_ -| .__/ \___/|___/\__| |_| \___| .__/|_|\__,_|\___\___|_| |_| |_|\___|_| |_|\__| -|_| |_| -*/ - -/************************************************************************ - * Connect the complex operation with the memory edge - ************************************************************************/ - -void connect_complex_memory(ext_grs_action_t *action, ext_grs_match_t *match, int which, struct pmap *mem_preds) -{ - ir_node **repl_node_map = ext_grs_get_replace_node_map(match, which); - int vop_aiid = ext_grs_act_get_node_aiid(action, VECTOR_OP_NAME); // Find the vector operation - int vop_projm_aiid = ext_grs_act_get_node_aiid(action, VECTOR_OP_PROJM_NAME); // Find it's ProjM node - ir_node *vec, *projm; - ir_node *memory_base = NULL; - pmap_entry *entry; - int i = 0; - - - // The complex node needs the memory edge, if it has a ProjM node attached. - if(vop_projm_aiid > -1) - { - // ProjM is there: Connect the Memory edge - assert(vop_aiid > -1 && "Vector operation not found!"); - vec = repl_node_map[vop_aiid]; - projm = repl_node_map[vop_projm_aiid]; - - // Mem_preds are the nodes INSIDE the pattern. Check their successors and - // look if its always the same. Well, this loop makes no sense right now - // it assumes that there is only 1 mem_pred (Speichereingaenger) and therefore - // also one one Speichervorgaenger. - pmap_foreach(mem_preds, entry) - { - ir_node *n; // = entry->key; - int aiid = (int) entry->value; - ir_node *vop_mem_pred; - int edge_nr = 0, bad_nr = 0; - - // Find the right n if n was replaced - n = repl_node_map[action->pattern_node_kept[aiid]]; - - if(memory_base == NULL) - memory_base = n; - if(n != memory_base) - assert(0 && "Parallel incoming memory edges with different roots not supported right now. Need to SYNC..."); - - assert(get_irn_opcode(n) != iro_Phi && "Incoming Mem node is a PHI. Strange."); - vop_mem_pred = find_memory_pred(n, &edge_nr, 0); - assert(vop_mem_pred != NULL && "Incoming memory node should have a memory edge!"); - bad_nr = find_bad_node(vec); - assert(bad_nr >= 0 && "Dummy slot for connecting the Mem edge not found!"); - set_irn_n(vec, bad_nr, vop_mem_pred); // Connect the vector op with its memory predecessor - set_irn_n(n, edge_nr, projm); - } - } - - /*sprintf(keep_name, "IR_Keep%d", i); - while((keep_aiid = ext_grs_act_get_node_aiid(action, keep_name)) > -1) - { - ir_node *keep, *new_keep; - ir_node **ins; - - // Find the keep node - keep = repl_node_map[keep_aiid]; - ins = get_irn_in(keep); - new_keep = be_new_Keep(NULL, get_irn_irg(keep), get_nodes_block(keep), get_irn_arity(keep), &ins[1]); - exchange(keep, new_keep); - - //add_register_req(keep); - - sprintf(keep_name, "be_Keep%d", ++i); - }*/ -} - - -/************************************************************************ - * Called for each "Complex" node inserted into the graph. - * Saves all complex operations that have been inserted into a ir_graph. - * After no additional match can be found in the current ir_graph, - * the saved operations are exchanged by their backend nodes. - ************************************************************************/ - -void save_complex_operation(ext_grs_action_t *action, ext_grs_match_t *match, int which, struct pmap *vec_operations, int nr) -{ -#ifdef INCLUDE_GENERATED_PATTERNS - ir_node **repl_node_map = ext_grs_get_replace_node_map(match, which); - int vop_aiid = ext_grs_act_get_node_aiid(action, VECTOR_OP_NAME); // Find it's ProjM node - ir_node *vec = repl_node_map[vop_aiid]; - - pmap_insert(vec_operations, vec, ia32_construct_funcs[nr]); -#endif -} - - - -/************************************************************************* - * Saves the intermediate keep nodes along with their complex operations - * so that they can be exchanged by real be_nodes later. - *************************************************************************/ - -void save_keep_nodes(ext_grs_action_t *action, ext_grs_match_t *match, int which, struct pmap *keep_nodes) -{ -#ifdef INCLUDE_GENERATED_PATTERNS - ir_node **repl_node_map = ext_grs_get_replace_node_map(match, which); - char keep_name[255]; - int keep_aiid, i = 0; - int vop_aiid = ext_grs_act_get_node_aiid(action, VECTOR_OP_NAME); // Find it's ProjM node - ir_node *vec = repl_node_map[vop_aiid]; - - sprintf(keep_name, "IR_Keep%d", i); - while((keep_aiid = ext_grs_act_get_node_aiid(action, keep_name)) > -1) - { - ir_node *keep = repl_node_map[keep_aiid]; - - pmap_insert(keep_nodes, keep, vec); // Save the keep node and link to it's complex operation - sprintf(keep_name, "be_Keep%d", ++i); - } -#endif -} - - -/************************************************************************ - * Renames the complex operation to its destination op - ************************************************************************/ - -void rename_complex_operations(struct pmap *vec_operations) -{ -#ifdef INCLUDE_GENERATED_PATTERNS - pmap_entry *entry; - - pmap_foreach(vec_operations, entry) - { - const ir_node *c_vec = entry -> key; - ir_node *vec = (ir_node *) c_vec; - ir_node *ben; - ia32_construct_func_t ia32_construct_func = entry -> value; - - switch(get_irn_arity(vec)) - { - case 1: - // ir_node *new_rd_ia32_vadd_2_32(dbg_info *db, ir_graph *irg, ir_node *block, ir_node *op1, ir_node *op2, ir_mode *mode); - ben = ia32_construct_func(NULL, get_irn_irg(get_nodes_block(c_vec)), get_nodes_block(c_vec), get_irn_n(c_vec, 0), get_irn_mode(c_vec)); - exchange(vec, ben); - break; - - case 2: - ben = ia32_construct_func(NULL, get_irn_irg(get_nodes_block(c_vec)), get_nodes_block(c_vec), get_irn_n(c_vec, 0), get_irn_n(c_vec, 1), get_irn_mode(c_vec)); - exchange(vec, ben); - break; - - case 3: - { - ir_graph *irg; - ir_node *block, *op1, *op2, *op3; - ir_mode *mode; - - block = get_nodes_block(vec); - irg = get_irn_irg(block); - op1 = get_irn_n(c_vec, 0); - op2 = get_irn_n(c_vec, 1); - op3 = get_irn_n(c_vec, 2); - mode = get_irn_mode(vec); - - ben = ia32_construct_func(NULL, irg, block, op1, op2, op3, mode); - exchange(vec, ben); - } - break; - default: assert(0 && "This arity is not supported!"); - } - //set_irn_op(vec, op); - } -#endif -} - - -/************************************************************************ - * Exchanges the intermediate keep nodes by real be_Keep nodes, asking - * the complex operation for the register constraints. - ************************************************************************/ - -static void exchange_keep_nodes(struct pmap *keep_nodes) -{ - pmap_entry *entry; - - pmap_foreach(keep_nodes, entry) - { - ir_node *keep = (ir_node *) entry->key; - ir_node *vec_op; - ir_node *new_keep, **ins; - - // TODO: Ask the vecop for register constraints. - vec_op = get_irn_n(get_irn_n(keep, 0), 0); - - ins = get_irn_in(keep); - new_keep = be_new_Keep(NULL /*&ia32_reg_classes[CLASS_ia32_xmm]*/, get_irn_irg(keep), get_nodes_block(keep), get_irn_arity(keep), &ins[1]); - exchange(keep, new_keep); - } -} diff --git a/ir/be/grgen/simd/simd_opt.h b/ir/be/grgen/simd/simd_opt.h deleted file mode 100644 index a632af05d..000000000 --- a/ir/be/grgen/simd/simd_opt.h +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************************* -* Program: simd_opt.h -* Function: Part of the simd optimization. Searches match of complex operation pattern and -* inserts the complex operation if possible. -* Author: Andreas Schoesser -* Date: 13.02.2007 -*******************************************************************************************/ - - -#ifndef __SIMD_OPT_H__ -#define __SIMD_OPT_H__ - -/** Performs the searching and rewriting of patterns for the given ir graph */ -void ext_grs_simd_opt(ir_graph *irg); - -#endif diff --git a/ir/be/grgen/simd/simd_opt_t.h b/ir/be/grgen/simd/simd_opt_t.h deleted file mode 100644 index ddce1e4a8..000000000 --- a/ir/be/grgen/simd/simd_opt_t.h +++ /dev/null @@ -1,84 +0,0 @@ -/******************************************************************************************* -* Program: simd_opt_t.h -* Function: Part of the simd optimization. Searches match of complex operation pattern and -* inserts the complex operation if possible. -* Author: Andreas Schoesser -* Date: 05.02.2007 -*******************************************************************************************/ - -#ifndef __SIMD_OPT_H__ -#define __SIMD_OPT_H__ - -#include "simd_presets.h" -#include "simd_opt.h" - -#include "pmap.h" -#include "irdump.h" -#include "iroptimize.h" -#include "irgmod.h" -#include "../ir/be/benode_t.h" - -#include "grs/grs.h" - - -#include -#include -#include - -typedef struct -{ - struct list_head list; - ir_node *node; -} nodes_stack_t; - -typedef struct -{ - struct list_head *nodes_stack; - struct pmap *pattern_nodes; - struct pmap *memory_preds; - ir_graph *irg; -} mem_preds_info_t; - -typedef struct -{ - int num_instructions_inserted; - int num_matches; - int num_matched_nodes; - int num_replaced_nodes; - int *rewritten_patterns; - clock_t start_time, end_time; -} statistics_t; - -typedef struct -{ - struct pmap *node_map_hash; - int found_dependency; -} argdep_ana_info_t; - - - -struct pmap *find_memory_preds(ir_graph *irg, ir_node **match_node_map, int max_node_aiid); -static void find_mem_preds_pre(ir_node *n, void * env); -static void find_mem_preds_post(ir_node *n, void * env); -static ir_node *find_memory_pred(ir_node *n, int *edge_nr, int start_edge); -static int walk_mem_edge_alias(ir_node *orgn, ir_node *cn, struct pmap *memory_preds, struct pmap *node_map_hash, struct pmap *replaced_ptrs); -int test_alias_relation(ir_node **node_map, int max_node_aiid, struct pmap *memory_preds, struct pmap *replaced_ptrs); -struct pmap *generate_nodemap_hash(ir_node **node_map, int max_node_aiid); - -static int find_bad_node(ir_node *n); -void connect_complex_memory(ext_grs_action_t *action, ext_grs_match_t *match, int which, struct pmap *mem_preds); -void save_complex_operation(ext_grs_action_t *action, ext_grs_match_t *match, int which, struct pmap *vec_operations, int nr); -void save_keep_nodes(ext_grs_action_t *action, ext_grs_match_t *match, int which, struct pmap *keep_nodes); -static void rename_complex_operations(struct pmap *vec_operations); -static void visit_mem_nodes(ir_node *node, mem_preds_info_t *mem_preds_info); -static void exchange_keep_nodes(struct pmap *keep_nodes); -int perform_rewrite(ir_graph *irg, struct pmap *vec_operations, struct pmap *keep_nodes, int start, statistics_t *statistics, struct pmap *replaced_ptrs); -static void view_statistics(statistics_t *statistics); -int analyze_arguments(ext_grs_action_t *action, ext_grs_match_t *match, int which, ir_graph *irg, struct pmap *memory_preds); -int search_mem_node(ir_node *n, ir_node *start, ir_graph *irg); -void compute_match_plans(ir_graph *irg, ext_grs_planer_t *planer, ext_grs_analyzer_t *analyzer); -static void walk_arg_dep(ir_node *n, void * env); -int ext_result_costs(ext_grs_match_t *match, int which); -int single_node_costs(ir_node *n); - -#endif diff --git a/ir/be/grgen/simd/simd_presets.h b/ir/be/grgen/simd/simd_presets.h deleted file mode 100644 index 3cc6c1042..000000000 --- a/ir/be/grgen/simd/simd_presets.h +++ /dev/null @@ -1,85 +0,0 @@ -/************************************************************************* -* Program: presets.h -* Function: Preset values for simd optimizer -* Author: Andreas Schoesser -* Date: 2006-12-20 -*************************************************************************/ - -#ifndef _PRESETS_H_ -#define _PRESETS_H_ - -#include "firm_config.h" - -#ifdef HAVE_CONFIG_H - #include "config.h" -#endif - -//#ifndef INCLUDE_GENERATED_PATTERNS -// #define INCLUDE_GENERATED_PATTERNS 1 -//#endif - -// ---------------------------------------------------------------------- -// Possible VisualStudio command lines -// ---------------------------------------------------------------------- -// --c99 -I C:\DevStudio\Include -f grs-create-pattern C:\diplomarbeit\firmext\grs\simd\testprograms\patterns\vadd_memory\vadd_memory.c -// --c99 -I C:\DevStudio\Include -f grs-simd-opt C:\diplomarbeit\firmext\grs\simd\testprograms\patterns\vadd_memory\vadd_memory.c - - -// ---------------------------------------------------------------------- -// Presets for RULE generation -// ---------------------------------------------------------------------- - -#define MEMORY_ARRAY "memory" -#define REGISTER_STORE 1 -#define REGISTER_LOAD 0 -#define MEMORY_STORE 1 -#define MEMORY_LOAD 0 - -#define RESULT_NAME "Res" -static char *SIMD_ARGUMENTS[] = { "Arg_0", "Arg_1", "Arg_2", "Arg_3" }; -#define MAX_SIMD_ARGUMENTS 4 - -#define VECTOR_OP_NAME "Vector_op" -#define VECTOR_OP_PROJM_NAME "Vector_op_ProjM" -#define VECTOR_OP_PROJDATA_NAME "Vector_op_ProjData" -#define COMPLEX_OPERATION_BLOCK_NAME "Vector_op_Block" -#define VECTOR_RESULT_NAME "Vector_Result" - - -#define EMIT "Emit" -#define DESTROYS "Destroys" -#define PRIORITY "Priority" -#define COST_SAVINGS "CostSavings" - -#define VECTOR_BASE_TYPE "VectorBase" -#define VECTOR_BASE_NAME "NodeVectorBase" - -#define MAX_ADDRESS_VARIANTS 3 - -#define PRIORITY_CLEANUP 10000 - - - -// ---------------------------------------------------------------------- -// DIRECTRORY and FILE presets -// ---------------------------------------------------------------------- - -#define GRGEN_LOCATION "C:\\diplomarbeit\\grgen\\" -#define GENERATION_DEST "C:\\diplomarbeit\\firmext\\grs\\simd\\generated" -#define GRGEN_GRAPH_FILE "C:\\diplomarbeit\\firmext\\grs\\simd\\C_patterns\\complex_instructions.grg" -#define RULENAME_FILE "C:\\diplomarbeit\\firmext\\grs\\simd\\generated\\simd_rules.h" -#define BE_SPEC_FILE "C:\\diplomarbeit\\libfirm\\ir\\be\\ia32\\ia32_simd_spec.pl" - -// ---------------------------------------------------------------------- -// Optimization settings -// ---------------------------------------------------------------------- - -#define VERBOSE_REWRITE 1 -#define PROMPT_REWRITE 1 -#define PROMPT_NO_PATTERN_FOUND 0 -#define DUMP_SEARCH_PLAN 0 - -//#define DUMP_EVERYTHING 1 - - -#endif diff --git a/ir/be/grgen/simd/testprograms/patterns/vadd_memory/Firm.gm b/ir/be/grgen/simd/testprograms/patterns/vadd_memory/Firm.gm deleted file mode 100644 index 907c4ee85..000000000 --- a/ir/be/grgen/simd/testprograms/patterns/vadd_memory/Firm.gm +++ /dev/null @@ -1,441 +0,0 @@ -/* - * Project: GRS - * File name: Firm.gm - * Purpose: A specification of Firm for use with GrGen - * Author: Rubino Geiss - * Mowified by: - * Created: 10.9.2003 - * Copyright: (c) 2004 Universitaet Karlsruhe - * Licence: GPL - */ - -model Firm; - -node class FIRM_node extends Node { - generation: int; -} - -edge class FIRM_edge extends Edge { - generation: int; -} - -/********************************************** - * Modes * - **********************************************/ - -enum ENUM_sort { - auxiliary, control_flow, memory, internal_boolean, - int_number, float_number, reference, character -} -enum ENUM_arithmetic_kind { - uninitialized, none, twos_complement, ones_complement, - int_BCD, ieee754, float_BCD, max, unknown -} -enum ENUM_modecode { - irm_BB, irm_X, irm_F, irm_D, irm_E, irm_Bs, - irm_Bu, irm_Hs, irm_Hu, irm_Is, irm_Iu, irm_Ls, - irm_Lu, irm_C, irm_P, irm_b, irm_M, irm_T, - irm_U, irm_ANY, irm_BAD, irm_max -} - -node class Mode extends FIRM_node { - name : string; - size : int; - sort : ENUM_sort; -/* code : ENUM_modecode; */ - sign : boolean; - arithmetic : ENUM_arithmetic_kind; - shift : int; -} - - -node class Mode_BB extends Mode; -node class Mode_X extends Mode; -node class Mode_F extends Mode; -node class Mode_D extends Mode; -node class Mode_E extends Mode; -node class Mode_Bs extends Mode; -node class Mode_Bu extends Mode; -node class Mode_Hs extends Mode; -node class Mode_Hu extends Mode; -node class Mode_Is extends Mode; -node class Mode_Iu extends Mode; -node class Mode_Ls extends Mode; -node class Mode_Lu extends Mode; -node class Mode_C extends Mode; -node class Mode_P extends Mode; -node class Mode_b extends Mode; -node class Mode_M extends Mode; -node class Mode_T extends Mode; -node class Mode_U extends Mode; -node class Mode_ANY extends Mode; -node class Mode_BAD extends Mode; -node class Mode_max extends Mode; - - - -/********************************************** - * Types * - **********************************************/ - -enum ENUM_state { layout_undefined, layout_fixed } - -/************* Type Nodes *************/ - -node class Type extends FIRM_node { - id : int; - name : string; - state : ENUM_state; - size : int; - align : int; -} - -node class Compound extends Type; -node class Class extends Compound; -node class Struct extends Compound; -node class Union extends Compound; -node class Method extends Type { - n_params : int; // number of calling paramters - n_ress : int; // number of results - variadic : boolean; // true: additional variadic parameters allowed -} -node class Array extends Type { - n_dimensions : int; -} -node class Enum extends Type; -node class Pointer extends Type; -node class Primitive extends Type; - -/************* Type Edges *************/ - -// Class (Sub) -> Class (Super) -edge class is_subtype_of extends FIRM_edge - connect Class [*] -> Class [*]; // Subclass -> Superclass -edge class member extends FIRM_edge - // Entities may or may not be an Compound member: [0:1] - connect Compound [*] -> Entity [0:1]; -edge class parameter extends FIRM_edge - connect Method [*] -> Type [*] { - position : int; -} -edge class result extends FIRM_edge - connect Method [*] -> Type [*] { - position : int; -} -edge class element_type extends FIRM_edge - connect Array [1] -> Type [*]; -edge class element_ent extends FIRM_edge - connect Array [1] -> Entity [*]; - - -/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - TODO XXX const_code_irg is not walked by wif.do_block - TODO: Implement upper / lower in firm2grs.c - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - */ -edge class lower extends FIRM_edge // TODO: multidim arrays??? - connect Array [*] -> IR_node [*] { - position : int; -} -edge class upper extends FIRM_edge - connect Array [*] -> IR_node [*] { - position : int; -} - -edge class named_value extends FIRM_edge // Enum -> Tarval - connect Enum [*] -> Tarval [*] { // TODO: empty Enums [+]??? - name : string; -} -edge class has_type extends FIRM_edge - connect Call [1] -> Type [*], - SymConst [0:1] -> Type [*], - Pointer [1] -> Type [*]; - - -/********************************************** - * Tarval * - **********************************************/ - -node class Tarval extends FIRM_node { - value : string; // is this aprobate -} - -edge class has_mode extends FIRM_edge - connect Tarval [1] -> Mode [*], - Pointer [1] -> Mode [*], - Primitive [1] -> Mode [*], - Method [1] -> Mode [*], - IR_node [1] -> Mode [*], - Struct [0:1]->Mode [*], - Enum [1] -> Mode [*]; -edge class has_entity extends FIRM_edge - connect SymConst[0:1] -> Entity [*]; - - -/********************************************** - * Entities * - **********************************************/ - -enum ENUM_allocation { automatic, parameter, dynamic, static } -enum ENUM_visibility { local, global, extern } -enum ENUM_variability { uninitialized, initialized, partly_constant, constant } -enum ENUM_peculiarity { description, inherited, existent } - -/************* Entity Nodes *************/ - -node class Entity extends FIRM_node { - name : string; // the (source) name of the entity - ld_name : string; // the linker name of the entity - offset : int; - allocation : ENUM_allocation; - visibility : ENUM_visibility; - variability : ENUM_variability; - peculiarity : ENUM_peculiarity; - volatility : boolean; -} - -/************* Entity Edges *************/ - -edge class overwrites extends FIRM_edge - connect Entity -> Entity; // TODO arity ??? - -edge class init_node extends FIRM_edge; -// connect Entity -> Node (of Init); // TODO arity ??? - -edge class init_entity extends FIRM_edge; -// connect Entity -> Entity (of Init); // TODO arity ??? - -edge class graph extends FIRM_edge - connect Entity [0:1] -> Method_IRG [*]; - -edge class type extends FIRM_edge - connect Entity [1] -> Type [*]; - - -/********************************************** - * Method IRG * - **********************************************/ - -/* - * Firm IRG the IR graph of a method. - * Pointing to Start and End nodes as well as its Entity - */ -node class Method_IRG extends FIRM_node { - main_method : boolean; // set, if this method is the main entry point -} - -edge class meth_start extends FIRM_edge - connect Method_IRG -> Start; - -edge class meth_end extends FIRM_edge - connect Method_IRG -> End; - -edge class frame_type extends FIRM_edge - connect Method_IRG -> Type; - -edge class belong_to extends FIRM_edge - connect Block -> Method_IRG; - -node class IR_node extends FIRM_node { - index : int;//quickfix for using vprojs -} - - -node class Ordinary; -node class Special; -node class Arithmetic extends Ordinary; -node class Controlflow; -node class Memory; - -node class Unary; -node class Binary; -node class Trinary; -node class Nary; - -node class Commutative; -node class Associative; - - -/********************************************** - * IR Nodes * - **********************************************/ - -node class Complex extends IR_node; -node class Block extends IR_node, Special; -node class Start extends IR_node, Special; -node class End extends IR_node, Special; - -node class Jmp extends IR_node, Controlflow; -node class Cond extends IR_node, Controlflow, Ordinary; -node class Return extends IR_node, Controlflow; -node class Raise extends IR_node, Controlflow; - -node class Const extends IR_node, Ordinary { - value : string; // tarval coded as string -} -node class IntConst extends Const { - // ATTENTION: - // value inherited from Const is set to "" and may not be used - intval : int; // tarval coded as string -} - -node class SymConst extends IR_node, Ordinary { - kind : int; - ptrinfo : string; -} - -node class Sel extends IR_node; -node class InstOf extends IR_node; -node class Call extends IR_node; -node class Add extends IR_node, Arithmetic, Binary, Commutative; -node class Sub extends IR_node, Arithmetic, Binary; -node class Minus extends IR_node, Arithmetic, Unary; -node class Mul extends IR_node, Arithmetic, Binary, Commutative; -node class Mulh extends IR_node, Arithmetic, Binary, Commutative; -node class Quot extends IR_node, Arithmetic, Binary; -node class DivMod extends IR_node, Arithmetic, Binary; -node class Div extends IR_node, Arithmetic, Binary; -node class Mod extends IR_node, Arithmetic, Binary; -node class Abs extends IR_node, Arithmetic, Unary; -node class And extends IR_node, Arithmetic, Binary, Commutative; -node class Or extends IR_node, Arithmetic, Binary, Commutative; -node class Eor extends IR_node, Arithmetic, Binary, Commutative; -node class Not extends IR_node, Arithmetic, Unary; -node class Cmp extends IR_node, Ordinary; -node class Shl extends IR_node, Arithmetic, Binary; -node class Shr extends IR_node, Arithmetic, Binary; -node class Shrs extends IR_node, Arithmetic, Binary; -node class Rot extends IR_node, Arithmetic, Binary; -node class Conv extends IR_node, Ordinary; -node class Cast extends IR_node; // TODO classify -node class Phi extends IR_node, Ordinary; -node class Mux extends IR_node, Trinary; // TODO classify - -node class MemNode extends IR_node, Memory { - volatility : boolean; -} - -node class Load extends MemNode; -node class Store extends MemNode; - -enum ENUM_alloc_where { stack_alloc, heap_alloc } - -node class Alloc extends IR_node, Memory { - where : ENUM_alloc_where; -} -node class Free extends IR_node, Memory; -node class Sync extends IR_node, Memory { - arity : int; -} - -node class SyncArity2 extends Sync;// A sync with arity 2, that has a wrong arity attribute -node class IgnoreCF; // it is not important to which block this node is connected - -node class Proj extends IR_node, Ordinary { - proj : int; -} - -// TODO classify the following IR_nodes -node class Tuple extends IR_node; -node class Id extends IR_node; -node class Bad extends IR_node; -node class NoMem extends IR_node; -node class Confirm extends IR_node; -node class Unknown extends IR_node; -node class Filter extends IR_node; -node class Break extends IR_node, Controlflow; -node class CallBegin extends IR_node; -node class EndReg extends IR_node; -node class EndExcept extends IR_node, Controlflow; - -/********************************************** - * IR Intrinsic Nodes * - **********************************************/ -node class Intrinsic extends IR_node, Ordinary -{ - type : string; -} - -node class IntrinsicGP extends Intrinsic; // a intrinsic with gp registers -node class IntrinsicGP3 extends Intrinsic; // a intrinsic with 3 gp registers -node class IntrinsicFP extends Intrinsic; // a intrinsic with fp registers -node class IntrinsicMMX extends Intrinsic; // a intrinsic with mmx registers -node class IntrinsicSSE extends Intrinsic; // a intrinsic with sse registers - -node class Intrinsic_sse_sse_sse extends Intrinsic; // a intrinsic -node class Intrinsic_sse_sse extends Intrinsic; // a intrinsic -node class Intrinsic_sse_addr_sse extends Intrinsic; // a intrinsic -node class Intrinsic_addr_sse_store extends Intrinsic; // a intrinsic -node class Intrinsic_reg_sse_sse extends Intrinsic; // a intrinsic -node class Intrinsic_sse_reg_sse extends Intrinsic; // a intrinsic -node class Intrinsic_sse_addr_store extends Intrinsic; // a intrinsic -node class Intrinsic_addr_addr_store extends Intrinsic; // a intrinsic -node class Intrinsic_addr_sse extends Intrinsic; // a intrinsic -node class Intrinsic_addr_addr_sse extends Intrinsic; // a intrinsic - -node class max extends IntrinsicGP; // a max instruction -node class min extends IntrinsicGP; // a min instruction - -node class CMOV extends IntrinsicGP; // a conditional move instruction - -node class CCopy extends IntrinsicGP; // a conditional copy instruction - // CCopy(val0:df, val1:df, cond:bool):df - - -//select parts of a register (e.g. 32 bit of a 128 bit register) -node class VProj extends IR_node, Ordinary{ - proj : int; -} - -node class Match; -node class IntrinsicMatch extends Match{ - name : string; -} - - -/************* IR Edges *************/ - -edge class flow extends FIRM_edge - connect IR_node [*] -> IR_node [*] { - position : int; -} - -edge class df extends flow; // IR_node -> IR_node, data flow -edge class mem extends df; // IR_node -> IR_node, memory -edge class tuple extends df; // Edges of Mode Tuple -edge class cf extends flow // control flow - connect IR_node [1] -> Block [*], - // We cannot distinguish ProjI etc from ProjXi: therefor 0 - // ProjX form Start has 2 successors - Block [*] -> Proj [0:2]; - - -/********************************************** - * Extensions * - **********************************************/ - -node class Vector extends IR_node; - -node class V2 extends Vector; -node class V4 extends Vector; - -node class pi; - -node class V2pi_1 extends V2, pi; -node class V2pi_2 extends V2, pi; - -node class V4pi_1 extends V4, pi; -node class V4pi_2 extends V4, pi; -node class V4pi_3 extends V4, pi; -node class V4pi_4 extends V4, pi; - -node class V2Load extends V2; -node class V2Store extends V2; - -node class V2Sub extends V2; - -edge class match { - nr : int; -} - -node class StartBlock; diff --git a/ir/be/grgen/simd/testprograms/patterns/vadd_memory/vadd_host.c b/ir/be/grgen/simd/testprograms/patterns/vadd_memory/vadd_host.c deleted file mode 100644 index 249b718ff..000000000 --- a/ir/be/grgen/simd/testprograms/patterns/vadd_memory/vadd_host.c +++ /dev/null @@ -1,31 +0,0 @@ -#include -#include - -//int a[4], b[4], c[4]; -//int *a, *b, *c; - -void vadd_host(int *a, int *b, int *c) -{ - //int *a = (int *) malloc(8), *b = (int *) malloc(8), *c = (int *) malloc(8); - //int a[2], b[2], c[2]; - - - c[0] = a[0] + b[0]; - c[1] = a[0] + b[1]; - - printf("%d %d", c[0], c[1]); -} - -/*void test_cond(int n, int *a, int *b) -{ - if(n > 10) - { - a[0] = b[1]; - a[1] = b[0]; - } - else - { - a[1] = b[1]; - a[0] = b[0]; - } -} */ diff --git a/ir/be/grgen/simd/testprograms/patterns/vadd_memory/vadd_memory.c b/ir/be/grgen/simd/testprograms/patterns/vadd_memory/vadd_memory.c deleted file mode 100644 index 48f34955e..000000000 --- a/ir/be/grgen/simd/testprograms/patterns/vadd_memory/vadd_memory.c +++ /dev/null @@ -1,74 +0,0 @@ -#include -#include "define_operation.h" - -typedef int sse_register; - -union input_register_set -{ - sse_register hardware_reg_1; - sse_register hardware_reg_2; - sse_register hardware_reg_3; -} input_register_set; - -union output_register_set -{ - sse_register hardware_reg_1; - sse_register hardware_reg_2; - sse_register hardware_reg_3; -} output_register_set; - -int memory_array[100]; - -typedef int sse_32_2; - - -void vadd_memory(void) -{ - // Only Register - /*sse_32_2 *param0 = SSEArg_0(input_register_set); - sse_32_2 *param1 = SSEArg_1(input_register_set); - sse_32_2 *result = SSEArg_Res(output_register_set); */ - - // Only Memory - /*sse_32_2 *param0 = SSEArg_0(memory_array); - sse_32_2 *param1 = SSEArg_1(memory_array); - sse_32_2 *result = SSEArg_Res(memory_array); */ - - // Mixed - sse_32_2 *param0 = Arg_0(memory_array); - sse_32_2 *param1 = Arg_1(memory_array); - sse_32_2 *result = Res(&output_register_set); - - result[0] = param0[0] + param1[0]; - result[1] = param0[0] + param1[1]; - -/* int a0, a1, b0, b1, r0, r1; - - a0 = param0[0]; - a1 = param0[1]; - b0 = param1[0]; - b1 = param1[1]; - - if(a0 > b1) - { - r0 = a0 + a0 + b0; //result[0] = param0[0] + param0[0] + param1[0]; - r1 = a1 + a0 + b1; //result[1] = param0[1] + param0[0] + param1[1]; - } - else - { - r0 = a0; //result[0] = param0[0]; - r1 = a1; //result[1] = param0[1]; - } - - result[0] = r0; - result[1] = r1; */ -} - - void vstore(void) -{ - sse_32_2 *param = Arg_0(&input_register_set); - sse_32_2 *result = Arg_1(memory_array); - - result[0] = param[0]; - result[1] = param[1]; -} diff --git a/ir/be/grgen/uf_mpq.h b/ir/be/grgen/uf_mpq.h deleted file mode 100644 index d2a0208da..000000000 --- a/ir/be/grgen/uf_mpq.h +++ /dev/null @@ -1,382 +0,0 @@ -#ifndef _EXT_GRS_UF_MPQ_H_ -#define _EXT_GRS_UF_MPQ_H_ - -/* - * Project: libFIRM/extension module/GRS-matcher - * File name: ext/grs/uf_mpq.h - * Purpose: provides a union find structure (uf) (disjoint sets) - * and a meldable priority queue implementation (mpq) - * for pattern edges (note: in case of the uf edges are - * represented by their edge ids. This is because a - * disjoint integer set implementation is used.) - * @note The uf-concept used in this impl allows - * only elems greater than zero, but there are - * elems greater or EQUAL zero supported! - * Author: Veit Batz - * Created: 7. June 2005 - * CVS-ID: $Id$ - * Copyright: (c) 2005 Universität Karlsruhe - * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. - */ - -#include - - -#include "array.h" -#include "common_t.h" -#include "action_t.h" - - - - -#undef MAX -#define MAX(a,b) ( (a)>=(b) ? (a) : (b) ) - - - -typedef double uf_value_t; - -static int *uf_parent; -static uf_value_t *uf_value; -static uf_value_t *uf_update; - -static int uf_current_size = 1000; -static int uf_max_size = 0; -static int uf_already_used = 0; - -/** initialize the union find structure */ -void ext_grs_uf_init(int max_elem) { - - int max_size = max_elem + 1; - - if (uf_already_used == 0) { - uf_current_size = MAX(max_size, 1000); - uf_parent = NEW_ARR_F(int, uf_current_size); - uf_value = NEW_ARR_F(uf_value_t, uf_current_size); - uf_update = NEW_ARR_F(uf_value_t, uf_current_size); - uf_already_used = 1; - } - - if (max_size > uf_current_size) { - uf_current_size = max_size; - ARR_RESIZE(*uf_parent, uf_parent, uf_current_size); - ARR_RESIZE(*uf_value, uf_value, uf_current_size); - ARR_RESIZE(*uf_update, uf_update, uf_current_size); - } - - memset(uf_parent, 0, max_size * sizeof(*uf_parent)); - memset(uf_value, 0, max_size * sizeof(*uf_value)); - memset(uf_update, 0, max_size * sizeof(*uf_update)); - - uf_max_size = max_size; -} - -/** find the value of the given elem */ -uf_value_t ext_grs_uf_find_value(int elem) { - - int old_parent = uf_parent[elem]; - int new_root; - uf_value_t eff_parent_update = 0; - uf_value_t new_update = 0; - - /* check wether the given elem is in range */ - assert (elem < uf_max_size && "union find elem out of bounds"); - - /* if elem is a root... */ - if (old_parent <= 0) { - /* ...simply return the elems effective value */ - return uf_value[elem] + uf_update[elem]; - } - - /* if the old parent is a root... */ - if (uf_parent[old_parent] <= 0) { - /* ...simply return the elems effective value */ - return uf_value[elem] + uf_update[elem] + uf_update[old_parent]; - } - - /* otherwise get effective parental update recursively */ - eff_parent_update = ext_grs_uf_find_value(old_parent) - uf_value[old_parent]; - - /* do path compression: */ - /* let the old parents parent be the new parent, which must be the - * current root (by returning from recursion this has been set up by - * the recusrsive ascend to the root) */ - new_root = uf_parent[old_parent]; - uf_parent[elem] = new_root; - - /* adapt the update vaule */ - new_update = uf_update[elem] + eff_parent_update - uf_update[new_root]; - uf_update[elem] = new_update; - - /* return the effective value of the elem */ - return uf_value[elem] + new_update; -} - -/** find the root of the set elem belongs to */ -int ext_grs_uf_find(int elem) { - - /* check wether the given elem is in range */ - assert (elem < uf_max_size && "union find elem out of bounds"); - - /* if elem is a root... */ - if (uf_parent[elem] <= 0) { - /* ...simply return the elems effective value */ - return elem; - } - - /* otherwise call find_value() for the elem (which performs path - * compression for the elem) */ - ext_grs_uf_find_value(elem); - - /* after path compression the parrent of elem has to be a root */ - assert(uf_parent[uf_parent[elem]] <= 0 && "after path compression the parent should be a root"); - return uf_parent[elem]; -} - -/** unite the sets given by the roots root1 and root2 */ -int ext_grs_uf_unite(int root1, int root2) { - - /* check wether the given elements are roots */ - assert (uf_parent[root1] <= 0 && uf_parent[root2] <= 0 && "not a root element"); - - /* check wether the given elem is in range */ - assert (root1 < uf_max_size && root2 < uf_max_size && - "union find elem out of bounds"); - - /* the less deeper set is connected to the more deeper set */ - if (uf_parent[root1] < uf_parent[root2]) { - uf_parent[root2] = root1; - uf_update[root2] -= uf_update[root1]; - return root1; - } - - uf_parent[root1] = root2; - uf_update[root1] -= uf_update[root2]; - if (uf_parent[root1] == uf_parent[root2]) - uf_parent[root2]--; - return root2; -} - - - - - - -/* Folgende Funktion FALSCH????? */ - - -/** add the given value a to the values of all - * elements of the set given by root */ -void ext_grs_uf_change_value(int root, uf_value_t a) { - - /* check wether the given elem is in range */ - assert (root < uf_max_size && "union find elem out of bounds"); - - assert (uf_parent[root] <= 0 && "not a root element"); - uf_update[root] += a; -} - - - - - - - - - - -/* the meldable priority queue implementation */ - - - - -/** - * iterate over a list starting with pos up to the lists end - * */ -#define list_for_each_from(pos, head) \ - for ( ; pos != (head); pos = pos->next ) - -#define GET_ACTUAL_EDGE_COST(e) \ - ((e)->cost - ext_grs_uf_find_value((e)->arg->aiid + 1)) - - - -/** a priority queue of edges */ -typedef lc_list_t ext_grs_mpq_t; - - - - - -static struct obstack obst; -static int obst_already_initlzd = 0; - - -/** initialize the meldable priority queue inplementation */ -void ext_grs_mpq_init(void) -{ - if (! obst_already_initlzd) { - obstack_init(&obst); - } - else { - obstack_free(&obst, NULL); - obstack_init(&obst); - } - obst_already_initlzd = 1; -} - -/** create a new empty priority queue */ -ext_grs_mpq_t *ext_grs_mpq_create(void) -{ - ext_grs_mpq_t *mpq = obstack_alloc(&obst, sizeof(*mpq)); - - assert(obst_already_initlzd = 1 && "mpq structure not initialized yet"); - - - LC_INIT_LIST_HEAD(mpq); - return mpq; -} - -/** insert the given elem in the given priority queue */ -void ext_grs_mpq_insert(ext_grs_mpq_t *pq, ext_grs_edge_t *e) -{ - lc_list_t *pos; - ext_grs_edge_t *edge; - - assert (pq != NULL && "NULL pointer is not a valid priority queue"); - - if (lc_list_empty(pq)) { - lc_list_add(& e->mpq_list, pq); - return; - } - - /* go through pq untill the appropriate position is reached */ - lc_list_for_each(pos, pq) { - edge = lc_list_entry(pos, ext_grs_edge_t, mpq_list); - if (GET_ACTUAL_EDGE_COST(e) <= GET_ACTUAL_EDGE_COST(edge)) { - lc_list_add_tail( & e->mpq_list, & edge->mpq_list ); - return; - } - } - - lc_list_add( & e->mpq_list, & edge->mpq_list ); - -} - -/** get the an item with a minimal prio or NULL if pq is empty */ -ext_grs_edge_t *ext_grs_mpq_find_min(ext_grs_mpq_t *pq) -{ - assert (pq != NULL && "NULL pointer is not a valid priority queue"); - - /* return NULL if pq is empty */ - if (lc_list_empty(pq)) return NULL; - - /* return first item otherwise */ - return lc_list_entry(pq->next, ext_grs_edge_t, mpq_list); -} - -/** Remove and return an item with a minimal prio, if pq is empty - * return NULL. - * @note The member list of the returned item - * is in an undefined state. */ -ext_grs_edge_t *ext_grs_mpq_delete_min(ext_grs_mpq_t *pq) -{ - ext_grs_edge_t *first_edge; - - assert (pq != NULL && "NULL pointer is not a vaild priority queue"); - - /* return NULL if pq is empty */ - if (lc_list_empty(pq)) return NULL; - - /* otherwise remove and return the first item */ - first_edge = lc_list_entry(pq->next, ext_grs_edge_t, mpq_list); - lc_list_del(& first_edge->mpq_list); - return first_edge; -} - -void ext_grs_mpq_dump(ext_grs_mpq_t *pq); - -/** Meld two item disjoint priority queues pq1 and pq2. - * ATTENTION: The given priority queues will be destroyed! */ -ext_grs_mpq_t *ext_grs_mpq_meld(ext_grs_mpq_t *pq1, ext_grs_mpq_t *pq2) -{ - lc_list_t *pos1, *pos2, *n; - ext_grs_edge_t *e1, *e2; - int last = 1; /* tells wether that pq1 has been iteratied till the end and never breaked */ - - assert (pq1 != NULL && pq2 != NULL && "NULL pointer is not a vaild priority queue"); - assert (pq1 != pq2 && "cannot meld an pq with itself"); - -#ifdef EXT_GRS_DEBUG - printf("pq1:\n"); - ext_grs_mpq_dump(pq1); - printf("pq2:\n"); - ext_grs_mpq_dump(pq2); -#endif - - - /* if pq1 is empty return pq2 */ - if (lc_list_empty(pq1)) return pq2; - - /* insert the items of pq2 into pq1 (at appropriate positions) */ - pos1 = pq1->next; /* start walking pq1 from beginning */ - lc_list_for_each_safe (pos2, n, pq2) { - e2 = lc_list_entry(pos2, ext_grs_edge_t, mpq_list); - list_for_each_from (pos1, pq1) { - e1 = lc_list_entry(pos1, ext_grs_edge_t, mpq_list); - if (GET_ACTUAL_EDGE_COST(e2) <= GET_ACTUAL_EDGE_COST(e1)) { - last = 0; - break; - } - } - - if (last) { - /* pq1 has been iterated till the end */ - /* insert item2 before the curent position in pq1 */ - lc_list_move(& e2->mpq_list, & e1->mpq_list); - e1 = e2; - } - else { - /* insert item2 before the curent position in pq1 */ - lc_list_move_tail(& e2->mpq_list, & e1->mpq_list); - /* continue in pq1 with the current item */ - pos1 = & e1->mpq_list; - /* maybe next time the end of pq1 is reached */ - last = 1; - } - } - -#ifdef EXT_GRS_DEBUG - printf("Result queue:\n"); - ext_grs_mpq_dump(pq1); - printf("\n"); -#endif - - return pq1; -} - - -/** Remove the given item from the given priority queue. - * @note The list of the deleted item is in an undifind state afterwards. */ -void ext_grs_mpq_delete(ext_grs_edge_t *e) -{ - /* remove the item from its priority queue */ - lc_list_del(& e->mpq_list); -} - - -void ext_grs_mpq_dump(ext_grs_mpq_t *pq) { - lc_list_t *pos; - - printf("{\n"); - lc_list_for_each(pos, pq) { - ext_grs_edge_t *edge = lc_list_entry(pos, ext_grs_edge_t, mpq_list); - printf("\t(name, cost, actual cost) = (%s, %lf, %lf)\n", - edge->name, edge->cost, GET_ACTUAL_EDGE_COST(edge)); - } - printf("}\n"); -} - - - -#endif /*_UF_MPQ_H_*/ -- 2.20.1