mesa/src/amd/compiler/instruction_selection
Georg Lehmann b12db991eb
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
aco/gfx10: optimize subgroupRotate(x, 32) and subgroupShuffleXor(x, 32)
We don't have v_permlane64_b32 yet, but we can still optimize it using
shared vgprs. Using the DPP16 row mask, we can even avoid writing exec.

With v0 input/output and v24/v25 as shared vgprs, this results in:
v_mov_b32_dpp v24, v0 quad_perm:[0,1,2,3] row_mask:0x3 bank_mask:0xf
v_mov_b32_dpp v25, v0 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf
v_mov_b32_dpp v0, v24 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf
v_mov_b32_dpp v0, v25 quad_perm:[0,1,2,3] row_mask:0x3 bank_mask:0xf

Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36390>
2025-07-29 06:33:20 +00:00
..
aco_instruction_selection.h aco/isel: move visit_intrinsic() into separate file 2025-05-16 11:01:19 +00:00
aco_isel_cfg.cpp aco/isel: move control-flow helper functions into separate file 2025-05-16 11:01:19 +00:00
aco_isel_helpers.cpp aco: remove RegClass::as_subdword 2025-07-11 12:15:09 +00:00
aco_isel_setup.cpp treewide: use SWAP macro 2025-07-23 19:49:47 +00:00
aco_select_nir.cpp aco: only insert fp mode when needed 2025-07-10 13:48:50 +00:00
aco_select_nir_alu.cpp aco/select_alu: avoid vector get_alu_src for instructions with scalar operands 2025-07-29 06:07:15 +00:00
aco_select_nir_intrinsics.cpp aco/gfx10: optimize subgroupRotate(x, 32) and subgroupShuffleXor(x, 32) 2025-07-29 06:33:20 +00:00
aco_select_ps_epilog.cpp aco: implement upcasting 16-bit types for 32-bit color buffers in PS epilog 2025-07-15 18:28:30 +00:00
aco_select_ps_prolog.cpp aco/isel: move select_ps_prolog() into separate file 2025-05-16 11:01:19 +00:00
aco_select_rt_prolog.cpp aco/isel: move select_rt_prolog() into separate file 2025-05-16 11:01:19 +00:00
aco_select_trap_handler.cpp aco/isel: move select_trap_handler_shader() into separate file 2025-05-16 11:01:19 +00:00
aco_select_vs_prolog.cpp aco/isel: move select_vs_prolog() into separate file 2025-05-16 11:01:19 +00:00