[PATCH] D94869: [LV] Fix crash when computing max VF too early
Cullen Rhodes via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Feb 1 04:15:27 PST 2021
This revision was automatically updated to reflect the committed changes.
Closed by commit rG8cda227432f1: [LV] Fix crash when computing max VF too early (authored by c-rhodes).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D94869/new/
https://reviews.llvm.org/D94869
Files:
llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
llvm/test/Transforms/LoopVectorize/Hexagon/maximum-vf-crash.ll
Index: llvm/test/Transforms/LoopVectorize/Hexagon/maximum-vf-crash.ll
===================================================================
--- /dev/null
+++ llvm/test/Transforms/LoopVectorize/Hexagon/maximum-vf-crash.ll
@@ -0,0 +1,29 @@
+; RUN: opt -march=hexagon -hexagon-autohvx -loop-vectorize -S < %s 2>&1 | FileCheck %s
+
+; Check that we don't crash.
+
+; CHECK-LABEL: @f
+; CHECK: vector.body
+
+target datalayout = "e-m:e-p:32:32:32-a:0-n16:32-i64:64:64-i32:32:32-i16:16:16-i1:8:8-f32:32:32-f64:64:64-v32:32:32-v64:64:64-v512:512:512-v1024:1024:1024-v2048:2048:2048"
+target triple = "hexagon"
+
+; Function Attrs: optsize
+define i32 @f() #0 {
+entry:
+ br label %loop
+
+loop:
+ %g.016 = phi i32 [ 0, %entry ], [ %g.1.lcssa, %loop ]
+ %iv = phi i32 [ 0, %entry ], [ %iv.next, %loop ]
+ %0 = load i8, i8* undef, align 1
+ %g.1.lcssa = add i32 %g.016, undef
+ %iv.next = add nsw i32 %iv, 1
+ %exitcond = icmp eq i32 %iv.next, 0
+ br i1 %exitcond, label %exit, label %loop
+
+exit:
+ ret i32 %g.1.lcssa
+}
+
+attributes #0 = { optsize "target-features"="+hvx-length128b" }
Index: llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
===================================================================
--- llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+++ llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
@@ -5505,11 +5505,9 @@
return None;
}
- ElementCount MaxVF = computeFeasibleMaxVF(TC, UserVF);
-
switch (ScalarEpilogueStatus) {
case CM_ScalarEpilogueAllowed:
- return MaxVF;
+ return computeFeasibleMaxVF(TC, UserVF);
case CM_ScalarEpilogueNotAllowedUsePredicate:
LLVM_FALLTHROUGH;
case CM_ScalarEpilogueNotNeededUsePredicate:
@@ -5547,7 +5545,7 @@
LLVM_DEBUG(dbgs() << "LV: Cannot fold tail by masking: vectorize with a "
"scalar epilogue instead.\n");
ScalarEpilogueStatus = CM_ScalarEpilogueAllowed;
- return MaxVF;
+ return computeFeasibleMaxVF(TC, UserVF);
}
return None;
}
@@ -5564,6 +5562,7 @@
InterleaveInfo.invalidateGroupsRequiringScalarEpilogue();
}
+ ElementCount MaxVF = computeFeasibleMaxVF(TC, UserVF);
assert(!MaxVF.isScalable() &&
"Scalable vectors do not yet support tail folding");
assert((UserVF.isNonZero() || isPowerOf2_32(MaxVF.getFixedValue())) &&
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D94869.320436.patch
Type: text/x-patch
Size: 2314 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210201/bfec2713/attachment.bin>
More information about the llvm-commits
mailing list