From 6ada0170c497bfe6bf029373b5e95d21b940abfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Wed, 28 Aug 2024 11:40:47 +0200 Subject: [PATCH] aco/ra: use arena allocator for hash maps Also change Key types to uint32_t instead of unsigned. Part-of: --- src/amd/compiler/aco_register_allocation.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/amd/compiler/aco_register_allocation.cpp b/src/amd/compiler/aco_register_allocation.cpp index 619543d4603..7a28515e602 100644 --- a/src/amd/compiler/aco_register_allocation.cpp +++ b/src/amd/compiler/aco_register_allocation.cpp @@ -14,8 +14,6 @@ #include #include #include -#include -#include #include namespace aco { @@ -90,12 +88,13 @@ struct ra_ctx { Program* program; Block* block = NULL; + aco::monotonic_buffer_resource memory; std::vector assignments; - std::vector> renames; + std::vector> renames; std::vector loop_header; - std::unordered_map orig_names; - std::unordered_map vectors; - std::unordered_map split_vectors; + aco::unordered_map orig_names; + aco::unordered_map vectors; + aco::unordered_map split_vectors; aco_ptr pseudo_dummy; aco_ptr phi_dummy; uint16_t max_used_sgpr = 0; @@ -114,7 +113,8 @@ struct ra_ctx { ra_ctx(Program* program_, ra_test_policy policy_) : program(program_), assignments(program->peekAllocationId()), - renames(program->blocks.size()), policy(policy_) + renames(program->blocks.size(), aco::unordered_map(memory)), + orig_names(memory), vectors(memory), split_vectors(memory), policy(policy_) { pseudo_dummy.reset(create_instruction(aco_opcode::p_parallelcopy, Format::PSEUDO, 0, 0)); phi_dummy.reset(create_instruction(aco_opcode::p_linear_phi, Format::PSEUDO, 0, 0)); @@ -2370,7 +2370,7 @@ handle_loop_phis(ra_ctx& ctx, const IDSet& live_in, uint32_t loop_header_idx, uint32_t loop_exit_idx) { Block& loop_header = ctx.program->blocks[loop_header_idx]; - std::unordered_map renames; + aco::unordered_map renames(ctx.memory); /* create phis for variables renamed during the loop */ for (unsigned t : live_in) { @@ -2625,7 +2625,7 @@ void get_affinities(ra_ctx& ctx) { std::vector> phi_resources; - std::unordered_map temp_to_phi_resources; + aco::unordered_map temp_to_phi_resources(ctx.memory); for (auto block_rit = ctx.program->blocks.rbegin(); block_rit != ctx.program->blocks.rend(); block_rit++) {