HomePhabricator

[NVPTX] Select atomic loads and stores

Description

[NVPTX] Select atomic loads and stores

According to PTX ISA .volatile has the same memory synchronization
semantics as .relaxed.sys, so it can be used to implement monotonic
atomic loads and stores. This is important for OpenMP's atomic
construct where

  • 'read's and 'write's are lowered to atomic loads and stores, and
  • an update of float or double types are lowered into a cmpxchg loop.

(Note that PTX could do better because it has atom.add.f{32,64} but
LLVM's atomicrmw instruction only allows integer types.)

Higher levels of atomicity (like acquire and release) need additional
synchronization properties which were added with PTX ISA 6.0 / sm_70.
So using these instructions still results in an error.

Differential Revision: https://reviews.llvm.org/D50391

Details

Committed
HahnfeldAug 9 2018, 12:45 AM
Differential Revision
D50391: [NVPTX] Select atomic loads and stores
Parents
rL339315: Merging r339303:
Branches
Unknown
Tags
Unknown