[SLP] Enhance SLPVectorizer to vectorize vector aggregate
authorAnton Afanasyev <anton.a.afanasyev@gmail.com>
Mon, 11 Nov 2019 08:29:10 +0000 (11:29 +0300)
committerAnton Afanasyev <anton.a.afanasyev@gmail.com>
Fri, 22 Nov 2019 17:01:59 +0000 (20:01 +0300)
commit80cd6b6e043f04ff7cb525bc1f09ab1f6400e9db
treee1417bdb3463edb14c883c49b67d69acbd703475
parent70a3c9f55f8494829d06caae0ab988da518d0e15
[SLP] Enhance SLPVectorizer to vectorize vector aggregate

Summary:
Vector aggregate is homogeneous aggregate of vectors like `{ <2 x float>, <2 x float> }`.
This patch allows `findBuildAggregate()` to consider vector aggregates as
well as scalar ones. For instance, `{ <2 x float>, <2 x float> }` maps to `<4 x float>`.

Fixes vector part of llvm.org/PR42022

Reviewers: RKSimon

Subscribers: hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D70068
llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
llvm/test/Transforms/SLPVectorizer/X86/pr42022.ll