reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

tools/polly/lib/External/isl/isl_tab.c
  441 	if (!tab1 || !tab2)
  444 	isl_assert(tab1->mat->ctx, tab1->M == tab2->M, return NULL);
  444 	isl_assert(tab1->mat->ctx, tab1->M == tab2->M, return NULL);
  445 	isl_assert(tab1->mat->ctx, tab1->rational == tab2->rational, return NULL);
  445 	isl_assert(tab1->mat->ctx, tab1->rational == tab2->rational, return NULL);
  446 	isl_assert(tab1->mat->ctx, tab1->cone == tab2->cone, return NULL);
  446 	isl_assert(tab1->mat->ctx, tab1->cone == tab2->cone, return NULL);
  447 	isl_assert(tab1->mat->ctx, !tab1->row_sign, return NULL);
  447 	isl_assert(tab1->mat->ctx, !tab1->row_sign, return NULL);
  448 	isl_assert(tab1->mat->ctx, !tab2->row_sign, return NULL);
  449 	isl_assert(tab1->mat->ctx, tab1->n_param == 0, return NULL);
  449 	isl_assert(tab1->mat->ctx, tab1->n_param == 0, return NULL);
  450 	isl_assert(tab1->mat->ctx, tab2->n_param == 0, return NULL);
  451 	isl_assert(tab1->mat->ctx, tab1->n_div == 0, return NULL);
  451 	isl_assert(tab1->mat->ctx, tab1->n_div == 0, return NULL);
  452 	isl_assert(tab1->mat->ctx, tab2->n_div == 0, return NULL);
  454 	off = 2 + tab1->M;
  455 	r1 = tab1->n_redundant;
  457 	d1 = tab1->n_dead;
  459 	prod = isl_calloc_type(tab1->mat->ctx, struct isl_tab);
  462 	prod->mat = tab_mat_product(tab1->mat, tab2->mat,
  463 				tab1->n_row, tab2->n_row,
  464 				tab1->n_col, tab2->n_col, off, r1, r2, d1, d2);
  467 	prod->var = isl_alloc_array(tab1->mat->ctx, struct isl_tab_var,
  468 					tab1->max_var + tab2->max_var);
  469 	if ((tab1->max_var + tab2->max_var) && !prod->var)
  471 	for (i = 0; i < tab1->n_var; ++i) {
  472 		prod->var[i] = tab1->var[i];
  476 		prod->var[tab1->n_var + i] = tab2->var[i];
  477 		update_index2(&prod->var[tab1->n_var + i],
  478 				tab1->n_row, tab1->n_col,
  478 				tab1->n_row, tab1->n_col,
  481 	prod->con = isl_alloc_array(tab1->mat->ctx, struct isl_tab_var,
  482 					tab1->max_con +  tab2->max_con);
  483 	if ((tab1->max_con + tab2->max_con) && !prod->con)
  485 	for (i = 0; i < tab1->n_con; ++i) {
  486 		prod->con[i] = tab1->con[i];
  490 		prod->con[tab1->n_con + i] = tab2->con[i];
  491 		update_index2(&prod->con[tab1->n_con + i],
  492 				tab1->n_row, tab1->n_col,
  492 				tab1->n_row, tab1->n_col,
  495 	prod->col_var = isl_alloc_array(tab1->mat->ctx, int,
  496 					tab1->n_col + tab2->n_col);
  497 	if ((tab1->n_col + tab2->n_col) && !prod->col_var)
  499 	for (i = 0; i < tab1->n_col; ++i) {
  501 		prod->col_var[pos] = tab1->col_var[i];
  504 		int pos = i < d2 ? d1 + i : tab1->n_col + i;
  507 			t += tab1->n_var;
  509 			t -= tab1->n_con;
  512 	prod->row_var = isl_alloc_array(tab1->mat->ctx, int,
  513 					tab1->mat->n_row + tab2->mat->n_row);
  514 	if ((tab1->mat->n_row + tab2->mat->n_row) && !prod->row_var)
  516 	for (i = 0; i < tab1->n_row; ++i) {
  518 		prod->row_var[pos] = tab1->row_var[i];
  521 		int pos = i < r2 ? r1 + i : tab1->n_row + i;
  524 			t += tab1->n_var;
  526 			t -= tab1->n_con;
  531 	prod->n_row = tab1->n_row + tab2->n_row;
  532 	prod->n_con = tab1->n_con + tab2->n_con;
  534 	prod->max_con = tab1->max_con + tab2->max_con;
  535 	prod->n_col = tab1->n_col + tab2->n_col;
  536 	prod->n_var = tab1->n_var + tab2->n_var;
  537 	prod->max_var = tab1->max_var + tab2->max_var;
  540 	prod->n_dead = tab1->n_dead + tab2->n_dead;
  541 	prod->n_redundant = tab1->n_redundant + tab2->n_redundant;
  542 	prod->rational = tab1->rational;
  543 	prod->empty = tab1->empty || tab2->empty;
  544 	prod->strict_redundant = tab1->strict_redundant || tab2->strict_redundant;
  547 	prod->M = tab1->M;
  548 	prod->cone = tab1->cone;