Sorry, this is a language problem:
By punt I didn't mean "give up" but "accept big performance hit".
In my performance-sensitive code (i.e. most of it) "to punt" would mean giving up on providing a fast (i.e. useful) path, and fall back on something slow that does work.
BitScan() isn't really needed at this particular point, a small lookup table is enough to handle the leading 754R exponent bits.
For normalization it is very useful though!
There is a canonical way to represent most/all results, but you have to support all possible encodings of decimal fp numbers.
This sucks, but only sort of: It seems to make it easier to support significance arithmetic.
DPD is fun, there are actually two different ways to solve the DPD problem (encoding 1000 decimal values using 10 bits, without requiring any expensive hw operation on either packing or unpacking).
I think it was one of the IBM guys (Hack?) who challenged me to figure out the encoding, and I came up with the alternate approach. The one they did choose has the advantage of needing smaller tables for a sw pack/unpack routine.
Terje