Skip to content

v0.49.0

@meheff meheff tagged this 18 May 21:08
Adds `ext_normalize_left`, an extension op for the common normalization
cone:
```
shll(zero_ext(x), clz(x) + offset)
```

The op zero-extends `x` to a requested normalized width, shifts it left
by`clz(x) + shift_offset`, and can optionally return the raw `clz(x)`
value alongside the normalized bits as `(normalized, clz)`. This
captures the FP normalization pattern more directly.

The big win here is that the shift amount (clz result) does not need to
be materialized, and instead the logic of the clz can direction feed the
shift: one shift position per leading zero.

Prep for gatify matches this pattern and does the conversion.

Also generalize `ext_clz` with explicit output width and constant offset
support.

Improves fp add/sub designs by a few percent or more on delay and area.
Assets 2
Loading