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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |missed-optimization
             Target|                            |arm
             Blocks|                            |53947

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
On x86_64 we manage to vectorize this with quite absymal code (for core-avx2)
with a vectorization factor of 32:

.L4:
        vmovdqu (%rax), %ymm1
        vmovdqu 64(%rax), %ymm4
        addq    $32, %rcx
        addq    $96, %rax
        vmovdqu -64(%rax), %ymm5
        vpshufb %ymm14, %ymm1, %ymm0
        vpermq  $78, %ymm0, %ymm2
        vpshufb %ymm13, %ymm1, %ymm0
        vpshufb %ymm12, %ymm5, %ymm3
        vpor    %ymm2, %ymm0, %ymm0
        vpshufb %ymm11, %ymm4, %ymm2
        vpor    %ymm3, %ymm0, %ymm0
        vpermq  $78, %ymm2, %ymm3
        vpshufb .LC5(%rip), %ymm4, %ymm2
        vpshufb .LC4(%rip), %ymm0, %ymm0
        vpor    %ymm3, %ymm2, %ymm2
        vpshufb .LC6(%rip), %ymm1, %ymm3
        vpermq  $78, %ymm3, %ymm15
        vpor    %ymm2, %ymm0, %ymm0
        vpshufb .LC7(%rip), %ymm1, %ymm3
        vpshufb .LC8(%rip), %ymm5, %ymm2
        vpor    %ymm15, %ymm3, %ymm3
        vpshufb .LC11(%rip), %ymm4, %ymm15
        vpshufb .LC14(%rip), %ymm5, %ymm5
        vpor    %ymm2, %ymm3, %ymm3
        vpshufb .LC9(%rip), %ymm4, %ymm2
        vpermq  $78, %ymm2, %ymm2
        vpshufb %ymm10, %ymm3, %ymm3
        vpor    %ymm2, %ymm15, %ymm2
        vpor    %ymm2, %ymm3, %ymm3
        vpshufb .LC12(%rip), %ymm1, %ymm2
        vpshufb .LC13(%rip), %ymm1, %ymm1
        vpermq  $78, %ymm2, %ymm2
        vpor    %ymm2, %ymm1, %ymm2
        vpshufb .LC15(%rip), %ymm4, %ymm1
        vpshufb .LC16(%rip), %ymm4, %ymm4
        vpermq  $78, %ymm1, %ymm1
        vpor    %ymm5, %ymm2, %ymm2
        vpor    %ymm1, %ymm4, %ymm4
        vpshufb %ymm10, %ymm2, %ymm2
        vpmovzxbw       %xmm0, %ymm1
        vpor    %ymm4, %ymm2, %ymm2
        vpmovzxbw       %xmm3, %ymm4
        vextracti128    $0x1, %ymm0, %xmm0
        vpmullw %ymm7, %ymm4, %ymm4
        vpmullw %ymm8, %ymm1, %ymm1
        vextracti128    $0x1, %ymm3, %xmm3
        vpmovzxbw       %xmm0, %ymm0
        vpmovzxbw       %xmm3, %ymm3
        vpmullw %ymm8, %ymm0, %ymm0
        vpmullw %ymm7, %ymm3, %ymm3
        vpaddw  %ymm4, %ymm1, %ymm1
        vpmovzxbw       %xmm2, %ymm4
        vextracti128    $0x1, %ymm2, %xmm2
        vpmovzxbw       %xmm2, %ymm2
        vpmullw %ymm6, %ymm4, %ymm4
        vpmullw %ymm6, %ymm2, %ymm2
        vpaddw  %ymm3, %ymm0, %ymm0
        vpaddw  %ymm4, %ymm1, %ymm1
        vpaddw  %ymm2, %ymm0, %ymm0
        vpsrlw  $8, %ymm1, %ymm1
        vpsrlw  $8, %ymm0, %ymm0
        vpand   %ymm1, %ymm9, %ymm1
        vpand   %ymm0, %ymm9, %ymm0
        vpackuswb       %ymm0, %ymm1, %ymm0
        vpermq  $216, %ymm0, %ymm0
        vmovdqu %ymm0, -32(%rcx)
        cmpq    %r8, %rcx
        jne     .L4


Maybe you can post what you think arm can do better here?


Referenced Bugs:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53947
[Bug 53947] [meta-bug] vectorizer missed-optimizations

Reply via email to