math-opts: Add dbgcounter for FMA formation
This patch is a simple addition of a debug counter to FMA formation in tree-ssa-math-opts.cc. Given that issues with FMAs do occasionally pop up, it seems genuinely useful. I simply added an if right after the initial checks in convert_mult_to_fma even though when FMA formation deferring is active (i.e. when targeting Zen CPUs) this would interact with it (and at this moment lead to producing all deferred candidates), so when using the dbg counter to find a harmful set of FMAs, it is probably best to also set param_avoid_fma_max_bits to zero. I could not find a better place which would not also make the code unnecessarily more complicated. gcc/ChangeLog: 2023-09-06 Martin Jambor <mjambor@suse.cz> * dbgcnt.def (form_fma): New. * tree-ssa-math-opts.cc: Include dbgcnt.h. (convert_mult_to_fma): Bail out if the debug counter say so.
This commit is contained in:
parent
2e36c4a04a
commit
27e2e7c93e
2 changed files with 5 additions and 0 deletions
|
@ -162,6 +162,7 @@ DEBUG_COUNTER (dom_unreachable_edges)
|
|||
DEBUG_COUNTER (dse)
|
||||
DEBUG_COUNTER (dse1)
|
||||
DEBUG_COUNTER (dse2)
|
||||
DEBUG_COUNTER (form_fma)
|
||||
DEBUG_COUNTER (gcse2_delete)
|
||||
DEBUG_COUNTER (gimple_unroll)
|
||||
DEBUG_COUNTER (global_alloc_at_func)
|
||||
|
|
|
@ -116,6 +116,7 @@ along with GCC; see the file COPYING3. If not see
|
|||
#include "targhooks.h"
|
||||
#include "domwalk.h"
|
||||
#include "tree-ssa-math-opts.h"
|
||||
#include "dbgcnt.h"
|
||||
|
||||
/* This structure represents one basic block that either computes a
|
||||
division, or is a common dominator for basic block that compute a
|
||||
|
@ -3366,6 +3367,9 @@ convert_mult_to_fma (gimple *mul_stmt, tree op1, tree op2,
|
|||
&& !has_single_use (mul_result))
|
||||
return false;
|
||||
|
||||
if (!dbg_cnt (form_fma))
|
||||
return false;
|
||||
|
||||
/* Make sure that the multiplication statement becomes dead after
|
||||
the transformation, thus that all uses are transformed to FMAs.
|
||||
This means we assume that an FMA operation has the same cost
|
||||
|
|
Loading…
Add table
Reference in a new issue