Any pass that is run after register allocation can do this (I haven't found a way to do this before RA). I inserted this pass right after register allocation so that the post-RA scheduler can schedule real instructions as opposed to pseudo instructions. I am not totally sure delaying this until after post-RA scheduling will not have adverse effect on the quality of the schedule generated (For ExtractElementF64, it probably doesn't matter whether you do this before or after RA since it is already split into 2 instructions, but for BuildPairF64, I don;t know).<br>
<br><div class="gmail_quote">On Thu, Apr 14, 2011 at 10:20 PM, Chris Lattner <span dir="ltr"><<a href="mailto:clattner@apple.com">clattner@apple.com</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 Apr 14, 2011, at 5:35 PM, Akira Hatanaka wrote:<br>
<br>
> Made minor changes per discussion with Bruno.<br>
<br>
</div>Do you really need another pass to do this?  Why not just handle this during mc inst lowering?<br>
<div class="im"><br>
+++ lib/Target/Mips/MipsExpandPseudoInstrs.cpp  (revision 0)<br>
@@ -0,0 +1,116 @@<br>
+//===-- ExpandPseudoInstrs.cpp - Mips delay slot filler ---------------------===//<br>
+//<br>
+//                     The LLVM Compiler Infrastructure<br>
+//<br>
<br>
</div>Please correct the filename and comment and make sure the line fits 80 columns.<br>
<font color="#888888"><br>
-Chris<br>
</font></blockquote></div><br>