[Bug rtl-optimization/42802] FMAs not exploited
rguenth at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Tue Jan 19 13:08:00 GMT 2010
------- 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
More information about the Gcc-bugs
mailing list