Port the wide immediate case from AArch64DAGToDAGISel::SelectAddrModeXRO.
If we have a wide immediate which can't be represented in an add, we can end up with code like this:
mov x0, imm add x1, base, x0 ldr x2, [x1, 0]
If we use the [base, xN] addressing mode instead, we can produce this:
mov x0, imm ldr x2, [base, x0]
This saves 0.4% code size on 7zip at -O3, and gives a geomean code size improvement of 0.1% on CTMark.