<div dir="ltr">I'm trying to figure out how I can define and make LLVM target a simple instruction.<div><br></div><div>The instruction is very simple, it adds all of the elements of the vector register. Lets' call it sum_reduce.</div><div><br></div><div>Defining a vector add was simple. All I had to do is to simply change the register type used by a regular add instruction and that was it. However I'm really struggling to define this new instruction.</div><div><br></div><div>Initially I thought that I would replace a chain of 3 adds with insert_element instructions, but that defeats the purpose of sum_reduce, since it would mean that I have to insert operators 4 times into a vector register and then add everything. This turns it into more instructions than the original chain of 3 adds. </div><div><br></div><div>I've also looked at X86 HADD instructions but also have difficulty understanding how to implement something similar to it in my target.</div><div>,</div><div>I've annoyed enough people on the LLVM IRC channel. And they have been really helpful, unfortunately I feel that if I ask more they'll stop answering completely :D</div><div><br></div><div>At this point I wouldn't mind some handholding.  I can provide more code if needed </div><div><br></div><div>Any help on the issue is really appreciated.</div><div><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>Rail Shafigulin<br></div>Software Engineer <br>Esencia Technologies<br></div></div></div></div>
</div></div>