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:
- 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.
- Silent codegen faults are bad, and careful triage of the FU list shouldn't be required.
- 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.