aco: Implement subgroup shuffle in GFX10 wave64 mode.
authorTimur Kristóf <timur.kristof@gmail.com>
Sat, 21 Sep 2019 16:03:56 +0000 (18:03 +0200)
committerRhys Perry <pendingchaos02@gmail.com>
Mon, 28 Oct 2019 23:52:50 +0000 (23:52 +0000)
commitd59f702e268004fd43a0b781f39671be66728d46
treed08c84c0c883262606f60fca05f7a7622bbb9238
parentc2eebfe3eaa75168661e559e6786ce6d1d0ea875
aco: Implement subgroup shuffle in GFX10 wave64 mode.

Previously subgroup shuffle was implemented using the bpermute
instruction, which only works accross half-waves, so by itself it's
not suitable for implementing subgroup shuffle when the shader is
running in wave64 mode.

This commit adds a trick using shared VGPRs that allows to implement
subgroup shuffle still relatively effectively in this mode.

Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
src/amd/compiler/aco_builder_h.py
src/amd/compiler/aco_instruction_selection.cpp
src/amd/compiler/aco_ir.h
src/amd/compiler/aco_lower_to_hw_instr.cpp
src/amd/compiler/aco_opcodes.py
src/amd/compiler/aco_reduce_assign.cpp