[PATCH] D144292: [SLP] Fix infinite loop in isUndefVector.
Florian Hahn via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Sun Feb 19 13:43:13 PST 2023
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
fhahn marked an inline comment as done.
Closed by commit rGf61c9b75690e: [SLP] Fix infinite loop in isUndefVector. (authored by fhahn).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D144292/new/
https://reviews.llvm.org/D144292
Files:
llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
llvm/test/Transforms/SLPVectorizer/AArch64/insertelement.ll
Index: llvm/test/Transforms/SLPVectorizer/AArch64/insertelement.ll
===================================================================
--- llvm/test/Transforms/SLPVectorizer/AArch64/insertelement.ll
+++ llvm/test/Transforms/SLPVectorizer/AArch64/insertelement.ll
@@ -35,3 +35,25 @@
; Function Attrs: nounwind readnone speculatable willreturn
declare float @llvm.fabs.f32(float)
+
+
+define <4 x float> @insertelement_poison_lanes(ptr %0) {
+; CHECK-LABEL: @insertelement_poison_lanes(
+; CHECK-NEXT: [[INS_1:%.*]] = insertelement <4 x float> zeroinitializer, float poison, i64 0
+; CHECK-NEXT: [[INS_2:%.*]] = insertelement <4 x float> [[INS_1]], float 0.000000e+00, i64 0
+; CHECK-NEXT: [[GEP_1:%.*]] = getelementptr double, ptr [[TMP0:%.*]], i64 1
+; CHECK-NEXT: store <2 x double> <double 0.000000e+00, double 1.000000e+00>, ptr [[GEP_1]], align 8
+; CHECK-NEXT: ret <4 x float> [[INS_2]]
+;
+ %trunc.1 = fptrunc double 0.000000e+00 to float
+ %trunc.2 = fptrunc double 1.000000e+00 to float
+ %ins.1 = insertelement <4 x float> zeroinitializer, float poison, i64 0
+ %ins.2 = insertelement <4 x float> %ins.1, float %trunc.1, i64 0
+ %ext.1 = fpext float %trunc.1 to double
+ %gep.1 = getelementptr double, ptr %0, i64 1
+ store double %ext.1, ptr %gep.1, align 8
+ %ext.2 = fpext float %trunc.2 to double
+ %gep.2 = getelementptr double, ptr %0, i64 2
+ store double %ext.2, ptr %gep.2, align 8
+ ret <4 x float> %ins.2
+}
Index: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
===================================================================
--- llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+++ llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
@@ -381,9 +381,9 @@
if (!UseMask.empty()) {
const Value *Base = V;
while (auto *II = dyn_cast<InsertElementInst>(Base)) {
+ Base = II->getOperand(0);
if (isa<T>(II->getOperand(1)))
continue;
- Base = II->getOperand(0);
std::optional<unsigned> Idx = getInsertIndex(II);
if (!Idx)
continue;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D144292.498693.patch
Type: text/x-patch
Size: 2057 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230219/c5152738/attachment.bin>
More information about the llvm-commits
mailing list