diff --git a/src/bitlog.hpp b/src/bitlog.hpp
index 5d2e398b02f2d774a247f2f3b774b38a6d6a7f3f..c002fc39111927da8f12e5666bb966e2fbddf89b 100644
--- a/src/bitlog.hpp
+++ b/src/bitlog.hpp
@@ -55,6 +55,15 @@ namespace pyopencl
       return bitlog2_16(v);
   }
 
+#if defined(UINT64_MAX)
+  inline unsigned bitlog2(uint64_t v)
+  {
+    if (uint32_t t = v >> 32)
+      return 32+bitlog2_32(t);
+    else
+      return bitlog2_32(v);
+  }
+#else
   inline unsigned bitlog2(unsigned long v)
   {
 #if (ULONG_MAX != 4294967295)
@@ -64,6 +73,7 @@ namespace pyopencl
 #endif
       return bitlog2_32(v);
   }
+#endif
 }