ir3: Use (ss) for instructions writing shared regs
authorConnor Abbott <cwabbott0@gmail.com>
Fri, 17 Dec 2021 18:48:49 +0000 (19:48 +0100)
committerMarge Bot <emma+marge@anholt.net>
Fri, 7 Jan 2022 14:26:08 +0000 (14:26 +0000)
commitcb45120556938070a623b056867545301bce8cac
treeaa45d74cdd322b755134f10bd90ff0ee955356d2
parentd45678cac46a911230cb35bdcf65e538a4e5dd8b
ir3: Use (ss) for instructions writing shared regs

The blob uses *both* nops and (ss). It turns out that in some rare cases
the hardware does take more than 6 cycles, at least for movmsk, but
adding nops is unnecessary. I believe the extra nops are only there due
to the immaturity of the blob's implementation of subgroup ops, so we
don't have to copy them - just handle shared reg producers the same as
SFU instructions.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14246>
src/freedreno/ir3/ir3.h
src/freedreno/ir3/ir3_delay.c
src/freedreno/ir3/ir3_legalize.c