Lines Matching refs:graph

51 SIZED2(_setup)(struct SIZED(graph) *graph, uint32_t v, uint32_t e)  in SIZED2()
53 graph->v = v; in SIZED2()
54 graph->e = e; in SIZED2()
56 graph->verts = calloc(sizeof(*graph->verts), v); in SIZED2()
57 graph->edges = calloc(sizeof(*graph->edges), e); in SIZED2()
58 graph->output_order = calloc(sizeof(uint32_t), e); in SIZED2()
60 if (graph->verts == NULL || graph->edges == NULL || in SIZED2()
61 graph->output_order == NULL) in SIZED2()
66 SIZED2(_free)(struct SIZED(graph) *graph) in SIZED2()
68 free(graph->verts); in SIZED2()
69 free(graph->edges); in SIZED2()
70 free(graph->output_order); in SIZED2()
72 graph->verts = NULL; in SIZED2()
73 graph->edges = NULL; in SIZED2()
74 graph->output_order = NULL; in SIZED2()
78 static struct SIZED(graph) *sorting_graph;
105 SIZED2(_check_duplicates)(struct nbperf *nbperf, struct SIZED(graph) *graph) in SIZED2()
108 uint32_t *key_index = calloc(sizeof(*key_index), graph->e); in SIZED2()
112 for (i = 0; i < graph->e; ++i) in SIZED2()
116 sorting_graph = graph; in SIZED2()
118 qsort(key_index, graph->e, sizeof(*key_index), sorting_cmp); in SIZED2()
135 SIZED2(_add_edge)(struct SIZED(graph) *graph, uint32_t edge) in SIZED2()
137 struct SIZED(edge) *e = graph->edges + edge; in SIZED2()
142 v = graph->verts + e->vertices[i]; in SIZED2()
149 SIZED2(_remove_edge)(struct SIZED(graph) *graph, uint32_t edge) in SIZED2()
151 struct SIZED(edge) *e = graph->edges + edge; in SIZED2()
156 v = graph->verts + e->vertices[i]; in SIZED2()
163 SIZED2(_remove_vertex)(struct SIZED(graph) *graph, uint32_t vertex) in SIZED2()
165 struct SIZED(vertex) *v = graph->verts + vertex; in SIZED2()
170 graph->output_order[--graph->output_index] = e; in SIZED2()
171 SIZED2(_remove_edge)(graph, e); in SIZED2()
176 SIZED2(_hash)(struct nbperf *nbperf, struct SIZED(graph) *graph) in SIZED2()
183 if (nbperf->allow_hash_fudging && (graph->v & 1) != 0) in SIZED2()
186 if (nbperf->allow_hash_fudging && (graph->v & 3) != 0) in SIZED2()
191 memset(graph->verts, 0, sizeof(*graph->verts) * graph->v); in SIZED2()
192 graph->hash_fudge = 0; in SIZED2()
194 for (i = 0; i < graph->e; ++i) { in SIZED2()
197 e = graph->edges + i; in SIZED2()
199 e->vertices[j] = hashes[j] % graph->v; in SIZED2()
204 graph->hash_fudge |= 1; in SIZED2()
211 graph->hash_fudge |= 2; in SIZED2()
220 for (i = 0; i < graph->e; ++i) in SIZED2()
221 SIZED2(_add_edge)(graph, i); in SIZED2()
225 return SIZED2(_check_duplicates)(nbperf, graph); in SIZED2()
232 SIZED2(_output_order)(struct SIZED(graph) *graph) in SIZED2()
237 graph->output_index = graph->e; in SIZED2()
239 for (i = 0; i < graph->v; ++i) in SIZED2()
240 SIZED2(_remove_vertex)(graph, i); in SIZED2()
242 for (i = graph->e; graph->output_index > 0 && i > graph->output_index;) { in SIZED2()
243 e2 = graph->edges + graph->output_order[--i]; in SIZED2()
245 SIZED2(_remove_vertex)(graph, e2->vertices[j]); in SIZED2()
248 if (graph->output_index != 0) { in SIZED2()