[libclc] r318204 - native_powr: Switch implementation to native_exp2 and native_log2

Jan Vesely via cfe-commits cfe-commits at lists.llvm.org
Tue Nov 14 13:55:42 PST 2017


Author: jvesely
Date: Tue Nov 14 13:55:41 2017
New Revision: 318204

URL: http://llvm.org/viewvc/llvm-project?rev=318204&view=rev
Log:
native_powr: Switch implementation to native_exp2 and native_log2

v2: don't use assume
    check only for x<0, the other conditions are handled transparently
v3: don't check inputs at all, nan propagation works as expected

Reviewer: Jeroen Ketema
Signed-off-by: Jan Vesely <jan.vesely at rutgers.edu>

Added:
    libclc/trunk/generic/lib/math/native_powr.cl
    libclc/trunk/generic/lib/math/native_powr.inc
Modified:
    libclc/trunk/generic/include/clc/math/native_powr.h
    libclc/trunk/generic/lib/SOURCES

Modified: libclc/trunk/generic/include/clc/math/native_powr.h
URL: http://llvm.org/viewvc/llvm-project/libclc/trunk/generic/include/clc/math/native_powr.h?rev=318204&r1=318203&r2=318204&view=diff
==============================================================================
--- libclc/trunk/generic/include/clc/math/native_powr.h (original)
+++ libclc/trunk/generic/include/clc/math/native_powr.h Tue Nov 14 13:55:41 2017
@@ -1 +1,7 @@
-#define native_powr pow
+#define __CLC_BODY <clc/math/binary_decl_tt.inc>
+#define __CLC_FUNCTION native_powr
+
+#include <clc/math/gentype.inc>
+
+#undef __CLC_BODY
+#undef __CLC_FUNCTION

Modified: libclc/trunk/generic/lib/SOURCES
URL: http://llvm.org/viewvc/llvm-project/libclc/trunk/generic/lib/SOURCES?rev=318204&r1=318203&r2=318204&view=diff
==============================================================================
--- libclc/trunk/generic/lib/SOURCES (original)
+++ libclc/trunk/generic/lib/SOURCES Tue Nov 14 13:55:41 2017
@@ -127,6 +127,7 @@ math/native_exp2.cl
 math/native_log.cl
 math/native_log10.cl
 math/native_log2.cl
+math/native_powr.cl
 math/native_recip.cl
 math/native_rsqrt.cl
 math/native_sin.cl

Added: libclc/trunk/generic/lib/math/native_powr.cl
URL: http://llvm.org/viewvc/llvm-project/libclc/trunk/generic/lib/math/native_powr.cl?rev=318204&view=auto
==============================================================================
--- libclc/trunk/generic/lib/math/native_powr.cl (added)
+++ libclc/trunk/generic/lib/math/native_powr.cl Tue Nov 14 13:55:41 2017
@@ -0,0 +1,5 @@
+#include <clc/clc.h>
+
+#define __CLC_BODY <native_powr.inc>
+#define __FLOAT_ONLY
+#include <clc/math/gentype.inc>

Added: libclc/trunk/generic/lib/math/native_powr.inc
URL: http://llvm.org/viewvc/llvm-project/libclc/trunk/generic/lib/math/native_powr.inc?rev=318204&view=auto
==============================================================================
--- libclc/trunk/generic/lib/math/native_powr.inc (added)
+++ libclc/trunk/generic/lib/math/native_powr.inc Tue Nov 14 13:55:41 2017
@@ -0,0 +1,5 @@
+_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE native_powr(__CLC_GENTYPE x, __CLC_GENTYPE y) {
+  // x^y == 2^{log2 x^y} == 2^{y * log2 x}
+  // for x < 0 propagate nan created by log2
+  return native_exp2(y * native_log2(x));
+}




More information about the cfe-commits mailing list