<div dir="ltr">Hi Tim,<div class="gmail_extra"><br></div><div class="gmail_extra">I see! So do you know if we have any micro-architecture hook API I can follow?</div><div class="gmail_extra"><br></div><div class="gmail_extra">
Thanks,</div><div class="gmail_extra">-Jiangning</div><div class="gmail_extra"><br><div class="gmail_quote">2014-06-26 15:26 GMT+08:00 Tim Northover <span dir="ltr"><<a href="mailto:t.p.northover@gmail.com" target="_blank">t.p.northover@gmail.com</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Jiangning,<br>
<div class=""><br>
On 26 June 2014 07:42, Jiangning Liu <<a href="mailto:liujiangning1@gmail.com">liujiangning1@gmail.com</a>> wrote:<br>
> But ADDWri/ADDXri represents "Add (immediate) : Rd = Rn + shift(imm)" and<br>
> shift can be either #0 or #12. For add with "lsl #12", it may not be the<br>
> same cost as mov, so we would have to split Wri/Xri into two separate defs.<br>
<br>
</div>This is a microarchitectural property, so splitting the defs won't<br>
really help anyway.<br>
<div class=""><br>
> Since ADDWri/ADDXri are being used around the back-end code, I not sure if<br>
> this change meet your expectation and it seems not a very clean solution for<br>
> me as well. Or do you know is there any smarter method in td file to<br>
> dynamically assign isReMaterializable to 1 based on shift value?<br>
<br>
</div>I don't think there is a cleaner method at the moment; just this<br>
comment in MachineInstr.h:<br>
<br>
    bool isAsCheapAsAMove(QueryType Type = AllInBundle) const {<br>
      // Only returns true for a bundle if all bundled instructions are cheap.<br>
      // FIXME: This probably requires a target hook.<br>
      return hasProperty(MCID::CheapAsAMove, Type);<br>
    }<br>
<br>
Cheers.<br>
<span class="HOEnZb"><font color="#888888"><br>
Tim.<br>
</font></span></blockquote></div><br></div></div>