But in the first version it's used on the next row:<br>     %reg16388<def> = CMPrr %reg16384, %reg16385, %CFR<imp-def,dead>; IntRegs:%reg16388,16384,16385<br>     SKIPCOND 1, <b>%CFR<imp-use></b>  <br>
Or doesn't that count?<br><br>Following are patters for cmp and skipcond:<br><br>def cmpcc : SDNode<"CSISD::CMP", SDTIntBinOp, [SDNPOutFlag]>;<br>let Defs = [CFR] in {<br>    <br>  def CMPrr  : InstCS<(outs IntRegs:$dst), (ins IntRegs:$b, IntRegs:$c),<br>
                 "cmp $c, $dst",<br>                 [(set IntRegs:$dst, (cmpcc IntRegs:$b, IntRegs:$c)), (implicit CFR)]>;<br>}<br><br>let Uses = [CFR], isBranch = 1, isTerminator = 1 in<br>    def SKIPCOND : InstCS<(outs), (ins CCOp:$cc),<br>
                         "s$cc",<br>                        [(skipcc imm:$cc)]>;<br><br><div class="gmail_quote">On Wed, Dec 15, 2010 at 10:02 AM, Anton Korobeynikov <span dir="ltr"><<a href="mailto:anton@korobeynikov.info">anton@korobeynikov.info</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;">Hello Per,<br>
<div class="im"><br>
> The CMPrr instruction is moved down to after the PHI node. My guess is that<br>
> the 'dead' in CFR<imp-def,dead> is to blame, but I can't see what I'm doing<br>
> differently from MSP430/sparc that makes this not work. Any help GREATLY<br>
> appreciated!<br>
</div>It seems like no use of CFR after CMP, indeed. How condbranches on<br>
your platform look like (patterns, etc.) ?<br>
<font color="#888888"><br>
--<br>
With best regards, Anton Korobeynikov<br>
Faculty of Mathematics and Mechanics, Saint Petersburg State University<br>
</font></blockquote></div><br>