[SLP]Fix PR58177: Improve isUndefVector function to avoid extra freeze.
authorAlexey Bataev <a.bataev@outlook.com>
Thu, 6 Oct 2022 18:01:54 +0000 (11:01 -0700)
committerAlexey Bataev <a.bataev@outlook.com>
Wed, 12 Oct 2022 14:32:54 +0000 (07:32 -0700)
commit1be3428ea05c5242fda64797538aa72c8d8f6376
tree5caa55578a7d87f7d98188534583270724bd7feb
parente0cea169f7a77996ba066d9252b22f43726c23c7
[SLP]Fix PR58177: Improve isUndefVector function to avoid extra freeze.

Freeze instruction in some cases makes codegen worse, so need to be very
careful when emitting it. Instead improve analysis in isUndefVector
function to generate mask of unused elements and use it in the analysis.

Differential Revision: https://reviews.llvm.org/D135382
llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
llvm/test/Transforms/SLPVectorizer/AArch64/tsc-s116.ll
llvm/test/Transforms/SLPVectorizer/X86/PR35865.ll
llvm/test/Transforms/SLPVectorizer/X86/buildvector-shuffle.ll
llvm/test/Transforms/SLPVectorizer/X86/insert-element-build-vector.ll
llvm/test/Transforms/SLPVectorizer/X86/resched.ll
llvm/test/Transforms/SLPVectorizer/X86/scatter-vectorize-reused-pointer.ll
llvm/test/Transforms/SLPVectorizer/X86/split-load8_2-unord.ll
llvm/test/Transforms/SLPVectorizer/X86/vec_list_bias_external_insert_shuffled.ll