[LLVMdev] Random question about the x86 backend (and backends in general I suppose)

Chandler Carruth chandlerc at google.com
Mon Dec 30 11:56:57 PST 2013


Having worked with a few people to better understand the tablegen
descriptions of instructions and patterns in LLVM's backend and looking at
x86's pretty heavily, I have some questions:

1) Are there instruction definition flags that are really just "when
needed"? I'm thinking of things like "mayLoad" which is really alarmingly
missing from a bunch of instructions in x86 which load. Is this OK? Is this
a bug, or just suboptimal?

2) Are all of the flags in Target.td (lines 356 - 381) the "recommended"
set? Are any of them no longer really important to mark?

3) It would be really nice to keep track of the flags for instructions
which are added (or removed) from the "recommend set", and whether or not
backends have had their instruction definitions audited to be up-to-date
here. Essentially, I wonder if it would be useful to keep PRs open with a
nice list of low-hanging maintenance tasks on the instruction definition
tables for people interested.

4) If I'm reading the td files and I see things that are obviously wrong
(for example, an instruction which loads but is not marked as such, or
instructions which should be marked as (potentially) trivially
rematerializable), should I just fix them and submit those fixes? Can I
even write test cases for most of these? Clearly, what I consider
"obviously wrong" will be informed by answers to #1 and #2 above.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20131230/f71a36fb/attachment.html>


More information about the llvm-dev mailing list