[llvm] r190318 - [mips] When double precision loads and stores are split into two i32 loads and

Akira Hatanaka ahatanaka at mips.com
Mon Sep 9 10:59:33 PDT 2013


Author: ahatanak
Date: Mon Sep  9 12:59:32 2013
New Revision: 190318

URL: http://llvm.org/viewvc/llvm-project?rev=190318&view=rev
Log:
[mips] When double precision loads and stores are split into two i32 loads and
stores, make sure the load or store that accesses the higher half does not have
an alignment that is larger than the offset from the original address.



Modified:
    llvm/trunk/lib/Target/Mips/MipsSEISelLowering.cpp

Modified: llvm/trunk/lib/Target/Mips/MipsSEISelLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsSEISelLowering.cpp?rev=190318&r1=190317&r2=190318&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Mips/MipsSEISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/Mips/MipsSEISelLowering.cpp Mon Sep  9 12:59:32 2013
@@ -645,7 +645,7 @@ SDValue MipsSETargetLowering::lowerLOAD(
   SDValue Hi = DAG.getLoad(MVT::i32, DL, Lo.getValue(1), Ptr,
                            MachinePointerInfo(), Nd.isVolatile(),
                            Nd.isNonTemporal(), Nd.isInvariant(),
-                           Nd.getAlignment());
+                           std::min(Nd.getAlignment(), 4U));
 
   if (!Subtarget->isLittle())
     std::swap(Lo, Hi);
@@ -681,8 +681,8 @@ SDValue MipsSETargetLowering::lowerSTORE
   // i32 store to higher address.
   Ptr = DAG.getNode(ISD::ADD, DL, PtrVT, Ptr, DAG.getConstant(4, PtrVT));
   return DAG.getStore(Chain, DL, Hi, Ptr, MachinePointerInfo(),
-                      Nd.isVolatile(), Nd.isNonTemporal(), Nd.getAlignment(),
-                      Nd.getTBAAInfo());
+                      Nd.isVolatile(), Nd.isNonTemporal(),
+                      std::min(Nd.getAlignment(), 4U), Nd.getTBAAInfo());
 }
 
 SDValue MipsSETargetLowering::lowerMulDiv(SDValue Op, unsigned NewOpc,





More information about the llvm-commits mailing list