Signed-off-by: Samuel Iglesias Gonsálvez <[email protected]>
---
src/compiler/nir/nir_algebraic.py | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/src/compiler/nir/nir_algebraic.py
b/src/compiler/nir/nir_algebraic.py
index a667c4170f1..9d2b248a1c1 100644
--- a/src/compiler/nir/nir_algebraic.py
+++ b/src/compiler/nir/nir_algebraic.py
@@ -678,7 +678,7 @@ static const struct transform
${pass_name}_${opcode}_xforms[] = {
static bool
${pass_name}_block(nir_builder *build, nir_block *block,
- const bool *condition_flags)
+ const bool *condition_flags, unsigned execution_mode)
{
bool progress = false;
@@ -696,6 +696,7 @@ ${pass_name}_block(nir_builder *build, nir_block *block,
for (unsigned i = 0; i < ARRAY_SIZE(${pass_name}_${opcode}_xforms);
i++) {
const struct transform *xform = &${pass_name}_${opcode}_xforms[i];
if (condition_flags[xform->condition_offset] &&
+ !(xform->search->inexact && (execution_mode &
SHADER_SIGNED_ZERO_INF_NAN_PRESERVE)) &&
nir_replace_instr(build, alu, xform->search, xform->replace)) {
progress = true;
break;
@@ -712,7 +713,7 @@ ${pass_name}_block(nir_builder *build, nir_block *block,
}
static bool
-${pass_name}_impl(nir_function_impl *impl, const bool *condition_flags)
+${pass_name}_impl(nir_function_impl *impl, const bool *condition_flags,
unsigned execution_mode)
{
bool progress = false;
@@ -720,7 +721,7 @@ ${pass_name}_impl(nir_function_impl *impl, const bool
*condition_flags)
nir_builder_init(&build, impl);
nir_foreach_block_reverse(block, impl) {
- progress |= ${pass_name}_block(&build, block, condition_flags);
+ progress |= ${pass_name}_block(&build, block, condition_flags,
execution_mode);
}
if (progress)
@@ -737,6 +738,7 @@ ${pass_name}(nir_shader *shader)
bool progress = false;
bool condition_flags[${len(condition_list)}];
const nir_shader_compiler_options *options = shader->options;
+ const unsigned execution_mode =
shader->info.shader_float_controls_execution_mode;
(void) options;
% for index, condition in enumerate(condition_list):
@@ -745,7 +747,7 @@ ${pass_name}(nir_shader *shader)
nir_foreach_function(function, shader) {
if (function->impl)
- progress |= ${pass_name}_impl(function->impl, condition_flags);
+ progress |= ${pass_name}_impl(function->impl, condition_flags,
execution_mode);
}
return progress;
--
2.19.1
_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev