<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic There is some confusion in Software Archive</title>
    <link>https://community.intel.com/t5/Software-Archive/Is-CMPXCHG16B-supported/m-p/960393#M21705</link>
    <description>&lt;P&gt;There is some confusion/conflicting information.&lt;/P&gt;

&lt;P&gt;Appendix B.2 of the Intel® Xeon Phi™ Coprocessor Instruction Set Architecture Reference Manual (available on the &lt;STRONG&gt;Overview &lt;/STRONG&gt;tab &lt;A href="http://software.intel.com/mic-developer" target="_blank"&gt;Intel® Xeon Phi™ Coprocessor Developer &lt;/A&gt;site) explicitly states CMPXCHG16B is not supported.&lt;/P&gt;

&lt;P&gt;Let me check and get clarification. Please stand-by.&lt;/P&gt;</description>
    <pubDate>Thu, 16 Jan 2014 19:13:05 GMT</pubDate>
    <dc:creator>Kevin_D_Intel</dc:creator>
    <dc:date>2014-01-16T19:13:05Z</dc:date>
    <item>
      <title>Is CMPXCHG16B supported?</title>
      <link>https://community.intel.com/t5/Software-Archive/Is-CMPXCHG16B-supported/m-p/960392#M21704</link>
      <description>&lt;P&gt;From the Q&amp;amp;A &lt;A href="http://software.intel.com/en-us/articles/intelr-xeon-phitm-coprocessor-february-developer-webinar-qa-responses" target="_blank"&gt;http://software.intel.com/en-us/articles/intelr-xeon-phitm-coprocessor-february-developer-webinar-qa-responses&lt;/A&gt; it appears CMPXCHG16B is supported for the Xeon Phi.&lt;/P&gt;

&lt;P&gt;However, compiling I get the following:&lt;/P&gt;

&lt;P&gt;/tmp/icpc8hU1ksas_.s: Assembler messages:&lt;BR /&gt;
	/tmp/icpc8hU1ksas_.s:42: Error: `cmpxchg16b' is not supported on `k1om'&lt;/P&gt;

&lt;P&gt;If it's not support, what alternatives are there for implementing lock-free algorithms on the Phi (can double width CAS instructions be implemented?)&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 16 Jan 2014 02:44:48 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Is-CMPXCHG16B-supported/m-p/960392#M21704</guid>
      <dc:creator>Matt_F_</dc:creator>
      <dc:date>2014-01-16T02:44:48Z</dc:date>
    </item>
    <item>
      <title>There is some confusion</title>
      <link>https://community.intel.com/t5/Software-Archive/Is-CMPXCHG16B-supported/m-p/960393#M21705</link>
      <description>&lt;P&gt;There is some confusion/conflicting information.&lt;/P&gt;

&lt;P&gt;Appendix B.2 of the Intel® Xeon Phi™ Coprocessor Instruction Set Architecture Reference Manual (available on the &lt;STRONG&gt;Overview &lt;/STRONG&gt;tab &lt;A href="http://software.intel.com/mic-developer" target="_blank"&gt;Intel® Xeon Phi™ Coprocessor Developer &lt;/A&gt;site) explicitly states CMPXCHG16B is not supported.&lt;/P&gt;

&lt;P&gt;Let me check and get clarification. Please stand-by.&lt;/P&gt;</description>
      <pubDate>Thu, 16 Jan 2014 19:13:05 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Is-CMPXCHG16B-supported/m-p/960393#M21705</guid>
      <dc:creator>Kevin_D_Intel</dc:creator>
      <dc:date>2014-01-16T19:13:05Z</dc:date>
    </item>
    <item>
      <title>"If it's not support, what</title>
      <link>https://community.intel.com/t5/Software-Archive/Is-CMPXCHG16B-supported/m-p/960394#M21706</link>
      <description>&lt;P&gt;&lt;SPAN style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px;"&gt;"If it's not support, what alternatives are there for implementing lock-free algorithms on the Phi &amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px;"&gt;(can double width CAS instructions be implemented?)"&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px;"&gt;I don't think it is possible to synthesize a 16byte &amp;nbsp;CAS easily from other instructions (one could clearly use an internal lock, but that rather destroys the point!), so you have to make do with the 8byte version. I haven't implemented this (so take it as untested), but it seems as though it should be possible to use the 8byte CAS to atomically handle two 32bit offsets, so provided you are trying to deal with a pair of pointers into the same 4GB region, that might suffice.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 20 Jan 2014 14:30:40 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Is-CMPXCHG16B-supported/m-p/960394#M21706</guid>
      <dc:creator>James_C_Intel2</dc:creator>
      <dc:date>2014-01-20T14:30:40Z</dc:date>
    </item>
    <item>
      <title>@Jim - Thank you!</title>
      <link>https://community.intel.com/t5/Software-Archive/Is-CMPXCHG16B-supported/m-p/960395#M21707</link>
      <description>&lt;P&gt;@Jim - Thank you!&lt;/P&gt;

&lt;P&gt;@Matt - The information I cited from Appendix B.2 is current/correct. The Q&amp;amp;A was based on early documentation that has since been corrected, and so has the Q&amp;amp;A now. Thank you for asking this question.&lt;/P&gt;</description>
      <pubDate>Mon, 20 Jan 2014 15:57:34 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Is-CMPXCHG16B-supported/m-p/960395#M21707</guid>
      <dc:creator>Kevin_D_Intel</dc:creator>
      <dc:date>2014-01-20T15:57:34Z</dc:date>
    </item>
    <item>
      <title>Will Knights Landing support</title>
      <link>https://community.intel.com/t5/Software-Archive/Is-CMPXCHG16B-supported/m-p/960396#M21708</link>
      <description>&lt;P&gt;Will Knights Landing support CMPXCHG16B?&lt;/P&gt;

&lt;P&gt;With Knights Corner limited RAM (16GB) one can use a pointer &amp;gt;&amp;gt; 3 in 2x4 bytes and stay within the memory capacity. However, this precludes using the extraneous bits in a pointer as flags (though one bit might be available).&lt;/P&gt;

&lt;P&gt;You could also store half of a 64-bit pointer plus a 32-bit ABA in the first QWORD that is CMPXCHG8B'd and the second QWWORD containing the second half of the 64-bit pointer and a copy of the 32-bit ABA that is handled with a mov (cmovz). The modified DCAS only attempts a CMPXCHG8B when both ABA's were seen as equal. When equal, perform the CMPXCHG8B, then if success, write the second 8 bytes (else on failure, loop).&lt;/P&gt;

&lt;P&gt;Jim Dempsey&lt;/P&gt;</description>
      <pubDate>Mon, 20 Jan 2014 20:26:23 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Is-CMPXCHG16B-supported/m-p/960396#M21708</guid>
      <dc:creator>jimdempseyatthecove</dc:creator>
      <dc:date>2014-01-20T20:26:23Z</dc:date>
    </item>
  </channel>
</rss>

