]> granicus.if.org Git - llvm/commit
[SLP] Vectorize jumbled memory loads.
authorMohammad Shahid <Asghar-ahmad.Shahid@amd.com>
Wed, 20 Sep 2017 08:18:28 +0000 (08:18 +0000)
committerMohammad Shahid <Asghar-ahmad.Shahid@amd.com>
Wed, 20 Sep 2017 08:18:28 +0000 (08:18 +0000)
commit0acc54b75cd651682a878ce4b4c244f5bc04a9ba
tree1de3087c2ce27e336d78b6d189f243cf96af3728
parent1f42b922025d6759b7803f73203e8b6258f85044
[SLP] Vectorize jumbled memory loads.

Summary:
This patch tries to vectorize loads of consecutive memory accesses, accessed
in non-consecutive or jumbled way. An earlier attempt was made with patch D26905
which was reverted back due to some basic issue with representing the 'use mask' of
jumbled accesses.

This patch fixes the mask representation by recording the 'use mask' in the usertree entry.

Change-Id: I9fe7f5045f065d84c126fa307ef6ebe0787296df

Reviewers: mkuper, loladiro, Ayal, zvi, danielcdh

Reviewed By: Ayal

Subscribers: mzolotukhin

Differential Revision: https://reviews.llvm.org/D36130

Commit after rebase for patch D36130

Change-Id: I8add1c265455669ef288d880f870a9522c8c08ab

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313736 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Analysis/LoopAccessAnalysis.h
lib/Analysis/LoopAccessAnalysis.cpp
lib/Transforms/Vectorize/SLPVectorizer.cpp
test/Transforms/SLPVectorizer/X86/jumbled-load-multiuse.ll
test/Transforms/SLPVectorizer/X86/jumbled-load-shuffle-placement.ll [new file with mode: 0644]
test/Transforms/SLPVectorizer/X86/jumbled-load.ll
test/Transforms/SLPVectorizer/X86/store-jumbled.ll