<div dir="ltr">It seems that the problem was because I used <span style="font-size:12.8000001907349px"> builder.CreateFAdd to create a <2 x double> vectortype FADD instruction. It works if I use it to create the scalar version FADD. </span><span style="font-size:12.8000001907349px">I want to have an instruction like: <b>%2 = fadd <2 x double> undef, <2 x double> undef. </b></span><span style="font-size:12.8000001907349px">The following is the way I used to create the vectorized FADD instruction:</span><div><span style="font-size:12.8000001907349px"><br></span></div><div><span style="font-size:12.8000001907349px">//pInst is a double type instruction </span></div><div><span style="font-size:12.8000001907349px"><br></span></div><div><div><span style="font-size:12.8000001907349px">  Type *vecTy = VectorType::get(pInst->getType(), 2);</span></div><div><span style="font-size:12.8000001907349px">  </span><span style="font-size:12.8000001907349px">Value *emptyVec = UndefValue::get(vecTy);</span></div><div><div><span style="font-size:12.8000001907349px">  IRBuilder<> builder(&*pInst);</span></div><div><span style="font-size:12.8000001907349px">  Value *dupVal = builder.CreateFAdd(emptyVec, emptyVec, instName);</span><br></div><div><span style="font-size:12.8000001907349px">  </span></div></div><div><span style="font-size:12.8000001907349px"><div>  std::cout << " dupVal " << *dupVal << "\n";</div><div><br></div><div>It outputs:  dupVal <2 x double> <double fadd (double undef, double undef), double fadd (double undef, double undef)></div><div><br></div><div>If I dyn_cast the dupVal to instruction type (<span style="font-size:12.8000001907349px">dupInst</span><span style="font-size:12.8000001907349px">) and print dupInst, it outputs: "</span><span style="font-size:12.8000001907349px">dupInst</span><span style="font-size:12.8000001907349px"> printing a <null> value"</span></div><div>But if I use Instruction *dupInst = (Instruction *) dupVal and print it, I'll get: </div><div><span style="font-size:12.8000001907349px">dupInst <2 x double> <double fadd (double undef, double undef), double fadd (double undef, double undef)></span></div><div><span style="font-size:12.8000001907349px"><br></span></div><div><span style="font-size:12.8000001907349px">It seems that if simply fails to generate the vectorized FADD instruction. Anything wrong with my code?</span></div><div><span style="font-size:12.8000001907349px"><br></span></div><div><span style="font-size:12.8000001907349px">Best,</span></div><div><span style="font-size:12.8000001907349px">Zhi</span></div><div><span style="font-size:12.8000001907349px"><br></span></div></span><span style="font-size:12.8000001907349px"><div><br></div><div> </div></span><span style="font-size:12.8000001907349px"><div><br></div></span></div><div style="font-size:12.8000001907349px"><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Apr 16, 2015 at 11:55 PM, zhi chen <span dir="ltr"><<a href="mailto:zchenhn@gmail.com" target="_blank">zchenhn@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Yes. I was using this. It seems the produced instruction is not correct. There are probably some other problems. I need to recheck it. Thanks for your help, Daniel.<div><br></div><div>Best,</div><div>Zhi</div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Apr 16, 2015 at 11:40 PM, Daniel Berlin <span dir="ltr"><<a href="mailto:dberlin@dberlin.org" target="_blank">dberlin@dberlin.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Value * is the instruction.<br><div><br></div><div>use dyn_cast<Instruction> to get to it.</div><div><br></div></div><br><div class="gmail_quote"><div><div>On Thu, Apr 16, 2015 at 11:39 PM zhi chen <<a href="mailto:zchenhn@gmail.com" target="_blank">zchenhn@gmail.com</a>> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><div dir="ltr">But IRBuilder.CreateXYZ only returns a "VALUE" type. Can I get the instruction created by it? For example,<div><br></div><div>IRBuilder<> builder(&*pinst);</div><div>Value *val = builder.CreateFAdd(LV, RV, "");</div><div><br></div><div>How can I get the fadd instruction created by builder?</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Apr 16, 2015 at 8:52 PM, zhi chen <span dir="ltr"><<a href="mailto:zchenhn@gmail.com" target="_blank">zchenhn@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Yes. That's what I was the solution in my mind. But I just wanted to know if there was a generic way to save some code...</div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Apr 16, 2015 at 8:32 PM, Tim Northover <span dir="ltr"><<a href="mailto:t.p.northover@gmail.com" target="_blank">t.p.northover@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span>> I understand that I can detect the operation first, and use "create" to<br>
> create for each of them. But I don't if there is a generic way to do this<br>
> because if might be add/sub/mul... operations.<br>
<br>
</span>I don't think there is. Realistically, just blindly replacing<br>
instructions with vector equivalents is only going to work in a few<br>
cases anyway. You're probably best to intentionally detect those cases<br>
and call the correct CreateXYZ function.<br>
<br>
Cheers.<br>
<span><font color="#888888"><br>
Tim.<br>
</font></span></blockquote></div><br></div>
</div></div></blockquote></div><br></div></div></div><span>
_______________________________________________<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" 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>
</span></blockquote></div>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>