> Sadly, at some point, new hardware makes software tricks obsolete. On x86, said new hardware was the F16C instruction set, which (amongst other things) adds a VCVTPS2PH instruction for converting (a vector of) FP32 to FP16.
"Sadly"? That's subjective, I guess: I personally feel that the less "softfloat" code there is in use around, the better. All this twisted bitshifting/juggling with conditional propagation is pretty well suited for baking into sillicon.