[llvm-bugs] [Bug 39257] New: [X86] Failure to use movss/movsd/movq/movd when element 0 of a vector load is extracted and inserted into element 0 of a zero vector

via llvm-bugs llvm-bugs at lists.llvm.org
Thu Oct 11 13:30:56 PDT 2018


https://bugs.llvm.org/show_bug.cgi?id=39257

            Bug ID: 39257
           Summary: [X86] Failure to use movss/movsd/movq/movd when
                    element 0 of a vector load is extracted and inserted
                    into element 0 of a zero vector
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: Windows NT
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Backend: X86
          Assignee: unassignedbugs at nondot.org
          Reporter: craig.topper at gmail.com
                CC: llvm-bugs at lists.llvm.org

See the 4 tests in vec_extract-avx.ll such as this

define void @legal_vzmovl_2f32_8f32(<2 x float>* %in, <8 x float>* %out) {
; X32-LABEL: legal_vzmovl_2f32_8f32:
; X32:       # %bb.0:
; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X32-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero
; X32-NEXT:    vxorps %xmm1, %xmm1, %xmm1
; X32-NEXT:    vblendps {{.*#+}} xmm0 = xmm0[0],xmm1[1,2,3]
; X32-NEXT:    vmovaps %ymm0, (%eax)
; X32-NEXT:    vzeroupper
; X32-NEXT:    retl
;
; X64-LABEL: legal_vzmovl_2f32_8f32:
; X64:       # %bb.0:
; X64-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero
; X64-NEXT:    vxorps %xmm1, %xmm1, %xmm1
; X64-NEXT:    vblendps {{.*#+}} xmm0 = xmm0[0],xmm1[1,2,3]
; X64-NEXT:    vmovaps %ymm0, (%rsi)
; X64-NEXT:    vzeroupper
; X64-NEXT:    retq
  %ld = load <2 x float>, <2 x float>* %in, align 8
  %ext = extractelement <2 x float> %ld, i64 0
  %ins = insertelement <8 x float> <float undef, float 0.0, float 0.0, float
0.0, float 0.0, float 0.0, float 0.0, float 0.0>, float %ext, i64 0
  store <8 x float> %ins, <8 x float>* %out, align 32
  ret void
}

The load size really doesn't seem to matter. The same thing happens if you use
a 8xf32 load.

-- 
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/20181011/77745ab2/attachment.html>


More information about the llvm-bugs mailing list