nir/instr_set: fix fp_fast_math

We can't just ignore the flags of the match, we need the union.

Fixes: 666647acae ("nir: track some float controls bits per instruction")

Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31195>
(cherry picked from commit a3d6a770c0)
This commit is contained in:
Georg Lehmann 2024-09-16 20:16:24 +02:00 committed by Eric Engestrom
parent cb29f5e0a7
commit f35ed83b82
2 changed files with 5 additions and 5 deletions

View file

@ -464,7 +464,7 @@
"description": "nir/instr_set: fix fp_fast_math",
"nominated": true,
"nomination_type": 1,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": "666647acaedb1b4112f19192b992b05547975dfa",
"notes": null

View file

@ -771,10 +771,10 @@ nir_instr_set_add_or_rewrite(struct set *instr_set, nir_instr *instr,
* exactly identical in every other way so, once we've set the exact
* bit, they are the same.
*/
if (instr->type == nir_instr_type_alu && nir_instr_as_alu(instr)->exact)
nir_instr_as_alu(match)->exact = true;
if (instr->type == nir_instr_type_alu)
nir_instr_as_alu(match)->fp_fast_math = nir_instr_as_alu(instr)->fp_fast_math;
if (instr->type == nir_instr_type_alu) {
nir_instr_as_alu(match)->exact |= nir_instr_as_alu(instr)->exact;
nir_instr_as_alu(match)->fp_fast_math |= nir_instr_as_alu(instr)->fp_fast_math;
}
nir_def_rewrite_uses(def, new_def);