Improvements in resource conflict detection related to slots #305
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This started out by the realization that XM is a separate slot from X and M, and that the only mechanism that prevents them from occupying the same bundle is the format table.
ResourceCycle will make a quick check whether there's overlap in the slot bits, but will miss an X XM overlap.
The idea is that we can go through the complete format list and find the implications from XM to X and M (All formats containing XM don't allow X or M)
First, we have simplified the generated tables by removing the target-specific SlotInfo and SlotKind classes. That removes the need for MCFormats.h to include all generated format tables.
Trying to use the denser 'ConflictBits' in the check pointed out a problem, which is the nop slot as used by AIE2 to disambiguate the two stand-alone formats for XM, on in 48 bits and one in 64 bits. The latter one is only used for bundle padding. That nop slot only occurs in the 16 nop format and the 64 bit XM format, and hence is implied by A, B, S, X and M slots.
We added the notion of an artificial slot to be able to exclude it from the conflict bits.
Status