#include <acdXX.hpp>
Definition at line 67 of file acdXX.hpp.
◆ acdXX_impl()
Definition at line 75 of file acdXX.hpp.
75 {} )
76 : num_vars( num_vars ), ps( ps )
77 {
78 std::iota( permutations.begin(), permutations.end(), 0 );
79 }
◆ compute_decomposition()
| int acd::acdXX_impl::compute_decomposition |
( |
| ) |
|
|
inline |
Definition at line 133 of file acdXX.hpp.
134 {
136 return -1;
137
138 compute_decomposition_impl();
139
140 if ( ps.verify && !verify_impl() )
141 {
142 return 1;
143 }
144
145 return 0;
146 }
◆ get_decomposition()
| void acd::acdXX_impl::get_decomposition |
( |
unsigned char * | decompArray | ) |
|
|
inline |
Definition at line 186 of file acdXX.hpp.
187 {
189 return;
190
191 get_decomposition_abc( decompArray );
192 }
◆ get_num_edges()
| uint32_t acd::acdXX_impl::get_num_edges |
( |
| ) |
|
|
inline |
Definition at line 148 of file acdXX.hpp.
149 {
151 {
152 return num_vars + 1 + num_shared_vars;
153 }
154
155
156 return bs_support_size + best_free_set + 1 + num_shared_vars;
157 }
◆ get_profile()
| unsigned acd::acdXX_impl::get_profile |
( |
| ) |
|
|
inline |
Definition at line 160 of file acdXX.hpp.
161 {
162 unsigned profile = 0;
163
165 return -1;
166
168 {
169 for (
uint32_t i = 0; i < best_free_set; ++i )
170 {
171 profile |= 1 << permutations[i];
172 }
173 }
174 else
175 {
176 for (
uint32_t i = 0; i < bs_support_size; ++i )
177 {
178 profile |= 1 << permutations[bs_support[i] + best_free_set];
179 }
180 profile = ~profile & ( ( 1u << num_vars ) - 1 );
181 }
182
183 return profile;
184 }
◆ run() [1/2]
Runs ACD XX.
Definition at line 82 of file acdXX.hpp.
83 {
85
86
87 if ( num_vars > max_num_vars || num_vars >= 2 * ps.lut_size )
88 {
89 return false;
90 }
91
92
93 ps.max_shared_vars = std::min( ps.max_shared_vars, ps.lut_size - 2 );
94
95
96 init_truth_table( ptt );
97
98
99 return find_decomposition();
100 }
◆ run() [2/2]
| int acd::acdXX_impl::run |
( |
word * | ptt, |
|
|
unsigned | delay_profile ) |
|
inline |
Runs ACD XX.
Definition at line 103 of file acdXX.hpp.
104 {
106
107
108 if ( num_vars > max_num_vars || num_vars >= 2 * ps.lut_size )
109 {
110 return 0;
111 }
112
113 uint32_t late_arriving = __builtin_popcount( delay_profile );
114
115
116 if ( late_arriving >= ps.lut_size )
117 return 0;
118
119
120 ps.max_shared_vars = std::min( ps.max_shared_vars, ps.lut_size - 2 );
121
122
123 init_truth_table( ptt );
124 best_tt = start_tt;
125
126
127 reposition_late_arriving_variables( delay_profile, late_arriving );
128
129
130 return find_decomposition_offset( late_arriving ) ? ( delay_profile == 0 ? 2 : 1 ) : 0;
131 }
The documentation for this class was generated from the following file: