On Oct 1, 2012, at 2:51 PM, Richard Sandiford wrote:
> ...
> E.g. for MIPS, SImode loads and stores have a displacement range of
> [-32768, 32764], but DImode loads and stores only accept [-32768, 32760].
> So the maximal displacement depends on mode, even though the instruction set
> is pretty regular.
It may be that the case doesn't arise in code GCC generates, but I don't think
that's true. The offset field is always a 2's complement 16 bit integer, hence
in the range -32768..32767. The alignment required in loading multibyte data
with aligned load/store instructions applies to the final address, not the
offset. For example, if R1 contains 1, then LD r2,32767(r1) will work.
paul