[PATCH] merge consecutive stores of extracted vector elements (PR21711)
Sanjay Patel
spatel at rotateright.com
Tue Dec 16 15:24:41 PST 2014
Hi hfinkel, andreadb, mkuper,
This patch adds 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
Note that this patch depends on http://reviews.llvm.org/D6678 to avoid even worse codegen on SandyBridge. See http://llvm.org/bugs/show_bug.cgi?id=21711#c7 for more details.
http://reviews.llvm.org/D6698
Files:
lib/CodeGen/SelectionDAG/DAGCombiner.cpp
test/CodeGen/X86/MergeConsecutiveStores.ll
EMAIL PREFERENCES
http://reviews.llvm.org/settings/panel/emailpreferences/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D6698.17369.patch
Type: text/x-patch
Size: 5758 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20141216/ee0ff3b4/attachment.bin>
More information about the llvm-commits
mailing list