<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>186023</bug_id>
          
          <creation_ts>2018-05-27 11:53:30 -0700</creation_ts>
          <short_desc>[WTF] Add clz32 / clz64 for MSVC</short_desc>
          <delta_ts>2018-05-29 10:56:52 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1427830</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-27 11:53:30 -0700</bug_when>
    <thetext>[WTF] Add clz32 / clz64 for MSVC</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427831</commentid>
    <comment_count>1</comment_count>
      <attachid>341428</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-27 11:55:05 -0700</bug_when>
    <thetext>Created attachment 341428
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427877</commentid>
    <comment_count>2</comment_count>
      <attachid>341428</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-27 20:50:46 -0700</bug_when>
    <thetext>Comment on attachment 341428
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=341428&amp;action=review

&gt; Source/WTF/wtf/MathExtras.h:534
&gt; +    // Visual Studio 2008 or upper have __lzcnt But we can&apos;t detect AVX at compile time.

upper  =&gt; later
“ But”  =&gt; “, but”

What does AVX stand for?

&gt; Source/WTF/wtf/MathExtras.h:535
&gt; +    // So we use bsr to calculate clz

Is bsr an industry standard shorthand for _BitScanReverse()? If not, I suggest writing it out.

&gt; Source/WTF/wtf/MathExtras.h:559
&gt; +    // Visual Studio 2008 or upper have __lzcnt But we can&apos;t detect AVX at compile time.

Sam remark as line 534.

&gt; Source/WTF/wtf/MathExtras.h:560
&gt; +    // So we use bsr to calculate clz

Same remark as for line 535.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427915</commentid>
    <comment_count>3</comment_count>
      <attachid>341428</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-28 05:24:16 -0700</bug_when>
    <thetext>Comment on attachment 341428
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=341428&amp;action=review

Thank you!

&gt;&gt; Source/WTF/wtf/MathExtras.h:534
&gt;&gt; +    // Visual Studio 2008 or upper have __lzcnt But we can&apos;t detect AVX at compile time.
&gt; 
&gt; upper  =&gt; later
&gt; “ But”  =&gt; “, but”
&gt; 
&gt; What does AVX stand for?

AVX is Intel AVX, which introduces lzcnt instruction to the CPU. I&apos;ve changed this to `Intel AVX`.

&gt;&gt; Source/WTF/wtf/MathExtras.h:535
&gt;&gt; +    // So we use bsr to calculate clz
&gt; 
&gt; Is bsr an industry standard shorthand for _BitScanReverse()? If not, I suggest writing it out.

bsr and lzcnt are Intel&apos;s instruction&apos;s name. _BitScanReverse is a compiler intrinsic for emitting this `bsr` instruction.
I&apos;ve changed this to `bit-scan-reverse` operation.

&gt;&gt; Source/WTF/wtf/MathExtras.h:559
&gt;&gt; +    // Visual Studio 2008 or upper have __lzcnt But we can&apos;t detect AVX at compile time.
&gt; 
&gt; Sam remark as line 534.

Fixed.

&gt;&gt; Source/WTF/wtf/MathExtras.h:560
&gt;&gt; +    // So we use bsr to calculate clz
&gt; 
&gt; Same remark as for line 535.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427916</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-28 05:26:18 -0700</bug_when>
    <thetext>Committed r232244: &lt;https://trac.webkit.org/changeset/232244&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427917</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-28 05:27:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/40597460&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428126</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-29 10:56:52 -0700</bug_when>
    <thetext>Committed r232264: &lt;https://trac.webkit.org/changeset/232264&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341428</attachid>
            <date>2018-05-27 11:55:05 -0700</date>
            <delta_ts>2018-05-27 20:50:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186023-20180528035504.patch</filename>
            <type>text/plain</type>
            <size>4902</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMjI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZjM3NTBkYmQ4MDc4YjYwYjk5MTUxMGNjZTA3YTc0NzU3OWE4MGYxLi4zMjNiZDFkNTQ0NmIxZmM2
