mirror of https://github.com/YosysHQ/abc.git
removing not used methods
This commit is contained in:
parent
f7a520b957
commit
672fd1b629
|
|
@ -367,171 +367,6 @@ private:
|
|||
// return multiplicity;
|
||||
// }
|
||||
|
||||
template<typename Fn>
|
||||
std::tuple<STT, std::vector<uint32_t>, uint32_t> enumerate_iset_combinations( uint32_t free_set_size, Fn&& fn, bool verbose = false )
|
||||
{
|
||||
/* works up to 16 input truth tables */
|
||||
assert( num_vars <= 16 );
|
||||
|
||||
/* special case */
|
||||
STT tt = best_tt;
|
||||
if ( num_vars <= free_set_size || free_set_size == 0 )
|
||||
{
|
||||
return { tt, permutations, UINT32_MAX };
|
||||
}
|
||||
|
||||
/* select k */
|
||||
// free_set_size = std::min( free_set_size, num_vars - free_set_size );
|
||||
|
||||
/* init permutation array */
|
||||
std::array<uint32_t, 16> perm, best_perm;
|
||||
std::copy( permutations.begin(), permutations.begin() + num_vars, perm.begin() );
|
||||
best_perm = perm;
|
||||
|
||||
/* TT with best cost */
|
||||
STT best = tt;
|
||||
uint32_t best_cost = UINT32_MAX;
|
||||
|
||||
/* enumerate combinations */
|
||||
if ( free_set_size == 1 )
|
||||
{
|
||||
uint32_t cost = fn( tt );
|
||||
if ( cost < best_cost )
|
||||
{
|
||||
best = tt;
|
||||
best_cost = cost;
|
||||
best_perm = perm;
|
||||
}
|
||||
|
||||
if ( verbose )
|
||||
{
|
||||
kitty::print_hex( tt );
|
||||
std::cout << " " << cost << " ";
|
||||
print_perm( perm.begin(), free_set_size );
|
||||
}
|
||||
|
||||
for ( uint32_t i = 1; i < num_vars; ++i )
|
||||
{
|
||||
std::swap( perm[0], perm[i] );
|
||||
kitty::swap_inplace( tt, 0, i );
|
||||
|
||||
uint32_t cost = fn( tt );
|
||||
if ( cost < best_cost )
|
||||
{
|
||||
best = tt;
|
||||
best_cost = cost;
|
||||
best_perm = perm;
|
||||
}
|
||||
|
||||
if ( verbose )
|
||||
{
|
||||
kitty::print_hex( tt );
|
||||
std::cout << " " << cost << " ";
|
||||
print_perm( perm.begin(), free_set_size );
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ( free_set_size == 2 )
|
||||
{
|
||||
for ( uint32_t i = 0; i < num_vars - 1; ++i )
|
||||
{
|
||||
uint32_t cost = fn( tt );
|
||||
if ( cost < best_cost )
|
||||
{
|
||||
best = tt;
|
||||
best_cost = cost;
|
||||
best_perm = perm;
|
||||
}
|
||||
|
||||
if ( verbose )
|
||||
{
|
||||
kitty::print_hex( tt );
|
||||
std::cout << " " << cost << " ";
|
||||
print_perm( perm.begin(), free_set_size );
|
||||
}
|
||||
|
||||
for ( uint32_t j = 2; j < num_vars - i; ++j )
|
||||
{
|
||||
std::swap( perm[1], perm[j] );
|
||||
kitty::swap_inplace( tt, 1, j );
|
||||
|
||||
uint32_t cost = fn( tt );
|
||||
if ( cost < best_cost )
|
||||
{
|
||||
best = tt;
|
||||
best_cost = cost;
|
||||
best_perm = perm;
|
||||
}
|
||||
|
||||
if ( verbose )
|
||||
{
|
||||
kitty::print_hex( tt );
|
||||
std::cout << " " << cost << " ";
|
||||
print_perm( perm.begin(), free_set_size );
|
||||
}
|
||||
}
|
||||
|
||||
std::swap( perm[0], perm[num_vars - i - 1] );
|
||||
kitty::swap_inplace( tt, 0, num_vars - i - 1 );
|
||||
}
|
||||
}
|
||||
else if ( free_set_size == 3 )
|
||||
{
|
||||
for ( uint32_t i = 0; i < num_vars - 2; ++i )
|
||||
{
|
||||
for ( uint32_t j = i; j < num_vars - 2; ++j )
|
||||
{
|
||||
uint32_t cost = fn( tt );
|
||||
if ( cost < best_cost )
|
||||
{
|
||||
best = tt;
|
||||
best_cost = cost;
|
||||
best_perm = perm;
|
||||
}
|
||||
|
||||
if ( verbose )
|
||||
{
|
||||
kitty::print_hex( tt );
|
||||
std::cout << " " << cost << " ";
|
||||
print_perm( perm.begin(), free_set_size );
|
||||
}
|
||||
|
||||
for ( uint32_t k = 3; k < num_vars - j; ++k )
|
||||
{
|
||||
std::swap( perm[2], perm[k] );
|
||||
kitty::swap_inplace( tt, 2, k );
|
||||
|
||||
uint32_t cost = fn( tt );
|
||||
if ( cost < best_cost )
|
||||
{
|
||||
best = tt;
|
||||
best_cost = cost;
|
||||
best_perm = perm;
|
||||
}
|
||||
|
||||
if ( verbose )
|
||||
{
|
||||
kitty::print_hex( tt );
|
||||
std::cout << " " << cost << " ";
|
||||
print_perm( perm.begin(), free_set_size );
|
||||
}
|
||||
}
|
||||
|
||||
std::swap( perm[1], perm[num_vars - j - 1] );
|
||||
kitty::swap_inplace( tt, 1, num_vars - j - 1 );
|
||||
}
|
||||
|
||||
std::swap( perm[0], perm[num_vars - i - 1] );
|
||||
kitty::swap_inplace( tt, 0, num_vars - i - 1 );
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<uint32_t> res_perm( num_vars );
|
||||
std::copy( best_perm.begin(), best_perm.begin() + num_vars, res_perm.begin() );
|
||||
|
||||
return std::make_tuple( best, res_perm, best_cost );
|
||||
}
|
||||
|
||||
inline bool combinations_offset_next( uint32_t k, uint32_t offset, uint32_t *pComb, uint32_t *pInvPerm, STT& tt )
|
||||
{
|
||||
uint32_t i;
|
||||
|
|
|
|||
Loading…
Reference in New Issue