void multiply_easy_non_constrained_op_parameters( int curr_parameter ) { EasyTemplate *tmp; int i, j, t, n; if ( curr_parameter == lnum_multiply_parameters ) { tmp = new_EasyTemplate( lo ); for ( i = 0; i < lo->num_vars; i++ ) { tmp->inst_table[i] = lo->inst_table[i]; } tmp->next = geasy_templates; if ( geasy_templates ) { geasy_templates->prev = tmp; } geasy_templates = tmp; gnum_easy_templates++; return; } if ( curr_parameter == lnum_multiply_parameters - 1 ) { t = lo->var_types[lmultiply_parameters[curr_parameter]]; n = gtype_size[t]; for ( i = 0; i < n; i++ ) { lo->inst_table[lmultiply_parameters[curr_parameter]] = gtype_consts[t][i]; tmp = new_EasyTemplate( lo ); for ( j = 0; j < lo->num_vars; j++ ) { tmp->inst_table[j] = lo->inst_table[j]; } tmp->next = geasy_templates; if ( geasy_templates ) { geasy_templates->prev = tmp; } geasy_templates = tmp; gnum_easy_templates++; } lo->inst_table[lmultiply_parameters[curr_parameter]] = -1; return; } t = lo->var_types[lmultiply_parameters[curr_parameter]]; n = gtype_size[t]; for ( i = 0; i < n; i++ ) { lo->inst_table[lmultiply_parameters[curr_parameter]] = gtype_consts[t][i]; multiply_easy_non_constrained_op_parameters( curr_parameter + 1 ); } lo->inst_table[lmultiply_parameters[curr_parameter]] = -1; }
void multiply_easy_non_constrained_op_parameters( int curr_parameter ) { EasyTemplate *tmp; int i, j, t, n; if ( curr_parameter == lnum_multiply_parameters ) { tmp = new_EasyTemplate( lo ); for ( i = 0; i < lo->num_vars; i++ ) { tmp->inst_table[i] = lo->inst_table[i]; } tmp->next = geasy_templates; if ( geasy_templates ) { geasy_templates->prev = tmp; } geasy_templates = tmp; gnum_easy_templates++; return; } if ( curr_parameter == lnum_multiply_parameters - 1 ) { t = lo->var_types[lmultiply_parameters[curr_parameter]]; n = gtype_size[t]; for ( i = 0; i < n; i++ ) { /* if ( lused_constant[gtype_consts[t][i]] ) { if (GpG.inst_duplicate_param == FALSE) continue; } */ lo->inst_table[lmultiply_parameters[curr_parameter]] = gtype_consts[t][i]; tmp = new_EasyTemplate( lo ); for ( j = 0; j < lo->num_vars; j++ ) { tmp->inst_table[j] = lo->inst_table[j]; } tmp->next = geasy_templates; if ( geasy_templates ) { geasy_templates->prev = tmp; } geasy_templates = tmp; gnum_easy_templates++; } lo->inst_table[lmultiply_parameters[curr_parameter]] = -1; return; } t = lo->var_types[lmultiply_parameters[curr_parameter]]; n = gtype_size[t]; for ( i = 0; i < n; i++ ) { /* if ( lused_constant[gtype_consts[t][i]] ) { continue; } */ lo->inst_table[lmultiply_parameters[curr_parameter]] = gtype_consts[t][i]; lused_constant[gtype_consts[t][i]] = TRUE; multiply_easy_non_constrained_op_parameters( curr_parameter + 1 ); lused_constant[gtype_consts[t][i]] = FALSE; } lo->inst_table[lmultiply_parameters[curr_parameter]] = -1; }