We all know that MIPS FPU has two precisions, single or double. When I looked it in the instruction set, I found for a same operation, the instruction for single precision and double precision have no different.
For example, here from the MIPS Architecture For Programmers Volume II: , the instruction ADD.fmt
No matter it is double or single precision, the operand and function code are both same. How decoder know it is a single or double precision instruction? Or any hidden information in the 5-bit fmt region? I can not find any good answers from google, can someone explain how this instruction works?