D135960 implemented support for symbol differences as an operand of LI.
However, it only worked when the symbol difference expression was first
stored in a symbol using .set/.equ. This patch makes sure the
expression can be used directly as an LI operand.
Note that when using -filetype=asm, the instruction printer is not
able to convert the generated ADDI back to LI, presumably because the
symbol difference expression is not recognized as an simm12 so the
alias does not match. This means a .s -> .s round-trip produces an
ADDI instruction where there used to be an LI. Since ADDI doesn't
currently accept symbol difference expressions, the result of the
round-trip is rejected by MC.
I'm not quite sure what the best way forward is here. Is there a way to
recognize this alias without implementing support for symbol differences
for ADDI (which would be a separate patch)? Or can we just ignore this
issue for now as it seems unlikely to cause problems?