Skip to content

Conversation

@vporpo
Copy link
Contributor

@vporpo vporpo commented Oct 9, 2024

No description provided.

@llvmbot
Copy link
Member

llvmbot commented Oct 9, 2024

@llvm/pr-subscribers-llvm-transforms

Author: vporpo (vporpo)

Changes

Full diff: https://github.com/llvm/llvm-project/pull/111715.diff

2 Files Affected:

  • (modified) llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/DependencyGraph.h (-1)
  • (modified) llvm/lib/Transforms/Vectorize/SandboxVectorizer/DependencyGraph.cpp (+6-8)
diff --git a/llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/DependencyGraph.h b/llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/DependencyGraph.h
index b1fe67d446be0a..134adc4b21ab12 100644
--- a/llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/DependencyGraph.h
+++ b/llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/DependencyGraph.h
@@ -173,7 +173,6 @@ class DependencyGraph {
   enum class DependencyType {
     ReadAfterWrite,  ///> Memory dependency write -> read
     WriteAfterWrite, ///> Memory dependency write -> write
-    ReadAfterRead,   ///> Memory dependency read -> read
     WriteAfterRead,  ///> Memory dependency read -> write
     Control,         ///> Control-related dependency, like with PHI/Terminator
     Other,           ///> Currently used for stack related instrs
diff --git a/llvm/lib/Transforms/Vectorize/SandboxVectorizer/DependencyGraph.cpp b/llvm/lib/Transforms/Vectorize/SandboxVectorizer/DependencyGraph.cpp
index 35ea28697424a6..81bc93b43af89a 100644
--- a/llvm/lib/Transforms/Vectorize/SandboxVectorizer/DependencyGraph.cpp
+++ b/llvm/lib/Transforms/Vectorize/SandboxVectorizer/DependencyGraph.cpp
@@ -62,8 +62,6 @@ DependencyGraph::getRoughDepType(Instruction *FromI, Instruction *ToI) {
   } else if (FromI->mayReadFromMemory()) {
     if (ToI->mayWriteToMemory())
       return DependencyType::WriteAfterRead;
-    if (ToI->mayReadFromMemory())
-      return DependencyType::ReadAfterRead;
   }
   if (isa<sandboxir::PHINode>(FromI) || isa<sandboxir::PHINode>(ToI))
     return DependencyType::Control;
@@ -103,7 +101,7 @@ bool DependencyGraph::alias(Instruction *SrcI, Instruction *DstI,
   // TODO: Check AABudget
   ModRefInfo SrcModRef =
       isOrdered(SrcI)
-          ? ModRefInfo::Mod
+          ? ModRefInfo::ModRef
           : Utils::aliasAnalysisGetModRefInfo(*BatchAA, SrcI, *DstLocOpt);
   switch (DepType) {
   case DependencyType::ReadAfterWrite:
@@ -119,8 +117,6 @@ bool DependencyGraph::alias(Instruction *SrcI, Instruction *DstI,
 bool DependencyGraph::hasDep(Instruction *SrcI, Instruction *DstI) {
   DependencyType RoughDepType = getRoughDepType(SrcI, DstI);
   switch (RoughDepType) {
-  case DependencyType::ReadAfterRead:
-    return false;
   case DependencyType::ReadAfterWrite:
   case DependencyType::WriteAfterWrite:
   case DependencyType::WriteAfterRead:
@@ -174,9 +170,11 @@ Interval<Instruction> DependencyGraph::extend(ArrayRef<Instruction *> Instrs) {
   }
   // Create the dependencies.
   auto DstRange = MemDGNodeIntervalBuilder::make(InstrInterval, *this);
-  for (MemDGNode &DstN : drop_begin(DstRange)) {
-    auto SrcRange = Interval<MemDGNode>(DstRange.top(), DstN.getPrevNode());
-    scanAndAddDeps(DstN, SrcRange);
+  if (!DstRange.empty()) {
+    for (MemDGNode &DstN : drop_begin(DstRange)) {
+      auto SrcRange = Interval<MemDGNode>(DstRange.top(), DstN.getPrevNode());
+      scanAndAddDeps(DstN, SrcRange);
+    }
   }
 
   return InstrInterval;

@vporpo vporpo merged commit ee0e17a into llvm:main Oct 9, 2024
9 of 11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants