mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-11-01 15:17:25 +00:00
[mips][mips64r6] [ls][dw][lr] are not available in MIPS32r6/MIPS64r6
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. Reviewers: zoran.jovanovic, jkolek, vmedic Reviewed By: vmedic Differential Revision: http://reviews.llvm.org/D3872 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209512 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -202,8 +202,9 @@ SDNode* MipsDAGToDAGISel::Select(SDNode *Node) {
|
||||
#ifndef NDEBUG
|
||||
case ISD::LOAD:
|
||||
case ISD::STORE:
|
||||
assert(cast<MemSDNode>(Node)->getMemoryVT().getSizeInBits() / 8 <=
|
||||
cast<MemSDNode>(Node)->getAlignment() &&
|
||||
assert((Subtarget.systemSupportsUnalignedAccess() ||
|
||||
cast<MemSDNode>(Node)->getMemoryVT().getSizeInBits() / 8 <=
|
||||
cast<MemSDNode>(Node)->getAlignment()) &&
|
||||
"Unexpected unaligned loads/stores.");
|
||||
break;
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user