[Bug target/27619] wrong code for mixed-mode division with -mpowerpc64 -O1

rguenth at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Tue May 16 17:16:00 GMT 2006



------- Comment #3 from rguenth at gcc dot gnu dot org  2006-05-16 17:16 -------
-m64 asm:

.L.main:
        mflr %r0
        std %r0,16(%r1)
        stdu %r1,-128(%r1)
        ld %r9,.LC0@toc(%r2)
        lwa %r0,0(%r9)
        sradi %r9,%r0,53
        rldicl %r11,%r0,0,53
        addi %r9,%r9,1
        addi %r11,%r11,2047
        cmpldi %cr7,%r9,2
        or %r11,%r11,%r0
        rldicr %r11,%r11,0,52
        bge %cr7,.L3
        mr %r11,%r0
.L3:
        std %r11,112(%r1)
        lfd %f0,112(%r1)
        fcfid %f0,%f0
        frsp %f13,%f0
        ld %r9,.LC1@toc(%r2)
        lfs %f0,0(%r9)
        fdivs %f13,%f13,%f0
        lfs %f0,.LC3@toc(%r2)
        fcmpu %cr7,%f13,%f0
        beq %cr7,.L2
        bl abort
        nop
.L2:
        li %r3,0
        addi %r1,%r1,128
        ld %r0,16(%r1)
        mtlr %r0
        blr
        .long 0
        .byte 0,0,0,1,128,0,0,0
        .size   main,.-.L.main
        .globl i
        .section        ".data"
        .align 2
        .type   i, @object
        .size   i, 4
i:
        .long   274
        .globl f
        .align 2
        .type   f, @object
        .size   f, 4
f:
        .long   1065353216


-mpowerpc64:

main:
        stwu %r1,-16(%r1)
        mflr %r0
        stw %r0,20(%r1)
        lis %r9,i@ha
        lwa %r0,i@l(%r9)
        sradi %r9,%r0,53
        rldicl %r11,%r0,0,53
        addi %r9,%r9,1
        addi %r11,%r11,2047
        cmpldi %cr7,%r9,2
        or %r11,%r11,%r0
        rldicr %r11,%r11,0,52
        bge %cr7,.L3
        mr %r11,%r0
.L3:
        std %r11,8(%r1)
        lfd %f0,8(%r1)
        fcfid %f0,%f0
        frsp %f13,%f0
        lis %r9,f@ha
        lfs %f0,f@l(%r9)
        fdivs %f13,%f13,%f0
        lis %r9,.LC1@ha
        lfs %f0,.LC1@l(%r9)
        fcmpu %cr7,%f13,%f0
        beq %cr7,.L2
        bl abort
.L2:
        li %r3,0
        lwz %r0,20(%r1)
        mtlr %r0
        addi %r1,%r1,16
        blr
        .size   main,.-main
        .globl i
        .section        .sdata,"aw",@progbits
        .align 2
        .type   i, @object
        .size   i, 4
i:
        .long   274
        .globl f
        .align 2
        .type   f, @object
        .size   f, 4
f:
        .long   1065353216


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27619



More information about the Gcc-bugs mailing list