diff options
author | Alexey Bataev <a.bataev@outlook.com> | 2024-09-13 11:30:29 -0700 |
---|---|---|
committer | Alexey Bataev <a.bataev@outlook.com> | 2024-09-13 11:30:29 -0700 |
commit | c13bf6d4a89b8d62bc6eedf68d810a4584ccc4a8 (patch) | |
tree | ea706004745edfde1679322f8001b8556fca5822 | |
parent | 98b1d01b42a4bb2e9a53bcab7589e66c5572c37f (diff) | |
download | llvm-c13bf6d4a89b8d62bc6eedf68d810a4584ccc4a8.zip llvm-c13bf6d4a89b8d62bc6eedf68d810a4584ccc4a8.tar.gz llvm-c13bf6d4a89b8d62bc6eedf68d810a4584ccc4a8.tar.bz2 |
[SLP]Return proper value for phi vectorized node
Should not return the original phi vector instruction, need to return
actual vectorized value as a result.
-rw-r--r-- | llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp | 3 | ||||
-rw-r--r-- | llvm/test/Transforms/SLPVectorizer/X86/phi-node-reshuffled-part.ll | 3 |
2 files changed, 3 insertions, 3 deletions
diff --git a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp index ac59ed3..0afe02f 100644 --- a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp +++ b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp @@ -13342,7 +13342,8 @@ Value *BoUpSLP::vectorizeTree(TreeEntry *E, bool PostponedPHIs) { assert(NewPhi->getNumIncomingValues() == PH->getNumIncomingValues() && "Invalid number of incoming values"); - return NewPhi; + assert(E->VectorizedValue && "Expected vectorized value."); + return E->VectorizedValue; } case Instruction::ExtractElement: { diff --git a/llvm/test/Transforms/SLPVectorizer/X86/phi-node-reshuffled-part.ll b/llvm/test/Transforms/SLPVectorizer/X86/phi-node-reshuffled-part.ll index 2b2ef1b..c8d34a8 100644 --- a/llvm/test/Transforms/SLPVectorizer/X86/phi-node-reshuffled-part.ll +++ b/llvm/test/Transforms/SLPVectorizer/X86/phi-node-reshuffled-part.ll @@ -10,8 +10,7 @@ define void @test() { ; CHECK: [[CONT608]]: ; CHECK-NEXT: [[TMP0:%.*]] = phi <2 x i1> [ poison, %[[CONT221_THREAD781]] ], [ zeroinitializer, %[[ENTRY]] ] ; CHECK-NEXT: [[TMP1:%.*]] = shufflevector <2 x i1> [[TMP0]], <2 x i1> poison, <4 x i32> <i32 0, i32 0, i32 0, i32 1> -; CHECK-NEXT: [[TMP2:%.*]] = shufflevector <2 x i1> [[TMP0]], <2 x i1> poison, <4 x i32> <i32 0, i32 0, i32 0, i32 3> -; CHECK-NEXT: [[TMP3:%.*]] = select <4 x i1> [[TMP2]], <4 x i1> zeroinitializer, <4 x i1> zeroinitializer +; CHECK-NEXT: [[TMP3:%.*]] = select <4 x i1> [[TMP1]], <4 x i1> zeroinitializer, <4 x i1> zeroinitializer ; CHECK-NEXT: [[TMP4:%.*]] = call <8 x i1> @llvm.vector.insert.v8i1.v4i1(<8 x i1> <i1 poison, i1 poison, i1 poison, i1 poison, i1 false, i1 false, i1 false, i1 false>, <4 x i1> [[TMP3]], i64 0) ; CHECK-NEXT: [[TMP5:%.*]] = select <8 x i1> [[TMP4]], <8 x i64> zeroinitializer, <8 x i64> zeroinitializer ; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.vector.reduce.or.v8i64(<8 x i64> [[TMP5]]) |