Clang OpenCL errors and warnings

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Clang OpenCL errors and warnings

Fangrui Song via cfe-dev
Hello everyone,

I am using Clang 11 for an OpenCL-SPIRV project.

When I try to convert some OpenCL programs into bytecode, I receive the following error message in some of them:
'../Programs/kernels/longest/longest_0038.cl:19:5: error: use of type 'double' requires cl_khr_fp64 extension to be enabled
    double const t = 2 * (h + 2);'

Also, I receive some warnings like:
'../Programs/kernels/longest/longest_0038.cl:28:19: warning: incompatible pointer to integer conversion initializing 'const __private int' with an expression of type '__global int *' [-Wint-conversion]
        const int v = a + f * 2 + l % v;'

This OpenCL codes are automatically generated by a tool called "clgen" from github, that I am using as my OpenCL source code database.

This errors and warnings are given because the code is not well written or because I need to use more flags in my clang command?

I use  this command to convert OpenCL programs into bytecode:
'clang -cc1 -triple spir64 -emit-llvm-bc -finclude-default-header -cl-single-precision-constant -disable-llvm-passes INPUT.cl -o INPUT.bc'

Thanks in advance.

_______________________________________________
cfe-dev mailing list
[hidden email]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
Reply | Threaded
Open this post in threaded view
|

Re: Clang OpenCL errors and warnings

Fangrui Song via cfe-dev

Hi Enrique,

 

First error is occurred because default OpenCL C version is 1.0 (or 1.1) and it doesn’t support double precision floating point types. If the target hardware supports doubles, the error can be fixed by either enable `cl_khr_fp64` extension support (-cl-ext=-cl_khr_fp64) or by setting OpenCL C version to 1.2 (-cl-std=CL1.2).

 

'../Programs/kernels/longest/longest_0038.cl:28:19: warning: incompatible pointer to integer conversion initializing 'const __private int' with an expression of type '__global int *' [-Wint-conversion]
        const int v = a + f * 2 + l % v;'

 

This warning says that “a + f * 2 + l %v;” expression has `__global int *` type i.e. global address space pointer and assigning it to integer value is not safe. This looks like a bug in the code. One of the variables in the expression (`a`?) is a pointer, which probably should be dereferenced (*a or a[id]).

 

Also, I would use the driver to compile OpenCL code (i.e. invoke clang without `-cc1` option) if you don’t have reasons to use the front-end.

User’s Manual covers most of the OpenCL options: https://clang.llvm.org/docs/UsersManual.html#opencl-features.

 

Thanks,

Alexey

 

From: cfe-dev <[hidden email]> On Behalf Of Enrique Gonzalez via cfe-dev
Sent: Tuesday, May 12, 2020 2:41 PM
To: [hidden email]
Subject: [cfe-dev] Clang OpenCL errors and warnings

 

Hello everyone,

 

I am using Clang 11 for an OpenCL-SPIRV project.

 

When I try to convert some OpenCL programs into bytecode, I receive the following error message in some of them:

'../Programs/kernels/longest/longest_0038.cl:19:5: error: use of type 'double' requires cl_khr_fp64 extension to be enabled
    double const t = 2 * (h + 2);'

 

Also, I receive some warnings like:

'../Programs/kernels/longest/longest_0038.cl:28:19: warning: incompatible pointer to integer conversion initializing 'const __private int' with an expression of type '__global int *' [-Wint-conversion]
        const int v = a + f * 2 + l % v;'

 

This OpenCL codes are automatically generated by a tool called "clgen" from github, that I am using as my OpenCL source code database.

 

This errors and warnings are given because the code is not well written or because I need to use more flags in my clang command?

 

I use  this command to convert OpenCL programs into bytecode:

'clang -cc1 -triple spir64 -emit-llvm-bc -finclude-default-header -cl-single-precision-constant -disable-llvm-passes INPUT.cl -o INPUT.bc'

 

Thanks in advance.


_______________________________________________
cfe-dev mailing list
[hidden email]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev