diff options
author | Sanjay Patel <spatel@rotateright.com> | 2014-12-19 20:23:41 +0000 |
---|---|---|
committer | Sanjay Patel <spatel@rotateright.com> | 2014-12-19 20:23:41 +0000 |
commit | 0428a5786e5578552e7f660ba133aecf95d724eb (patch) | |
tree | a30df49b4313e9d6f23deaa1ec9cffb7241c0775 /llvm/lib/Object/MachOObjectFile.cpp | |
parent | 38ce8cd2e208921c02b2cc848135866a478de48c (diff) | |
download | llvm-0428a5786e5578552e7f660ba133aecf95d724eb.zip llvm-0428a5786e5578552e7f660ba133aecf95d724eb.tar.gz llvm-0428a5786e5578552e7f660ba133aecf95d724eb.tar.bz2 |
merge consecutive stores of extracted vector elements
Add a path to DAGCombiner::MergeConsecutiveStores()
to combine multiple scalar stores when the store operands
are extracted vector elements. This is a partial fix for
PR21711 ( http://llvm.org/bugs/show_bug.cgi?id=21711 ).
For the new test case, codegen improves from:
vmovss %xmm0, (%rdi)
vextractps $1, %xmm0, 4(%rdi)
vextractps $2, %xmm0, 8(%rdi)
vextractps $3, %xmm0, 12(%rdi)
vextractf128 $1, %ymm0, %xmm0
vmovss %xmm0, 16(%rdi)
vextractps $1, %xmm0, 20(%rdi)
vextractps $2, %xmm0, 24(%rdi)
vextractps $3, %xmm0, 28(%rdi)
vzeroupper
retq
To:
vmovups %ymm0, (%rdi)
vzeroupper
retq
Patch reviewed by Nadav Rotem.
Differential Revision: http://reviews.llvm.org/D6698
llvm-svn: 224611
Diffstat (limited to 'llvm/lib/Object/MachOObjectFile.cpp')
0 files changed, 0 insertions, 0 deletions