The registers TRCEXTINSELR and TRCEXTINSELR0 are distinct registers, defined by
separate extension specifications (ETM and ETE, respectively), yet they use the
same encoding in MSR/MRS.
When performing a system register lookup by encoding, we would essentially
return a random one, depending on the number, relative position in the TableGen
file, whether the TableGen records for system registers are named or not, and,
if they are names, depending on record (not register!) name as well.
This issue could be solved by some system register aliases plus preferred
disassembly mechanism. We lack that, implementing it, is moderately non-trivial,
and not clear if it's worth it at all.
As a workaround, if we give the "conflicting" records names, and relying on
TableGen internals (keeping records in an ordered map, emitting lookup tables in
record name order, using std::lower_bound for the lookup), we get disassembly
always consistent with the lexicographical order of the record names.