[LLVMbugs] [Bug 15462] New: Inefficient zeroing sequence on Sandybridge

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Wed Mar 6 15:50:44 PST 2013


http://llvm.org/bugs/show_bug.cgi?id=15462

            Bug ID: 15462
           Summary: Inefficient zeroing sequence on Sandybridge
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: All
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Backend: X86
          Assignee: unassignedbugs at nondot.org
          Reporter: nrotem at apple.com
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified

The following IR sequence is combined during DAGCombine into a wide 256-bit
store. 

define void @foo(i64* %p) {
 store i64 0, i64* %p
 %q = getelementptr i64* %p, i64 1
 store i64 0, i64* %q
 %r = getelementptr i64* %p, i64 2
 store i64 0, i64* %r
 %s = getelementptr i64* %p, i64 3
 store i64 0, i64* %s
 ret void
}


But the lowering of Store operations does not know that this is a zero and it
creates a split store which is inefficient.

bin/Debug/llc -O2 -mtriple=x86_64-apple-darwin12 
    .section    __TEXT,__text,regular,pure_instructions
    .globl    _foo
    .align    4, 0x90
_foo:                                   ## @foo
    .cfi_startproc
## BB#0:
    vxorps    %xmm0, %xmm0, %xmm0
    vextractf128    $1, %ymm0, %xmm1   <-------- bah
    vmovups    %xmm1, 16(%rdi)            <-------- bah
    vmovups    %xmm0, (%rdi)
    vzeroupper
    ret

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20130306/2aa19a3e/attachment.html>


More information about the llvm-bugs mailing list