i965/fs: retype offset_reg to UD at load_ssbo

All operations with offset_reg at do_vector_read are done
with UD type. So copy propagation was not working through
the generated MOVs:

mov(8) vgrf9:UD, vgrf7:D

This change allows removing the MOV generated for reading the
first components for 16-bit and 64-bit ssbo reads with
non-constant offsets.

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
This commit is contained in:
Jose Maria Casanova Crespo 2018-03-19 15:03:17 +01:00
parent 24fb3e6aa1
commit eb96bd57c7

View file

@ -4146,7 +4146,7 @@ fs_visitor::nir_emit_intrinsic(const fs_builder &bld, nir_intrinsic_instr *instr
if (const_offset) { if (const_offset) {
offset_reg = brw_imm_ud(const_offset->u32[0]); offset_reg = brw_imm_ud(const_offset->u32[0]);
} else { } else {
offset_reg = get_nir_src(instr->src[1]); offset_reg = retype(get_nir_src(instr->src[1]), BRW_REGISTER_TYPE_UD);
} }
/* Read the vector */ /* Read the vector */