[llvm] [X86] LowerStore - always split 512-bit concatenated stores (PR #143426)
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 9 12:16:09 PDT 2025
https://github.com/RKSimon created https://github.com/llvm/llvm-project/pull/143426
All BWI regressions have now been addressed, so remove the special case handling.
>From 204fb7013561ac831db55b68f061cd7f9dd1056d Mon Sep 17 00:00:00 2001
From: Simon Pilgrim <llvm-dev at redking.me.uk>
Date: Mon, 9 Jun 2025 20:15:39 +0100
Subject: [PATCH] [X86] LowerStore - always split 512-bit concatenated stores
All BWI regressions have now been addressed, so remove the special case handling.
---
llvm/lib/Target/X86/X86ISelLowering.cpp | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 9ea45513cc019..0cae8dbcc3bc7 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