[Bug target/88013] can't vectorize rgb to grayscale conversion code

ktkachov at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Nov 14 09:46:00 GMT 2018


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

ktkachov at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ktkachov at gcc dot gnu.org

--- Comment #5 from ktkachov at gcc dot gnu.org ---
I see vectorisation for arm (and aarch64 FWIW):
-O3 -march=armv8-a -mfpu=neon-fp-armv8 -mfloat-abi=hard

gives the loop:
.L4:
        mov     r3, lr
        add     lr, lr, #48
        vld3.8  {d16, d18, d20}, [r3]!
        vld3.8  {d17, d19, d21}, [r3]
        vmull.u8 q12, d16, d30
        vmull.u8 q1, d18, d28
        vmull.u8 q2, d19, d29
        vmull.u8 q11, d17, d31
        vmull.u8 q3, d20, d26
        vadd.i16        q12, q12, q1
        vmull.u8 q10, d21, d27
        vadd.i16        q8, q11, q2
        vadd.i16        q9, q12, q3
        vadd.i16        q8, q8, q10
        vshr.u16        q9, q9, #8
        vshr.u16        q8, q8, #8
        vmovn.i16       d20, q9
        vmovn.i16       d21, q8
        vst1.8  {q10}, [ip]!
        cmp     ip, r4
        bne     .L4

Though of course it's not as tight as the assembly given in the link


More information about the Gcc-bugs mailing list