Sanjay Patel 3c3cd10928 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



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@224611 91177308-0d34-0410-b5e6-96231b3b80d8
2014-12-19 20:23:41 +00:00
..
2014-10-16 20:00:02 +00:00
2014-12-15 22:34:58 +00:00
2014-12-16 20:15:45 +00:00
2014-09-19 01:14:56 +00:00
2014-06-27 18:19:56 +00:00
2014-10-16 20:00:02 +00:00
2014-10-16 20:00:02 +00:00
2014-06-27 18:19:56 +00:00
2014-06-27 18:19:56 +00:00
2014-10-21 23:01:01 +00:00
2014-10-21 23:01:01 +00:00
2014-06-27 18:19:56 +00:00
2014-12-11 11:30:20 +00:00
2014-10-16 20:00:02 +00:00
2014-11-11 20:49:16 +00:00
2014-12-03 02:08:38 +00:00
2014-12-03 02:08:38 +00:00
2014-12-16 20:15:45 +00:00
2014-07-16 15:37:08 +00:00