(
stack: &mut StackTracker,
a: StackVariable,
b: StackVariable,
c: StackVariable,
nib: u32,
lookup: StackVariable,
xortable: StackVariable,
shift_table: StackVariable,
| 216 | |
| 217 | #[allow(clippy::too_many_arguments)] |
| 218 | pub fn maj1_calculation_nib_stack( |
| 219 | stack: &mut StackTracker, |
| 220 | a: StackVariable, |
| 221 | b: StackVariable, |
| 222 | c: StackVariable, |
| 223 | nib: u32, |
| 224 | lookup: StackVariable, |
| 225 | xortable: StackVariable, |
| 226 | shift_table: StackVariable, |
| 227 | ) -> StackVariable { |
| 228 | stack.copy_var(a); // a[nib] |
| 229 | |
| 230 | stack.copy_var(b); // a b[nib] |
| 231 | |
| 232 | stack.copy_var(c); // a b c[nib] |
| 233 | |
| 234 | stack.op_3dup(); // a b c a b c |
| 235 | |
| 236 | u4_logic_with_table_stack(stack, lookup, xortable); // a b c a (b^c) |
| 237 | |
| 238 | u4_logic_with_table_stack(stack, lookup, xortable); // a b c (a^b^c) |
| 239 | |
| 240 | stack.op_sub(); // a b (c-a^b^c) |
| 241 | stack.op_add(); // a (b+c-a^b^c) |
| 242 | stack.op_add(); // a+b+c-a^b^c |
| 243 | |
| 244 | let var = u4_rshift_stack(stack, shift_table, 1); |
| 245 | |
| 246 | stack.rename(var, format!("maj_{nib}").as_str()); |
| 247 | var |
| 248 | } |
| 249 | |
| 250 | pub fn u4_add_nibble_stack( |
| 251 | stack: &mut StackTracker, |
no test coverage detected