NmM0NjExNTU3NDg4Mjc1MTk0MWNjMjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxOC0wNS0yNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgY2x6MzIgLyBjbHo2NCBmb3IgTVNWQworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2MDIzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBjbHozMiBhbmQg
Y2x6NjQgdG8gV1RGLgorCisgICAgICAgICogcnVudGltZS9NYXRoQ29tbW9uLmg6CisgICAgICAg
IChKU0M6OmNsejMyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Y2x6NjQpOiBEZWxldGVkLgor
CiAyMDE4LTA1LTI2ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAg
ICAgICAgIFtKU0NdIFJlbmFtZSBBcnJheSNmbGF0dGVuIHRvIGZsYXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMjI5ZjMwMzE2
YzU4MTdiMTgxNWE4NTc5OWE3N2E4YTY0YzBkOTliOC4uYjVlNGExMzhkODY0YWY1NGZmMjgyMzg3
NWU1NWVmZjM0MjVlNGJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxOC0wNS0yNyAgWXVzdWtl
IFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgY2x6
MzIgLyBjbHo2NCBmb3IgTVNWQworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg2MDIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbnMgb2Yg
Y2x6MzIgYW5kIGNsejY0IGZvciBNU1ZDLgorICAgICAgICBXaGlsZSBNU1ZDIGhhcyBfbHpjbnQg
aW50cmluc2ljLCBpdCBpcyBvbmx5IHZhbGlkIGlmIHRoZSBDUFUgaGFzIGx6Y250IGluc3RydWN0
aW9uLgorICAgICAgICBJbnN0ZWFkIG9mIGNoZWNraW5nIGNwdWlkIGhlcmUsIHdlIGp1c3QgdXNl
IF9CaXRTY2FuUmV2ZXJzZSBhbmQgX0JpdFNjYW5SZXZlcnNlNjQuCisKKyAgICAgICAgKiB3dGYv
TWF0aEV4dHJhcy5oOgorICAgICAgICAoV1RGOjpjbHozMik6CisgICAgICAgIChXVEY6OmNsejY0
KToKKwogMjAxOC0wNS0yNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAg
ICAgIHRlc3RhaXIgc29tZXRpbWVzIGNyYXNoZXMgZHVlIHRvIHJhY2VzIGluIGluaXRpYWxpemF0
aW9uIG9mIEFSQzRSYW5kb21OdW1iZXJHZW5lcmF0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hdGhDb21tb24uaAppbmRleCAwZmRjN2MzNTY1Y2U4YWIxZGRlYzUxZGVmZDRjZjM4
NTJjMzk5ODU1Li5lOTE5NDYxMjE0MmE1Mzc0NDZlNjZkOTg2YzY0ZTgwNjQzOWYyMDU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aENvbW1vbi5oCkBAIC00Nyw0NCArNDcs
NiBAQCBpbmxpbmUgY29uc3RleHByIGRvdWJsZSBtaW5TYWZlSW50ZWdlcigpCiAgICAgcmV0dXJu
IC05MDA3MTk5MjU0NzQwOTkxLjA7CiB9CiAKLWlubGluZSBpbnQgY2x6MzIodWludDMyX3QgbnVt
YmVyKQotewotI2lmIENPTVBJTEVSKEdDQ19PUl9DTEFORykKLSAgICBpbnQgemVyb0NvdW50ID0g
MzI7Ci0gICAgaWYgKG51bWJlcikKLSAgICAgICAgemVyb0NvdW50ID0gX19idWlsdGluX2Nseihu
dW1iZXIpOwotICAgIHJldHVybiB6ZXJvQ291bnQ7Ci0jZWxzZQotICAgIGludCB6ZXJvQ291bnQg
PSAwOwotICAgIGZvciAoaW50IGkgPSAzMTsgaSA+PSAwOyBpLS0pIHsKLSAgICAgICAgaWYgKCEo
bnVtYmVyID4+IGkpKQotICAgICAgICAgICAgemVyb0NvdW50Kys7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gemVyb0NvdW50OwotI2VuZGlmCi19
Ci0KLWlubGluZSBpbnQgY2x6NjQodWludDY0X3QgbnVtYmVyKQotewotI2lmIENPTVBJTEVSKEdD
Q19PUl9DTEFORykKLSAgICBpbnQgemVyb0NvdW50ID0gNjQ7Ci0gICAgaWYgKG51bWJlcikKLSAg
ICAgICAgemVyb0NvdW50ID0gX19idWlsdGluX2NsemxsKG51bWJlcik7Ci0gICAgcmV0dXJuIHpl
cm9Db3VudDsKLSNlbHNlCi0gICAgaW50IHplcm9Db3VudCA9IDA7Ci0gICAgZm9yIChpbnQgaSA9
IDYzOyBpID49IDA7IGktLSkgewotICAgICAgICBpZiAoIShudW1iZXIgPj4gaSkpCi0gICAgICAg
ICAgICB6ZXJvQ291bnQrKzsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
fQotICAgIHJldHVybiB6ZXJvQ291bnQ7Ci0jZW5kaWYKLX0KLQogLy8gVGhpcyBpbiB0aGUgVG9J
bnQzMiBvcGVyYXRpb24gaXMgZGVmaW5lZCBpbiBzZWN0aW9uIDkuNSBvZiB0aGUgRUNNQS0yNjIg
c3BlYy4KIC8vIE5vdGUgdGhhdCB0aGlzIG9wZXJhdGlvbiBpcyBpZGVudGljYWwgdG8gVG9VSW50
MzIgb3RoZXIgdGhhbiB0byBpbnRlcnByZXRhdGlvbgogLy8gb2YgdGhlIHJlc3VsdGluZyBiaXQt
cGF0dGVybiAoYXMgc3VjaCB0aGlzIG1ldGhvZCBpcyBhbHNvIGNhbGxlZCB0byBpbXBsZW1lbnQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01hdGhFeHRyYXMuaCBiL1NvdXJjZS9XVEYvd3Rm
L01hdGhFeHRyYXMuaAppbmRleCA4MGQzMDUwY2JmMTdiY2IzZmZmNzI2NDVjYjI1ODg1ZGUxNjU3
OTBmLi4xYWFmOGQ2YzE5MzZkZDNlMzQyM2MwYzE1MWZhNzUyNTNjNWJkZWFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmgKKysrIGIvU291cmNlL1dURi93dGYvTWF0aEV4
dHJhcy5oCkBAIC01MjQsNiArNTI0LDU2IEBAIHZvaWQgc2h1ZmZsZVZlY3RvcihWZWN0b3JUeXBl
JiB2ZWN0b3IsIGNvbnN0IFJhbmRvbUZ1bmMmIHJhbmRvbUZ1bmMpCiAgICAgc2h1ZmZsZVZlY3Rv
cih2ZWN0b3IsIHZlY3Rvci5zaXplKCksIHJhbmRvbUZ1bmMpOwogfQogCitpbmxpbmUgdW5zaWdu
ZWQgY2x6MzIodWludDMyX3QgbnVtYmVyKQoreworI2lmIENPTVBJTEVSKEdDQ19PUl9DTEFORykK
KyAgICBpZiAobnVtYmVyKQorICAgICAgICByZXR1cm4gX19idWlsdGluX2NseihudW1iZXIpOwor
ICAgIHJldHVybiAzMjsKKyNlbGlmIENPTVBJTEVSKE1TVkMpCisgICAgLy8gVmlzdWFsIFN0dWRp
byAyMDA4IG9yIHVwcGVyIGhhdmUgX19semNudCBCdXQgd2UgY2FuJ3QgZGV0ZWN0IEFWWCBhdCBj
b21waWxlIHRpbWUuCisgICAgLy8gU28gd2UgdXNlIGJzciB0byBjYWxjdWxhdGUgY2x6CisgICAg
dW5zaWduZWQgbG9uZyByZXQgPSAwOworICAgIGlmIChfQml0U2NhblJldmVyc2UoJnJldCwgbnVt
YmVyKSkKKyAgICAgICAgcmV0dXJuIDMxIC0gcmV0OworICAgIHJldHVybiAzMjsKKyNlbHNlCisg
ICAgdW5zaWduZWQgemVyb0NvdW50ID0gMDsKKyAgICBmb3IgKGludCBpID0gMzE7IGkgPj0gMDsg
aS0tKSB7CisgICAgICAgIGlmICghKG51bWJlciA+PiBpKSkKKyAgICAgICAgICAgIHplcm9Db3Vu
dCsrOworICAgICAgICBlbHNlCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJu
IHplcm9Db3VudDsKKyNlbmRpZgorfQorCitpbmxpbmUgdW5zaWduZWQgY2x6NjQodWludDY0X3Qg
bnVtYmVyKQoreworI2lmIENPTVBJTEVSKEdDQ19PUl9DTEFORykKKyAgICBpZiAobnVtYmVyKQor
ICAgICAgICByZXR1cm4gX19idWlsdGluX2NsemxsKG51bWJlcik7CisgICAgcmV0dXJuIDY0Owor
I2VsaWYgQ09NUElMRVIoTVNWQykKKyAgICAvLyBWaXN1YWwgU3R1ZGlvIDIwMDggb3IgdXBwZXIg
aGF2ZSBfX2x6Y250IEJ1dCB3ZSBjYW4ndCBkZXRlY3QgQVZYIGF0IGNvbXBpbGUgdGltZS4KKyAg
ICAvLyBTbyB3ZSB1c2UgYnNyIHRvIGNhbGN1bGF0ZSBjbHoKKyAgICB1bnNpZ25lZCBsb25nIHJl
dCA9IDA7CisgICAgaWYgKF9CaXRTY2FuUmV2ZXJzZTY0KCZyZXQsIG51bWJlcikpCisgICAgICAg
IHJldHVybiA2MyAtIHJldDsKKyAgICByZXR1cm4gNjQ7CisjZWxzZQorICAgIHVuc2lnbmVkIHpl
cm9Db3VudCA9IDA7CisgICAgZm9yIChpbnQgaSA9IDYzOyBpID49IDA7IGktLSkgeworICAgICAg
ICBpZiAoIShudW1iZXIgPj4gaSkpCisgICAgICAgICAgICB6ZXJvQ291bnQrKzsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiB6ZXJvQ291bnQ7Cisj
ZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6b3BhcXVlOwpAQCAt
NTMxLDUgKzU4MSw3IEBAIHVzaW5nIFdURjo6cHJlY2lzZUluZGV4TWFza1B0cjsKIHVzaW5nIFdU
Rjo6cHJlY2lzZUluZGV4TWFza1NoaWZ0OwogdXNpbmcgV1RGOjpwcmVjaXNlSW5kZXhNYXNrU2hp
ZnRGb3JTaXplOwogdXNpbmcgV1RGOjpzaHVmZmxlVmVjdG9yOwordXNpbmcgV1RGOjpjbHozMjsK
K3VzaW5nIFdURjo6Y2x6NjQ7CiAKICNlbmRpZiAvLyAjaWZuZGVmIFdURl9NYXRoRXh0cmFzX2gK
</data>
<flag name="review"
          id="359598"
          type_id="1"
          status="+"
          setter="dbates"
    />
          </attachment>
      

    </bug>

</bugzilla>