From 60d9df11c172ecb040ce5ba08087ee4c3fd8e9e6 Mon Sep 17 00:00:00 2001 From: Benoit Steiner Date: Fri, 4 Mar 2016 16:27:02 -0800 Subject: [PATCH] Fixed the computation of leading zeros when compiling with msvc. --- unsupported/Eigen/CXX11/src/Tensor/TensorIntDiv.h | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorIntDiv.h b/unsupported/Eigen/CXX11/src/Tensor/TensorIntDiv.h index 78d6da28a..75567f1ff 100644 --- a/unsupported/Eigen/CXX11/src/Tensor/TensorIntDiv.h +++ b/unsupported/Eigen/CXX11/src/Tensor/TensorIntDiv.h @@ -36,14 +36,7 @@ namespace { #ifdef __CUDA_ARCH__ return (sizeof(T) == 8) ? __clzll(val) : __clz(val); #elif EIGEN_COMP_MSVC - DWORD leading_zeros = 0; - if (sizeof(T) == 8) { - _BitScanReverse64(&leading_zeros, val); - } - else { - _BitScanReverse(&leading_zeros, val); - } - return leading_zeros; + return (sizeof(T) == 8) ? __lzcnt64(val) : __lzcnt(val); #else EIGEN_STATIC_ASSERT(sizeof(unsigned long long) == 8, YOU_MADE_A_PROGRAMMING_MISTAKE); return (sizeof(T) == 8) ?