Named instructions, because there are two targets

The target is confirmed as the RDNA2-derived part, with the previous console generation a nice-to-have. So the shader subsystem needs to serve two architecture generations, not one - which turns "should translation key on opcode numbers or names" from a judgement call into a settled question.

model::SUPPORTED is now sixty-seven names. supports_named resolves them through whichever tables are loaded, and unresolved reports any the loaded generation does not have. every_supported_name_exists_on_this_target fails with that list.

The argument is not that names mean fewer edits. It is that a list of opcode numbers pointed at another generation does not fail - it binds silently to whatever occupies those numbers, and the first sign is a wrong pixel. A list of names either resolves or says which name is gone. Verified by renaming one instruction in the tables and confirming the test names it and nothing else.

Surprises.

Not done. The dispatch still matches on (family, opcode) internally - eighteen arms and fourteen inner comparisons. That is the half that makes a retarget cheap; this was the half that makes it loud, and loud matters more. The regeneration against the real target waits on that conversion, because doing it first would break sixty places at once with nothing to guide the repair.