<div dir="ltr">That really helped!<br>Thanks a lot.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Sep 15, 2015 at 4:51 PM, Tom Stellard <span dir="ltr"><<a href="mailto:tom@stellard.net" target="_blank">tom@stellard.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Tue, Sep 15, 2015 at 04:15:32PM +0200, Sky Flyer via llvm-dev wrote:<br>
> Hi all,<br>
><br>
> is it possible in TableGen to set value to instruction bits based on the<br>
> operands?<br>
> In other words, parsing the instruction at the TableGen level.<br>
><br>
> for instance:<br>
><br>
> "add $Rd, $Rn, $imm"<br>
><br>
> I want to have something like this:<br>
><br>
</span>> *Inst{8} = ($Rn == Test::A0)  1 : 0;*<br>
><br>
<br>
One solution to this is to add extra bits to the register encoding.  Here is<br>
a pseudo code example if you have 8-bit register encoding:<br>
<br>
class ARegister : Register <string Name, bits<16> enc> : Register <name> {<br>
  let HWEncoding = enc;<br>
}<br>
<br>
def A0 : ARegister <"A0", 0x100><br>
def A1 : ARegister <"A1", 0x001><br>
def A2 : ARegister <"A2", 0x002><br>
<br>
...<br>
<br>
class InstFormat {<br>
<br>
  bits<9> Rn;<br>
<br>
  Inst{7-0} = Rn{7-0};<br>
  Inst{8} = Rn{8}<br>
<br>
}<br>
<br>
-Tom<br>
<span class=""><br>
<br>
> Is there any way to do that in TableGen? If not is there any example in the<br>
> provided example codes?<br>
><br>
> Cheers,<br>
> ES<br>
<br>
</span>> _______________________________________________<br>
> LLVM Developers mailing list<br>
> <a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br>
> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
<br>
</blockquote></div><br></div>