[llvm] r194760 - Add addrspacecast instruction.

Michele Scandale michele.scandale at gmail.com
Thu Nov 21 06:27:32 PST 2013


On 11/18/2013 10:18 PM, Michele Scandale wrote:
> On 11/18/2013 07:29 PM, Jeroen Ketema wrote:
>>
>> Hi Michele,
>>
>> I'm currently on 195003.
>>
>> I'm compiling the OpenCL code with:
>>
>> lvm-build/Debug+Asserts/bin/clang -target nvptx--nvidiacl -emit-llvm -c 
>> kernel.cl
>>
>> (and similarly for the CUDA code)
>>
>> Slightly simpler CUDA example:
>>
>> __global__ void foo() {
>>    __shared__ int A[10];
>>    int* p = A;
>>    p[0] = 0;
>> }
>>
>> Slightly simpler OpenCL example:
>>
>> #define NULL ((void*)0)
>> __kernel void foo(int i, __global int *A)
>> {
>>    __global int *a;
>>
>>    if (i == 0)
>>      a = A;
>>    else
>>      a = NULL;
>>
>>    if (a != NULL)
>>      A[0] = 0;
>> }
>>
>> Note the definition of NULL is as in libclc (llvm related project).
>>
> 
> Thanks, it was the definition of NULL that I was using the prevent me to
> reproduce the problem. From a quick look, is a problem related to clang: now
> bitcast changed semantic and so clang must be updated in order to match the new
> semantic. A quick workaround seems to solve the problem, but I think that a
> better solution would be to introduce a new CastKind in clang in order to track
> address space conversion during semantic analysis, in order to drive nicely the
> code generation.
> Till tomorrow I wont able to work on this.
> 
> -Michele
> 

Here I prepared a possible fix: http://llvm-reviews.chandlerc.com/D2241

-Michele



More information about the llvm-commits mailing list