This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug rtl-optimization/42802] FMAs not exploited



------- Comment #1 from rguenth at gcc dot gnu dot org  2010-01-19 13:08 -------
Playing with patterns like

(define_insn "*fma4_fmadd<mode>4_1"
  [(set (match_operand:SSEMODEF4 0 "register_operand" "=x,x")
        (plus:SSEMODEF4
         (mult:SSEMODEF4
          (match_operand:SSEMODEF4 2 "nonimmediate_operand" "%x,x")
          (match_operand:SSEMODEF4 3 "nonimmediate_operand" "x,m"))
         (match_operand:SSEMODEF4 4 "nonimmediate_operand" "xm,x")))
     (set (match_operand:SSEMODEF4 1 "register_operand" "=x,x")
         (mult:SSEMODEF4
          (match_dup 2)
          (match_dup 3)))]
  "TARGET_FMA4 && TARGET_FUSED_MADD"
  "vmul<ssemodesuffixf4>\t{%3, %2, %1|%1, %2, %3}\n
   vadd<ssemodesuffixf4>\t{%4, %1, %0|%0, %1, %4}"
  [(set_attr "type" "ssemuladd")
   (set_attr "mode" "<MODE>")])

and trying to exploit combine doesn't work as while it combines the
multiplication and the addition into the above the subtraction
isn't combined into (of course - the separate multiplication is already
gone).

Another idea would be to use fwprop for this, instead of propagating
single-uses only propagate also if propagation into all uses is possible.


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2010-01-19 13:08:16
               date|                            |


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]