This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/42802] FMAs not exploited
- From: "rguenth at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 19 Jan 2010 13:08:16 -0000
- Subject: [Bug rtl-optimization/42802] FMAs not exploited
- References: <bug-42802-10053@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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