[cfe-dev] Creating a builtin with address spaces for OpenCL fails
Boris Boesler
baembel at gmx.de
Mon Feb 2 06:48:40 PST 2015
Hi!
I'm developing a back end for a new target foobar with CLang/LLVM (version 3.4.2). At the current stage I want to create a builtin that accesses some OpenCL local memory.
In cfe-3.4.2.src/lib/Basic/Targets.cpp I define the following address space map:
static const unsigned FoobarAddrSpaceMap[] = {
1, // opencl_global
2, // opencl_local
3, // opencl_constant
0, // cuda_device
0, // cuda_constant
0 // cuda_shared
};
and set the attributes in the target info.
I've added the file cfe-3.4.2.src/include/clang/Basic/BuiltinsFooBar.def:
BUILTIN(__builtin_foobar_copy, "iV8Uc*2V8Uc*i", "") /* first arg reads from address space 2: opencl local */
But when I use the builtin:
__local uchar8 inbuf[SIZE];
int res = __builtin_foobar_copy(inbuf, ...
I get the error message:
foorbar_test.cl:90:47: error: passing '__local uchar8 *' to parameter of type
'__attribute__((__vector_size__(8 * sizeof(unsigned char)))) unsigned char
__attribute__((address_space(2))) *' changes address space of pointer
What is it that I am doing wrong? Even if I replace address space number 2 by any other number I get this error message.
I use the options "-x cl -Dcl_clang_storage_class_specifiers".
Any hints?
Thanks,
Boris
More information about the cfe-dev
mailing list