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

           Summary: [AVX] opportunity for better code with masked stores
           Product: new-bugs
           Version: trunk
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: new bugs
        AssignedTo: [email protected]
        ReportedBy: [email protected]
                CC: [email protected]


(Trying again, with description text this time).

Consider the following bitcode:

declare <8 x float> @llvm.x86.avx.maskload.ps.256(i8 *, <8 x float> %mask)
declare void @llvm.x86.avx.maskstore.ps.256(i8 *, <8 x float>, <8 x float>)

define void @foo(i8 * %ptr, <8 x float> %val, <8 x float> %mask) {
  %v0 = call <8 x float> @llvm.x86.avx.maskload.ps.256(i8 * %ptr, <8 x float>
%mask)
  %v1 = fadd <8 x float> %v0, %v0
  call void @llvm.x86.avx.maskstore.ps.256(i8 * %ptr, <8 x float> %mask, <8 x
float> %val)
  call void @llvm.x86.avx.maskstore.ps.256(i8 * %ptr, <8 x float> %mask, <8 x
float> %v1)
  ret void
}

llc -mattr=+avx generates the following:

    vmaskmovps    (%rdi), %ymm1, %ymm2
    vmaskmovps    %ymm0, %ymm1, (%rdi)
    vaddps    %ymm2, %ymm2, %ymm0
    vmaskmovps    %ymm0, %ymm1, (%rdi)

Here, the first "vmaskmovps %ymm0, %ymm1, (%rdi)" instruction has no effect, as
the vmaskmovps after the vaddps overwrites the exact same locations (since it's
using the same mask as the first store).

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs

Reply via email to