In the BESM-6, there is an instruction (045) to add index registers, but not to subtract them, however, there is a nearby unused opcode 047, which is made synonymous to 045 (in fairness, that's true only in the kernel mode; in the user mode it traps as illegal).
Also, there are "branch if index is zero" (34) and "branch if index is not zero" (35), but not "branch if index is less than zero" (alternatively formulated as "branch if the MSB of the index is set"). However, there is a nearby unused opcode 36 which is made completely synonymous to 34.
This makes one to think that the unimplemented functionality was intended by the initial design (no references to confirm or deny it, unfortunately), but didn't make it into the hardware for one reason or another, be it physical space constraints, timing requirements, etc.
Are there any similar Western examples of an instruction set with obviously cut corners, or is this kind of mishap specific to socialist economy?
An answer could be in the form "Here's the instruction set of CPU X with an instruction with opcode A doing foo
, but no instruction to do bar
, which would be obvious to include for completeness/orthogonality; at the same time there is an unused opcode B close to A".