nir/lower_io_to_scalar: update io semantics on per-component inst

When we replace the original instruction with per-channel operations,
the new instruction should inherint the semantics of the original
instruction.

Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6721>
This commit is contained in:
Alejandro Piñeiro 2020-10-13 01:24:29 +02:00 committed by Marge Bot
parent ac5f0ee19c
commit 9b01598fe5
1 changed files with 2 additions and 0 deletions

View File

@ -50,6 +50,7 @@ lower_load_input_to_scalar(nir_builder *b, nir_intrinsic_instr *intr)
nir_intrinsic_set_base(chan_intr, nir_intrinsic_base(intr));
nir_intrinsic_set_component(chan_intr, nir_intrinsic_component(intr) + i);
nir_intrinsic_set_dest_type(chan_intr, nir_intrinsic_dest_type(intr));
nir_intrinsic_set_io_semantics(chan_intr, nir_intrinsic_io_semantics(intr));
/* offset */
nir_src_copy(&chan_intr->src[0], &intr->src[0], chan_intr);
@ -83,6 +84,7 @@ lower_store_output_to_scalar(nir_builder *b, nir_intrinsic_instr *intr)
nir_intrinsic_set_write_mask(chan_intr, 0x1);
nir_intrinsic_set_component(chan_intr, nir_intrinsic_component(intr) + i);
nir_intrinsic_set_src_type(chan_intr, nir_intrinsic_src_type(intr));
nir_intrinsic_set_io_semantics(chan_intr, nir_intrinsic_io_semantics(intr));
/* value */
chan_intr->src[0] = nir_src_for_ssa(nir_channel(b, value, i));