Skip to content

Commit c4d29ac

Browse files
committed
add hasState check
1 parent d865544 commit c4d29ac

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12097,7 +12097,7 @@ bool BoUpSLP::isTreeTinyAndNotFullyVectorizable(bool ForReduction) const {
1209712097
// somewhere.
1209812098
bool IsAllowedSingleBVNode =
1209912099
VectorizableTree.size() > 1 ||
12100-
(VectorizableTree.size() == 1 && VectorizableTree.front()->getOpcode() &&
12100+
(VectorizableTree.size() == 1 && VectorizableTree.front()->hasState() &&
1210112101
!VectorizableTree.front()->isAltShuffle() &&
1210212102
VectorizableTree.front()->getOpcode() != Instruction::PHI &&
1210312103
VectorizableTree.front()->getOpcode() != Instruction::GetElementPtr &&

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,15 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:
55
target triple = "x86_64-unknown-linux-gnu"
66

77
define void @_Z4blurN6Halide5Tools5ImageItEE(i1 %0, i1 %1, i1 %ident.check, i1 %ident.check56) {
8+
; CHECK-LABEL: @_Z4blurN6Halide5Tools5ImageItEE(
9+
; CHECK-NEXT: entry:
10+
; CHECK-NEXT: [[TMP2:%.*]] = or i1 [[TMP0:%.*]], [[TMP1:%.*]]
11+
; CHECK-NEXT: [[TMP3:%.*]] = or i1 [[IDENT_CHECK:%.*]], [[IDENT_CHECK56:%.*]]
12+
; CHECK-NEXT: [[TMP4:%.*]] = or i1 [[TMP3]], [[TMP2]]
13+
; CHECK-NEXT: br i1 [[TMP4]], label [[FOR_BODY6_US_I_I:%.*]], label [[FOR_BODY6_US_I_I]]
14+
; CHECK: for.body6.us.i.i:
15+
; CHECK-NEXT: ret void
16+
;
817
entry:
918
%2 = or i1 %0, %1
1019
%3 = or i1 %ident.check, %ident.check56

0 commit comments

Comments
 (0)