diff options
author | Jingyue Wu <jingyue@google.com> | 2015-08-31 17:25:51 +0000 |
---|---|---|
committer | Jingyue Wu <jingyue@google.com> | 2015-08-31 17:25:51 +0000 |
commit | 2d69f9608e53a39d5b78a798cbf668e0b9867fe0 (patch) | |
tree | f2dcd3cd72a6fa20f807f4341487dc309364ddd0 /clang/lib/CodeGen | |
parent | 4814b9c93a13d0480f2839c2b8a049c4708e46d8 (diff) | |
download | bcm5719-llvm-2d69f9608e53a39d5b78a798cbf668e0b9867fe0.tar.gz bcm5719-llvm-2d69f9608e53a39d5b78a798cbf668e0b9867fe0.zip |
[CUDA] fix codegen for __nvvm_atom_min/max_gen_u*
Summary: Clang should emit "atomicrmw umin/umax" instead of "atomicrmw min/max".
Reviewers: eliben, tra
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D12487
llvm-svn: 246455
Diffstat (limited to 'clang/lib/CodeGen')
-rw-r--r-- | clang/lib/CodeGen/CGBuiltin.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp index 955dcfc96ca..6966b03ef3b 100644 --- a/clang/lib/CodeGen/CGBuiltin.cpp +++ b/clang/lib/CodeGen/CGBuiltin.cpp @@ -6985,18 +6985,22 @@ Value *CodeGenFunction::EmitNVPTXBuiltinExpr(unsigned BuiltinID, case NVPTX::BI__nvvm_atom_max_gen_i: case NVPTX::BI__nvvm_atom_max_gen_l: case NVPTX::BI__nvvm_atom_max_gen_ll: + return MakeBinaryAtomicValue(*this, llvm::AtomicRMWInst::Max, E); + case NVPTX::BI__nvvm_atom_max_gen_ui: case NVPTX::BI__nvvm_atom_max_gen_ul: case NVPTX::BI__nvvm_atom_max_gen_ull: - return MakeBinaryAtomicValue(*this, llvm::AtomicRMWInst::Max, E); + return MakeBinaryAtomicValue(*this, llvm::AtomicRMWInst::UMax, E); case NVPTX::BI__nvvm_atom_min_gen_i: case NVPTX::BI__nvvm_atom_min_gen_l: case NVPTX::BI__nvvm_atom_min_gen_ll: + return MakeBinaryAtomicValue(*this, llvm::AtomicRMWInst::Min, E); + case NVPTX::BI__nvvm_atom_min_gen_ui: case NVPTX::BI__nvvm_atom_min_gen_ul: case NVPTX::BI__nvvm_atom_min_gen_ull: - return MakeBinaryAtomicValue(*this, llvm::AtomicRMWInst::Min, E); + return MakeBinaryAtomicValue(*this, llvm::AtomicRMWInst::UMin, E); case NVPTX::BI__nvvm_atom_cas_gen_i: case NVPTX::BI__nvvm_atom_cas_gen_l: |