summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Romanick <ian.d.romanick@intel.com>2021-06-28 19:06:44 -0700
committerIan Romanick <ian.d.romanick@intel.com>2021-07-14 09:57:04 -0700
commit8f1052938d5a45f007d0d8f109958acea1f01c33 (patch)
tree1690bfa24bb64e9754d562881531e29b14947176
parentf3f3817307c0a4e04dc340331361f5f31d45d3c8 (diff)
intel/compiler: Update block IPs once in register_coalesce
Performance improvement in dEQP-VK.ssbo.phys.layout.random.16bit.scalar.13 for n=30: release build (w/Fedora build flags): -0.82% ± 0.23% Meson -Dbuildtype=debugoptimized: -0.74% ± 0.27% The difference in the debugoptimized build is the calls to inst_is_in_block(block, this) still exist on each call to remove(). v2: Only update each block's IP data once instead of once per block. Suggested by Emma. Reviewed-by: Emma Anholt <emma@anholt.net> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11632>
-rw-r--r--src/intel/compiler/brw_fs_register_coalesce.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/intel/compiler/brw_fs_register_coalesce.cpp b/src/intel/compiler/brw_fs_register_coalesce.cpp
index 671ced5bc95..51e9af4a72f 100644
--- a/src/intel/compiler/brw_fs_register_coalesce.cpp
+++ b/src/intel/compiler/brw_fs_register_coalesce.cpp
@@ -330,10 +330,12 @@ fs_visitor::register_coalesce()
if (progress) {
foreach_block_and_inst_safe (block, backend_instruction, inst, cfg) {
if (inst->opcode == BRW_OPCODE_NOP) {
- inst->remove(block);
+ inst->remove(block, true);
}
}
+ cfg->adjust_block_ips();
+
invalidate_analysis(DEPENDENCY_INSTRUCTIONS);
}