For add : iadd/ladd/fadd/dadd, For sub : isub/lsub/fsub/dsub, For mul : imul/lmul/fmul/dmul For div : idiv/ldiv/fdiv/ddiv For rem : irem/lrem/frem/drem Fro neg : ineg/lneg/fneg/dneg...
Just like in real machines, you can't have the same instruction for negating a double or an int. These instructions work really different on the bit-level, and are only the same on a sufficiently high abstraction level (i.e. negate a number).
This is why we have higher level languages to abstract away uninteresting machine details. But in an assembly language, the distinction is essential.