[PATCH] D12487: [CUDA] fix codegen for __nvvm_atom_min/max_gen_u*

Jingyue Wu via llvm-commits llvm-commits at lists.llvm.org
Sun Aug 30 16:44:28 PDT 2015


jingyue updated this revision to Diff 33552.
jingyue added a comment.

use existing tests


http://reviews.llvm.org/D12487

Files:
  lib/CodeGen/CGBuiltin.cpp
  test/CodeGen/builtins-nvptx.c

Index: test/CodeGen/builtins-nvptx.c
===================================================================
--- test/CodeGen/builtins-nvptx.c
+++ test/CodeGen/builtins-nvptx.c
@@ -234,30 +234,30 @@
   // CHECK: atomicrmw xchg
   __nvvm_atom_xchg_gen_ll(&sll, ll);
 
-  // CHECK: atomicrmw max
+  // CHECK: atomicrmw max i32*
   __nvvm_atom_max_gen_i(ip, i);
-  // CHECK: atomicrmw max
+  // CHECK: atomicrmw umax i32*
   __nvvm_atom_max_gen_ui((unsigned int *)ip, i);
   // CHECK: atomicrmw max
   __nvvm_atom_max_gen_l(&dl, l);
-  // CHECK: atomicrmw max
+  // CHECK: atomicrmw umax
   __nvvm_atom_max_gen_ul((unsigned long *)&dl, l);
-  // CHECK: atomicrmw max
+  // CHECK: atomicrmw max i64*
   __nvvm_atom_max_gen_ll(&sll, ll);
-  // CHECK: atomicrmw max
+  // CHECK: atomicrmw umax i64*
   __nvvm_atom_max_gen_ull((unsigned long long *)&sll, ll);
 
-  // CHECK: atomicrmw min
+  // CHECK: atomicrmw min i32*
   __nvvm_atom_min_gen_i(ip, i);
-  // CHECK: atomicrmw min
+  // CHECK: atomicrmw umin i32*
   __nvvm_atom_min_gen_ui((unsigned int *)ip, i);
   // CHECK: atomicrmw min
   __nvvm_atom_min_gen_l(&dl, l);
-  // CHECK: atomicrmw min
+  // CHECK: atomicrmw umin
   __nvvm_atom_min_gen_ul((unsigned long *)&dl, l);
-  // CHECK: atomicrmw min
+  // CHECK: atomicrmw min i64*
   __nvvm_atom_min_gen_ll(&sll, ll);
-  // CHECK: atomicrmw min
+  // CHECK: atomicrmw umin i64*
   __nvvm_atom_min_gen_ull((unsigned long long *)&sll, ll);
 
   // CHECK: cmpxchg
Index: lib/CodeGen/CGBuiltin.cpp
===================================================================
--- lib/CodeGen/CGBuiltin.cpp
+++ lib/CodeGen/CGBuiltin.cpp
@@ -7024,18 +7024,22 @@
   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:


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D12487.33552.patch
Type: text/x-patch
Size: 2651 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150830/9c250450/attachment.bin>


More information about the llvm-commits mailing list