This is an archive of the discontinued LLVM Phabricator instance.

[mips][mips64r6] [ls][dw][lr] are not available in MIPS32r6/MIPS64r6
ClosedPublic

Authored by dsanders on May 22 2014, 5:18 AM.

Details

Summary

Instead the system is required to provide some means of handling unaligned
load/store without special instructions. Options include full hardware
support, full trap-and-emulate, and hybrids such as hardware support within
a cache line and trap-and-emulate for multi-line accesses.

MipsSETargetLowering::allowsUnalignedMemoryAccesses() has been configured to
assume that unaligned accesses are 'fast' on the basis that I expect few
hardware implementations will opt for pure-software handling of unaligned
accesses. The ones that do handle it purely in software can override this.

mips64-load-store-left-right.ll has been merged into load-store-left-right.ll

The stricter testing revealed a Bits!=Bytes bug in passByValArg(). This has
been fixed and the variables renamed to clarify the units they hold.

Diff Detail

Event Timeline

dsanders updated this revision to Diff 9692.May 22 2014, 5:18 AM
dsanders retitled this revision from to [mips][mips64r6] [ls][dw][lr] are not available in MIPS32r6/MIPS64r6.
dsanders updated this object.
dsanders edited the test plan for this revision. (Show Details)
vmedic accepted this revision.May 23 2014, 3:19 AM
vmedic edited edge metadata.

LGTM

This revision is now accepted and ready to land.May 23 2014, 3:19 AM
dsanders closed this revision.May 23 2014, 6:25 AM
test/CodeGen/Mips/load-store-left-right.ll