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

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

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

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
combine first makes recog pick negsf2_i387_1:

Trying 6 -> 7:
    6: r87:V4SF=[`*.LC0']
      REG_EQUAL const_vector
    7: {r86:SF=-r84:SF;use r87:V4SF;clobber flags:CC;}
      REG_DEAD r87:V4SF
      REG_UNUSED flags:CC
Successfully matched this instruction:
(parallel [
        (set (reg:SF 86) 
            (neg:SF (reg/v:SF 84 [ a ])))
        (use (mem/u/c:V4SF (symbol_ref/u:DI ("*.LC0") [flags 0x2]) [0  S16
A128]))
        (clobber (reg:CC 17 flags))
    ])
allowing combination of insns 6 and 7
original costs 8 + 4 = 12
replacement cost 4

...

(insn 7 6 8 2 (parallel [
            (set (reg:SF 86)
                (neg:SF (reg:SF 88))) 
            (clobber (reg:CC 17 flags))
        ]) "t.i":3:12 595 {*negsf2_i387_1}
     (expr_list:REG_UNUSED (reg:CC 17 flags)
        (nil)))
(insn 8 7 13 2 (set (reg:SF 85)
        (div:SF (reg:SF 86)
            (reg:SF 88))) "t.i":3:15 965 {*fop_sf_1}
     (expr_list:REG_DEAD (reg:SF 88)
        (expr_list:REG_DEAD (reg:SF 86)
            (nil))))

of course we have fop_sf_1 for the division already before but that's
probably just a misnamed pattern.

Reply via email to