<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">I don't think there's a real shortage of those, but I confess I'm not<br>sure why that's related. You'd need a representation for the LUI and<br>ADDI after instruction selection anyway.</blockquote><div><br></div><div>Yeah at the end we need a representation for LUI and ADDI. We were trying to break the 64 bit address from GlobalAddress node into two i32 register. We will add custom load/store which will generate the address using values from two registers. We thought LUI and ADDI pair will be good to store the values in a i32 register.  If we could transform <span style="color:rgb(80,0,80)">GlobalAddress<0xHighLow> directly to </span><span style="color:rgb(80,0,80)">GlobalAddress<0xLow>, we could use the present RISCVII::MO_HI and MO_LO as they only exact the 32 high bits. </span><span style="color:rgb(80,0,80)">What do you think? </span></div><div><span style="color:rgb(80,0,80)">Many thanks for your reply :)</span></div></div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jul 9, 2019 at 9:41 PM Tim Northover <<a href="mailto:t.p.northover@gmail.com">t.p.northover@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Tue, 9 Jul 2019 at 14:49, Reshabh Sharma via llvm-dev<br>
<<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<br>
> For a GlobalAddress node say i64 = GlobalAddress<0xHighLow> we want to convert it into i32 = GlobalAddress<0xLow>.<br>
<br>
I think you'd have to convert it into a custom RISCVGlobalAddressLow<br>
and RISCVGlobalAddressHigh pair because the type of GlobalAddress is<br>
fixed to pointer type in TargetSelectionDAG.td (that's not 100% set in<br>
stone, but I wouldn't violate it lightly). And that might well be<br>
functionally equivalent to making an LUI/ADDI pair directly.<br>
<br>
> If there is no direct way to do this, we plan to fall back on a backup plan to convert the GlobalAddress node into the required LUI and ADDI pair but that would require the addition of two new target flag in RISCVII namespace.<br>
<br>
I don't think there's a real shortage of those, but I confess I'm not<br>
sure why that's related. You'd need a representation for the LUI and<br>
ADDI after instruction selection anyway.<br>
<br>
Cheers.<br>
<br>
Tim.<br>
</blockquote></div>