[LLVMdev] llvm atomics on 64-bit values

Zachary Turner zturner at google.com
Tue Jun 3 12:45:17 PDT 2014


I need an atomic pointer exchange, so I took a look at Support/Atomic.h,
and the only supported types are 32-bit values.  I can't figure out an
obvious reason for this other than perhaps nobody ever had need of this
yet, but given that this is kind of a low level thing, I thought I should
ask first.  Is there any reason I should not add 64-bit versions of the
atomic functions?

Additionally, the function I need looks like __sync_test_and_set() on GNU,
for which the documentation has this to say:

Many targets have only minimal support for such locks, and do not support a
full exchange operation. In this case, a target may support reduced
functionality here by which the *only* valid value to store is the
immediate constant 1. The exact value actually stored in *ptr is
implementation defined.

Does anyone happen to know the details here?  Is this true on any platform
we support?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140603/a2411534/attachment.html>


More information about the llvm-dev mailing list