[Libclc-dev] [PATCH 01/14] native_log2: Switch to generic native intrinsic inc file

Jan Vesely via Libclc-dev libclc-dev at lists.llvm.org
Thu Nov 9 13:05:22 PST 2017


On Thu, 2017-11-09 at 21:57 +0100, Jeroen Ketema wrote:
> > On 4 Nov 2017, at 00:07, Jan Vesely via Libclc-dev <libclc-dev at lists.llvm.org> wrote:
> > 
> > Signed-off-by: Jan Vesely <jan.vesely at rutgers.edu>
> > ---
> > generic/include/utils.h                             |  9 +++++++++
> > generic/lib/math/native_log2.cl                     |  8 ++------
> > .../{native_log2.inc => native_unary_intrinsic.inc} | 21 +++++++++++++++++++--
> > 3 files changed, 30 insertions(+), 8 deletions(-)
> > create mode 100644 generic/include/utils.h
> > rename generic/lib/math/{native_log2.inc => native_unary_intrinsic.inc} (65%)
> > 
> > diff --git a/generic/include/utils.h b/generic/include/utils.h
> 
> Does placing the file in generic/include mean that it will be copied
> upon installation? If so, why is that necessary?

no, only the include files in generic/include/clc are installed.
I've a cleanup to remove all but function declaration includes from
include/clc on my todo list, but it will take some time.

> 
> > new file mode 100644
> > index 0000000..23f4d34
> > --- /dev/null
> > +++ b/generic/include/utils.h
> > @@ -0,0 +1,9 @@
> > +
> > +#ifndef __CLC_UTILS_H_
> > +#define __CLC_UTILS_H_
> > +
> > +#define __CLC_CONCAT(x, y) x ## y
> > +#define __CLC_STR(x) #x
> > +#define __CLC_XSTR(x) __CLC_STR(x)
> > +
> > +#endif
> > diff --git a/generic/lib/math/native_log2.cl b/generic/lib/math/native_log2.cl
> > index 35ed18b..b610423 100644
> > --- a/generic/lib/math/native_log2.cl
> > +++ b/generic/lib/math/native_log2.cl
> > @@ -22,11 +22,7 @@
> > 
> > #include <clc/clc.h>
> > 
> > -#define __CLC_FUNCTION __clc_native_log2
> > -#define __CLC_INTRINSIC "llvm.log2"
> > -#undef cl_khr_fp64
> > -#include <clc/math/unary_intrin.inc>
> > -
> > -#define __CLC_BODY <native_log2.inc>
> > +#define __CLC_NATIVE_INTRINSIC log2
> > +#define __CLC_BODY <native_unary_intrinsic.inc>
> > #define __FLOAT_ONLY
> > #include <clc/math/gentype.inc>
> > diff --git a/generic/lib/math/native_log2.inc b/generic/lib/math/native_unary_intrinsic.inc
> > similarity index 65%
> > rename from generic/lib/math/native_log2.inc
> > rename to generic/lib/math/native_unary_intrinsic.inc
> > index 0f6a509..048da8a 100644
> > --- a/generic/lib/math/native_log2.inc
> > +++ b/generic/lib/math/native_unary_intrinsic.inc
> > @@ -20,6 +20,23 @@
> >  * THE SOFTWARE.
> >  */
> > 
> > -_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE native_log2(__CLC_GENTYPE val) {
> > -  return __clc_native_log2(val);
> > +#include <utils.h>
> > +
> > +#ifdef __CLC_SCALAR
> > +#define __CLC_FUNCTION __CLC_CONCAT(__clc_native, __CLC_NATIVE_INTRINSIC)
> > +#define __CLC_INTRINSIC "llvm." __CLC_XSTR(__CLC_NATIVE_INTRINSIC)
> > +
> > +#undef cl_khr_fp64
> > +#include <clc/math/unary_intrin.inc>
> > +
> > +#endif
> > +
> > +// For some reason this requires double redirection
> 
> This comment is not very helpful, and is for the same reason you need
> __CLC_XSTR. I would just get rid of the comment.

right, removed locally.

thanks,
Jan

> 
> Jeroen
> 
> > +#define __CLC_FUNCTION2(x) __CLC_CONCAT(native_, x)
> > +#define __CLC_FUNCTION __CLC_FUNCTION2(__CLC_NATIVE_INTRINSIC)
> > +
> > +_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE __CLC_FUNCTION(__CLC_GENTYPE val) {
> > +  return __CLC_CONCAT(__clc_native, __CLC_NATIVE_INTRINSIC)(val);
> > }
> > +#undef __CLC_FUNCTION2
> > +#undef __CLC_FUNCTION
> > -- 
> > 2.13.6
> > 
> > _______________________________________________
> > Libclc-dev mailing list
> > Libclc-dev at lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/libclc-dev
> 
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part
URL: <http://lists.llvm.org/pipermail/libclc-dev/attachments/20171109/4ac1ba3c/attachment.sig>


More information about the Libclc-dev mailing list