summaryrefslogtreecommitdiff
path: root/src/nouveau
diff options
context:
space:
mode:
authorEmma Anholt <emma@anholt.net>2022-04-26 13:39:28 -0700
committerMarge Bot <emma+marge@anholt.net>2022-06-10 03:26:33 +0000
commit1e2e52eff73ac0703cf432b5c716c5d2c56024e3 (patch)
treef9249f6c0f113dbbce8c44094c5e9f602282b3aa /src/nouveau
parenta05bfff8cb2f1e55ba7e4e1363e1d2be97c07b91 (diff)
downloadmesa-1e2e52eff73ac0703cf432b5c716c5d2c56024e3.tar.gz
nouveau/nir: Implement mul_zero_wins behavior for use_legacy_math_rules.
This is the same flag TGSI sets for LEGACY_MATH_RULES. Acked-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: M Henning <drawoc@darkrefraction.com> Tested-by: Mobin Aydinfar <mobin@mobintestserver.ir> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16176>
Diffstat (limited to 'src/nouveau')
-rw-r--r--src/nouveau/codegen/nv50_ir_from_nir.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/nouveau/codegen/nv50_ir_from_nir.cpp b/src/nouveau/codegen/nv50_ir_from_nir.cpp
index d8ccdecf9c8..9f2f791ace4 100644
--- a/src/nouveau/codegen/nv50_ir_from_nir.cpp
+++ b/src/nouveau/codegen/nv50_ir_from_nir.cpp
@@ -997,6 +997,7 @@ bool Converter::assignSlots() {
unsigned index;
info->io.viewportId = -1;
+ info->io.mul_zero_wins = nir->info.use_legacy_math_rules;
info_out->numInputs = 0;
info_out->numOutputs = 0;
info_out->numSysVals = 0;
@@ -2585,6 +2586,17 @@ Converter::visit(nir_alu_instr *insn)
Instruction *i = mkOp(getOperation(op), dType, newDefs[0]);
for (unsigned s = 0u; s < info.num_inputs; ++s) {
i->setSrc(s, getSrc(&insn->src[s]));
+
+ if (this->info->io.mul_zero_wins) {
+ switch (op) {
+ case nir_op_fmul:
+ case nir_op_ffma:
+ i->dnz = true;
+ break;
+ default:
+ break;
+ }
+ }
}
i->subOp = getSubOp(op);
}