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

Devin Hussey <husseydevin at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |husseydevin at gmail dot com

--- Comment #4 from Devin Hussey <husseydevin at gmail dot com> ---
Strangely, this doesn't seem to affect the ARM or aarch64 backends, although I
am on a December build (specifically Dec 29). 8.2 is also unaffected.

arm-none-eabi-gcc -mfloat-abi=hard -mfpu=neon -march=armv7-a -O3 -S test.c

test:
    vldmia  r1, {d0-d7}
    vldmia  r2, {d24-d31}
    vadd.i32    q8, q0, q12
    vadd.i32    q9, q1, q13
    vadd.i32    q10, q2, q14
    vadd.i32    q11, q3, q15
    vstmia  r0, {d16-d23}
    bx  lr

aarch64-none-eabi-gcc -O3 -S test.c

test:
        ld1     {v16.16b - v19.16b}, [x1]
        ld1     {v4.16b - v7.16b}, [x2]
        add     v0.4s, v16.4s, v4.4s
        add     v1.4s, v17.4s, v5.4s
        add     v2.4s, v18.4s, v6.4s
        add     v3.4s, v19.4s, v7.4s
        st1     {v0.16b - v3.16b}, [x0]
        ret

Amusingly, Clang trunk for ARMv7-a has a similar issue (aarch64 is fine).

test:
        .fnstart
        .save   {r11, lr}
        push    {r11, lr}
        add     r3, r1, #48
        mov     lr, r1
        mov     r12, r2
        vld1.64 {d20, d21}, [r3]
        add     r3, r2, #48
        add     r1, r1, #32
        vld1.32 {d16, d17}, [lr]!
        vld1.32 {d18, d19}, [r12]!
        vadd.i32        q8, q9, q8
        vld1.64 {d22, d23}, [r3]
        vadd.i32        q10, q11, q10
        vld1.64 {d26, d27}, [r1]
        add     r1, r2, #32
        vld1.64 {d28, d29}, [r1]
        add     r1, r0, #48
        vadd.i32        q11, q14, q13
        vld1.64 {d24, d25}, [lr]
        vld1.64 {d18, d19}, [r12]
        vadd.i32        q9, q9, q12
        vst1.64 {d20, d21}, [r1]
        add     r1, r0, #32
        vst1.32 {d16, d17}, [r0]!
        vst1.64 {d22, d23}, [r1]
        vst1.64 {d18, d19}, [r0]
        pop     {r11, pc}

Reply via email to