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

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

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

--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
Hmm, using a cross configured as

trunk/configure --target=armeb-none-linux-gnueabihf --with-cpu=cortex-a9
--with-fpu=neon-fp16 --enable-languages=c

and trimming the testcase to the first line I cannot reproduce the reported
assembly.  I get at -O3

        .arm
        .fpu softvfp
        .type   main, %function
main:
        @ args = 0, pretend = 0, frame = 16
        @ frame_needed = 0, uses_anonymous_args = 0
        movw    ip, #:lower16:.LANCHOR0
        push    {r4, r5, lr}
        movt    ip, #:upper16:.LANCHOR0
        mov     r0, #0
        mov     r1, r0
        mov     r2, r0
        ldr     ip, [ip]
        mov     r3, r0
        mov     r5, #3
        mov     r4, #5
        movt    r1, 4
        movt    r2, 6
        movt    r3, 8
        sub     sp, sp, #20
        sxth    ip, ip
        bfi     r1, r4, #0, #16
        add     ip, ip, #2
        sxth    lr, ip
        bfi     r0, lr, #16, #16
        cmp     ip, lr
        mov     lr, #7
        mov     ip, #9
        bfi     r0, r5, #0, #16
        bfi     r2, lr, #0, #16
        bfi     r3, ip, #0, #16
        strd    r0, [sp]
        strd    r2, [sp, #8]
        bne     .L5
        mov     r0, #0
        add     sp, sp, #20
        @ sp needed
        pop     {r4, r5, pc}
.L5:
        bl      abort

also the GIMPLE looks good to me, we compare only the first non-constant
element and optimized the others at compile-time.

Are you sure the first line fails?  The ones with bitwise handling look
more "interesting" (^, & and |) since vector lowering plays odd tricks there
and VN elides an intermediate VIEW_CONVERT_EXPR.

Not sure what is required to do a runtest with qemu, I can try throwing
in newlib and binutils into a combined tree, but is that enough?

Maybe Richard can help here as well.

Reply via email to