Skip to content

Commit 9eed498

Browse files
committed
add hasState check
1 parent a755143 commit 9eed498

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10023,7 +10023,7 @@ void BoUpSLP::transformNodes() {
1002310023

1002410024
if (LoadEntriesToVectorize.empty()) {
1002510025
// Single load node - exit.
10026-
if (VectorizableTree.size() <= 1 &&
10026+
if (VectorizableTree.size() <= 1 && VectorizableTree.front()->hasState() &&
1002710027
VectorizableTree.front()->getOpcode() == Instruction::Load)
1002810028
return;
1002910029
// Small graph with small VF - exit.
@@ -18141,8 +18141,9 @@ static RecurKind getRdxKind(Value *V);
1814118141
void BoUpSLP::computeMinimumValueSizes() {
1814218142
// We only attempt to truncate integer expressions.
1814318143
bool IsStoreOrInsertElt =
18144-
VectorizableTree.front()->getOpcode() == Instruction::Store ||
18145-
VectorizableTree.front()->getOpcode() == Instruction::InsertElement;
18144+
VectorizableTree.front()->hasState() &&
18145+
(VectorizableTree.front()->getOpcode() == Instruction::Store ||
18146+
VectorizableTree.front()->getOpcode() == Instruction::InsertElement);
1814618147
if ((IsStoreOrInsertElt || UserIgnoreList) &&
1814718148
ExtraBitWidthNodes.size() <= 1 &&
1814818149
(!CastMaxMinBWSizes || CastMaxMinBWSizes->second == 0 ||

llvm/test/Transforms/SLPVectorizer/InstructionsState-is-invalid-2.ll

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,13 @@
22
; RUN: opt -passes=slp-vectorizer -S %s | FileCheck %s
33

44
define i32 @test(i32 %minlib) {
5+
; CHECK-LABEL: @test(
6+
; CHECK-NEXT: entry:
7+
; CHECK-NEXT: [[MUL2_I306:%.*]] = mul i32 [[MINLIB:%.*]], [[MINLIB]]
8+
; CHECK-NEXT: [[MUL3_I307:%.*]] = mul i32 [[MUL2_I306]], [[MINLIB]]
9+
; CHECK-NEXT: [[CMP183:%.*]] = icmp sgt i32 [[MUL3_I307]], 0
10+
; CHECK-NEXT: ret i32 0
11+
;
512
entry:
613
%mul2.i306 = mul i32 %minlib, %minlib
714
%mul3.i307 = mul i32 %mul2.i306, %minlib

0 commit comments

Comments
 (0)