For now, we will hardcode the result as 0.0 if the input is denormal or 0. That will have the impact the precision. As the fsqrt added belong to the cold path of the cmp+branch, it won't impact the performance for normal inputs for PowerPC. Besides, it removes the xxlxor of the hot path.
clang without this patch sqrt(2.2250738585072014e-308) = 1.4916681462400413e-154 sqrt(2.2250738585072009e-308) = 0 sqrt(4.9406564584124654e-324) = 0 With this patch: sqrt(2.2250738585072014e-308) = 1.4916681462400413e-154 sqrt(2.2250738585072009e-308) = 1.4916681462400412e-154 sqrt(4.9406564584124654e-324) = 2.2227587494850775e-162
Can we have this default to:
and save some code in the calling function?