rootn: Use denormal path only

It's OK to either flush to 0 or return denormal result if the device
does not support denormals. See sec 7.2 and 7.5.3 of OCL specs
Use 0.0f explicitly intead of relying on GPU to flush it.
Fixes CTS on carrizo and turks

Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
Acked-by: Aaron Watry <awatry@gmail.com>
Tested-by: Aaron Watry <awatry@gmail.com>
llvm-svn: 332324
GitOrigin-RevId: 58fdb3b09aae005c594ea66bfb85b395d7193636
diff --git a/generic/lib/math/clc_rootn.cl b/generic/lib/math/clc_rootn.cl
index d7ee185..0a2c98d 100644
--- a/generic/lib/math/clc_rootn.cl
+++ b/generic/lib/math/clc_rootn.cl
@@ -170,16 +170,7 @@
     tv = USE_TABLE(exp_tbl_ep, j);
 
     float expylogx = mad(tv.s0, poly, mad(tv.s1, poly, tv.s1)) + tv.s0;
-    float sexpylogx;
-    if (!__clc_fp32_subnormals_supported()) {
-		int explg = ((as_uint(expylogx) & EXPBITS_SP32 >> 23) - 127);
-		m = (23-(m + 149)) == 0 ? 1: m;
-		uint mantissa =  ((as_uint(expylogx) & MANTBITS_SP32)|IMPBIT_SP32) >> (23-(m + 149));
-		sexpylogx = as_float(mantissa);
-    } else {
-		sexpylogx = expylogx * as_float(0x1 << (m + 149));
-    }
-
+    float sexpylogx = __clc_fp32_subnormals_supported() ? expylogx * as_float(0x1 << (m + 149)) : 0.0f;
 
     float texpylogx = as_float(as_int(expylogx) + m2);
     expylogx = m < -125 ? sexpylogx : texpylogx;