[PATCH] D113888: [SDAG] Use UnknownSize for masked load/store MMO size

Dave Green via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Nov 18 04:51:48 PST 2021


dmgreen updated this revision to Diff 388158.
dmgreen added a comment.

Updated getMachineMemOperand overload to handle -1 sizes correctly.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D113888/new/

https://reviews.llvm.org/D113888

Files:
  llvm/include/llvm/CodeGen/MachineFunction.h
  llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
  llvm/test/CodeGen/Thumb2/mve-masked-store-mmo.ll


Index: llvm/test/CodeGen/Thumb2/mve-masked-store-mmo.ll
===================================================================
--- llvm/test/CodeGen/Thumb2/mve-masked-store-mmo.ll
+++ llvm/test/CodeGen/Thumb2/mve-masked-store-mmo.ll
@@ -11,15 +11,15 @@
 ; CHECK-NEXT:    adr r0, .LCPI0_0
 ; CHECK-NEXT:    vldrw.u32 q0, [r0]
 ; CHECK-NEXT:    add.w r0, sp, #2
-; CHECK-NEXT:    ldrb.w r1, [sp, #3]
 ; CHECK-NEXT:    vpst
 ; CHECK-NEXT:    vstrbt.8 q0, [r0]
-; CHECK-NEXT:    ldrb.w r2, [sp, #4]
 ; CHECK-NEXT:    ldrb.w r0, [sp, #2]
-; CHECK-NEXT:    ldrb.w r3, [sp, #10]
+; CHECK-NEXT:    ldrb.w r1, [sp, #3]
+; CHECK-NEXT:    ldrb.w r2, [sp, #4]
 ; CHECK-NEXT:    add r0, r1
-; CHECK-NEXT:    ldrb.w r1, [sp, #11]
+; CHECK-NEXT:    ldrb.w r3, [sp, #10]
 ; CHECK-NEXT:    add r0, r2
+; CHECK-NEXT:    ldrb.w r1, [sp, #11]
 ; CHECK-NEXT:    add r0, r3
 ; CHECK-NEXT:    add r0, r1
 ; CHECK-NEXT:    add sp, #12
Index: llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
===================================================================
--- llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
+++ llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
@@ -4336,9 +4336,7 @@
 
   MachineMemOperand *MMO = DAG.getMachineFunction().getMachineMemOperand(
       MachinePointerInfo(PtrOperand), MachineMemOperand::MOStore,
-      // TODO: Make MachineMemOperands aware of scalable
-      // vectors.
-      VT.getStoreSize().getKnownMinSize(), *Alignment, I.getAAMetadata());
+      MemoryLocation::UnknownSize, *Alignment, I.getAAMetadata());
   SDValue StoreNode =
       DAG.getMaskedStore(getMemoryRoot(), sdl, Src0, Ptr, Offset, Mask, VT, MMO,
                          ISD::UNINDEXED, false /* Truncating */, IsCompressing);
@@ -4496,22 +4494,14 @@
   const MDNode *Ranges = I.getMetadata(LLVMContext::MD_range);
 
   // Do not serialize masked loads of constant memory with anything.
-  MemoryLocation ML;
-  if (VT.isScalableVector())
-    ML = MemoryLocation::getAfter(PtrOperand);
-  else
-    ML = MemoryLocation(PtrOperand, LocationSize::precise(
-                           DAG.getDataLayout().getTypeStoreSize(I.getType())),
-                           AAInfo);
+  MemoryLocation ML = MemoryLocation::getAfter(PtrOperand, AAInfo);
   bool AddToChain = !AA || !AA->pointsToConstantMemory(ML);
 
   SDValue InChain = AddToChain ? DAG.getRoot() : DAG.getEntryNode();
 
   MachineMemOperand *MMO = DAG.getMachineFunction().getMachineMemOperand(
       MachinePointerInfo(PtrOperand), MachineMemOperand::MOLoad,
-      // TODO: Make MachineMemOperands aware of scalable
-      // vectors.
-      VT.getStoreSize().getKnownMinSize(), *Alignment, AAInfo, Ranges);
+      MemoryLocation::UnknownSize, *Alignment, AAInfo, Ranges);
 
   SDValue Load =
       DAG.getMaskedLoad(VT, sdl, InChain, Ptr, Offset, Mask, Src0, VT, MMO,
Index: llvm/include/llvm/CodeGen/MachineFunction.h
===================================================================
--- llvm/include/llvm/CodeGen/MachineFunction.h
+++ llvm/include/llvm/CodeGen/MachineFunction.h
@@ -938,7 +938,8 @@
                                           int64_t Offset, LLT Ty);
   MachineMemOperand *getMachineMemOperand(const MachineMemOperand *MMO,
                                           int64_t Offset, uint64_t Size) {
-    return getMachineMemOperand(MMO, Offset, LLT::scalar(8 * Size));
+    return getMachineMemOperand(
+        MMO, Offset, Size == ~UINT64_C(0) ? LLT() : LLT::scalar(8 * Size));
   }
 
   /// getMachineMemOperand - Allocate a new MachineMemOperand by copying


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D113888.388158.patch
Type: text/x-patch
Size: 3543 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20211118/eab2df22/attachment.bin>


More information about the llvm-commits mailing list