[llvm] 530f5b7 - [X86] LowerStore - always split 512-bit concatenated stores (#143426)

via llvm-commits llvm-commits at lists.llvm.org
Mon Jun 9 23:33:19 PDT 2025


Author: Simon Pilgrim
Date: 2025-06-10T07:33:16+01:00
New Revision: 530f5b779111034da78c3419eeda7a360c101755

URL: https://github.com/llvm/llvm-project/commit/530f5b779111034da78c3419eeda7a360c101755
DIFF: https://github.com/llvm/llvm-project/commit/530f5b779111034da78c3419eeda7a360c101755.diff

LOG: [X86] LowerStore - always split 512-bit concatenated stores (#143426)

All BWI regressions have now been addressed, so remove the special case
handling.

Added: 
    

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

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 3db7e2cbe8b93..982583c4b3650 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -25549,14 +25549,12 @@ static SDValue LowerStore(SDValue Op, const X86Subtarget &Subtarget,
   if (St->isTruncatingStore())
     return SDValue();
 
-  // If this is a 256-bit store of concatenated ops, we are better off splitting
-  // that store into two 128-bit stores. This avoids spurious use of 256-bit ops
-  // and each half can execute independently. Some cores would split the op into
-  // halves anyway, so the concat (vinsertf128) is purely an extra op.
+  // If this is a 256/512-bit store of concatenated ops, we are better off
+  // splitting that store into two half-size stores. This avoids spurious use of
+  // concatenated ops and each half can execute independently. Some cores would
+  // split the op into halves anyway, so the concat is purely an extra op.
   MVT StoreVT = StoredVal.getSimpleValueType();
-  if (StoreVT.is256BitVector() ||
-      ((StoreVT == MVT::v32i16 || StoreVT == MVT::v64i8) &&
-       !Subtarget.hasBWI())) {
+  if (StoreVT.is256BitVector() || StoreVT.is512BitVector()) {
     if (StoredVal.hasOneUse() && isFreeToSplitVector(StoredVal, DAG))
       return splitVectorStore(St, DAG);
     return SDValue();


        


More information about the llvm-commits mailing list