[llvm-dev] RFC: Extending atomic loads and stores to floating point and vector types
Philip Reames via llvm-dev
llvm-dev at lists.llvm.org
Mon Dec 14 11:44:16 PST 2015
On 12/13/2015 01:03 PM, David Chisnall wrote:
> Hi Philip,
>> On 11 Dec 2015, at 02:22, Philip Reames via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>> Currently, we limit atomic loads and stores to either pointer or integer types. I would like to propose that we extend this to allow both floating point and vector types which meet the other requirements. (i.e. power-of-two multiple of 8 bits, and aligned)
> If you’re adding support for floating point atomics, would it be possible for you to add support for atomic operations on pointers too? Currently, front ends need to bitcast pointers to an integer type which assumes that a corresponding integer type exists (it doesn’t for us) and loses pointerness of the operand in the middle, making life annoying for garbage collection.
Currently, our support for atomics on pointers is mixed. Atomic loads
and stores of pointer types are supported. atomicrmw and cmpxchg
operations on pointers not. I know of no reason for the distinction.
I agree that making the change you're proposing is valuable. If you
want to file a bug and assign it me, I'll likely get to it in the next
couple of weeks. Alternatively, I'd be happy to review patches. :)
More information about the llvm-dev