From 44a65c23ed1604f4605a227b97ee6a14b08ed2bb Mon Sep 17 00:00:00 2001 From: aletempiac Date: Tue, 27 Feb 2024 17:47:43 +0100 Subject: [PATCH] Adding relaxation on the maximum free set constraint --- src/map/if/acd/ac_decomposition.hpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/map/if/acd/ac_decomposition.hpp b/src/map/if/acd/ac_decomposition.hpp index 3c72b792f..7cd6d9613 100644 --- a/src/map/if/acd/ac_decomposition.hpp +++ b/src/map/if/acd/ac_decomposition.hpp @@ -111,6 +111,12 @@ public: uint32_t late_arriving = __builtin_popcount( delay_profile ); + /* relax maximum number of free set variables if a function has more variables */ + if ( num_vars > ps.max_free_set_vars + ps.lut_size ) + { + ps.max_free_set_vars = num_vars - ps.lut_size; + } + /* return a high cost if too many late arriving variables */ if ( late_arriving > ps.lut_size - 1 || late_arriving > ps.max_free_set_vars ) { @@ -1444,7 +1450,7 @@ private: std::vector> support_minimization_encodings; uint32_t num_vars; - ac_decomposition_params const& ps; + ac_decomposition_params ps; ac_decomposition_stats* pst; std::array permutations; };