On Tue, Feb 26, 2013 at 3:38 PM, Nowicki, Tyler <span dir="ltr"><<a href="mailto:tyler.nowicki@intel.com" target="_blank">tyler.nowicki@intel.com</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">






<div lang="EN-US" link="blue" vlink="purple">
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Thanks for the reply, they were very helpful.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Is it enough to prevent BBVectorize from packing together double precision instructions? If a non-clang frontend is used, such as ISPC, is it possible that
 the IR may contain packed double instruction?</span></p></div></div></blockquote><div><br></div><div>Yes, it could be possible that the IR includes packed SSE instructions. </div><div><br></div><div>I am not familiar with the ISPC frontend or Atom. But, in the general case, a frontend could be using the SSE intrinsics, which can make use of packed operands. For example:</div>
<div><br></div><div><div>>  def int_x86_sse_min_ps : GCCBuiltin<"__builtin_ia32_minps">,</div><div>>              Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty,</div><div>>                         llvm_v4f32_ty], [IntrNoMem]>;</div>
</div><div> </div><div>The compiler I work on has a proprietary vectorizer that runs before the LLVM IR level. So, in our case, we have an extended set of proprietary packed intrinsics similar to the GNU SSE built-ins.</div>
<div><br></div><div>-Cameron</div></div>