From 3d48658fe391187a7958b00e945486a5958b97eb Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Sun, 22 Sep 2024 21:58:03 -0400 Subject: [PATCH] agx: split up optimizer validate in the middle Signed-off-by: Alyssa Rosenzweig Part-of: --- src/asahi/compiler/agx_compile.c | 3 ++- src/asahi/compiler/agx_compiler.h | 3 ++- src/asahi/compiler/agx_optimizer.c | 11 ++--------- src/asahi/compiler/test/test-optimizer.cpp | 3 ++- 4 files changed, 8 insertions(+), 12 deletions(-) diff --git a/src/asahi/compiler/agx_compile.c b/src/asahi/compiler/agx_compile.c index 12bbcc39d82..8a02921abc0 100644 --- a/src/asahi/compiler/agx_compile.c +++ b/src/asahi/compiler/agx_compile.c @@ -3417,7 +3417,8 @@ agx_compile_function_nir(nir_shader *nir, nir_function_impl *impl, AGX_PASS(ctx, agx_opt_cse); /* After DCE, use counts are right so we can run the optimizer. */ - AGX_PASS(ctx, agx_optimizer); + AGX_PASS(ctx, agx_optimizer_backward); + AGX_PASS(ctx, agx_optimizer_forward); AGX_PASS(ctx, agx_opt_compact_constants); /* After inlining constants, promote what's left */ diff --git a/src/asahi/compiler/agx_compiler.h b/src/asahi/compiler/agx_compiler.h index 317c5c77e8c..2de2575d983 100644 --- a/src/asahi/compiler/agx_compiler.h +++ b/src/asahi/compiler/agx_compiler.h @@ -970,7 +970,8 @@ void agx_print_index(agx_index index, bool is_float, FILE *fp); void agx_print_instr(const agx_instr *I, FILE *fp); void agx_print_block(const agx_block *block, FILE *fp); void agx_print_shader(const agx_context *ctx, FILE *fp); -void agx_optimizer(agx_context *ctx); +void agx_optimizer_forward(agx_context *ctx); +void agx_optimizer_backward(agx_context *ctx); void agx_lower_divergent_shuffle(agx_context *ctx); void agx_lower_pseudo(agx_context *ctx); void agx_lower_spill(agx_context *ctx); diff --git a/src/asahi/compiler/agx_optimizer.c b/src/asahi/compiler/agx_optimizer.c index ac49703b072..91a92c47e7a 100644 --- a/src/asahi/compiler/agx_optimizer.c +++ b/src/asahi/compiler/agx_optimizer.c @@ -453,7 +453,7 @@ agx_optimizer_bitop(agx_instr **defs, agx_instr *I) } } -static void +void agx_optimizer_forward(agx_context *ctx) { agx_instr **defs = calloc(ctx->alloc, sizeof(*defs)); @@ -496,7 +496,7 @@ agx_optimizer_forward(agx_context *ctx) free(defs); } -static void +void agx_optimizer_backward(agx_context *ctx) { agx_instr **uses = calloc(ctx->alloc, sizeof(*uses)); @@ -542,10 +542,3 @@ agx_optimizer_backward(agx_context *ctx) free(uses); free(multiple); } - -void -agx_optimizer(agx_context *ctx) -{ - agx_optimizer_backward(ctx); - agx_optimizer_forward(ctx); -} diff --git a/src/asahi/compiler/test/test-optimizer.cpp b/src/asahi/compiler/test/test-optimizer.cpp index 77b09c120b5..23915ad0e9a 100644 --- a/src/asahi/compiler/test/test-optimizer.cpp +++ b/src/asahi/compiler/test/test-optimizer.cpp @@ -12,7 +12,8 @@ static void agx_optimize_and_dce(agx_context *ctx) { - agx_optimizer(ctx); + agx_optimizer_backward(ctx); + agx_optimizer_forward(ctx); agx_dce(ctx, true); }