Re: "I did not know that ARM actually prohibited adding instructions"
"An executing program can't keep calling CPUID - or its equivalent - repeatedly to determine whether the next instruction in the queue can be decoded and executed or not."
I never suggested it did. I was saying that the current tidy ARM CPUID register would become more like the x86. To clarify I was comparing how this change would be handled on the ARM ISA to how this functionality was implemented within the x86 ISA - I was not considering other ISA's.
In terms of functionality, CPUID usually determines what functions will be used at runtime - i.e. either via the OS checking and loading appropriate binaries/libraries to support the optimised/general purpose functionality or the checks are done at application level if you need the improved functionality but to retain compatibility with older OS's. As long as you default to the general purpose instructions if a CPUID check fails, you should be able to support all of the different ISA variations.
The mess I was referring to was how ugly the x86 CPUID flags have become with multiple vendors and similar functions implemented in different ways, occasionally resulting in sub-optimal code being used for some functions such as SIMD extensions. I hope ARM has a more structured approach.