From 48461c0d9e6be9744817785de59bbbff64b8ce72 Mon Sep 17 00:00:00 2001 From: Rhys Perry Date: Thu, 18 Jan 2024 11:54:53 +0000 Subject: [PATCH] aco: enable VOPD scheduler MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fossil-db (navi31, wave32): Totals from 75237 (94.95% of 79242) affected shaders: Instrs: 40383337 -> 36522907 (-9.56%); split: -9.56%, +0.00% CodeSize: 209282312 -> 209883000 (+0.29%); split: -0.18%, +0.46% Latency: 256898944 -> 257834204 (+0.36%); split: -0.23%, +0.60% InvThroughput: 59105835 -> 52725948 (-10.79%); split: -10.90%, +0.11% VClause: 759487 -> 758151 (-0.18%); split: -0.18%, +0.01% SClause: 1264895 -> 1263230 (-0.13%); split: -0.14%, +0.01% VALU: 22886416 -> 18837085 (-17.69%) VOPD: 0 -> 4049331 (+inf%) Signed-off-by: Rhys Perry Reviewed-by: Georg Lehmann Reviewed-by: Daniel Schürmann Part-of: --- src/amd/compiler/aco_interface.cpp | 3 +++ src/amd/compiler/aco_ir.cpp | 3 ++- src/amd/compiler/aco_ir.h | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/amd/compiler/aco_interface.cpp b/src/amd/compiler/aco_interface.cpp index 9c428048046..f6bc400b444 100644 --- a/src/amd/compiler/aco_interface.cpp +++ b/src/amd/compiler/aco_interface.cpp @@ -200,6 +200,9 @@ aco_postprocess_shader(const struct aco_compiler_options* options, aco::lower_to_hw_instr(program.get()); validate(program.get()); + if (!options->optimisations_disabled && !(aco::debug_flags & aco::DEBUG_NO_SCHED_VOPD)) + aco::schedule_vopd(program.get()); + /* Schedule hardware instructions for ILP */ if (!options->optimisations_disabled && !(aco::debug_flags & aco::DEBUG_NO_SCHED_ILP)) aco::schedule_ilp(program.get()); diff --git a/src/amd/compiler/aco_ir.cpp b/src/amd/compiler/aco_ir.cpp index ea49a10da5c..1a54f7de2e4 100644 --- a/src/amd/compiler/aco_ir.cpp +++ b/src/amd/compiler/aco_ir.cpp @@ -45,8 +45,9 @@ static const struct debug_control aco_debug_options[] = { {"force-waitdeps", DEBUG_FORCE_WAITDEPS}, {"novn", DEBUG_NO_VN}, {"noopt", DEBUG_NO_OPT}, - {"nosched", DEBUG_NO_SCHED | DEBUG_NO_SCHED_ILP}, + {"nosched", DEBUG_NO_SCHED | DEBUG_NO_SCHED_ILP | DEBUG_NO_SCHED_VOPD}, {"nosched-ilp", DEBUG_NO_SCHED_ILP}, + {"nosched-vopd", DEBUG_NO_SCHED_VOPD}, {"perfinfo", DEBUG_PERF_INFO}, {"liveinfo", DEBUG_LIVE_INFO}, {NULL, 0}}; diff --git a/src/amd/compiler/aco_ir.h b/src/amd/compiler/aco_ir.h index 7c74d2fc73e..3863cf11b72 100644 --- a/src/amd/compiler/aco_ir.h +++ b/src/amd/compiler/aco_ir.h @@ -58,6 +58,7 @@ enum { DEBUG_FORCE_WAITDEPS = 0x200, DEBUG_NO_VALIDATE_IR = 0x400, DEBUG_NO_SCHED_ILP = 0x800, + DEBUG_NO_SCHED_VOPD = 0x1000, }; enum storage_class : uint8_t {