Instructions:
- OpIAddCarry
- OpISubBorrow
- OpUMulExtended
- OpSMulExtended
behave identically to OpIAdd, OpISub, OpUMul and OpSMul, except that they return a pair of results; the first element of the pair is the same result that would be obtained from the normal operation.
Thus we could e.g. replace OpIAdd with OpIAddCarry into a fresh id + an extract from that fresh id into the original result of OpIAdd, and similar for the other instructions.