If there are remaining types where it ignores the addend, I think it should give an error when an addend is specified rather than silently ignoring it. Also, having as do the negation seems a little questionable. Shouldn't the assembly writer (and compiler) know that it is using a negative operand in this case and write it that way?