[libclc] r331433 - math: Add helper function to flush denormals if not supported.
Jan Vesely via cfe-commits
cfe-commits at lists.llvm.org
Wed May 2 22:44:22 PDT 2018
Author: jvesely
Date: Wed May 2 22:44:22 2018
New Revision: 331433
URL: http://llvm.org/viewvc/llvm-project?rev=331433&view=rev
Log:
math: Add helper function to flush denormals if not supported.
Signed-off-by: Jan Vesely <jan.vesely at rutgers.edu>
Reviewer: Aaron Watry <awatry at gmail.com>
Modified:
libclc/trunk/generic/lib/math/math.h
Modified: libclc/trunk/generic/lib/math/math.h
URL: http://llvm.org/viewvc/llvm-project/libclc/trunk/generic/lib/math/math.h?rev=331433&r1=331432&r2=331433&view=diff
==============================================================================
--- libclc/trunk/generic/lib/math/math.h (original)
+++ libclc/trunk/generic/lib/math/math.h Wed May 2 22:44:22 2018
@@ -20,6 +20,13 @@
* THE SOFTWARE.
*/
+#ifndef __CLC_MATH_H_
+#define __CLC_MATH_H_
+
+#include "clc/clcfunc.h"
+#include "clc/as_type.h"
+#include "config.h"
+
#define SNAN 0x001
#define QNAN 0x002
#define NINF 0x004
@@ -66,6 +73,17 @@
#define MANTLENGTH_SP32 24
#define BASEDIGITS_SP32 7
+_CLC_OVERLOAD _CLC_INLINE float __clc_flush_denormal_if_not_supported(float x)
+{
+ int ix = as_int(x);
+ if (!__clc_fp32_subnormals_supported() &&
+ ((ix & EXPBITS_SP32) == 0) && ((ix & MANTBITS_SP32) != 0)) {
+ ix &= SIGNBIT_SP32;
+ x = as_float(ix);
+ }
+ return x;
+}
+
#ifdef cl_khr_fp64
#define SIGNBIT_DP64 0x8000000000000000L
@@ -93,3 +111,4 @@
#endif // cl_khr_fp64
#define ALIGNED(x) __attribute__((aligned(x)))
+#endif // __CLC_MATH_H_
More information about the cfe-commits
mailing list