From: Iago Toral Quiroga <[email protected]> Specifically, consider the size of the data type of the operand to compute the number of registers written.
v2 (Sam): - Fix line width (Jordan). - Add an assert (Jordan). - Use REG_SIZE in the calculation of regs_written (Curro) Reviewed-by: Kenneth Graunke <[email protected]> Reviewed-by: Francisco Jerez <[email protected]> --- src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp b/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp index 83791bf..fd423a3 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp @@ -774,8 +774,10 @@ fs_visitor::opt_copy_propagate_local(void *copy_prop_ctx, bblock_t *block, inst->dst.file == VGRF) { int offset = 0; for (int i = 0; i < inst->sources; i++) { + assert(type_sz(inst->src[i].type) >= 4); int effective_width = i < inst->header_size ? 8 : inst->exec_size; - int regs_written = effective_width / 8; + int regs_written = effective_width / 8 * + type_sz(inst->src[i].type) / REG_SIZE; if (inst->src[i].file == VGRF) { acp_entry *entry = ralloc(copy_prop_ctx, acp_entry); entry->dst = inst->dst; -- 2.5.0 _______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
