<div dir="ltr"><span style="font-size:12.8000001907349px">Two ways I've done this:</span><div style="font-size:12.8000001907349px">1. Create a ReplaceAllUsesWithUnsafe() function that does the same as ReplaceAllUsesWith except without the check for compatible types, knowing that eventually you will end up with a fully compatible instruction eventually.</div><div style="font-size:12.8000001907349px">2. Do a recursive traversal up the use-def chain from the store back through all the args.  This will ensure that at every instruction, all the args will have been vectorized through the recursion, and all you really need to do at that point is call Instruction::mutateType() to ensure the return type of the instruction matches the vector args.</div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px">Thanks</div><div style="font-size:12.8000001907349px">Jason</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jul 8, 2015 at 3:18 PM, Frank Winter <span dir="ltr"><<a href="mailto:fwinter@jlab.org" target="_blank">fwinter@jlab.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I'd like to replace scalar instructions with vector instructions such that the code corresponding to following tree would be vectorized:<br>
<br>
load0  load1<br>
  \     /<br>
   \   /<br>
    add/sub/mul<br>
     |<br>
     |<br>
   store<br>
<br>
I had unsuccessful encounters with load0->replaceAllUsesWith(vec_load0) complaining about mismatching type (makes sense, add's other operand is still scalar at that time..)<br>
<br>
Is the only way to create a vectorized version of this tree by<br>
<br>
1) creating the vector loads vec_load0 AND vec_load1<br>
2) retrieving the opcode of the arithmetic instruction and create a new one according to the opcode<br>
<br>
How is step 2) in donepractice? Cloning the instruction and replacing the operands? (would that bypass the type checking for a moment?)<br>
<br>
Thanks,<br>
Frank<br>
<br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" rel="noreferrer" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" rel="noreferrer" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
</blockquote></div><br></div>