Sky Flyer via llvm-dev
2015-Nov-26 14:57 UTC
[llvm-dev] Accessing TableGen defined variable in the cpp code
Hello all, I would like to assign some bits in the instructions, based on the order of mnemonics that appear in a special order. I can do it in TableGen itself, but it will not be well maintainable based on the things I want to accomplish. Therefor, I would like to do it in the c++ file which is waaay easier (at least in the concept!!). Imagine I have this in my base class in TableGen: *bits<4> bitpattern = 0;* *let Inst{10-7} = bitpattern;* Then, at the moment that I am parsing the instruction, I would like to assign a value to "bitpattern" variable! for example: ->ParseInstruction(...) if (Mnemonic == "X") Mnemonic = getLexer().getTok().getString(); if (Mnemonic == "Y") *** let bitpattern = 0b1010" ** // How can I do this?* How can I do this? Is it possible? Cheers, ES -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20151126/354ac081/attachment.html>
Tom Stellard via llvm-dev
2015-Nov-26 15:15 UTC
[llvm-dev] Accessing TableGen defined variable in the cpp code
On Thu, Nov 26, 2015 at 03:57:42PM +0100, Sky Flyer via llvm-dev wrote:> Hello all, > > I would like to assign some bits in the instructions, based on the order of > mnemonics that appear in a special order. I can do it in TableGen itself, > but it will not be well maintainable based on the things I want to > accomplish. > > Therefor, I would like to do it in the c++ file which is waaay easier (at > least in the concept!!). > > Imagine I have this in my base class in TableGen: > > > *bits<4> bitpattern = 0;* > *let Inst{10-7} = bitpattern;* > > Then, at the moment that I am parsing the instruction, I would like to > assign a value to "bitpattern" variable! > for example: > > ->ParseInstruction(...) > if (Mnemonic == "X") > Mnemonic = getLexer().getTok().getString(); > if (Mnemonic == "Y") > *** let bitpattern = 0b1010" ** // How can I do this?* > > > How can I do this? Is it possible? >One thing you might be able to do is add 'bitpattern' as an instruction operand. Does each instruction always have the same bitpattern? -Tom> Cheers, > ES> _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
Sky Flyer via llvm-dev
2015-Nov-27 11:55 UTC
[llvm-dev] Accessing TableGen defined variable in the cpp code
Hi Tom, each "X" has a unique bitpattern that should be assigned to the Inst. e.g: X1 = 0001 X2 = 0010 .... Imagine X as a predicate and Y as the Instruction Mnemonic. If this is the answer to your question. On Thu, Nov 26, 2015 at 4:15 PM, Tom Stellard <tom at stellard.net> wrote:> On Thu, Nov 26, 2015 at 03:57:42PM +0100, Sky Flyer via llvm-dev wrote: > > Hello all, > > > > I would like to assign some bits in the instructions, based on the order > of > > mnemonics that appear in a special order. I can do it in TableGen itself, > > but it will not be well maintainable based on the things I want to > > accomplish. > > > > Therefor, I would like to do it in the c++ file which is waaay easier (at > > least in the concept!!). > > > > Imagine I have this in my base class in TableGen: > > > > > > *bits<4> bitpattern = 0;* > > *let Inst{10-7} = bitpattern;* > > > > Then, at the moment that I am parsing the instruction, I would like to > > assign a value to "bitpattern" variable! > > for example: > > > > ->ParseInstruction(...) > > if (Mnemonic == "X") > > Mnemonic = getLexer().getTok().getString(); > > if (Mnemonic == "Y") > > *** let bitpattern = 0b1010" ** // How can I do this?* > > > > > > How can I do this? Is it possible? > > > > One thing you might be able to do is add 'bitpattern' as an instruction > operand. > Does each instruction always have the same bitpattern? > > -Tom > > > Cheers, > > ES > > > _______________________________________________ > > LLVM Developers mailing list > > llvm-dev at lists.llvm.org > > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20151127/75252d87/attachment.html>