nir: use more nir_ffma_imm variants
authorErik Faye-Lund <kusmabite@gmail.com>
Tue, 9 May 2023 22:53:24 +0000 (23:53 +0100)
committerMarge Bot <emma+marge@anholt.net>
Thu, 25 May 2023 06:59:25 +0000 (06:59 +0000)
nir_ffma_imm has several variants that allows specific arguments to be
immediates. Use them for simplicity.

Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23179>

src/compiler/nir/nir_lower_double_ops.c
src/gallium/drivers/r600/sfn/sfn_nir_lower_alu.cpp

index 240709b..e80900b 100644 (file)
@@ -146,8 +146,8 @@ lower_rcp(nir_builder *b, nir_ssa_def *src)
     * See https://en.wikipedia.org/wiki/Division_algorithm for more details.
     */
 
-   ra = nir_ffma(b, nir_fneg(b, ra), nir_ffma(b, ra, src, nir_imm_double(b, -1)), ra);
-   ra = nir_ffma(b, nir_fneg(b, ra), nir_ffma(b, ra, src, nir_imm_double(b, -1)), ra);
+   ra = nir_ffma(b, nir_fneg(b, ra), nir_ffma_imm2(b, ra, src, -1), ra);
+   ra = nir_ffma(b, nir_fneg(b, ra), nir_ffma_imm2(b, ra, src, -1), ra);
 
    return fix_inv_result(b, ra, src, new_exp);
 }
index b9edbe5..4a8710e 100644 (file)
@@ -111,15 +111,15 @@ LowerSinCos::lower(nir_instr *instr)
    assert(alu->op == nir_op_fsin || alu->op == nir_op_fcos);
 
    auto fract = nir_ffract(b,
-                           nir_ffma(b,
-                                    nir_ssa_for_alu_src(b, alu, 0),
-                                    nir_imm_float(b, 0.15915494),
-                                    nir_imm_float(b, 0.5)));
+                           nir_ffma_imm12(b,
+                                          nir_ssa_for_alu_src(b, alu, 0),
+                                          0.15915494,
+                                          0.5));
 
    auto normalized =
       m_gxf_level != R600
          ? nir_fadd_imm(b, fract, -0.5)
-         : nir_ffma(b, fract, nir_imm_float(b, 2.0f * M_PI), nir_imm_float(b, -M_PI));
+         : nir_ffma_imm12(b, fract, 2.0f * M_PI, -M_PI);
 
    if (alu->op == nir_op_fsin)
       return nir_fsin_amd(b, normalized);