A special purpose register is a special type of register that is used to store state, configuration or other important data that is relevant to the CPU in terms of computation that is not just data. Examples include the instruction register or program counter seen in CPSC 121 and CPSC 213. The stack pointer is also sometimes consider a special purpose register, though in 213 we just use the general purpose register r[5] and pretend like it’s a special purpose register.
It can only be used for special purposes, and is not valid as an argument for all instructions.