Most other registers are allocatable and therefore cannot be used.
This issue was flagged by the machine verifier, because reading other registers is considered reading from an undefined register.
While working on this, I noticed that writing the stack pointer produced invalid code. But I figured that is a different issue (and I'm not sure whether it happens in practice).