We were treating certain edge cases that are actually normal as denormal results, and flushing them to zero; we shouldn't do that. Not sure this is the cleanest way to implement this edge case, but I wanted to avoid adding any code on the common path.
(This doesn't touch the behavior for results that are actually denormal; they're still flushed to zero.)