Skip to content

Commit ee0e17a

Browse files
authored
[SandboxVec][DAG] Drop RAR and fix dependency scanning loop (#111715)
1 parent 4e33afe commit ee0e17a

File tree

2 files changed

+6
-9
lines changed

2 files changed

+6
-9
lines changed

llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/DependencyGraph.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,6 @@ class DependencyGraph {
173173
enum class DependencyType {
174174
ReadAfterWrite, ///> Memory dependency write -> read
175175
WriteAfterWrite, ///> Memory dependency write -> write
176-
ReadAfterRead, ///> Memory dependency read -> read
177176
WriteAfterRead, ///> Memory dependency read -> write
178177
Control, ///> Control-related dependency, like with PHI/Terminator
179178
Other, ///> Currently used for stack related instrs

llvm/lib/Transforms/Vectorize/SandboxVectorizer/DependencyGraph.cpp

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,6 @@ DependencyGraph::getRoughDepType(Instruction *FromI, Instruction *ToI) {
6262
} else if (FromI->mayReadFromMemory()) {
6363
if (ToI->mayWriteToMemory())
6464
return DependencyType::WriteAfterRead;
65-
if (ToI->mayReadFromMemory())
66-
return DependencyType::ReadAfterRead;
6765
}
6866
if (isa<sandboxir::PHINode>(FromI) || isa<sandboxir::PHINode>(ToI))
6967
return DependencyType::Control;
@@ -103,7 +101,7 @@ bool DependencyGraph::alias(Instruction *SrcI, Instruction *DstI,
103101
// TODO: Check AABudget
104102
ModRefInfo SrcModRef =
105103
isOrdered(SrcI)
106-
? ModRefInfo::Mod
104+
? ModRefInfo::ModRef
107105
: Utils::aliasAnalysisGetModRefInfo(*BatchAA, SrcI, *DstLocOpt);
108106
switch (DepType) {
109107
case DependencyType::ReadAfterWrite:
@@ -119,8 +117,6 @@ bool DependencyGraph::alias(Instruction *SrcI, Instruction *DstI,
119117
bool DependencyGraph::hasDep(Instruction *SrcI, Instruction *DstI) {
120118
DependencyType RoughDepType = getRoughDepType(SrcI, DstI);
121119
switch (RoughDepType) {
122-
case DependencyType::ReadAfterRead:
123-
return false;
124120
case DependencyType::ReadAfterWrite:
125121
case DependencyType::WriteAfterWrite:
126122
case DependencyType::WriteAfterRead:
@@ -175,9 +171,11 @@ Interval<Instruction> DependencyGraph::extend(ArrayRef<Instruction *> Instrs) {
175171
}
176172
// Create the dependencies.
177173
auto DstRange = MemDGNodeIntervalBuilder::make(InstrInterval, *this);
178-
for (MemDGNode &DstN : drop_begin(DstRange)) {
179-
auto SrcRange = Interval<MemDGNode>(DstRange.top(), DstN.getPrevNode());
180-
scanAndAddDeps(DstN, SrcRange);
174+
if (!DstRange.empty()) {
175+
for (MemDGNode &DstN : drop_begin(DstRange)) {
176+
auto SrcRange = Interval<MemDGNode>(DstRange.top(), DstN.getPrevNode());
177+
scanAndAddDeps(DstN, SrcRange);
178+
}
181179
}
182180

183181
return InstrInterval;

0 commit comments

Comments
 (0)