[llvm] r321594 - [X86] Cleanup store splitting in LowerTruncatingStore

Craig Topper via llvm-commits llvm-commits at lists.llvm.org
Sat Dec 30 23:38:26 PST 2017


Author: ctopper
Date: Sat Dec 30 23:38:26 2017
New Revision: 321594

URL: http://llvm.org/viewvc/llvm-project?rev=321594&view=rev
Log:
[X86] Cleanup store splitting in LowerTruncatingStore

Use getMemBasePlusOffset and calculate proper pointer info and alignment for the second store.

Modified:
    llvm/trunk/lib/Target/X86/X86ISelLowering.cpp

Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=321594&r1=321593&r2=321594&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Sat Dec 30 23:38:26 2017
@@ -18718,6 +18718,7 @@ static SDValue LowerTruncatingStore(SDVa
                         DAG.getUNDEF(ExtVT), Op, DAG.getIntPtrConstant(0, dl));
     }
     Op = DAG.getNode(ISD::TRUNCATE, dl, MVT::v8i1, Op);
+    Op = DAG.getBitcast(MVT::i8, Op);
     return DAG.getStore(St->getChain(), dl, Op, St->getBasePtr(),
                         St->getMemOperand());
   }
@@ -18734,12 +18735,12 @@ static SDValue LowerTruncatingStore(SDVa
                             DAG.getIntPtrConstant(16, dl));
   Hi = DAG.getNode(ISD::TRUNCATE, dl, MVT::v16i1, Hi);
 
-  SDValue BasePtrHi =
-    DAG.getNode(ISD::ADD, dl, BasePtr.getValueType(), BasePtr,
-                DAG.getConstant(2, dl, BasePtr.getValueType()));
+  SDValue BasePtrHi = DAG.getMemBasePlusOffset(BasePtr, 2, dl);
 
   SDValue StHi = DAG.getStore(St->getChain(), dl, Hi,
-                              BasePtrHi, St->getMemOperand());
+                              BasePtrHi, St->getPointerInfo().getWithOffset(2),
+                              MinAlign(St->getAlignment(), 2U),
+                              St->getMemOperand()->getFlags());
   return DAG.getNode(ISD::TokenFactor, dl, MVT::Other, StLo, StHi);
 }
 




More information about the llvm-commits mailing list