[Mesa-dev] [PATCH 10/11] ir3: Use nir_pass for lower_if_else
Jason Ekstrand
jason at jlekstrand.net
Wed Oct 28 14:32:10 PDT 2015
Cc: Rob Clark <robclark at freedesktop.org>
---
.../drivers/freedreno/ir3/ir3_compiler_nir.c | 2 +-
src/gallium/drivers/freedreno/ir3/ir3_nir.h | 2 +-
.../drivers/freedreno/ir3/ir3_nir_lower_if_else.c | 22 ++++++----------------
3 files changed, 8 insertions(+), 18 deletions(-)
diff --git a/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c b/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
index 8c9234b..e0be26f 100644
--- a/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
+++ b/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
@@ -195,7 +195,7 @@ static struct nir_shader *to_nir(struct ir3_compile *ctx,
progress |= nir_copy_prop(s);
progress |= nir_opt_dce(s);
progress |= nir_opt_cse(s);
- progress |= ir3_nir_lower_if_else(s);
+ progress |= nir_shader_run_pass(s, &ir3_nir_lower_if_else);
progress |= nir_opt_algebraic(s);
progress |= nir_opt_constant_folding(s);
diff --git a/src/gallium/drivers/freedreno/ir3/ir3_nir.h b/src/gallium/drivers/freedreno/ir3/ir3_nir.h
index 9950782..079a5b7 100644
--- a/src/gallium/drivers/freedreno/ir3/ir3_nir.h
+++ b/src/gallium/drivers/freedreno/ir3/ir3_nir.h
@@ -32,6 +32,6 @@
#include "glsl/nir/nir.h"
#include "glsl/nir/shader_enums.h"
-bool ir3_nir_lower_if_else(nir_shader *shader);
+extern const nir_pass ir3_nir_lower_if_else;
#endif /* IR3_NIR_H_ */
diff --git a/src/gallium/drivers/freedreno/ir3/ir3_nir_lower_if_else.c b/src/gallium/drivers/freedreno/ir3/ir3_nir_lower_if_else.c
index 4ec0e2b..69f6554 100644
--- a/src/gallium/drivers/freedreno/ir3/ir3_nir_lower_if_else.c
+++ b/src/gallium/drivers/freedreno/ir3/ir3_nir_lower_if_else.c
@@ -307,7 +307,7 @@ lower_if_else_block(nir_block *block, void *void_state)
}
static bool
-lower_if_else_impl(nir_function_impl *impl)
+lower_if_else_impl(nir_function_impl *impl, void *unused)
{
struct lower_state state;
@@ -317,21 +317,11 @@ lower_if_else_impl(nir_function_impl *impl)
nir_foreach_block(impl, lower_if_else_block, &state);
- if (state.progress)
- nir_metadata_preserve(impl, nir_metadata_none);
-
return state.progress;
}
-bool
-ir3_nir_lower_if_else(nir_shader *shader)
-{
- bool progress = false;
-
- nir_foreach_overload(shader, overload) {
- if (overload->impl)
- progress |= lower_if_else_impl(overload->impl);
- }
-
- return progress;
-}
+const nir_pass ir3_nir_lower_if_else = {
+ NULL, /* shader_pass_func */
+ lower_if_else_impl,
+ nir_metadata_none,
+};
--
2.5.0.400.gff86faf
More information about the mesa-dev
mailing list