Skip to content

[SandboxVec][DAG] Drop RAR and fix dependency scanning loop #111715

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Oct 9, 2024

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