This is an archive of the discontinued LLVM Phabricator instance.

[DFAPacketizer] Allow namespacing of automata per-itinerary
ClosedPublic

Authored by jmolloy on Aug 29 2019, 6:05 AM.

Details

Summary

The Hexagon itineraries are cunningly crafted such that functional units between
itineraries do not clash. Because all itineraries are bundled into the same DFA,
a functional unit index clash would cause an incorrect DFA to be generated.

A workaround for this is to ensure all itineraries declare the universe of all
possible functional units, but this isn't ideal for three reasons:

  1. We only have a limited number of FUs we can encode in the packetizer, and using the universe causes us to hit the limit without care.
  2. Silent codegen faults are bad, and careful triage of the FU list shouldn't be required.
  3. Smooshing all itineraries into the same automaton allows combinations of instruction classes that cannot exist, which bloats the table.

A simple solution is to allow "namespacing" packetizers.

Diff Detail

Repository
rL LLVM

Event Timeline

jmolloy created this revision.Aug 29 2019, 6:05 AM
Herald added a project: Restricted Project. · View Herald TranscriptAug 29 2019, 6:05 AM
ThomasRaoux accepted this revision.Aug 30 2019, 9:58 AM

This is great, will be very helpful.

This revision is now accepted and ready to land.Aug 30 2019, 9:58 AM
This revision was automatically updated to reflect the committed changes.