[SLPVectorizer][SVE] Bail out early for scalable vector.
authorHuihui Zhang <huihuiz@quicinc.com>
Fri, 13 Mar 2020 18:23:01 +0000 (11:23 -0700)
committerHuihui Zhang <huihuiz@quicinc.com>
Fri, 13 Mar 2020 18:23:31 +0000 (11:23 -0700)
commitfc1f205745003eeeabd4ee356dea7e5c7fa4fd64
treed3324708aa9218397dd2c899d9c536d832f380db
parent842ea709e4ed881c2bc59155af5df910eccda9c6
[SLPVectorizer][SVE] Bail out early for scalable vector.

Summary:
SLPVectorizer try to vectorize list of scalar instructions of the same type,
instructions already vectorized are rejected through isValidElementType().

Without this patch, tryToVectorizeList() will first try to determine vectorization
factor of a list of Instructions before checking whether each instruction has unsupported
type or not. For instructions already vectorized for SVE, it will crash at getVectorElementSize(),
where it try to return a fixed size.

This patch make sure invalid element types are rejected before trying to get vectorization
factor. This make sure we are not trying to vectorize instructions already vectorized.

Reviewers: sdesmalen, efriedma, spatel, RKSimon, ABataev, apazos, rengolin

Reviewed By: efriedma

Subscribers: tschuett, hiraditya, rkruppe, psnobl, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D76017
llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
llvm/test/Transforms/SLPVectorizer/AArch64/invalid_type.ll [new file with mode: 0644]
llvm/test/Transforms/SLPVectorizer/AArch64/scalable-vector.ll [new file with mode: 0644]