[CUDA] Implemented __nvvm_atom_*_gen_* builtins.
authorArtem Belevich <tra@google.com>
Thu, 25 Jun 2015 18:29:42 +0000 (18:29 +0000)
committerArtem Belevich <tra@google.com>
Thu, 25 Jun 2015 18:29:42 +0000 (18:29 +0000)
commitd21e5c6684642a4e17b0f6d7802d55b0a32c5837
tree1e9d7b4d9651e59bb3c2ae1819a1ae6d67743b66
parent4b4a58ada4c6b4bf651c2fa0a04736498d84abcc
[CUDA] Implemented __nvvm_atom_*_gen_* builtins.

Integer variants are implemented as atomicrmw or cmpxchg instructions.
Atomic add for floating point (__nvvm_atom_add_gen_f()) is implemented
as a call to an overloaded @llvm.nvvm.atomic.load.add.f32.* LVVM
intrinsic.

Differential Revision: http://reviews.llvm.org/D10666

llvm-svn: 240669
clang/lib/CodeGen/CGBuiltin.cpp
clang/lib/CodeGen/CodeGenFunction.h
clang/test/CodeGen/builtins-nvptx.c