[llvm] 9c88ccf - [DAG] Stop combine for masked compressstore

Xiang1 Zhang via llvm-commits llvm-commits at lists.llvm.org
Sun Dec 11 18:41:25 PST 2022


Author: Xiang1 Zhang
Date: 2022-12-12T10:40:20+08:00
New Revision: 9c88ccf9a9bf95f323597aed697fb472058c7daa

URL: https://github.com/llvm/llvm-project/commit/9c88ccf9a9bf95f323597aed697fb472058c7daa
DIFF: https://github.com/llvm/llvm-project/commit/9c88ccf9a9bf95f323597aed697fb472058c7daa.diff

LOG: [DAG] Stop combine for masked compressstore

Reviewed By: WangPengfei

Differential Revision: https://reviews.llvm.org/D139682

Added: 
    

Modified: 
    llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
    llvm/test/CodeGen/X86/masked_compressstore_isel.ll

Removed: 
    


################################################################################
diff  --git a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
index 7c888fac32d7a..6d76680ce65bc 100644
--- a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
@@ -11030,9 +11030,10 @@ SDValue DAGCombiner::visitMSTORE(SDNode *N) {
 
   // If this is a TRUNC followed by a masked store, fold this into a masked
   // truncating store.  We can do this even if this is already a masked
-  // truncstore.
+  // truncstore or a compress store.
+  // TODO: Try combine to masked compress store if possiable.
   if ((Value.getOpcode() == ISD::TRUNCATE) && Value->hasOneUse() &&
-      MST->isUnindexed() &&
+      MST->isUnindexed() && !MST->isCompressingStore() &&
       TLI.canCombineTruncStore(Value.getOperand(0).getValueType(),
                                MST->getMemoryVT(), LegalOperations)) {
     auto Mask = TLI.promoteTargetBoolean(DAG, MST->getMask(),

diff  --git a/llvm/test/CodeGen/X86/masked_compressstore_isel.ll b/llvm/test/CodeGen/X86/masked_compressstore_isel.ll
index 5c038733df551..db1f9ae7b1f45 100644
--- a/llvm/test/CodeGen/X86/masked_compressstore_isel.ll
+++ b/llvm/test/CodeGen/X86/masked_compressstore_isel.ll
@@ -12,7 +12,8 @@ entry:
 ; CHECK-NEXT:    %0:vr256x = COPY $ymm0
 ; CHECK-NEXT:    %2:vr128x = VPSLLWZ128ri %1, 15
 ; CHECK-NEXT:    %3:vk16wm = VPMOVW2MZ128rr killed %2
-; CHECK-NEXT:    VPMOVDWZ256mrk $noreg, 1, $noreg, 0, $noreg, killed %3, %0 :: (store unknown-size into `i16* null`, align 16)
+; CHECK-NEXT:    %4:vr128x = VPMOVDWZ256rr %0
+; CHECK-NEXT:    VPCOMPRESSWZ128mrk $noreg, 1, $noreg, 0, $noreg, killed %3, killed %4 :: (store unknown-size into `i16* null`, align 16)
 ; CHECK-NEXT:    RET 0
 
 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: write)


        


More information about the llvm-commits mailing list