Author: tra
Date: Wed Dec  6 09:40:35 2017
New Revision: 319908

URL: http://llvm.org/viewvc/llvm-project?rev=319908&view=rev
Log:
[CUDA] Added overloads for '[unsigned] long' variants of shfl builtins.

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

Modified:
    cfe/trunk/lib/Headers/__clang_cuda_intrinsics.h

Modified: cfe/trunk/lib/Headers/__clang_cuda_intrinsics.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/__clang_cuda_intrinsics.h?rev=319908&r1=319907&r2=319908&view=diff
==============================================================================
--- cfe/trunk/lib/Headers/__clang_cuda_intrinsics.h (original)
+++ cfe/trunk/lib/Headers/__clang_cuda_intrinsics.h Wed Dec  6 09:40:35 2017
@@ -135,6 +135,24 @@ __MAKE_SHUFFLES(__shfl_xor, __nvvm_shfl_
     return static_cast<unsigned long long>(::__FnName(                         
\
         __mask, static_cast<unsigned long long>(__val), __offset, __width));   
\
   }                                                                            
\
+  inline __device__ long __FnName(unsigned int __mask, long __val,             
\
+                                  int __offset, int __width = warpSize) {      
\
+    _Static_assert(sizeof(long) == sizeof(long long) ||                        
\
+                   sizeof(long) == sizeof(int));                               
\
+    if (sizeof(long) == sizeof(long long)) {                                   
\
+      return static_cast<long>(::__FnName(                                     
\
+          __mask, static_cast<long long>(__val), __offset, __width));          
\
+    } else if (sizeof(long) == sizeof(int)) {                                  
\
+      return static_cast<long>(                                                
\
+          ::__FnName(__mask, static_cast<int>(__val), __offset, __width));     
\
+    }                                                                          
\
+  }                                                                            
\
+  inline __device__ unsigned long __FnName(unsigned int __mask,                
\
+                                           unsigned long __val, int __offset,  
\
+                                           int __width = warpSize) {           
\
+    return static_cast<unsigned long>(                                         
\
+        ::__FnName(__mask, static_cast<long>(__val), __offset, __width));      
\
+  }                                                                            
\
   inline __device__ double __FnName(unsigned int __mask, double __val,         
\
                                     int __offset, int __width = warpSize) {    
\
     long long __tmp;                                                           
\


_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to