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

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
.L30:
        vmovdqu32       (%rax), %zmm2
        vmovdqu32       (%rdx,%rax), %zmm0
        vmovdqu32       64(%rax), %zmm3
        vmovdqu32       64(%rdx,%rax), %zmm4
        subq    $-128, %rax
        vmovdqa32       %zmm0, %zmm1
        vmovdqa32       %zmm2, %zmm7
        vpermt2d        %zmm4, %zmm5, %zmm0
        vpermt2d        %zmm3, %zmm5, %zmm2
        vpmaxsd %zmm2, %zmm0, %zmm0
        vpermt2d        %zmm4, %zmm6, %zmm1
        vpermt2d        %zmm3, %zmm6, %zmm7
        vpminsd %zmm7, %zmm1, %zmm1
        vmovdqa32       %zmm1, %zmm2
        vpermt2d        %zmm0, %zmm8, %zmm1
        vmovdqu32       %zmm1, -64(%rax)
        vpermt2d        %zmm0, %zmm9, %zmm2
        vmovdqu32       %zmm2, -128(%rax)
        cmpq    %rax, %rsi
        jne     .L30

the VF seems a factor of two too high though due to the way we lower the
interleaving scheme and us forcing a constant vector size.

Reply via email to