Thank you for replying to my email.<br><br><div class="gmail_quote">On Tue, Aug 31, 2010 at 2:01 PM, Jakob Stoklund Olesen <span dir="ltr"><<a href="mailto:stoklund@2pi.dk">stoklund@2pi.dk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div class="im"><br>
On Aug 26, 2010, at 11:05 AM, Akira Hatanaka wrote:<br>
<br>
> Is there a class or function that generates an add or sub instruction in a target-independent manner?<br>
<br>
</div>No. Such a target hook does not exist.<br>
<div class="im"><br>
> I am looking for something similar to TargetInstrInfo::copyRegTpReg but one that creates other types of instructions.<br>
<br>
</div>It almost sounds like you should be writing a normal optimization pass that operates on LLVM IR instead of a code generator pass. That is a lot easier too. Are you doing something similar to LoopUnroll.cpp?<br>
<font color="#888888"><br>
/jakob<br>
<br>
</font></blockquote></div><br>It reorders and replicates instructions in the original machine basic block, so in a sense it is similar to LoopUnroll.cpp.<br><br>As you have pointed out, I agree that an LLVM IR scheduling pass would be much easier to write. However, since the scheduling pass I am writing uses the target instructions' latency and resource usage information, it would be hard to generate a good schedule if it were operating on the LLVM IR instead of the Machine IR. <br>
<br><br>