<div dir="ltr">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:<div><br></div>
<div>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?</div>
<div><br></div><div>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?</div><div><br></div><div>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.</div>
<div><br></div><div>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.</div>
</div>