[libomptarget][nvptx] Bug fix: Correctly identify the warp master active thread.
authorGeorge Rokos <grokos@us.ibm.com>
Wed, 14 Mar 2018 19:11:36 +0000 (19:11 +0000)
committerGeorge Rokos <grokos@us.ibm.com>
Wed, 14 Mar 2018 19:11:36 +0000 (19:11 +0000)
llvm-svn: 327556

openmp/libomptarget/deviceRTLs/nvptx/src/data_sharing.cu

index e2a38e3..cd73a6b 100644 (file)
@@ -37,7 +37,8 @@ __device__ static bool IsWarpMasterActiveThread() {
   unsigned long long Mask = getActiveThreadsMask();
   unsigned long long ShNum = WARPSIZE - (getThreadId() % WARPSIZE);
   unsigned long long Sh = Mask << ShNum;
-  return Sh == 0;
+  // Truncate Sh to the 32 lower bits
+  return (unsigned)Sh == 0;
 }
 // Return true if this is the master thread.
 __device__ static bool IsMasterThread() {