[WTF] Add clz32 / clz64 for MSVC
authorutatane.tea@gmail.com <utatane.tea@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 28 May 2018 12:26:05 +0000 (12:26 +0000)
committerutatane.tea@gmail.com <utatane.tea@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 28 May 2018 12:26:05 +0000 (12:26 +0000)
commit29206d9d0abf4c164e7c79e226fd208985db66cc
tree4c8c61cbf52fcc621a9b390accd234db3b3dfb25
parent180634592b6b78aa17a7aed89a1cc5af2c287516
[WTF] Add clz32 / clz64 for MSVC
https://bugs.webkit.org/show_bug.cgi?id=186023

Reviewed by Daniel Bates.

Source/JavaScriptCore:

Move clz32 and clz64 to WTF.

* runtime/MathCommon.h:
(JSC::clz32): Deleted.
(JSC::clz64): Deleted.

Source/WTF:

This patch adds efficient implementations of clz32 and clz64 for MSVC.
While MSVC has _lzcnt intrinsic, it is only valid if the CPU has lzcnt instruction.
Instead of checking cpuid here, we just use _BitScanReverse and _BitScanReverse64.

* wtf/MathExtras.h:
(WTF::clz32):
(WTF::clz64):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@232244 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/runtime/MathCommon.h
Source/WTF/ChangeLog
Source/WTF/wtf/MathExtras.h