<html><body><div style="color:#000; background-color:#fff; font-family:lucida console, sans-serif;font-size:14px"><div id="yui_3_16_0_1_1414246569073_4183"><span></span></div> <div class="qtdSeparateBR" id="yui_3_16_0_1_1414246569073_4373" dir="ltr">Hi Elena,</div><div class="qtdSeparateBR" id="yui_3_16_0_1_1414246569073_4373" dir="ltr"><br></div><div class="qtdSeparateBR" id="yui_3_16_0_1_1414246569073_4373" dir="ltr">Nice to see that your thinking are quite similar with mine.</div><div class="qtdSeparateBR" id="yui_3_16_0_1_1414246569073_4373" dir="ltr"><br></div><div class="qtdSeparateBR" id="yui_3_16_0_1_1414246569073_4373" dir="ltr">Do you plan to generate this intrinsic in Loop Vectorizer based on subtarget feature?</div><div class="qtdSeparateBR" id="yui_3_16_0_1_1414246569073_4373" dir="ltr"><br></div><div class="qtdSeparateBR" id="yui_3_16_0_1_1414246569073_4373" dir="ltr">If so, it would be better to let it generate here in target independent manner.Later on,</div><div class="qtdSeparateBR" id="yui_3_16_0_1_1414246569073_4373" dir="ltr">during lowering, based on the availability of target support for masked ops you can decide</div><div class="qtdSeparateBR" id="yui_3_16_0_1_1414246569073_4373" dir="ltr">either to scalarize or generate the target masked ops instruction.</div><div class="qtdSeparateBR" id="yui_3_16_0_1_1414246569073_4373" dir="ltr"><br></div><div class="qtdSeparateBR" id="yui_3_16_0_1_1414246569073_4373" dir="ltr">Shahid<br><br></div><div class="yahoo_quoted" style="display: block;" id="yui_3_16_0_1_1414246569073_4202"> <div style="font-family: lucida console, sans-serif; font-size: 14px;" id="yui_3_16_0_1_1414246569073_4201"> <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 16px;" id="yui_3_16_0_1_1414246569073_4200"> <div dir="ltr" id="yui_3_16_0_1_1414246569073_4408"> <font size="2" face="Arial" id="yui_3_16_0_1_1414246569073_4407"> On Friday, October 24, 2014 4:59 PM, "Demikhovsky, Elena" <elena.demikhovsky@intel.com> wrote:<br> </font> </div>  <br><br> <div class="y_msg_container" id="yui_3_16_0_1_1414246569073_4199"><div id="yiv1368802508">

 
 

<style><!--#yiv1368802508 .yiv1368802508EmailQuote {margin-left:1pt;padding-left:4pt;border-left:#800000 2px solid;}--></style>

<div id="yui_3_16_0_1_1414246569073_4198">
<font face="Calibri" size="2" id="yui_3_16_0_1_1414246569073_4197"><span style="font-size:11pt;" id="yui_3_16_0_1_1414246569073_4196">
<div id="yui_3_16_0_1_1414246569073_4218"><font color="#1F497D" id="yui_3_16_0_1_1414246569073_4843">Hi,</font></div>
<div id="yui_3_16_0_1_1414246569073_4842"><font color="#1F497D"> </font></div>
<div id="yui_3_16_0_1_1414246569073_4206"><font color="#1F497D" id="yui_3_16_0_1_1414246569073_4205">We would like to add support for masked vector loads and stores by introducing new target-independent intrinsics. The loop vectorizer will then be enhanced to optimize loops containing conditional memory accesses by generating these
intrinsics for existing targets such as AVX2 and AVX-512. The vectorizer will first ask the target about availability of masked vector loads and stores. The SLP vectorizer can potentially be enhanced to use these intrinsics as well.</font></div>
<div id="yui_3_16_0_1_1414246569073_4207"><font color="#1F497D" id="yui_3_16_0_1_1414246569073_5590"> </font></div>
<div id="yui_3_16_0_1_1414246569073_4204"><font color="#1F497D" id="yui_3_16_0_1_1414246569073_4203">The intrinsics would be legal for all targets; targets that do not support masked vector loads or stores will scalarize them.</font></div>
<div id="yui_3_16_0_1_1414246569073_4195"><font color="#1F497D" id="yui_3_16_0_1_1414246569073_4194">The addressed memory will not be touched for masked-off lanes. In particular, if all lanes are masked off no address will be accessed.</font></div>
<div id="yui_3_16_0_1_1414246569073_4392"><font color="#1F497D"> </font></div>
<div id="yui_3_16_0_1_1414246569073_4394"><font color="#1F497D" id="yui_3_16_0_1_1414246569073_4393">  call void @llvm.masked.store (i32* %addr, <16 x i32> %data, i32 4, <16 x i1> %mask)</font></div>
<div id="yui_3_16_0_1_1414246569073_4395"><font color="#1F497D"> </font></div>
<div id="yui_3_16_0_1_1414246569073_4397"><font color="#1F497D" id="yui_3_16_0_1_1414246569073_4396">  %data = call <8 x i32> @llvm.masked.load (i32* %addr, <8 x i32> %passthru, i32 4, <8 x i1> %mask)</font></div>
<div id="yui_3_16_0_1_1414246569073_4398"><font color="#1F497D"> </font></div>
<div id="yui_3_16_0_1_1414246569073_4400"><font color="#1F497D" id="yui_3_16_0_1_1414246569073_4399">where %passthru is used to fill the elements of %data that are masked-off (if any; can be zeroinitializer or undef).</font></div>
<div id="yui_3_16_0_1_1414246569073_4401"><font color="#1F497D"> </font></div>
<div id="yui_3_16_0_1_1414246569073_4405"><font color="#1F497D" id="yui_3_16_0_1_1414246569073_4404">Comments so far, before we dive into more details?</font></div>
<div id="yui_3_16_0_1_1414246569073_4402"><font color="#1F497D"> </font></div>
<div id="yui_3_16_0_1_1414246569073_4403"><font color="#1F497D">Thank you.</font></div>
<div><font color="#1F497D"> </font></div>
<div id="yui_3_16_0_1_1414246569073_4406"><font color="#1F497D">- Elena and Ayal</font></div>
<div id="yui_3_16_0_1_1414246569073_6463"><font color="#1F497D"> </font></div>
<div> </div>
</span></font>
<div>---------------------------------------------------------------------<br>
Intel Israel (74) Limited</div>

<div>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.</div></div>
</div><br>_______________________________________________<br>LLVM Developers mailing list<br><a ymailto="mailto:LLVMdev@cs.uiuc.edu" href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu/" target="_blank">http://llvm.cs.uiuc.edu</a><br><a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br><br><br></div>  </div> </div>  </div> </div></body></html>