PATCH: re-enable OpenCL extensions
Liu, Yaxun (Sam) via cfe-commits
cfe-commits at lists.llvm.org
Thu Jan 19 13:43:26 PST 2017
I think the supported extensions for a target should be as accurate as possible, for it to be useful. Setting all extensions to be supported on all targets will defeat its purpose.
I recommend to introduce "pocl" as an environment in the triple and add supported OpenCL extensions for different targets based on that.
From: Anastasia Stulova [mailto:Anastasia.Stulova at arm.com]
Sent: Thursday, January 19, 2017 12:31 PM
To: Kalle Raiskila <kraiskil at iki.fi>
Cc: cfe-commits at lists.llvm.org; Liu, Yaxun (Sam) <Yaxun.Liu at amd.com>; nd <nd at arm.com>
Subject: RE: PATCH: re-enable OpenCL extensions
As mentioned on cfe-dev as well, although it doesn't seem too critical it is generally not logical to enable all extensions by default because most of the targets don't even support OpenCL. But I understand your situation with using x86 or ARM backends in a generic way. Do you think this can be solved instead with the new " -cl-ext=" option: http://clang.llvm.org/docs/UsersManual.html#opencl-specific-options
May be Sam could comment more since he has done most work with the extensions lately.
From: cfe-commits [mailto:cfe-commits-bounces at lists.llvm.org] On Behalf Of Kalle Raiskila via cfe-commits
Sent: 19 January 2017 08:03
To: cfe-commits at lists.llvm.org
Subject: PATCH: re-enable OpenCL extensions
I noticed a change from clang 3.8 to 3.9, that it disabled all OpenCL extension pragmas per default.
This broke pocl on e.g. ARM for LLVM 3.9 (https://github.com/pocl/pocl/issues/409).
$ echo "#pragma OPENCL EXTENSION cl_khr_icd: enable" > hello.cl $ clang -emit-llvm -x cl -o tmp.bc -c hello.cl
works fine, but:
$ clang -emit-llvm -x cl -o tmp.bc -c hello.cl --target=armv7-unknown-linux-gnueabihf
hello.cl:1:26: warning: unsupported OpenCL extension 'cl_khr_icd' - ignoring [-Wignored-pragmas] #pragma OPENCL EXTENSION cl_khr_icd: enable
1 warning generated.
Attached is a patch that enables OpenCL extensions for all targets per default, and then sets the status quo of supported extensions for those targets that currently customize their settings (i.e.
NVPTX and AMDGPU).
Most generic CPUs can handle all OpenCL extensions just fine.
Please keep me as CC, I am not subscribed to the list.
More information about the cfe-commits