[LLVMdev] Function pointer parameters in PTX backend

Alberto Magni alberto.magni86 at gmail.com
Mon Oct 24 03:24:48 PDT 2011


Hi everybody,

I am trying to produce ptx code starting from OpenCL C.
I am experiencing a problem concerning pointer parameters.
Here follows an example:

kernel void function(__global float* parameter1) {}

NVIDIA NVCC Compiler:

.entry function(
 .param .u32 *.ptr* .global .align 4 function_param_0
)
{
 ret;
}

CLANG + LLVM PTX backend

// (skipping builtin functions definitions)

.entry function (.param .b32 __param_1) // @function
{

// BB#0:                                // %entry
 exit;
}

As you can see the code generated by the LLVM backend lacks the kernel
parameter attribute
.ptr, required to identify pointers [1]. I can understand that the address
space attribute (.global)
is not defined since there is no agreement on how to represent them in the
IR.

The command I use to compile is:
clang kernels/parameters.cl -include ocldef.h -include
builtin_functions_ptx.cl -ccc-host-triple ptx32 -S -o -

where ocldef.h contains the definitions of OpenCL vector data types,
builtin_functions_ptx.cl is the file provided by Justin in a previous
message [2].

Is this a bug? Or the .ptr attribute is just not supported yet ?

Thank you

Alberto

-------------------------

[1] PTX: Parallel Thread Execution ISA Version 2.3, page 30
[2] http://lists.cs.uiuc.edu/pipermail/cfe-dev/2011-October/017699.html
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20111024/b175bbfe/attachment.html>


More information about the llvm-dev mailing list