x86 has had cases of the manufacturer inserting, new, undocumented opcodes at the time1.
Due to ARM holdings lack of a fab plant, there could be 'hidden' opcodes inserted by the licentiate. After using my google-fu this theory seems to be incorrect. From documentation, or past experiences -- do you know of any 'hidden mnemonics'?
Footnote 1: For example x86's 0xD6
opcode which some assemblers support as salc
(Set AL from Carry, like sbb al,al
which sets it to 0 or -1 but without updating FLAGS). https://righto.com/2023/07/undocumented-8086-instructions.html - it exists in Intel CPUs from 8086 to present in modes other than 64-bit, and in most (all?) CPUs from other vendors, too. It's still not documented in Intel manuals, but is mentioned by AMD's manual in a table of instructions not available in 64-bit mode, despite it not being documented in the rest of the manual.
https://pushbx.org/ecm/doc/insref.htm is a corrected version of NASM's appendix from when it had descriptions; you can search on [UNDOC]
in it for some other 286, 386, and 486 undocumented instructions.
Other x86 vendors have had their own undocumented opcodes, like Via C3 CPUs have an "alternate instruction set" activated by a special opcode. (See Why does Intel hide internal RISC core in their processors?, and Christopher Domas's "Breaking the x86 Instruction Set" talks about finding these and other undocumented opcodes.)
XScale can be a very visible example of such fork. Intel at the time added own instructions to provide a more media capable core.
From Intel XScale® Core Developer’s Manual:
Qualcomm
at the writing time of this post is likeIntel
but with a more closed approach. May be they don't directly add new instructions to their cores but they try to modify them in a way to give them advantage over otherARM
cores. An example to this is SIMD instructions, Qualcomm has its own co-processor calledVeNum
and that has some less limitations of register addressing as compared to ARM cores - read Michael's comment as an example.