agx: Add CSE optimization pass
Ported from the Bifrost compiler, in turn based on the ir3 one. This cleans up a lot of junk we emit during NIR->AGX and will help with some SSA RA troubles. total instructions in shared programs: 34803 -> 34381 (-1.21%) instructions in affected programs: 18652 -> 18230 (-2.26%) helped: 198 HURT: 0 helped stats (abs) min: 1.0 max: 28.0 x̄: 2.13 x̃: 1 helped stats (rel) min: 0.31% max: 12.50% x̄: 3.94% x̃: 2.78% 95% mean confidence interval for instructions value: -2.45 -1.81 95% mean confidence interval for instructions %-change: -4.40% -3.48% Instructions are helped. total bytes in shared programs: 238094 -> 234824 (-1.37%) bytes in affected programs: 126472 -> 123202 (-2.59%) helped: 200 HURT: 0 helped stats (abs) min: 6.0 max: 168.0 x̄: 16.35 x̃: 8 helped stats (rel) min: 0.37% max: 17.65% x̄: 4.25% x̃: 3.38% 95% mean confidence interval for bytes value: -18.49 -14.21 95% mean confidence interval for bytes %-change: -4.67% -3.84% Bytes are helped. total halfregs in shared programs: 10078 -> 10107 (0.29%) halfregs in affected programs: 565 -> 594 (5.13%) helped: 22 HURT: 22 helped stats (abs) min: 1.0 max: 4.0 x̄: 1.23 x̃: 1 helped stats (rel) min: 5.71% max: 25.00% x̄: 23.38% x̃: 25.00% HURT stats (abs) min: 2.0 max: 4.0 x̄: 2.55 x̃: 2 HURT stats (rel) min: 4.44% max: 30.77% x̄: 15.61% x̃: 12.73% 95% mean confidence interval for halfregs value: 0.03 1.28 95% mean confidence interval for halfregs %-change: -10.17% 2.40% Inconclusive result (%-change mean confidence interval includes 0). Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19590>
This commit is contained in:

committed by
Marge Bot

parent
4387d0886d
commit
dea00bcc8f
@@ -82,6 +82,7 @@ agx_size_align_16(enum agx_size size)
|
||||
unreachable("Invalid size");
|
||||
}
|
||||
|
||||
/* Keep synced with hash_index */
|
||||
typedef struct {
|
||||
/* Sufficient for as many SSA values as we need. Immediates and uniforms fit in 16-bits */
|
||||
unsigned value : 22;
|
||||
@@ -269,6 +270,7 @@ enum agx_lod_mode {
|
||||
/* Forward declare for branch target */
|
||||
struct agx_block;
|
||||
|
||||
/* Keep synced with hash_instr */
|
||||
typedef struct {
|
||||
/* Must be first */
|
||||
struct list_head link;
|
||||
@@ -768,6 +770,7 @@ void agx_print_block(agx_block *block, FILE *fp);
|
||||
void agx_print_shader(agx_context *ctx, FILE *fp);
|
||||
void agx_optimizer(agx_context *ctx);
|
||||
void agx_lower_pseudo(agx_context *ctx);
|
||||
void agx_opt_cse(agx_context *ctx);
|
||||
void agx_dce(agx_context *ctx);
|
||||
void agx_ra(agx_context *ctx);
|
||||
void agx_lower_64bit_postra(agx_context *ctx);
|
||||
|
Reference in New Issue
Block a user