From f58dee9f3a5773dfebcd60df60781c12def0f718 Mon Sep 17 00:00:00 2001 From: Jan Vesely Date: Fri, 10 Nov 2017 22:16:15 +0000 Subject: [PATCH] native_log2: Switch to generic native intrinsic inc file v2: Add __CLC_XCONCAT instead of function name redirection Use __CLC_XCONCAT for intrinsic functions as well Reviewer: Jeroen Ketema Signed-off-by: Jan Vesely llvm-svn: 317932 --- libclc/generic/include/utils.h | 10 ++++++++++ libclc/generic/lib/math/native_log2.cl | 8 ++------ .../{native_log2.inc => native_unary_intrinsic.inc} | 19 +++++++++++++++++-- 3 files changed, 29 insertions(+), 8 deletions(-) create mode 100644 libclc/generic/include/utils.h rename libclc/generic/lib/math/{native_log2.inc => native_unary_intrinsic.inc} (70%) diff --git a/libclc/generic/include/utils.h b/libclc/generic/include/utils.h new file mode 100644 index 0000000..018a7b3 --- /dev/null +++ b/libclc/generic/include/utils.h @@ -0,0 +1,10 @@ +#ifndef __CLC_UTILS_H_ +#define __CLC_UTILS_H_ + +#define __CLC_CONCAT(x, y) x ## y +#define __CLC_XCONCAT(x, y) __CLC_CONCAT(x, y) + +#define __CLC_STR(x) #x +#define __CLC_XSTR(x) __CLC_STR(x) + +#endif diff --git a/libclc/generic/lib/math/native_log2.cl b/libclc/generic/lib/math/native_log2.cl index 35ed18b..b610423 100644 --- a/libclc/generic/lib/math/native_log2.cl +++ b/libclc/generic/lib/math/native_log2.cl @@ -22,11 +22,7 @@ #include -#define __CLC_FUNCTION __clc_native_log2 -#define __CLC_INTRINSIC "llvm.log2" -#undef cl_khr_fp64 -#include - -#define __CLC_BODY +#define __CLC_NATIVE_INTRINSIC log2 +#define __CLC_BODY #define __FLOAT_ONLY #include diff --git a/libclc/generic/lib/math/native_log2.inc b/libclc/generic/lib/math/native_unary_intrinsic.inc similarity index 70% rename from libclc/generic/lib/math/native_log2.inc rename to libclc/generic/lib/math/native_unary_intrinsic.inc index 0f6a509..dbea288 100644 --- a/libclc/generic/lib/math/native_log2.inc +++ b/libclc/generic/lib/math/native_unary_intrinsic.inc @@ -20,6 +20,21 @@ * THE SOFTWARE. */ -_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE native_log2(__CLC_GENTYPE val) { - return __clc_native_log2(val); +#include + +#ifdef __CLC_SCALAR +#define __CLC_FUNCTION __CLC_XCONCAT(__clc_native_, __CLC_NATIVE_INTRINSIC) +#define __CLC_INTRINSIC "llvm." __CLC_XSTR(__CLC_NATIVE_INTRINSIC) + +#undef cl_khr_fp64 +#include + +#endif + +#define __CLC_FUNCTION __CLC_XCONCAT(native_, __CLC_NATIVE_INTRINSIC) + +_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE __CLC_FUNCTION(__CLC_GENTYPE val) { + return __CLC_XCONCAT(__clc_native_, __CLC_NATIVE_INTRINSIC)(val); } + +#undef __CLC_FUNCTION -- 2.7.4