Skip to content

nir/opt_algebraic: Add fmul(a, 2.0) -> fadd(a, a)

Alyssa Rosenzweig requested to merge alyssa/mesa:nir-fmul-two into main

Investigated for Bifrost, but should be the same or cheaper for any reasonable architecture. For the compilers I maintain:

  • Bifrost - fadd can be scheduled 2x as frequently as ffma, there is no fmul separate from ffma.
  • Midgard - fadd x, x is used as a canonical form, again for easier scheduling.
  • AGX - fmul and fadd are both native ops, but fmul is heavier weight (unknown whether this is a performance issue or just power consumption). Also saves a move / uniform file slot for the constant.

Since floating point multiplication is inherently more expensive than addition, presumably this is a win for everyone else too.

Signed-off-by: Alyssa Rosenzweig alyssa@collabora.com

Merge request reports