Module: Mesa Branch: main Commit: 0afbfee8da30d465f141d214ad6a307ed54b3b03 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0afbfee8da30d465f141d214ad6a307ed54b3b03
Author: Jason Ekstrand <[email protected]> Date: Fri Jun 18 09:21:07 2021 -0500 nir,panfrost: Suffix fsat_signed and fclamp_pos with _mali Reviewed-by: Alyssa Rosenzweig <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11463> --- src/compiler/nir/nir_opcodes.py | 6 ++++-- src/panfrost/bifrost/bifrost_compile.c | 4 ++-- src/panfrost/bifrost/bifrost_nir_algebraic.py | 6 +++--- src/panfrost/midgard/midgard_compile.c | 14 +++++++------- src/panfrost/midgard/midgard_nir_algebraic.py | 6 +++--- 5 files changed, 19 insertions(+), 17 deletions(-) diff --git a/src/compiler/nir/nir_opcodes.py b/src/compiler/nir/nir_opcodes.py index a692c4ecc9c..efd7ecce212 100644 --- a/src/compiler/nir/nir_opcodes.py +++ b/src/compiler/nir/nir_opcodes.py @@ -217,8 +217,6 @@ unop("isign", tint, "(src0 == 0) ? 0 : ((src0 > 0) ? 1 : -1)") unop("iabs", tint, "(src0 < 0) ? -src0 : src0") unop("fabs", tfloat, "fabs(src0)") unop("fsat", tfloat, ("fmin(fmax(src0, 0.0), 1.0)")) -unop("fsat_signed", tfloat, ("fmin(fmax(src0, -1.0), 1.0)")) -unop("fclamp_pos", tfloat, ("fmax(src0, 0.0)")) unop("frcp", tfloat, "bit_size == 64 ? 1.0 / src0 : 1.0f / src0") unop("frsq", tfloat, "bit_size == 64 ? 1.0 / sqrt(src0) : 1.0f / sqrtf(src0)") unop("fsqrt", tfloat, "bit_size == 64 ? sqrt(src0) : sqrtf(src0)") @@ -1288,6 +1286,10 @@ binop("umul24_relaxed", tuint32, _2src_commutative + associative, "src0 * src1") unop_convert("fisnormal", tbool1, tfloat, "isnormal(src0)") unop_convert("fisfinite", tbool1, tfloat, "isfinite(src0)") +# Mali-specific opcodes +unop("fsat_signed_mali", tfloat, ("fmin(fmax(src0, -1.0), 1.0)")) +unop("fclamp_pos_mali", tfloat, ("fmax(src0, 0.0)")) + # DXIL specific double [un]pack # DXIL doesn't support generic [un]pack instructions, so we want those # lowered to bit ops. HLSL doesn't support 64bit bitcasts to/from diff --git a/src/panfrost/bifrost/bifrost_compile.c b/src/panfrost/bifrost/bifrost_compile.c index 548cb32c383..4a53f9da7c0 100644 --- a/src/panfrost/bifrost/bifrost_compile.c +++ b/src/panfrost/bifrost/bifrost_compile.c @@ -1785,13 +1785,13 @@ bi_emit_alu(bi_builder *b, nir_alu_instr *instr) break; } - case nir_op_fsat_signed: { + case nir_op_fsat_signed_mali: { bi_instr *I = bi_fadd_to(b, sz, dst, s0, bi_negzero(), BI_ROUND_NONE); I->clamp = BI_CLAMP_CLAMP_M1_1; break; } - case nir_op_fclamp_pos: { + case nir_op_fclamp_pos_mali: { bi_instr *I = bi_fadd_to(b, sz, dst, s0, bi_negzero(), BI_ROUND_NONE); I->clamp = BI_CLAMP_CLAMP_0_INF; break; diff --git a/src/panfrost/bifrost/bifrost_nir_algebraic.py b/src/panfrost/bifrost/bifrost_nir_algebraic.py index fdbc8ec1ec8..bae71807640 100644 --- a/src/panfrost/bifrost/bifrost_nir_algebraic.py +++ b/src/panfrost/bifrost/bifrost_nir_algebraic.py @@ -33,9 +33,9 @@ algebraic_late = [ (('fmul', a, 2.0), ('fadd', a, a)), # Fuse Mali-specific clamps - (('fmin', ('fmax', a, -1.0), 1.0), ('fsat_signed', a)), - (('fmax', ('fmin', a, 1.0), -1.0), ('fsat_signed', a)), - (('fmax', a, 0.0), ('fclamp_pos', a)), + (('fmin', ('fmax', a, -1.0), 1.0), ('fsat_signed_mali', a)), + (('fmax', ('fmin', a, 1.0), -1.0), ('fsat_signed_mali', a)), + (('fmax', a, 0.0), ('fclamp_pos_mali', a)), ] diff --git a/src/panfrost/midgard/midgard_compile.c b/src/panfrost/midgard/midgard_compile.c index 23d624e1ac2..2d4d2697947 100644 --- a/src/panfrost/midgard/midgard_compile.c +++ b/src/panfrost/midgard/midgard_compile.c @@ -585,9 +585,9 @@ mir_accept_dest_mod(compiler_context *ctx, nir_dest **dest, nir_op op) static unsigned mir_determine_float_outmod(compiler_context *ctx, nir_dest **dest, unsigned prior_outmod) { - bool clamp_0_inf = mir_accept_dest_mod(ctx, dest, nir_op_fclamp_pos); + bool clamp_0_inf = mir_accept_dest_mod(ctx, dest, nir_op_fclamp_pos_mali); bool clamp_0_1 = mir_accept_dest_mod(ctx, dest, nir_op_fsat); - bool clamp_m1_1 = mir_accept_dest_mod(ctx, dest, nir_op_fsat_signed); + bool clamp_m1_1 = mir_accept_dest_mod(ctx, dest, nir_op_fsat_signed_mali); bool prior = (prior_outmod != midgard_outmod_none); int count = (int) prior + (int) clamp_0_inf + (int) clamp_0_1 + (int) clamp_m1_1; @@ -659,7 +659,7 @@ mir_is_bcsel_float(nir_alu_instr *instr) }; nir_op floatdestmods[] = { - nir_op_fsat, nir_op_fsat_signed, nir_op_fclamp_pos, + nir_op_fsat, nir_op_fsat_signed_mali, nir_op_fclamp_pos_mali, nir_op_f2f16, nir_op_f2f32 }; @@ -847,8 +847,8 @@ emit_alu(compiler_context *ctx, nir_alu_instr *instr) ALU_CASE(fabs, fmov); ALU_CASE(fneg, fmov); ALU_CASE(fsat, fmov); - ALU_CASE(fsat_signed, fmov); - ALU_CASE(fclamp_pos, fmov); + ALU_CASE(fsat_signed_mali, fmov); + ALU_CASE(fclamp_pos_mali, fmov); /* For size conversion, we use a move. Ideally though we would squash * these ops together; maybe that has to happen after in NIR as part of @@ -939,9 +939,9 @@ emit_alu(compiler_context *ctx, nir_alu_instr *instr) outmod = midgard_outmod_keeplo; } else if (instr->op == nir_op_fsat) { outmod = midgard_outmod_clamp_0_1; - } else if (instr->op == nir_op_fsat_signed) { + } else if (instr->op == nir_op_fsat_signed_mali) { outmod = midgard_outmod_clamp_m1_1; - } else if (instr->op == nir_op_fclamp_pos) { + } else if (instr->op == nir_op_fclamp_pos_mali) { outmod = midgard_outmod_clamp_0_inf; } diff --git a/src/panfrost/midgard/midgard_nir_algebraic.py b/src/panfrost/midgard/midgard_nir_algebraic.py index c66fd97dd7c..9c8668f9683 100644 --- a/src/panfrost/midgard/midgard_nir_algebraic.py +++ b/src/panfrost/midgard/midgard_nir_algebraic.py @@ -53,11 +53,11 @@ algebraic_late = [ (('b32csel', a, 0, 'b@32'), ('iand', ('inot', a), b)), # Fuse sat_signed. This should probably be shared with Bifrost - (('~fmin', ('fmax', a, -1.0), 1.0), ('fsat_signed', a)), - (('~fmax', ('fmin', a, 1.0), -1.0), ('fsat_signed', a)), + (('~fmin', ('fmax', a, -1.0), 1.0), ('fsat_signed_mali', a)), + (('~fmax', ('fmin', a, 1.0), -1.0), ('fsat_signed_mali', a)), # Fuse clamp_positive. This should probably be shared with Utgard/bifrost - (('fmax', a, 0.0), ('fclamp_pos', a)), + (('fmax', a, 0.0), ('fclamp_pos_mali', a)), (('ishl', 'a@16', b), ('u2u16', ('ishl', ('u2u32', a), b))), (('ishr', 'a@16', b), ('i2i16', ('ishr', ('i2i32', a), b))), _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
