Pádraig Brady wrote:

Gisle, how does this this version work for you?
http://git.sv.gnu.org/gitweb/?p=gnulib.git;a=blob_plain;f=lib/count-leading-zeros.h;h=5904eb7f

Compiling that, results in some warnings:
  count-leading-zeros.h(42) : warning C4083: expected '('; found identifier 
'_BitScanReverse'
  count-leading-zeros.h(43) : warning C4083: expected '('; found identifier 
'_BitScanReverse64'

diff on diff:

--- count-leading-zeros.h.git   2015-01-06 19:16:49 +0000
+++ count-leading-zeros.h       2015-01-06 19:14:19 +0000
@@ -39,8 +39,8 @@
 # define COUNT_LEADING_ZEROS(BUILTIN, MSC_BUILTIN, TYPE)                \
   return x ? BUILTIN (x) : CHAR_BIT * sizeof x;
 #elif _MSC_VER
-# pragma intrinsic _BitScanReverse
-# pragma intrinsic _BitScanReverse64
+# pragma intrinsic (_BitScanReverse)
+# pragma intrinsic (_BitScanReverse64)
 # define COUNT_LEADING_ZEROS(BUILTIN, MSC_BUILTIN, TYPE)                \
     do                                                                  \
       {                                                                 \


But MSVC v16 still warns:
  count-leading-zeros.h(43) : warning C4163: '_BitScanReverse64' :
  not available as an intrinsic function

And the dis-asm of test-leading-zeros.obj still has:

_count_leading_zeros_ll:
        push            ebp
        mov             ebp,esp
        sub             esp,0x00000008
X$72:
        mov             eax,dword ptr 0xc[ebp]
        push            eax
        mov             ecx,dword ptr 0x8[ebp]
        push            ecx
        lea             edx,-0x4[ebp]
        push            edx
        call            j^__BitScanReverse64


According to:
  http://msdn.microsoft.com/en-us/library/fbxyd7zd.aspx

the requirement for '_BitScanReverse64' is ARM, x64. I.e. not x86.

--
--gv

Reply via email to