[LLVMdev] addrspace attribute and intrisics
Benedict Gaster
benedict.gaster at amd.com
Mon Jul 7 06:36:25 PDT 2008
Thanks, I can now see that this can be implemented with Verifier.cpp.
Even with this ability It is unclear that defining llvm.memory.barrier
with an explicit address space argument is preferred over the
llvm.memory.fence definition where the addrspace is encoded as part of
the type as will be the case with the other atomic operations. What do
you think?
Ben
On 7 Jul 2008, at 13:43, Gordon Henriksen wrote:
> On 2008-07-07, at 05:40, Benedict Gaster wrote:
>
>> %r1 = call i32 @llvm.atomic.load.add.p0i32( i32 addrspace(0)*
>> %ptr0, i32 4)
>> %r2 = call i32 @llvm.atomic.load.add.p11i32( i32 addrspace(11)*
>> %ptr11, i32 4)
>> call void @llvm.memory.barrier(i1 true, i1 true, i1 false, i1 false,
>> i32 11, i1 false) ; force read-modify-write %ptr11 to complete
>>
>> A problem with this approach is that developing a new pass over the
>> IL that works with address spaces, will have to include knowledge
>> that for certain operations address space information is encoded as
>> data rather than as types and in general, it may not be able to
>> statically determine the particular address space.
>
> It's quite possible to restrict an argument to an intrinsic to an
> immediate constant. See llvm.gcroot for an example.
>
> — Gordon
>
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
More information about the llvm-dev
mailing list