v3d/compiler: Lower geometry output store base into offset src
authorNeil Roberts <nroberts@igalia.com>
Tue, 7 Jul 2020 13:49:27 +0000 (15:49 +0200)
committerNeil Roberts <nroberts@igalia.com>
Thu, 16 Jul 2020 06:48:06 +0000 (08:48 +0200)
commit97f8ec321b73975bf6a3ed997c10381942e9f19e
treeaf907c9df224202bfcef9a89ada051f3eb234dc4
parent081691b5ae2281e047b75beaa7462c448e74da04
v3d/compiler: Lower geometry output store base into offset src

When generating the VPM write instruction for geometry shader outputs,
emit_store_output_gs ends up adding the base and offset arguments
together with an ADD instruction. The addition was done at the VIR level
after scheduling so it always ends up right next to the corresponding
stvpm instruction. Most of the time the offset is constant but nothing
does any constant folding at the VIR level.

This patch makes it instead fold the addition into the offset at the NIR
level in v3d_nir_lower_io so that the NIR-level constant folding can get
rid of the addition most of the time.

v2: Use nir_iadd_imm to simplify the code. (Eric Anholt)

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5825>
src/broadcom/compiler/nir_to_vir.c
src/broadcom/compiler/v3d_nir_lower_io.c