Lines Matching full:partial
190 struct isl_partial_sol *partial; member
200 struct isl_partial_sol *partial, *next; in sol_free() local
203 for (partial = sol->partial; partial; partial = next) { in sol_free()
204 next = partial->next; in sol_free()
205 isl_basic_set_free(partial->dom); in sol_free()
206 isl_multi_aff_free(partial->ma); in sol_free()
207 free(partial); in sol_free()
216 /* Push a partial solution represented by a domain and function "ma"
217 * onto the stack of partial solutions.
224 struct isl_partial_sol *partial; in sol_push_sol() local
229 partial = isl_alloc_type(dom->ctx, struct isl_partial_sol); in sol_push_sol()
230 if (!partial) in sol_push_sol()
233 partial->level = sol->level; in sol_push_sol()
234 partial->dom = dom; in sol_push_sol()
235 partial->ma = ma; in sol_push_sol()
236 partial->next = sol->partial; in sol_push_sol()
238 sol->partial = partial; in sol_push_sol()
308 /* Push a partial solution represented by a domain and mapping M
309 * onto the stack of partial solutions.
357 /* Pop one partial solution from the partial solution stack and
362 struct isl_partial_sol *partial; in sol_pop_one() local
364 partial = sol->partial; in sol_pop_one()
365 sol->partial = partial->next; in sol_pop_one()
367 if (partial->ma) in sol_pop_one()
368 sol->add(sol, partial->dom, partial->ma); in sol_pop_one()
370 sol->add_empty(sol, partial->dom); in sol_pop_one()
371 free(partial); in sol_pop_one()
390 /* Check whether two partial solutions have the same affine expressions.
403 /* Swap the initial two partial solutions in "sol".
407 * sol->partial = p1; p1->next = p2; p2->next = p3
411 * sol->partial = p2; p2->next = p1; p1->next = p3
415 struct isl_partial_sol *partial; in swap_initial() local
417 partial = sol->partial; in swap_initial()
418 sol->partial = partial->next; in swap_initial()
419 partial->next = partial->next->next; in swap_initial()
420 sol->partial->next = partial; in swap_initial()
423 /* Combine the initial two partial solution of "sol" into
424 * a partial solution with the current context domain of "sol" and
425 * the function description of the second partial solution in the list.
426 * The level of the new partial solution is set to the current level.
428 * That is, the first two partial solutions (D1,M1) and (D2,M2) are
435 struct isl_partial_sol *partial; in combine_initial_into_second() local
438 partial = sol->partial; in combine_initial_into_second()
441 isl_basic_set_free(partial->next->dom); in combine_initial_into_second()
442 partial->next->dom = bset; in combine_initial_into_second()
443 partial->next->level = sol->level; in combine_initial_into_second()
448 sol->partial = partial->next; in combine_initial_into_second()
449 isl_basic_set_free(partial->dom); in combine_initial_into_second()
450 isl_multi_aff_free(partial->ma); in combine_initial_into_second()
451 free(partial); in combine_initial_into_second()
481 /* The initial two partial solutions of "sol" are known to be at
487 * Even if the two partial solution are not obviously the same,
492 * That is, for two partial solutions (D1,M1) and (D2,M2),
493 * if M1 = M2 on D1, then the pair of partial solutions can
498 struct isl_partial_sol *partial; in combine_initial_if_equal() local
501 partial = sol->partial; in combine_initial_if_equal()
503 same = same_solution(partial, partial->next); in combine_initial_if_equal()
508 if (partial->ma && partial->next->ma) { in combine_initial_if_equal()
509 same = equal_on_domain(partial->ma, partial->next->ma, in combine_initial_if_equal()
510 partial->dom); in combine_initial_if_equal()
515 same = equal_on_domain(partial->ma, partial->next->ma, in combine_initial_if_equal()
516 partial->next->dom); in combine_initial_if_equal()
529 /* Pop all solutions from the partial solution stack that were pushed onto
535 * If the outer level (0) has been reached, then all partial solutions
540 struct isl_partial_sol *partial; in sol_pop() local
545 partial = sol->partial; in sol_pop()
546 if (!partial) in sol_pop()
549 if (partial->level == 0 && sol->level == 0) { in sol_pop()
550 for (partial = sol->partial; partial; partial = sol->partial) in sol_pop()
555 if (partial->level <= sol->level) in sol_pop()
558 if (partial->next && partial->next->level == partial->level) { in sol_pop()
565 for (partial = sol->partial; partial; partial = sol->partial) in sol_pop()
4206 /* Does "sol" contain a pair of partial solutions that could potentially
4210 * and that there are at least two partial solutions of which the final two
4217 if (!sol->partial) in sol_has_mergeable_solutions()
4219 if (!sol->partial->next) in sol_has_mergeable_solutions()
4221 return sol->partial->level == sol->partial->next->level; in sol_has_mergeable_solutions()
4237 * partial solutions that can potentially be merged. If so,
4239 * The merging of partial solutions happens inside calls to
4241 * If there are no partial solutions that can potentially be merged