<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"Intel Clear";
        panose-1:2 11 6 4 2 2 3 2 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Plain Text Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:13.0pt;
        font-family:"Intel Clear",sans-serif;
        color:#1F497D;}
span.PlainTextChar
        {mso-style-name:"Plain Text Char";
        mso-style-priority:99;
        mso-style-link:"Plain Text";
        font-family:"Intel Clear",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoPlainText"><a name="_MailEndCompose">Hello Matthias<o:p></o:p></a></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">I had a look at your ./mic/intrinsics.h file.<o:p></o:p></p>
<p class="MsoPlainText">This looks a bit blurry to me:<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Machine instruction for those kind of intrinsic have a field of 3 bits in the mnemonic to specify the conversion argument (so called MVEX.SSS field) – same for the memory hint: the hint is represented by one bit ( MVEX.EH).<o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:13.0pt;font-family:"Intel Clear",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:13.0pt;font-family:"Intel Clear",sans-serif;color:#1F497D">Hence the compiler can’t generate the final machine instruction unless the conversion and hit are a fixed compile time constant. In case it would want to
 do so, it would have to enable some kind of ‘text segment editing’ at run time: You would need to change the instruction just before it is being executed.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:13.0pt;font-family:"Intel Clear",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:13.0pt;font-family:"Intel Clear",sans-serif;color:#1F497D">This would be difficult to do but even worse: It would be a disaster for performance since changing the text segment is something requiring a total stall
 of the pipeline, a wait on all ongoing operations to complete ( like writes to memory) etc  Not to mention, that you would have to make the text segment ‘writeable’ before etc<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:13.0pt;font-family:"Intel Clear",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:13.0pt;font-family:"Intel Clear",sans-serif;color:#1F497D">I just tried to compile the below code. None of the below instantiation could work, but maybe this is not really representative of your current implementation
 ?<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:13.0pt;font-family:"Intel Clear",sans-serif;color:#1F497D">Feel free to ping me ..<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:13.0pt;font-family:"Intel Clear",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:13.0pt;font-family:"Intel Clear",sans-serif;color:#1F497D">#include <immintrin.h><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:13.0pt;font-family:"Intel Clear",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:13.0pt;font-family:"Intel Clear",sans-serif;color:#1F497D">template<typename DownConv><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:13.0pt;font-family:"Intel Clear",sans-serif;color:#1F497D">void scatter(void *m, __m512i i, __m512i v, DownConv downconv, int scale)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:13.0pt;font-family:"Intel Clear",sans-serif;color:#1F497D">{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:13.0pt;font-family:"Intel Clear",sans-serif;color:#1F497D">    _mm512_i32extscatter_epi32(m, i, v, downconv, scale, _MM_HINT_NONE);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:13.0pt;font-family:"Intel Clear",sans-serif;color:#1F497D">}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:13.0pt;font-family:"Intel Clear",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:13.0pt;font-family:"Intel Clear",sans-serif;color:#1F497D">void foo()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:13.0pt;font-family:"Intel Clear",sans-serif;color:#1F497D">{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:13.0pt;font-family:"Intel Clear",sans-serif;color:#1F497D">   void *m;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:13.0pt;font-family:"Intel Clear",sans-serif;color:#1F497D">   __m512i i, v;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:13.0pt;font-family:"Intel Clear",sans-serif;color:#1F497D">   int scale, downconv;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:13.0pt;font-family:"Intel Clear",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:13.0pt;font-family:"Intel Clear",sans-serif;color:#1F497D">   // Should instanciate scatter<_MM_DOWNCONV_EPI32_ENUM><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:13.0pt;font-family:"Intel Clear",sans-serif;color:#1F497D">   void  (*ptr) (void *, __m512i , __m512i , _MM_DOWNCONV_EPI32_ENUM, int) = scatter;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:13.0pt;font-family:"Intel Clear",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:13.0pt;font-family:"Intel Clear",sans-serif;color:#1F497D">   scatter<int>(m,i,v,downconv,scale);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:13.0pt;font-family:"Intel Clear",sans-serif;color:#1F497D">   scatter<_MM_DOWNCONV_EPI32_ENUM>(m,i,v,_MM_DOWNCONV_EPI32_NONE,scale);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:13.0pt;font-family:"Intel Clear",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:13.0pt;font-family:"Intel Clear",sans-serif;color:#1F497D">}<o:p></o:p></span></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText"><o:p></o:p></p>
<p class="MsoPlainText">Regards;<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoNormal"><img width="470" height="73" id="Picture_x0020_1" src="cid:image001.gif@01D0EBCB.C1274890" alt="image001"><span lang="FR"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="font-family:Wingdings;color:#999999">,</span><b><span lang="PT-BR" style="font-size:7.5pt;font-family:"Arial",sans-serif;color:#999999"> E-mail:
</span></b><b><span lang="FR" style="font-size:7.5pt;font-family:"Arial",sans-serif;color:#999999"><a href="mailto:laurent.duhem@intel.com" title="mailto:laurent.duhem@intel.com"><span lang="PT-BR" style="color:blue">laurent.duhem@intel.com</span></a></span></b><span lang="PT-BR" style="font-size:12.0pt;font-family:"Arial",sans-serif"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="font-family:Wingdings;color:#999999">)</span><b><span lang="FR" style="font-size:7.5pt;font-family:"Arial",sans-serif;color:#999999"> Office:       
</span></b><b><span lang="FR" style="font-size:7.5pt;font-family:"Arial",sans-serif;color:blue">+33 158877271<o:p></o:p></span></b></p>
<p class="MsoNormal"><span lang="EN-GB" style="font-family:Wingdings;color:#999999">)</span><b><span lang="FR" style="font-size:7.5pt;font-family:"Arial",sans-serif;color:#999999"> Mobile:      
</span></b><b><span lang="FR" style="font-size:7.5pt;font-family:"Arial",sans-serif;color:blue">+33 621415972<o:p></o:p></span></b></p>
<div class="MsoNormal" align="center" style="text-align:center">
<hr size="2" width="100%" align="center">
</div>
<p class="MsoPlainText">-----Original Message-----<br>
From: Matthias Kretz [mailto:m.kretz@gsi.de] <br>
Sent: Tuesday, September 8, 2015 9:03 PM<br>
To: Duhem, Laurent; Oertel, Klaus-Dieter<br>
Cc: vc@compeng.uni-frankfurt.de<br>
Subject: Re: Vc issue<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">I had a chance today to try ICC 16 and it looks like a mess.<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Most puzzling issue at this point:<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">extern void __cdecl _mm512_i32extscatter_epi32(void* mv, __m512i index, __m512i v1, _MM_DOWNCONV_EPI32_ENUM conv, int scale, int hint); (cf.
<a href="https://software.intel.com/en-us/node/582418"><span style="color:#1F497D;text-decoration:none">https://software.intel.com/en-us/node/582418</span></a>)<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">The intrinsic is still declared with the enum for the conv parameter in zmmintrin.h, but the compiler actually thinks conv is of type unsigned int.
<o:p></o:p></p>
<p class="MsoPlainText">I.e. if I pass an int it compiles without error or even a warning. If I pass a type that is implicitly convertible to either _MM_DOWNCONV_EPI32_ENUM or _MM_UPCONV_EPI32_ENUM, the compiler stops, saying both are equally good candidates
 for conversion to unsigned int. Did you really just release a source incompatible change to the MIC intrinsics? Without even adjusting the documentation?<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Seems like I have to rewrite a significant part of my code once more. The MIC implementation has been the most frustrating experience in that regard. :(<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Cheers,<o:p></o:p></p>
<p class="MsoPlainText">  Matthias<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">On Monday 07 September 2015 12:24:44 Matthias Kretz wrote:<o:p></o:p></p>
<p class="MsoPlainText">> I applied your FindMIC.cmake patch. Is there anything else missing?<o:p></o:p></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> I just installed ICC 16 on a test system and I hope I can find some
<o:p></o:p></p>
<p class="MsoPlainText">> time to look at it myself soon. But please keep the patches coming in
<o:p></o:p></p>
<p class="MsoPlainText">> - though feel free to post it as a pull request on Github, which makes
<o:p></o:p></p>
<p class="MsoPlainText">> it easier to comment on the changes if necessary.<o:p></o:p></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> Cheers,<o:p></o:p></p>
<p class="MsoPlainText">>  Matthias<o:p></o:p></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> On Friday 04 September 2015 11:15:47 Duhem, Laurent wrote:<o:p></o:p></p>
<p class="MsoPlainText">> > Thx Matthias.<o:p></o:p></p>
<p class="MsoPlainText">> > <o:p></o:p></p>
<p class="MsoPlainText">> > <o:p></o:p></p>
<p class="MsoPlainText">> > <o:p></o:p></p>
<p class="MsoPlainText">> > I guess detection of newest Intel compiler 16 is also broken, as we
<o:p></o:p></p>
<p class="MsoPlainText">> > heavily changed installation layout.<o:p></o:p></p>
<p class="MsoPlainText">> > <o:p></o:p></p>
<p class="MsoPlainText">> > Can you also look at fixing related Findxxx.cmake script pls ?<o:p></o:p></p>
<p class="MsoPlainText">> > <o:p></o:p></p>
<p class="MsoPlainText">> > <o:p></o:p></p>
<p class="MsoPlainText">> > <o:p></o:p></p>
<p class="MsoPlainText">> > Regards<o:p></o:p></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> _______________________________________________<o:p></o:p></p>
<p class="MsoPlainText">> Vc mailing list<o:p></o:p></p>
<p class="MsoPlainText">> <a href="mailto:Vc@compeng.uni-frankfurt.de"><span style="color:#1F497D;text-decoration:none">Vc@compeng.uni-frankfurt.de</span></a><o:p></o:p></p>
<p class="MsoPlainText">> <a href="https://compeng.uni-frankfurt.de/mailman/listinfo/vc">
<span style="color:#1F497D;text-decoration:none">https://compeng.uni-frankfurt.de/mailman/listinfo/vc</span></a><o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
</div>
<p>---------------------------------------------------------------------<br>
Intel Corporation SAS (French simplified joint stock company)<br>
Registered headquarters: "Les Montalets"- 2, rue de Paris, <br>
92196 Meudon Cedex, France<br>
Registration Number:  302 456 199 R.C.S. NANTERRE<br>
Capital: 4,572,000 Euros</p>

<p>This e-mail and any attachments may contain confidential material for<br>
the sole use of the intended recipient(s). Any review or distribution<br>
by others is strictly prohibited. If you are not the intended<br>
recipient, please contact the sender and delete all copies.</p></body>
</html>