https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65084

--- Comment #7 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
I see the first testcase produces:
.L2:
        vpand   a+32(%rax), %ymm4, %ymm1
        vpand   a(%rax), %ymm4, %ymm0
        addq    $64, %rax
        vpaddw  b-32(%rax), %ymm2, %ymm5
        vpackuswb       %ymm1, %ymm0, %ymm0
        vpermq  $216, %ymm0, %ymm0
        vextracti128    $0x1, %ymm0, %xmm1
        vpmovsxbw       %xmm0, %ymm0
        vpmovsxbw       %xmm1, %ymm1
        vpaddw  %ymm3, %ymm0, %ymm0
        vpaddw  %ymm3, %ymm1, %ymm1
        vpaddw  %ymm5, %ymm1, %ymm1
        vpaddw  b-64(%rax), %ymm2, %ymm5
        vmovdqa %ymm1, a-32(%rax)
        vpaddw  %ymm5, %ymm0, %ymm0
        vmovdqa %ymm0, a-64(%rax)
        cmpq    $2048, %rax
        jne     .L2

While the second one produces:
.L6:
        vmovdqa a(%rax), %ymm3
        vpaddw  b(%rax), %ymm2, %ymm1
        addq    $32, %rax
        vpsllw  $8, %ymm3, %ymm0
        vpsraw  $8, %ymm0, %ymm0
        vpaddw  %ymm1, %ymm0, %ymm0
        vmovdqa %ymm0, a-32(%rax)
        cmpq    $2048, %rax
        jne     .L6

Reply via email to