Square and invert strategy for the 1×8b AES packing: a direct table lookup on the underlying
byte. Wider AES packings reach this one byte at a time through the
Divide strategy, so no AES arithmetic is ever defined in terms of
(packed) scalar iteration.
Strategy that splits the underlier into SubU-sized lanes, applies the sub-packing
PackedPrimitiveType<SubU, F>’s op to each lane, and recombines — a generic fallback for
packings that lack a specialized full-width Square, InvertOrZero, or WideMul. The
sub-underlier SubU is a PhantomData parameter so the packing type T stays last for the
macro’s Divide<SubU, $name, N> form.
One independent deferred wide product per SubU lane of a Divide widening multiply. Lanes
accumulate (Add/Sub/Sum) and reduce independently, mirroring the packing structure, so a
sum of products is reduced only once per lane. N is the lane count.
Wrapper that defines multiplication as reduce(wide_mul(a, b)), deferring to the type’s own
WideMul impl, making the widening multiply the single source of truth for both Mul and
WideMul. Used by every GHASH and AES packing.