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

            Bug ID: 102604
           Summary: arm v7m_extra_costs for SFmode inaccurate?
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: clyon at gcc dot gnu.org
  Target Milestone: ---

I have noticed that gcc.target/arm/vfp-1.c fails when targeting cortex-m7
(-mthumb -mfloat-abi=hard -march=armv7e-m+fp.dp):

FAIL: gcc.target/arm/vfp-1.c scan-assembler vmla.f32
FAIL: gcc.target/arm/vfp-1.c scan-assembler vmls.f32
FAIL: gcc.target/arm/vfp-1.c scan-assembler vnmla.f32
FAIL: gcc.target/arm/vfp-1.c scan-assembler vnmls.f32

The DP (f64) versions PASS.

This is because v7m_extra_costs for SP contains:
      COSTS_N_INSNS (2),        /* mult.  */
      COSTS_N_INSNS (5),        /* mult_addsub.  */
      COSTS_N_INSNS (1),        /* addsub.  */

So when combine tries to replace mutl + addsub into a single mult_addsub, the
cost of the latter is still higher than two separate instructions.
I suppose these values are the result of benchmarking, but it seems to mean
that vmla is never going to be selected by the compiler.

Reply via email to