From: Jose Maria Casanova Crespo Date: Mon, 19 Mar 2018 14:03:17 +0000 (+0100) Subject: i965/fs: retype offset_reg to UD at load_ssbo X-Git-Tag: upstream/18.1.0~39 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=eb96bd57c71dba81e81c61f30ff8f4c5be17440f;p=platform%2Fupstream%2Fmesa.git 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 --- diff --git a/src/intel/compiler/brw_fs_nir.cpp b/src/intel/compiler/brw_fs_nir.cpp index a830bb9f..9698a01 100644 --- a/src/intel/compiler/brw_fs_nir.cpp +++ b/src/intel/compiler/brw_fs_nir.cpp @@ -4146,7 +4146,7 @@ fs_visitor::nir_emit_intrinsic(const fs_builder &bld, nir_intrinsic_instr *instr if (const_offset) { offset_reg = brw_imm_ud(const_offset->u32[0]); } 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 */