- Load large immediate into general register:
mov imm,%rn (where the immediate does
not fit within a signed 16-bit field) will be expanded into:
- Load/store with relocatable address expression:
For example, the pseudo-instruction
will be expanded into:
The analogous expansions apply to
ld.x, st.x, fld.x, pfld.x, fst.x, and
pst.x as well.
- Signed large immediate with add/subtract:
If any of the arithmetic operations
adds, addu, subs, subu are used
with an immediate larger than 16-bits (signed), then they will be expanded.
For instance, the pseudo-instruction
adds large_imm,%rx,%rn expands to:
- Unsigned large immediate with logical operations:
Logical operations (
or, andnot, or, xor) also result in expansions.
or large_imm,%rx,%rn results in:
Similarly for the others, except for
and which expands to:
andnot (-1 - large_imm)@h,%rx,%r31
andnot (-1 - large_imm)@l,%r31,%rn