pub fn carry_save_lower(
ops: &[FabricOp],
result: usize,
width: u32,
) -> (Vec<FabricOp>, usize)Expand description
Carry-save lowering of a residual at datapath width width (64 on silicon; narrower so our SAT can check the
lowering exhaustively), each shared sum resolved once (SumSharing::Resolve). Only the values the result depends
on are lowered. Returns the new op list, which holds no Add, Sub or Mul, and the index of its result.
A value resolves to binary when it is the result, is read more than once, or is read by anything but an add or a subtract: a multiply reads its operands bit by bit. Every other additive value is absorbed into its reader’s rows.