[llvm-dev] [RFC] Allow allocas to produce a non-0 address space pointer

Hal Finkel via llvm-dev llvm-dev at lists.llvm.org
Thu Mar 16 12:41:08 PDT 2017


On 03/16/2017 01:54 PM, Friedman, Eli via llvm-dev wrote:
> On 3/16/2017 10:51 AM, Arsenault, Matthew via llvm-dev wrote:
>>
>> LLVM makes several assumptions about address space 0. However,
>>
>> alloca is presently constrained to always return this address space.
>>
>> There's no real way to avoid using alloca, so without this
>>
>> there is no way to opt out of these assumptions.
>>
>>
>> The problematic assumptions include:
>>
>>   * That the pointer size used for the stack is the same size as the
>>     code size pointer, which is also the maximum sized pointer.
>>   * That 0 is an invalid, non-dereferencable pointer value.
>>
>> These are problems for AMDGPU because alloca is used to implement the 
>> private address space, which uses a 32-bit index as the pointer 
>> value. Other pointers are 64-bit and behave more like LLVM's notion 
>> of generic address space. By changing the address space used for 
>> allocas, we can change our generic pointer type to be LLVM's generic 
>> pointer type which does have similar properties.
>>
>> The proposal here is to add a -A field to the datalayout string which 
>> will specify the address space for allocas. IRBuilder::CreateAlloca 
>> and company gain a DataLayout argument, and some intrinsics that 
>> currently don't support address spaces need to support them.
>>
>
> I think we should also include the address-space of each alloca 
> explicitly in textual IR.  Having the type depend on the datalayout 
> would be confusing, because you'd need to look at the datalayout to 
> figure out which address-space the alloca in a snippet of IR uses.

Are we talking about this syntax?

   %i = alloca f32, align 4, addrspace 5

  -Hal

>
> Otherwise, this seems fine.
>
> -Eli
>
> -- 
> Employee of Qualcomm Innovation Center, Inc.
> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev

-- 
Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170316/cf4919c5/attachment.html>


More information about the llvm-dev mailing list