Mesa (main): aco: Use movk for AddressHi bits in vertex prolog
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue May 3 10:38:55 UTC 2022
Module: Mesa
Branch: main
Commit: ce7966fcb4942643efe932bf564d2401c5fd04e7
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ce7966fcb4942643efe932bf564d2401c5fd04e7
Author: Joshua Ashton <joshua at froggi.es>
Date: Wed Mar 16 18:07:04 2022 +0000
aco: Use movk for AddressHi bits in vertex prolog
Eliminates a useless extra dword by transforming
s_mov_b32 s47, 0xffff8000 ; beaf03ff ffff8000
to
s_movk_i32 s47, 0x8000 ; b02f8000
which does the same thing.
Reviewed-By: Tatsuyuki Ishi <ishitatsuyuki at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15415>
---
src/amd/compiler/aco_instruction_selection.cpp | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/src/amd/compiler/aco_instruction_selection.cpp b/src/amd/compiler/aco_instruction_selection.cpp
index 48458e10949..7a91d9e0f1e 100644
--- a/src/amd/compiler/aco_instruction_selection.cpp
+++ b/src/amd/compiler/aco_instruction_selection.cpp
@@ -11855,8 +11855,13 @@ select_vs_prolog(Program* program, const struct radv_vs_prolog_key* key, ac_shad
bld.sop1(aco_opcode::s_mov_b32, Definition(vertex_buffers, s1),
get_arg_fixed(args, args->ac.vertex_buffers));
- bld.sop1(aco_opcode::s_mov_b32, Definition(vertex_buffers.advance(4), s1),
- Operand::c32((unsigned)options->address32_hi));
+ if (options->address32_hi >= 0xffff8000 || options->address32_hi <= 0x7fff) {
+ bld.sopk(aco_opcode::s_movk_i32, Definition(vertex_buffers.advance(4), s1),
+ options->address32_hi & 0xFFFF);
+ } else {
+ bld.sop1(aco_opcode::s_mov_b32, Definition(vertex_buffers.advance(4), s1),
+ Operand::c32((unsigned)options->address32_hi));
+ }
/* calculate vgpr requirements */
unsigned num_vgprs = attributes_start.reg() - 256;
More information about the mesa-commit
mailing list