[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